diff --git a/icons/nix_plot.png b/icons/nix_plot.png new file mode 100644 index 0000000..5f1bbf8 Binary files /dev/null and b/icons/nix_plot.png differ diff --git a/icons/nix_table.png b/icons/nix_table.png new file mode 100644 index 0000000..a6ea080 Binary files /dev/null and b/icons/nix_table.png differ diff --git a/icons/quit.png b/icons/quit.png new file mode 100644 index 0000000..ed27c97 Binary files /dev/null and b/icons/quit.png differ diff --git a/main.py b/main.py index 993303e..5ac00de 100644 --- a/main.py +++ b/main.py @@ -7,8 +7,7 @@ def main(): app = QApplication(sys.argv) window = NixView() window.show() - app.exec() - return 0 + sys.exit(app.exec_()) if __name__ == "__main__": main() diff --git a/main_window.py b/main_window.py index c3936e3..83c99ae 100644 --- a/main_window.py +++ b/main_window.py @@ -1,29 +1,42 @@ -from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QMainWindow, QStackedLayout, QToolBar, QAction, QStatusBar, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy -from PyQt5.QtGui import QIcon, QPixmap +import sys +from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QMainWindow, QMenuBar, QStackedLayout, QToolBar, QAction, QStatusBar, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy +from PyQt5.QtGui import QIcon, QPixmap, QKeySequence from PyQt5.QtCore import Qt, QSize import typing +from file_handler import FileHandler + class NixView(QMainWindow): def __init__(self, *args, **kwargs): super(NixView, self).__init__(*args, **kwargs) self.setWindowTitle("NixView") + self.setWindowIcon(QIcon('./icons/nixview.icns')) - cw = CentralWidget(self) - self.setCentralWidget(cw) + self._file_handler = FileHandler() + self.setStatusBar(QStatusBar(self)) + self.setMenuBar(QMenuBar(self)) self.create_actions() - self.setStatusBar(QStatusBar(self)) - + cw = CentralWidget(self) + self.setCentralWidget(cw) + self.show() def create_actions(self): self._file_open_action = QAction(QIcon("./icons/nix_open.png"), "Open", self) self._file_open_action.setStatusTip("Open nix file") - self._file_open_action.triggered.connect(self.onFileOpenClick) + 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/nix_close.png"), "Close", self) - self._file_close_action.setStatusTip("Close nix file") - self._file_close_action.triggered.connect(self.onFileCloseClick) + 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("./icons/quit.png"), "Quit", self) + self._quit_action.setStatusTip("Close current file and quit") + self._quit_action.triggered.connect(self.on_quit) self.create_toolbar() self.create_menu() @@ -35,18 +48,31 @@ class NixView(QMainWindow): self._toolbar.addAction(self._file_open_action) self._toolbar.addAction(self._file_close_action) + self._toolbar.addAction(self._quit_action) self.addToolBar(self._toolbar) def create_menu(self): - pass + menu = self.menuBar() + file_menu = menu.addMenu("&File") + file_menu.addAction(self._file_open_action) + file_menu.addAction(self._file_close_action) + file_menu.addAction(self._quit_action) + self.setMenuBar(menu) - def onFileOpenClick(self, s): - print("click", s) + def on_file_open(self, s): + success, msg = self._file_handler.open("nix_test.h5") + self.statusBar().showMessage(msg, 5000) + self._file_close_action.setEnabled(success) - def onFileCloseClick(self, s): - print("click", s) + def on_file_close(self, s): + self._file_handler.close() + self.statusBar().showMessage("Successfully closed current file", 1000) + def on_quit(self, s): + self._file_handler.close() + sys.exit() + class CentralWidget(QWidget): @@ -66,7 +92,7 @@ class SplashScreen(QWidget): super().__init__(parent=parent) layout = QGridLayout() self.setLayout(layout) - self.setStyleSheet("background-color: red;") + self.setStyleSheet("background-color: white;") label = QLabel() label.setPixmap(QPixmap("./icons/nixview256.png")) label.setAlignment(Qt.AlignCenter)