WebBrowser/WebBrowserPage.py

changeset 5534
f9368ecf153a
parent 5530
93f95c4b3153
child 5587
ea526b78ee6c
--- a/WebBrowser/WebBrowserPage.py	Sun Feb 19 19:57:28 2017 +0100
+++ b/WebBrowser/WebBrowserPage.py	Mon Feb 20 19:27:37 2017 +0100
@@ -310,27 +310,30 @@
         else:
             request.reject()
     
-    def printPage(self, printer):
+    def execPrintPage(self, printer, timeout=1000):
         """
-        Public method to print the current page.
-        
-        Note: This is just a wrapper around QWebEnginePage.print() to ensure
-        the printer object is available until the print job finished.
+        Public method to execute a synchronous print.
         
         @param printer reference to the printer object
         @type QPrinter
-        """
-        self.__printer = printer
-        self.print(self.__printer, self.__printFinished)
-    
-    def __printFinished(self, ok):
+        @param timeout timeout value in milliseconds
+        @type int
+        @return flag indicating a successful print job
+        @rtype bool
         """
-        Private method called when the print job finished.
+        loop = QEventLoop()
+        resultDict = {"res": None}
+        QTimer.singleShot(timeout, loop.quit)
         
-        @param ok flag indicating a successful print
-        @type bool
-        """
-        self.__printer = None
+        def printCallback(res, resDict=resultDict):
+            if loop and loop.isRunning():
+                resDict["res"] = res
+                loop.quit()
+        
+        self.print(printer, printCallback)
+        
+        loop.exec_()
+        return resultDict["res"]
     
     ##############################################
     ## Methods below deal with JavaScript messages

eric ide

mercurial