def viewMenuRequest(self, point, selection): 'User requested a context menu in repo view widget' if not selection: return if self.menu is None: self.menu = menu = QMenu(self) a = menu.addAction(_('Diff to parent...')) a.setIcon(qtlib.getmenuicon('visualdiff')) a.triggered.connect(self.onVisualDiff) a = menu.addAction(_('Diff to local...')) a.setIcon(qtlib.getmenuicon('ldiff')) a.triggered.connect(self.onVisualDiffToLocal) menu.addSeparator() a = menu.addAction(_('Diff file to parent...')) a.setIcon(qtlib.getmenuicon('visualdiff')) a.triggered.connect(self.onVisualDiffFile) a = menu.addAction(_('Diff file to local...')) a.setIcon(qtlib.getmenuicon('ldiff')) a.triggered.connect(self.onVisualDiffFileToLocal) menu.addSeparator() a = menu.addAction(_('View at revision...')) a.setIcon(qtlib.getmenuicon('view-at-revision')) a.triggered.connect(self.onViewFileAtRevision) a = menu.addAction(_('Save at revision...')) a.triggered.connect(self.onSaveFileAtRevision) a = menu.addAction(_('Edit local')) a.setIcon(qtlib.getmenuicon('edit-file')) a.triggered.connect(self.onEditLocal) a = menu.addAction(_('Revert to revision...')) a.setIcon(qtlib.getmenuicon('hg-revert')) a.triggered.connect(self.onRevertFileToRevision) self.selection = selection self.menu.exec_(point)
def make(text, func, types, icon=None): if not types & alltypes: return action = menu.addAction(text) action._filetypes = types action._runfunc = func if icon: action.setIcon(qtlib.getmenuicon(icon)) action.triggered.connect(self.runAction)
def configureActions(self): for name, desc, icon, tip, cb in self._action_defs(): act = self._actions[name] if icon: act.setIcon(qtlib.getmenuicon(icon)) if tip: act.setStatusTip(tip) if cb: act.triggered.connect(cb) self.addAction(act)
def make(text, func, types, icon=None, keys=None): action = QAction(text, parent) action._filetypes = types action._runfunc = func if icon: action.setIcon(qtlib.getmenuicon(icon)) if keys: action.setShortcut(QKeySequence(keys)) action.triggered.connect(self.runAction) parent.addAction(action) allactions.append(action)
def newaction(text, slot=None, icon=None, shortcut=None, checkable=False, tooltip=None, data=None, enabled=None, menu=None, toolbar=None, parent=self): """Create new action and register it :slot: function called if action triggered or toggled. :checkable: checkable action. slot will be called on toggled. :data: optional data stored on QAction. :enabled: bool or group name to enable/disable action. :shortcut: QKeySequence, key sequence or name of standard key. :menu: name of menu to add this action. :toolbar: name of toolbar to add this action. """ action = QAction(text, parent, checkable=checkable) if slot: if checkable: action.toggled.connect(slot) else: action.triggered.connect(slot) if icon: if toolbar: action.setIcon(qtlib.geticon(icon)) else: action.setIcon(qtlib.getmenuicon(icon)) if shortcut: action.setShortcut(keysequence(shortcut)) if tooltip: action.setToolTip(tooltip) if data is not None: action.setData(data) if isinstance(enabled, bool): action.setEnabled(enabled) elif enabled: self._actionavails[enabled].append(action) if menu: getattr(self, 'menu%s' % menu.title()).addAction(action) if toolbar: getattr(self, '%stbar' % toolbar).addAction(action) return action
def createActions(self): self.actionUpdate = a = self.filelisttbar.addAction( qtlib.geticon('hg-update'), _('Update to this revision')) a.triggered.connect(lambda: self.updateToRevision.emit(self.ctx.rev())) self.filelisttbar.addSeparator() self.actionShowAllMerge = QAction(_('Show All'), self) self.actionShowAllMerge.setToolTip( _('Toggle display of all files and the direction they were merged')) self.actionShowAllMerge.setCheckable(True) self.actionShowAllMerge.setChecked(False) self.actionShowAllMerge.setEnabled(False) self.filelisttbar.addAction(self.actionShowAllMerge) self.actionNextLine = QAction('Next line', self) self.actionNextLine.setShortcut(Qt.SHIFT + Qt.Key_Down) self.actionNextLine.triggered.connect(self.fileview.nextLine) self.addAction(self.actionNextLine) self.actionPrevLine = QAction('Prev line', self) self.actionPrevLine.setShortcut(Qt.SHIFT + Qt.Key_Up) self.actionPrevLine.triggered.connect(self.fileview.prevLine) self.addAction(self.actionPrevLine) self.actionNextCol = QAction('Next column', self) self.actionNextCol.setShortcut(Qt.SHIFT + Qt.Key_Right) self.actionNextCol.triggered.connect(self.fileview.nextCol) self.addAction(self.actionNextCol) self.actionPrevCol = QAction('Prev column', self) self.actionPrevCol.setShortcut(Qt.SHIFT + Qt.Key_Left) self.actionPrevCol.triggered.connect(self.fileview.prevCol) self.addAction(self.actionPrevCol) self._actions = {} for name, desc, icon, key, tip, cb in [ ('navigate', _('File history'), 'hg-log', 'Shift+Return', _('Show the history of the selected file'), self.navigate), ('diffnavigate', _('Compare file revisions'), 'compare-files', None, _('Compare revisions of the selected file'), self.diffNavigate), ('diff', _('Visual Diff'), 'visualdiff', 'Ctrl+D', _('View file changes in external diff tool'), self.vdiff), ('ldiff', _('Visual Diff to Local'), 'ldiff', 'Shift+Ctrl+D', _('View changes to current in external diff tool'), self.vdifflocal), ('edit', _('View at Revision'), 'view-at-revision', 'Alt+Ctrl+E', _('View file as it appeared at this revision'), self.editfile), ('save', _('Save at Revision'), None, 'Alt+Ctrl+S', _('Save file as it appeared at this revision'), self.savefile), ('ledit', _('Edit Local'), 'edit-file', 'Shift+Ctrl+E', _('Edit current file in working copy'), self.editlocal), ('revert', _('Revert to Revision'), 'hg-revert', 'Alt+Ctrl+T', _('Revert file(s) to contents at this revision'), self.revertfile), ('opensubrepo', _('Open subrepository'), 'thg-repository-open', 'Alt+Ctrl+O', _('Open the selected subrepository'), self.opensubrepo), ('explore', _('Explore subrepository'), 'system-file-manager', 'Alt+Ctrl+E', _('Open the selected subrepository'), self.explore), ('terminal', _('Open terminal in subrepository'), 'utilities-terminal', 'Alt+Ctrl+T', _('Open a shell terminal in the selected subrepository root'), self.terminal), ]: act = QAction(desc, self) if icon: act.setIcon(qtlib.getmenuicon(icon)) if key: act.setShortcut(key) if tip: act.setStatusTip(tip) if cb: act.triggered.connect(cb) self._actions[name] = act self.addAction(act)
def _initactions(self): self._statusfilter = status.StatusFilterButton(statustext="MASC", text=_("Status")) self._toolbar.addWidget(self._statusfilter) self._actions = {} for name, desc, icon, key, tip, cb in [ ( "navigate", _("File history"), "hg-log", "Shift+Return", _("Show the history of the selected file"), self.navigate, ), ( "diffnavigate", _("Compare file revisions"), "compare-files", None, _("Compare revisions of the selected file"), self.diffNavigate, ), ( "diff", _("Visual Diff"), "visualdiff", "Ctrl+D", _("View file changes in external diff tool"), self.vdiff, ), ( "ldiff", _("Visual Diff to Local"), "ldiff", "Shift+Ctrl+D", _("View changes to current in external diff tool"), self.vdifflocal, ), ( "edit", _("View at Revision"), "view-at-revision", "Alt+Ctrl+E", _("View file as it appeared at this revision"), self.editfile, ), ( "ledit", _("Edit Local"), "edit-file", "Shift+Ctrl+E", _("Edit current file in working copy"), self.editlocal, ), ( "revert", _("Revert to Revision"), "hg-revert", "Alt+Ctrl+T", _("Revert file(s) to contents at this revision"), self.revertfile, ), ( "opensubrepo", _("Open subrepository"), "thg-repository-open", "Alt+Ctrl+O", _("Open the selected subrepository"), self.opensubrepo, ), ( "explore", _("Explore subrepository"), "system-file-manager", "Alt+Ctrl+E", _("Open the selected subrepository in a file browser"), self.explore, ), ( "terminal", _("Open terminal in subrepository"), "utilities-terminal", "Alt+Ctrl+T", _("Open a shell terminal in the selected subrepository root"), self.terminal, ), ]: act = QAction(desc, self) if icon: act.setIcon(qtlib.getmenuicon(icon)) if key: act.setShortcut(key) if tip: act.setStatusTip(tip) if cb: act.triggered.connect(cb) self._actions[name] = act self.addAction(act)
def __init__(self, repo, parent=None, rev=None): super(FilectxActions, self).__init__(parent) if parent is not None and not isinstance(parent, QWidget): raise ValueError('parent must be a QWidget') self.repo = repo self.ctx = self.repo[rev] self._selectedfiles = [] # local encoding self._currentfile = None # local encoding self._itemissubrepo = False self._itemisdir = False self._diff_dialogs = {} self._nav_dialogs = {} self._contextmenus = {} self._actions = {} for name, desc, icon, key, tip, cb in [ ('navigate', _('File history'), 'hg-log', 'Shift+Return', _('Show the history of the selected file'), self.navigate), ('filter', _('Folder history'), 'hg-log', None, _('Show the history of the selected file'), self.filterfile), ('diffnavigate', _('Compare file revisions'), 'compare-files', None, _('Compare revisions of the selected file'), self.diffNavigate), ('diff', _('Diff to parent'), 'visualdiff', 'Ctrl+D', _('View file changes in external diff tool'), self.vdiff), ('ldiff', _('Diff to local'), 'ldiff', 'Shift+Ctrl+D', _('View changes to current in external diff tool'), self.vdifflocal), ('edit', _('View at Revision'), 'view-at-revision', 'Shift+Ctrl+E', _('View file as it appeared at this revision'), self.editfile), ('save', _('Save at Revision'), None, 'Shift+Ctrl+S', _('Save file as it appeared at this revision'), self.savefile), ('ledit', _('Edit Local'), 'edit-file', None, _('Edit current file in working copy'), self.editlocal), ('lopen', _('Open Local'), '', 'Shift+Ctrl+L', _('Edit current file in working copy'), self.openlocal), ('copypath', _('Copy Path'), '', 'Shift+Ctrl+C', _('Copy full path of file(s) to the clipboard'), self.copypath), ('revert', _('Revert to Revision'), 'hg-revert', 'Shift+Ctrl+R', _('Revert file(s) to contents at this revision'), self.revertfile), ('opensubrepo', _('Open subrepository'), 'thg-repository-open', 'Shift+Ctrl+O', _('Open the selected subrepository'), self.opensubrepo), ('explore', _('Explore folder'), 'system-file-manager', None, _('Open the selected folder in the system file manager'), self.explore), ('terminal', _('Open terminal here'), 'utilities-terminal', None, _('Open a shell terminal in the selected folder'), self.terminal), ]: act = QAction(desc, self) if icon: act.setIcon(qtlib.getmenuicon(icon)) if key: act.setShortcut(key) if tip: act.setStatusTip(tip) if cb: act.triggered.connect(cb) self._actions[name] = act
def __init__(self, repo, parent, multiselectable): QWidget.__init__(self, parent) self.repo = repo self.multiselectable = multiselectable self.currentFile = None layout = QVBoxLayout(self) layout.setSpacing(0) layout.setMargin(0) layout.setContentsMargins(2, 2, 2, 2) self.setLayout(layout) self.splitter = QSplitter(self) self.splitter.setOrientation(Qt.Vertical) self.splitter.setChildrenCollapsible(False) self.layout().addWidget(self.splitter) self.filelist = filelistview.HgFileListView(repo, self, multiselectable) self.filelistmodel = filelistmodel.HgFileListModel(self) self.filelist.setModel(self.filelistmodel) self.filelist.setContextMenuPolicy(Qt.CustomContextMenu) self.filelist.customContextMenuRequested.connect(self.menuRequest) self.filelist.doubleClicked.connect(self.vdiff) self.fileListFrame = QFrame(self.splitter) self.fileListFrame.setFrameShape(QFrame.NoFrame) vbox = QVBoxLayout() vbox.setSpacing(0) vbox.setMargin(0) vbox.addWidget(self.filelist) self.fileListFrame.setLayout(vbox) self.diffbrowse = DiffBrowser(self.splitter) self.diffbrowse.setFont(qtlib.getfont('fontdiff').font()) self.diffbrowse.showMessage.connect(self.showMessage) self.diffbrowse.linkActivated.connect(self.linkActivated) self.diffbrowse.chunksSelected.connect(self.chunksSelected) self.filelist.fileSelected.connect(self.displayFile) self.filelist.clearDisplay.connect(self.diffbrowse.clearDisplay) self.splitter.setStretchFactor(0, 0) self.splitter.setStretchFactor(1, 3) self.timerevent = self.startTimer(500) self._actions = {} for name, desc, icon, key, tip, cb in [ ('diff', _('Visual Diff'), 'visualdiff', 'Ctrl+D', _('View file changes in external diff tool'), self.vdiff), ('edit', _('Edit Local'), 'edit-file', 'Shift+Ctrl+E', _('Edit current file in working copy'), self.editCurrentFile), ('revert', _('Revert to Revision'), 'hg-revert', 'Alt+Ctrl+T', _('Revert file(s) to contents at this revision'), self.revertfile), ]: act = QAction(desc, self) if icon: act.setIcon(qtlib.getmenuicon(icon)) if key: act.setShortcut(key) if tip: act.setStatusTip(tip) if cb: act.triggered.connect(cb) self._actions[name] = act self.addAction(act)
def __init__(self, repo, parent, multiselectable): QWidget.__init__(self, parent) self.repo = repo self.multiselectable = multiselectable self.currentFile = None layout = QVBoxLayout(self) layout.setSpacing(0) layout.setMargin(0) layout.setContentsMargins(2, 2, 2, 2) self.setLayout(layout) self.splitter = QSplitter(self) self.splitter.setOrientation(Qt.Vertical) self.splitter.setChildrenCollapsible(False) self.layout().addWidget(self.splitter) self.filelist = filelistview.HgFileListView(repo, self, multiselectable) self.filelistmodel = filelistmodel.HgFileListModel(self) self.filelist.setModel(self.filelistmodel) self.filelist.setContextMenuPolicy(Qt.CustomContextMenu) self.filelist.customContextMenuRequested.connect(self.menuRequest) self.filelist.doubleClicked.connect(self.vdiff) self.fileListFrame = QFrame(self.splitter) self.fileListFrame.setFrameShape(QFrame.NoFrame) vbox = QVBoxLayout() vbox.setSpacing(0) vbox.setMargin(0) vbox.addWidget(self.filelist) self.fileListFrame.setLayout(vbox) self.diffbrowse = DiffBrowser(self.splitter) self.diffbrowse.setFont(qtlib.getfont('fontdiff').font()) self.diffbrowse.showMessage.connect(self.showMessage) self.diffbrowse.linkActivated.connect(self.linkActivated) self.diffbrowse.chunksSelected.connect(self.chunksSelected) self.filelist.fileSelected.connect(self.displayFile) self.filelist.clearDisplay.connect(self.diffbrowse.clearDisplay) self.splitter.setStretchFactor(0, 0) self.splitter.setStretchFactor(1, 3) self.timerevent = self.startTimer(500) self._actions = {} for name, desc, icon, key, tip, cb in [ ('diff', _('Visual Diff'), 'visualdiff', 'Ctrl+D', _('View file changes in external diff tool'), self.vdiff), ('edit', _('Edit Local'), 'edit-file', 'Shift+Ctrl+L', _('Edit current file in working copy'), self.editCurrentFile), ('revert', _('Revert to Revision'), 'hg-revert', 'Shift+Ctrl+R', _('Revert file(s) to contents at this revision'), self.revertfile), ]: act = QAction(desc, self) if icon: act.setIcon(qtlib.getmenuicon(icon)) if key: act.setShortcut(key) if tip: act.setStatusTip(tip) if cb: act.triggered.connect(cb) self._actions[name] = act self.addAction(act)