Example #1
0
def render_html(path_to_html, width=590, height=750, as_xhtml=True):
    from PyQt5.QtWebKitWidgets import QWebPage
    from PyQt5.Qt import QEventLoop, QPalette, Qt, QUrl, QSize
    from calibre.gui2 import is_ok_to_use_qt, secure_web_page
    if not is_ok_to_use_qt():
        return None
    path_to_html = os.path.abspath(path_to_html)
    with CurrentDir(os.path.dirname(path_to_html)):
        page = QWebPage()
        settings = page.settings()
        secure_web_page(settings)
        pal = page.palette()
        pal.setBrush(QPalette.Background, Qt.white)
        page.setPalette(pal)
        page.setViewportSize(QSize(width, height))
        page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)
        page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
        loop = QEventLoop()
        renderer = HTMLRenderer(page, loop)
        page.loadFinished.connect(renderer, type=Qt.QueuedConnection)
        if as_xhtml:
            page.mainFrame().setContent(open(path_to_html, 'rb').read(),
                    'application/xhtml+xml', QUrl.fromLocalFile(path_to_html))
        else:
            page.mainFrame().load(QUrl.fromLocalFile(path_to_html))
        loop.exec_()
    renderer.loop = renderer.page = None
    page.loadFinished.disconnect()
    del page
    del loop
    if isinstance(renderer.exception, ParserError) and as_xhtml:
        return render_html(path_to_html, width=width, height=height,
                as_xhtml=False)
    return renderer
Example #2
0
    def test02_check_scene1_webpage(self):
        """render exported web page and check page capture"""

        html_path = outputPath("scene1.html")

        url = QUrl.fromLocalFile(html_path)
        url = QUrl(url.toString() + "#cx=-20&cy=16&cz=-34&tx=-2&ty=0&tz=8")

        loop = QEventLoop()
        page = QWebPage()
        page.setViewportSize(QSize(OUT_WIDTH, OUT_HEIGHT))
        page.loadFinished.connect(loop.quit)
        page.mainFrame().setUrl(url)
        loop.exec_()

        page.mainFrame().evaluateJavaScript('document.getElementById("progress").style.display = "none";')

        timer = QTimer()
        timer.timeout.connect(loop.quit)
        timer.start(100)
        while page.mainFrame().evaluateJavaScript("app.loadingManager.isLoading"):
            loop.exec_()

        timer.stop()

        image = QImage(OUT_WIDTH, OUT_HEIGHT, QImage.Format_ARGB32_Premultiplied)
        painter = QPainter(image)
        page.mainFrame().render(painter)
        painter.end()

        filename = "scene1_qwebpage.png"
        image.save(outputPath(filename))
        assert QImage(outputPath(filename)) == QImage(expectedDataPath(filename)), "captured image is different from expected."
Example #3
0
    def __init__(self, parent, size, url):
        super(GISCloudQgisWebBrowserDialog,
              self).__init__(parent.manager.main_widget)
        self.parent = parent
        self.setModal(True)

        self.cookies = None
        self.url = QUrl(url)
        self.nam = QtNetwork.QNetworkAccessManager()

        self.web_page = QWebPage()
        self.web_page.setNetworkAccessManager(self.nam)
        self.web_page.loadFinished.connect(self.loading_finished)

        def customuseragent(url):
            """setting up our own user agent"""
            # pylint: disable=W0613
            return ("Mozilla/5.0 " + GISCloudNetworkHandler.app_id.encode(
                "unicode_escape").decode("latin-1"))

        self.web_page.userAgentForUrl = customuseragent

        self.web_view = QWebView(self)
        self.web_view.setPage(self.web_page)

        self.resize(size)
Example #4
0
    def __init__(self, callback, xpos, ypos, width, height):
        super(Window, self).__init__()

        self._xpos = xpos
        self._ypos = ypos
        self._width = width
        self._height = height
        self._callback = callback

        self.setStyleSheet(
            "QWidget { background-color : #1B1D1E; color : #FFFFFF;  }")
        self.setAsBar()

        view = QWebView(self)
        view.setContextMenuPolicy(Qt.CustomContextMenu)
        view.statusBarMessage.connect(self.qt_statusbar_callback)

        layout = QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(view)

        view.setPage(QWebPage())
        view.setHtml(
            htmltemplate(self._width, self._height,
                         "bottom" if ypos == 0 else "top"))

        self.view = view
        self.updateContent.connect(self.handle_updateContent)
