mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
changed way how site inputs are prepared
This commit is contained in:
parent
b82faf05eb
commit
f263f812a5
1 changed files with 58 additions and 21 deletions
|
|
@ -222,7 +222,7 @@ class SitesWidget(QtWidgets.QWidget):
|
||||||
|
|
||||||
self.modules_manager = modules_manager
|
self.modules_manager = modules_manager
|
||||||
self.project_settings = project_settings
|
self.project_settings = project_settings
|
||||||
self.site_widgets = []
|
self.input_objects = {}
|
||||||
self.local_project_settings = None
|
self.local_project_settings = None
|
||||||
self.local_project_settings_orig = None
|
self.local_project_settings_orig = None
|
||||||
self._project_name = None
|
self._project_name = None
|
||||||
|
|
@ -253,6 +253,7 @@ class SitesWidget(QtWidgets.QWidget):
|
||||||
self.active_site_widget = active_site_widget
|
self.active_site_widget = active_site_widget
|
||||||
self.remote_site_widget = remote_site_widget
|
self.remote_site_widget = remote_site_widget
|
||||||
|
|
||||||
|
self.content_widget = content_widget
|
||||||
self.content_layout = content_layout
|
self.content_layout = content_layout
|
||||||
|
|
||||||
def _clear_widgets(self):
|
def _clear_widgets(self):
|
||||||
|
|
@ -260,9 +261,9 @@ class SitesWidget(QtWidgets.QWidget):
|
||||||
item = self.content_layout.itemAt(0)
|
item = self.content_layout.itemAt(0)
|
||||||
item.widget().hide()
|
item.widget().hide()
|
||||||
self.content_layout.removeItem(item)
|
self.content_layout.removeItem(item)
|
||||||
self.site_widgets = []
|
self.input_objects = {}
|
||||||
|
|
||||||
def _get_active_sites(self):
|
def _get_sites_inputs(self):
|
||||||
sync_server_module = (
|
sync_server_module = (
|
||||||
self.modules_manager.modules_by_name["sync_server"]
|
self.modules_manager.modules_by_name["sync_server"]
|
||||||
)
|
)
|
||||||
|
|
@ -323,39 +324,75 @@ class SitesWidget(QtWidgets.QWidget):
|
||||||
if self._project_name is None:
|
if self._project_name is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
roots_entity = (
|
|
||||||
self.project_settings[PROJECT_ANATOMY_KEY][LOCAL_ROOTS_KEY]
|
|
||||||
)
|
|
||||||
# Site label
|
# Site label
|
||||||
for site_name in self._get_active_sites():
|
for site_name, site_inputs in self._get_sites_inputs():
|
||||||
site_widget = QtWidgets.QWidget(self)
|
site_widget = QtWidgets.QWidget(self.content_widget)
|
||||||
site_layout = QtWidgets.QVBoxLayout(site_widget)
|
site_layout = QtWidgets.QVBoxLayout(site_widget)
|
||||||
|
|
||||||
site_label = QtWidgets.QLabel(site_name, site_widget)
|
site_label = QtWidgets.QLabel(site_name, site_widget)
|
||||||
|
|
||||||
site_layout.addWidget(site_label)
|
inputs_widget = QtWidgets.QWidget(site_widget)
|
||||||
|
inputs_layout = QtWidgets.QGridLayout(inputs_widget)
|
||||||
|
|
||||||
# Root inputs
|
site_input_objects = {}
|
||||||
for root_name, path_entity in roots_entity.items():
|
for idx, input_def in enumerate(site_inputs):
|
||||||
platform_entity = path_entity[platform.system().lower()]
|
key = input_def["key"]
|
||||||
root_widget = RootInputWidget(
|
label = input_def.get("label") or key
|
||||||
self.local_project_settings,
|
label_widget = ProxyLabelWidget(label, None, inputs_widget)
|
||||||
self.local_project_settings_orig,
|
|
||||||
platform_entity,
|
value_item = self._prepare_value_item(site_name, key)
|
||||||
root_name,
|
|
||||||
self._project_name,
|
input_obj = DynamicInputItem(
|
||||||
|
input_def,
|
||||||
site_name,
|
site_name,
|
||||||
site_widget
|
value_item,
|
||||||
|
label_widget,
|
||||||
|
inputs_widget
|
||||||
)
|
)
|
||||||
|
input_obj.value_changed.connect(self._on_input_value_change)
|
||||||
|
site_input_objects[key] = input_obj
|
||||||
|
inputs_layout.addWidget(label_widget, idx, 0)
|
||||||
|
inputs_layout.addWidget(input_obj.input_widget, idx, 1)
|
||||||
|
|
||||||
site_layout.addWidget(root_widget)
|
site_layout.addWidget(site_label)
|
||||||
|
site_layout.addWidget(inputs_widget)
|
||||||
|
|
||||||
self.site_widgets.append(site_widget)
|
|
||||||
self.content_layout.addWidget(site_widget)
|
self.content_layout.addWidget(site_widget)
|
||||||
|
self.input_objects[site_name] = site_input_objects
|
||||||
|
|
||||||
# Add spacer so other widgets are squeezed to top
|
# Add spacer so other widgets are squeezed to top
|
||||||
self.content_layout.addWidget(SpacerWidget(self), 1)
|
self.content_layout.addWidget(SpacerWidget(self), 1)
|
||||||
|
|
||||||
|
def _on_input_value_change(self, site_name, key):
|
||||||
|
if (
|
||||||
|
site_name not in self.input_objects
|
||||||
|
or key not in self.input_objects[site_name]
|
||||||
|
):
|
||||||
|
return
|
||||||
|
|
||||||
|
input_obj = self.input_objects[site_name][key]
|
||||||
|
value = input_obj.current_value
|
||||||
|
|
||||||
|
if not value:
|
||||||
|
if self._project_name not in self.local_project_settings:
|
||||||
|
return
|
||||||
|
|
||||||
|
project_values = self.local_project_settings[self._project_name]
|
||||||
|
if site_name not in project_values:
|
||||||
|
return
|
||||||
|
|
||||||
|
project_values[site_name][key] = None
|
||||||
|
|
||||||
|
else:
|
||||||
|
if self._project_name not in self.local_project_settings:
|
||||||
|
self.local_project_settings[self._project_name] = {}
|
||||||
|
|
||||||
|
project_values = self.local_project_settings[self._project_name]
|
||||||
|
if site_name not in project_values:
|
||||||
|
project_values[site_name] = {}
|
||||||
|
|
||||||
|
project_values[site_name][key] = value
|
||||||
|
|
||||||
def update_local_settings(self, local_project_settings):
|
def update_local_settings(self, local_project_settings):
|
||||||
self.local_project_settings = local_project_settings
|
self.local_project_settings = local_project_settings
|
||||||
self.local_project_settings_orig = copy.deepcopy(
|
self.local_project_settings_orig = copy.deepcopy(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue