Skip to content

Commit

Permalink
#57 added pop up for large folder or folder with No mda files
Browse files Browse the repository at this point in the history
  • Loading branch information
rodolakis committed Jun 12, 2024
1 parent 7460589 commit a02b5eb
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 18 deletions.
63 changes: 45 additions & 18 deletions mdaviz/mainwindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from .opendialog import DIR_SETTINGS_KEY

UI_FILE = utils.getUiFileName(__file__)
MAX_FILES = 100
MAX_FILES = 500
MAX_RECENT_DIRS = 10


Expand Down Expand Up @@ -120,6 +120,23 @@ def doOpen(self, *args, **kw):
folder_list.insert(0, dir_name)
self.setFolderList(folder_list)

def doPopUp(self, message):
"""
User chose to open (connect with) a tiled server.
"""
from .popup import PopUp

popup = PopUp(self, message)
return popup.exec_() == QtWidgets.QDialog.Accepted

def proceed(self):
"""Handle the logic when the user clicks 'OK'."""
return True

def cancel(self):
"""Handle the logic when the user clicks 'Cancel'."""
return False

def reset_mainwindow(self):
self.setDataPath()
self.setMdaInfoList()
Expand Down Expand Up @@ -178,26 +195,36 @@ def onFolderSelected(self, folder_name):
else:
folder_path = Path(folder_name)
if folder_path.exists() and folder_path.is_dir(): # folder exists
mda_list = [utils.get_file_info(f) for f in folder_path.glob("*.mda")]
if mda_list:
self.setDataPath(folder_path)
mda_list = sorted(mda_list, key=lambda x: x["Name"])
mda_name_list = [entry["Name"] for entry in mda_list]
self.setMdaInfoList(mda_list)
self.setMdaFileList(mda_name_list)
self._addToRecentFolders(str(folder_path))
self.info.setText(f"{len(mda_list)} mda files")
layout = self.groupbox.layout()
if self.mvc_folder is None:
self.mvc_folder = MDA_MVC(self)
layout.addWidget(self.mvc_folder)
n_files = len([*folder_path.iterdir()])
answer = True
if n_files > MAX_FILES:
answer = self.doPopUp(f"The selected folder contains {n_files} files. \nDo you want to proceed?")
if answer:
mda_list = [utils.get_file_info(f) for f in folder_path.glob("*.mda")]
if mda_list:
self.setDataPath(folder_path)
mda_list = sorted(mda_list, key=lambda x: x["Name"])
mda_name_list = [entry["Name"] for entry in mda_list]
self.setMdaInfoList(mda_list)
self.setMdaFileList(mda_name_list)
self._addToRecentFolders(str(folder_path))
self.info.setText(f"{len(mda_list)} mda files")
layout = self.groupbox.layout()
if self.mvc_folder is None:
self.mvc_folder = MDA_MVC(self)
layout.addWidget(self.mvc_folder)
else:
# Always update the folder view since it is a new folder
self.mvc_folder.updateFolderView()
else:
# Always update the folder view since it is a new folder
self.mvc_folder.updateFolderView()
self.info.setText("No mda files")
self.doPopUp(f"No MDA files found.")
self.reset_mainwindow()
self.setStatus(f"\n{str(folder_path)!r} - No MDA files found.")

else:
self.info.setText("No mda files")
self.reset_mainwindow()
self.setStatus(f"\n{str(folder_path)!r} - No MDA files found.")
self.setStatus("Operation canceled.")
else:
self.reset_mainwindow()
self.setStatus(f"\n{str(folder_path)!r} - Path does not exist.")
Expand Down
31 changes: 31 additions & 0 deletions mdaviz/popup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

from PyQt5 import QtWidgets

from . import utils


class PopUp(QtWidgets.QDialog):
"""Load a generic About... Dialog as a .ui file."""

# UI file name matches this module, different extension
ui_file = utils.getUiFileName(__file__)

def __init__(self, parent, message):
self.parent = parent

super().__init__(parent)
utils.myLoadUi(self.ui_file, baseinstance=self)

self.message.setText(message)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)

def accept(self):
"""OK button was clicked"""
super().accept()
self.parent.proceed()

def reject(self):
"""Cancel button was clicked"""
super().reject()
self.parent.cancel()
35 changes: 35 additions & 0 deletions mdaviz/resources/popup.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>530</width>
<height>113</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="message">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

0 comments on commit a02b5eb

Please sign in to comment.