diff --git a/pype/modules/__init__.py b/pype/modules/__init__.py index 11157f24b1..00303aafc6 100644 --- a/pype/modules/__init__.py +++ b/pype/modules/__init__.py @@ -7,7 +7,7 @@ from .base import ( ModulesManager, TrayModulesManager ) - +from .settings_module import SettingsModule from .rest_api import ( RestApiModule, IRestApi @@ -44,6 +44,8 @@ __all__ = ( "ModulesManager", "TrayModulesManager", + "SettingsModule", + "UserModule", "IUserModule", diff --git a/pype/modules/base.py b/pype/modules/base.py index 72d0eb4503..0176384a59 100644 --- a/pype/modules/base.py +++ b/pype/modules/base.py @@ -390,7 +390,8 @@ class TrayModulesManager(ModulesManager): "Avalon", "Clockify", "Standalone Publish", - "Logging" + "Logging", + "settings" ) def __init__(self): diff --git a/pype/modules/settings_module.py b/pype/modules/settings_module.py new file mode 100644 index 0000000000..0651170148 --- /dev/null +++ b/pype/modules/settings_module.py @@ -0,0 +1,53 @@ +from . import PypeModule, ITrayModule + + +class SettingsModule(PypeModule, ITrayModule): + name = "settings" + + def initialize(self, _modules_settings): + # This module is always enabled + self.enabled = True + + # User role + # TODO should be changeable + self.user_role = "developer" + + # Tray attributes + self.settings_window = None + + def connect_with_modules(self, *_a, **_kw): + return + + def create_settings_window(self): + if self.settings_window: + return + from pype.tools.settings import MainWidget + self.settings_window = MainWidget(self.user_role) + + def show_settings_window(self): + if not self.settings_window: + raise AssertionError("Window is not initialized.") + + self.settings_window.show() + + # Pull window to the front. + self.settings_window.raise_() + self.settings_window.activateWindow() + + def tray_init(self): + self.create_settings_window() + + def tray_menu(self, tray_menu): + """Add **change credentials** option to tray menu.""" + from Qt import QtWidgets + + # Actions + action = QtWidgets.QAction("Settings", tray_menu) + action.triggered.connect(self.show_settings_window) + tray_menu.addAction(action) + + def tray_start(self): + return + + def tray_exit(self): + return diff --git a/pype/settings/lib.py b/pype/settings/lib.py index dfd4707dbf..11ade3abcd 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -80,10 +80,12 @@ def reset_default_settings(): def get_default_settings(): - global _DEFAULT_SETTINGS - if _DEFAULT_SETTINGS is None: - _DEFAULT_SETTINGS = load_jsons_from_dir(DEFAULTS_DIR) - return copy.deepcopy(_DEFAULT_SETTINGS) + # TODO add cacher + return load_jsons_from_dir(DEFAULTS_DIR) + # global _DEFAULT_SETTINGS + # if _DEFAULT_SETTINGS is None: + # _DEFAULT_SETTINGS = load_jsons_from_dir(DEFAULTS_DIR) + # return copy.deepcopy(_DEFAULT_SETTINGS) def load_json_file(fpath): diff --git a/pype/tools/settings/__main__.py b/pype/tools/settings/__main__.py index 2e27c28208..7e9f80a52c 100644 --- a/pype/tools/settings/__main__.py +++ b/pype/tools/settings/__main__.py @@ -6,9 +6,6 @@ from Qt import QtWidgets, QtGui if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) - - stylesheet = settings.style.load_stylesheet() - app.setStyleSheet(stylesheet) app.setWindowIcon(QtGui.QIcon(settings.style.app_icon_path())) _develop = "-d" in sys.argv or "--develop" in sys.argv diff --git a/pype/tools/settings/settings/widgets/window.py b/pype/tools/settings/settings/widgets/window.py index 670d00fb2b..2dd5111d74 100644 --- a/pype/tools/settings/settings/widgets/window.py +++ b/pype/tools/settings/settings/widgets/window.py @@ -1,5 +1,6 @@ -from Qt import QtWidgets +from Qt import QtWidgets, QtGui from .base import SystemWidget, ProjectWidget +from .. import style class MainWidget(QtWidgets.QWidget): @@ -13,6 +14,10 @@ class MainWidget(QtWidgets.QWidget): self.resize(self.widget_width, self.widget_height) + stylesheet = style.load_stylesheet() + self.setStyleSheet(stylesheet) + self.setWindowIcon(QtGui.QIcon(style.app_icon_path())) + header_tab_widget = QtWidgets.QTabWidget(parent=self) studio_widget = SystemWidget(user_role, header_tab_widget)