OOPed everything a little more.
This commit is contained in:
parent
3762d67663
commit
4529529a7f
2 changed files with 53 additions and 38 deletions
46
editor.py
Normal file
46
editor.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from PyQt6.QtWidgets import QWidget, QVBoxLayout
|
||||||
|
from PyQt6.QtGui import QFont, QTextCharFormat, QColor
|
||||||
|
from binary_text_edit import BinaryTextEdit
|
||||||
|
from highlighting import Higlighter
|
||||||
|
|
||||||
|
|
||||||
|
class BitEditor:
|
||||||
|
font = QFont("Ubuntu Mono", 12)
|
||||||
|
font.setLetterSpacing(QFont.SpacingType.PercentageSpacing, 200)
|
||||||
|
one_format = QTextCharFormat()
|
||||||
|
one_format.setBackground(QColor(200, 150, 100))
|
||||||
|
|
||||||
|
def __init__(self, app, file):
|
||||||
|
self.app = app
|
||||||
|
self.file = file
|
||||||
|
|
||||||
|
self.setup_gui()
|
||||||
|
|
||||||
|
def setup_gui(self):
|
||||||
|
# widget that contains the text input
|
||||||
|
self.widget = QWidget(self.app.gui.main_window.openFileTabs, objectName=self.file.path)
|
||||||
|
self.widget_layout = QVBoxLayout()
|
||||||
|
|
||||||
|
self.input = BinaryTextEdit()
|
||||||
|
self.input.setOverwriteMode(True)
|
||||||
|
self.widget_layout.addWidget(self.input)
|
||||||
|
self.input.setPlainText(self.app.utils.bstring_to_oz(self.file.content))
|
||||||
|
self.input.textChanged.connect(self.on_edit)
|
||||||
|
|
||||||
|
self.input.setFont(self.font)
|
||||||
|
|
||||||
|
self.bit_highlighter = Higlighter()
|
||||||
|
self.bit_highlighter.add_mapping("1", self.one_format)
|
||||||
|
self.bit_highlighter.setDocument(self.input.document())
|
||||||
|
|
||||||
|
self.widget.setLayout(self.widget_layout)
|
||||||
|
|
||||||
|
self.app.gui.main_window.openFileTabs.addTab( # add a tab for the file in the top files list
|
||||||
|
self.widget,
|
||||||
|
self.file.name
|
||||||
|
)
|
||||||
|
|
||||||
|
def on_edit(self):
|
||||||
|
self.not_saved = True
|
45
file.py
45
file.py
|
@ -1,9 +1,7 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
from PyQt6.QtWidgets import QWidget, QFileDialog, QVBoxLayout
|
from PyQt6.QtWidgets import QFileDialog
|
||||||
from PyQt6.QtGui import QFont, QTextCharFormat, QColor
|
from editor import BitEditor
|
||||||
from binary_text_edit import BinaryTextEdit
|
|
||||||
from highlighting import Higlighter
|
|
||||||
|
|
||||||
|
|
||||||
class FileActions:
|
class FileActions:
|
||||||
|
@ -23,14 +21,14 @@ class FileActions:
|
||||||
self.app.open_files[file_path] = File(self.app, file_path, file_path.split("/")[-1])
|
self.app.open_files[file_path] = File(self.app, file_path, file_path.split("/")[-1])
|
||||||
|
|
||||||
def save_file(self, path):
|
def save_file(self, path):
|
||||||
oz_string = self.app.open_files[path].content_binary_input.toPlainText()
|
oz_string = self.app.open_files[path].bit_editor.input.toPlainText()
|
||||||
data = self.app.utils.oz_string_to_bstring(oz_string)
|
data = self.app.utils.oz_string_to_bstring(oz_string)
|
||||||
|
|
||||||
file = open(path, "wb")
|
file = open(path, "wb")
|
||||||
file.write(data)
|
file.write(data)
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
self.app.open_files[path].not_saved = False
|
self.app.open_files[path].bit_editor.not_saved = False
|
||||||
|
|
||||||
def save_current_file(self):
|
def save_current_file(self):
|
||||||
current_tab = self.app.gui.main_window.openFileTabs.currentWidget()
|
current_tab = self.app.gui.main_window.openFileTabs.currentWidget()
|
||||||
|
@ -44,9 +42,9 @@ class FileActions:
|
||||||
|
|
||||||
def close_current_file(self):
|
def close_current_file(self):
|
||||||
tab_index = self.app.gui.main_window.openFileTabs.currentIndex()
|
tab_index = self.app.gui.main_window.openFileTabs.currentIndex()
|
||||||
current_file_path = self.app.gui.main_window.openFileTabs.currentWidget().objectName()#
|
current_file_path = self.app.gui.main_window.openFileTabs.currentWidget().objectName()
|
||||||
|
|
||||||
if self.app.open_files[current_file_path].not_saved:
|
if self.app.open_files[current_file_path].bit_editor.not_saved:
|
||||||
save_or_not = self.app.utils.unsaved_changes_popup()
|
save_or_not = self.app.utils.unsaved_changes_popup()
|
||||||
|
|
||||||
match save_or_not:
|
match save_or_not:
|
||||||
|
@ -71,7 +69,6 @@ class File:
|
||||||
|
|
||||||
self.path = path
|
self.path = path
|
||||||
self.name = name
|
self.name = name
|
||||||
self.not_saved = False
|
|
||||||
|
|
||||||
file = open(path, "rb")
|
file = open(path, "rb")
|
||||||
file_content = file.read()
|
file_content = file.read()
|
||||||
|
@ -79,32 +76,4 @@ class File:
|
||||||
|
|
||||||
self.content = file_content
|
self.content = file_content
|
||||||
|
|
||||||
# the widget that contains all the file content
|
self.bit_editor = BitEditor(self.app, self)
|
||||||
self.content_widget = QWidget(self.app.gui.main_window.openFileTabs, objectName=path)
|
|
||||||
self.content_widget_layout = QVBoxLayout()
|
|
||||||
|
|
||||||
self.content_binary_input = BinaryTextEdit()
|
|
||||||
self.content_binary_input.setOverwriteMode(True)
|
|
||||||
self.content_widget_layout.addWidget(self.content_binary_input)
|
|
||||||
self.content_binary_input.setPlainText(self.app.utils.bstring_to_oz(file_content))
|
|
||||||
self.content_binary_input.textChanged.connect(self.on_edit)
|
|
||||||
|
|
||||||
self.binary_font = QFont("Ubuntu Mono", 12)
|
|
||||||
self.binary_font.setLetterSpacing(QFont.SpacingType.PercentageSpacing, 200)
|
|
||||||
self.content_binary_input.setFont(self.binary_font)
|
|
||||||
|
|
||||||
self.bit_highlighter = Higlighter()
|
|
||||||
self.one_format = QTextCharFormat()
|
|
||||||
self.one_format.setBackground(QColor(200, 150, 100))
|
|
||||||
self.bit_highlighter.add_mapping("1", self.one_format)
|
|
||||||
self.bit_highlighter.setDocument(self.content_binary_input.document())
|
|
||||||
|
|
||||||
self.content_widget.setLayout(self.content_widget_layout)
|
|
||||||
|
|
||||||
self.app.gui.main_window.openFileTabs.addTab( # add a tab for the file in the top files list
|
|
||||||
self.content_widget,
|
|
||||||
self.name
|
|
||||||
)
|
|
||||||
|
|
||||||
def on_edit(self):
|
|
||||||
self.not_saved = True
|
|
||||||
|
|
Loading…
Reference in a new issue