from PySide6.QtCore import QSize, Qt from PySide6.QtWidgets import QMainWindow, QWidget, QToolBar, QMenu, QMenuBar, QSizePolicy, QFileDialog from PySide6.QtWidgets import QDialog, QVBoxLayout from PySide6.QtGui import QKeySequence, QAction, QIcon, QPalette from fixtracks.widgets.centralwidget import CentralWidget from fixtracks.dialogs.previewdialog import PreviewDialog from fixtracks.utils.reader import ImageReader, DataFrameReader from fixtracks.dialogs.about import AboutDialog from fixtracks.dialogs.help import HelpDialog import fixtracks.resources class MainWindow(QMainWindow): def __init__(self, darkmode): super().__init__() self._iconsuffix = "_dark" if darkmode else "_light" self._top_toolbar = None self._side_toolbar = None self._cw = CentralWidget(darkmode) self.setCentralWidget(self._cw) self.create_actions() # cw.exit_signal.connect(self.exit_request) def create_actions(self): # self._file_open_action = QAction(QIcon(":/icons/open" + self._iconsuffix), "Open", self) # self._file_open_action.setStatusTip("Open nix file") # self._file_open_action.setShortcut(QKeySequence("Ctrl+o")) # self._file_open_action.triggered.connect(self.on_file_open) # self._file_close_action = QAction(QIcon(":/icons/file_close"), "Close", self) # self._file_close_action.setStatusTip("Close current nix file") # self._file_close_action.setShortcut(QKeySequence("Ctrl+w")) # self._file_close_action.setEnabled(False) # self._file_close_action.triggered.connect(self.on_file_close) self._quit_action = QAction(QIcon(":quit"), "Quit", self) self._quit_action.setStatusTip("Close current file and quit") self._quit_action.setShortcut(QKeySequence("Ctrl+q")) self._quit_action.triggered.connect(self.exit_request) # self._plot_action = QAction(QIcon(":/icons/show_plot"), "Plot", self) # self._plot_action.setStatusTip("Plot currently selected entity") # self._plot_action.setShortcut(QKeySequence("Ctrl+p")) # self._plot_action.setEnabled(False) # self._plot_action.triggered.connect(self.on_item_plot) # self._table_action = QAction(QIcon(":/icons/show_table"), "Show table", self) # self._table_action.setStatusTip("Show data as table") # self._table_action.setShortcut(QKeySequence("Ctrl+t")) # self._table_action.setEnabled(False) # self._table_action.triggered.connect(self.on_item_show_table) self._about_action = QAction("about") self._about_action.setStatusTip("Show about dialog") self._about_action.setEnabled(True) self._about_action.triggered.connect(self.on_about) self._help_action = QAction(QIcon(":help"), "help") self._help_action.setStatusTip("Show help dialog") self._help_action.setShortcut(QKeySequence("F1")) self._help_action.setEnabled(True) self._help_action.triggered.connect(self.on_help) self._mergeview_action = QAction("View merge results") self._mergeview_action.setStatusTip("Show help dialog") self._mergeview_action.setEnabled(True) self._mergeview_action.triggered.connect(self.on_mergeview) self.create_toolbar() self.create_menu() def create_menu(self): menu_bar = self.menuBar() file_menu = menu_bar.addMenu("&File") # file_menu.addAction(self._file_close_action) file_menu.addSeparator() file_menu.addAction(self._quit_action) tools_menu = menu_bar.addMenu("&Tools") tools_menu.addAction(self._mergeview_action) help_menu = menu_bar.addMenu("&Help") help_menu.addAction(self._about_action) help_menu.addAction(self._help_action) menus = {"File": file_menu, "Tools": tools_menu} for k in self._cw.menuActions: actions = self._cw.menuActions[k] if k in menus: menu = menus[k] else: menu = menu_bar.addMenu(k) for a in actions: menu.addAction(a) self.setMenuBar(menu_bar) def create_toolbar(self): self._top_toolbar = QToolBar("My main toolbar") self._top_toolbar.setAllowedAreas(Qt.ToolBarArea.TopToolBarArea) self._top_toolbar.setFloatable(False) self._top_toolbar.setIconSize(QSize(32, 32)) self._side_toolbar = QToolBar("Tools toolbar") self._side_toolbar.setAllowedAreas(Qt.ToolBarArea.LeftToolBarArea) self._top_toolbar.setIconSize(QSize(64, 64)) #self._toolbar.setStyleSheet("QToolButton:!hover {background-color:none}") # self._top_toolbar.addAction(self._file_open_action) # self._toolbar.addAction(self._file_close_action) self._top_toolbar.addSeparator() self._top_toolbar.addAction(self._mergeview_action) # self._toolbar.addAction(self._plot_action) # self._toolbar.addAction(self._table_action) for a in self._cw.toolbarActions: self._side_toolbar.addAction(a) self._side_toolbar.addAction(self._help_action) empty = QWidget() empty.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self._side_toolbar.addWidget(empty) self._side_toolbar.addSeparator() self._side_toolbar.addAction(self._quit_action) self.addToolBar(Qt.LeftToolBarArea, self._side_toolbar) # self.addToolBar(Qt.TopToolBarArea, self._top_toolbar) def on_file_open(self, s): QFileDialog.getExistingDirectory() # dlg = QFileDialog(self, 'Open dataset folder data file', '', "NIX files (*.h5 *.nix)") # dlg.setFileMode(QFileDialog.ExistingFile) # filenames = None # if dlg.exec_(): # filenames = dlg.selectedFiles() # self.open_file(filenames[0]) def on_mergeview(self): print("Display merging results") dlg = PreviewDialog(self) dlg.setModal(True) dlg.exec() def on_about(self, s): about = AboutDialog(self) about.show() def on_help(self, s): help = HelpDialog(self) help.show() # @Slot(None) def exit_request(self): self.close()