Implemented reopening last opened file.

This commit is contained in:
The Wobbler 2024-11-21 19:47:15 +01:00
parent 490cf7df97
commit f0152cc2ce
6 changed files with 34 additions and 11 deletions

View file

@ -16,6 +16,8 @@ class BitEditor:
self.app = app self.app = app
self.file = file self.file = file
self.not_saved = False
self.setup_gui() self.setup_gui()
def setup_gui(self): def setup_gui(self):
@ -26,7 +28,9 @@ class BitEditor:
self.input = BinaryTextEdit() self.input = BinaryTextEdit()
self.input.setOverwriteMode(True) self.input.setOverwriteMode(True)
self.widget_layout.addWidget(self.input) self.widget_layout.addWidget(self.input)
self.input.setPlainText(self.app.utils.bstring_to_oz(self.file.content)) self.input.setPlainText(self.app.utils.bstring_to_oz(self.file.content))
self.input.textChanged.connect(self.on_edit) self.input.textChanged.connect(self.on_edit)
self.input.setFont(self.font) self.input.setFont(self.font)

View file

@ -61,6 +61,8 @@ class File:
self.bit_editor = BitEditor(self.app, self) self.bit_editor = BitEditor(self.app, self)
self.app.settings.last_opened_file = self.path
def close(self): def close(self):
self.app.gui.main_window.openFileTabs.removeTab(self.bit_editor.tab_index) self.app.gui.main_window.openFileTabs.removeTab(self.bit_editor.tab_index)
del self.app.open_files[self.path] del self.app.open_files[self.path]

16
main.py
View file

@ -3,7 +3,7 @@
import sys import sys
from wobbl_tools.data_file import save_dataclass_json, load_dataclass_json from wobbl_tools.data_file import save_dataclass_json, load_dataclass_json
from utils import Utils from utils import Utils
from file import FileActions, File, BitEditor import file
from ui import GUI from ui import GUI
from settings import Settings from settings import Settings
@ -12,11 +12,14 @@ class BreadEditor:
def __init__(self): def __init__(self):
self.settings = load_dataclass_json(Settings, "settings.json") self.settings = load_dataclass_json(Settings, "settings.json")
setattr(self.settings, "save", lambda: save_dataclass_json(self.settings, "settings.json")) setattr(self.settings, "save", lambda: save_dataclass_json(self.settings, "settings.json"))
self.utils = Utils(self)
self.file_actions = FileActions(self)
self.gui = GUI(self)
self.BitEditor = BitEditor # save the file module to a variable because we need to use it in other classes but we change some file class --
# variables that also need to be accesible from the other classes.
self.file = file
File = file.File
self.utils = Utils(self)
self.file_actions = file.FileActions(self)
self.gui = GUI(self)
self.gui.connect_gui(self) self.gui.connect_gui(self)
@ -24,6 +27,9 @@ class BreadEditor:
def run(self): def run(self):
self.gui.post_setup() self.gui.post_setup()
self.utils.open_last_file()
self.utils.popup_init() self.utils.popup_init()
self.gui.QTMainWindow.show() self.gui.QTMainWindow.show()

View file

@ -1,8 +1,10 @@
#!/usr/bin/python3 #!/usr/bin/python3
import os
from dataclasses import dataclass from dataclasses import dataclass
@dataclass @dataclass
class Settings: class Settings:
last_opened_file: str=f"{os.path.dirname(os.path.abspath(__file__))}/example.txt"
square_bits: bool=False square_bits: bool=False

8
ui.py
View file

@ -1,6 +1,5 @@
#!/usr/bin/python3 #!/usr/bin/python3
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.QtGui import QFont from PyQt6.QtGui import QFont
from gui.main_window import Ui_MainWindow from gui.main_window import Ui_MainWindow
@ -11,7 +10,7 @@ class GUI:
def __init__(self, app): def __init__(self, app):
self.app = app self.app = app
self.qt_app = QApplication(sys.argv) self.qt_app = QApplication([])
self.QTMainWindow = QMainWindow() self.QTMainWindow = QMainWindow()
self.main_window = Ui_MainWindow() self.main_window = Ui_MainWindow()
@ -27,7 +26,6 @@ class GUI:
def post_setup(self): def post_setup(self):
self.main_window.bitsAreSquaresSetting.setChecked(self.app.settings.square_bits) self.main_window.bitsAreSquaresSetting.setChecked(self.app.settings.square_bits)
spacing = 200 if self.app.settings.square_bits else 100 # add spacing when setting is checked spacing = 200 if self.app.settings.square_bits else 100
print(self.app.settings.square_bits)
self.app.BitEditor.font.setLetterSpacing(QFont.SpacingType.PercentageSpacing, spacing) self.app.file.BitEditor.font.setLetterSpacing(QFont.SpacingType.PercentageSpacing, spacing)

View file

@ -1,5 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/python3
import sys
from pathlib import Path from pathlib import Path
from PyQt6.QtWidgets import QMessageBox from PyQt6.QtWidgets import QMessageBox
from PyQt6.QtGui import QFont from PyQt6.QtGui import QFont
@ -78,6 +79,9 @@ class Utils:
case "discard": case "discard":
self.close() self.close()
else:
self.close()
def close(self): def close(self):
print("Bye!") print("Bye!")
@ -95,3 +99,10 @@ class Utils:
editor.font.setLetterSpacing(QFont.SpacingType.PercentageSpacing, spacing) editor.font.setLetterSpacing(QFont.SpacingType.PercentageSpacing, spacing)
editor.input.setFont(editor.font) editor.input.setFont(editor.font)
def open_last_file(self):
if len(sys.argv) == 1: # if no parameters were passed to the editor
file_path = self.app.settings.last_opened_file
file = self.app.file.File(self.app, file_path, file_path.split("/")[-1])
self.app.open_files[file_path] = file