From d86c71c15bc00d31c5459b3d75a28fcd70813696 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 3 Jun 2022 13:23:51 +0200 Subject: [PATCH] Fix - added disabled icon to Site Queue --- .../sync_server/resources/disabled.png | Bin 0 -> 2368 bytes .../modules/sync_server/sync_server_module.py | 17 +++++++-- openpype/modules/sync_server/tray/widgets.py | 34 ++++++++++++------ openpype/tools/loader/model.py | 2 +- openpype/tools/loader/widgets.py | 14 ++++---- 5 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 openpype/modules/sync_server/resources/disabled.png diff --git a/openpype/modules/sync_server/resources/disabled.png b/openpype/modules/sync_server/resources/disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e036d7ef6a12a353551ddfc3e8a4e099c6506dd7 GIT binary patch literal 2368 zcmb_e2~ZPP7>*VZ@L-&JptjTPQmu-cJ+dU(EfJBRpoYW5gAP_+c3;R!k`38Kf-}}? zwXI5VMkdyC#wymMmU>MOoz_|qi=#}bPFwG)^{8UedNAtX^d*EyJ6_XiW;Xlwz3+Yh z_y6yEZ+B5{_PAbggW@zAO|Ps>^CWb~f>%rw`aiDhoQrO;-pqVOqv>52yt)LEdJooU zqW4I)Y3ek~L|%~HS|G}HsP((O2(8hir24%;D26I#heeXdgtzS7hhvgx!lx!%D2q28 zI;G6nK4_htZ4+h}3!I3jj>1y>JR)#I6<~h1%cJmq6CUE_Q9Ia8;#dfx7Mt+2U_fk| zB^OJVeGoHfX+oeV3Nvt8gB>^o2Q?C7D266!illV}Me!`nGe#`@!%;Y&=-?-r$A*KU zCll^eRWDDHWo2dBGM!fT6_GT@aU{i%3_~CUp_F@6;3qsvVh4j6DuPe)s*>!%f{ef} zm#QWlNo~);?TyfSlyIF;#YjK!lC+iz<`e>oLIme6^|?a9MS+Aa=!PCuL0CG1^*Uu$ zR-Ez^s3XJw2!Lv9u|#4#R*Tym38APNvrro0f;<+j*vh?-oCFoQ)F;4Vms*6^VM4mJ1 zj4Z7;5PE}7AoLEFC4imd2)&rhGLY37jSzOsH_Jk4aP@=p+joK}3y9;9GCg2)z;1L9 zMnOjtw1IUH00NGHc88Is05H-t*TI(Klh9@auFkAMRU%?E>h(HEB|8YwkjxMQU?BmF zMuDJcgWdpjlwPpwf{qWFh|iQ1w7livJ!FL?;g(CnLcZaF5Zn(YTnHKgig>tNdQ3f@ zD{^>#nG+(?rx>I?x*|K>?)0MW}YqG$8pT@d}vrbm?~5ZlLWtKmaz`NH81=2)md} z6Oa-OqR3KugC3c-T~lZ2oeWDOZ?_xvzeo>r3r^rEg6MQ5@&BI8^ZD|r$voP9|6ej> z@JwxY82NAWg~mFazi1&tUFc8`HY2YS^bmO=K@X~v54~=fpA$+nnyw?W%xSjFgQo+j z#eMVo9yr_BJaq3H#T88puo3~=xOSm)L;sV~h?_|<%bVg0x0!8G`w!({>(>Q-YgxB! z%J%I$UL4#lf8x%DXhHvr-BEVwdh=@wr!=0UYf~D(ZvFPbWlovfz4eut>i7f0h9vAT z%&&?5NS#2I?>9}a9upWexqfqQ=Yx5RN8LXLcoToso*=KRZtk&Q z&-%~urkI+qbbn6@46Hwo+3)9lQ#GJ;-sqg^1M3H0+R{6U-4gFVPS%~lzS4hr!Rj@d zG9~8vPf5#f^h~jKyS(D#Yi(zaFa2|0emyt6KIg=|yGJ)BXH;HvT{=GCudQiAk4gvc ztP#3@;D4*2bj{?v`*)WGKCjzt)fzKOJj$!Lf4$iH@b&rhb?>P{^Szl%i7(!deS7aM zzNT(;%PvkkVpGA2;=^|)aOd+1AhR#AZTa1q=XN!UtG86&n!S1Qi4(cwUglj+>*}kw z_eWoQv&fQq?|bERwfrnM z>C9Ms=!$h|YexhgCj3!b@GvemCN?%ErmBVMcW6QF3v+glZdz;el5Owqy%~SyllUg~ T){1$-Z=9@*Y;(<+!ufv#nIl6P literal 0 HcmV?d00001 diff --git a/openpype/modules/sync_server/sync_server_module.py b/openpype/modules/sync_server/sync_server_module.py index 7f541d52e3..698b296a52 100644 --- a/openpype/modules/sync_server/sync_server_module.py +++ b/openpype/modules/sync_server/sync_server_module.py @@ -926,9 +926,22 @@ class SyncServerModule(OpenPypeModule, ITrayModule): return enabled_projects - def is_project_enabled(self, project_name): + def is_project_enabled(self, project_name, single=False): + """Checks if 'project_name' is enabled for syncing. + 'get_sync_project_setting' is potentially expensive operation (pulls + settings for all projects if cached version is not available), using + project_settings for specific project should be faster. + Args: + project_name (str) + single (bool): use 'get_project_settings' method + """ if self.enabled: - project_settings = self.get_sync_project_setting(project_name) + if single: + project_settings = get_project_settings(project_name) + project_settings = \ + self._parse_sync_settings_from_settings(project_settings) + else: + project_settings = self.get_sync_project_setting(project_name) if project_settings and project_settings.get("enabled"): return True return False diff --git a/openpype/modules/sync_server/tray/widgets.py b/openpype/modules/sync_server/tray/widgets.py index 6aae9562cf..18de4d311d 100644 --- a/openpype/modules/sync_server/tray/widgets.py +++ b/openpype/modules/sync_server/tray/widgets.py @@ -122,11 +122,13 @@ class SyncProjectListWidget(QtWidgets.QWidget): self._model_reset = False selected_item = None - for project_name in self.sync_server.sync_project_settings.\ - keys(): + sync_settings = self.sync_server.sync_project_settings + for project_name in sync_settings.keys(): if self.sync_server.is_paused() or \ self.sync_server.is_project_paused(project_name): icon = self._get_icon("paused") + elif not sync_settings["enabled"]: + icon = self._get_icon("disabled") else: icon = self._get_icon("synced") @@ -578,10 +580,11 @@ class SyncRepresentationSummaryWidget(_SyncRepresentationWidget): ) def __init__(self, sync_server, project=None, parent=None): + import time + log.info("SyncRepresentationSummaryWidget start") super(SyncRepresentationSummaryWidget, self).__init__(parent) self.sync_server = sync_server - self._selected_ids = set() # keep last selected _id txt_filter = QtWidgets.QLineEdit() @@ -600,8 +603,11 @@ class SyncRepresentationSummaryWidget(_SyncRepresentationWidget): table_view = QtWidgets.QTableView() headers = [item[0] for item in self.default_widths] + start_time = time.time() model = SyncRepresentationSummaryModel(sync_server, headers, project, parent=self) + log.info("SyncRepresentationSummaryModel:: {}".format(time.time() - start_time)) + start_time = time.time() table_view.setModel(model) table_view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) table_view.setSelectionMode( @@ -625,7 +631,8 @@ class SyncRepresentationSummaryWidget(_SyncRepresentationWidget): column = table_view.model().get_header_index("priority") priority_delegate = delegates.PriorityDelegate(self) table_view.setItemDelegateForColumn(column, priority_delegate) - + log.info("SyncRepresentationSummaryWidget.2:: {}".format(time.time() - start_time)) + start_time = time.time() layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addLayout(top_bar_layout) @@ -633,27 +640,35 @@ class SyncRepresentationSummaryWidget(_SyncRepresentationWidget): self.table_view = table_view self.model = model - + log.info("SyncRepresentationSummaryWidget.3:: {}".format(time.time() - start_time)) + start_time = time.time() horizontal_header = HorizontalHeader(self) - + log.info("SyncRepresentationSummaryWidget.4:: {}".format(time.time() - start_time)) + start_time = time.time() table_view.setHorizontalHeader(horizontal_header) + log.info("SyncRepresentationSummaryWidget.4.1:: {}".format(time.time() - start_time)) + start_time = time.time() table_view.setSortingEnabled(True) - + log.info("SyncRepresentationSummaryWidget.5:: {}".format(time.time() - start_time)) + start_time = time.time() for column_name, width in self.default_widths: idx = model.get_header_index(column_name) table_view.setColumnWidth(idx, width) - + log.info("SyncRepresentationSummaryWidget.6:: {}".format(time.time() - start_time)) + start_time = time.time() table_view.doubleClicked.connect(self._double_clicked) self.txt_filter.textChanged.connect(lambda: model.set_word_filter( self.txt_filter.text())) table_view.customContextMenuRequested.connect(self._on_context_menu) - + log.info("SyncRepresentationSummaryWidget.7:: {}".format(time.time() - start_time)) + start_time = time.time() model.refresh_started.connect(self._save_scrollbar) model.refresh_finished.connect(self._set_scrollbar) model.modelReset.connect(self._set_selection) self.selection_model = self.table_view.selectionModel() self.selection_model.selectionChanged.connect(self._selection_changed) + log.info("SyncRepresentationSummaryWidget.end:: {}".format(time.time() - start_time)) def _prepare_menu(self, local_progress, remote_progress, is_multi, can_edit, status=None): @@ -963,7 +978,6 @@ class HorizontalHeader(QtWidgets.QHeaderView): super(HorizontalHeader, self).__init__(QtCore.Qt.Horizontal, parent) self._parent = parent self.checked_values = {} - self.setModel(self._parent.model) self.setSectionsClickable(True) diff --git a/openpype/tools/loader/model.py b/openpype/tools/loader/model.py index 6f39c428be..e6bef0a33a 100644 --- a/openpype/tools/loader/model.py +++ b/openpype/tools/loader/model.py @@ -89,7 +89,7 @@ class BaseRepresentationModel(object): self._last_manager_cache = now_time sync_server = self._modules_manager.modules_by_name["sync_server"] - if sync_server.is_project_enabled(project_name): + if sync_server.is_project_enabled(project_name, single=True): active_site = sync_server.get_active_site(project_name) active_provider = sync_server.get_provider_for_site( project_name, active_site) diff --git a/openpype/tools/loader/widgets.py b/openpype/tools/loader/widgets.py index 42fb62b632..5764085b6a 100644 --- a/openpype/tools/loader/widgets.py +++ b/openpype/tools/loader/widgets.py @@ -356,9 +356,10 @@ class SubsetWidget(QtWidgets.QWidget): enabled = False if project_name: self.model.reset_sync_server(project_name) - if self.model.sync_server: - enabled_proj = self.model.sync_server.get_enabled_projects() - enabled = project_name in enabled_proj + sync_server = self.model.sync_server + if sync_server: + enabled = sync_server.is_project_enabled(project_name, + single=True) lib.change_visibility(self.model, self.view, "repre_info", enabled) @@ -1228,9 +1229,10 @@ class RepresentationWidget(QtWidgets.QWidget): enabled = False if project_name: self.model.reset_sync_server(project_name) - if self.model.sync_server: - enabled_proj = self.model.sync_server.get_enabled_projects() - enabled = project_name in enabled_proj + sync_server = self.model.sync_server + if sync_server: + enabled = sync_server.is_project_enabled(project_name, + single=True) self.sync_server_enabled = enabled lib.change_visibility(self.model, self.tree_view,