コード例 #1
0
ファイル: xlfview.py プロジェクト: kongwonkeun/RdtCms
class TextMediaView(MediaView):
    def __init__(self, media, parent):
        super(TextMediaView, self).__init__(media, parent)
        self.widget = QWebEngineView(parent)
        self.widget.setGeometry(media['geometry'])
        self.set_default_widget_prop()
        self.widget.setDisabled(True)

    @Slot()
    def play(self):
        self.finished = 0
        path = '%s/%s_%s_%s.html' % (self.save_dir, self.layout_id,
                                     self.region_id, self.id)
        self.widget.load('file:///' + path)
        self.widget.show()
        self.widget.raise_()
        if float(self.duration) > 0:
            self.play_timer.setInterval(int(float(self.duration) * 1000))
            self.play_timer.start()
        self.started_signal.emit()

    @Slot()
    def stop(self, delete_widget=False):
        #---- kong ----
        if not self.widget:
            return False
        super(TextMediaView, self).stop(delete_widget)
        return True
コード例 #2
0
ファイル: xlfview.py プロジェクト: kongwonkeun/RdtCms
class WebMediaView_(MediaView):
    def __init__(self, media, parent):
        super(WebMediaView_, self).__init__(media, parent)
        self.widget = QWebEngineView(parent)
        self.widget.setGeometry(media['geometry'])
        self.set_default_widget_prop()
        self.widget.setDisabled(True)

    @Slot()
    def play(self):
        self.finished = 0
        url = self.options['uri']
        self.widget.load(
            QUrl.fromPercentEncoding(QByteArray(url.encode('utf-8'))))
        self.widget.show()
        self.widget.raise_()
        if float(self.duration) > 0:
            self.play_timer.setInterval(int(float(self.duration) * 1000))
            self.play_timer.start()
        self.started_signal.emit()

    @Slot()
    def stop(self, delete_widget=False):
        #---- kong ----
        if not self.widget:
            return False
        super(WebMediaView_, self).stop(delete_widget)
        return True
コード例 #3
0
class Page(QWebEnginePage):
    def __init__(self, view):
        super(Page, self).__init__()
        self.parent = view.parent
        self.view = view
        self.result = None
        self.fullView = QWebEngineView()
        self.exitFSAction = QAction(self.fullView)
        self.loop = None

    def javaScriptConsoleMessage(self, level, msg, line, sourceid):
        """Override javaScriptConsoleMessage to use debug log."""
        if level == QWebEnginePage.InfoMessageLevel:
            print("JS - INFO - Ligne {} : {}".format(line, msg))
        elif level == QWebEnginePage.WarningMessageLevel:
            print("JS - WARNING - Ligne {} : {}".format(line, msg))
        else:
            print("JS - ERROR - Ligne {} : {}".format(line, msg))

    def hittestcontent(self, pos):
        return WebHitTestResult(self, pos)

    def maptoviewport(self, pos):
        return QPointF(pos.x(), pos.y())

    def executejavascript(self, scriptsrc):
        self.loop = QEventLoop()
        self.result = None
        QTimer.singleShot(250, self.loop.quit)

        self.runJavaScript(scriptsrc, self.callbackjs)
        self.loop.exec_()
        self.loop = None
        return self.result

    def callbackjs(self, res):
        if self.loop is not None and self.loop.isRunning():
            self.result = res
            self.loop.quit()

    def vsource(self):
        if "view-source:http" in self.url().toString():
            self.load(QUrl(self.url().toString().split("view-source:")[1]))
        else:
            self.triggerAction(self.ViewSource)

    def makefullscreen(self, request):
        if request.toggleOn():
            self.fullView = QWebEngineView()
            self.exitFSAction = QAction(self.fullView)
            self.exitFSAction.setShortcut(Qt.Key_Escape)
            self.exitFSAction.triggered.connect(
                lambda: self.triggerAction(self.ExitFullScreen))

            self.fullView.addAction(self.exitFSAction)
            self.setView(self.fullView)
            self.fullView.showFullScreen()
            self.fullView.raise_()
        else:
            del self.fullView
            self.setView(self.view)
        request.accept()