mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Merge pull request #3367 from pypeclub/bugfix/OP-3427_Nuke-publisher-tool-hiding-unexpectedly--
Pyblish Pype: Hiding/Close issues
This commit is contained in:
commit
adbabe2249
1 changed files with 34 additions and 55 deletions
|
|
@ -468,10 +468,8 @@ class Window(QtWidgets.QDialog):
|
||||||
current_page == "terminal"
|
current_page == "terminal"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.state = {
|
self._current_page = current_page
|
||||||
"is_closing": False,
|
self._hidden_for_plugin_process = False
|
||||||
"current_page": current_page
|
|
||||||
}
|
|
||||||
|
|
||||||
self.tabs[current_page].setChecked(True)
|
self.tabs[current_page].setChecked(True)
|
||||||
|
|
||||||
|
|
@ -590,14 +588,14 @@ class Window(QtWidgets.QDialog):
|
||||||
target_page = page
|
target_page = page
|
||||||
if direction is None:
|
if direction is None:
|
||||||
direction = -1
|
direction = -1
|
||||||
elif name == self.state["current_page"]:
|
elif name == self._current_page:
|
||||||
previous_page = page
|
previous_page = page
|
||||||
if direction is None:
|
if direction is None:
|
||||||
direction = 1
|
direction = 1
|
||||||
else:
|
else:
|
||||||
page.setVisible(False)
|
page.setVisible(False)
|
||||||
|
|
||||||
self.state["current_page"] = target
|
self._current_page = target
|
||||||
self.slide_page(previous_page, target_page, direction)
|
self.slide_page(previous_page, target_page, direction)
|
||||||
|
|
||||||
def slide_page(self, previous_page, target_page, direction):
|
def slide_page(self, previous_page, target_page, direction):
|
||||||
|
|
@ -684,7 +682,7 @@ class Window(QtWidgets.QDialog):
|
||||||
comment_visible=None,
|
comment_visible=None,
|
||||||
terminal_filters_visibile=None
|
terminal_filters_visibile=None
|
||||||
):
|
):
|
||||||
target = self.state["current_page"]
|
target = self._current_page
|
||||||
comment_visibility = (
|
comment_visibility = (
|
||||||
not self.perspective_widget.isVisible()
|
not self.perspective_widget.isVisible()
|
||||||
and not target == "terminal"
|
and not target == "terminal"
|
||||||
|
|
@ -845,7 +843,7 @@ class Window(QtWidgets.QDialog):
|
||||||
|
|
||||||
def apply_log_suspend_value(self, value):
|
def apply_log_suspend_value(self, value):
|
||||||
self._suspend_logs = value
|
self._suspend_logs = value
|
||||||
if self.state["current_page"] == "terminal":
|
if self._current_page == "terminal":
|
||||||
self.tabs["overview"].setChecked(True)
|
self.tabs["overview"].setChecked(True)
|
||||||
|
|
||||||
self.tabs["terminal"].setVisible(not self._suspend_logs)
|
self.tabs["terminal"].setVisible(not self._suspend_logs)
|
||||||
|
|
@ -882,9 +880,21 @@ class Window(QtWidgets.QDialog):
|
||||||
visibility = True
|
visibility = True
|
||||||
if hasattr(plugin, "hide_ui_on_process") and plugin.hide_ui_on_process:
|
if hasattr(plugin, "hide_ui_on_process") and plugin.hide_ui_on_process:
|
||||||
visibility = False
|
visibility = False
|
||||||
|
self._hidden_for_plugin_process = not visibility
|
||||||
|
|
||||||
if self.isVisible() != visibility:
|
self._ensure_visible(visibility)
|
||||||
self.setVisible(visibility)
|
|
||||||
|
def _ensure_visible(self, visible):
|
||||||
|
if self.isVisible() == visible:
|
||||||
|
return
|
||||||
|
|
||||||
|
if not visible:
|
||||||
|
self.setVisible(visible)
|
||||||
|
else:
|
||||||
|
self.show()
|
||||||
|
self.raise_()
|
||||||
|
self.activateWindow()
|
||||||
|
self.showNormal()
|
||||||
|
|
||||||
def on_plugin_action_menu_requested(self, pos):
|
def on_plugin_action_menu_requested(self, pos):
|
||||||
"""The user right-clicked on a plug-in
|
"""The user right-clicked on a plug-in
|
||||||
|
|
@ -955,7 +965,7 @@ class Window(QtWidgets.QDialog):
|
||||||
self.intent_box.setEnabled(True)
|
self.intent_box.setEnabled(True)
|
||||||
|
|
||||||
# Refresh tab
|
# Refresh tab
|
||||||
self.on_tab_changed(self.state["current_page"])
|
self.on_tab_changed(self._current_page)
|
||||||
self.update_compatibility()
|
self.update_compatibility()
|
||||||
|
|
||||||
self.button_suspend_logs.setEnabled(False)
|
self.button_suspend_logs.setEnabled(False)
|
||||||
|
|
@ -1027,8 +1037,9 @@ class Window(QtWidgets.QDialog):
|
||||||
|
|
||||||
self._update_state()
|
self._update_state()
|
||||||
|
|
||||||
if not self.isVisible():
|
if self._hidden_for_plugin_process:
|
||||||
self.setVisible(True)
|
self._hidden_for_plugin_process = False
|
||||||
|
self._ensure_visible(True)
|
||||||
|
|
||||||
def on_was_skipped(self, plugin):
|
def on_was_skipped(self, plugin):
|
||||||
plugin_item = self.plugin_model.plugin_items[plugin.id]
|
plugin_item = self.plugin_model.plugin_items[plugin.id]
|
||||||
|
|
@ -1103,8 +1114,9 @@ class Window(QtWidgets.QDialog):
|
||||||
plugin_item, instance_item
|
plugin_item, instance_item
|
||||||
)
|
)
|
||||||
|
|
||||||
if not self.isVisible():
|
if self._hidden_for_plugin_process:
|
||||||
self.setVisible(True)
|
self._hidden_for_plugin_process = False
|
||||||
|
self._ensure_visible(True)
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
@ -1223,53 +1235,20 @@ class Window(QtWidgets.QDialog):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Make it snappy, but take care to clean it all up.
|
self.info(self.tr("Closing.."))
|
||||||
# TODO(marcus): Enable GUI to return on problem, such
|
|
||||||
# as asking whether or not the user really wants to quit
|
|
||||||
# given there are things currently running.
|
|
||||||
self.hide()
|
|
||||||
|
|
||||||
if self.state["is_closing"]:
|
if self.controller.is_running:
|
||||||
|
self.info(self.tr("..as soon as processing is finished.."))
|
||||||
|
self.controller.stop()
|
||||||
|
|
||||||
# Explicitly clear potentially referenced data
|
self.info(self.tr("Cleaning up controller.."))
|
||||||
self.info(self.tr("Cleaning up models.."))
|
self.controller.cleanup()
|
||||||
self.intent_model.deleteLater()
|
|
||||||
self.plugin_model.deleteLater()
|
|
||||||
self.terminal_model.deleteLater()
|
|
||||||
self.terminal_proxy.deleteLater()
|
|
||||||
self.plugin_proxy.deleteLater()
|
|
||||||
|
|
||||||
self.overview_instance_view.setModel(None)
|
self.overview_instance_view.setModel(None)
|
||||||
self.overview_plugin_view.setModel(None)
|
self.overview_plugin_view.setModel(None)
|
||||||
self.terminal_view.setModel(None)
|
self.terminal_view.setModel(None)
|
||||||
|
|
||||||
self.info(self.tr("Cleaning up controller.."))
|
event.accept()
|
||||||
self.controller.cleanup()
|
|
||||||
|
|
||||||
self.info(self.tr("All clean!"))
|
|
||||||
self.info(self.tr("Good bye"))
|
|
||||||
return super(Window, self).closeEvent(event)
|
|
||||||
|
|
||||||
self.info(self.tr("Closing.."))
|
|
||||||
|
|
||||||
def on_problem():
|
|
||||||
self.heads_up(
|
|
||||||
"Warning", "Had trouble closing down. "
|
|
||||||
"Please tell someone and try again."
|
|
||||||
)
|
|
||||||
self.show()
|
|
||||||
|
|
||||||
if self.controller.is_running:
|
|
||||||
self.info(self.tr("..as soon as processing is finished.."))
|
|
||||||
self.controller.stop()
|
|
||||||
self.finished.connect(self.close)
|
|
||||||
util.defer(200, on_problem)
|
|
||||||
return event.ignore()
|
|
||||||
|
|
||||||
self.state["is_closing"] = True
|
|
||||||
|
|
||||||
util.defer(200, self.close)
|
|
||||||
return event.ignore()
|
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
"""Handle ESC key"""
|
"""Handle ESC key"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue