From 5c232e3f6aa61e7e100b035a94cbd4db61db703b Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Thu, 16 Jan 2020 09:29:21 +0100 Subject: [PATCH 1/7] Make debug behaviour consistent --- avalon/tools/contextmanager/app.py | 6 +++++- avalon/tools/creator/app.py | 14 -------------- avalon/tools/projectmanager/app.py | 5 +++-- avalon/tools/workfiles/app.py | 4 ++-- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/avalon/tools/contextmanager/app.py b/avalon/tools/contextmanager/app.py index 80edf839f..6b6439864 100644 --- a/avalon/tools/contextmanager/app.py +++ b/avalon/tools/contextmanager/app.py @@ -211,7 +211,7 @@ def select_asset(self, assetname): self._assets.select_assets([assetname], expand=True) -def show(parent=None): +def show(parent=None, debug=False): from avalon import style from ...tools import lib @@ -221,6 +221,10 @@ def show(parent=None): except (RuntimeError, AttributeError): pass + if debug: + import traceback + sys.excepthook = lambda typ, val, tb: traceback.print_last() + with lib.application(): window = App(parent) window.show() diff --git a/avalon/tools/creator/app.py b/avalon/tools/creator/app.py index 1bfdaef2d..9778af4f4 100644 --- a/avalon/tools/creator/app.py +++ b/avalon/tools/creator/app.py @@ -569,23 +569,9 @@ def show(debug=False, parent=None): del(module.window) if debug: - from avalon import mock - for creator in mock.creators: - api.register_plugin(api.Creator, creator) - import traceback sys.excepthook = lambda typ, val, tb: traceback.print_last() - io.install() - - any_project = next( - project for project in io.projects() - if project.get("active", True) is not False - ) - - api.Session["AVALON_PROJECT"] = any_project["name"] - module.project = any_project["name"] - with lib.application(): window = Window(parent) window.refresh() diff --git a/avalon/tools/projectmanager/app.py b/avalon/tools/projectmanager/app.py index bd360c3c4..f0b0a45b7 100644 --- a/avalon/tools/projectmanager/app.py +++ b/avalon/tools/projectmanager/app.py @@ -228,8 +228,9 @@ def show(root=None, debug=False, parent=None): except (RuntimeError, AttributeError): pass - if debug is True: - io.install() + if debug: + import traceback + sys.excepthook = lambda typ, val, tb: traceback.print_last() with tools_lib.application(): window = Window(parent) diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index f6c5e6fba..616754fed 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -496,8 +496,8 @@ def show(root=None, debug=False, parent=None): raise OSError("Root set for Work Files app does not exist: %s" % root) if debug: - api.Session["AVALON_ASSET"] = "Mock" - api.Session["AVALON_TASK"] = "Testing" + import traceback + sys.excepthook = lambda typ, val, tb: traceback.print_last() with tools_lib.application(): window = Window(root, parent=parent) From e6c55ebbbacba86c71af0bb07d6f481376874747 Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Fri, 24 Jan 2020 11:03:41 +0100 Subject: [PATCH 2/7] Remove sys.excepthook override for debug mode --- avalon/tools/contextmanager/app.py | 4 ++-- avalon/tools/creator/app.py | 4 ++-- avalon/tools/loader/app.py | 4 ++-- avalon/tools/projectmanager/app.py | 4 ++-- avalon/tools/sceneinventory/app.py | 4 ++-- avalon/tools/workfiles/app.py | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/avalon/tools/contextmanager/app.py b/avalon/tools/contextmanager/app.py index 6b6439864..09ca56fca 100644 --- a/avalon/tools/contextmanager/app.py +++ b/avalon/tools/contextmanager/app.py @@ -222,8 +222,8 @@ def show(parent=None, debug=False): pass if debug: - import traceback - sys.excepthook = lambda typ, val, tb: traceback.print_last() + # Add code here that only runs when debugging is enabled. + pass with lib.application(): window = App(parent) diff --git a/avalon/tools/creator/app.py b/avalon/tools/creator/app.py index 9778af4f4..35d1c8888 100644 --- a/avalon/tools/creator/app.py +++ b/avalon/tools/creator/app.py @@ -569,8 +569,8 @@ def show(debug=False, parent=None): del(module.window) if debug: - import traceback - sys.excepthook = lambda typ, val, tb: traceback.print_last() + # Add code here that only runs when debugging is enabled. + pass with lib.application(): window = Window(parent) diff --git a/avalon/tools/loader/app.py b/avalon/tools/loader/app.py index 9e6dc35ab..3c4eb1827 100644 --- a/avalon/tools/loader/app.py +++ b/avalon/tools/loader/app.py @@ -408,8 +408,8 @@ def show(debug=False, parent=None, use_context=False): module.window = None if debug: - import traceback - sys.excepthook = lambda typ, val, tb: traceback.print_last() + # Add code here that only runs when debugging is enabled. + pass with lib.application(): diff --git a/avalon/tools/projectmanager/app.py b/avalon/tools/projectmanager/app.py index f0b0a45b7..672e21bed 100644 --- a/avalon/tools/projectmanager/app.py +++ b/avalon/tools/projectmanager/app.py @@ -229,8 +229,8 @@ def show(root=None, debug=False, parent=None): pass if debug: - import traceback - sys.excepthook = lambda typ, val, tb: traceback.print_last() + # Add code here that only runs when debugging is enabled. + pass with tools_lib.application(): window = Window(parent) diff --git a/avalon/tools/sceneinventory/app.py b/avalon/tools/sceneinventory/app.py index 155868991..4047447cb 100644 --- a/avalon/tools/sceneinventory/app.py +++ b/avalon/tools/sceneinventory/app.py @@ -929,8 +929,8 @@ def show(root=None, debug=False, parent=None): pass if debug: - import traceback - sys.excepthook = lambda typ, val, tb: traceback.print_last() + # Add code here that only runs when debugging is enabled. + pass with tools_lib.application(): window = Window(parent) diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index 616754fed..165c917f1 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -496,8 +496,8 @@ def show(root=None, debug=False, parent=None): raise OSError("Root set for Work Files app does not exist: %s" % root) if debug: - import traceback - sys.excepthook = lambda typ, val, tb: traceback.print_last() + # Add code here that only runs when debugging is enabled. + pass with tools_lib.application(): window = Window(root, parent=parent) From 42f00d7636f4370111f229a84d53fc85f041568e Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Thu, 6 Feb 2020 11:40:15 +0100 Subject: [PATCH 3/7] Remove dummy debug block --- avalon/tools/contextmanager/app.py | 4 ---- avalon/tools/creator/app.py | 4 ---- avalon/tools/loader/app.py | 4 ---- avalon/tools/projectmanager/app.py | 4 ---- avalon/tools/sceneinventory/app.py | 4 ---- avalon/tools/workfiles/app.py | 4 ---- 6 files changed, 24 deletions(-) diff --git a/avalon/tools/contextmanager/app.py b/avalon/tools/contextmanager/app.py index 09ca56fca..cfdb1fc85 100644 --- a/avalon/tools/contextmanager/app.py +++ b/avalon/tools/contextmanager/app.py @@ -221,10 +221,6 @@ def show(parent=None, debug=False): except (RuntimeError, AttributeError): pass - if debug: - # Add code here that only runs when debugging is enabled. - pass - with lib.application(): window = App(parent) window.show() diff --git a/avalon/tools/creator/app.py b/avalon/tools/creator/app.py index 35d1c8888..385383ae4 100644 --- a/avalon/tools/creator/app.py +++ b/avalon/tools/creator/app.py @@ -568,10 +568,6 @@ def show(debug=False, parent=None): module.window.close() del(module.window) - if debug: - # Add code here that only runs when debugging is enabled. - pass - with lib.application(): window = Window(parent) window.refresh() diff --git a/avalon/tools/loader/app.py b/avalon/tools/loader/app.py index 3c4eb1827..beb05e899 100644 --- a/avalon/tools/loader/app.py +++ b/avalon/tools/loader/app.py @@ -407,10 +407,6 @@ def show(debug=False, parent=None, use_context=False): # Garbage collected module.window = None - if debug: - # Add code here that only runs when debugging is enabled. - pass - with lib.application(): # TODO: Global state, remove these diff --git a/avalon/tools/projectmanager/app.py b/avalon/tools/projectmanager/app.py index 672e21bed..f712e6478 100644 --- a/avalon/tools/projectmanager/app.py +++ b/avalon/tools/projectmanager/app.py @@ -228,10 +228,6 @@ def show(root=None, debug=False, parent=None): except (RuntimeError, AttributeError): pass - if debug: - # Add code here that only runs when debugging is enabled. - pass - with tools_lib.application(): window = Window(parent) window.show() diff --git a/avalon/tools/sceneinventory/app.py b/avalon/tools/sceneinventory/app.py index 4047447cb..63d160229 100644 --- a/avalon/tools/sceneinventory/app.py +++ b/avalon/tools/sceneinventory/app.py @@ -928,10 +928,6 @@ def show(root=None, debug=False, parent=None): except (RuntimeError, AttributeError): pass - if debug: - # Add code here that only runs when debugging is enabled. - pass - with tools_lib.application(): window = Window(parent) window.show() diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index 165c917f1..b1a1519b7 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -495,10 +495,6 @@ def show(root=None, debug=False, parent=None): if not os.path.exists(root): raise OSError("Root set for Work Files app does not exist: %s" % root) - if debug: - # Add code here that only runs when debugging is enabled. - pass - with tools_lib.application(): window = Window(root, parent=parent) window.show() From 4172ebde3d458e241c9caa0bf687db5a6d0e788d Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Thu, 6 Feb 2020 14:31:53 +0100 Subject: [PATCH 4/7] Move imports to top --- avalon/tools/contextmanager/app.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/avalon/tools/contextmanager/app.py b/avalon/tools/contextmanager/app.py index cfdb1fc85..ae1a49886 100644 --- a/avalon/tools/contextmanager/app.py +++ b/avalon/tools/contextmanager/app.py @@ -1,11 +1,13 @@ import sys import logging -from ... import api from ...vendor.Qt import QtWidgets, QtCore from ..widgets import AssetWidget from ..models import TasksModel +from ... import api, style + +from .. import lib module = sys.modules[__name__] module.window = None @@ -213,8 +215,6 @@ def select_asset(self, assetname): def show(parent=None, debug=False): - from avalon import style - from ...tools import lib try: module.window.close() del module.window From c3ade4b77a254b5d62763759643b94b6fa69784e Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Thu, 6 Feb 2020 14:34:42 +0100 Subject: [PATCH 5/7] Tweak docstrings --- avalon/tools/contextmanager/app.py | 8 ++++++++ avalon/tools/creator/app.py | 5 ++--- avalon/tools/loader/app.py | 3 +-- avalon/tools/projectmanager/app.py | 3 +-- avalon/tools/sceneinventory/app.py | 3 +-- avalon/tools/workfiles/app.py | 10 ++++++++-- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/avalon/tools/contextmanager/app.py b/avalon/tools/contextmanager/app.py index ae1a49886..f835c9016 100644 --- a/avalon/tools/contextmanager/app.py +++ b/avalon/tools/contextmanager/app.py @@ -214,6 +214,14 @@ def select_asset(self, assetname): def show(parent=None, debug=False): + """Display context manager GUI + + Arguments: + parent (QtCore.QObject, optional): When provided parent the interface + to this QObject. + debug (bool, optional): Run loader in debug-mode, defaults to False + + """ try: module.window.close() diff --git a/avalon/tools/creator/app.py b/avalon/tools/creator/app.py index 385383ae4..63cba3b6c 100644 --- a/avalon/tools/creator/app.py +++ b/avalon/tools/creator/app.py @@ -554,11 +554,10 @@ def set_item(self, item): def show(debug=False, parent=None): - """Display asset creator GUI + """Display Asset Creator GUI Arguments: - debug (bool, optional): Run loader in debug-mode, - defaults to False + debug (bool, optional): Run loader in debug-mode, defaults to False parent (QtCore.QObject, optional): When provided parent the interface to this QObject. diff --git a/avalon/tools/loader/app.py b/avalon/tools/loader/app.py index beb05e899..c6a855309 100644 --- a/avalon/tools/loader/app.py +++ b/avalon/tools/loader/app.py @@ -379,8 +379,7 @@ def show(debug=False, parent=None, use_context=False): """Display Loader GUI Arguments: - debug (bool, optional): Run loader in debug-mode, - defaults to False + debug (bool, optional): Run loader in debug-mode, defaults to False parent (QtCore.QObject, optional): The Qt object to parent to. use_context (bool): Whether to apply the current context upon launch diff --git a/avalon/tools/projectmanager/app.py b/avalon/tools/projectmanager/app.py index f712e6478..a7317fc12 100644 --- a/avalon/tools/projectmanager/app.py +++ b/avalon/tools/projectmanager/app.py @@ -215,8 +215,7 @@ def show(root=None, debug=False, parent=None): """Display Loader GUI Arguments: - debug (bool, optional): Run loader in debug-mode, - defaults to False + debug (bool, optional): Run loader in debug-mode, defaults to False parent (QtCore.QObject, optional): When provided parent the interface to this QObject. diff --git a/avalon/tools/sceneinventory/app.py b/avalon/tools/sceneinventory/app.py index 63d160229..9060a971d 100644 --- a/avalon/tools/sceneinventory/app.py +++ b/avalon/tools/sceneinventory/app.py @@ -915,8 +915,7 @@ def show(root=None, debug=False, parent=None): """Display Scene Inventory GUI Arguments: - debug (bool, optional): Run in debug-mode, - defaults to False + debug (bool, optional): Run in debug-mode, defaults to False parent (QtCore.QObject, optional): When provided parent the interface to this QObject. diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index b1a1519b7..4b15de2d5 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -459,9 +459,15 @@ def on_save_as_pressed(self): def show(root=None, debug=False, parent=None): - """Show Work Files GUI""" + """Show Work Files GUI - if module.window: + Arguments: + root (str, optional): The root for the work files app + debug (bool, optional): Run in debug-mode, defaults to False + parent (QtCore.QObject, optional): When provided parent the interface + to this QObject. + + """ module.window.close() del(module.window) From 64bdd0264f18b033937936b26dbcbcfec52d7d93 Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Thu, 6 Feb 2020 14:35:48 +0100 Subject: [PATCH 6/7] Make closing/deleting window consistent --- avalon/tools/creator/app.py | 6 ++++-- avalon/tools/loader/app.py | 25 +++++-------------------- avalon/tools/workfiles/app.py | 6 +++++- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/avalon/tools/creator/app.py b/avalon/tools/creator/app.py index 63cba3b6c..0cb06d1bb 100644 --- a/avalon/tools/creator/app.py +++ b/avalon/tools/creator/app.py @@ -563,9 +563,11 @@ def show(debug=False, parent=None): """ - if module.window: + try: module.window.close() - del(module.window) + del module.window + except (RuntimeError, AttributeError): + pass with lib.application(): window = Window(parent) diff --git a/avalon/tools/loader/app.py b/avalon/tools/loader/app.py index c6a855309..01cd4be41 100644 --- a/avalon/tools/loader/app.py +++ b/avalon/tools/loader/app.py @@ -385,26 +385,11 @@ def show(debug=False, parent=None, use_context=False): """ - # Remember window - if module.window is not None: - try: - module.window.show() - - # If the window is minimized then unminimize it. - if module.window.windowState() & QtCore.Qt.WindowMinimized: - module.window.setWindowState(QtCore.Qt.WindowActive) - - # Raise and activate the window - module.window.raise_() # for MacOS - module.window.activateWindow() # for Windows - module.window.refresh() - return - except RuntimeError as e: - if not str(e).rstrip().endswith("already deleted."): - raise - - # Garbage collected - module.window = None + try: + module.window.close() + del module.window + except (RuntimeError, AttributeError): + pass with lib.application(): diff --git a/avalon/tools/workfiles/app.py b/avalon/tools/workfiles/app.py index 4b15de2d5..3503ea3eb 100644 --- a/avalon/tools/workfiles/app.py +++ b/avalon/tools/workfiles/app.py @@ -468,8 +468,12 @@ def show(root=None, debug=False, parent=None): to this QObject. """ + + try: module.window.close() - del(module.window) + del module.window + except (RuntimeError, AttributeError): + pass host = api.registered_host() if host is None: From 628f7d60161a96d99ab411b22a1411754889cfee Mon Sep 17 00:00:00 2001 From: Jasper van Nieuwenhuizen Date: Thu, 6 Feb 2020 14:42:38 +0100 Subject: [PATCH 7/7] Use title case for app name --- avalon/tools/contextmanager/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avalon/tools/contextmanager/app.py b/avalon/tools/contextmanager/app.py index f835c9016..0da4cc154 100644 --- a/avalon/tools/contextmanager/app.py +++ b/avalon/tools/contextmanager/app.py @@ -214,7 +214,7 @@ def select_asset(self, assetname): def show(parent=None, debug=False): - """Display context manager GUI + """Display Context Manager GUI Arguments: parent (QtCore.QObject, optional): When provided parent the interface