diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index d82c2e8c6..87689392f 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,23 @@ 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 +460,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 +501,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