示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#6
0
 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)
示例#7
0
 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)
示例#8
0
 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)
示例#9
0
        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
示例#10
0
    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)
示例#11
0
    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
示例#13
0
    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
示例#14
0
    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)
示例#15
0
    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)