Example #5
0
    def __init__(self, player, playlist, trackInfoList, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        view = QWebView(self)

        view.resize(800, 600)
        #для перехвата post
        page = QWebPage()
        self.qplayer = QPLAYER_COMMAND(player, playlist, trackInfoList)
        page.mainFrame().addToJavaScriptWindowObject("qplayer", self.qplayer)
        page.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
        view.setPage(page)

        with open(URL + "index.html", "rb") as f:
            template = Template(f.read().decode("utf8"))
        template_compos = ""
        #генерируем список воспроизведения
        for name in trackInfoList:
            template_compos += """
			<div class="composition" onclick="select_music(%s, this)" valued="%s">
			 <div class="picture" >
				 <div class="picture-play">
					 <div class="picture-play-span">
						 <span class="glyphicon glyphicon-play"></span>
					 </div>
				 </div>
			 </div>
			 <div class="composition_text">%s</div>
			</div>""" % (str(name[1] - 1), str(name[1] - 1),
                "<span class='number'>" + str(name[1]) + "</span> " + name[0])

        view.setHtml(template.render(URL=URL, COMPOS=template_compos),
                     QUrl("file:///" + URL))
        self.setWindowTitle('VK Player')
        self.setWindowIcon(
            QIcon(os.path.dirname(os.path.abspath(__file__)) + "./icon.png"))
Example #6
0
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent object (QObject)
        """
        super(PageThumbnailer, self).__init__(parent)

        self.__page = QWebPage(self)
        self.__size = QSize(231, 130)
        self.__loadTitle = False
        self.__title = ""
        self.__url = QUrl()

        self.__proxy = NetworkAccessManagerProxy(self)
        import Helpviewer.HelpWindow
        self.__proxy.setPrimaryNetworkAccessManager(
            Helpviewer.HelpWindow.HelpWindow.networkAccessManager())
        self.__page.setNetworkAccessManager(self.__proxy)

        self.__page.mainFrame().setScrollBarPolicy(Qt.Horizontal,
                                                   Qt.ScrollBarAlwaysOff)
        self.__page.mainFrame().setScrollBarPolicy(Qt.Vertical,
                                                   Qt.ScrollBarAlwaysOff)

        # Full HD
        # Every page should fit in this resolution
        self.__page.setViewportSize(QSize(1920, 1080))
Example #7
0
 def createWindow(self, QWebEnginePage_WebWindowType):
     new_webview = QWebView()
     page = QWebPage()
     new_webview.setPage(page)
     win = MainWin()
     win.setCentralWidget(new_webview)
     self.windowList.append(win)  # 注:没有这句会崩溃!!!
     return new_webview
Example #8
0
def webpage(qnam):
    """Get a new QWebPage object."""
    from PyQt5.QtWebKitWidgets import QWebPage

    page = QWebPage()
    page.networkAccessManager().deleteLater()
    page.setNetworkAccessManager(qnam)
    return page
Example #9
0
    def __init__(self):
        self.network_manager = QNetworkAccessManager()
        self.network_manager.createRequest = self._create_request
        self.network_manager.finished.connect(self._request_finished)

        self.web_page = QWebPage()
        self.web_page.setNetworkAccessManager(self.network_manager)

        self.web_view = QWebView()
        self.web_view.setPage(self.web_page)
Example #10
0
    def __init__(self):
        super(FrameCapture, self).__init__()

        self._percent = 0
        self._page = QWebPage()
        self._page.mainFrame().setScrollBarPolicy(Qt.Vertical,
                                                  Qt.ScrollBarAlwaysOff)
        self._page.mainFrame().setScrollBarPolicy(Qt.Horizontal,
                                                  Qt.ScrollBarAlwaysOff)
        self._page.loadProgress.connect(self.printProgress)
        self._page.loadFinished.connect(self.saveResult)
Example #11
0
    def __init__(self, html, base_dir, width, height, dpi, factor):
        '''
        `width, height`: page width and height in pixels
        `base_dir`: The directory in which the HTML file that contains the table resides
        '''
        QObject.__init__(self)

        self.app = None
        self.width, self.height, self.dpi = width, height, dpi
        self.base_dir = base_dir
        self.images = []
        self.tdir = tempfile.mkdtemp(prefix='calibre_render_table')
        self.loop = QEventLoop()
        self.page = QWebPage()
        self.page.loadFinished.connect(self.render_html)
        self.page.mainFrame().setTextSizeMultiplier(factor)
        self.page.mainFrame().setHtml(
            html, QUrl('file:' + os.path.abspath(self.base_dir)))
Example #12
0
 def init_widgets(self):
     self.w.main_tab_widget.setCurrentIndex(0)
     self.w.slider_jog_linear.setMaximum(INFO.MAX_LINEAR_JOG_VEL)
     self.w.slider_jog_linear.setValue(INFO.DEFAULT_LINEAR_JOG_VEL)
     self.w.slider_jog_angular.setMaximum(INFO.MAX_ANGULAR_JOG_VEL)
     self.w.slider_jog_angular.setValue(INFO.DEFAULT_ANGULAR_JOG_VEL)
     self.w.slider_feed_ovr.setMaximum(INFO.MAX_FEED_OVERRIDE)
     self.w.slider_feed_ovr.setValue(100)
     self.w.slider_spindle_ovr.setMinimum(INFO.MIN_SPINDLE_OVERRIDE)
     self.w.slider_spindle_ovr.setMaximum(INFO.MAX_SPINDLE_OVERRIDE)
     self.w.slider_spindle_ovr.setValue(100)
     self.w.chk_override_limits.setChecked(False)
     self.w.chk_override_limits.setEnabled(False)
     self.w.lbl_maxv_percent.setText("100 %")
     self.w.lbl_max_rapid.setText(str(self.max_linear_velocity))
     self.w.lbl_home_x.setText(
         INFO.get_error_safe_setting('JOINT_0', 'HOME', "50"))
     self.w.lbl_home_y.setText(
         INFO.get_error_safe_setting('JOINT_1', 'HOME', "50"))
     self.w.cmb_gcode_history.addItem("No File Loaded")
     self.w.cmb_gcode_history.wheelEvent = lambda event: None
     self.w.jogincrements_linear.wheelEvent = lambda event: None
     self.w.jogincrements_angular.wheelEvent = lambda event: None
     self.w.gcode_editor.hide()
     self.w.filemanager.table.setShowGrid(False)
     self.w.filemanager_usb.table.setShowGrid(False)
     self.w.tooloffsetview.setShowGrid(False)
     self.w.offset_table.setShowGrid(False)
     self.w.divider_line.hide()
     # move clock to statusbar
     self.w.statusbar.addPermanentWidget(self.w.lbl_clock)
     #set up gcode list
     self.gcodes.setup_list()
     # set up web page viewer
     self.web_view = QWebView()
     self.web_page = QWebPage()
     self.web_page.setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
     self.web_view.setPage(self.web_page)
     self.w.layout_setup.addWidget(self.web_view)
     # set up spindle gauge
     self.w.gauge_spindle.set_max_value(self.max_spindle_rpm)
     self.w.gauge_spindle.set_max_reading(self.max_spindle_rpm / 1000)
     self.w.gauge_spindle.set_threshold(self.min_spindle_rpm)
     self.w.gauge_spindle.set_label("RPM")
Example #13
0
def _init_user_agent():
    global parsed_user_agent
    ua = QWebPage().userAgentForUrl(QUrl())
    parsed_user_agent = websettings.UserAgent.parse(ua)
Example #14
0
 def createWindow(self, webWindowType):
     self.popup = QWebPage()
     return self.popup
Example #15
0
html = '''<html>
<head>
    <title>Plotly Example</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
    <body>
    %(plot_content)s
    </body>
</html>'''

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)

    page = QWebPage()
    pScene = QGraphicsScene()
    pView = QGraphicsView(pScene)
    pView.setFrameShape(QFrame.NoFrame)
    pView.setViewport(QGLWidget())

    pWebview = QGraphicsWebView()
    pWebview.setPage(page)

    pWebview.setResizesToContents(True)

    plot_content = plots.plot3d()
    pWebview.setHtml(html % {'plot_content': plot_content})

    pScene.addItem(pWebview)
    pScene.setSceneRect(0, 0, 900, 700)
Example #16
0
 def __init__(self, webview, *args, **kwargs):
     super(MMyWebPage, self).__init__(*args, **kwargs)
     self.webview = webview
     self.webpage = QWebPage()
     self.webpage.loadFinished.connect(self.on_loadFinished)