mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
active and remote site comboboxes refers to project settings
This commit is contained in:
parent
baa5b07610
commit
812abd3a90
1 changed files with 60 additions and 25 deletions
|
|
@ -12,6 +12,7 @@ from .widgets import (
|
|||
)
|
||||
|
||||
LOCAL_ROOTS_KEY = "roots"
|
||||
NOT_SET = type("NOT_SET", (), {})()
|
||||
|
||||
|
||||
def get_active_sites(project_settings):
|
||||
|
|
@ -94,7 +95,6 @@ class RootInputWidget(QtWidgets.QWidget):
|
|||
|
||||
self.value_input = value_input
|
||||
|
||||
self.is_default_project = is_default_project
|
||||
self.studio_value = platform_root_entity.value
|
||||
self.default_value = default_input_value
|
||||
self.project_value = project_value
|
||||
|
|
@ -203,7 +203,6 @@ class _SiteCombobox(QtWidgets.QWidget):
|
|||
self.local_project_settings = None
|
||||
self.local_project_settings_orig = None
|
||||
self.project_name = None
|
||||
self.is_default_project = None
|
||||
|
||||
self.default_override_value = None
|
||||
self.project_override_value = None
|
||||
|
|
@ -281,13 +280,22 @@ class _SiteCombobox(QtWidgets.QWidget):
|
|||
self._show_actions()
|
||||
|
||||
def _remove_from_local(self):
|
||||
if (
|
||||
self.project_name != DEFAULT_PROJECT_KEY
|
||||
and self.default_override_value
|
||||
):
|
||||
settings_value = self._get_value_from_project_settings()
|
||||
combobox_value = None
|
||||
if self.project_name == DEFAULT_PROJECT_KEY:
|
||||
combobox_value = self._get_local_settings_item(DEFAULT_PROJECT_KEY)
|
||||
if combobox_value:
|
||||
idx = self.combobox_input.findText(combobox_value)
|
||||
if idx < 0:
|
||||
combobox_value = None
|
||||
|
||||
if not combobox_value:
|
||||
combobox_value = settings_value
|
||||
|
||||
if combobox_value:
|
||||
_project_name = self.project_name
|
||||
self.project_name = None
|
||||
self._set_current_text(self.default_override_value)
|
||||
self._set_current_text(combobox_value)
|
||||
self.project_name = _project_name
|
||||
|
||||
self._set_local_settings_value("")
|
||||
|
|
@ -300,19 +308,19 @@ class _SiteCombobox(QtWidgets.QWidget):
|
|||
def _add_actions(self, menu, actions_mapping):
|
||||
# TODO better labels
|
||||
if self.project_name == DEFAULT_PROJECT_KEY:
|
||||
if self.default_override_value:
|
||||
action = QtWidgets.QAction("Remove from default")
|
||||
callback = self._remove_from_local
|
||||
else:
|
||||
action = QtWidgets.QAction("Add to default")
|
||||
callback = self._add_to_local
|
||||
remove_label = "Remove from default"
|
||||
add_label = "Add to default"
|
||||
else:
|
||||
if self.project_override_value:
|
||||
action = QtWidgets.QAction("Remove from project")
|
||||
callback = self._remove_from_local
|
||||
else:
|
||||
action = QtWidgets.QAction("Add to project")
|
||||
callback = self._add_to_local
|
||||
remove_label = "Remove from project"
|
||||
add_label = "Add to project"
|
||||
|
||||
has_value = self._get_local_settings_item(self.project_name)
|
||||
if has_value:
|
||||
action = QtWidgets.QAction(remove_label)
|
||||
callback = self._remove_from_local
|
||||
else:
|
||||
action = QtWidgets.QAction(add_label)
|
||||
callback = self._add_to_local
|
||||
|
||||
actions_mapping[action] = callback
|
||||
menu.addAction(action)
|
||||
|
|
@ -356,12 +364,12 @@ class _SiteCombobox(QtWidgets.QWidget):
|
|||
self.update_style()
|
||||
return
|
||||
|
||||
self.is_default_project = bool(project_name == DEFAULT_PROJECT_KEY)
|
||||
is_default_project = bool(project_name == DEFAULT_PROJECT_KEY)
|
||||
site_items = self._get_project_sites()
|
||||
self.combobox_input.addItems(site_items)
|
||||
|
||||
default_item = self._get_local_settings_item(DEFAULT_PROJECT_KEY)
|
||||
if self.is_default_project:
|
||||
if is_default_project:
|
||||
project_item = None
|
||||
else:
|
||||
project_item = self._get_local_settings_item(project_name)
|
||||
|
|
@ -379,7 +387,14 @@ class _SiteCombobox(QtWidgets.QWidget):
|
|||
self.default_override_value = default_item
|
||||
if index is None:
|
||||
index = idx
|
||||
if index:
|
||||
|
||||
if index is None:
|
||||
settings_value = self._get_value_from_project_settings()
|
||||
idx = self.combobox_input.findText(settings_value)
|
||||
if idx >= 0:
|
||||
index = idx
|
||||
|
||||
if index is not None:
|
||||
self.combobox_input.setCurrentIndex(index)
|
||||
|
||||
self.project_name = project_name
|
||||
|
|
@ -406,13 +421,20 @@ class _SiteCombobox(QtWidgets.QWidget):
|
|||
)
|
||||
)
|
||||
|
||||
def _get_local_settings_item(self, project_name, data=None):
|
||||
def _get_local_settings_item(self, project_name=None, data=None):
|
||||
raise NotImplementedError(
|
||||
"{}`_get_local_settings_item` not implemented".format(
|
||||
self.__class__.__name__
|
||||
)
|
||||
)
|
||||
|
||||
def _get_value_from_project_settings(self):
|
||||
raise NotImplementedError(
|
||||
"{}`_get_value_from_project_settings` not implemented".format(
|
||||
self.__class__.__name__
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AciveSiteCombo(_SiteCombobox):
|
||||
input_label = "Active site"
|
||||
|
|
@ -420,7 +442,10 @@ class AciveSiteCombo(_SiteCombobox):
|
|||
def _get_project_sites(self):
|
||||
return get_active_sites(self.project_settings)
|
||||
|
||||
def _get_local_settings_item(self, project_name, data=None):
|
||||
def _get_local_settings_item(self, project_name=None, data=None):
|
||||
if project_name is None:
|
||||
project_name = self.project_name
|
||||
|
||||
if data is None:
|
||||
data = self.local_project_settings
|
||||
project_values = data.get(project_name)
|
||||
|
|
@ -429,6 +454,10 @@ class AciveSiteCombo(_SiteCombobox):
|
|||
value = project_values.get("active_site")
|
||||
return value
|
||||
|
||||
def _get_value_from_project_settings(self):
|
||||
global_entity = self.project_settings["project_settings"]["global"]
|
||||
return global_entity["sync_server"]["config"]["active_site"].value
|
||||
|
||||
def _set_local_settings_value(self, value):
|
||||
if self.project_name not in self.local_project_settings:
|
||||
self.local_project_settings[self.project_name] = {}
|
||||
|
|
@ -443,7 +472,9 @@ class RemoteSiteCombo(_SiteCombobox):
|
|||
sites_entity = global_entity["sync_server"]["sites"]
|
||||
return tuple(sites_entity.keys())
|
||||
|
||||
def _get_local_settings_item(self, project_name, data=None):
|
||||
def _get_local_settings_item(self, project_name=None, data=None):
|
||||
if project_name is None:
|
||||
project_name = self.project_name
|
||||
if data is None:
|
||||
data = self.local_project_settings
|
||||
project_values = data.get(project_name)
|
||||
|
|
@ -452,6 +483,10 @@ class RemoteSiteCombo(_SiteCombobox):
|
|||
value = project_values.get("remote_site")
|
||||
return value
|
||||
|
||||
def _get_value_from_project_settings(self):
|
||||
global_entity = self.project_settings["project_settings"]["global"]
|
||||
return global_entity["sync_server"]["config"]["remote_site"].value
|
||||
|
||||
def _set_local_settings_value(self, value):
|
||||
if self.project_name not in self.local_project_settings:
|
||||
self.local_project_settings[self.project_name] = {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue