Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
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]