def __showContextMenu(self, pos): menu = QtGui.QMenu() menu.addAction(QtGui.QIcon(":/images/retry.png"), "Retry", self.retrySelected) menu.addAction(QtGui.QIcon(":/images/kill.png"), "Kill", self.killSelected) menu.addAction(QtGui.QIcon(":/images/eat.png"), "Eat", self.eatSelected) menu.exec_(self.mapToGlobal(pos))
def _openPanelSettingsDialog(self): w = self.widget() if not w: return pos = QtGui.QCursor.pos() menu = QtGui.QMenu(w) action = menu.addAction("Multi-Tab Mode") action.setCheckable(True) action.setChecked(int(self.getAttr("multiTabMode"))) action.toggled.connect(self.__multiTabModeChanged) menu.popup(pos + QtCore.QPoint(5,5))
def __showContextMenu(self, pos): menu = QtGui.QMenu() total = self.__selectedCount() if 1 <= total <= 2: icon = QtGui.QIcon(":/images/depend.png") depend = menu.addAction(icon, "Add Dependencies", self.__addDepends) menu.addAction(QtGui.QIcon(":/images/depend.png"), "Drop Depends", self.__dropDepends) menu.exec_(self.mapToGlobal(pos))
def __showContextMenu(self, pos): menu = QtGui.QMenu(self) cluster_menu = menu.addMenu("Set Cluster") for name, cluster in sorted(self.__clusters.iteritems()): action = cluster_menu.addAction(name) action.triggered.connect(partial(self.assignClusterToSelected, cluster)) menu.addAction(QtGui.QIcon(":/images/locked.png"), "Lock Nodes", partial(self.lockSelected, True)) menu.addAction(QtGui.QIcon(":/images/unlocked.png"), "Unlock Nodes", partial(self.lockSelected, False)) self.__refreshEnabled = False menu.exec_(self.mapToGlobal(pos)) self.__refreshEnabled = True
def addWorkspaceSelectionMenu(self, obj): menu = QtGui.QMenu(obj) for s in self.__workspaces: menu.addAction(s) # TODO add custom workspaces menu.addSeparator() menu.addAction("Reset") menu.addAction("New Workspace") menu.triggered.connect(self.__menuItemTriggered) self.btn = QtGui.QToolButton(obj) self.btn.setFocusPolicy(QtCore.Qt.NoFocus) self.btn.setText("") self.btn.setPopupMode(QtGui.QToolButton.InstantPopup) self.btn.setMenu(menu) obj.addWidget(self.btn)
def __showContextMenu(self, pos): menu = QtGui.QMenu() menu.addAction(QtGui.QIcon(":/images/retry.png"), "Retry", self.retrySelected) menu.addAction(QtGui.QIcon(":/images/kill.png"), "Kill", self.killSelected) menu.addAction(QtGui.QIcon(":/images/eat.png"), "Eat", self.eatSelected) total = self.__selectedCount() if 1 <= total <= 2: icon = QtGui.QIcon(":/images/depend.png") depend = menu.addAction(icon, "Add Dependencies", self.__addDepends) menu.addAction(QtGui.QIcon(":/images/depend.png"), "Drop Depends", self.__dropDepends) menu.exec_(self.mapToGlobal(pos))
def __init__(self, title, options, selected=None, icons=None, parent=None): QtGui.QWidget.__init__(self, parent) layout = QtGui.QVBoxLayout(self) self.__btn = btn = QtGui.QPushButton(title) btn.setFocusPolicy(QtCore.Qt.NoFocus) btn.setMaximumHeight(22) btn.setFlat(True) btn.setContentsMargins(0, 0, 0, 0) self.__menu = menu = QtGui.QMenu(self) btn.setMenu(menu) self.setOptions(options, selected, icons) layout.addWidget(btn) btn.toggled.connect(btn.showMenu) menu.triggered.connect( lambda action: self.optionSelected.emit(action.text()))
def jobContextMenu(jobs, refreshCallback=None, parent=None): """ Get a job context QMenu with common operations """ menu = QtGui.QMenu(parent) if not isinstance(jobs, (tuple, set, list, dict)): jobs = [jobs] total = len(jobs) isPaused = jobs[0].paused pause = menu.addAction(QtGui.QIcon(":/images/pause.png"), "Un-Pause" if isPaused else "Pause") kill = menu.addAction(QtGui.QIcon(":/images/kill.png"), "Kill Job%s" % 's' if total else '') menu.addSeparator() kill_tasks = menu.addAction(QtGui.QIcon(":/images/kill.png"), "Kill Tasks") eat_tasks = menu.addAction(QtGui.QIcon(":/images/eat.png"), "Eat Dead Tasks") retry_tasks = menu.addAction(QtGui.QIcon(":/images/retry.png"), "Retry Dead Tasks") def action_on_tasks(fn, job_list, dead=False): if dead: states = [plow.client.TaskState.DEAD] else: states = [] tasks = list( chain.from_iterable(j.get_tasks(states=states) for j in job_list)) if not tasks: return msg = "Run %r on %d jobs (%d tasks) ?" % (fn.__name__, len(job_list), len(tasks)) if not ask(msg, parent=parent): return if tasks: fn(tasks=tasks) if refreshCallback: refreshCallback() eat_tasks.triggered.connect( partial(action_on_tasks, plow.client.eat_tasks, jobs, dead=True)) retry_tasks.triggered.connect( partial(action_on_tasks, plow.client.retry_tasks, jobs, dead=True)) kill_tasks.triggered.connect( partial(action_on_tasks, plow.client.kill_tasks, jobs, dead=False)) def pause_fn(job_list, pause): for j in job_list: j.pause(pause) if refreshCallback: refreshCallback() pause.triggered.connect(partial(pause_fn, jobs, not isPaused)) def kill_fn(job_list): if not ask("Kill %d job(s) ?" % len(job_list), parent=parent): return for j in job_list: j.kill('plow-wrangler') if refreshCallback: refreshCallback() kill.triggered.connect(partial(kill_fn, jobs)) return menu