Пример #1
0
    def __init__(self, appPath):
        QWidget.__init__(self)
        global rc
        rc = ResourceCache(normpath(appPath + "/resources"))

        self.__config = Config(appPath)
        self.__noteProvider = SqliteNoteProvider(
            normpath(appPath + "/resources/notes/notes.db"))
        self.__remoteNoteProvider = None
        self.__notes = []
        self.__tags = []

        self.setWindowTitle("Scroll, Quill & INK   " + version)
        self.setMinimumSize(400, 240)
        self.resize(800, 600)

        icon = QIcon()
        icon.addPixmap(rc.pixmap("sqink-16x16.png"))
        icon.addPixmap(rc.pixmap("sqink-32x32.png"))
        self.setWindowIcon(icon)

        layout = QVBoxLayout()
        layout.setContentsMargins(5, 5, 5, 2)
        self.setLayout(layout)

        splitter = QSplitter()
        splitter.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        # noinspection PyCallByClass,PyTypeChecker
        splitter.setStyle(QStyleFactory.create("Cleanlooks"))
        layout.addWidget(splitter)

        self.__statusBar = QStatusBar()
        self.__statusBar.setSizeGripEnabled(False)
        layout.addWidget(self.__statusBar)

        self.__lblNotesCount = QLabel()
        self.__lblNotesCount.setStyleSheet("border:1px solid #b2dfdb; border-radius:0.5em; background-color:#b2dfdb;" +\
                                           " padding:0 0.5em;")
        self.__statusBar.addPermanentWidget(self.__lblNotesCount)

        self.__lblError = QLabel()
        self.__lblError.setStyleSheet(
            "border-radius:0.5em; background-color:#f36c60; padding:0 0.5em;")
        self.__lblError.setVisible(False)
        self.__statusBar.addWidget(self.__lblError)

        panelA = QWidget()
        splitter.addWidget(panelA)
        layoutA = QGridLayout()
        layoutA.setContentsMargins(0, 0, 0, 0)
        panelA.setLayout(layoutA)

        barButtons = QWidget()
        layoutButtons = QHBoxLayout()
        layoutButtons.setContentsMargins(0, 0, 0, 0)
        barButtons.setLayout(layoutButtons)
        layoutA.addWidget(barButtons, 0, 0, 1, 2)

        btnNew = QPushButton()
        btnNew.setIcon(rc.icon("note-new-16x16.png"))
        btnNew.setToolTip("New note (CTRL + N)")
        # noinspection PyUnresolvedReferences
        btnNew.clicked.connect(self.__onNewNoteClicked)
        btnNew.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_N))
        layoutButtons.addWidget(btnNew)

        self.__btnEdit = QPushButton()
        self.__btnEdit.setIcon(rc.icon("note-edit-16x16.png"))
        self.__btnEdit.setToolTip("Edit note (CTRL + E)")
        # noinspection PyUnresolvedReferences
        self.__btnEdit.clicked.connect(self.__onEditNoteClicked)
        self.__btnEdit.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_E))
        layoutButtons.addWidget(self.__btnEdit)

        self.__btnDelete = QPushButton()
        self.__btnDelete.setIcon(rc.icon("note-delete-16x16.png"))
        self.__btnDelete.setToolTip("Delete note (CTRL + L)")
        # noinspection PyUnresolvedReferences
        self.__btnDelete.clicked.connect(self.__onDeleteNoteClicked)
        self.__btnDelete.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_L))
        layoutButtons.addWidget(self.__btnDelete)

        layoutButtons.addStretch(1)

        self.__btnSync = QPushButton()
        self.__btnSync.setIcon(rc.icon("sync-16x16.png"))
        self.__btnSync.setToolTip("Sync (CTRL + I)")
        # noinspection PyUnresolvedReferences
        self.__btnSync.clicked.connect(self.__onSyncClicked)
        self.__btnSync.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_I))
        layoutButtons.addWidget(self.__btnSync)

        btnConfig = QPushButton()
        btnConfig.setIcon(rc.icon("preferences-16x16.png"))
        btnConfig.setToolTip("Preferences")
        # noinspection PyUnresolvedReferences
        btnConfig.clicked.connect(self.__onPreferencesClicked)
        layoutButtons.addWidget(btnConfig)

        lblSearch = QLabel()
        lblSearch.setPixmap(rc.pixmap("search-16x16.png"))
        lblSearch.setToolTip("Find (CTRL + F)")
        layoutA.addWidget(lblSearch, 1, 0)

        self.__txtSearch = QLineEdit()
        self.__txtSearch.setValidator(
            QRegExpValidator(
                QRegExp("[A-ZÁÉÍÓÚÜÑa-záéíóúüñ0-9 @:/#&=\.\-\?\\\\]+")))
        # noinspection PyUnresolvedReferences
        self.__txtSearch.textEdited.connect(self.__onSearchEdited)
        QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self.__txtSearch,
                  self.__txtSearch.setFocus)
        layoutA.addWidget(self.__txtSearch, 1, 1)

        lblTag = QLabel()
        lblTag.setPixmap(rc.pixmap("tag-16x16.png"))
        lblTag.setToolTip("Filter by tag (CTRL + T)")
        layoutA.addWidget(lblTag, 2, 0)

        self.__cmbTag = QComboBox()
        # noinspection PyUnresolvedReferences
        self.__cmbTag.activated.connect(self.__onTagFilterSelectionChanged)
        QShortcut(QKeySequence(Qt.CTRL + Qt.Key_T), self.__cmbTag,
                  self.__onTagFilterShortcutPressed)
        layoutA.addWidget(self.__cmbTag, 2, 1)

        self.__lstNotes = ListWidget(self.__onDeleteNoteClicked)
        self.__lstNotes.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Expanding)
        self.__lstNotes.setItemDelegate(ListItemDelegate())
        # noinspection PyUnresolvedReferences
        self.__lstNotes.itemSelectionChanged.connect(
            self.__onNoteSelectionChanged)
        layoutA.addWidget(self.__lstNotes, 3, 0, 1, 2)

        self.__viewerEditor = ViewerEditor(self)
        splitter.addWidget(self.__viewerEditor)

        self.configureSync()
        self.reload()
        self.__txtSearch.setFocus()