35 from python_qt_binding.QtCore
import Signal
36 from python_qt_binding.QtWidgets
import QToolButton
39 from .util
import IconHelper
44 This is the base class for all widgets. 45 It provides state and icon switching support as well as convenience functions for creating icons. 47 :raises IndexError: if ``icons`` is not a list of lists of strings 49 :param name: name of the object 51 :param icons: A list of lists of strings to create icons for the states of this button.\ 52 If only one is supplied then ok, warn, error, stale icons will be created with overlays 55 :param clicked_icons: A list of clicked state icons. len must equal icons 56 :type clicked_icons: list 57 :param suppress_overlays: if false and there is only one icon path supplied 58 :type suppress_overlays: bool 59 :param icon_paths: list of lists of package and subdirectory in the form\ 60 ['package name', 'subdirectory'] example ['rqt_pr2_dashboard', 'images/svg'] 62 :type icon_paths: list of lists of strings 64 state_changed = Signal(int)
66 def __init__(self, name, icons, clicked_icons=None, suppress_overlays=False, icon_paths=None):
67 super(IconToolButton, self).
__init__()
70 self.setObjectName(self.
name)
77 icon_paths = (icon_paths
if icon_paths
else []) + [[
'rqt_robot_dashboard',
'images']]
80 for path
in icon_paths:
81 paths.append(os.path.join(rp.get_path(path[0]), path[1]))
83 converted_icons = self.icon_helper.set_icon_lists(icons, clicked_icons, suppress_overlays)
87 self.setStyleSheet(
'QToolButton {border: none;}')
94 Set the state of this button. 95 This will also update the icon for the button based on the ``self._icons`` list 97 :raises IndexError: If state is not a proper index to ``self._icons`` 99 :param state: The state to set. 102 if 0 <= state
and state < len(self.
_icons):
104 self.state_changed.emit(self.
__state)
106 raise IndexError(
"%s update_state received invalid state: %s" % (self.
name, state))
111 Read-only accessor for the widgets current state.