def setup(self): logging.root.addHandler(self.handler) self.debug_levels_menu = QtGui.QMenu() self.debug_levels_action_group = QtGui.QActionGroup(self) for level, value in filter(lambda (key, value): type(key) == str, logging._levelNames.iteritems()): action = QtGui.QAction(level.title(), self) action.setData({'name': level, 'level': value}) action.setCheckable(True) self.debug_levels_action_group.addAction(action) self.debug_levels_menu.addAction(action)
def extend_menu(menu, items, useSeparatorName=False): actions = [] for item in items: if item == "-": action = menu.addSeparator() actions.append(action) elif isinstance(item, basestring) and item.startswith("--"): name = item[item.rfind("-") + 1:] action = menu.addSeparator() action.setObjectName(text2objectname(name, prefix="section")) if useSeparatorName: action.setText(name) actions.append(action) elif isinstance(item, dict) and 'items' in item: submenu, subactions = create_menu(menu, item) subaction = menu.addMenu(submenu) actions.append(subaction) actions.extend(subactions) elif isinstance(item, dict): action = create_action(menu, item) actions.append(action) menu.addAction(action) elif isinstance(item, QtGui.QAction): menu.addAction(item) elif isinstance(item, QtGui.QMenu): menu.addMenu(item) elif isinstance(item, list): actionGroup = QtGui.QActionGroup(menu) actions.append(actionGroup) actionGroup.setExclusive(False) map(menu.addAction, item) map(lambda action: action.setActionGroup(actionGroup), item) elif isinstance(item, tuple): actionGroup = QtGui.QActionGroup(menu) actions.append(actionGroup) actionGroup.setExclusive(True) map(menu.addAction, item) map(lambda action: action.setActionGroup(actionGroup), item) else: raise Exception("%s" % item) return actions