def contextMenuEvent(self, pos): selected_count = len(self.selectedRows()) menu = QMenu(self) act = menu.addAction(createIcon('pencil.png'), self.tr("Edit..."), self._edit) act.setShortcut('Enter') # Disable Edit when more than one record selected act.setEnabled(selected_count == 1) menu.setDefaultAction(act) menu.addAction(createIcon('page_copy.png'), self.tr("Copy"), self._copy, QKeySequence.Copy) menu.addAction(createIcon('page_paste.png'), self.tr("Paste"), self._paste, QKeySequence.Paste) menu.addSeparator() act = menu.addAction(self.tr("Clone"), self._clone) # Disable Clone when more than one record selected act.setEnabled(selected_count == 1) act = menu.addAction(self.tr("Multi edit..."), self._multiEdit) # Disable Multi edit when only one record selected act.setEnabled(selected_count > 1) menu.addSeparator() style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) menu.addAction(icon, self.tr("Delete"), self._delete, QKeySequence.Delete) menu.exec_(self.mapToGlobal(pos))
def contextMenuEvent(self, pos): menu = QMenu(self) act = menu.addAction(createIcon('pencil.png'), self.tr("Edit..."), self._edit) act.setShortcut('Enter') # Disable Edit when more than one record selected act.setEnabled(len(self.selectedRows()) == 1) menu.setDefaultAction(act) menu.addAction(createIcon('page_copy.png'), self.tr("Copy"), self._copy, QKeySequence.Copy) menu.addAction(createIcon('page_paste.png'), self.tr("Paste"), self._paste, QKeySequence.Paste) menu.addSeparator() act = menu.addAction(self.tr("Clone"), self._clone) # Disable Clone when more than one record selected act.setEnabled(len(self.selectedRows()) == 1) act = menu.addAction(self.tr("Multi edit..."), self._multiEdit) # Disable Multi edit when only one record selected act.setEnabled(len(self.selectedRows()) > 1) menu.addSeparator() style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) menu.addAction(icon, self.tr("Delete"), self._delete, QKeySequence.Delete) menu.exec_(self.mapToGlobal(pos))
def updateStatisticsAct(self, showed): if statisticsAvailable: if showed: self.statisticsAct.setText(self.tr("Info panel")) self.statisticsAct.setIcon(createIcon('application-form.png')) else: self.statisticsAct.setText(self.tr("Statistics")) self.statisticsAct.setIcon(createIcon('chart-bar.png'))
def apply(self): filters = ColumnFilters(self.columnName) unchecked = 0 checked = 0 for i in range(1, self.listWidget.count()): item = self.listWidget.item(i) if item.checkState() == Qt.Unchecked: unchecked = unchecked + 1 else: checked = checked + 1 for i in range(1, self.listWidget.count()): item = self.listWidget.item(i) if unchecked > checked: if item.checkState() == Qt.Checked: if item.type() == FilterMenuButton.BlanksType: filter_ = BlankFilter(self.columnName) elif item.type() == FilterMenuButton.DataType: filter_ = DataFilter(self.columnName) else: value = item.data(Qt.UserRole) filter_ = ValueFilter(self.columnName, value) filter_.revert = True filters.addFilter(filter_) else: if item.checkState() == Qt.Unchecked: if item.type() == FilterMenuButton.BlanksType: filter_ = BlankFilter(self.columnName) elif item.type() == FilterMenuButton.DataType: filter_ = DataFilter(self.columnName) else: value = item.data(Qt.UserRole) filter_ = ValueFilter(self.columnName, value) filters.addFilter(filter_) if filters.filters(): self.setIcon(createIcon('filters.ico')) self.filters[self.fieldid] = filters else: self.setIcon(createIcon()) if self.fieldid in self.filters.keys(): self.filters.pop(self.fieldid) filtersSql = self.filtersToSql(self.filters.values()) self.model.setFilter(filtersSql) self.menu().hide() self.listParam.save()
def apply(self): filters = ColumnFilters(self.columnName) unchecked = 0 checked = 0 for i in range(1, self.listWidget.count()): item = self.listWidget.item(i) if item.checkState() == Qt.Unchecked: unchecked = unchecked + 1 else: checked = checked + 1 for i in range(1, self.listWidget.count()): item = self.listWidget.item(i) if unchecked > checked: if item.checkState() == Qt.Checked: if item.type() == FilterMenuButton.BlanksType: filter_ = BlankFilter(self.columnName) elif item.type() == FilterMenuButton.DataType: filter_ = DataFilter(self.columnName) else: value = item.data(Qt.UserRole) filter_ = ValueFilter(self.columnName, value) filter_.revert = True filters.addFilter(filter_) else: if item.checkState() == Qt.Unchecked: if item.type() == FilterMenuButton.BlanksType: filter_ = BlankFilter(self.columnName) elif item.type() == FilterMenuButton.DataType: filter_ = DataFilter(self.columnName) else: value = item.data(Qt.UserRole) filter_ = ValueFilter(self.columnName, value) filters.addFilter(filter_) if filters.filters(): self.setIcon(createIcon('filters.ico')) self.filters[self.fieldid] = filters else: self.setIcon(createIcon()) if self.fieldid in self.filters.keys(): self.filters.pop(self.fieldid) filtersSql = self.filtersToSql(self.filters.values()) self.model.setFilter(filtersSql) self.menu().hide() self.listParam.save()
def __init__(self, parent=None): super(UrlLineEdit, self).__init__(parent) self.lineEdit = LineEdit(parent) buttonLoad = QPushButton(createIcon('world.png'), '', parent) buttonLoad.setFixedWidth(25) buttonLoad.setToolTip(self.tr("Open specified URL")) buttonLoad.clicked.connect(self.clickedButtonLoad) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) self.buttonOpen = QPushButton(icon, '', parent) self.buttonOpen.setFixedWidth(25) self.buttonOpen.setToolTip(self.tr("Select file from disc")) self.buttonOpen.clicked.connect(self.clickedButtonOpen) layout = QHBoxLayout() layout.addWidget(self.lineEdit) layout.addWidget(self.buttonOpen) layout.addWidget(buttonLoad) layout.setContentsMargins(QMargins()) self.setLayout(layout)
def __init__(self, parent=None): super().__init__(parent) self.lineEdit = LineEdit(parent) buttonLoad = QPushButton(createIcon('world.png'), '', parent) buttonLoad.setFixedWidth(25) buttonLoad.setToolTip(self.tr("Open specified URL")) buttonLoad.clicked.connect(self.clickedButtonLoad) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) self.buttonOpen = QPushButton(icon, '', parent) self.buttonOpen.setFixedWidth(25) self.buttonOpen.setToolTip(self.tr("Select file from disc")) self.buttonOpen.clicked.connect(self.clickedButtonOpen) layout = QHBoxLayout() layout.addWidget(self.lineEdit) layout.addWidget(self.buttonOpen) layout.addWidget(buttonLoad) layout.setContentsMargins(QMargins()) self.setLayout(layout)
def applyFilters(self, filters): if filters.filters(): self.setIcon(createIcon('filters.ico')) self.filters[self.fieldid] = filters else: self.setIcon(QIcon()) if self.fieldid in self.filters.keys(): self.filters.pop(self.fieldid) filtersSql = self.filtersToSql(self.filters.values()) self.model.setFilter(filtersSql) self.listParam.save_filters()
def __createActions(self): self.__actions = {} newListAct = QAction(self.tr("&New..."), self) newListAct.triggered.connect(self.newList) self.__actions['new'] = newListAct cloneListAct = QAction(self.tr("Clone"), self) cloneListAct.triggered.connect(self._clone) self.__actions['clone'] = cloneListAct openPageMenu = QMenu(self.tr("Open"), self) self.__actions['open'] = openPageMenu removeAllAct = QAction(createIcon('cross.png'), self.tr("Remove all"), self) removeAllAct.triggered.connect(self.removeClosedPages) self.__actions['removeAll'] = removeAllAct renameListAct = QAction(self.tr("Rename..."), self) renameListAct.triggered.connect(self.renamePage) self.__actions['rename'] = renameListAct selectColumnsAct = QAction(self.tr("Select columns..."), self) selectColumnsAct.triggered.connect(self.selectColumns) self.__actions['select'] = selectColumnsAct closeListAct = QAction(self.tr("Close"), self) closeListAct.setShortcut(QKeySequence.Close) closeListAct.triggered.connect(self.closePage) self.__actions['close'] = closeListAct removeListAct = QAction(createIcon('cross.png'), self.tr("Remove"), self) removeListAct.triggered.connect(self.removePage) self.__actions['remove'] = removeListAct
def __init__(self, parent=None): super().__init__(parent) self.lineEdit = LineEdit(self) self.lineEdit.returnPressed.connect(self.clickedButtonAddress) self.buttonAddress = QPushButton(createIcon('find.png'), '', self) self.buttonAddress.setFixedWidth(25) self.buttonAddress.setToolTip(self.tr("Find address")) self.buttonAddress.clicked.connect(self.clickedButtonAddress) layout = QHBoxLayout() layout.addWidget(self.lineEdit) layout.addWidget(self.buttonAddress) layout.setContentsMargins(QMargins()) self.setLayout(layout)
def __init__(self, parent=None): super().__init__(parent) self.lineEdit = LineEdit(self) self.lineEdit.returnPressed.connect(self.clickedButtonAddress) self.buttonAddress = QPushButton(createIcon('find.png'), '', self) self.buttonAddress.setFixedWidth(25) self.buttonAddress.setToolTip(self.tr("Find address")) self.buttonAddress.clicked.connect(self.clickedButtonAddress) layout = QHBoxLayout() layout.addWidget(self.lineEdit) layout.addWidget(self.buttonAddress) layout.setContentsMargins(QMargins()) self.setLayout(layout)
def __init__(self, columnParam, listParam, model, parent): super(FilterMenuButton, self).__init__(parent) self.db = model.database() self.model = model self.columnName = self.model.fields.fields[columnParam.fieldid].name self.fieldid = columnParam.fieldid self.filters = listParam.filters self.listParam = listParam self.settings = Settings() menu = QMenu() self.setToolTip(self.tr("Filter items")) self.setFixedHeight(self.parent().height() - 2) self.setFixedWidth(self.height()) self.setMenu(menu) if self.fieldid in self.filters.keys(): self.setIcon(createIcon('filters.ico')) menu.aboutToShow.connect(self.prepareMenu)
def __init__(self, columnParam, listParam, model, parent): super(FilterMenuButton, self).__init__(parent) self.db = model.database() self.model = model self.columnName = self.model.fields.fields[columnParam.fieldid].name self.fieldid = columnParam.fieldid self.filters = listParam.filters self.listParam = listParam self.settings = Settings() menu = QMenu() self.setToolTip(self.tr("Filter items")) self.setFixedHeight(self.parent().height() - 2) self.setFixedWidth(self.height()) self.setMenu(menu) if self.fieldid in self.filters.keys(): self.setIcon(createIcon('filters.ico')) menu.aboutToShow.connect(self.prepareMenu)
def __init__(self, statisticsParam, parent=None): super().__init__(parent) self.statisticsParam = statisticsParam layout = QHBoxLayout() layout.setContentsMargins(QMargins()) layout.setAlignment(Qt.AlignTop) ctrlLayout = QVBoxLayout() ctrlLayout.setAlignment(Qt.AlignTop) widget = self.__layoutToWidget(ctrlLayout) widget.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) layout.addWidget(widget) self.chartLayout = QVBoxLayout() self.chartLayout.setContentsMargins(QMargins()) layout.addWidget(self.__layoutToWidget(self.chartLayout)) self.chart = QWidget(self) self.chartLayout.addWidget(self.chart) self.chartSelector = QComboBox(self) self.chartSelector.addItem(self.tr("Bar"), 'bar') self.chartSelector.addItem(self.tr("Horizontal bar"), 'barh') self.chartSelector.addItem(self.tr("Pie"), 'pie') self.chartSelector.addItem(self.tr("Stacked bar"), 'stacked') self.chartSelector.addItem(self.tr("Progress"), 'progress') if importedQtWebKit: self.chartSelector.addItem(self.tr("GeoChart"), 'geochart') ctrlLayout.addWidget(QLabel(self.tr("Chart:"))) ctrlLayout.addWidget(self.chartSelector) self.fieldLabel = QLabel(self.tr("Field:")) ctrlLayout.addWidget(self.fieldLabel) self.fieldSelector = QComboBox(self) ctrlLayout.addWidget(self.fieldSelector) self.subfieldLabel = QLabel(self.tr("Additional field:")) ctrlLayout.addWidget(self.subfieldLabel) self.subfieldSelector = QComboBox(self) ctrlLayout.addWidget(self.subfieldSelector) self.periodLabel = QLabel(self.tr("Sum per:")) ctrlLayout.addWidget(self.periodLabel) self.periodSelector = QComboBox(self) self.periodSelector.addItem(self.tr("Year"), 'year') self.periodSelector.addItem(self.tr("Month"), 'month') self.periodSelector.addItem(self.tr("Week"), 'week') self.periodSelector.addItem(self.tr("Day"), 'day') ctrlLayout.addWidget(self.periodSelector) self.itemsLabel = QLabel(self.tr("Items:")) ctrlLayout.addWidget(self.itemsLabel) self.itemsSelector = QComboBox(self) self.itemsSelector.addItem(self.tr("Count"), 'count') self.itemsSelector.addItem(self.tr("Price"), 'price') self.itemsSelector.addItem(self.tr("Total price"), 'totalprice') self.itemsSelector.addItem(self.tr("Created"), 'created') ctrlLayout.addWidget(self.itemsSelector) self.colorCheck = QCheckBox(self.tr("Multicolor"), self) ctrlLayout.addWidget(self.colorCheck) self.regionLabel = QLabel(self.tr("Region:")) ctrlLayout.addWidget(self.regionLabel) self.regionSelector = QComboBox(self) self.regionSelector.addItem(self.tr("All"), 'null') self.regionSelector.addItem(self.tr("Europe"), "'150'") self.regionSelector.addItem(self.tr("Africa"), "'002'") self.regionSelector.addItem(self.tr("Americas"), "'019'") self.regionSelector.addItem(self.tr("Asia"), "'142'") self.regionSelector.addItem(self.tr("Oceania"), "'009'") ctrlLayout.addWidget(self.regionSelector) saveButton = QPushButton() icon = createIcon("save.png") saveButton.setIcon(icon) saveButton.setIconSize(QSize(16, 16)) saveButton.setToolTip(self.tr("Save chart")) saveButton.setFixedWidth(25) ctrlLayout.addSpacing(1000) ctrlLayout.addWidget(saveButton) saveButton.clicked.connect(self.save) self.setLayout(layout)
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(createIcon('main.ico')) self.createStatusBar() settingsAct = QAction(createIcon('cog.png'), self.tr("Settings..."), self) settingsAct.triggered.connect(self.settingsEvent) importAct = QAction(self.tr("Import..."), self) importAct.triggered.connect(self.importEvent) uploadImagesAct = QAction(self.tr("Upload images"), self) uploadImagesAct.triggered.connect(self.uploadImagesEvent) cancelFilteringAct = QAction(createIcon('funnel.png'), self.tr("Clear all filters"), self) cancelFilteringAct.triggered.connect(self.cancelFilteringEvent) newCollectionAct = QAction(self.tr("&New..."), self) newCollectionAct.triggered.connect(self.newCollectionEvent) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) openCollectionAct = QAction(icon, self.tr("&Open..."), self) openCollectionAct.setShortcut(QtGui.QKeySequence.Open) openCollectionAct.triggered.connect(self.openCollectionEvent) backupCollectionAct = QAction( createIcon('database_backup.png'), self.tr("Backup"), self) backupCollectionAct.triggered.connect(self.backupCollectionEvent) vacuumCollectionAct = QAction( createIcon('compress.png'), self.tr("Vacuum"), self) vacuumCollectionAct.triggered.connect(self.vacuumCollectionEvent) descriptionCollectionAct = QAction(self.tr("Description"), self) descriptionCollectionAct.triggered.connect( self.descriptionCollectionEvent) passwordCollectionAct = QAction(createIcon('key.png'), self.tr("Set password..."), self) passwordCollectionAct.triggered.connect(self.passwordCollectionEvent) self.exitAct = QAction(createIcon('door_in.png'), self.tr("E&xit"), self) self.exitAct.setShortcut(QtGui.QKeySequence.Quit) self.exitAct.triggered.connect(self.close) menubar = self.menuBar() file = menubar.addMenu(self.tr("&File")) file.addAction(newCollectionAct) file.addAction(openCollectionAct) file.addSeparator() file.addAction(backupCollectionAct) file.addAction(vacuumCollectionAct) file.addAction(passwordCollectionAct) file.addAction(descriptionCollectionAct) file.addSeparator() file.addAction(importAct) file.addAction(uploadImagesAct) file.addSeparator() file.addAction(settingsAct) file.addSeparator() file.addAction(self.exitAct) self.latestActions = [] self.__updateLatest(file) addCoinAct = QAction(createIcon('add.png'), self.tr("Add"), self) addCoinAct.setShortcut('Insert') addCoinAct.triggered.connect(self.addCoin) editCoinAct = QAction(createIcon('pencil.png'), self.tr("Edit..."), self) editCoinAct.triggered.connect(self.editCoin) style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) deleteCoinAct = QAction(icon, self.tr("Delete"), self) deleteCoinAct.setShortcut(QtGui.QKeySequence.Delete) deleteCoinAct.triggered.connect(self.deleteCoin) coin = menubar.addMenu(self.tr("Coin")) coin.addAction(addCoinAct) coin.addAction(editCoinAct) coin.addAction(deleteCoinAct) viewBrowserAct = QAction(createIcon('page_white_world.png'), self.tr("View in browser"), self) viewBrowserAct.triggered.connect(self.viewBrowser) self.viewTab = TabView(self) actions = self.viewTab.actions() listMenu = menubar.addMenu(self.tr("List")) listMenu.addAction(actions['new']) listMenu.addMenu(actions['open']) listMenu.aboutToShow.connect(self.viewTab.updateOpenPageMenu) listMenu.addAction(actions['rename']) listMenu.addSeparator() listMenu.addAction(actions['select']) listMenu.addSeparator() listMenu.addAction(actions['close']) listMenu.addAction(actions['remove']) self.referenceMenu = menubar.addMenu(self.tr("Reference")) reportAct = QAction(self.tr("Report..."), self) reportAct.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_P) reportAct.triggered.connect(self.report) saveTableAct = QAction(createIcon('table.png'), self.tr("Save current list..."), self) saveTableAct.triggered.connect(self.saveTable) report = menubar.addMenu(self.tr("Report")) report.addAction(reportAct) report.addAction(saveTableAct) report.addAction(viewBrowserAct) helpAct = QAction(createIcon('help.png'), self.tr("Online help"), self) helpAct.setShortcut(QtGui.QKeySequence.HelpContents) helpAct.triggered.connect(self.onlineHelp) checkUpdatesAct = QAction(self.tr("Check for updates"), self) checkUpdatesAct.triggered.connect(self.manualUpdate) aboutAct = QAction(self.tr("About %s") % version.AppName, self) aboutAct.triggered.connect(self.about) help_ = menubar.addMenu(self.tr("&Help")) help_.addAction(helpAct) help_.addSeparator() help_.addAction(checkUpdatesAct) help_.addSeparator() help_.addAction(aboutAct) toolBar = QToolBar(self.tr("Toolbar"), self) toolBar.setMovable(False) toolBar.addAction(openCollectionAct) toolBar.addSeparator() toolBar.addAction(addCoinAct) toolBar.addAction(editCoinAct) toolBar.addAction(viewBrowserAct) toolBar.addSeparator() toolBar.addAction(cancelFilteringAct) toolBar.addSeparator() toolBar.addAction(settingsAct) self.addToolBar(toolBar) self.setWindowTitle(version.AppName) self.reference = Reference(self) self.reference.open(Settings()['reference']) if len(sys.argv) > 1: fileName = sys.argv[1] else: latest = LatestCollections(self) fileName = latest.latest() self.collection = Collection(self.reference, self) self.openCollection(fileName) self.setCentralWidget(self.viewTab) settings = QtCore.QSettings() pageIndex = settings.value('tabwindow/page') if pageIndex != None: self.viewTab.setCurrentIndex(int(pageIndex)) if settings.value('mainwindow/maximized') == 'true': self.setWindowState(self.windowState() | QtCore.Qt.WindowMaximized) else: size = settings.value('mainwindow/size') if size: self.resize(size) self.autoUpdate()
def clear(self): self.setIcon(createIcon())
def __init__(self): QMainWindow.__init__(self) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowIcon(createIcon('main.ico')) self.createStatusBar() menubar = self.menuBar() self.collectionActs = [] self.tableViewAct = QAction(createIcon('application_view_list.png'), self.tr("Table view"), self) self.tableViewAct.setData(CollectionPageTypes.List) self.tableViewAct.triggered.connect(self.changeViewEvent) self.collectionActs.append(self.tableViewAct) self.iconViewAct = QAction(createIcon('application_view_icons.png'), self.tr("Icon view"), self) self.iconViewAct.setData(CollectionPageTypes.Icon) self.iconViewAct.triggered.connect(self.changeViewEvent) self.collectionActs.append(self.iconViewAct) self.cardViewAct = QAction(createIcon('application_view_tile.png'), self.tr("Card view"), self) self.cardViewAct.setData(CollectionPageTypes.Card) self.cardViewAct.triggered.connect(self.changeViewEvent) self.collectionActs.append(self.cardViewAct) viewMenu = QMenu() viewMenu.addAction(self.tableViewAct) viewMenu.addAction(self.iconViewAct) viewMenu.addAction(self.cardViewAct) self.viewButton = QToolButton() self.viewButton.setPopupMode(QToolButton.InstantPopup) self.viewButton.setMenu(viewMenu) self.viewButton.setDefaultAction(self.tableViewAct) colnectAct = QAction(createIcon('colnect.png'), self.tr("Colnect..."), self) colnectAct.triggered.connect(self.colnectEvent) self.collectionActs.append(colnectAct) if statisticsAvailable or importedQtWebKit: self.detailsAct = QAction(createIcon('application-form.png'), self.tr("Info panel"), self) self.detailsAct.setCheckable(True) self.detailsAct.triggered.connect(self.detailsEvent) self.collectionActs.append(self.detailsAct) if statisticsAvailable: self.statisticsAct = QAction(createIcon('chart-bar.png'), self.tr("Statistics"), self) self.statisticsAct.setCheckable(True) self.statisticsAct.triggered.connect(self.statisticsEvent) self.collectionActs.append(self.statisticsAct) if importedQtWebKit: self.mapAct = QAction(createIcon('world.png'), self.tr("Map"), self) self.mapAct.setCheckable(True) self.mapAct.triggered.connect(self.mapEvent) self.collectionActs.append(self.mapAct) summaryAct = QAction(self.tr("Summary"), self) summaryAct.triggered.connect(self.summaryEvent) self.collectionActs.append(summaryAct) settingsAct = QAction(createIcon('cog.png'), self.tr("Settings..."), self) settingsAct.triggered.connect(self.settingsEvent) self.collectionActs.append(settingsAct) cancelFilteringAct = QAction(createIcon('funnel_clear.png'), self.tr("Clear all filters"), self) cancelFilteringAct.triggered.connect(self.cancelFilteringEvent) self.collectionActs.append(cancelFilteringAct) cancelSortingAct = QAction(createIcon('sort_clear.png'), self.tr("Clear sort order"), self) cancelSortingAct.triggered.connect(self.cancelSortingEvent) self.collectionActs.append(cancelSortingAct) self.enableDragAct = QAction(createIcon('arrow_switch.png'), self.tr("Sort by drag-n-drop mode"), self) self.enableDragAct.setCheckable(True) self.enableDragAct.triggered.connect(self.enableDragEvent) self.collectionActs.append(self.enableDragAct) self.exitAct = QAction(createIcon('door_in.png'), self.tr("E&xit"), self) self.exitAct.setShortcut(QKeySequence.Quit) self.exitAct.triggered.connect(self.close) newCollectionAct = QAction(self.tr("&New..."), self) newCollectionAct.triggered.connect(self.newCollectionEvent) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) openCollectionAct = QAction(icon, self.tr("&Open..."), self) openCollectionAct.setShortcut(QKeySequence.Open) openCollectionAct.triggered.connect(self.openCollectionEvent) backupCollectionAct = QAction( createIcon('database_backup.png'), self.tr("Backup"), self) backupCollectionAct.triggered.connect(self.backupCollectionEvent) self.collectionActs.append(backupCollectionAct) vacuumCollectionAct = QAction( createIcon('compress.png'), self.tr("Vacuum"), self) vacuumCollectionAct.triggered.connect(self.vacuumCollectionEvent) self.collectionActs.append(vacuumCollectionAct) descriptionCollectionAct = QAction(self.tr("Description"), self) descriptionCollectionAct.triggered.connect( self.descriptionCollectionEvent) self.collectionActs.append(descriptionCollectionAct) passwordCollectionAct = QAction(createIcon('key.png'), self.tr("Set password..."), self) passwordCollectionAct.triggered.connect(self.passwordCollectionEvent) self.collectionActs.append(passwordCollectionAct) importMenu = QMenu(self.tr("Import"), self) self.collectionActs.append(importMenu) if ImportExcel.isAvailable(): importExcelAct = QAction( createIcon('excel.png'), self.tr("Excel"), self) importExcelAct.triggered.connect(self.importExcel) self.collectionActs.append(importExcelAct) importMenu.addAction(importExcelAct) if ImportCabinet.isAvailable(): importCabinetAct = QAction( createIcon('cabinet.png'), self.tr("Cabinet 2.2.2.1, 2013"), self) importCabinetAct.triggered.connect(self.importCabinet) self.collectionActs.append(importCabinetAct) importMenu.addAction(importCabinetAct) if ImportCoinManage.isAvailable(): importCoinManageAct = QAction( createIcon('CoinManage.png'), self.tr("CoinManage 2011"), self) importCoinManageAct.triggered.connect(self.importCoinManage) self.collectionActs.append(importCoinManageAct) importMenu.addAction(importCoinManageAct) if ImportCollectionStudio.isAvailable(): importCollectionStudioAct = QAction( createIcon('CollectionStudio.png'), self.tr("Collection Studio 3.65"), self) importCollectionStudioAct.triggered.connect( self.importCollectionStudio) self.collectionActs.append(importCollectionStudioAct) importMenu.addAction(importCollectionStudioAct) if ImportUcoin2.isAvailable(): importUcoinAct = QAction( createIcon('ucoin.png'), self.tr("uCoin.net"), self) importUcoinAct.triggered.connect(self.importUcoin2) self.collectionActs.append(importUcoinAct) importMenu.addAction(importUcoinAct) elif ImportUcoin.isAvailable(): importUcoinAct = QAction( createIcon('ucoin.png'), self.tr("uCoin.net"), self) importUcoinAct.triggered.connect(self.importUcoin) self.collectionActs.append(importUcoinAct) importMenu.addAction(importUcoinAct) if ImportTellico.isAvailable(): importTellicoAct = QAction( createIcon('tellico.png'), self.tr("Tellico"), self) importTellicoAct.triggered.connect(self.importTellico) self.collectionActs.append(importTellicoAct) importMenu.addAction(importTellicoAct) mergeCollectionAct = QAction( createIcon('refresh.png'), self.tr("Synchronize..."), self) mergeCollectionAct.triggered.connect(self.mergeCollectionEvent) self.collectionActs.append(mergeCollectionAct) exportMenu = QMenu(self.tr("Export"), self) self.collectionActs.append(exportMenu) exportMobileAct = QAction(self.tr("For Android version"), self) exportMobileAct.triggered.connect(self.exportMobile) self.collectionActs.append(exportMobileAct) exportMenu.addAction(exportMobileAct) file = menubar.addMenu(self.tr("&File")) file.addAction(newCollectionAct) file.addAction(openCollectionAct) file.addSeparator() file.addAction(backupCollectionAct) file.addAction(vacuumCollectionAct) file.addAction(passwordCollectionAct) file.addAction(descriptionCollectionAct) file.addSeparator() file.addMenu(importMenu) file.addAction(mergeCollectionAct) file.addSeparator() file.addMenu(exportMenu) file.addSeparator() self.latestActions = [] self.__updateLatest(file) file.addAction(settingsAct) file.addSeparator() file.addAction(self.exitAct) addCoinAct = QAction(createIcon('add.png'), self.tr("Add"), self) addCoinAct.setShortcut('Insert') addCoinAct.triggered.connect(self.addCoin) self.collectionActs.append(addCoinAct) editCoinAct = QAction(createIcon('pencil.png'), self.tr("Edit..."), self) editCoinAct.triggered.connect(self.editCoin) self.collectionActs.append(editCoinAct) style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) deleteCoinAct = QAction(icon, self.tr("Delete"), self) deleteCoinAct.setShortcut(QKeySequence.Delete) deleteCoinAct.triggered.connect(self.deleteCoin) self.collectionActs.append(deleteCoinAct) copyCoinAct = QAction(createIcon('page_copy.png'), self.tr("Copy"), self) copyCoinAct.setShortcut(QKeySequence.Copy) copyCoinAct.triggered.connect(self.copyCoin) self.collectionActs.append(copyCoinAct) pasteCoinAct = QAction(createIcon('page_paste.png'), self.tr("Paste"), self) pasteCoinAct.setShortcut(QKeySequence.Paste) pasteCoinAct.triggered.connect(self.pasteCoin) self.collectionActs.append(pasteCoinAct) coin = menubar.addMenu(self.tr("Coin")) self.collectionActs.append(coin) coin.addAction(addCoinAct) coin.addAction(editCoinAct) coin.addSeparator() if Settings()['colnect_enabled']: coin.addAction(colnectAct) coin.addSeparator() coin.addAction(copyCoinAct) coin.addAction(pasteCoinAct) coin.addSeparator() coin.addAction(deleteCoinAct) viewBrowserAct = QAction(createIcon('page_white_world.png'), self.tr("View in browser"), self) viewBrowserAct.triggered.connect(self.viewBrowserEvent) self.collectionActs.append(viewBrowserAct) self.viewTab = TabView(self) actions = self.viewTab.actions() listMenu = menubar.addMenu(self.tr("List")) self.collectionActs.append(listMenu) listMenu.addAction(actions['new']) listMenu.addMenu(actions['open']) listMenu.aboutToShow.connect(self.viewTab.updateOpenPageMenu) listMenu.addAction(actions['rename']) listMenu.addSeparator() listMenu.addAction(actions['select']) listMenu.addSeparator() listMenu.addAction(actions['close']) listMenu.addAction(actions['remove']) self.referenceMenu = menubar.addMenu(self.tr("Reference")) self.collectionActs.append(self.referenceMenu) reportAct = QAction(self.tr("Report..."), self) reportAct.setShortcut(Qt.CTRL + Qt.Key_P) reportAct.triggered.connect(self.report) self.collectionActs.append(reportAct) saveTableAct = QAction(createIcon('table.png'), self.tr("Save current list..."), self) saveTableAct.triggered.connect(self.saveTable) self.collectionActs.append(saveTableAct) report = menubar.addMenu(self.tr("Report")) self.collectionActs.append(report) report.addAction(reportAct) report.addAction(saveTableAct) default_template = Settings()['template'] viewBrowserMenu = report.addMenu(createIcon('page_white_world.png'), self.tr("View in browser")) for template in Report.scanTemplates(): act = QAction(template[0], self) act.setData(template[1]) act.triggered.connect(self.viewBrowserEvent) viewBrowserMenu.addAction(act) if default_template == template[1]: viewBrowserMenu.setDefaultAction(act) self.collectionActs.append(exportMenu) if statisticsAvailable: report.addSeparator() report.addAction(self.statisticsAct) report.addAction(summaryAct) helpAct = QAction(createIcon('help.png'), self.tr("User manual"), self) helpAct.setShortcut(QKeySequence.HelpContents) helpAct.triggered.connect(self.onlineHelp) webAct = QAction(self.tr("Visit web-site"), self) webAct.triggered.connect(self.visitWeb) checkUpdatesAct = QAction(self.tr("Check for updates"), self) checkUpdatesAct.triggered.connect(self.manualUpdate) aboutAct = QAction(self.tr("About %s") % version.AppName, self) aboutAct.triggered.connect(self.about) help_ = menubar.addMenu(self.tr("&Help")) help_.addAction(helpAct) help_.addAction(webAct) help_.addSeparator() help_.addAction(checkUpdatesAct) help_.addSeparator() help_.addAction(aboutAct) toolBar = QToolBar(self.tr("Toolbar"), self) toolBar.setObjectName("Toolbar") toolBar.setMovable(False) toolBar.addAction(openCollectionAct) toolBar.addSeparator() toolBar.addAction(addCoinAct) toolBar.addAction(editCoinAct) toolBar.addAction(viewBrowserAct) toolBar.addSeparator() toolBar.addAction(cancelFilteringAct) toolBar.addAction(cancelSortingAct) toolBar.addAction(self.enableDragAct) toolBar.addSeparator() toolBar.addAction(settingsAct) if statisticsAvailable or importedQtWebKit: toolBar.addSeparator() toolBar.addAction(self.detailsAct) if statisticsAvailable: toolBar.addAction(self.statisticsAct) if importedQtWebKit: toolBar.addAction(self.mapAct) if Settings()['colnect_enabled']: toolBar.addSeparator() toolBar.addAction(colnectAct) toolBar.addSeparator() toolBar.addWidget(self.viewButton) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) toolBar.addWidget(spacer) self.quickSearch = QLineEdit() self.quickSearch.setMaximumWidth(250) self.quickSearch.setClearButtonEnabled(True) self.quickSearch.setPlaceholderText(self.tr("Quick search")) self.quickSearch.textEdited.connect(self.quickSearchEdited) self.collectionActs.append(self.quickSearch) self.quickSearchTimer = QTimer(self) self.quickSearchTimer.setSingleShot(True) self.quickSearchTimer.timeout.connect(self.quickSearchClicked) toolBar.addWidget(self.quickSearch) self.addToolBar(toolBar) self.setWindowTitle(version.AppName) if len(sys.argv) > 1: fileName = sys.argv[1] else: latest = LatestCollections(self) fileName = latest.latest() self.collection = Collection(self) self.openCollection(fileName) self.setCentralWidget(self.viewTab) settings = QSettings() pageIndex = settings.value('tabwindow/page', 0) if pageIndex is not None: self.viewTab.setCurrentIndex(int(pageIndex)) geometry = settings.value('mainwindow/geometry') if geometry: self.restoreGeometry(geometry) winState = settings.value('mainwindow/winState') if winState: self.restoreState(winState) self.autoUpdate()
def __init__(self, model, parent=None): super().__init__(parent, Qt.WindowCloseButtonHint | Qt.WindowSystemMenuHint) self.setWindowIcon(createIcon('colnect.png')) self.setWindowTitle("Colnect") fields = model.fields settings = Settings() self.lang = settings['colnect_locale'] self.autoclose = settings['colnect_autoclose'] layout = QFormLayout() layout.setRowWrapPolicy(QFormLayout.WrapLongRows) self.colnectLabel = QLabel( self.tr("Catalog information courtesy of" " <a href=\"https://colnect.com/\">Colnect</a>," " an online collectors community.")) self.colnectLabel.setTextFormat(Qt.RichText) self.colnectLabel.setTextInteractionFlags(Qt.TextBrowserInteraction) self.colnectLabel.setOpenExternalLinks(True) font = self.colnectLabel.font() font.setPointSize(11) self.colnectLabel.setFont(font) layout.addRow(self.colnectLabel) layout.addRow(QWidget()) categories = (('coins', self.tr("Coins")), ('banknotes', self.tr("Banknotes")), ('stamps', self.tr("Stamps"))) self.categorySelector = QComboBox() self.categorySelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) for category in categories: self.categorySelector.addItem(category[1], category[0]) layout.addRow(self.tr("Category"), self.categorySelector) self.categorySelector.currentIndexChanged.connect(self.categoryChanged) self.countrySelector = QComboBox() self.countrySelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.countrySelector.setSizeAdjustPolicy(QComboBox.AdjustToContents) self.countrySelector.currentIndexChanged.connect(self.countryChanged) layout.addRow(fields.getCustomTitle('country'), self.countrySelector) self.distributionSelector = QComboBox() self.distributionSelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.distributionSelector.setSizeAdjustPolicy( QComboBox.AdjustToContents) self.distributionSelector.currentIndexChanged.connect(self.partChanged) layout.addRow(fields.getCustomTitle('type'), self.distributionSelector) self.seriesSelector = QComboBox() self.seriesSelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.seriesSelector.setSizeAdjustPolicy(QComboBox.AdjustToContents) self.seriesSelector.currentIndexChanged.connect(self.partChanged) layout.addRow(fields.getCustomTitle('series'), self.seriesSelector) self.yearSelector = QComboBox() self.yearSelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.yearSelector.currentIndexChanged.connect(self.partChanged) self.yearSelector.setSizeAdjustPolicy(QComboBox.AdjustToContents) layout.addRow(fields.getCustomTitle('year'), self.yearSelector) self.valueSelector = QComboBox() self.valueSelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.valueSelector.setSizeAdjustPolicy(QComboBox.AdjustToContents) self.valueSelector.currentIndexChanged.connect(self.partChanged) layout.addRow(fields.getCustomTitle('value'), self.valueSelector) self.currencySelector = QComboBox() self.currencySelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.currencySelector.setSizeAdjustPolicy(QComboBox.AdjustToContents) self.currencySelector.currentIndexChanged.connect(self.partChanged) layout.addRow(fields.getCustomTitle('unit'), self.currencySelector) self.parts = (self.seriesSelector, self.distributionSelector, self.yearSelector, self.valueSelector, self.currencySelector) self.table = QTableWidget(self) self.table.doubleClicked.connect(self.tableClicked) self.table.setColumnCount(9) self.table.setSelectionBehavior(QAbstractItemView.SelectRows) self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table.horizontalHeader().sectionDoubleClicked.connect( self.sectionDoubleClicked) font = self.table.horizontalHeader().font() font.setBold(True) self.table.horizontalHeader().setFont(font) self.table.verticalHeader().setVisible(False) self.table.verticalHeader().setDefaultSectionSize(self.HEIGHT + 2) self.table.setColumnWidth(0, self.HEIGHT + 6) self.table.setColumnWidth(1, self.HEIGHT + 6) field_names = ('obverseimg', 'reverseimg', 'title', 'series', 'year', 'type', 'material', 'value', 'unit') field_titles = [] for field_name in field_names: title = fields.getCustomTitle(field_name) field_titles.append(title) self.table.setHorizontalHeaderLabels(field_titles) self.addButton = QPushButton(self.tr("Add")) self.addButton.setEnabled(False) self.addCloseButton = QPushButton(self.tr("Add and close")) self.addCloseButton.setEnabled(False) if self.autoclose: self.addCloseButton.setDefault(True) else: self.addButton.setDefault(True) self.previewButton = QPushButton(self.tr("Preview")) self.previewButton.setEnabled(False) self.previewButton.clicked.connect(self.preview) self.label = QLabel(self.tr("Specify more parameters"), self) self.label_empty = QLabel(self.tr("Nothing found"), self) self.label_empty.hide() previewBox = QHBoxLayout() previewBox.setAlignment(Qt.AlignLeft | Qt.AlignTop) previewBox.addWidget(self.previewButton) previewBox.addWidget(self.label) previewBox.addWidget(self.label_empty) buttonBox = QDialogButtonBox(Qt.Horizontal, self) buttonBox.addButton(self.addButton, QDialogButtonBox.ActionRole) buttonBox.addButton(self.addCloseButton, QDialogButtonBox.ActionRole) buttonBox.addButton(QDialogButtonBox.Close) buttonBox.clicked.connect(self.clicked) self.table.hide() vlayout = QVBoxLayout() vlayout.addLayout(layout) vlayout.addLayout(previewBox) vlayout.addWidget(self.table) vlayout.addWidget(buttonBox) self.setLayout(vlayout) self._partsEnable(False) self.model = model self.settings = model.settings self.items = [] default_category = self.settings['colnect_category'] default_country = self.settings['colnect_country'] self.colnect = ColnectConnector(self) index = self.categorySelector.findData(default_category) self.categorySelector.setCurrentIndex(index) self.categoryChanged(0) index = self.countrySelector.findData(default_country) if index >= 0: self.countrySelector.setCurrentIndex(index) self.countryChanged(0)
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(createIcon('main.ico')) self.createStatusBar() menubar = self.menuBar() self.collectionActs = [] settingsAct = QAction(createIcon('cog.png'), self.tr("Settings..."), self) settingsAct.triggered.connect(self.settingsEvent) cancelFilteringAct = QAction(createIcon('funnel.png'), self.tr("Clear all filters"), self) cancelFilteringAct.triggered.connect(self.cancelFilteringEvent) self.collectionActs.append(cancelFilteringAct) self.exitAct = QAction(createIcon('door_in.png'), self.tr("E&xit"), self) self.exitAct.setShortcut(QKeySequence.Quit) self.exitAct.triggered.connect(self.close) newCollectionAct = QAction(self.tr("&New..."), self) newCollectionAct.triggered.connect(self.newCollectionEvent) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) openCollectionAct = QAction(icon, self.tr("&Open..."), self) openCollectionAct.setShortcut(QKeySequence.Open) openCollectionAct.triggered.connect(self.openCollectionEvent) backupCollectionAct = QAction( createIcon('database_backup.png'), self.tr("Backup"), self) backupCollectionAct.triggered.connect(self.backupCollectionEvent) self.collectionActs.append(backupCollectionAct) vacuumCollectionAct = QAction( createIcon('compress.png'), self.tr("Vacuum"), self) vacuumCollectionAct.triggered.connect(self.vacuumCollectionEvent) self.collectionActs.append(vacuumCollectionAct) descriptionCollectionAct = QAction(self.tr("Description"), self) descriptionCollectionAct.triggered.connect( self.descriptionCollectionEvent) self.collectionActs.append(descriptionCollectionAct) passwordCollectionAct = QAction(createIcon('key.png'), self.tr("Set password..."), self) passwordCollectionAct.triggered.connect(self.passwordCollectionEvent) self.collectionActs.append(passwordCollectionAct) importMenu = QMenu(self.tr("Import"), self) self.collectionActs.append(importMenu) if ImportNumizmat.isAvailable(): importNumizmatAct = QAction( createIcon('numizmat.ico'), self.tr("Numizmat 2.1"), self) importNumizmatAct.triggered.connect(self.importNumizmat) self.collectionActs.append(importNumizmatAct) importMenu.addAction(importNumizmatAct) if ImportCabinet.isAvailable(): importCabinetAct = QAction( createIcon('cabinet.ico'), self.tr("Cabinet 2.2.2.1, 2013"), self) importCabinetAct.triggered.connect(self.importCabinet) self.collectionActs.append(importCabinetAct) importMenu.addAction(importCabinetAct) if ImportCoinsCollector.isAvailable(): importCoinsCollectorAct = QAction( createIcon('CoinsCollector.ico'), self.tr("CoinsCollector 2.6"), self) importCoinsCollectorAct.triggered.connect( self.importCoinsCollector) self.collectionActs.append(importCoinsCollectorAct) importMenu.addAction(importCoinsCollectorAct) if ImportCoinManage.isAvailable(): importCoinManageAct = QAction( createIcon('CoinManage.ico'), self.tr("CoinManage 2011"), self) importCoinManageAct.triggered.connect(self.importCoinManage) self.collectionActs.append(importCoinManageAct) importMenu.addAction(importCoinManageAct) if ImportCollectionStudio.isAvailable(): importCollectionStudioAct = QAction( createIcon('CollectionStudio.ico'), self.tr("Collection Studio 3.65"), self) importCollectionStudioAct.triggered.connect( self.importCollectionStudio) self.collectionActs.append(importCollectionStudioAct) importMenu.addAction(importCollectionStudioAct) if ImportTellico.isAvailable(): importTellicoAct = QAction( createIcon('tellico.png'), self.tr("Tellico"), self) importTellicoAct.triggered.connect( self.importTellico) self.collectionActs.append(importTellicoAct) importMenu.addAction(importTellicoAct) if ImportNumizmatik_Ru.isAvailable(): importNumizmaticRuAct = QAction( createIcon('Numizmatik_Ru.ico'), self.tr("Numizmatik_Ru 1.0.0.82"), self) importNumizmaticRuAct.triggered.connect(self.importNumizmatik_Ru) self.collectionActs.append(importNumizmaticRuAct) importMenu.addAction(importNumizmaticRuAct) if ImportUcoin.isAvailable(): importUcoinAct = QAction( createIcon('ucoin.png'), self.tr("uCoin.net"), self) importUcoinAct.triggered.connect(self.importUcoin) self.collectionActs.append(importUcoinAct) importMenu.addAction(importUcoinAct) exportMenu = QMenu(self.tr("Export"), self) self.collectionActs.append(exportMenu) exportMobileAct = QAction(self.tr("For Android version"), self) exportMobileAct.triggered.connect(self.exportMobile) self.collectionActs.append(exportMobileAct) exportMenu.addAction(exportMobileAct) file = menubar.addMenu(self.tr("&File")) file.addAction(newCollectionAct) file.addAction(openCollectionAct) file.addSeparator() file.addAction(backupCollectionAct) file.addAction(vacuumCollectionAct) file.addAction(passwordCollectionAct) file.addAction(descriptionCollectionAct) file.addSeparator() file.addMenu(importMenu) file.addSeparator() file.addMenu(exportMenu) file.addSeparator() self.latestActions = [] self.__updateLatest(file) file.addAction(settingsAct) file.addSeparator() file.addAction(self.exitAct) addCoinAct = QAction(createIcon('add.png'), self.tr("Add"), self) addCoinAct.setShortcut('Insert') addCoinAct.triggered.connect(self.addCoin) self.collectionActs.append(addCoinAct) editCoinAct = QAction(createIcon('pencil.png'), self.tr("Edit..."), self) editCoinAct.triggered.connect(self.editCoin) self.collectionActs.append(editCoinAct) style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) deleteCoinAct = QAction(icon, self.tr("Delete"), self) deleteCoinAct.setShortcut(QKeySequence.Delete) deleteCoinAct.triggered.connect(self.deleteCoin) self.collectionActs.append(deleteCoinAct) copyCoinAct = QAction(createIcon('page_copy.png'), self.tr("Copy"), self) copyCoinAct.setShortcut(QKeySequence.Copy) copyCoinAct.triggered.connect(self.copyCoin) self.collectionActs.append(copyCoinAct) pasteCoinAct = QAction(createIcon('page_paste.png'), self.tr("Paste"), self) pasteCoinAct.setShortcut(QKeySequence.Paste) pasteCoinAct.triggered.connect(self.pasteCoin) self.collectionActs.append(pasteCoinAct) coin = menubar.addMenu(self.tr("Coin")) self.collectionActs.append(coin) coin.addAction(addCoinAct) coin.addAction(editCoinAct) coin.addSeparator() coin.addAction(copyCoinAct) coin.addAction(pasteCoinAct) coin.addSeparator() coin.addAction(deleteCoinAct) viewBrowserAct = QAction(createIcon('page_white_world.png'), self.tr("View in browser"), self) viewBrowserAct.triggered.connect(self.viewBrowser) self.collectionActs.append(viewBrowserAct) self.viewTab = TabView(self) actions = self.viewTab.actions() listMenu = menubar.addMenu(self.tr("List")) self.collectionActs.append(listMenu) listMenu.addAction(actions['new']) listMenu.addMenu(actions['open']) listMenu.aboutToShow.connect(self.viewTab.updateOpenPageMenu) listMenu.addAction(actions['rename']) listMenu.addSeparator() listMenu.addAction(actions['select']) listMenu.addSeparator() listMenu.addAction(actions['close']) listMenu.addAction(actions['remove']) self.referenceMenu = menubar.addMenu(self.tr("Reference")) reportAct = QAction(self.tr("Report..."), self) reportAct.setShortcut(Qt.CTRL + Qt.Key_P) reportAct.triggered.connect(self.report) self.collectionActs.append(reportAct) saveTableAct = QAction(createIcon('table.png'), self.tr("Save current list..."), self) saveTableAct.triggered.connect(self.saveTable) self.collectionActs.append(saveTableAct) report = menubar.addMenu(self.tr("Report")) self.collectionActs.append(report) report.addAction(reportAct) report.addAction(saveTableAct) report.addAction(viewBrowserAct) helpAct = QAction(createIcon('help.png'), self.tr("Online help"), self) helpAct.setShortcut(QKeySequence.HelpContents) helpAct.triggered.connect(self.onlineHelp) checkUpdatesAct = QAction(self.tr("Check for updates"), self) checkUpdatesAct.triggered.connect(self.manualUpdate) aboutAct = QAction(self.tr("About %s") % version.AppName, self) aboutAct.triggered.connect(self.about) help_ = menubar.addMenu(self.tr("&Help")) help_.addAction(helpAct) help_.addSeparator() help_.addAction(checkUpdatesAct) help_.addSeparator() help_.addAction(aboutAct) toolBar = QToolBar(self.tr("Toolbar"), self) toolBar.setMovable(False) toolBar.addAction(openCollectionAct) toolBar.addSeparator() toolBar.addAction(addCoinAct) toolBar.addAction(editCoinAct) toolBar.addAction(viewBrowserAct) toolBar.addSeparator() toolBar.addAction(cancelFilteringAct) toolBar.addSeparator() toolBar.addAction(settingsAct) self.addToolBar(toolBar) self.setWindowTitle(version.AppName) self.reference = Reference(self) self.reference.open(Settings()['reference']) if len(sys.argv) > 1: fileName = sys.argv[1] else: latest = LatestCollections(self) fileName = latest.latest() self.collection = Collection(self.reference, self) self.openCollection(fileName) self.setCentralWidget(self.viewTab) settings = QSettings() pageIndex = settings.value('tabwindow/page') if pageIndex != None: self.viewTab.setCurrentIndex(int(pageIndex)) if settings.value('mainwindow/maximized') == 'true': self.showMaximized() size = settings.value('mainwindow/maximizedsize') else: size = settings.value('mainwindow/size') if size: self.resize(size) self.autoUpdate()
def __init__(self, statisticsParam, parent=None): super().__init__(parent) self.statisticsParam = statisticsParam layout = QHBoxLayout() layout.setContentsMargins(QMargins()) layout.setAlignment(Qt.AlignTop) ctrlLayout = QVBoxLayout() ctrlLayout.setAlignment(Qt.AlignTop) widget = self.__layoutToWidget(ctrlLayout) widget.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) layout.addWidget(widget) self.chartLayout = QVBoxLayout() self.chartLayout.setContentsMargins(QMargins()) layout.addWidget(self.__layoutToWidget(self.chartLayout)) self.chart = QWidget(self) self.chartLayout.addWidget(self.chart) self.chartSelector = QComboBox(self) self.chartSelector.addItem(self.tr("Bar"), 'bar') self.chartSelector.addItem(self.tr("Horizontal bar"), 'barh') self.chartSelector.addItem(self.tr("Pie"), 'pie') self.chartSelector.addItem(self.tr("Stacked bar"), 'stacked') self.chartSelector.addItem(self.tr("Progress"), 'progress') if importedQtWebKit and gmapsAvailable: self.chartSelector.addItem(self.tr("GeoChart"), 'geochart') ctrlLayout.addWidget(QLabel(self.tr("Chart:"))) ctrlLayout.addWidget(self.chartSelector) self.fieldLabel = QLabel(self.tr("Field:")) ctrlLayout.addWidget(self.fieldLabel) self.fieldSelector = QComboBox(self) ctrlLayout.addWidget(self.fieldSelector) self.subfieldLabel = QLabel(self.tr("Additional field:")) ctrlLayout.addWidget(self.subfieldLabel) self.subfieldSelector = QComboBox(self) ctrlLayout.addWidget(self.subfieldSelector) self.periodLabel = QLabel(self.tr("Sum per:")) ctrlLayout.addWidget(self.periodLabel) self.periodSelector = QComboBox(self) self.periodSelector.addItem(self.tr("Year"), 'year') self.periodSelector.addItem(self.tr("Month"), 'month') self.periodSelector.addItem(self.tr("Week"), 'week') self.periodSelector.addItem(self.tr("Day"), 'day') ctrlLayout.addWidget(self.periodSelector) self.itemsLabel = QLabel(self.tr("Items:")) ctrlLayout.addWidget(self.itemsLabel) self.itemsSelector = QComboBox(self) self.itemsSelector.addItem(self.tr("Count"), 'count') self.itemsSelector.addItem(self.tr("Price"), 'price') self.itemsSelector.addItem(self.tr("Total price"), 'totalprice') self.itemsSelector.addItem(self.tr("Created"), 'created') ctrlLayout.addWidget(self.itemsSelector) self.colorCheck = QCheckBox(self.tr("Multicolor"), self) ctrlLayout.addWidget(self.colorCheck) self.regionLabel = QLabel(self.tr("Region:")) ctrlLayout.addWidget(self.regionLabel) self.regionSelector = QComboBox(self) self.regionSelector.addItem(self.tr("All"), "'world'") self.regionSelector.addItem(self.tr("Europe"), "'150'") self.regionSelector.addItem(self.tr("Africa"), "'002'") self.regionSelector.addItem(self.tr("Americas"), "'019'") self.regionSelector.addItem(self.tr("Asia"), "'142'") self.regionSelector.addItem(self.tr("Oceania"), "'009'") ctrlLayout.addWidget(self.regionSelector) saveButton = QPushButton() icon = createIcon("save.png") saveButton.setIcon(icon) saveButton.setIconSize(QSize(16, 16)) saveButton.setToolTip(self.tr("Save chart")) saveButton.setFixedWidth(25) ctrlLayout.addSpacing(1000) ctrlLayout.addWidget(saveButton) saveButton.clicked.connect(self.save) self.setLayout(layout)
def setupActions(self): # Navigation self.navGroup = QActionGroup(self) self.navGroup.setExclusive(False) self.nextPageAction = self.navGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Next page")) self.prevPageAction = self.navGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Previous page")) self.firstPageAction = self.navGroup.addAction(QApplication.translate("QPrintPreviewDialog", "First page")) self.lastPageAction = self.navGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Last page")) self.qt_setupActionIcon(self.nextPageAction, "go-next") self.qt_setupActionIcon(self.prevPageAction, "go-previous") self.qt_setupActionIcon(self.firstPageAction, "go-first") self.qt_setupActionIcon(self.lastPageAction, "go-last") self.navGroup.triggered.connect(self._q_navigate) self.fitGroup = QActionGroup(self) self.fitWidthAction = self.fitGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Fit width")) self.fitPageAction = self.fitGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Fit page")) self.fitWidthAction.setCheckable(True) self.fitPageAction.setCheckable(True) self.qt_setupActionIcon(self.fitWidthAction, "fit-width") self.qt_setupActionIcon(self.fitPageAction, "fit-page") self.fitGroup.triggered.connect(self._q_fit) # Zoom self.zoomGroup = QActionGroup(self) self.zoomInAction = self.zoomGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Zoom in")) self.zoomOutAction = self.zoomGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Zoom out")) self.qt_setupActionIcon(self.zoomInAction, "zoom-in") self.qt_setupActionIcon(self.zoomOutAction, "zoom-out") # Portrait/Landscape self.orientationGroup = QActionGroup(self) self.portraitAction = self.orientationGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Portrait")) self.landscapeAction = self.orientationGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Landscape")) self.portraitAction.setCheckable(True) self.landscapeAction.setCheckable(True) self.qt_setupActionIcon(self.portraitAction, "layout-portrait") self.qt_setupActionIcon(self.landscapeAction, "layout-landscape") self.portraitAction.triggered.connect(self.preview.setPortraitOrientation) self.landscapeAction.triggered.connect(self.preview.setLandscapeOrientation) # Display mode self.modeGroup = QActionGroup(self) self.singleModeAction = self.modeGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Show single page")) self.facingModeAction = self.modeGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Show facing pages")) self.overviewModeAction = self.modeGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Show overview of all pages")) self.singleModeAction.setCheckable(True) self.facingModeAction.setCheckable(True) self.overviewModeAction.setCheckable(True) self.qt_setupActionIcon(self.singleModeAction, "view-page-one") self.qt_setupActionIcon(self.facingModeAction, "view-page-sided") self.qt_setupActionIcon(self.overviewModeAction, "view-page-multi") self.modeGroup.triggered.connect(self._q_setMode) # Print self.printerGroup = QActionGroup(self) self.printAction = self.printerGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Print")) self.pageSetupAction = self.printerGroup.addAction(QApplication.translate("QPrintPreviewDialog", "Page setup")) self.qt_setupActionIcon(self.printAction, "print") self.qt_setupActionIcon(self.pageSetupAction, "page-setup") self.printAction.triggered.connect(self._q_print) self.pageSetupAction.triggered.connect(self._q_pageSetup) # Export self.exportGroup = QActionGroup(self) if exportToWordAvailable: self.wordAction = self.exportGroup.addAction( createIcon('Document_Microsoft_Word.png'), self.tr("Save as MS Word document")) self.htmlAction = self.exportGroup.addAction( createIcon('Web_HTML.png'), self.tr("Save as HTML files")) self.pdfAction = self.exportGroup.addAction( createIcon('Adobe_PDF_Document.png'), self.tr("Save as PDF file")) self.exportGroup.triggered.connect(self._q_export) # Initial state: self.fitPageAction.setChecked(True) self.singleModeAction.setChecked(True) if self.preview.orientation() == QPrinter.Portrait: self.portraitAction.setChecked(True) else: self.landscapeAction.setChecked(True)
def __init__(self): QMainWindow.__init__(self) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowIcon(createIcon('main.ico')) self.createStatusBar() menubar = self.menuBar() self.collectionActs = [] if statisticsAvailable: self.statisticsAct = QAction(self) self.updateStatisticsAct(False) self.statisticsAct.triggered.connect(self.statisticsEvent) self.collectionActs.append(self.statisticsAct) summaryAct = QAction(self.tr("Summary"), self) summaryAct.triggered.connect(self.summaryEvent) self.collectionActs.append(summaryAct) settingsAct = QAction(createIcon('cog.png'), self.tr("Settings..."), self) settingsAct.triggered.connect(self.settingsEvent) self.collectionActs.append(settingsAct) cancelFilteringAct = QAction(createIcon('funnel.png'), self.tr("Clear all filters"), self) cancelFilteringAct.triggered.connect(self.cancelFilteringEvent) self.collectionActs.append(cancelFilteringAct) self.exitAct = QAction(createIcon('door_in.png'), self.tr("E&xit"), self) self.exitAct.setShortcut(QKeySequence.Quit) self.exitAct.triggered.connect(self.close) newCollectionAct = QAction(self.tr("&New..."), self) newCollectionAct.triggered.connect(self.newCollectionEvent) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) openCollectionAct = QAction(icon, self.tr("&Open..."), self) openCollectionAct.setShortcut(QKeySequence.Open) openCollectionAct.triggered.connect(self.openCollectionEvent) backupCollectionAct = QAction(createIcon('database_backup.png'), self.tr("Backup"), self) backupCollectionAct.triggered.connect(self.backupCollectionEvent) self.collectionActs.append(backupCollectionAct) vacuumCollectionAct = QAction(createIcon('compress.png'), self.tr("Vacuum"), self) vacuumCollectionAct.triggered.connect(self.vacuumCollectionEvent) self.collectionActs.append(vacuumCollectionAct) descriptionCollectionAct = QAction(self.tr("Description"), self) descriptionCollectionAct.triggered.connect( self.descriptionCollectionEvent) self.collectionActs.append(descriptionCollectionAct) passwordCollectionAct = QAction(createIcon('key.png'), self.tr("Set password..."), self) passwordCollectionAct.triggered.connect(self.passwordCollectionEvent) self.collectionActs.append(passwordCollectionAct) importMenu = QMenu(self.tr("Import"), self) self.collectionActs.append(importMenu) if ImportExcel.isAvailable(): importExcelAct = QAction(createIcon('excel.png'), self.tr("Excel"), self) importExcelAct.triggered.connect(self.importExcel) self.collectionActs.append(importExcelAct) importMenu.addAction(importExcelAct) if ImportNumizmat.isAvailable(): importNumizmatAct = QAction(createIcon('numizmat.png'), self.tr("Numizmat 2.1"), self) importNumizmatAct.triggered.connect(self.importNumizmat) self.collectionActs.append(importNumizmatAct) importMenu.addAction(importNumizmatAct) if ImportCabinet.isAvailable(): importCabinetAct = QAction(createIcon('cabinet.png'), self.tr("Cabinet 2.2.2.1, 2013"), self) importCabinetAct.triggered.connect(self.importCabinet) self.collectionActs.append(importCabinetAct) importMenu.addAction(importCabinetAct) if ImportCoinsCollector.isAvailable(): importCoinsCollectorAct = QAction(createIcon('CoinsCollector.png'), self.tr("CoinsCollector 2.6"), self) importCoinsCollectorAct.triggered.connect( self.importCoinsCollector) self.collectionActs.append(importCoinsCollectorAct) importMenu.addAction(importCoinsCollectorAct) if ImportCoinManage.isAvailable(): importCoinManageAct = QAction(createIcon('CoinManage.png'), self.tr("CoinManage 2011"), self) importCoinManageAct.triggered.connect(self.importCoinManage) self.collectionActs.append(importCoinManageAct) importMenu.addAction(importCoinManageAct) if ImportCollectionStudio.isAvailable(): importCollectionStudioAct = QAction( createIcon('CollectionStudio.png'), self.tr("Collection Studio 3.65"), self) importCollectionStudioAct.triggered.connect( self.importCollectionStudio) self.collectionActs.append(importCollectionStudioAct) importMenu.addAction(importCollectionStudioAct) if ImportNumizmatik_Ru.isAvailable(): importNumizmaticRuAct = QAction(createIcon('Numizmatik_Ru.png'), self.tr("Numizmatik_Ru 1.0.0.82"), self) importNumizmaticRuAct.triggered.connect(self.importNumizmatik_Ru) self.collectionActs.append(importNumizmaticRuAct) importMenu.addAction(importNumizmaticRuAct) if ImportUcoin2.isAvailable(): importUcoinAct = QAction(createIcon('ucoin.png'), self.tr("uCoin.net"), self) importUcoinAct.triggered.connect(self.importUcoin2) self.collectionActs.append(importUcoinAct) importMenu.addAction(importUcoinAct) elif ImportUcoin.isAvailable(): importUcoinAct = QAction(createIcon('ucoin.png'), self.tr("uCoin.net"), self) importUcoinAct.triggered.connect(self.importUcoin) self.collectionActs.append(importUcoinAct) importMenu.addAction(importUcoinAct) if ImportTellico.isAvailable(): importTellicoAct = QAction(createIcon('tellico.png'), self.tr("Tellico"), self) importTellicoAct.triggered.connect(self.importTellico) self.collectionActs.append(importTellicoAct) importMenu.addAction(importTellicoAct) mergeCollectionAct = QAction(createIcon('refresh.png'), self.tr("Synchronize..."), self) mergeCollectionAct.triggered.connect(self.mergeCollectionEvent) self.collectionActs.append(mergeCollectionAct) exportMenu = QMenu(self.tr("Export"), self) self.collectionActs.append(exportMenu) exportMobileAct = QAction(self.tr("For Android version"), self) exportMobileAct.triggered.connect(self.exportMobile) self.collectionActs.append(exportMobileAct) exportMenu.addAction(exportMobileAct) file = menubar.addMenu(self.tr("&File")) file.addAction(newCollectionAct) file.addAction(openCollectionAct) file.addSeparator() file.addAction(backupCollectionAct) file.addAction(vacuumCollectionAct) file.addAction(passwordCollectionAct) file.addAction(descriptionCollectionAct) file.addSeparator() file.addMenu(importMenu) file.addAction(mergeCollectionAct) file.addSeparator() file.addMenu(exportMenu) file.addSeparator() self.latestActions = [] self.__updateLatest(file) file.addAction(settingsAct) file.addSeparator() file.addAction(self.exitAct) addCoinAct = QAction(createIcon('add.png'), self.tr("Add"), self) addCoinAct.setShortcut('Insert') addCoinAct.triggered.connect(self.addCoin) self.collectionActs.append(addCoinAct) editCoinAct = QAction(createIcon('pencil.png'), self.tr("Edit..."), self) editCoinAct.triggered.connect(self.editCoin) self.collectionActs.append(editCoinAct) style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) deleteCoinAct = QAction(icon, self.tr("Delete"), self) deleteCoinAct.setShortcut(QKeySequence.Delete) deleteCoinAct.triggered.connect(self.deleteCoin) self.collectionActs.append(deleteCoinAct) copyCoinAct = QAction(createIcon('page_copy.png'), self.tr("Copy"), self) copyCoinAct.setShortcut(QKeySequence.Copy) copyCoinAct.triggered.connect(self.copyCoin) self.collectionActs.append(copyCoinAct) pasteCoinAct = QAction(createIcon('page_paste.png'), self.tr("Paste"), self) pasteCoinAct.setShortcut(QKeySequence.Paste) pasteCoinAct.triggered.connect(self.pasteCoin) self.collectionActs.append(pasteCoinAct) coin = menubar.addMenu(self.tr("Coin")) self.collectionActs.append(coin) coin.addAction(addCoinAct) coin.addAction(editCoinAct) coin.addSeparator() coin.addAction(copyCoinAct) coin.addAction(pasteCoinAct) coin.addSeparator() coin.addAction(deleteCoinAct) viewBrowserAct = QAction(createIcon('page_white_world.png'), self.tr("View in browser"), self) viewBrowserAct.triggered.connect(self.viewBrowser) self.collectionActs.append(viewBrowserAct) self.viewTab = TabView(self) actions = self.viewTab.actions() listMenu = menubar.addMenu(self.tr("List")) self.collectionActs.append(listMenu) listMenu.addAction(actions['new']) listMenu.addMenu(actions['open']) listMenu.aboutToShow.connect(self.viewTab.updateOpenPageMenu) listMenu.addAction(actions['rename']) listMenu.addSeparator() listMenu.addAction(actions['select']) listMenu.addSeparator() listMenu.addAction(actions['close']) listMenu.addAction(actions['remove']) self.referenceMenu = menubar.addMenu(self.tr("Reference")) self.collectionActs.append(self.referenceMenu) reportAct = QAction(self.tr("Report..."), self) reportAct.setShortcut(Qt.CTRL + Qt.Key_P) reportAct.triggered.connect(self.report) self.collectionActs.append(reportAct) saveTableAct = QAction(createIcon('table.png'), self.tr("Save current list..."), self) saveTableAct.triggered.connect(self.saveTable) self.collectionActs.append(saveTableAct) report = menubar.addMenu(self.tr("Report")) self.collectionActs.append(report) report.addAction(reportAct) report.addAction(saveTableAct) report.addAction(viewBrowserAct) if statisticsAvailable: report.addSeparator() report.addAction(self.statisticsAct) report.addAction(summaryAct) helpAct = QAction(createIcon('help.png'), self.tr("User manual"), self) helpAct.setShortcut(QKeySequence.HelpContents) helpAct.triggered.connect(self.onlineHelp) webAct = QAction(self.tr("Visit web-site"), self) webAct.triggered.connect(self.visitWeb) checkUpdatesAct = QAction(self.tr("Check for updates"), self) checkUpdatesAct.triggered.connect(self.manualUpdate) aboutAct = QAction(self.tr("About %s") % version.AppName, self) aboutAct.triggered.connect(self.about) help_ = menubar.addMenu(self.tr("&Help")) help_.addAction(helpAct) help_.addAction(webAct) help_.addSeparator() help_.addAction(checkUpdatesAct) help_.addSeparator() help_.addAction(aboutAct) toolBar = QToolBar(self.tr("Toolbar"), self) toolBar.setObjectName("Toolbar") toolBar.setMovable(False) toolBar.addAction(openCollectionAct) toolBar.addSeparator() toolBar.addAction(addCoinAct) toolBar.addAction(editCoinAct) toolBar.addAction(viewBrowserAct) toolBar.addSeparator() toolBar.addAction(cancelFilteringAct) toolBar.addSeparator() toolBar.addAction(settingsAct) if statisticsAvailable: toolBar.addSeparator() toolBar.addAction(self.statisticsAct) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) toolBar.addWidget(spacer) self.quickSearch = QLineEdit() self.quickSearch.setMaximumWidth(250) self.quickSearch.setClearButtonEnabled(True) self.quickSearch.setPlaceholderText(self.tr("Quick search")) self.quickSearch.textEdited.connect(self.quickSearchEdited) self.collectionActs.append(self.quickSearch) self.quickSearchTimer = QTimer(self) self.quickSearchTimer.setSingleShot(True) self.quickSearchTimer.timeout.connect(self.quickSearchClicked) toolBar.addWidget(self.quickSearch) self.addToolBar(toolBar) self.setWindowTitle(version.AppName) if len(sys.argv) > 1: fileName = sys.argv[1] else: latest = LatestCollections(self) fileName = latest.latest() self.collection = Collection(self) self.openCollection(fileName) self.setCentralWidget(self.viewTab) settings = QSettings() pageIndex = settings.value('tabwindow/page', 0) if pageIndex is not None: self.viewTab.setCurrentIndex(int(pageIndex)) geometry = settings.value('mainwindow/geometry') if geometry: self.restoreGeometry(geometry) winState = settings.value('mainwindow/winState') if winState: self.restoreState(winState) self.autoUpdate()
def clear(self): self.setIcon(createIcon())
def setupActions(self): # Navigation self.navGroup = QActionGroup(self) self.navGroup.setExclusive(False) self.nextPageAction = self.navGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Next page")) self.prevPageAction = self.navGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Previous page")) self.firstPageAction = self.navGroup.addAction( QApplication.translate("QPrintPreviewDialog", "First page")) self.lastPageAction = self.navGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Last page")) self.qt_setupActionIcon(self.nextPageAction, "go-next") self.qt_setupActionIcon(self.prevPageAction, "go-previous") self.qt_setupActionIcon(self.firstPageAction, "go-first") self.qt_setupActionIcon(self.lastPageAction, "go-last") self.navGroup.triggered.connect(self._q_navigate) self.fitGroup = QActionGroup(self) self.fitWidthAction = self.fitGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Fit width")) self.fitPageAction = self.fitGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Fit page")) self.fitWidthAction.setCheckable(True) self.fitPageAction.setCheckable(True) self.qt_setupActionIcon(self.fitWidthAction, "fit-width") self.qt_setupActionIcon(self.fitPageAction, "fit-page") self.fitGroup.triggered.connect(self._q_fit) # Zoom self.zoomGroup = QActionGroup(self) self.zoomInAction = self.zoomGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Zoom in")) self.zoomOutAction = self.zoomGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Zoom out")) self.qt_setupActionIcon(self.zoomInAction, "zoom-in") self.qt_setupActionIcon(self.zoomOutAction, "zoom-out") # Portrait/Landscape self.orientationGroup = QActionGroup(self) self.portraitAction = self.orientationGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Portrait")) self.landscapeAction = self.orientationGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Landscape")) self.portraitAction.setCheckable(True) self.landscapeAction.setCheckable(True) self.qt_setupActionIcon(self.portraitAction, "layout-portrait") self.qt_setupActionIcon(self.landscapeAction, "layout-landscape") self.portraitAction.triggered.connect( self.preview.setPortraitOrientation) self.landscapeAction.triggered.connect( self.preview.setLandscapeOrientation) # Display mode self.modeGroup = QActionGroup(self) self.singleModeAction = self.modeGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Show single page")) self.facingModeAction = self.modeGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Show facing pages")) self.overviewModeAction = self.modeGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Show overview of all pages")) self.singleModeAction.setCheckable(True) self.facingModeAction.setCheckable(True) self.overviewModeAction.setCheckable(True) self.qt_setupActionIcon(self.singleModeAction, "view-page-one") self.qt_setupActionIcon(self.facingModeAction, "view-page-sided") self.qt_setupActionIcon(self.overviewModeAction, "view-page-multi") self.modeGroup.triggered.connect(self._q_setMode) # Print self.printerGroup = QActionGroup(self) self.printAction = self.printerGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Print")) self.pageSetupAction = self.printerGroup.addAction( QApplication.translate("QPrintPreviewDialog", "Page setup")) self.qt_setupActionIcon(self.printAction, "print") self.qt_setupActionIcon(self.pageSetupAction, "page-setup") self.printAction.triggered.connect(self._q_print) self.pageSetupAction.triggered.connect(self._q_pageSetup) # Export self.exportGroup = QActionGroup(self) if exportToWordAvailable: self.wordAction = self.exportGroup.addAction( createIcon('Document_Microsoft_Word.png'), self.tr("Save as MS Word document")) self.htmlAction = self.exportGroup.addAction( createIcon('Web_HTML.png'), self.tr("Save as HTML files")) self.pdfAction = self.exportGroup.addAction( createIcon('Adobe_PDF_Document.png'), self.tr("Save as PDF file")) self.exportGroup.triggered.connect(self._q_export) # Initial state: self.fitPageAction.setChecked(True) self.singleModeAction.setChecked(True) if self.preview.orientation() == QPrinter.Portrait: self.portraitAction.setChecked(True) else: self.landscapeAction.setChecked(True)
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(createIcon('main.ico')) self.createStatusBar() menubar = self.menuBar() self.collectionActs = [] settingsAct = QAction(createIcon('cog.png'), self.tr("Settings..."), self) settingsAct.triggered.connect(self.settingsEvent) cancelFilteringAct = QAction(createIcon('funnel.png'), self.tr("Clear all filters"), self) cancelFilteringAct.triggered.connect(self.cancelFilteringEvent) self.collectionActs.append(cancelFilteringAct) self.exitAct = QAction(createIcon('door_in.png'), self.tr("E&xit"), self) self.exitAct.setShortcut(QKeySequence.Quit) self.exitAct.triggered.connect(self.close) newCollectionAct = QAction(self.tr("&New..."), self) newCollectionAct.triggered.connect(self.newCollectionEvent) style = QApplication.style() icon = style.standardIcon(QStyle.SP_DialogOpenButton) openCollectionAct = QAction(icon, self.tr("&Open..."), self) openCollectionAct.setShortcut(QKeySequence.Open) openCollectionAct.triggered.connect(self.openCollectionEvent) backupCollectionAct = QAction(createIcon('database_backup.png'), self.tr("Backup"), self) backupCollectionAct.triggered.connect(self.backupCollectionEvent) self.collectionActs.append(backupCollectionAct) vacuumCollectionAct = QAction(createIcon('compress.png'), self.tr("Vacuum"), self) vacuumCollectionAct.triggered.connect(self.vacuumCollectionEvent) self.collectionActs.append(vacuumCollectionAct) descriptionCollectionAct = QAction(self.tr("Description"), self) descriptionCollectionAct.triggered.connect( self.descriptionCollectionEvent) self.collectionActs.append(descriptionCollectionAct) passwordCollectionAct = QAction(createIcon('key.png'), self.tr("Set password..."), self) passwordCollectionAct.triggered.connect(self.passwordCollectionEvent) self.collectionActs.append(passwordCollectionAct) importMenu = QMenu(self.tr("Import"), self) self.collectionActs.append(importMenu) if ImportNumizmat.isAvailable(): importNumizmatAct = QAction(createIcon('numizmat.ico'), self.tr("Numizmat 2.1"), self) importNumizmatAct.triggered.connect(self.importNumizmat) self.collectionActs.append(importNumizmatAct) importMenu.addAction(importNumizmatAct) if ImportCabinet.isAvailable(): importCabinetAct = QAction(createIcon('cabinet.ico'), self.tr("Cabinet 2.2.2.1, 2013"), self) importCabinetAct.triggered.connect(self.importCabinet) self.collectionActs.append(importCabinetAct) importMenu.addAction(importCabinetAct) if ImportCoinsCollector.isAvailable(): importCoinsCollectorAct = QAction(createIcon('CoinsCollector.ico'), self.tr("CoinsCollector 2.6"), self) importCoinsCollectorAct.triggered.connect( self.importCoinsCollector) self.collectionActs.append(importCoinsCollectorAct) importMenu.addAction(importCoinsCollectorAct) if ImportCoinManage.isAvailable(): importCoinManageAct = QAction(createIcon('CoinManage.ico'), self.tr("CoinManage 2011"), self) importCoinManageAct.triggered.connect(self.importCoinManage) self.collectionActs.append(importCoinManageAct) importMenu.addAction(importCoinManageAct) if ImportCollectionStudio.isAvailable(): importCollectionStudioAct = QAction( createIcon('CollectionStudio.ico'), self.tr("Collection Studio 3.65"), self) importCollectionStudioAct.triggered.connect( self.importCollectionStudio) self.collectionActs.append(importCollectionStudioAct) importMenu.addAction(importCollectionStudioAct) if ImportNumizmatik_Ru.isAvailable(): importNumizmaticRuAct = QAction(createIcon('Numizmatik_Ru.ico'), self.tr("Numizmatik_Ru 1.0.0.82"), self) importNumizmaticRuAct.triggered.connect(self.importNumizmatik_Ru) self.collectionActs.append(importNumizmaticRuAct) importMenu.addAction(importNumizmaticRuAct) if ImportUcoin.isAvailable(): importUcoinAct = QAction(createIcon('ucoin.png'), self.tr("uCoin.net"), self) importUcoinAct.triggered.connect(self.importUcoin) self.collectionActs.append(importUcoinAct) importMenu.addAction(importUcoinAct) mergeCollectionAct = QAction(self.tr("Add from another..."), self) mergeCollectionAct.triggered.connect(self.mergeCollectionEvent) self.collectionActs.append(mergeCollectionAct) exportMenu = QMenu(self.tr("Export"), self) self.collectionActs.append(exportMenu) exportMobileAct = QAction(self.tr("For Android version"), self) exportMobileAct.triggered.connect(self.exportMobile) self.collectionActs.append(exportMobileAct) exportMenu.addAction(exportMobileAct) file = menubar.addMenu(self.tr("&File")) file.addAction(newCollectionAct) file.addAction(openCollectionAct) file.addSeparator() file.addAction(backupCollectionAct) file.addAction(vacuumCollectionAct) file.addAction(passwordCollectionAct) file.addAction(descriptionCollectionAct) file.addSeparator() file.addMenu(importMenu) file.addAction(mergeCollectionAct) file.addSeparator() file.addMenu(exportMenu) file.addSeparator() self.latestActions = [] self.__updateLatest(file) file.addAction(settingsAct) file.addSeparator() file.addAction(self.exitAct) addCoinAct = QAction(createIcon('add.png'), self.tr("Add"), self) addCoinAct.setShortcut('Insert') addCoinAct.triggered.connect(self.addCoin) self.collectionActs.append(addCoinAct) editCoinAct = QAction(createIcon('pencil.png'), self.tr("Edit..."), self) editCoinAct.triggered.connect(self.editCoin) self.collectionActs.append(editCoinAct) style = QApplication.style() icon = style.standardIcon(QStyle.SP_TrashIcon) deleteCoinAct = QAction(icon, self.tr("Delete"), self) deleteCoinAct.setShortcut(QKeySequence.Delete) deleteCoinAct.triggered.connect(self.deleteCoin) self.collectionActs.append(deleteCoinAct) copyCoinAct = QAction(createIcon('page_copy.png'), self.tr("Copy"), self) copyCoinAct.setShortcut(QKeySequence.Copy) copyCoinAct.triggered.connect(self.copyCoin) self.collectionActs.append(copyCoinAct) pasteCoinAct = QAction(createIcon('page_paste.png'), self.tr("Paste"), self) pasteCoinAct.setShortcut(QKeySequence.Paste) pasteCoinAct.triggered.connect(self.pasteCoin) self.collectionActs.append(pasteCoinAct) coin = menubar.addMenu(self.tr("Coin")) self.collectionActs.append(coin) coin.addAction(addCoinAct) coin.addAction(editCoinAct) coin.addSeparator() coin.addAction(copyCoinAct) coin.addAction(pasteCoinAct) coin.addSeparator() coin.addAction(deleteCoinAct) viewBrowserAct = QAction(createIcon('page_white_world.png'), self.tr("View in browser"), self) viewBrowserAct.triggered.connect(self.viewBrowser) self.collectionActs.append(viewBrowserAct) self.viewTab = TabView(self) actions = self.viewTab.actions() listMenu = menubar.addMenu(self.tr("List")) self.collectionActs.append(listMenu) listMenu.addAction(actions['new']) listMenu.addMenu(actions['open']) listMenu.aboutToShow.connect(self.viewTab.updateOpenPageMenu) listMenu.addAction(actions['rename']) listMenu.addSeparator() listMenu.addAction(actions['select']) listMenu.addSeparator() listMenu.addAction(actions['close']) listMenu.addAction(actions['remove']) self.referenceMenu = menubar.addMenu(self.tr("Reference")) reportAct = QAction(self.tr("Report..."), self) reportAct.setShortcut(Qt.CTRL + Qt.Key_P) reportAct.triggered.connect(self.report) self.collectionActs.append(reportAct) saveTableAct = QAction(createIcon('table.png'), self.tr("Save current list..."), self) saveTableAct.triggered.connect(self.saveTable) self.collectionActs.append(saveTableAct) report = menubar.addMenu(self.tr("Report")) self.collectionActs.append(report) report.addAction(reportAct) report.addAction(saveTableAct) report.addAction(viewBrowserAct) helpAct = QAction(createIcon('help.png'), self.tr("Online help"), self) helpAct.setShortcut(QKeySequence.HelpContents) helpAct.triggered.connect(self.onlineHelp) checkUpdatesAct = QAction(self.tr("Check for updates"), self) checkUpdatesAct.triggered.connect(self.manualUpdate) aboutAct = QAction(self.tr("About %s") % version.AppName, self) aboutAct.triggered.connect(self.about) help_ = menubar.addMenu(self.tr("&Help")) help_.addAction(helpAct) help_.addSeparator() help_.addAction(checkUpdatesAct) help_.addSeparator() help_.addAction(aboutAct) toolBar = QToolBar(self.tr("Toolbar"), self) toolBar.setMovable(False) toolBar.addAction(openCollectionAct) toolBar.addSeparator() toolBar.addAction(addCoinAct) toolBar.addAction(editCoinAct) toolBar.addAction(viewBrowserAct) toolBar.addSeparator() toolBar.addAction(cancelFilteringAct) toolBar.addSeparator() toolBar.addAction(settingsAct) self.addToolBar(toolBar) self.setWindowTitle(version.AppName) self.reference = Reference(self) self.reference.open(Settings()['reference']) if len(sys.argv) > 1: fileName = sys.argv[1] else: latest = LatestCollections(self) fileName = latest.latest() self.collection = Collection(self.reference, self) self.openCollection(fileName) self.setCentralWidget(self.viewTab) settings = QSettings() pageIndex = settings.value('tabwindow/page') if pageIndex != None: self.viewTab.setCurrentIndex(int(pageIndex)) if settings.value('mainwindow/maximized') == 'true': self.showMaximized() size = settings.value('mainwindow/maximizedsize') else: size = settings.value('mainwindow/size') if size: self.resize(size) self.autoUpdate()