From cf47034864607cf8ae7abce0ab5fb18da5fac1cb Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Wed, 30 Oct 2019 12:38:53 +0100 Subject: [PATCH 1/2] Make the workfiles app work in Blender --- avalon/tools/workfiles/app.py | 47 +++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index d82c2e8c6..5375f6825 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -9,6 +9,8 @@ from .. import lib as tools_lib +module = sys.modules[__name__] +module.window = None class NameWindow(QtWidgets.QDialog): """Name Window""" @@ -300,17 +302,21 @@ def __init__(self, root=None): self.browse_button.pressed.connect(self.on_browse_pressed) self.save_as_button.pressed.connect(self.on_save_as_pressed) + self._name_window = None + self._messagebox = None + self.open_button.setFocus() self.refresh() self.resize(400, 550) def get_name(self): - window = NameWindow(self.root) - window.setStyleSheet(style.load_stylesheet()) - window.exec_() - return window.get_result() + self._name_window = NameWindow(self.root) + self._name_window.setStyleSheet(style.load_stylesheet()) + self._name_window.exec_() + + return self._name_window.get_result() def refresh(self): self.list.clear() @@ -352,22 +358,22 @@ def save_as_nuke(self, file_path): nuke.scriptSaveAs(file_path) def save_changes_prompt(self): - messagebox = QtWidgets.QMessageBox() - messagebox.setWindowFlags(QtCore.Qt.FramelessWindowHint) - messagebox.setIcon(messagebox.Warning) - messagebox.setWindowTitle("Unsaved Changes!") - messagebox.setText( + self._messagebox = QtWidgets.QMessageBox() + self._messagebox.setWindowFlags(QtCore.Qt.FramelessWindowHint) + self._messagebox.setIcon(self._messagebox.Warning) + self._messagebox.setWindowTitle("Unsaved Changes!") + self._messagebox.setText( "There are unsaved changes to the current file." "\nDo you want to save the changes?" ) - messagebox.setStandardButtons( - messagebox.Yes | messagebox.No | messagebox.Cancel + self._messagebox.setStandardButtons( + self._messagebox.Yes | self._messagebox.No | self._messagebox.Cancel ) - result = messagebox.exec_() + result = self._messagebox.exec_() - if result == messagebox.Yes: + if result == self._messagebox.Yes: return True - elif result == messagebox.No: + elif result == self._messagebox.No: return False else: return None @@ -453,6 +459,10 @@ def on_save_as_pressed(self): def show(root=None, debug=False): """Show Work Files GUI""" + if module.window: + module.window.close() + del(module.window) + host = api.registered_host() if host is None: raise RuntimeError("No registered host.") @@ -490,11 +500,6 @@ def show(root=None, debug=False): with tools_lib.application(): window = Window(root) window.setStyleSheet(style.load_stylesheet()) + window.show() - if debug: - # Enable closing in standalone - window.show() - - else: - # Cause modal dialog - window.exec_() + module.window = window From 1439298f4af6fbcbab7aee4052276046ec8532ea Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Wed, 30 Oct 2019 13:17:38 +0100 Subject: [PATCH 2/2] Fix: line too long Although I personally think the readability suffers from this. https://www.youtube.com/watch?v=wf-BqAjZb8M&t=1s --- avalon/tools/workfiles/app.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index 5375f6825..87689392f 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -367,7 +367,8 @@ def save_changes_prompt(self): "\nDo you want to save the changes?" ) self._messagebox.setStandardButtons( - self._messagebox.Yes | self._messagebox.No | self._messagebox.Cancel + self._messagebox.Yes | self._messagebox.No | + self._messagebox.Cancel ) result = self._messagebox.exec_()