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