From e20d11cc1d09fd21b6a22723dbbebdd3310f8bc7 Mon Sep 17 00:00:00 2001 From: roomrys Date: Mon, 9 Sep 2024 12:25:46 -0700 Subject: [PATCH 1/8] Do not always color skeletons table black --- sleap/gui/dataviews.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/sleap/gui/dataviews.py b/sleap/gui/dataviews.py index 0a008bea7..f68dc0180 100644 --- a/sleap/gui/dataviews.py +++ b/sleap/gui/dataviews.py @@ -413,13 +413,6 @@ def set_item(self, item, key, value): elif key == "symmetry": self.context.setNodeSymmetry(skeleton=self.obj, node=item, symmetry=value) - def get_item_color(self, item: Any, key: str): - if self.skeleton: - color = self.context.app.color_manager.get_item_color( - item, parent_skeleton=self.skeleton - ) - return QtGui.QColor(*color) - class SkeletonEdgesTableModel(GenericTableModel): """Table model for skeleton edges.""" @@ -436,14 +429,6 @@ def object_to_items(self, skeleton: Skeleton): ] return items - def get_item_color(self, item: Any, key: str): - if self.skeleton: - edge_pair = (item["source"], item["destination"]) - color = self.context.app.color_manager.get_item_color( - edge_pair, parent_skeleton=self.skeleton - ) - return QtGui.QColor(*color) - class LabeledFrameTableModel(GenericTableModel): """Table model for listing instances in labeled frame. From 68064fef9b1df897743232f61abf68a7b0bfd826 Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 10:18:24 -0700 Subject: [PATCH 2/8] Remove offending (possibly unneeded) line that causes the no module named work error to print in terminal --- sleap/gui/app.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sleap/gui/app.py b/sleap/gui/app.py index 4c75dac3f..f1cfe0066 100644 --- a/sleap/gui/app.py +++ b/sleap/gui/app.py @@ -377,7 +377,6 @@ def add_menu_item(menu, key: str, name: str, action: Callable): def connect_check(key): self._menu_actions[key].setCheckable(True) self._menu_actions[key].setChecked(self.state[key]) - self.state.connect(key, self._menu_actions[key].setChecked) # add checkable menu item connected to state variable def add_menu_check_item(menu, key: str, name: str): From 778c9e9b61edb9c976b0c81895ba3126eb3d2aac Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 10:18:24 -0700 Subject: [PATCH 3/8] Remove offending (possibly unneeded) line that causes the no module named work error to print in terminal --- sleap/gui/app.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sleap/gui/app.py b/sleap/gui/app.py index 4c75dac3f..f1cfe0066 100644 --- a/sleap/gui/app.py +++ b/sleap/gui/app.py @@ -377,7 +377,6 @@ def add_menu_item(menu, key: str, name: str, action: Callable): def connect_check(key): self._menu_actions[key].setCheckable(True) self._menu_actions[key].setChecked(self.state[key]) - self.state.connect(key, self._menu_actions[key].setChecked) # add checkable menu item connected to state variable def add_menu_check_item(menu, key: str, name: str): From 6639ce553ff484920b18ceb6b361ed017e4a03fb Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 10:40:27 -0700 Subject: [PATCH 4/8] Remove accidentally added changes --- sleap/gui/dataviews.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sleap/gui/dataviews.py b/sleap/gui/dataviews.py index f68dc0180..0a008bea7 100644 --- a/sleap/gui/dataviews.py +++ b/sleap/gui/dataviews.py @@ -413,6 +413,13 @@ def set_item(self, item, key, value): elif key == "symmetry": self.context.setNodeSymmetry(skeleton=self.obj, node=item, symmetry=value) + def get_item_color(self, item: Any, key: str): + if self.skeleton: + color = self.context.app.color_manager.get_item_color( + item, parent_skeleton=self.skeleton + ) + return QtGui.QColor(*color) + class SkeletonEdgesTableModel(GenericTableModel): """Table model for skeleton edges.""" @@ -429,6 +436,14 @@ def object_to_items(self, skeleton: Skeleton): ] return items + def get_item_color(self, item: Any, key: str): + if self.skeleton: + edge_pair = (item["source"], item["destination"]) + color = self.context.app.color_manager.get_item_color( + edge_pair, parent_skeleton=self.skeleton + ) + return QtGui.QColor(*color) + class LabeledFrameTableModel(GenericTableModel): """Table model for listing instances in labeled frame. From 2b12c9355143598bc4b15c2fcf071ef61f46585d Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 11:28:24 -0700 Subject: [PATCH 5/8] Add (failing) test to ensure menu-item updates with state change --- tests/gui/test_app.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/gui/test_app.py b/tests/gui/test_app.py index 745989da1..b37ad2cf9 100644 --- a/tests/gui/test_app.py +++ b/tests/gui/test_app.py @@ -414,6 +414,12 @@ def toggle_and_verify_visibility(expected_visibility: bool = True): window.showNormal() vp = window.player + # Change state and ensure menu-item check updates + assert window.state["color predicted"] == True + assert window._menu_actions["color predicted"].isChecked() == True + window.state["color predicted"] = False + assert window._menu_actions["color predicted"].isChecked() == False + # Enable distinct colors window.state["color predicted"] = True From b9f511f3c8ee207fa590581363271c84b5735e66 Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 11:29:25 -0700 Subject: [PATCH 6/8] Reconnect callback for menu-item (using lambda) --- sleap/gui/app.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sleap/gui/app.py b/sleap/gui/app.py index f1cfe0066..2dbceb3b7 100644 --- a/sleap/gui/app.py +++ b/sleap/gui/app.py @@ -377,6 +377,9 @@ def add_menu_item(menu, key: str, name: str, action: Callable): def connect_check(key): self._menu_actions[key].setCheckable(True) self._menu_actions[key].setChecked(self.state[key]) + self.state.connect( + key, lambda checked: self._menu_actions[key].setChecked(checked) + ) # add checkable menu item connected to state variable def add_menu_check_item(menu, key: str, name: str): From 501f3496712f389471cb33faea5d034025956937 Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 11:28:24 -0700 Subject: [PATCH 7/8] Add (failing) test to ensure menu-item updates with state change Do not assume inital state --- tests/gui/test_app.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/gui/test_app.py b/tests/gui/test_app.py index 745989da1..def835b6e 100644 --- a/tests/gui/test_app.py +++ b/tests/gui/test_app.py @@ -414,6 +414,12 @@ def toggle_and_verify_visibility(expected_visibility: bool = True): window.showNormal() vp = window.player + # Change state and ensure menu-item check updates + color_predicted = window.state["color predicted"] + assert window._menu_actions["color predicted"].isChecked() == color_predicted + window.state["color predicted"] = not color_predicted + assert window._menu_actions["color predicted"].isChecked() == (not color_predicted) + # Enable distinct colors window.state["color predicted"] = True From 94731794b24042e13f0a4acc78074f99e798cc1a Mon Sep 17 00:00:00 2001 From: roomrys Date: Tue, 10 Sep 2024 11:29:25 -0700 Subject: [PATCH 8/8] Reconnect callback for menu-item (using lambda) --- sleap/gui/app.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sleap/gui/app.py b/sleap/gui/app.py index f1cfe0066..2dbceb3b7 100644 --- a/sleap/gui/app.py +++ b/sleap/gui/app.py @@ -377,6 +377,9 @@ def add_menu_item(menu, key: str, name: str, action: Callable): def connect_check(key): self._menu_actions[key].setCheckable(True) self._menu_actions[key].setChecked(self.state[key]) + self.state.connect( + key, lambda checked: self._menu_actions[key].setChecked(checked) + ) # add checkable menu item connected to state variable def add_menu_check_item(menu, key: str, name: str):