def find_images(self, fnames): self.files, manual = ImageLoadManager().load_images(fnames) if len(self.files) % len(HexrdConfig().detector_names) != 0: msg = ('Please select at least one file for each detector.') QMessageBox.warning(self.ui, 'HEXRD', msg) self.files = [] return if manual: dialog = LoadImagesDialog(self.files, manual, self.ui.parent()) if not dialog.exec_(): self.reset_data() return detector_names, files = dialog.results() image_files = [img for f in self.files for img in f] # Make sure files are matched to selected detector self.files = [[] for det in HexrdConfig().detector_names] for d, f in zip(detector_names, image_files): pos = HexrdConfig().detector_names.index(d) self.files[pos].append(f) self.dir_changed() if self.files and self.ext in YAML_EXTS: self.get_yml_files()
def load_images(self): caption = HexrdConfig().images_dirtion = 'Select file(s)' selected_file, selected_filter = QFileDialog.getOpenFileName( self.ui, caption, dir=HexrdConfig().images_dir) if selected_file: HexrdConfig().set_images_dir(selected_file) files, manual = ImageLoadManager().load_images([selected_file]) dialog = LoadImagesDialog(files, manual, self.ui.parent()) if not dialog.exec_(): return # If it is a hdf5 file allow the user to select the path ext = os.path.splitext(selected_file)[1] if (ImageFileManager().is_hdf(ext) and not ImageFileManager().path_exists(selected_file)): path_selected = ImageFileManager().path_prompt(selected_file) if not path_selected: return ImageLoadManager().read_data(files, parent=self.ui) file_names = [os.path.split(f[0])[1] for f in files] self.ui.files_label.setText(', '.join(file_names)) self.enable_widgets(self.ui.outline, self.ui.add_template, self.ui.transforms, self.ui.add_transform, enabled=True) self.enable_widgets(self.parent().action_show_toolbar, self.ui.save, enabled=False) self.parent().action_show_toolbar.setChecked(False)
def open_image_files(self): # Get the most recent images dir images_dir = HexrdConfig().images_dir selected_files, selected_filter = QFileDialog.getOpenFileNames( self.ui, dir=images_dir) if selected_files: # Save the chosen dir HexrdConfig().set_images_dir(selected_files[0]) # Make sure the number of files and number of detectors match num_detectors = len(HexrdConfig().get_detector_names()) if len(selected_files) != num_detectors: msg = ('Number of files must match number of detectors: ' + str(num_detectors)) QMessageBox.warning(self.ui, 'HEXRD', msg) return # If it is a hdf5 file allow the user to select the path ext = os.path.splitext(selected_files[0])[1] if (ImageFileManager().is_hdf5(ext) and not ImageFileManager().path_exists(selected_files[0])): ImageFileManager().path_prompt(selected_files[0]) dialog = LoadImagesDialog(selected_files, self.ui) if dialog.exec_(): detector_names, image_files = dialog.results() ImageFileManager().load_images(detector_names, image_files) self.ui.action_edit_ims.setEnabled(True) self.ui.action_edit_angles.setEnabled(True) self.update_all() self.new_images_loaded.emit()
def load_images(self): if self.instrument == 'PXRDIP': HexrdConfig().load_panel_state['trans'] = ( [UI_TRANS_INDEX_FLIP_HORIZONTALLY]) caption = HexrdConfig().images_dirtion = 'Select file(s)' selected_file, selected_filter = QFileDialog.getOpenFileName( self.ui, caption, dir=HexrdConfig().images_dir) if selected_file: HexrdConfig().set_images_dir(selected_file) files, manual = ImageLoadManager().load_images([selected_file]) dialog = LoadImagesDialog(files, manual, self.ui.parent()) if not dialog.exec_(): return # If it is a hdf5 file allow the user to select the path ext = os.path.splitext(selected_file)[1] if (ImageFileManager().is_hdf(ext) and not ImageFileManager().path_exists(selected_file)): path_selected = ImageFileManager().path_prompt(selected_file) if not path_selected: return if not self.canvas.raw_axes[0].get_autoscale_on(): self.canvas.raw_axes[0].set_autoscale_on(True) if self.completed_detectors: # Only reset the color map range for first detector processed self.cmap.block_updates(True) if self.ui.instrument.isEnabled(): # Only set the instrument config once success = self.get_instrument_defaults() if not success: return ImageLoadManager().read_data(files, parent=self.ui) self.cmap.block_updates(False) self.it = InteractiveTemplate(self.parent()) file_names = [os.path.split(f[0])[1] for f in files] self.ui.files_label.setText(', '.join(file_names)) self.enable_widgets(self.ui.transform_img, self.ui.association, self.ui.finalize, enabled=True) self.enable_widgets(self.ui.data, enabled=False)
def load_images(self): caption = HexrdConfig().images_dirtion = 'Select file(s)' selected_file, selected_filter = QFileDialog.getOpenFileName( self.ui, caption, dir=HexrdConfig().images_dir) if selected_file: HexrdConfig().set_images_dir(selected_file) files, manual = ImageLoadManager().load_images([selected_file]) dialog = LoadImagesDialog(files, manual, self.ui.parent()) if not dialog.exec_(): return # If it is a hdf5 file allow the user to select the path ext = os.path.splitext(selected_file)[1] if (ImageFileManager().is_hdf(ext) and not ImageFileManager().path_exists(selected_file)): path_selected = ImageFileManager().path_prompt(selected_file) if not path_selected: return if not self.canvas.raw_axes[0].get_autoscale_on(): self.canvas.raw_axes[0].set_autoscale_on(True) if hasattr(self, 'prev_extent'): self.canvas.axes_images[0].set_extent(self.prev_extent) if self.completed_detectors: # Only reset the color map range for first detector processed self.cmap.block_updates(True) ImageLoadManager().read_data(files, parent=self.ui) self.prev_extent = self.canvas.axes_images[0].get_extent() self.cmap.block_updates(False) file_names = [os.path.split(f[0])[1] for f in files] self.ui.files_label.setText(', '.join(file_names)) self.enable_widgets(self.ui.outline, self.ui.add_template, self.ui.transforms, self.ui.add_transform, enabled=True) self.enable_widgets(self.parent().action_show_toolbar, self.ui.save, enabled=False) self.parent().action_show_toolbar.setChecked(False)
def open_image_files(self): # Get the most recent images dir images_dir = HexrdConfig().images_dir selected_files, selected_filter = QFileDialog.getOpenFileNames( self.ui, dir=images_dir) if selected_files: # Save the chosen dir HexrdConfig().set_images_dir(selected_files[0]) files, manual = ImageLoadManager().load_images(selected_files) if not files: return if (any(len(f) != 1 for f in files) or len(files) < len(HexrdConfig().detector_names)): msg = ('Number of files must match number of detectors: ' + str(len(HexrdConfig().detector_names))) QMessageBox.warning(self.ui, 'HEXRD', msg) return # If it is a hdf5 file allow the user to select the path ext = os.path.splitext(selected_files[0])[1] if (ImageFileManager().is_hdf(ext) and not ImageFileManager().path_exists(selected_files[0])): selection = ImageFileManager().path_prompt(selected_files[0]) if not selection: return dialog = LoadImagesDialog(files, manual, self.ui) if dialog.exec_(): detector_names, image_files = dialog.results() image_files = [img for f in files for img in f] files = [[] for det in HexrdConfig().detector_names] for d, f in zip(detector_names, image_files): pos = HexrdConfig().detector_names.index(d) files[pos].append(f) ImageLoadManager().read_data(files, parent=self.ui) self.images_loaded()