Skip to content

Commit

Permalink
Add configuration editor (#161)
Browse files Browse the repository at this point in the history
* Checking function

* Add config write function

* pylint

* Separate json functions

* Layout for chekc widget

* Adding new widget without functionality

* Config editor and config creator. #158

* Button wording

* Remove unneccessary globals

* Quotes

* Pylint

* Pylint

* update info tab

* pylint

* pylint

* Remove comments. Windows tested!!

* Extra exception for PRC < 2.0.0

* Update ibridgesgui/config.py

Co-authored-by: qubixes <44498096+qubixes@users.noreply.github.com>

* TypeError -> ValueError

* GENERIC irods_env preset

* No WindowStaysOnTopHint

* Remove incomplete import

* Use network check from ibridges 0.1.6

* Ruff

* Add dependency ibridges 0.1.6

* Ruff

* Some cosmetic in output

---------

Co-authored-by: Staiger, Christine <christine.staiger@wur.nl>
Co-authored-by: qubixes <44498096+qubixes@users.noreply.github.com>
  • Loading branch information
3 people committed May 14, 2024
1 parent 5d34d9a commit 9dba434
Show file tree
Hide file tree
Showing 16 changed files with 879 additions and 548 deletions.
2 changes: 1 addition & 1 deletion .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ max-module-lines=2000
#ignored-argument-names=_.*|^ignored_|^unused_|rule_args|callback|rei

# Catching too general exception Exception
disable=W0718
disable=W0718,fixme

# C++ modules of PyQt6 not visible to pylint
extension-pkg-whitelist=PyQt6
56 changes: 0 additions & 56 deletions ibridgesgui/IrodsInfo.py

This file was deleted.

79 changes: 0 additions & 79 deletions ibridgesgui/IrodsLogin.py

This file was deleted.

81 changes: 48 additions & 33 deletions ibridgesgui/__main__.py
Original file line number Diff line number Diff line change
@@ -1,85 +1,90 @@
#!/usr/bin/env python3
"""iBridges GUI startup script."""
import sys
import logging
import sys
from pathlib import Path

import PyQt6.QtWidgets
import PyQt6.uic
import setproctitle

from ibridgesgui import ui_files
from ibridgesgui.browser import Browser
from ibridgesgui.config import get_log_level, init_logger, set_log_level
from ibridgesgui.gui_utils import UI_FILE_DIR
from ibridgesgui.info import Info
from ibridgesgui.login import Login
from ibridgesgui.config import get_log_level, set_log_level, init_logger
from ibridgesgui.popup_widgets import CheckConfig
from ibridgesgui.ui_files.MainMenu import Ui_MainWindow

# Global constants
THIS_APPLICATION = 'ibridges-gui'
THIS_APPLICATION = "ibridges-gui"

# Application globals
app = PyQt6.QtWidgets.QApplication(sys.argv)
widget = PyQt6.QtWidgets.QStackedWidget()

class MainMenu(PyQt6.QtWidgets.QMainWindow, ui_files.MainMenu.Ui_MainWindow):
"""GUI Main Menu"""
class MainMenu(PyQt6.QtWidgets.QMainWindow, Ui_MainWindow):
"""Set up the GUI Main Menu."""

def __init__(self, widget, app_name):
def __init__(self, parent_widget, app_name):
"""Initialise the main window."""
super().__init__()
if getattr(sys, 'frozen', False):
if getattr(sys, "frozen", False):
super().setupUi(self)
else:
PyQt6.uic.loadUi(UI_FILE_DIR/'MainMenu.ui', self)
PyQt6.uic.loadUi(UI_FILE_DIR/"MainMenu.ui", self)

self.logger = logging.getLogger(app_name)
self.irods_path = Path("~", ".irods").expanduser()
self.app_name = app_name
self.ui_tabs_lookup = {
'tabBrowser': self.init_browser_tab,
"tabBrowser": self.init_browser_tab,
#'tabUpDownload': self.setupTabUpDownload,
#'tabDataBundle': self.setupTabDataBundle,
#'tabCreateTicket': self.setupTabCreateTicket,
#'tabELNData': self.setupTabELNData,
#'tabAmberWorkflow': self.setupTabAmberWorkflow,
'tabInfo': self.init_info_tab
"tabInfo": self.init_info_tab
#'tabExample': self.setupTabExample,
}

self.widget = widget
self.parent_widget = parent_widget
self.session = None
self.session_dict = {}
self.actionConnect.triggered.connect(self.connect)
self.actionExit.triggered.connect(self.exit)
self.actionCloseSession.triggered.connect(self.disconnect)
self.actionAdd_configuration.triggered.connect(self.create_env_file)
self.actionCheck_configuration.triggered.connect(self.inspect_env_file)
self.tabWidget.setCurrentIndex(0)

def disconnect(self):
"""Close iRODS session"""
if 'session' in self.session_dict:
session = self.session_dict['session']
self.logger.info('Disconnecting %s from %s', session.username, session.host)
self.session_dict['session'].close()
"""Close iRODS session."""
if "session" in self.session_dict:
session = self.session_dict["session"]
self.logger.info("Disconnecting %s from %s", session.username, session.host)
self.session_dict["session"].close()
self.session_dict.clear()
self.tabWidget.clear()


def connect(self):
"""Create iRODS session"""
"""Create iRODS session."""
# Trick to get the session object from the QDialog
login_window = Login(self.session_dict, self.app_name)
login_window.exec()
if 'session' in self.session_dict:
self.session = self.session_dict['session']
if "session" in self.session_dict:
self.session = self.session_dict["session"]
try:
self.setup_tabs()
except:
self.session = None
raise

def exit(self):
"""Quit program"""
"""Quit program."""
quit_msg = "Are you sure you want to exit the program?"
reply = PyQt6.QtWidgets.QMessageBox.question(
self, 'Message', quit_msg,
self, "Message", quit_msg,
PyQt6.QtWidgets.QMessageBox.StandardButton.Yes,
PyQt6.QtWidgets.QMessageBox.StandardButton.No)
if reply == PyQt6.QtWidgets.QMessageBox.StandardButton.Yes:
Expand All @@ -88,35 +93,45 @@ def exit(self):
pass

def setup_tabs(self):
"""Init tab view"""
"""Init tab view."""
for tab_fun in self.ui_tabs_lookup.values():
tab_fun()
#self.ui_tabs_lookup[tab_name]()

def init_info_tab(self):
"""Create info"""
"""Create info."""
irods_info = Info(self.session)
self.tabWidget.addTab(irods_info, "Info")

def init_browser_tab(self):
"""Create browser"""
"""Create browser."""
irods_browser = Browser(self.session, self.app_name)
self.tabWidget.addTab(irods_browser, "Browser")

def create_env_file(self):
"""Populate drop down menu to create a new environment.json."""
create_widget = CheckConfig(self.logger, self.irods_path)
create_widget.exec()

def inspect_env_file(self):
"""Init drop down menu to inspect an environment.json."""
create_widget = CheckConfig(self.logger, self.irods_path)
create_widget.exec()

def main():
"""Main function"""
"""Call main function."""
setproctitle.setproctitle(THIS_APPLICATION)

log_level = get_log_level()
if log_level is not None:
init_logger(THIS_APPLICATION, log_level)
else:
set_log_level('debug')
init_logger(THIS_APPLICATION, 'debug')

main_app = MainMenu(widget, THIS_APPLICATION)
widget.addWidget(main_app)
widget.show()
set_log_level("debug")
init_logger(THIS_APPLICATION, "debug")
main_widget = PyQt6.QtWidgets.QStackedWidget()
main_app = MainMenu(main_widget, THIS_APPLICATION)
main_widget.addWidget(main_app)
main_widget.show()
app.exec()

if __name__ == "__main__":
Expand Down
Loading

0 comments on commit 9dba434

Please sign in to comment.