From 7eb37b9e302c8894ed16140a1e44fab3893b7562 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Tue, 5 Apr 2022 18:46:38 +0200 Subject: [PATCH 1/3] changed how console splitter sizez are reused on show --- .../window/widgets.py | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/openpype/modules/python_console_interpreter/window/widgets.py b/openpype/modules/python_console_interpreter/window/widgets.py index ecf41eaf3ed..9c6717ed17a 100644 --- a/openpype/modules/python_console_interpreter/window/widgets.py +++ b/openpype/modules/python_console_interpreter/window/widgets.py @@ -389,7 +389,8 @@ def __init__(self, parent=None): self._append_lines([openpype_art]) - self.setStyleSheet(load_stylesheet()) + self._first_show = True + self._splitter_size_ratio = None self._init_from_registry() @@ -416,9 +417,9 @@ def _init_from_registry(self): self.resize(width, height) try: - sizes = setting_registry.get_item("splitter_sizes") - if len(sizes) == len(self._widgets_splitter.sizes()): - self._widgets_splitter.setSizes(sizes) + self._splitter_size_ratio = ( + setting_registry.get_item("splitter_sizes") + ) except ValueError: pass @@ -627,8 +628,45 @@ def add_tab(self, tab_name, index=None): def showEvent(self, event): self._line_check_timer.start() super(PythonInterpreterWidget, self).showEvent(event) + # First show setup + if self._first_show: + self._first_show = False + self._on_first_show() + self._output_widget.scroll_to_bottom() + def _on_first_show(self): + # Change stylesheet + self.setStyleSheet(load_stylesheet()) + # Check if splitter size raio is set + # - first store value to local variable and then unset it + splitter_size_ratio = self._splitter_size_ratio + self._splitter_size_ratio = None + # Skip if is not set + if not splitter_size_ratio: + return + + # Skip if number of size items does not match to splitter + splitters_count = len(self._widgets_splitter.sizes()) + if len(splitter_size_ratio) != splitters_count: + return + + # Don't use absolute sizes but ratio of last stored sizes + ratio_sum = sum(splitter_size_ratio) + sizes = [] + max_size = self._widgets_splitter.height() + cur_size = 0 + ratio = max_size / ratio_sum + for size in splitter_size_ratio: + item_size = int(ratio * size) + cur_size += item_size + if cur_size > max_size: + item_size -= cur_size - max_size + if not item_size: + item_size = 1 + sizes.append(item_size) + self._widgets_splitter.setSizes(sizes) + def closeEvent(self, event): self.save_registry() super(PythonInterpreterWidget, self).closeEvent(event) From d740845a99e06073a905fee870bb923cfc862b95 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 6 Apr 2022 00:13:56 +0200 Subject: [PATCH 2/3] simplified set sizes --- .../window/widgets.py | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/openpype/modules/python_console_interpreter/window/widgets.py b/openpype/modules/python_console_interpreter/window/widgets.py index 9c6717ed17a..6fdbc3ba2a1 100644 --- a/openpype/modules/python_console_interpreter/window/widgets.py +++ b/openpype/modules/python_console_interpreter/window/widgets.py @@ -648,24 +648,8 @@ def _on_first_show(self): # Skip if number of size items does not match to splitter splitters_count = len(self._widgets_splitter.sizes()) - if len(splitter_size_ratio) != splitters_count: - return - - # Don't use absolute sizes but ratio of last stored sizes - ratio_sum = sum(splitter_size_ratio) - sizes = [] - max_size = self._widgets_splitter.height() - cur_size = 0 - ratio = max_size / ratio_sum - for size in splitter_size_ratio: - item_size = int(ratio * size) - cur_size += item_size - if cur_size > max_size: - item_size -= cur_size - max_size - if not item_size: - item_size = 1 - sizes.append(item_size) - self._widgets_splitter.setSizes(sizes) + if len(splitter_size_ratio) == splitters_count: + self._widgets_splitter.setSizes(splitter_size_ratio) def closeEvent(self, event): self.save_registry() From e8a59ac056cbc91bdf57305d50e10d6f276ed773 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 6 Apr 2022 00:16:12 +0200 Subject: [PATCH 3/3] Fix typo in comment Co-authored-by: Roy Nieterau --- openpype/modules/python_console_interpreter/window/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/modules/python_console_interpreter/window/widgets.py b/openpype/modules/python_console_interpreter/window/widgets.py index 6fdbc3ba2a1..36ce1b61a26 100644 --- a/openpype/modules/python_console_interpreter/window/widgets.py +++ b/openpype/modules/python_console_interpreter/window/widgets.py @@ -638,7 +638,7 @@ def showEvent(self, event): def _on_first_show(self): # Change stylesheet self.setStyleSheet(load_stylesheet()) - # Check if splitter size raio is set + # Check if splitter size ratio is set # - first store value to local variable and then unset it splitter_size_ratio = self._splitter_size_ratio self._splitter_size_ratio = None