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())
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())