def save_displayed_data(self): # Bring up save dialog save_dialog = QFileDialog(self) save_dialog.setDefaultSuffix(".pkl") file_types = "Python pickle (*.pkl);;Matlab (*.mat)" save_path = save_dialog.getSaveFileName(self, 'Save displayed data', get_home_dir(), file_types) # Get the data from visuals names = [] data = [] for pc in self.get_plot_containers(): names.append(pc.container.item_widget.label.text()) data.append(self.data_array[pc.data_array_pos][0]) data = np.vstack(data) dict_out = {'channel_names': names, 'data': data} path = save_path[0] # Evaluate the extension and save if save_path[1] == "Python pickle (*.pkl)": if '.pkl' not in path: path += '.pkl' with open(path, 'wb') as fid: pickle.dump(dict_out, fid) elif save_path[1] == "Matlab (*.mat)": if '.mat' not in path: path += '.mat' savemat(path, dict_out) return
def save_pysigview_session(self): # Bring up save dialog save_dialog = QFileDialog(self) save_dialog.setDefaultSuffix(".sps") save_path = save_dialog.getSaveFileName(self, 'Save pysigview session', get_home_dir(), "Pysigview session (*.sps)") if not save_path: return path = save_path[0] if path[-4:] != '.sps': path += '.sps' ss = {'main': {}, 'signal_display': {}, 'plugins': {}} # Main if self.session_path: ss['main']['session_path'] = self.session_path elif self.file_path: ss['main']['file_path'] = self.file_path else: return # TODO - run this automatically but channels have to be first! # Plugins ss['plugins'] = [{ 'channels': self.channels.save_plugin_data() }, { 'annotations': self.annotations.save_plugin_data() }, { 'measurement': self.measurement.save_plugin_data() }] # Signal display sd = self.signal_display if sd.curr_pc is None: ss['signal_display']['master_pc_pos'] = None else: ss['signal_display']['master_pc_pos'] = sd.curr_pc.plot_position if sd.curr_pc is None: ss['signal_display']['curr_pc_pos'] = None else: ss['signal_display']['curr_pc_pos'] = sd.curr_pc.plot_position ss['signal_display']['camera_rect'] = sd.camera.rect ss['signal_display']['grid_on'] = sd.grid is not None with open(path, 'wb') as fid: pickle.dump(ss, fid) return
def save_image(self): im = pil_Image.fromarray(self.screen_img) save_dialog = QFileDialog(self) save_dialog.selectFile('pysigview_screenshot.png') save_path = save_dialog.getSaveFileName(self, 'Save File', get_home_dir(), "Images (*.png *.tiff *.jpg)") path = save_path[0] if not any([x for x in ['.png', '.tiff', '.jpg'] if x in path]): path += '.png' im.save(path) return
def open_file(self, path): load_dialog = QFileDialog(self) if path: self.file_path = path else: diag_title = 'Select file' diag_path = load_dialog.getOpenFileName(self, diag_title, get_home_dir()) self.file_path = diag_path[0] if self.file_path: self.open_data_source(self.file_path) else: return
def _filename_global(self): """Create a .ini filename located in user home directory. This .ini files stores the global spyder preferences. """ if self.subfolder is None: config_file = osp.join(get_home_dir(), '.%s.ini' % self.name) return config_file else: folder = get_conf_path() # Save defaults in a "defaults" dir of .spyder2 to not pollute it if 'defaults' in self.name: folder = osp.join(folder, 'defaults') if not osp.isdir(folder): os.mkdir(folder) config_file = osp.join(folder, '%s.ini' % self.name) return config_file
def open_pysigview_session(self): load_dialog = QFileDialog(self) load_path = load_dialog.getOpenFileName(self, 'Load pysigview session', get_home_dir(), "Pysigview session (*.sps)") if not load_path: return with open(load_path[0], 'rb') as fid: ss = pickle.load(fid) # TODO - if the path is missing user should now the original path if 'session_path' in ss['main'].keys(): if os.path.exists(ss['main']['session_path']): self.open_session(ss['main']['session_path']) else: self.open_session() elif 'file_path' in ss['main'].keys(): if os.path.exists(ss['main']['file_path']): self.open_file(ss['main']['file_path']) else: self.open_file() else: return for plugin in ss['plugins']: plugin_name = list(plugin.keys())[0] plugin_data = plugin[plugin_name] plugin_instance = getattr(self, plugin_name) plugin_instance.load_plugin_data(plugin_data) # Trigger signal_display parameter loading ater channels if plugin_name == 'channels': sd = self.signal_display master_pc_pos = ss['signal_display']['master_pc_pos'] curr_pc_pos = ss['signal_display']['curr_pc_pos'] for pc in sd.get_plot_containers(): if pc.plot_position == master_pc_pos: sd.master_pc = pc if pc.plot_position == curr_pc_pos: sd.curr_pc = pc sd.camera.rect = ss['signal_display']['camera_rect'] if ss['signal_display']['grid_on']: sd.show_grid()
def open_session(self, path=None): load_dialog = QFileDialog(self) if path: self.session_path = path else: diag_title = 'Select mef session directory' diag_path = str(load_dialog.getExistingDirectory(self, diag_title, get_home_dir())) self.session_path = diag_path if self.session_path: self.open_data_source(self.session_path) else: return