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 QtGui import QMenu, QToolButton
00035 from .icon_tool_button import IconToolButton
00036
00037
00038 class MenuDashWidget(IconToolButton):
00039 """
00040 A widget which displays a pop-up menu when clicked
00041
00042 :param name: The name to give this widget.
00043 :type name: str
00044 :param icon: The icon to display in this widgets button.
00045 :type icon: str
00046 """
00047 def __init__(self, name, icons=None, clicked_icons=None, icon_paths=[]):
00048 if icons == None:
00049 icons = [['bg-grey.svg', 'ic-motors.svg']]
00050 super(MenuDashWidget, self).__init__(name, icons=icons, suppress_overlays=True, icon_paths=icon_paths)
00051 self.setStyleSheet('QToolButton::menu-indicator {image: url(none.jpg);} QToolButton {border: none;}')
00052 self.setPopupMode(QToolButton.InstantPopup)
00053 self.update_state(0)
00054
00055 self.pressed.disconnect(self._pressed)
00056 self.released.disconnect(self._released)
00057
00058 self._menu = QMenu()
00059 self._menu.aboutToHide.connect(self._released)
00060 self._menu.aboutToShow.connect(self._pressed)
00061
00062 self.setMenu(self._menu)
00063
00064 def add_separator(self):
00065 return self._menu.addSeparator()
00066
00067 def add_action(self, name, callback):
00068 """
00069 Add an action to the menu, and return the newly created action.
00070
00071 :param name: The name of the action.
00072 :type name: str
00073 :param callback: Function to be called when this item is pressed.
00074 :type callback: callable
00075 """
00076 return self._menu.addAction(name, callback)