def __init__(self, title, parent=None): super(ReferenceExporterpage, self).__init__(parent) self.parent = parent self.populating = False self.reference_formatter = ReferenceEntryFormatter() self.setButtonText(QtGui.QWizard.FinishButton, "Save to file...") self.ui = Ui_ReferenceExporterPage() self.ui.setupUi(self) self.setTitle(title) self.set_references_context_menu() self.registerField("complete*", self.ui.entriesEdit, "plainText", QtCore.SIGNAL('textChanged()')); self.connect(self.ui.references, QtCore.SIGNAL("itemChanged(QTreeWidgetItem *,int)"), self._format_references)
class ReferenceExporterpage(QtGui.QWizardPage): def __init__(self, title, parent=None): super(ReferenceExporterpage, self).__init__(parent) self.parent = parent self.populating = False self.reference_formatter = ReferenceEntryFormatter() self.setButtonText(QtGui.QWizard.FinishButton, "Save to file...") self.ui = Ui_ReferenceExporterPage() self.ui.setupUi(self) self.setTitle(title) self.set_references_context_menu() self.registerField("complete*", self.ui.entriesEdit, "plainText", QtCore.SIGNAL('textChanged()')); self.connect(self.ui.references, QtCore.SIGNAL("itemChanged(QTreeWidgetItem *,int)"), self._format_references) def initializePage(self): log.debug("Initializing references list.") #@UndefinedVariable self.enter_populating() extractions = self.parent.extraction_gw.find_extractions() for extraction in extractions: self._add_extraction(extraction) self.ui.references.sortItems(0, QtCore.Qt.AscendingOrder) self.exit_populating() self.thread = ReferenceFormatterThread(self, self.reference_formatter) # Connect thread signals self.connect(self.thread, QtCore.SIGNAL("finished()"), self._update_export_edit) self.connect(self.thread, QtCore.SIGNAL("terminated()"), self._update_export_edit) def set_references_context_menu(self): self.ui.check_all = QtGui.QAction("Check All", self.ui.references) self.ui.check_all.triggered.connect(self._check_all) self.ui.references.addAction(self.ui.check_all) self.ui.uncheck_all = QtGui.QAction("Uncheck All", self.ui.references) self.ui.uncheck_all.triggered.connect(self._uncheck_all) self.ui.references.addAction(self.ui.uncheck_all) def enter_populating(self): self.populating = True def exit_populating(self): self.populating = False def _add_extraction(self, extraction): item = QtGui.QTreeWidgetItem(self.ui.references) item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsUserCheckable) 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)) item.setCheckState(0, QtCore.Qt.Unchecked) item.reference_entry = None return item def _format_references(self): if self.populating: return log.debug('Item checked/unchecked') #@UndefinedVariable self.ui.entriesEdit.setText('Updating...') items = self._get_checked_items() log.debug('Items selected: %d' % len(items)) #@UndefinedVariable self.thread.items = items self.thread.start() def _get_checked_items(self): items = [] for index in range(self.ui.references.topLevelItemCount()): item = self.ui.references.topLevelItem(index) if item.checkState(0) == QtCore.Qt.Checked: items.append(item) return items def _update_export_edit(self): log.debug('Finished formatting: %d formatted references' % #@UndefinedVariable len(self.thread.formatted_references)) formatted_references = self.thread.formatted_references text = '' for reference in formatted_references: text = ''.join([text, reference, '\n\n']) self.ui.entriesEdit.setText(text) 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] def _check_all(self): log.debug('Check all references') #@UndefinedVariable self._change_items_check_state(QtCore.Qt.Checked) self._update_export_edit() def _uncheck_all(self): log.debug('Uncheck all references') #@UndefinedVariable self._change_items_check_state(QtCore.Qt.Unchecked) self._update_export_edit() def _change_items_check_state(self, value): self.enter_populating() count = self.ui.references.topLevelItemCount() - 1 for index in range(count): item = self.ui.references.topLevelItem(index) item.setCheckState(0, value) self.exit_populating() self.ui.references.topLevelItem(count).setCheckState(0, value)