def __init__(self, title, parent=None): super(ReferenceManagerPage, self).__init__(parent) self.parent = parent self.last_selected = None self.setButtonText(QtGui.QWizard.FinishButton, "Save changes") self.ui = Ui_ReferenceManagerPage() self.ui.setupUi(self) self.setTitle(title) self.set_references_context_menu() self.editor = ReferenceEditor(self) self.ui.referenceEditorLayout.addWidget(self.editor) self.editor.filePathChanged.connect(self._change_show_string) self.ui.references.itemSelectionChanged.connect(self.update_extraction_editor)
class ReferenceManagerPage(QtGui.QWizardPage): def __init__(self, title, parent=None): super(ReferenceManagerPage, self).__init__(parent) self.parent = parent self.last_selected = None self.setButtonText(QtGui.QWizard.FinishButton, "Save changes") self.ui = Ui_ReferenceManagerPage() self.ui.setupUi(self) self.setTitle(title) self.set_references_context_menu() self.editor = ReferenceEditor(self) self.ui.referenceEditorLayout.addWidget(self.editor) self.editor.filePathChanged.connect(self._change_show_string) self.ui.references.itemSelectionChanged.connect(self.update_extraction_editor) def set_references_context_menu(self): self.ui.new_reference = QtGui.QAction("New Reference", self.ui.references) self.ui.new_reference.triggered.connect(self._create_new_reference) self.ui.references.addAction(self.ui.new_reference) self.ui.delete_action = QtGui.QAction("Delete Selected", self.ui.references) self.ui.delete_action.triggered.connect(self._delete_selected_reference) self.ui.references.addAction(self.ui.delete_action) self.ui.delall_action = QtGui.QAction("Delete All", self.ui.references) self.ui.delall_action.triggered.connect(self._delete_all_references) self.ui.references.addAction(self.ui.delall_action) def initializePage(self): log.debug("Initializing references page.") #@UndefinedVariable extractions = self.parent.extraction_gw.find_extractions() for extraction in extractions: self._add_extraction(extraction) self.ui.references.sortItems(0, QtCore.Qt.AscendingOrder) def _change_show_string(self, new): log.debug('Changing show string for current item') #@UndefinedVariable if self.last_selected: show_path = self._get_show_string(str(new)) self.last_selected.show_path = show_path self.last_selected.setText(0, show_path) def _add_extraction(self, extraction): item = QtGui.QTreeWidgetItem(self.ui.references) item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) item.extraction = extraction item.show_path = self._get_show_string(extraction.file_path) item.setText(0, QtGui.QApplication.translate("", item.show_path, None, QtGui.QApplication.UnicodeUTF8)) return item def _create_new_reference(self): extraction = self.parent.extraction_gw.new_extraction() item = self._add_extraction(extraction) log.debug('Changing selection to the new item') #@UndefinedVariable # Change selection to current wrapper try: self.ui.references.setItemSelected(self.last_selected, False) except: log.debug('Error unselecting extraction') #@UndefinedVariable self.ui.references.setItemSelected(item, True) def _delete_selected_reference(self): if not self.last_selected: return # Confirmation message item_text = '"%s..."' % self.last_selected.text(0)[:20] msg_box = ConfirmMessageBox(self) msg_box.setText('Are you sure you want to delete reference %s?' % item_text) result = msg_box.exec_() if result == QtGui.QMessageBox.Cancel: log.debug('Deletion of %s aborted' % item_text) #@UndefinedVariable return # Reference deletion log.debug('Deleting reference %s' % item_text) #@UndefinedVariable self.parent.extraction_gw.delete(self.last_selected.extraction) self.ui.references.setItemSelected(self.last_selected, False) self.ui.references.removeItemWidget(self.last_selected, 0) self.last_selected = None def _delete_all_references(self): self.ui.references msg_box = ConfirmMessageBox(self) msg_box.setText('Are you sure you want to delete all references?') result = msg_box.exec_() if result == QtGui.QMessageBox.Cancel: log.debug('Deletion aborted') #@UndefinedVariable return # Reference deletion count = self.ui.references.topLevelItemCount() for index in range(count): item = self.ui.references.takeTopLevelItem(0) log.debug('Deleting reference') #@UndefinedVariable self.parent.extraction_gw.delete(item.extraction) self.ui.references.setItemSelected(item, False) self.last_selected = None self.editor.clear() def update_extraction_editor(self): # Save current changes if self.last_selected: self.editor.update() items = self.ui.references.selectedItems() if not items: return self.last_selected = items[0] self.editor.populate(self.last_selected.extraction) def _get_show_string(self, string): split_string = string.rsplit('/', 1) if len(split_string) == 2: return split_string[1] else: return split_string[0]