81 lines
2.9 KiB
Python
81 lines
2.9 KiB
Python
from PyQt5.QtGui import QIcon
|
|
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QFrame, QHBoxLayout
|
|
from PyQt5.QtWidgets import QPushButton, QSizePolicy, QTextBrowser, QVBoxLayout, QWidget
|
|
from PyQt5.QtCore import QSettings, QUrl, Qt
|
|
|
|
import blipblop.constants as cnst
|
|
|
|
|
|
class HelpDialog(QDialog):
|
|
|
|
def __init__(self, parent=None) -> None:
|
|
super().__init__(parent=parent)
|
|
self._settings = QSettings()
|
|
width = int(self._settings.value("help/width", 640))
|
|
height = int(self._settings.value("help/height", 480))
|
|
x = int(self._settings.value("help/pos_x", 100))
|
|
y = int(self._settings.value("help/pos_y", 100))
|
|
|
|
self.setModal(True)
|
|
self.setMinimumSize(640, 480)
|
|
self.resize(width, height)
|
|
self.move(x, y)
|
|
self.finished.connect(self.on_finished)
|
|
self.help = HelpBrowser()
|
|
|
|
self.help._edit.historyChanged.connect(self._on_history_changed)
|
|
|
|
self.back_btn = QPushButton(QIcon(":/icons/docs_back"), "back")
|
|
self.back_btn.setEnabled(False)
|
|
self.back_btn.clicked.connect(self.help._edit.backward)
|
|
self.home_btn = QPushButton(QIcon(":/icons/docs_home"), "home")
|
|
self.home_btn.clicked.connect(self.help._edit.home)
|
|
self.fwd_btn = QPushButton(QIcon(":/icons/docs_forward"), "forward")
|
|
self.fwd_btn.setLayoutDirection(Qt.RightToLeft)
|
|
self.fwd_btn.setEnabled(False)
|
|
self.fwd_btn.clicked.connect(self.help._edit.forward)
|
|
|
|
empty = QWidget()
|
|
empty.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
|
|
|
|
hbox = QHBoxLayout()
|
|
hbox.addWidget(self.back_btn)
|
|
hbox.addWidget(self.home_btn)
|
|
hbox.addWidget(self.fwd_btn)
|
|
hbox.addWidget(empty)
|
|
|
|
bbox = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok)
|
|
bbox.accepted.connect(self.accept)
|
|
layout = QVBoxLayout()
|
|
|
|
layout.addLayout(hbox)
|
|
layout.addWidget(self.help)
|
|
layout.addWidget(bbox)
|
|
self.setLayout(layout)
|
|
|
|
def _on_history_changed(self):
|
|
self.back_btn.setEnabled(self.help._edit.isBackwardAvailable())
|
|
self.fwd_btn.setEnabled(self.help._edit.isForwardAvailable())
|
|
|
|
def on_finished(self):
|
|
self._settings.setValue("help/width", self.width())
|
|
self._settings.setValue("help/height", self.height())
|
|
self._settings.setValue("help/pos_x", self.x())
|
|
self._settings.setValue("help/pos_y", self.y())
|
|
|
|
|
|
class HelpBrowser(QWidget):
|
|
|
|
def __init__(self, parent=None) -> None:
|
|
super().__init__(parent=parent)
|
|
self.setLayout(QVBoxLayout())
|
|
doc_url = QUrl.fromLocalFile(cnst.DOCS_ROOT_FILE)
|
|
self._edit = QTextBrowser()
|
|
self._edit.setOpenLinks(True)
|
|
self._edit.setOpenExternalLinks(True)
|
|
self._edit.setSource(doc_url)
|
|
self._edit.setEnabled(True)
|
|
self._edit.setFrameShape(QFrame.NoFrame)
|
|
|
|
self.layout().addWidget(self._edit)
|