From dbea725e75e6c01bee9de55cbb95bb486ffbddc3 Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan.grewe@g-node.org>
Date: Sun, 27 Dec 2020 12:28:51 +0100
Subject: [PATCH] [main] file open dlg, open,close and quit working

---
 main_window.py | 57 +++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 42 insertions(+), 15 deletions(-)

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):