diff --git a/main_window.py b/main_window.py index 83c99ae..e7feeee 100644 --- a/main_window.py +++ b/main_window.py @@ -1,8 +1,8 @@ import sys -from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QMainWindow, QMenuBar, QStackedLayout, QToolBar, QAction, QStatusBar, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy +from typing import Hashable +from PyQt5.QtWidgets import QFileDialog, 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 PyQt5.QtCore import Qt, QSize, QSettings from file_handler import FileHandler @@ -18,8 +18,8 @@ class NixView(QMainWindow): self.setMenuBar(QMenuBar(self)) self.create_actions() - cw = CentralWidget(self) - self.setCentralWidget(cw) + self._cw = CentralWidget(self) + self.setCentralWidget(self._cw) self.show() def create_actions(self): @@ -39,8 +39,7 @@ class NixView(QMainWindow): self._quit_action.triggered.connect(self.on_quit) self.create_toolbar() - self.create_menu() - + self.create_menu() def create_toolbar(self): self._toolbar = QToolBar("My main toolbar") @@ -51,7 +50,6 @@ class NixView(QMainWindow): self._toolbar.addAction(self._quit_action) self.addToolBar(self._toolbar) - def create_menu(self): menu = self.menuBar() file_menu = menu.addMenu("&File") @@ -61,12 +59,20 @@ class NixView(QMainWindow): self.setMenuBar(menu) 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) + dlg = QFileDialog(self, 'Open nix data file', '', "NIX files (*.h5 *.nix)") + dlg.setFileMode(QFileDialog.ExistingFile) + filenames = None + if dlg.exec_(): + filenames = dlg.selectedFiles() + success, msg = self._file_handler.open("nix_test.h5") + self.statusBar().showMessage(msg, 5000) + self._file_close_action.setEnabled(success) + self._cw.show_file_content() def on_file_close(self, s): self._file_handler.close() + self._cw.reset() + self._file_close_action.setEnabled(False) self.statusBar().showMessage("Successfully closed current file", 1000) def on_quit(self, s): @@ -80,11 +86,32 @@ class CentralWidget(QWidget): super().__init__(parent=parent) splash = SplashScreen() - stack = QStackedLayout(self) - stack.addWidget(splash) - self.setLayout(stack) + self._file_view = FileView(self) + self._stack = QStackedLayout(self) + self._stack.addWidget(splash) + self._stack.addWidget(self._file_view) + self.setLayout(self._stack) self.setStyleSheet("background-color: white;") - + + def show_file_content(self): + self._stack.setCurrentIndex(1) + + def reset(self): + self._file_view.reset() + self._stack.setCurrentIndex(0) + + +class FileView(QWidget): + + def __init__(self, parent=None) -> None: + super().__init__(parent=parent) + self.setLayout(QVBoxLayout()) + self.layout().addWidget(QLabel("FileView")) + self._file_handler = FileHandler() + + def reset(self): + print("FileView ", self._file_handler.is_valid) + pass class SplashScreen(QWidget):