[supervision] Use PyQtWebEngine for the doc webview. (#3291)

QtWebKit is deprecated.

Co-authored-by: Fabien-B <Fabien-B@github.com>
This commit is contained in:
Fabien-B
2024-06-06 11:39:07 +02:00
committed by GitHub
parent b71d4793a6
commit b4af85dd71
6 changed files with 28 additions and 17 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ except ImportError:
def setupUi(self, DocPanel):
self.deactivated = True
self.lay = QVBoxLayout(DocPanel)
label = QLabel("Please install 'python3-pyqt5.qtwebkit' to view the doc.", DocPanel)
label = QLabel("Please install 'PyQtWebEngine' to view the doc.", DocPanel)
label.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard)
self.lay.addWidget(label)
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui/ui_doc_viewer.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
@@ -93,6 +93,7 @@ class Ui_DocPanel(object):
self.layoutWidget3 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget3.setObjectName("layoutWidget3")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget3)
self.verticalLayout_2.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.horizontalLayout = QtWidgets.QHBoxLayout()
@@ -118,8 +119,12 @@ class Ui_DocPanel(object):
self.doc_source_combo.addItem("")
self.horizontalLayout.addWidget(self.doc_source_combo)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.webView = QtWebKitWidgets.QWebView(self.layoutWidget3)
self.webView.setUrl(QtCore.QUrl("about:blank"))
self.webView = QtWebEngineWidgets.QWebEngineView(self.layoutWidget3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.webView.sizePolicy().hasHeightForWidth())
self.webView.setSizePolicy(sizePolicy)
self.webView.setObjectName("webView")
self.verticalLayout_2.addWidget(self.webView)
self.verticalLayout_5.addWidget(self.splitter_2)
@@ -141,5 +146,5 @@ class Ui_DocPanel(object):
self.doc_source_combo.setToolTip(_translate("DocPanel", "source"))
self.doc_source_combo.setItemText(0, _translate("DocPanel", "Internet"))
self.doc_source_combo.setItemText(1, _translate("DocPanel", "Local"))
from PyQt5 import QtWebKitWidgets
from PyQt5 import QtWebEngineWidgets
from generated import resources_rc
+4 -3
View File
@@ -299,9 +299,10 @@ class PprzCenter(QMainWindow, Ui_SupervisionWindow):
self.statusBar().setStyleSheet("")
if __name__ == "__main__":
app = QApplication(sys.argv)
if __name__ == "__main__":
# argument needed for the webviewer to work (documentation)
# https://stackoverflow.com/questions/75922410/pyqt5-qwebengineview-blank-window
app = QApplication(sys.argv + ["--disable-seccomp-filter-sandbox"])
timer = QtCore.QTimer()
timer.start(100)
+1 -1
View File
@@ -1,3 +1,3 @@
PyQt5
PyQtWebEngine
lxml
+12 -7
View File
@@ -117,6 +117,9 @@
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@@ -170,11 +173,12 @@
</layout>
</item>
<item>
<widget class="QWebView" name="webView">
<property name="url">
<url>
<string>about:blank</string>
</url>
<widget class="QWebEngineView" name="webView" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
@@ -186,9 +190,10 @@
</widget>
<customwidgets>
<customwidget>
<class>QWebView</class>
<class>QWebEngineView</class>
<extends>QWidget</extends>
<header location="global">QtWebKitWidgets/QWebView</header>
<header>qwebengineview.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
+1 -1
View File
@@ -74,7 +74,7 @@ def open_terminal(wd, command=None):
terminal_emulator = get_settings().value("terminal_emulator", "", str)
if terminal_emulator == "":
terminal_emulator = "gnome-terminal"
os.system("{} --working-directory {}{}".format(terminal_emulator, wd, cmd))
os.system("{}".format(terminal_emulator))
def get_settings() -> QSettings: