Added document tree and log widgets

This commit is contained in:
2026-07-26 14:34:22 +02:00
parent 4c3b8b4b6d
commit f37cc41ed0
5 changed files with 134 additions and 18 deletions

View File

@@ -44,18 +44,15 @@ def generate_ui() -> None:
str(destination),
)
generated = destination.read_text(encoding="utf-8")
if RESOURCE_IMPORT not in generated:
raise RuntimeError(
f"could not find the generated resource import in {destination}"
if RESOURCE_IMPORT in generated:
destination.write_text(
generated.replace(
RESOURCE_IMPORT,
GENERATED_RESOURCE_IMPORT,
1,
),
encoding="utf-8",
)
destination.write_text(
generated.replace(
RESOURCE_IMPORT,
GENERATED_RESOURCE_IMPORT,
1,
),
encoding="utf-8",
)
def generate_resources() -> None:

View File

@@ -1,13 +1,12 @@
from __future__ import annotations
import sys
from PySide6.QtWidgets import QApplication
from bedit_gui.controllers.document_controller import DocumentController
from bedit_gui.controllers.undo_controller import UndoController
from bedit_gui.controllers.window_state_controller import WindowStateController
from bedit_gui.documents import Document
from bedit_gui.resources.generated import resources_rc # noqa: F401
from bedit_gui.views.main_window import MainWindow
@@ -21,6 +20,8 @@ def main() -> int:
window = MainWindow()
DocumentController(document, window)
UndoController(document, window)
window.show()
window_state_controller = WindowStateController(app, window)
window_state_controller.restore()
window.showMaximized()
return app.exec()

View File

@@ -0,0 +1,37 @@
from PySide6.QtCore import QObject, QSettings, QByteArray
from PySide6.QtWidgets import QApplication
from bedit_gui.views.main_window import MainWindow
class WindowStateController(QObject):
def __init__(self,app: QApplication,window: MainWindow) -> None:
super().__init__(window)
self.window = window
self.settings = QSettings()
# Capture the layout created by Designer.
self._default_geometry = QByteArray(window.saveGeometry())
self._default_state = QByteArray(window.saveState())
app.aboutToQuit.connect(self.save)
window.ui.actionReset_Layout.triggered.connect(self.reset)
def restore(self) -> None:
if self.settings.contains("main_window/geometry"):
self.window.restoreGeometry(self.settings.value("main_window/geometry"))
if self.settings.contains("main_window/state"):
self.window.restoreState(self.settings.value("main_window/state"))
def save(self) -> None:
self.settings.setValue("main_window/geometry",self.window.saveGeometry())
self.settings.setValue("main_window/state",self.window.saveState())
def reset(self) -> None:
self.settings.remove("main_window/geometry")
self.settings.remove("main_window/state")
self.window.restoreGeometry(self._default_geometry)
self.window.restoreState(self._default_state)
self.window.showMaximized()

View File

@@ -6,20 +6,30 @@
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
<width>940</width>
<height>729</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="windowIcon">
<iconset resource="../../resources/resources.qrc">
<normaloff>:/icons/icons/office-chart-line.png</normaloff>:/icons/icons/office-chart-line.png</iconset>
</property>
<property name="documentMode">
<bool>false</bool>
</property>
<property name="tabShape">
<enum>QTabWidget::TabShape::Triangular</enum>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<width>940</width>
<height>22</height>
</rect>
</property>
@@ -46,6 +56,9 @@
<property name="title">
<string>View</string>
</property>
<addaction name="actionReset_Layout"/>
<addaction name="actionPanels"/>
<addaction name="actionToolbars"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
@@ -87,6 +100,48 @@
<addaction name="actionUndo"/>
<addaction name="actionRedo"/>
</widget>
<widget class="QDockWidget" name="documentTreeWidget">
<property name="minimumSize">
<size>
<width>150</width>
<height>533</height>
</size>
</property>
<property name="windowTitle">
<string>Document Tree</string>
</property>
<attribute name="dockWidgetArea">
<number>1</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTreeView" name="documentTree"/>
</item>
</layout>
</widget>
</widget>
<widget class="QDockWidget" name="logWidget">
<property name="minimumSize">
<size>
<width>150</width>
<height>107</height>
</size>
</property>
<property name="windowTitle">
<string>Log</string>
</property>
<attribute name="dockWidgetArea">
<number>8</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents_5">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QListView" name="listView"/>
</item>
</layout>
</widget>
</widget>
<action name="actionOpen_File">
<property name="icon">
<iconset resource="../../resources/resources.qrc">
@@ -211,6 +266,27 @@
<enum>QAction::MenuRole::NoRole</enum>
</property>
</action>
<action name="actionReset_Layout">
<property name="text">
<string>Reset Layout</string>
</property>
<property name="toolTip">
<string>Reset window layout to default</string>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum>
</property>
</action>
<action name="actionPanels">
<property name="text">
<string>Panels</string>
</property>
</action>
<action name="actionToolbars">
<property name="text">
<string>Toolbars</string>
</property>
</action>
</widget>
<resources>
<include location="../../resources/resources.qrc"/>

View File

@@ -1,4 +1,5 @@
from PySide6.QtWidgets import QMainWindow
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QMainWindow, QTabWidget
from bedit_gui.ui.generated.ui_main_window import Ui_MainWindow
@@ -9,3 +10,7 @@ class MainWindow(QMainWindow):
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setTabPosition(Qt.AllDockWidgetAreas, QTabWidget.North)
self.setCorner(Qt.Corner.BottomLeftCorner, Qt.DockWidgetArea.LeftDockWidgetArea)
self.setCorner(Qt.Corner.BottomRightCorner, Qt.DockWidgetArea.RightDockWidgetArea)