Index: simulator/plugins/__init__.py =================================================================== diff -u -r9206e36aeff354823f2c37103d79f548221cd64c -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/__init__.py (.../__init__.py) (revision 9206e36aeff354823f2c37103d79f548221cd64c) +++ simulator/plugins/__init__.py (.../__init__.py) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,11 +1,13 @@ """ the package init file """ -from .ultrafiltration.loader import Loader as Ultrafiltration -from .inlinebloodpressures.loader import Loader as InlineBloodPressures -from .salinebolus.loader import Loader as SalineBolus -from .treatmentstates.loader import Loader as TreatmentStates -from .treatmentranges.loader import Loader as TreatmentRanges -from .heparin.loader import Loader as Heparin -from .alarms.loader import Loader as Alarms -from .createtreatment.loader import Loader as CreateTreatment +import os + +available_plugin_folders = sorted(os.listdir('./plugins')) +available_plugins = [] # to be used as global variable in the simulator +print('found plugin folders {}'.format(available_plugin_folders)) +for folder in available_plugin_folders: + if not folder.startswith('__') and not folder.startswith('.'): + exec('from .{0}.loader import Loader as {0}'.format(folder)) + available_plugins.append(folder) + Index: simulator/plugins/alarms/interface.ui =================================================================== diff -u -r69b2aacf31c5fdc28e078f87dbdee5c3ab672dd1 -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/alarms/interface.ui (.../interface.ui) (revision 69b2aacf31c5fdc28e078f87dbdee5c3ab672dd1) +++ simulator/plugins/alarms/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_salinebolus - + ui_interface + 0 @@ -11,7 +11,7 @@ - Heparin + &Alarms Index: simulator/plugins/alarms/loader.py =================================================================== diff -u -r9206e36aeff354823f2c37103d79f548221cd64c -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/alarms/loader.py (.../loader.py) (revision 9206e36aeff354823f2c37103d79f548221cd64c) +++ simulator/plugins/alarms/loader.py (.../loader.py) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -15,6 +15,8 @@ The Alarms ui loader class """ + canMaximize = True + btnTrigger: QtWidgets.QPushButton btnClear: QtWidgets.QPushButton spnAlarmID: QtWidgets.QSpinBox Index: simulator/plugins/createtreatment/interface.ui =================================================================== diff -u -r9206e36aeff354823f2c37103d79f548221cd64c -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/createtreatment/interface.ui (.../interface.ui) (revision 9206e36aeff354823f2c37103d79f548221cd64c) +++ simulator/plugins/createtreatment/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -35,7 +35,7 @@ color: rgb(238, 238, 236); -background-color: rgb(32, 74, 135); +background-color: rgb(78, 154, 6); Create Treatment @@ -146,7 +146,7 @@ color: rgb(238, 238, 236); -background-color: rgb(114, 159, 207); +background-color: rgb(115, 210, 22); Begin Index: simulator/plugins/heparin/interface.ui =================================================================== diff -u -r0a4b4e4653203852eae6d9edb24116f2147a7c3e -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/heparin/interface.ui (.../interface.ui) (revision 0a4b4e4653203852eae6d9edb24116f2147a7c3e) +++ simulator/plugins/heparin/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_salinebolus - + ui_interface + 0 Index: simulator/plugins/inlinebloodpressures/interface.ui =================================================================== diff -u -rc13dc6ba2410716a3f1c446e564085aeb9114a60 -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/inlinebloodpressures/interface.ui (.../interface.ui) (revision c13dc6ba2410716a3f1c446e564085aeb9114a60) +++ simulator/plugins/inlinebloodpressures/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_inlinebloodpressures - + ui_interface + 0 Index: simulator/plugins/salinebolus/interface.ui =================================================================== diff -u -rc13dc6ba2410716a3f1c446e564085aeb9114a60 -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/salinebolus/interface.ui (.../interface.ui) (revision c13dc6ba2410716a3f1c446e564085aeb9114a60) +++ simulator/plugins/salinebolus/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_salinebolus - + ui_interface + 0 Index: simulator/plugins/treatmentranges/interface.ui =================================================================== diff -u -rc13dc6ba2410716a3f1c446e564085aeb9114a60 -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/treatmentranges/interface.ui (.../interface.ui) (revision c13dc6ba2410716a3f1c446e564085aeb9114a60) +++ simulator/plugins/treatmentranges/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_treatmentranges - + ui_interface + 0 @@ -11,7 +11,7 @@ - Ranges + Adjustment Ranges Index: simulator/plugins/treatmentstates/interface.ui =================================================================== diff -u -rc13dc6ba2410716a3f1c446e564085aeb9114a60 -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/treatmentstates/interface.ui (.../interface.ui) (revision c13dc6ba2410716a3f1c446e564085aeb9114a60) +++ simulator/plugins/treatmentstates/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_treatmentstates - + ui_interface + 0 @@ -11,7 +11,7 @@ - States + Treatment States Index: simulator/plugins/ultrafiltration/interface.ui =================================================================== diff -u -rc13dc6ba2410716a3f1c446e564085aeb9114a60 -r15118be5139122e2129f00482d173d58503b338e --- simulator/plugins/ultrafiltration/interface.ui (.../interface.ui) (revision c13dc6ba2410716a3f1c446e564085aeb9114a60) +++ simulator/plugins/ultrafiltration/interface.ui (.../interface.ui) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -1,7 +1,7 @@ - ui_ultrafiltration - + ui_interface + 0 @@ -11,7 +11,7 @@ - Ultrafiltration + &Ultrafiltration Index: simulator/simulator/dynamicloader.py =================================================================== diff -u -r9206e36aeff354823f2c37103d79f548221cd64c -r15118be5139122e2129f00482d173d58503b338e --- simulator/simulator/dynamicloader.py (.../dynamicloader.py) (revision 9206e36aeff354823f2c37103d79f548221cd64c) +++ simulator/simulator/dynamicloader.py (.../dynamicloader.py) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -12,6 +12,10 @@ the parent class of all the run time loadable widgets """ + canMaximize = False + isVisible = False + menu_name = 'Dynamic Loader' + loader: QUiLoader window: QtWidgets.QWidget Index: simulator/simulator/loader.py =================================================================== diff -u -r9206e36aeff354823f2c37103d79f548221cd64c -r15118be5139122e2129f00482d173d58503b338e --- simulator/simulator/loader.py (.../loader.py) (revision 9206e36aeff354823f2c37103d79f548221cd64c) +++ simulator/simulator/loader.py (.../loader.py) (revision 15118be5139122e2129f00482d173d58503b338e) @@ -11,7 +11,7 @@ from simulator.dynamicloader import DynamicLoader -# later it's planed to load all the classes in plugin folder dynamically +# it loads all the classes in plugin folder dynamically # so used * in here to load all from plugins import * @@ -59,14 +59,11 @@ :return: none """ # loading/registering plugins - self.__register_plugin('TreatmentStates', TreatmentStates()) - self.__register_plugin('TreatmentRanges', TreatmentRanges(), True) - self.__register_plugin('Ultrafiltration', Ultrafiltration()) - self.__register_plugin('InlineBloodPressures', InlineBloodPressures()) - self.__register_plugin('SalineBolus', SalineBolus()) - self.__register_plugin('Heparin', Heparin(), True) - self.__register_plugin('Alarms', Alarms(), True, maximize=True) - self.__register_plugin('CreateTreatment', CreateTreatment()) + # the loaded_plugins has been filled and exposed + # from within the __init__.py in the plugins folder + # folders with '__' and '.' have been ignored. + for plugin in available_plugins: + self.__register_plugin(eval(plugin + '()')) def __init_actions(self): """ @@ -90,22 +87,24 @@ act.toggled.connect(window.setVisible) self.action_show_all.toggled.connect(act.setChecked) - def __register_plugin(self, name: str, obj: DynamicLoader, - add_separator: bool = False, visible: bool = False, maximize: bool = False): + def __register_plugin(self, obj: DynamicLoader, add_separator: bool = False): """ creates the plugin object and adds it to the mdi and creates an action menu for it - :param name: action menu title :param obj: the plugin object :return: False if the passed obj is None """ self.plugins.append(obj) wgt = obj.window sub = self.mdiArea.addSubWindow(wgt) + sub.setWindowFlags(Qt.WindowMinimizeButtonHint | Qt.WindowTitleHint) - if maximize: - sub.setWindowFlag(Qt.WindowMaximizeButtonHint, True) - sub.setVisible(visible) - self.__create_actions(name, sub) + sub.setWindowFlag(Qt.WindowMaximizeButtonHint, obj.canMaximize) + sub.setVisible(obj.isVisible) + + title = wgt.windowTitle() + self.__create_actions(title, sub) + wgt.setWindowTitle(wgt.setWindowTitle(title.replace('&', ''))) + if add_separator: self.menuView.addSeparator()