mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 03:31:50 +02:00
fix(toolbar): Switch Actions for default checked actions fixed
This commit is contained in:
@ -251,6 +251,7 @@ class SwitchableToolBarAction(ToolBarAction):
|
|||||||
initial_action: str = None,
|
initial_action: str = None,
|
||||||
tooltip: str = None,
|
tooltip: str = None,
|
||||||
checkable: bool = True,
|
checkable: bool = True,
|
||||||
|
default_state_checked: bool = False,
|
||||||
parent=None,
|
parent=None,
|
||||||
):
|
):
|
||||||
super().__init__(icon_path=None, tooltip=tooltip, checkable=checkable)
|
super().__init__(icon_path=None, tooltip=tooltip, checkable=checkable)
|
||||||
@ -258,6 +259,7 @@ class SwitchableToolBarAction(ToolBarAction):
|
|||||||
self.current_key = initial_action if initial_action is not None else next(iter(actions))
|
self.current_key = initial_action if initial_action is not None else next(iter(actions))
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.checkable = checkable
|
self.checkable = checkable
|
||||||
|
self.default_state_checked = default_state_checked
|
||||||
self.main_button = None
|
self.main_button = None
|
||||||
self.menu_actions: Dict[str, QAction] = {}
|
self.menu_actions: Dict[str, QAction] = {}
|
||||||
|
|
||||||
@ -283,7 +285,7 @@ class SwitchableToolBarAction(ToolBarAction):
|
|||||||
menu_action.setIconVisibleInMenu(True)
|
menu_action.setIconVisibleInMenu(True)
|
||||||
menu_action.setCheckable(self.checkable)
|
menu_action.setCheckable(self.checkable)
|
||||||
menu_action.setChecked(key == self.current_key)
|
menu_action.setChecked(key == self.current_key)
|
||||||
menu_action.triggered.connect(lambda checked, k=key: self._set_default_action(k))
|
menu_action.triggered.connect(lambda checked, k=key: self.set_default_action(k))
|
||||||
menu.addAction(menu_action)
|
menu.addAction(menu_action)
|
||||||
self.menu_actions[key] = menu_action
|
self.menu_actions[key] = menu_action
|
||||||
self.main_button.setMenu(menu)
|
self.main_button.setMenu(menu)
|
||||||
@ -293,7 +295,7 @@ class SwitchableToolBarAction(ToolBarAction):
|
|||||||
action_obj = self.actions[self.current_key]
|
action_obj = self.actions[self.current_key]
|
||||||
action_obj.action.trigger()
|
action_obj.action.trigger()
|
||||||
|
|
||||||
def _set_default_action(self, key: str):
|
def set_default_action(self, key: str):
|
||||||
self.current_key = key
|
self.current_key = key
|
||||||
new_action = self.actions[self.current_key]
|
new_action = self.actions[self.current_key]
|
||||||
self.main_button.setIcon(new_action.get_icon())
|
self.main_button.setIcon(new_action.get_icon())
|
||||||
@ -929,7 +931,7 @@ class MainWindow(QMainWindow): # pragma: no cover
|
|||||||
actions={"action1": action1, "action2": action2},
|
actions={"action1": action1, "action2": action2},
|
||||||
initial_action="action1",
|
initial_action="action1",
|
||||||
tooltip="Switchable Action",
|
tooltip="Switchable Action",
|
||||||
checkable=False,
|
checkable=True,
|
||||||
parent=self,
|
parent=self,
|
||||||
)
|
)
|
||||||
self.toolbar.add_action("switchable_action_no_toggle", switchable_action, self)
|
self.toolbar.add_action("switchable_action_no_toggle", switchable_action, self)
|
||||||
@ -940,6 +942,7 @@ class MainWindow(QMainWindow): # pragma: no cover
|
|||||||
action2.action.triggered.connect(
|
action2.action.triggered.connect(
|
||||||
lambda checked: self.test_label.setText(f"Action 2 triggered, checked = {checked}")
|
lambda checked: self.test_label.setText(f"Action 2 triggered, checked = {checked}")
|
||||||
)
|
)
|
||||||
|
switchable_action.actions["action1"].action.setChecked(True)
|
||||||
|
|
||||||
def add_widget_actions(self):
|
def add_widget_actions(self):
|
||||||
combo = QComboBox()
|
combo = QComboBox()
|
||||||
|
Reference in New Issue
Block a user