36 from python_qt_binding.QtCore
import Signal, QSize
37 from python_qt_binding.QtWidgets
import QLabel
38 from .util
import IconHelper
42 A Widget which displays incremental battery state, including a status tip.
43 To use this widget simply call :func:`update_perc` and :func:`update_time`
44 to change the displayed charge percentage and time remaining, respectively.
46 :param name: The name of this widget
49 state_changed = Signal(int)
51 def __init__(self, name='Battery', icons=None, charge_icons=None,
52 icon_paths=None, suppress_overlays=False, stale_icon=None):
53 super(BatteryDashWidget, self).
__init__()
58 icons.append([
'ic-battery-%s.svg' % (x * 20)])
59 charge_icons.append([
'ic-battery-charge-%s.svg' % (x * 20)])
61 stale_icon = [
'ic-battery-0.svg',
'ol-stale-battery.svg']
62 icon_paths = (icon_paths
if icon_paths
else []) + [[
'rqt_robot_dashboard',
'images']]
65 for path
in icon_paths:
66 paths.append(os.path.join(rp.get_path(path[0]), path[1]))
69 icons.append(stale_icon)
70 charge_icons.append(stale_icon)
71 converted_icons = self.
_icon_helper.set_icon_lists(icons, charge_icons, suppress_overlays)
85 self.setPixmap(self.
_icons[-1].pixmap(QSize(60, 100)))
87 self.setPixmap(self.
_charge_icons[state].pixmap(QSize(60, 100)))
89 self.setPixmap(self.
_icons[state].pixmap(QSize(60, 100)))
94 Read-only accessor for the widgets current state.
103 Update the displayed battery percentage.
104 The default implementation of this method displays in 20% increments
106 :param val: The new value to be displayed.
113 Set the state of this button.
114 This will also update the icon for the button based on the ``self._icons`` list
116 :raises IndexError: If state is not a proper index to ``self._icons``
118 :param state: The state to set.
121 if 0 <= state
and state < len(self.
_icons):
125 raise IndexError(
"%s update_state received invalid state: %s" % (self.
_name, state))
130 self.setToolTip(
"%s: %.2f%% remaining" % (self.
_name, fval))
132 self.setToolTip(
"%s: %s%% remaining" % (self.
_name, value))
135 """Set button to stale.
137 Not used by base dashboard implementation.
141 self.setToolTip(
"%s: Stale" % self.
_name)