2024-11-18 18:28:26 +01:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
2024-11-19 17:52:08 +01:00
|
|
|
from PyQt6.QtWidgets import QWidget, QPlainTextEdit, QFileDialog, QVBoxLayout
|
2024-11-18 18:28:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
class FileActions:
|
|
|
|
def __init__(self, app):
|
|
|
|
self.app = app
|
|
|
|
|
|
|
|
def open_files(self):
|
|
|
|
dialog = QFileDialog(self.app.QTMainWindow)
|
|
|
|
dialog.setDirectory(self.app.utils.home_path)
|
|
|
|
dialog.setFileMode(QFileDialog.FileMode.ExistingFiles)
|
|
|
|
dialog.setNameFilters(["Binary (*.bin)", "Any (*)"])
|
|
|
|
dialog.setViewMode(QFileDialog.ViewMode.List)
|
|
|
|
|
|
|
|
if dialog.exec():
|
|
|
|
for file_path in dialog.selectedFiles():
|
|
|
|
self.app.open_files.append(File(self.app, file_path, file_path.split("/")[-1]))
|
2024-11-19 18:13:41 +01:00
|
|
|
if not file_path in self.app.open_files: # dont open file twice
|
|
|
|
self.app.open_files[file_path] = File(self.app, file_path, file_path.split("/")[-1])
|
2024-11-18 18:28:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
class File:
|
|
|
|
def __init__(self, app, path, name):
|
|
|
|
self.app = app
|
|
|
|
|
|
|
|
self.path = path
|
|
|
|
self.name = name
|
|
|
|
|
2024-11-19 17:52:08 +01:00
|
|
|
file = open(path, "rb")
|
2024-11-18 18:28:26 +01:00
|
|
|
file_content = file.read()
|
|
|
|
file.close()
|
|
|
|
|
|
|
|
self.content = file_content
|
|
|
|
|
|
|
|
# the widget that contains all the file content
|
|
|
|
self.content_widget = QWidget(self.app.main_window.openFileTabs)
|
2024-11-19 17:52:08 +01:00
|
|
|
self.content_widget_layout = QVBoxLayout()
|
|
|
|
|
|
|
|
self.content_binary_input = QPlainTextEdit(self.content_widget)
|
|
|
|
self.content_widget_layout.addWidget(self.content_binary_input)
|
|
|
|
self.content_binary_input.setPlainText(self.app.utils.bstring_to_oz(file_content))
|
|
|
|
|
|
|
|
self.content_widget.setLayout(self.content_widget_layout)
|
2024-11-18 18:28:26 +01:00
|
|
|
|
|
|
|
self.app.main_window.openFileTabs.addTab( # add a tab for the file in the top files list
|
|
|
|
self.content_widget,
|
|
|
|
self.name
|
|
|
|
)
|