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 |