def __init__(self): super(QWizardPage, self).__init__() super(ListWidgetDeleting, self).__init__() self.ui = Ui_ListExistingScans() self.ui.setupUi(self) self.setTitle("Fileset Magic Scans") self.setSubTitle("Below is a list of the previous scans you've made.") self.ui.treeView.setAttribute(Qt.WA_MacShowFocusRect, False) self.ui.treeView.doubleClicked.connect(self.__onListItemDoubleClicked) self.ui.deleteSelectedToolButton.clicked.connect( self.__deleteSelectedItems) self.registerField("secondScanComplete", self) self.document_name = None
def __init__(self): super(QWizardPage, self).__init__() super(ListWidgetDeleting, self).__init__() self.ui = Ui_ListExistingScans() self.ui.setupUi(self) self.setTitle("Fileset Magic Scans") self.setSubTitle("Below is a list of the previous scans you've made.") self.ui.treeView.setAttribute(Qt.WA_MacShowFocusRect, False) self.ui.treeView.doubleClicked.connect(self.__onListItemDoubleClicked) self.ui.deleteSelectedToolButton.clicked.connect(self.__deleteSelectedItems) self.registerField("secondScanComplete", self) self.document_name = None
class ListOfExistingScanFilesWidget(QWizardPage, ListWidgetDeleting): loadScanFile = pyqtSignal(str) scanFileDeleted = pyqtSignal(str) def __init__(self): super(QWizardPage, self).__init__() super(ListWidgetDeleting, self).__init__() self.ui = Ui_ListExistingScans() self.ui.setupUi(self) self.setTitle("Fileset Magic Scans") self.setSubTitle("Below is a list of the previous scans you've made.") self.ui.treeView.setAttribute(Qt.WA_MacShowFocusRect, False) self.ui.treeView.doubleClicked.connect(self.__onListItemDoubleClicked) self.ui.deleteSelectedToolButton.clicked.connect(self.__deleteSelectedItems) self.registerField("secondScanComplete", self) self.document_name = None def __onListItemDoubleClicked(self, index): self.__onSelectionChanged(index, None) if self.isComplete(): self.wizard().next() def __onSelectionChanged(self, current, previous): # find selected item - grab its document name name = current.data(Qt.DisplayRole).toString() logger.debug("selected: {0}".format(name)) self.document_name = name self.completeChanged.emit() def initializePage(self): model = QStandardItemModel() # using a document model, we can obtain all the documents to list inside this view... all_docs = DocumentStorage.documents() for doc_filename in all_docs: # find out the last scan date, number of files, etc document = PersistentScanningState(doc_filename) logger.debug("found info: {0}".format(document.info)) creation_date_str = str(document.info.date_created) last_date = str(document.info.date_last_scanned) num_scanned = "{0:,}".format(document.info.files_scanned) num_merged = "{0:,}".format(document.info.files_merged) is_merged = document.info.merge_complete if not is_merged: last_date_str = "" else: last_date_str = last_date doc = os.path.split(doc_filename)[1][:-len('.sqlite')] items = [ QStandardItem(doc), QStandardItem(str(num_scanned)), QStandardItem(creation_date_str), QStandardItem(str(num_merged)), QStandardItem(last_date_str), ] items[1].setData(Qt.AlignRight, Qt.TextAlignmentRole) items[3].setData(Qt.AlignRight, Qt.TextAlignmentRole) model.invisibleRootItem().appendRow(items) self.ui.treeView.setModel(model) header = self.ui.treeView.header() model.setHeaderData(0, Qt.Horizontal, "Name") model.setHeaderData(1, Qt.Horizontal, "# First Scan") model.setHeaderData(2, Qt.Horizontal, "Date Created") model.setHeaderData(3, Qt.Horizontal, "# Second Scan") model.setHeaderData(4, Qt.Horizontal, "Date Scanned") header.setResizeMode(0, QHeaderView.ResizeToContents) header.setResizeMode(1, QHeaderView.ResizeToContents) header.setResizeMode(2, QHeaderView.ResizeToContents) header.setResizeMode(3, QHeaderView.ResizeToContents) header.setResizeMode(4, QHeaderView.ResizeToContents) self.ui.treeView.selectionModel().currentRowChanged.connect(self.__onSelectionChanged) def __deleteSelectedItems(self): toDelete = self.deleteSelectedTreeViewItems(self.ui.treeView, "Remove Scan Files?", "Are you sure you want to delete the selected scan files - this action cannot be undone") for rowItems in toDelete: for item in rowItems: name = item.data(Qt.DisplayRole).toString() logger.debug("going to delete: {0}".format(name)) DocumentStorage.deleteDocumentNamed(name) self.scanFileDeleted.emit(name) break self.completeChanged.emit() def isComplete(self): done = self.document_name is not None if done: # if the second scan completed OK, we can skip the second scan fullpath_doc_name = DocumentStorage.documentFullPath(self.document_name) logger.debug("going with full path of document: {0}".format(fullpath_doc_name)) persist_doc = PersistentScanningState(fullpath_doc_name) self.setField("secondScanComplete", persist_doc.info.merge_complete) self.wizard().setDocumentName(self.document_name) self.wizard().setWindowFilePath(fullpath_doc_name) return done
class ListOfExistingScanFilesWidget(QWizardPage, ListWidgetDeleting): loadScanFile = pyqtSignal(str) scanFileDeleted = pyqtSignal(str) def __init__(self): super(QWizardPage, self).__init__() super(ListWidgetDeleting, self).__init__() self.ui = Ui_ListExistingScans() self.ui.setupUi(self) self.setTitle("Fileset Magic Scans") self.setSubTitle("Below is a list of the previous scans you've made.") self.ui.treeView.setAttribute(Qt.WA_MacShowFocusRect, False) self.ui.treeView.doubleClicked.connect(self.__onListItemDoubleClicked) self.ui.deleteSelectedToolButton.clicked.connect( self.__deleteSelectedItems) self.registerField("secondScanComplete", self) self.document_name = None def __onListItemDoubleClicked(self, index): self.__onSelectionChanged(index, None) if self.isComplete(): self.wizard().next() def __onSelectionChanged(self, current, previous): # find selected item - grab its document name name = current.data(Qt.DisplayRole).toString() logger.debug("selected: {0}".format(name)) self.document_name = name self.completeChanged.emit() def initializePage(self): model = QStandardItemModel() # using a document model, we can obtain all the documents to list inside this view... all_docs = DocumentStorage.documents() for doc_filename in all_docs: # find out the last scan date, number of files, etc document = PersistentScanningState(doc_filename) logger.debug("found info: {0}".format(document.info)) creation_date_str = str(document.info.date_created) last_date = str(document.info.date_last_scanned) num_scanned = "{0:,}".format(document.info.files_scanned) num_merged = "{0:,}".format(document.info.files_merged) is_merged = document.info.merge_complete if not is_merged: last_date_str = "" else: last_date_str = last_date doc = os.path.split(doc_filename)[1][:-len('.sqlite')] items = [ QStandardItem(doc), QStandardItem(str(num_scanned)), QStandardItem(creation_date_str), QStandardItem(str(num_merged)), QStandardItem(last_date_str), ] items[1].setData(Qt.AlignRight, Qt.TextAlignmentRole) items[3].setData(Qt.AlignRight, Qt.TextAlignmentRole) model.invisibleRootItem().appendRow(items) self.ui.treeView.setModel(model) header = self.ui.treeView.header() model.setHeaderData(0, Qt.Horizontal, "Name") model.setHeaderData(1, Qt.Horizontal, "# First Scan") model.setHeaderData(2, Qt.Horizontal, "Date Created") model.setHeaderData(3, Qt.Horizontal, "# Second Scan") model.setHeaderData(4, Qt.Horizontal, "Date Scanned") header.setResizeMode(0, QHeaderView.ResizeToContents) header.setResizeMode(1, QHeaderView.ResizeToContents) header.setResizeMode(2, QHeaderView.ResizeToContents) header.setResizeMode(3, QHeaderView.ResizeToContents) header.setResizeMode(4, QHeaderView.ResizeToContents) self.ui.treeView.selectionModel().currentRowChanged.connect( self.__onSelectionChanged) def __deleteSelectedItems(self): toDelete = self.deleteSelectedTreeViewItems( self.ui.treeView, "Remove Scan Files?", "Are you sure you want to delete the selected scan files - this action cannot be undone" ) for rowItems in toDelete: for item in rowItems: name = item.data(Qt.DisplayRole).toString() logger.debug("going to delete: {0}".format(name)) DocumentStorage.deleteDocumentNamed(name) self.scanFileDeleted.emit(name) break self.completeChanged.emit() def isComplete(self): done = self.document_name is not None if done: # if the second scan completed OK, we can skip the second scan fullpath_doc_name = DocumentStorage.documentFullPath( self.document_name) logger.debug("going with full path of document: {0}".format( fullpath_doc_name)) persist_doc = PersistentScanningState(fullpath_doc_name) self.setField("secondScanComplete", persist_doc.info.merge_complete) self.wizard().setDocumentName(self.document_name) self.wizard().setWindowFilePath(fullpath_doc_name) return done