diff --git a/scripts/generate_qt_files.py b/scripts/generate_qt_files.py
index 19f2783..bf28359 100644
--- a/scripts/generate_qt_files.py
+++ b/scripts/generate_qt_files.py
@@ -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:
diff --git a/src/bedit_gui/application.py b/src/bedit_gui/application.py
index 337683c..ed36c68 100644
--- a/src/bedit_gui/application.py
+++ b/src/bedit_gui/application.py
@@ -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()
diff --git a/src/bedit_gui/controllers/window_state_controller.py b/src/bedit_gui/controllers/window_state_controller.py
new file mode 100644
index 0000000..8265e96
--- /dev/null
+++ b/src/bedit_gui/controllers/window_state_controller.py
@@ -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()
diff --git a/src/bedit_gui/ui/forms/main_window.ui b/src/bedit_gui/ui/forms/main_window.ui
index 3292e8c..6f08e37 100644
--- a/src/bedit_gui/ui/forms/main_window.ui
+++ b/src/bedit_gui/ui/forms/main_window.ui
@@ -6,20 +6,30 @@
0
0
- 800
- 600
+ 940
+ 729
MainWindow
+
+
+ :/icons/icons/office-chart-line.png:/icons/icons/office-chart-line.png
+
+
+ false
+
+
+ QTabWidget::TabShape::Triangular
+
+
+
+
+ 150
+ 533
+
+
+
+ Document Tree
+
+
+ 1
+
+
+
+ -
+
+
+
+
+
+
+
+
+ 150
+ 107
+
+
+
+ Log
+
+
+ 8
+
+
+
+ -
+
+
+
+
+
@@ -211,6 +266,27 @@
QAction::MenuRole::NoRole
+
+
+ Reset Layout
+
+
+ Reset window layout to default
+
+
+ QAction::MenuRole::NoRole
+
+
+
+
+ Panels
+
+
+
+
+ Toolbars
+
+
diff --git a/src/bedit_gui/views/main_window.py b/src/bedit_gui/views/main_window.py
index 4748bb2..1a3d1dd 100644
--- a/src/bedit_gui/views/main_window.py
+++ b/src/bedit_gui/views/main_window.py
@@ -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)