Helpviewer/HelpBrowserWV.py

changeset 1953
26aa6fd94dc2
parent 1952
af4103f0e93f
child 1960
d8c45fe8a1b9
equal deleted inserted replaced
1952:af4103f0e93f 1953:26aa6fd94dc2
7 """ 7 """
8 Module implementing the helpbrowser using QWebView. 8 Module implementing the helpbrowser using QWebView.
9 """ 9 """
10 10
11 from PyQt4.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, QUrl, \ 11 from PyQt4.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, QUrl, \
12 QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, QRect, QFile, QPoint 12 QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, QRect, QFile, QPoint, \
13 QByteArray
13 from PyQt4.QtGui import qApp, QDesktopServices, QStyle, QMenu, QApplication, \ 14 from PyQt4.QtGui import qApp, QDesktopServices, QStyle, QMenu, QApplication, \
14 QInputDialog, QLineEdit, QClipboard, QMouseEvent, QLabel, QToolTip, QColor, \ 15 QInputDialog, QLineEdit, QClipboard, QMouseEvent, QLabel, QToolTip, QColor, \
15 QPalette, QFrame, QPrinter, QPrintDialog, QDialog 16 QPalette, QFrame, QPrinter, QPrintDialog, QDialog
16 from PyQt4.QtWebKit import QWebView, QWebPage, QWebSettings 17 from PyQt4.QtWebKit import QWebView, QWebPage, QWebSettings
17 try: 18 try:
189 @param request reference to the request object (QNetworkRequest) 190 @param request reference to the request object (QNetworkRequest)
190 @param type_ type of the navigation request (QWebPage.NavigationType) 191 @param type_ type of the navigation request (QWebPage.NavigationType)
191 @return flag indicating acceptance (boolean) 192 @return flag indicating acceptance (boolean)
192 """ 193 """
193 self.__lastRequest = request 194 self.__lastRequest = request
194 self.__lastRequestType = type_ 195 if self.__lastRequest.url() != request.url() or \
196 type_ != QWebPage.NavigationTypeOther:
197 self.__lastRequestType = type_
195 198
196 scheme = request.url().scheme() 199 scheme = request.url().scheme()
197 if scheme == "mailto": 200 if scheme == "mailto":
198 QDesktopServices.openUrl(request.url()) 201 QDesktopServices.openUrl(request.url())
199 return False 202 return False
218 221
219 @param request reference to the network request object (QNetworkRequest) 222 @param request reference to the network request object (QNetworkRequest)
220 """ 223 """
221 try: 224 try:
222 request.setAttribute(QNetworkRequest.User + 100, self) 225 request.setAttribute(QNetworkRequest.User + 100, self)
223 request.setAttribute(QNetworkRequest.User + 101, self.__lastRequestType) 226 if self.__lastRequest.url() == request.url():
227 request.setAttribute(QNetworkRequest.User + 101, self.__lastRequestType)
228 if self.__lastRequestType == QWebPage.NavigationTypeLinkClicked:
229 request.setRawHeader("X-Eric5-UserLoadAction", QByteArray("1"))
224 except TypeError: 230 except TypeError:
225 pass 231 pass
226 232
227 def pageAttributeId(self): 233 def pageAttributeId(self):
228 """ 234 """
605 self.__rss = [] 611 self.__rss = []
606 612
607 self.__clickedFrame = None 613 self.__clickedFrame = None
608 614
609 self.mw.personalInformationManager().connectPage(self.page()) 615 self.mw.personalInformationManager().connectPage(self.page())
616 self.mw.greaseMonkeyManager().connectPage(self.page())
610 617
611 self.grabGesture(Qt.PinchGesture) 618 self.grabGesture(Qt.PinchGesture)
612 619
613 def __addExternalBinding(self, frame=None): 620 def __addExternalBinding(self, frame=None):
614 """ 621 """
676 Private slot to track a change of the current search engine. 683 Private slot to track a change of the current search engine.
677 """ 684 """
678 if self.url().toString() == "eric:home": 685 if self.url().toString() == "eric:home":
679 self.reload() 686 self.reload()
680 687
681 def setSource(self, name): 688 def setSource(self, name, requestData=None):
682 """ 689 """
683 Public method used to set the source to be displayed. 690 Public method used to set the source to be displayed.
684 691
685 @param name filename to be shown (QUrl) 692 @param name filename to be shown (QUrl)
686 """ 693 @param requestData tuple containing the request data (QNetworkRequest,
687 if name is None or not name.isValid(): 694 QNetworkAccessManager.Operation, QByteArray)
688 return 695 """
696 if (name is None or not name.isValid()) and requestData is None:
697 return
698
699 if name is None and requestData is not None:
700 name = requestData[0].url()
689 701
690 if self.ctrlPressed: 702 if self.ctrlPressed:
691 # open in a new window 703 # open in a new window
692 self.mw.newTab(name) 704 self.mw.newTab(name)
693 self.ctrlPressed = False 705 self.ctrlPressed = False
745 self.trUtf8("eric5 Web Browser"), 757 self.trUtf8("eric5 Web Browser"),
746 self.trUtf8("""<p>Could not start a viewer""" 758 self.trUtf8("""<p>Could not start a viewer"""
747 """ for file <b>{0}</b>.</p>""").format(name.path())) 759 """ for file <b>{0}</b>.</p>""").format(name.path()))
748 return 760 return
749 761
750 self.load(name) 762 if requestData is not None:
763 self.load(*requestData)
764 else:
765 self.load(name)
751 766
752 def source(self): 767 def source(self):
753 """ 768 """
754 Public method to return the URL of the loaded page. 769 Public method to return the URL of the loaded page.
755 770

eric ide

mercurial