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