Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 import roslib;roslib.load_manifest('rqt_robot_dashboard')
00034 import rospy
00035
00036 from python_qt_binding.QtCore import QSize
00037 from python_qt_binding.QtGui import QToolBar
00038 from qt_gui.plugin import Plugin
00039
00040
00041 class Dashboard(Plugin):
00042 """
00043 Base class from which dashboards should inherit.
00044
00045 :param context: the plugin context
00046 :type context: qt_gui.plugin.Plugin
00047 """
00048 def __init__(self, context):
00049 super(Dashboard, self).__init__(context)
00050 self.context = context
00051 self.setup(context)
00052
00053 if not hasattr(self, 'name'):
00054 self.name = 'Dashboard'
00055 if not hasattr(self, 'max_icon_size'):
00056 self.max_icon_size = QSize(50, 30)
00057 self._main_widget = QToolBar()
00058 self._main_widget.setIconSize(self.max_icon_size)
00059 self._main_widget.setObjectName(self.name)
00060 self._main_widget.setWindowTitle(self.name)
00061 if context.serial_number() > 1:
00062 self._main_widget.setWindowTitle(self._main_widget.windowTitle() + (' (%d)' % context.serial_number()))
00063 widgets = self.get_widgets()
00064
00065 self._widgets = []
00066 for v in widgets:
00067 for i in v:
00068 try:
00069 self._main_widget.addWidget(i)
00070 self._widgets.append(i)
00071 except:
00072 raise Exception("All widgets must be a subclass of QWidget!")
00073
00074 self._main_widget.addSeparator()
00075
00076
00077 context.add_toolbar(self._main_widget)
00078
00079 def setup(self, context):
00080 """
00081 Called during ``__init__`` Subclasses should do initialization here.
00082
00083 NOTE when overriding this method you should provide a ``self.name`` to
00084 avoid naming conflicts.
00085
00086 :param context: The plugin context
00087 :type context: qt_gui.plugin.Plugin
00088 """
00089 pass
00090
00091 def shutdown_plugin(self):
00092 """
00093 Called when the toolbar is closed by Qt.
00094 """
00095 for widget in self._widgets:
00096 if hasattr(widget, 'shutdown_widget'):
00097 widget.shutdown_widget()
00098 if hasattr(widget, 'close'):
00099 widget.close()
00100
00101 self.shutdown_dashboard()
00102
00103 def shutdown_dashboard(self):
00104 """
00105 Called after shutdown plugin, subclasses should do cleanup here, not in shutdown_plugin
00106 """
00107 pass
00108
00109 def get_widgets(self):
00110 """
00111 Most of the dashboard customization should be done here.
00112 If this function is not overriden the dashboard will display nothing.
00113
00114 :returns: List of lists containing dashboard widgets.
00115 """
00116 return []