78 lines
3.2 KiB
Python
78 lines
3.2 KiB
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
import argparse
|
|
|
|
from PySide6.QtWidgets import QApplication, QMessageBox
|
|
|
|
from bedit_gui.controllers.clipboard_controller import ClipboardController, DocumentTreeClipboardHandler, GraphEditorClipboardHandler, TextClipboardHandler
|
|
from bedit_gui.controllers.document_controller import DocumentController
|
|
from bedit_gui.controllers.log_controller import LogController
|
|
from bedit_gui.controllers.library_controller import LibraryController
|
|
from bedit_gui.controllers.settings_controller import SettingsController
|
|
from bedit_gui.controllers.simulation_settings_controller import SimulationSettingsController
|
|
from bedit_gui.controllers.simulation_controller import SimulationController
|
|
from bedit_gui.controllers.undo_controller import UndoController
|
|
from bedit_gui.controllers.view_menu_controller import ViewMenuController
|
|
from bedit_gui.controllers.window_state_controller import WindowStateController
|
|
from bedit_gui.controllers.document_tree_controller import DocumentTreeController
|
|
from bedit_gui.documents import Document
|
|
from bedit_gui.services.application_settings import ApplicationSettings
|
|
from bedit_gui.services.clipboard import ClipboardService
|
|
from bedit_gui.views.main_window import MainWindow
|
|
from bedit_gui.versions import BEDIT_VERSION
|
|
|
|
def parse_arguments():
|
|
parser = argparse.ArgumentParser(exit_on_error=False)
|
|
|
|
parser.add_argument(
|
|
"-f", "--file", type=str, help="Path to a file to open", default=None, required=False
|
|
)
|
|
parser.add_argument("--version", action="version", version=f"BEdit {BEDIT_VERSION}")
|
|
|
|
return parser.parse_args()
|
|
|
|
def main() -> int:
|
|
try:
|
|
args = parse_arguments()
|
|
except argparse.ArgumentError as e:
|
|
print(e.message)
|
|
return 1
|
|
|
|
app = QApplication(sys.argv)
|
|
|
|
app.setOrganizationName("BEdit")
|
|
app.setApplicationName("BEdit")
|
|
app.setApplicationVersion(BEDIT_VERSION)
|
|
|
|
settings = ApplicationSettings()
|
|
document = Document(app)
|
|
window = MainWindow(settings.snap_to_grid_size)
|
|
window.ui.actionAbout.triggered.connect(lambda: QMessageBox.about(window, "About BEdit", f"BEdit {BEDIT_VERSION}"))
|
|
window.ui.actionAbout_QT.triggered.connect(app.aboutQt)
|
|
|
|
LogController(window, settings.log_level)
|
|
DocumentController(document, window)
|
|
settings_controller = SettingsController(window, settings)
|
|
SimulationSettingsController(document, window)
|
|
SimulationController(document, window)
|
|
UndoController(document, window)
|
|
ViewMenuController(window)
|
|
document_tree_controller = DocumentTreeController(document, window)
|
|
library_controller = LibraryController(window, settings)
|
|
settings_controller.library_paths_changed.connect(library_controller.reload)
|
|
clipboard = ClipboardService(app)
|
|
ClipboardController(window, clipboard, [TextClipboardHandler(clipboard), DocumentTreeClipboardHandler(document, window.ui.documentTree, document_tree_controller.model, clipboard), GraphEditorClipboardHandler(document, window.graph_editor, clipboard)])
|
|
|
|
window_state_controller = WindowStateController(app, window)
|
|
window_state_controller.restore()
|
|
|
|
if args.file:
|
|
document.open(args.file)
|
|
else:
|
|
document.new()
|
|
|
|
window.showMaximized()
|
|
|
|
return app.exec()
|