diff --git a/openpype/tools/pyblish_pype/control.py b/openpype/tools/pyblish_pype/control.py index 64a7f193b4..9774c8020b 100644 --- a/openpype/tools/pyblish_pype/control.py +++ b/openpype/tools/pyblish_pype/control.py @@ -47,18 +47,22 @@ class MainThreadProcess(QtCore.QObject): This approach gives ability to update UI meanwhile plugin is in progress. """ - timer_interval = 3 + # How many times let pass QtApplication to process events + # - use 2 as resize event can trigger repaint event but not process in + # same loop + count_timeout = 2 def __init__(self): super(MainThreadProcess, self).__init__() self._items_to_process = collections.deque() timer = QtCore.QTimer() - timer.setInterval(self.timer_interval) + timer.setInterval(0) timer.timeout.connect(self._execute) self._timer = timer + self._switch_counter = self.count_timeout def process(self, func, *args, **kwargs): item = MainThreadItem(func, *args, **kwargs) @@ -71,6 +75,12 @@ class MainThreadProcess(QtCore.QObject): if not self._items_to_process: return + if self._switch_counter > 0: + self._switch_counter -= 1 + return + + self._switch_counter = self.count_timeout + item = self._items_to_process.popleft() item.process() diff --git a/openpype/tools/pyblish_pype/settings.py b/openpype/tools/pyblish_pype/settings.py index 11539f67a6..aaa35d0b56 100644 --- a/openpype/tools/pyblish_pype/settings.py +++ b/openpype/tools/pyblish_pype/settings.py @@ -25,3 +25,6 @@ TerminalFilters = { # Allow animations in GUI Animated = env_variable_to_bool("OPENPYPE_PYBLISH_ANIMATED", True) + +# Print UI info message to console +PrintInfo = env_variable_to_bool("OPENPYPE_PYBLISH_PRINT_INFO", True) diff --git a/openpype/tools/pyblish_pype/view.py b/openpype/tools/pyblish_pype/view.py index 7245393714..3b75e67d4c 100644 --- a/openpype/tools/pyblish_pype/view.py +++ b/openpype/tools/pyblish_pype/view.py @@ -16,7 +16,7 @@ class OverviewView(QtWidgets.QTreeView): toggled = QtCore.Signal(QtCore.QModelIndex, object) show_perspective = QtCore.Signal(QtCore.QModelIndex) - def __init__(self, animated, parent=None): + def __init__(self, parent=None): super(OverviewView, self).__init__(parent) self.horizontalScrollBar().hide() @@ -28,8 +28,6 @@ class OverviewView(QtWidgets.QTreeView): self.setHeaderHidden(True) self.setRootIsDecorated(False) self.setIndentation(0) - if animated: - self.setAnimated(True) def event(self, event): if not event.type() == QtCore.QEvent.KeyPress: diff --git a/openpype/tools/pyblish_pype/window.py b/openpype/tools/pyblish_pype/window.py index edcf6f53b6..7bb11745d6 100644 --- a/openpype/tools/pyblish_pype/window.py +++ b/openpype/tools/pyblish_pype/window.py @@ -143,9 +143,8 @@ class Window(QtWidgets.QDialog): # TODO add parent overview_page = QtWidgets.QWidget() - overview_instance_view = view.InstanceView( - animated=settings.Animated, parent=overview_page - ) + overview_instance_view = view.InstanceView(parent=overview_page) + overview_instance_view.setAnimated(settings.Animated) overview_instance_delegate = delegate.InstanceDelegate( parent=overview_instance_view ) @@ -156,9 +155,8 @@ class Window(QtWidgets.QDialog): overview_instance_view.setItemDelegate(overview_instance_delegate) overview_instance_view.setModel(instance_sort_proxy) - overview_plugin_view = view.PluginView( - animated=settings.Animated, parent=overview_page - ) + overview_plugin_view = view.PluginView(parent=overview_page) + overview_plugin_view.setAnimated(settings.Animated) overview_plugin_delegate = delegate.PluginDelegate( parent=overview_plugin_view ) @@ -307,11 +305,6 @@ class Window(QtWidgets.QDialog): on.setStartValue(0) on.setEndValue(1) - off = QtCore.QPropertyAnimation(info_effect, b"opacity") - off.setDuration(0) - off.setStartValue(1) - off.setEndValue(0) - fade = QtCore.QPropertyAnimation(info_effect, b"opacity") fade.setDuration(500) fade.setStartValue(1.0) @@ -319,10 +312,6 @@ class Window(QtWidgets.QDialog): animation_info_msg = QtCore.QSequentialAnimationGroup() animation_info_msg.addAnimation(on) - animation_info_msg.addPause(50) - animation_info_msg.addAnimation(off) - animation_info_msg.addPause(50) - animation_info_msg.addAnimation(on) animation_info_msg.addPause(2000) animation_info_msg.addAnimation(fade) @@ -1023,9 +1012,11 @@ class Window(QtWidgets.QDialog): {GroupStates.HasFinished: True}, Roles.PublishFlagsRole ) + self.overview_plugin_view.setAnimated(False) self.overview_plugin_view.collapse(group_index) def on_was_stopped(self): + self.overview_plugin_view.setAnimated(settings.Animated) errored = self.controller.errored if self.controller.collect_state == 0: self.footer_button_play.setEnabled(False) @@ -1057,6 +1048,7 @@ class Window(QtWidgets.QDialog): ) def on_was_finished(self): + self.overview_plugin_view.setAnimated(settings.Animated) self.footer_button_play.setEnabled(False) self.footer_button_validate.setEnabled(False) self.footer_button_reset.setEnabled(True) @@ -1313,9 +1305,9 @@ class Window(QtWidgets.QDialog): self.animation_info_msg.stop() self.animation_info_msg.start() - # TODO(marcus): Should this be configurable? Do we want - # the shell to fill up with these messages? - util.u_print(message) + if settings.PrintInfo: + # Print message to console + util.u_print(message) def warning(self, message): """Block processing and print warning until user hits "Continue"