Beispiel #1
0
    def _templateChanged(self, index):
        template_name = self.templateSelector.currentText()
        dstPath = os.path.join(TemporaryDir.path(), template_name + '.htm')
        report = Report.Report(self.model, template_name, dstPath,
                               self.parent())
        self.fileName = report.generate(self.indexes, True)
        if not self.fileName:
            return

        if importedQtWebKit:
            self.webView.load(QtCore.QUrl.fromLocalFile(self.fileName))
        else:
            file = open(self.fileName, 'r', encoding='utf-8')
            html = file.read()

            basePath = QtCore.QFileInfo(self.fileName).absolutePath()
            baseUrl = QtCore.QUrl.fromLocalFile(basePath + '/')

            self.webView.setBaseUrl(baseUrl)
            self.webView.setHtml(html)
            self._loadFinished(True)
Beispiel #2
0
    def __init__(self, collection, parent=None):
        super(MainSettingsPage, self).__init__(parent)

        settings = Settings()

        layout = QFormLayout()
        layout.setRowWrapPolicy(QFormLayout.WrapLongRows)

        current = 0
        self.languageSelector = QComboBox(self)
        for i, lang in enumerate(self.Languages):
            self.languageSelector.addItem(lang[0], lang[1])
            if settings['locale'] == lang[1]:
                current = i
        self.languageSelector.setCurrentIndex(current)
        self.languageSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Language"), self.languageSelector)

        self.backupFolder = QLineEdit(self)
        self.backupFolder.setMinimumWidth(120)
        self.backupFolder.setText(settings['backup'])
        style = QApplication.style()
        icon = style.standardIcon(QStyle.SP_DirOpenIcon)
        self.backupFolderButton = QPushButton(icon, '', self)
        self.backupFolderButton.clicked.connect(self.backupButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.backupFolder)
        hLayout.addWidget(self.backupFolderButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Backup folder"), hLayout)

        self.reference = QLineEdit(self)
        self.reference.setMinimumWidth(120)
        self.reference.setText(settings['reference'])
        icon = style.standardIcon(QStyle.SP_DialogOpenButton)
        self.referenceButton = QPushButton(icon, '', self)
        self.referenceButton.clicked.connect(self.referenceButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.reference)
        hLayout.addWidget(self.referenceButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Reference"), hLayout)

        self.errorSending = QCheckBox(
                            self.tr("Send error info to author"), self)
        self.errorSending.setChecked(settings['error'])
        layout.addRow(self.errorSending)

        self.checkUpdates = QCheckBox(
                            self.tr("Automatically check for updates"), self)
        self.checkUpdates.setChecked(settings['updates'])
        layout.addRow(self.checkUpdates)

        self.imageSideLen = NumberEdit(self)
        self.imageSideLen.setMaximumWidth(60)
        layout.addRow(self.tr("Max image side len"), self.imageSideLen)
        self.imageSideLen.setText(str(settings['ImageSideLen']))

        self.freeNumeric = QCheckBox(
                            self.tr("Free format numeric fields"), self)
        self.freeNumeric.setChecked(settings['free_numeric'])
        layout.addRow(self.freeNumeric)

        self.storeSorting = QCheckBox(
                            self.tr("Store column sorting"), self)
        self.storeSorting.setChecked(settings['store_sorting'])
        layout.addRow(self.storeSorting)

        self.sortFilter = QCheckBox(
                            self.tr("Sort items in filters (slow)"), self)
        self.sortFilter.setChecked(settings['sort_filter'])
        layout.addRow(self.sortFilter)

        self.sortTree = QCheckBox(
                            self.tr("Sort items in tree (slow)"), self)
        self.sortTree.setChecked(settings['sort_tree'])
        layout.addRow(self.sortTree)

        self.imageName = QCheckBox(
                            self.tr("Point to image file rather than storing image"), self)
        self.imageName.setChecked(settings['image_name'])
        layout.addRow(self.imageName)

        self.imagePath = QLineEdit(self)
        self.imagePath.setMinimumWidth(120)
        self.imagePath.setText(settings['image_path'])
        icon = style.standardIcon(QStyle.SP_DialogOpenButton)
        self.imagePathButton = QPushButton(icon, '', self)
        self.imagePathButton.clicked.connect(self.imagePathButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.imagePath)
        hLayout.addWidget(self.imagePathButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Image Path"), hLayout)

        self.idDates = QCheckBox(
                            self.tr("Tellico import: keep ID and created/modified dates"), self)
        self.idDates.setChecked(settings['id_dates'])
        layout.addRow(self.idDates)

        current = 0
        self.templateSelector = QComboBox(self)
        for i, template in enumerate(Report.scanTemplates()):
            self.templateSelector.addItem(template)
            if settings['template'] == template:
                current = i
        self.templateSelector.setCurrentIndex(current)
        self.templateSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Default template"), self.templateSelector)

        current = 0
        self.titleFormatSelector = QComboBox(self)
        for i, titleFormat in enumerate(['default', 'US']):
            self.titleFormatSelector.addItem(titleFormat)
            if settings['title_format'] == titleFormat:
                current = i
        self.titleFormatSelector.setCurrentIndex(current)
        self.titleFormatSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Title Format"), self.titleFormatSelector)

        self.setLayout(layout)
Beispiel #3
0
    def __init__(self, collection, parent=None):
        super().__init__(parent)

        settings = Settings()

        style = QApplication.style()

        layout = QFormLayout()
        layout.setRowWrapPolicy(QFormLayout.WrapLongRows)

        current = 4
        self.languageSelector = QComboBox(self)
        for i, lang in enumerate(self.Languages):
            self.languageSelector.addItem(lang[0], lang[1])
            if settings['locale'] == lang[1]:
                current = i
        self.languageSelector.setCurrentIndex(current)
        self.languageSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Language"), self.languageSelector)

        self.reference = QLineEdit(self)
        self.reference.setMinimumWidth(120)
        self.reference.setText(settings['reference'])
        icon = style.standardIcon(QStyle.SP_DialogOpenButton)
        self.referenceButton = QPushButton(icon, '', self)
        self.referenceButton.clicked.connect(self.referenceButtonClicked)
        if collection.isReferenceAttached():
            self.reference.setDisabled(True)
            self.referenceButton.setDisabled(True)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.reference)
        hLayout.addWidget(self.referenceButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Reference"), hLayout)

        self.backupFolder = QLineEdit(self)
        self.backupFolder.setMinimumWidth(120)
        self.backupFolder.setText(settings['backup'])
        icon = style.standardIcon(QStyle.SP_DirOpenIcon)
        self.backupFolderButton = QPushButton(icon, '', self)
        self.backupFolderButton.clicked.connect(self.backupButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.backupFolder)
        hLayout.addWidget(self.backupFolderButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Backup folder"), hLayout)

        self.autobackup = QCheckBox(self.tr("Make autobackup"), self)
        self.autobackup.setChecked(settings['autobackup'])
        self.autobackup.stateChanged.connect(self.autobackupClicked)
        layout.addRow(self.autobackup)

        self.autobackupDepth = QSpinBox(self)
        self.autobackupDepth.setRange(1, 1000)
        self.autobackupDepth.setValue(settings['autobackup_depth'])
        self.autobackupDepth.setSizePolicy(QSizePolicy.Fixed,
                                           QSizePolicy.Fixed)
        layout.addRow(self.tr("Coin changes before autobackup"),
                      self.autobackupDepth)
        self.autobackupDepth.setEnabled(settings['autobackup'])

        self.errorSending = QCheckBox(self.tr("Send error info to author"),
                                      self)
        self.errorSending.setChecked(settings['error'])
        layout.addRow(self.errorSending)

        self.checkUpdates = QCheckBox(
            self.tr("Automatically check for updates"), self)
        self.checkUpdates.setChecked(settings['updates'])
        layout.addRow(self.checkUpdates)

        self.speedup = QComboBox(self)
        self.speedup.addItem(self.tr("Reliable"), 0)
        self.speedup.addItem(self.tr("Fast"), 1)
        self.speedup.addItem(self.tr("Extra fast (dangerous)"), 2)
        self.speedup.setCurrentIndex(settings['speedup'])
        self.speedup.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        layout.addRow(self.tr("Acceleration of storage"), self.speedup)

        self.checkTitle = QCheckBox(
            self.tr("Check that coin title present on save"), self)
        self.checkTitle.setChecked(settings['check_coin_title'])
        layout.addRow(self.checkTitle)

        self.checkDuplicate = QCheckBox(
            self.tr("Check coin duplicates on save"), self)
        self.checkDuplicate.setChecked(settings['check_coin_duplicate'])
        layout.addRow(self.checkDuplicate)

        current = 0
        self.templateSelector = QComboBox(self)
        for i, template in enumerate(Report.scanTemplates()):
            self.templateSelector.addItem(template[0], template[1])
            if settings['template'] == template[1]:
                current = i
        self.templateSelector.setCurrentIndex(current)
        self.templateSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Default template"), self.templateSelector)

        self.imagesByDefault = QSpinBox(self)
        self.imagesByDefault.setRange(1, 8)
        self.imagesByDefault.setValue(settings['images_by_default'])
        self.imagesByDefault.setSizePolicy(QSizePolicy.Fixed,
                                           QSizePolicy.Fixed)
        layout.addRow(self.tr("Images count by default"), self.imagesByDefault)

        current = 0
        self.mapSelector = QComboBox(self)
        self.mapSelector.addItem('OpenStreetMap')
        self.mapSelector.addItem('Google Maps')
        self.mapSelector.setCurrentIndex(settings['map_type'])
        self.mapSelector.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        layout.addRow(self.tr("Maps"), self.mapSelector)

        self.setLayout(layout)
Beispiel #4
0
    def __init__(self, model, indexes, parent=None):
        super().__init__(
            parent, Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint
            | Qt.WindowCloseButtonHint)

        self.started = False

        self.indexes = indexes
        self.model = model

        if importedQtWebKit:
            self.webView = QWebView(self)
            self.webView.setVisible(False)
            self.webView.loadFinished.connect(self._loadFinished)
        else:
            self.webView = TextDocument()

        self.printer = QPrinter()
        self.printer.setPageMargins(12.7, 10, 10, 10, QPrinter.Millimeter)
        self.preview = QPrintPreviewWidget(self.printer, self)

        self.preview.paintRequested.connect(self.paintRequested)
        self.preview.previewChanged.connect(self._q_previewChanged)
        self.setupActions()

        self.templateSelector = QComboBox(self)
        current = 0
        for i, template in enumerate(Report.scanTemplates()):
            self.templateSelector.addItem(template)
            if Settings()['template'] == template:
                current = i
        self.templateSelector.setCurrentIndex(-1)
        self.templateSelector.currentIndexChanged.connect(
            self._templateChanged)

        self.pageNumEdit = LineEdit()
        self.pageNumEdit.setAlignment(Qt.AlignRight)
        self.pageNumEdit.setSizePolicy(
            QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
        self.pageNumLabel = QLabel()
        self.pageNumEdit.editingFinished.connect(self._q_pageNumEdited)

        self.zoomFactor = QComboBox()
        self.zoomFactor.setEditable(True)
        self.zoomFactor.setMinimumContentsLength(7)
        self.zoomFactor.setInsertPolicy(QComboBox.NoInsert)
        zoomEditor = LineEdit()
        zoomEditor.setValidator(ZoomFactorValidator(1, 1000, 1, zoomEditor))
        self.zoomFactor.setLineEdit(zoomEditor)
        factorsX2 = [25, 50, 100, 200, 250, 300, 400, 800, 1600]
        for factor in factorsX2:
            self.zoomFactor.addItem("%g%%" % (factor / 2.0))
        self.zoomFactor.lineEdit().editingFinished.connect(
            self._q_zoomFactorChanged)
        self.zoomFactor.currentIndexChanged.connect(self._q_zoomFactorChanged)

        mw = QPrintPreviewMainWindow(self)
        toolbar = QToolBar(mw)

        toolbar.addWidget(self.templateSelector)
        toolbar.addSeparator()
        toolbar.addAction(self.printAction)
        toolbar.addAction(self.htmlAction)
        toolbar.addAction(self.pdfAction)
        if exportToWordAvailable:
            toolbar.addAction(self.wordAction)
        toolbar.addSeparator()
        toolbar.addAction(self.fitWidthAction)
        toolbar.addAction(self.fitPageAction)
        toolbar.addSeparator()
        toolbar.addWidget(self.zoomFactor)
        toolbar.addAction(self.zoomOutAction)
        toolbar.addAction(self.zoomInAction)
        toolbar.addSeparator()
        toolbar.addAction(self.portraitAction)
        toolbar.addAction(self.landscapeAction)
        toolbar.addSeparator()
        toolbar.addAction(self.firstPageAction)
        toolbar.addAction(self.prevPageAction)

        pageEdit = QWidget(toolbar)
        vboxLayout = QVBoxLayout()
        vboxLayout.setContentsMargins(0, 0, 0, 0)
        formLayout = QFormLayout()
        formLayout.setWidget(0, QFormLayout.LabelRole, self.pageNumEdit)
        formLayout.setWidget(0, QFormLayout.FieldRole, self.pageNumLabel)
        vboxLayout.addLayout(formLayout)
        vboxLayout.setAlignment(Qt.AlignVCenter)
        pageEdit.setLayout(vboxLayout)
        toolbar.addWidget(pageEdit)

        toolbar.addAction(self.nextPageAction)
        toolbar.addAction(self.lastPageAction)
        toolbar.addSeparator()
        toolbar.addAction(self.singleModeAction)
        toolbar.addAction(self.facingModeAction)
        toolbar.addAction(self.overviewModeAction)
        toolbar.addSeparator()
        toolbar.addAction(self.pageSetupAction)

        # Cannot use the actions' triggered signal here, since it doesn't autorepeat
        zoomInButton = toolbar.widgetForAction(self.zoomInAction)
        zoomOutButton = toolbar.widgetForAction(self.zoomOutAction)
        zoomInButton.setAutoRepeat(True)
        zoomInButton.setAutoRepeatInterval(200)
        zoomInButton.setAutoRepeatDelay(200)
        zoomOutButton.setAutoRepeat(True)
        zoomOutButton.setAutoRepeatInterval(200)
        zoomOutButton.setAutoRepeatDelay(200)
        zoomInButton.clicked.connect(self._q_zoomIn)
        zoomOutButton.clicked.connect(self._q_zoomOut)

        mw.addToolBar(toolbar)
        mw.setCentralWidget(self.preview)
        mw.setParent(self, Qt.Widget)

        topLayout = QVBoxLayout()
        topLayout.addWidget(mw)
        topLayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(topLayout)

        self.setWindowTitle(self.tr("Report preview"))

        self.preview.setFocus()

        self.templateSelector.setCurrentIndex(current)
Beispiel #5
0
 def __exportToHtml(self, fileName):
     template_name = self.templateSelector.currentText()
     report = Report.Report(self.model, template_name, fileName)
     self.fileName = report.generate(self.records, True)
Beispiel #6
0
    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()
Beispiel #7
0
    def __init__(self, model, indexes, parent=None):
        super().__init__(parent, Qt.WindowSystemMenuHint |
                         Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint)

        self.started = False

        self.indexes = indexes
        self.model = model

        if importedQtWebKit:
            self.webView = QWebView(self)
            self.webView.setVisible(False)
            self.webView.loadFinished.connect(self._loadFinished)
        else:
            self.webView = TextDocument()

        self.printer = QPrinter()
        self.printer.setPageMargins(12.7, 10, 10, 10, QPrinter.Millimeter)
        self.preview = QPrintPreviewWidget(self.printer, self)

        self.preview.paintRequested.connect(self.paintRequested)
        self.preview.previewChanged.connect(self._q_previewChanged)
        self.setupActions()

        self.templateSelector = QComboBox(self)
        current = 0
        for i, template in enumerate(Report.scanTemplates()):
            self.templateSelector.addItem(template[0], template[1])
            if Settings()['template'] == template[1]:
                current = i
        self.templateSelector.setCurrentIndex(-1)
        self.templateSelector.currentIndexChanged.connect(self._templateChanged)

        self.pageNumEdit = LineEdit()
        self.pageNumEdit.setAlignment(Qt.AlignRight)
        self.pageNumEdit.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
        self.pageNumLabel = QLabel()
        self.pageNumEdit.editingFinished.connect(self._q_pageNumEdited)

        self.zoomFactor = QComboBox()
        self.zoomFactor.setEditable(True)
        self.zoomFactor.setMinimumContentsLength(7)
        self.zoomFactor.setInsertPolicy(QComboBox.NoInsert)
        zoomEditor = LineEdit()
        zoomEditor.setValidator(ZoomFactorValidator(1, 1000, 1, zoomEditor))
        self.zoomFactor.setLineEdit(zoomEditor)
        factorsX2 = [25, 50, 100, 200, 250, 300, 400, 800, 1600]
        for factor in factorsX2:
            self.zoomFactor.addItem("%g%%" % (factor / 2.0))
        self.zoomFactor.lineEdit().editingFinished.connect(self._q_zoomFactorChanged)
        self.zoomFactor.currentIndexChanged.connect(self._q_zoomFactorChanged)

        mw = QPrintPreviewMainWindow(self)
        toolbar = QToolBar(mw)

        toolbar.addWidget(self.templateSelector)
        toolbar.addSeparator()
        toolbar.addAction(self.printAction)
        toolbar.addAction(self.htmlAction)
        toolbar.addAction(self.pdfAction)
        if exportToWordAvailable:
            toolbar.addAction(self.wordAction)
        toolbar.addSeparator()
        toolbar.addAction(self.fitWidthAction)
        toolbar.addAction(self.fitPageAction)
        toolbar.addSeparator()
        toolbar.addWidget(self.zoomFactor)
        toolbar.addAction(self.zoomOutAction)
        toolbar.addAction(self.zoomInAction)
        toolbar.addSeparator()
        toolbar.addAction(self.portraitAction)
        toolbar.addAction(self.landscapeAction)
        toolbar.addSeparator()
        toolbar.addAction(self.firstPageAction)
        toolbar.addAction(self.prevPageAction)

        pageEdit = QWidget(toolbar)
        vboxLayout = QVBoxLayout()
        vboxLayout.setContentsMargins(0, 0, 0, 0)
        formLayout = QFormLayout()
        formLayout.setWidget(0, QFormLayout.LabelRole, self.pageNumEdit)
        formLayout.setWidget(0, QFormLayout.FieldRole, self.pageNumLabel)
        vboxLayout.addLayout(formLayout)
        vboxLayout.setAlignment(Qt.AlignVCenter)
        pageEdit.setLayout(vboxLayout)
        toolbar.addWidget(pageEdit)

        toolbar.addAction(self.nextPageAction)
        toolbar.addAction(self.lastPageAction)
        toolbar.addSeparator()
        toolbar.addAction(self.singleModeAction)
        toolbar.addAction(self.facingModeAction)
        toolbar.addAction(self.overviewModeAction)
        toolbar.addSeparator()
        toolbar.addAction(self.pageSetupAction)

        # Cannot use the actions' triggered signal here, since it doesn't autorepeat
        zoomInButton = toolbar.widgetForAction(self.zoomInAction)
        zoomOutButton = toolbar.widgetForAction(self.zoomOutAction)
        zoomInButton.setAutoRepeat(True)
        zoomInButton.setAutoRepeatInterval(200)
        zoomInButton.setAutoRepeatDelay(200)
        zoomOutButton.setAutoRepeat(True)
        zoomOutButton.setAutoRepeatInterval(200)
        zoomOutButton.setAutoRepeatDelay(200)
        zoomInButton.clicked.connect(self._q_zoomIn)
        zoomOutButton.clicked.connect(self._q_zoomOut)

        mw.addToolBar(toolbar)
        mw.setCentralWidget(self.preview)
        mw.setParent(self, Qt.Widget)

        topLayout = QVBoxLayout()
        topLayout.addWidget(mw)
        topLayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(topLayout)

        self.setWindowTitle(self.tr("Report preview"))

        self.preview.setFocus()

        self.templateSelector.setCurrentIndex(current)
    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()
Beispiel #9
0
 def __exportToHtml(self, fileName):
     template = self.templateSelector.currentData()
     report = Report.Report(self.model, template, fileName)
     self.fileName = report.generate(self.indexes, True)
Beispiel #10
0
    def __init__(self, collection, parent=None):
        super(MainSettingsPage, self).__init__(parent)

        settings = Settings()

        layout = QFormLayout()
        layout.setRowWrapPolicy(QFormLayout.WrapLongRows)

        current = 0
        self.languageSelector = QComboBox(self)
        for i, lang in enumerate(self.Languages):
            self.languageSelector.addItem(lang[0], lang[1])
            if settings['locale'] == lang[1]:
                current = i
        self.languageSelector.setCurrentIndex(current)
        self.languageSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Language"), self.languageSelector)

        self.backupFolder = QLineEdit(self)
        self.backupFolder.setMinimumWidth(120)
        self.backupFolder.setText(settings['backup'])
        style = QApplication.style()
        icon = style.standardIcon(QStyle.SP_DirOpenIcon)
        self.backupFolderButton = QPushButton(icon, '', self)
        self.backupFolderButton.clicked.connect(self.backupButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.backupFolder)
        hLayout.addWidget(self.backupFolderButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Backup folder"), hLayout)

        self.reference = QLineEdit(self)
        self.reference.setMinimumWidth(120)
        self.reference.setText(settings['reference'])
        icon = style.standardIcon(QStyle.SP_DialogOpenButton)
        self.referenceButton = QPushButton(icon, '', self)
        self.referenceButton.clicked.connect(self.referenceButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.reference)
        hLayout.addWidget(self.referenceButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Reference"), hLayout)

        self.errorSending = QCheckBox(self.tr("Send error info to author"),
                                      self)
        self.errorSending.setChecked(settings['error'])
        layout.addRow(self.errorSending)

        self.checkUpdates = QCheckBox(
            self.tr("Automatically check for updates"), self)
        self.checkUpdates.setChecked(settings['updates'])
        layout.addRow(self.checkUpdates)

        self.imageSideLen = NumberEdit(self)
        self.imageSideLen.setMaximumWidth(60)
        layout.addRow(self.tr("Max image side len"), self.imageSideLen)
        self.imageSideLen.setText(str(settings['ImageSideLen']))

        self.freeNumeric = QCheckBox(self.tr("Free format numeric fields"),
                                     self)
        self.freeNumeric.setChecked(settings['free_numeric'])
        layout.addRow(self.freeNumeric)

        self.storeSorting = QCheckBox(self.tr("Store column sorting"), self)
        self.storeSorting.setChecked(settings['store_sorting'])
        layout.addRow(self.storeSorting)

        self.sortFilter = QCheckBox(self.tr("Sort items in filters (slow)"),
                                    self)
        self.sortFilter.setChecked(settings['sort_filter'])
        layout.addRow(self.sortFilter)

        self.sortTree = QCheckBox(self.tr("Sort items in tree (slow)"), self)
        self.sortTree.setChecked(settings['sort_tree'])
        layout.addRow(self.sortTree)

        current = 0
        self.templateSelector = QComboBox(self)
        for i, template in enumerate(Report.scanTemplates()):
            self.templateSelector.addItem(template)
            if settings['template'] == template:
                current = i
        self.templateSelector.setCurrentIndex(current)
        self.templateSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Default template"), self.templateSelector)

        self.setLayout(layout)
    def __init__(self, collection, parent=None):
        super().__init__(parent)

        settings = Settings()

        style = QApplication.style()

        layout = QFormLayout()
        layout.setRowWrapPolicy(QFormLayout.WrapLongRows)

        current = 4
        self.languageSelector = QComboBox(self)
        for i, lang in enumerate(self.Languages):
            self.languageSelector.addItem(lang[0], lang[1])
            if settings['locale'] == lang[1]:
                current = i
        self.languageSelector.setCurrentIndex(current)
        self.languageSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Language"), self.languageSelector)

        self.reference = QLineEdit(self)
        self.reference.setMinimumWidth(120)
        self.reference.setText(settings['reference'])
        icon = style.standardIcon(QStyle.SP_DialogOpenButton)
        self.referenceButton = QPushButton(icon, '', self)
        self.referenceButton.clicked.connect(self.referenceButtonClicked)
        if collection.isReferenceAttached():
            self.reference.setDisabled(True)
            self.referenceButton.setDisabled(True)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.reference)
        hLayout.addWidget(self.referenceButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Reference"), hLayout)

        self.backupFolder = QLineEdit(self)
        self.backupFolder.setMinimumWidth(120)
        self.backupFolder.setText(settings['backup'])
        icon = style.standardIcon(QStyle.SP_DirOpenIcon)
        self.backupFolderButton = QPushButton(icon, '', self)
        self.backupFolderButton.clicked.connect(self.backupButtonClicked)

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.backupFolder)
        hLayout.addWidget(self.backupFolderButton)
        hLayout.setContentsMargins(QMargins())

        layout.addRow(self.tr("Backup folder"), hLayout)

        self.autobackup = QCheckBox(self.tr("Make autobackup"), self)
        self.autobackup.setChecked(settings['autobackup'])
        self.autobackup.stateChanged.connect(self.autobackupClicked)
        layout.addRow(self.autobackup)

        self.autobackupDepth = QSpinBox(self)
        self.autobackupDepth.setRange(1, 1000)
        self.autobackupDepth.setValue(settings['autobackup_depth'])
        self.autobackupDepth.setSizePolicy(QSizePolicy.Fixed,
                                           QSizePolicy.Fixed)
        layout.addRow(self.tr("Coin changes before autobackup"),
                      self.autobackupDepth)
        self.autobackupDepth.setEnabled(settings['autobackup'])

        self.errorSending = QCheckBox(
                            self.tr("Send error info to author"), self)
        self.errorSending.setChecked(settings['error'])
        layout.addRow(self.errorSending)

        self.checkUpdates = QCheckBox(
                            self.tr("Automatically check for updates"), self)
        self.checkUpdates.setChecked(settings['updates'])
        layout.addRow(self.checkUpdates)

        self.speedup = QComboBox(self)
        self.speedup.addItem(self.tr("Reliable"), 0)
        self.speedup.addItem(self.tr("Fast"), 1)
        self.speedup.addItem(self.tr("Extra fast (dangerous)"), 2)
        self.speedup.setCurrentIndex(settings['speedup'])
        self.speedup.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        layout.addRow(self.tr("Acceleration of storage"), self.speedup)

        self.checkTitle = QCheckBox(
                        self.tr("Check that coin title present on save"), self)
        self.checkTitle.setChecked(settings['check_coin_title'])
        layout.addRow(self.checkTitle)

        self.checkDuplicate = QCheckBox(
                        self.tr("Check coin duplicates on save"), self)
        self.checkDuplicate.setChecked(settings['check_coin_duplicate'])
        layout.addRow(self.checkDuplicate)

        current = 0
        self.templateSelector = QComboBox(self)
        for i, template in enumerate(Report.scanTemplates()):
            self.templateSelector.addItem(template[0], template[1])
            if settings['template'] == template[1]:
                current = i
        self.templateSelector.setCurrentIndex(current)
        self.templateSelector.setSizePolicy(QSizePolicy.Fixed,
                                            QSizePolicy.Fixed)

        layout.addRow(self.tr("Default template"), self.templateSelector)

        self.imagesByDefault = QSpinBox(self)
        self.imagesByDefault.setRange(1, 8)
        self.imagesByDefault.setValue(settings['images_by_default'])
        self.imagesByDefault.setSizePolicy(QSizePolicy.Fixed,
                                           QSizePolicy.Fixed)
        layout.addRow(self.tr("Images count by default"), self.imagesByDefault)

        current = 0
        self.mapSelector = QComboBox(self)
        self.mapSelector.addItem('OpenStreetMap')
        self.mapSelector.addItem('Google Maps')
        self.mapSelector.setCurrentIndex(settings['map_type'])
        self.mapSelector.setSizePolicy(QSizePolicy.Fixed,
                                       QSizePolicy.Fixed)
        layout.addRow(self.tr("Maps"), self.mapSelector)

        self.verifySsl = QCheckBox(
                        self.tr("Verify SSL certifiacte"), self)
        self.verifySsl.setChecked(settings['verify_ssl'])
        layout.addRow(self.verifySsl)

        self.setLayout(layout)