[help] add help dialg stub

This commit is contained in:
Jan Grewe 2025-01-22 23:00:12 +01:00
parent 0f4a29252e
commit 708d5c2b3f

79
fixtracks/dialogs/help.py Normal file
View File

@ -0,0 +1,79 @@
from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QDialog, QDialogButtonBox, QFrame, QHBoxLayout
from PySide6.QtWidgets import QPushButton, QSizePolicy, QTextBrowser, QVBoxLayout, QWidget
from PySide6.QtCore import QSettings, QUrl, Qt
from fixtracks.info import DOCS_ROOT_FILE
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(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)