コード例 #1
0
class ViewerEditor(QStackedWidget):
    def __init__(self, parentWindow):
        QStackedWidget.__init__(self)
        self.__parentWindow = parentWindow
        self.__note = Note()

        self.__webNote = QWebView()
        webPage = self.__webNote.page()
        webPage.settings().setObjectCacheCapacities(0, 0, 0)
        webPage.action(QWebPage.Reload).setVisible(False)
        webPage.networkAccessManager().proxyAuthenticationRequired.connect(
            self.__onProxyAuthenticationRequired)
        self.updateProxy()
        # noinspection PyUnresolvedReferences
        self.__webNote.loadFinished.connect(self.updateHighlight)
        self.addWidget(self.__webNote)

        self.__editorNote = Editor(parentWindow, self.__onConfirm,
                                   self.__onCancel)
        self.addWidget(self.__editorNote)

    def noteUuid(self):
        return self.__note.uuid

    def view(self, note):
        self.__parentWindow.clearError()
        self.setCurrentIndex(0)
        self.__webNote.setHtml(note.html, rc.url())
        self.__note = note

    def edit(self, note=None):
        self.__parentWindow.clearError()
        if note:
            self.__note = note
        self.setCurrentIndex(1)
        self.__editorNote.edit(self.__note)

    def isAllowedToChange(self):
        return self.__editorNote.isAllowedToChange() if self.currentIndex(
        ) == 1 else True

    def updateProxy(self):
        config = self.__parentWindow.config()
        if config.getProxyHost():
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy,
                                  config.getProxyHost(), config.getProxyPort())
        else:
            proxy = QNetworkProxy()
        self.__webNote.page().networkAccessManager().setProxy(proxy)

    def updateHighlight(self):
        if self.currentIndex() != 0:
            return
        self.__webNote.findText(None, QWebPage.HighlightAllOccurrences)
        highlight = self.__parentWindow.textFilter()
        if highlight:
            for word in filter(lambda w: len(w) > 0, highlight.split(" ")):
                self.__webNote.findText(word, QWebPage.HighlightAllOccurrences)

    def __onConfirm(self, note):
        parent = self.__parentWindow
        if not note.title:
            parent.showError("A title is required")
            raise ValidationError

        noteProvider = parent.noteProvider()
        if note.uuid:
            noteProvider.update(renderHtml(note))
        else:
            note.uuid = newUuid()
            note.createdOn = note.lastModified
            noteProvider.add(renderHtml(note))
        self.__note = note
        parent.reload(True, True)
        parent.showStatus("Note saved")

    def __onCancel(self):
        self.view(self.__note)

    # noinspection PyUnusedLocal
    def __onProxyAuthenticationRequired(self, proxy, authenticator):
        config = self.__parentWindow.config()
        if config.getProxyUser():
            authenticator.setUser(config.getProxyUser())
            authenticator.setPassword(config.getProxyPassword())
コード例 #2
0
ファイル: ui.py プロジェクト: vijo/sqink
class ViewerEditor(QStackedWidget):

    def __init__(self, parentWindow):
        QStackedWidget.__init__(self)
        self.__parentWindow= parentWindow
        self.__note= Note()

        self.__webNote= QWebView()
        webPage= self.__webNote.page()
        webPage.settings().setObjectCacheCapacities(0, 0, 0)
        webPage.action(QWebPage.Reload).setVisible(False)
        webPage.networkAccessManager().proxyAuthenticationRequired.connect(self.__onProxyAuthenticationRequired)
        self.updateProxy()
        self.__webNote.loadFinished.connect(self.updateHighlight)
        self.addWidget(self.__webNote)

        self.__editorNote= Editor(parentWindow, self.__onConfirm, self.__onCancel)
        self.addWidget(self.__editorNote)

    def noteUuid(self):
        return self.__note.uuid

    def view(self, note):
        self.__parentWindow.clearError()
        self.setCurrentIndex(0)
        self.__webNote.setHtml(note.html, rc.url())
        self.__note= note

    def edit(self, note=None):
        self.__parentWindow.clearError()
        if note:
            self.__note= note
        self.setCurrentIndex(1)
        self.__editorNote.edit(self.__note)

    def isAllowedToChange(self):
        return self.__editorNote.isAllowedToChange() if self.currentIndex() == 1 else True

    def updateProxy(self):
        config= self.__parentWindow.config()
        if config.getProxyHost():
            proxy= QNetworkProxy(QNetworkProxy.HttpProxy, config.getProxyHost(), config.getProxyPort())
        else:
            proxy= QNetworkProxy()
        self.__webNote.page().networkAccessManager().setProxy(proxy)

    def updateHighlight(self):
        if self.currentIndex() != 0:
            return
        self.__webNote.findText(None, QWebPage.HighlightAllOccurrences)
        highlight= self.__parentWindow.textFilter()
        if highlight:
            for word in filter(lambda w: len(w) > 0, highlight.split(" ")):
                self.__webNote.findText(word, QWebPage.HighlightAllOccurrences)

    def __onConfirm(self, note):
        parent= self.__parentWindow
        if not note.title:
            parent.showError("A title is required")
            raise ValidationError

        noteProvider= parent.noteProvider()
        if note.uuid:
            noteProvider.update(renderHtml(note))
        else:
            note.uuid= uuid()
            note.createdOn= note.lastModified
            noteProvider.add(renderHtml(note))
        self.__note= note
        parent.reload(True, True)
        parent.showStatus("Note saved")

    def __onCancel(self):
        self.view(self.__note)

    def __onProxyAuthenticationRequired(self, proxy, authenticator):
        config= self.__parentWindow.config()
        if config.getProxyUser():
            authenticator.setUser(config.getProxyUser())
            authenticator.setPassword(config.getProxyPassword())