class NameList(QDockWidget): def __init__(self, window): super(NameList, self).__init__('Current Plots') self.namelist_model = QStandardItemModel() self.namelist_view = QListView() self.namelist_view.setModel(self.namelist_model) self.setWidget(self.namelist_view) self.window = window self.plot_dict = {} self.namelist_view.doubleClicked.connect(self.activate_item) self.namelist_view.setContextMenuPolicy(QtConst.ActionsContextMenu) delete_action = QAction("Delete Selected", self.namelist_view) ### pause_action = QAction("Stop Script", self.namelist_view) delete_action.triggered.connect(self.delete_item) pause_action.triggered.connect(self.pause) self.namelist_view.addAction(delete_action) ### self.namelist_view.addAction(pause_action) def activate_item(self, index): item = self.namelist_model.itemFromIndex(index) plot = self.plot_dict[str(item.text())] if plot.closed: plot.closed = False self.window.add_plot(plot) def delete_item(self): index = self.namelist_view.currentIndex() item = self.namelist_model.itemFromIndex(index) del self[str(item.text())] def pause(self): sock = socket.socket() sock.connect(('localhost', 9091)) sock.send(b'stop') sock.close() def __getitem__(self, item): return self.plot_dict[item] def __setitem__(self, name, plot): model = QStandardItem(name) model.setEditable(False) self.namelist_model.appendRow(model) self.plot_dict[name] = plot def __contains__(self, value): return value in self.plot_dict def __delitem__(self, name): self.namelist_model.removeRow(self.namelist_model.findItems(name)[0].index().row()) self.plot_dict[name].close() del self.plot_dict[name] def keys(self): return list(self.plot_dict.keys());
class NameList(QDockWidget): def __init__(self, window): super(NameList, self).__init__('Current Plots') self.namelist_model = QStandardItemModel() self.namelist_view = QListView() self.namelist_view.setModel(self.namelist_model) self.setWidget(self.namelist_view) self.window = window self.plot_dict = {} self.namelist_view.doubleClicked.connect(self.activate_item) self.namelist_view.setContextMenuPolicy(QtConst.ActionsContextMenu) delete_action = QAction("Delete Selected", self.namelist_view) ### pause_action = QAction("Stop Script", self.namelist_view) delete_action.triggered.connect(self.delete_item) pause_action.triggered.connect(self.pause) self.namelist_view.addAction(delete_action) self.namelist_view.addAction(pause_action) open_action = QAction('Open 1D Data', self) open_action.triggered.connect(self.open_file_dialog) self.namelist_view.addAction(open_action) open_action_2 = QAction('Open 2D Data', self) open_action_2.triggered.connect(self.open_file_dialog_2) self.namelist_view.addAction(open_action_2) def open_file_dialog(self, directory='', header=0): file_path = self.file_dialog(directory=directory) header_array = [] file_to_read = open(file_path, 'r') for i, line in enumerate(file_to_read): if i is header: break temp = line.split(":") header_array.append(temp) file_to_read.close() temp = np.genfromtxt(file_path, dtype=float, delimiter=',', skip_header=1) data = np.transpose(temp) name_plot = datetime.now().strftime('%Y-%m-%d %H:%M:%S') pw = self.window.add_new_plot(1, name_plot) pw.plot(data[0], data[1], parametric=True, name=file_path, xname='X', xscale ='Arb. U.',\ yname='Y', yscale ='Arb. u.', scatter='False') def open_file_dialog_2(self, directory='', header=0): file_path = self.file_dialog(directory=directory) header_array = [] file_to_read = open(file_path, 'r') for i, line in enumerate(file_to_read): if i is header: break temp = line.split(":") header_array.append(temp) file_to_read.close() temp = np.genfromtxt(file_path, dtype=float, delimiter=',') data = temp name_plot = datetime.now().strftime('%Y-%m-%d %H:%M:%S') pw = self.window.add_new_plot(2, name_plot) pw.setAxisLabels(xname='X', xscale ='Arb. U.',yname='X', yscale ='Arb. U.',\ zname='X', zscale ='Arb. U.') pw.setImage(data, axes={'y': 0, 'x': 1}) def file_dialog(self, directory=''): root = tkinter.Tk() root.withdraw() file_path = filedialog.askopenfilename(**dict( initialdir = directory, filetypes = [("CSV", "*.csv"), ("TXT", "*.txt"),\ ("DAT", "*.dat"), ("all", "*.*")], title = 'Select file to open') ) return file_path def activate_item(self, index): item = self.namelist_model.itemFromIndex(index) plot = self.plot_dict[str(item.text())] if plot.closed: plot.closed = False self.window.add_plot(plot) def delete_item(self): index = self.namelist_view.currentIndex() item = self.namelist_model.itemFromIndex(index) del self[str(item.text())] def pause(self): sock = socket.socket() sock.connect(('localhost', 9091)) sock.send(b'Script stopped') sock.close() def __getitem__(self, item): return self.plot_dict[item] def __setitem__(self, name, plot): model = QStandardItem(name) model.setEditable(False) self.namelist_model.appendRow(model) self.plot_dict[name] = plot def __contains__(self, value): return value in self.plot_dict def __delitem__(self, name): self.namelist_model.removeRow( self.namelist_model.findItems(name)[0].index().row()) self.plot_dict[name].close() del self.plot_dict[name] def keys(self): return list(self.plot_dict.keys())