示例#1
0
    def __init__(self, repoagent, parent=None):
        QDialog.__init__(self, parent)

        self.setWindowTitle(_('TortoiseHg Lock Tool - %s') % \
                            repoagent.shortName())
        self.setWindowIcon(qtlib.geticon('thg-password'))

        layout = QVBoxLayout()
        layout.setContentsMargins(2, 2, 2, 2)
        layout.setSpacing(4)
        self.setLayout(layout)

        self._repoagent = repoagent
        self._cmdsession = cmdcore.nullCmdSession()

        self._repoagent.configChanged.connect(self.reload)

        tb = QToolBar(self)
        tb.setIconSize(qtlib.toolBarIconSize())
        tb.setStyleSheet(qtlib.tbstylesheet)
        self.layout().addWidget(tb)

        self.refreshAction = a = QAction(self)
        a.setToolTip(_('Refresh lock information'))
        a.setIcon(qtlib.geticon('view-refresh'))
        a.triggered.connect(self.reload)
        tb.addAction(a)

        self.addAction = a = QAction(self)
        a.setToolTip(_('Lock a file not described in .hglocks'))
        a.setIcon(qtlib.geticon('new-group')) # TODO: not the best icon
        a.triggered.connect(self.lockany)
        tb.addAction(a)

        self.stopAction = a = QAction(self)
        a.setToolTip(_('Stop current operation'))
        a.setIcon(qtlib.geticon('process-stop'))
        a.triggered.connect(self.stopclicked)
        tb.addAction(a)

        lbl = QLabel(_('Locked And Lockable Files:'))
        self.locktw = tw = QTreeWidget(self)
        tw.setColumnCount(3)
        tw.setHeaderLabels([_('Path'), _('Locking User'), _('Purpose')])
        tw.setEnabled(False)
        tw.doubleClicked.connect(self.rowDoubleClicked)
        layout.addWidget(lbl)
        layout.addWidget(tw)

        self._stbar = cmdui.ThgStatusBar()
        layout.addWidget(self._stbar)
        self.showMessage.connect(self._stbar.showMessage)

        s = QSettings()
        self.restoreGeometry(s.value('lock/geom').toByteArray())
        self.locktw.header().restoreState(s.value('lock/treestate').toByteArray())

        QTimer.singleShot(0, self.finishSetup)
示例#2
0
    def _initicons(self):
        def setstdicon(w, name):
            w.setIcon(self.style().standardIcon(name))

        setstdicon(self._qui.open_button, QStyle.SP_DialogOpenButton)
        setstdicon(self._qui.save_button, QStyle.SP_DialogSaveButton)
        self._qui.add_button.setIcon(qtlib.geticon('fileadd'))
        self._qui.edit_button.setIcon(qtlib.geticon('edit-file'))
        self._qui.remove_button.setIcon(qtlib.geticon('filedelete'))
示例#3
0
def _newSubrepoIcon(repotype, valid=True):
    subiconame = _subrepoType2IcoMap.get(repotype)
    if subiconame is None:
        ico = qtlib.geticon('thg-subrepo')
    else:
        ico = qtlib.geticon(subiconame)
        ico = qtlib.getoverlaidicon(ico, qtlib.geticon('thg-subrepo'))
    if not valid:
        ico = qtlib.getoverlaidicon(ico, qtlib.geticon('dialog-warning'))
    return ico
示例#4
0
def _newSubrepoIcon(repotype, valid=True):
    subiconame = _subrepoType2IcoMap.get(repotype)
    if subiconame is None:
        ico = qtlib.geticon('thg-subrepo')
    else:
        ico = qtlib.geticon(subiconame)
        ico = qtlib.getoverlaidicon(ico, qtlib.geticon('thg-subrepo'))
    if not valid:
        ico = qtlib.getoverlaidicon(ico, qtlib.geticon('dialog-warning'))
    return ico
示例#5
0
 def data(self, column, role):
     if role == Qt.DecorationRole and column == 0:
         baseiconname = 'hg'
         if paths.is_unc_path(self.rootpath()):
             baseiconname = 'thg-remote-repo'
         ico = qtlib.geticon(baseiconname)
         if not self._valid:
             ico = qtlib.getoverlaidicon(ico, qtlib.geticon('dialog-warning'))
         return ico
     elif role in (Qt.DisplayRole, Qt.EditRole):
         return [self.shortname, self.shortpath][column]()
示例#6
0
 def data(self, column, role):
     if role == Qt.DecorationRole and column == 0:
         baseiconname = 'hg'
         if paths.is_unc_path(self.rootpath()):
             baseiconname = 'thg-remote-repo'
         ico = qtlib.geticon(baseiconname)
         if not self._valid:
             ico = qtlib.getoverlaidicon(ico,
                                         qtlib.geticon('dialog-warning'))
         return ico
     elif role in (Qt.DisplayRole, Qt.EditRole):
         return [self.shortname, self.shortpath][column]()
示例#7
0
    def __init__(self, parent=None):
        super(SearchToolBar, self).__init__(_('Search'), parent,
                                            objectName='search')
        self.setIconSize(qtlib.smallIconSize())

        a = self.addAction(qtlib.geticon('window-close'), '')
        a.setShortcut(Qt.Key_Escape)
        a.setShortcutContext(Qt.WidgetWithChildrenShortcut)
        a.triggered.connect(self.hide)
        self.addWidget(qtlib.Spacer(2, 2))

        self._le = QLineEdit()
        if hasattr(self._le, 'setPlaceholderText'): # Qt >= 4.7
            self._le.setPlaceholderText(_('### regular expression ###'))
        else:
            self._lbl = QLabel(_('Regexp:'),
                               toolTip=_('Regular expression search pattern'))
            self.addWidget(self._lbl)
            self._lbl.setBuddy(self._le)
        self._le.returnPressed.connect(self._emitSearchRequested)
        self.addWidget(self._le)
        self.addWidget(qtlib.Spacer(4, 4))
        self._chk = QCheckBox(_('Ignore case'))
        self.addWidget(self._chk)
        self._wrapchk = QCheckBox(_('Wrap search'))
        self.addWidget(self._wrapchk)

        self._prevact = self.addAction(qtlib.geticon('go-up'), _('Prev'))
        self._prevact.setShortcuts(QKeySequence.FindPrevious)
        self._nextact = self.addAction(qtlib.geticon('go-down'), _('Next'))
        self._nextact.setShortcuts(QKeySequence.FindNext)
        for a in [self._prevact, self._nextact]:
            a.setShortcutContext(Qt.WidgetWithChildrenShortcut)
            a.triggered.connect(self._emitSearchRequested)
            w = self.widgetForAction(a)
            w.setAutoRaise(False)  # no flat button
            w.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)

        self._le.textChanged.connect(self._updateSearchButtons)

        self.setFocusProxy(self._le)
        self.setStyleSheet(qtlib.tbstylesheet)

        self._settings = QSettings()
        self._settings.beginGroup('searchtoolbar')
        self.searchRequested.connect(self._writesettings)
        self._readsettings()

        self._le.textChanged.connect(self._emitConditionChanged)
        self._chk.toggled.connect(self._emitConditionChanged)
        self._wrapchk.toggled.connect(self._emitConditionChanged)

        self._updateSearchButtons()
示例#8
0
    def __init__(self, parent=None, hidable=False):
        super(SearchToolBar, self).__init__(_('Search'),
                                            parent,
                                            objectName='search',
                                            iconSize=QSize(16, 16))
        if hidable:
            self._close_button = QToolButton(
                icon=qtlib.geticon('window-close'), shortcut=Qt.Key_Escape)
            self._close_button.clicked.connect(self.hide)
            self.addWidget(self._close_button)
            self.addWidget(qtlib.Spacer(2, 2))

        self._le = QLineEdit()
        if hasattr(self._le, 'setPlaceholderText'):  # Qt >= 4.7
            self._le.setPlaceholderText(_('### regular expression ###'))
        else:
            self._lbl = QLabel(_('Regexp:'),
                               toolTip=_('Regular expression search pattern'))
            self.addWidget(self._lbl)
            self._lbl.setBuddy(self._le)
        self._le.returnPressed.connect(self._emitSearchRequested)
        self.addWidget(self._le)
        self.addWidget(qtlib.Spacer(4, 4))
        self._chk = QCheckBox(_('Ignore case'))
        self.addWidget(self._chk)
        self._wrapchk = QCheckBox(_('Wrap search'))
        self.addWidget(self._wrapchk)
        self._btprev = QPushButton(_('Prev'),
                                   icon=qtlib.geticon('go-up'),
                                   iconSize=QSize(16, 16))
        self._btprev.clicked.connect(
            lambda: self._emitSearchRequested(forward=False))
        self.addWidget(self._btprev)
        self._bt = QPushButton(_('Next'),
                               icon=qtlib.geticon('go-down'),
                               iconSize=QSize(16, 16))
        self._bt.clicked.connect(self._emitSearchRequested)
        self._le.textChanged.connect(self._updateSearchButtons)
        self.addWidget(self._bt)

        self.setFocusProxy(self._le)
        self.setStyleSheet(qtlib.tbstylesheet)

        self._settings = QSettings()
        self._settings.beginGroup('searchtoolbar')
        self.searchRequested.connect(self._writesettings)
        self._readsettings()

        self._le.textChanged.connect(self._emitConditionChanged)
        self._chk.toggled.connect(self._emitConditionChanged)
        self._wrapchk.toggled.connect(self._emitConditionChanged)

        self._updateSearchButtons()
示例#9
0
    def createActions(self):
        self.actionClose.triggered.connect(self.close)
        self.actionReload.triggered.connect(self.reload)
        self.actionReload.setIcon(qtlib.geticon('view-refresh'))

        self.actionBack = QAction(_('Back'), self, enabled=False,
                                  icon=qtlib.geticon('go-previous'))
        self.actionForward = QAction(_('Forward'), self, enabled=False,
                                     icon=qtlib.geticon('go-next'))
        self.repoview.revisionSelected.connect(self._updateHistoryActions)
        self.actionBack.triggered.connect(self.repoview.back)
        self.actionForward.triggered.connect(self.repoview.forward)
示例#10
0
    def createActions(self):
        self.actionClose.triggered.connect(self.close)
        self.actionReload.triggered.connect(self.reload)
        self.actionReload.setIcon(qtlib.geticon('view-refresh'))

        self.actionBack = QAction(_('Back'), self, enabled=False,
                                  icon=qtlib.geticon('go-previous'))
        self.actionForward = QAction(_('Forward'), self, enabled=False,
                                     icon=qtlib.geticon('go-next'))
        self.repoview.revisionSelected.connect(self._updateHistoryActions)
        self.actionBack.triggered.connect(self.repoview.back)
        self.actionForward.triggered.connect(self.repoview.forward)
示例#11
0
    def _createFileListActions(self):
        tbar = self.filelisttbar
        self._actionManifestMode = a = tbar.addAction(_('Ma&nifest Mode'))
        a.setCheckable(True)
        a.setIcon(qtlib.geticon('hg-annotate'))
        a.setToolTip(_('Show all version-controlled files in tree view'))
        a.triggered.connect(self._applyManifestMode)

        self._actionFlatFileList = a = QAction(_('&Flat List'), self)
        a.setCheckable(True)
        a.setChecked(True)
        a.triggered.connect(self._applyFlatFileList)

        le = QLineEdit()
        if hasattr(le, 'setPlaceholderText'): # Qt >= 4.7
            le.setPlaceholderText(_('### filter text ###'))
        self.filefilter = le
        tbar.addWidget(self.filefilter)
        t = QTimer(self, interval=200, singleShot=True)
        t.timeout.connect(self._applyFileNameFilter)
        le.textEdited.connect(t.start)
        le.returnPressed.connect(self.filelist.expandAll)

        w = status.StatusFilterActionGroup('MARS', 'MARCS', self)
        self._fileStatusFilter = w
        w.statusChanged.connect(self._applyFileStatusFilter)

        # TODO: p1/p2 toggle should be merged with fileview's
        self._parentToggleGroup = QActionGroup(self)
        self._parentToggleGroup.triggered.connect(self._selectParentRevision)
        for i, (icon, text, tip) in enumerate([
                ('hg-merged-both', _('Changed by &This Commit'),
                 _('Show files changed by this commit')),
                ('hg-merged-p1', _('Compare to &1st Parent'),
                 _('Show changes from first parent')),
                ('hg-merged-p2', _('Compare to &2nd Parent'),
                 _('Show changes from second parent'))]):
            a = self._parentToggleGroup.addAction(qtlib.geticon(icon), text)
            a.setCheckable(True)
            a.setData(i)
            a.setStatusTip(tip)

        w = QToolButton(self)
        m = QMenu(w)
        m.addActions(self._parentToggleGroup.actions())
        w.setMenu(m)
        w.setPopupMode(QToolButton.MenuButtonPopup)
        self._actionParentToggle = a = tbar.addWidget(w)
        a.setIcon(qtlib.geticon('hg-merged-both'))
        a.setToolTip(_('Toggle parent to be used as the base revision'))
        a.triggered.connect(self._toggleParentRevision)
        w.setDefaultAction(a)
示例#12
0
    def __init__(self, parent=None, hidable=False):
        super(SearchToolBar, self).__init__(_('Search'), parent,
                                            objectName='search',
                                            iconSize=QSize(16, 16))
        if hidable:
            self._close_button = QToolButton(icon=qtlib.geticon('window-close'),
                                             shortcut=Qt.Key_Escape)
            self._close_button.clicked.connect(self.hide)
            self.addWidget(self._close_button)
            self.addWidget(qtlib.Spacer(2, 2))

        self._le = QLineEdit()
        if hasattr(self._le, 'setPlaceholderText'): # Qt >= 4.7
            self._le.setPlaceholderText(_('### regular expression ###'))
        else:
            self._lbl = QLabel(_('Regexp:'),
                               toolTip=_('Regular expression search pattern'))
            self.addWidget(self._lbl)
            self._lbl.setBuddy(self._le)
        self._le.returnPressed.connect(self._emitSearchRequested)
        self.addWidget(self._le)
        self.addWidget(qtlib.Spacer(4, 4))
        self._chk = QCheckBox(_('Ignore case'))
        self.addWidget(self._chk)
        self._wrapchk = QCheckBox(_('Wrap search'))
        self.addWidget(self._wrapchk)
        self._btprev = QPushButton(_('Prev'), icon=qtlib.geticon('go-up'),
                                   iconSize=QSize(16, 16))
        self._btprev.clicked.connect(
            lambda: self._emitSearchRequested(forward=False))
        self.addWidget(self._btprev)
        self._bt = QPushButton(_('Next'), icon=qtlib.geticon('go-down'),
                               iconSize=QSize(16, 16))
        self._bt.clicked.connect(self._emitSearchRequested)
        self._le.textChanged.connect(self._updateSearchButtons)
        self.addWidget(self._bt)

        self.setFocusProxy(self._le)
        self.setStyleSheet(qtlib.tbstylesheet)

        self._settings = QSettings()
        self._settings.beginGroup('searchtoolbar')
        self.searchRequested.connect(self._writesettings)
        self._readsettings()

        self._le.textChanged.connect(self._emitConditionChanged)
        self._chk.toggled.connect(self._emitConditionChanged)
        self._wrapchk.toggled.connect(self._emitConditionChanged)

        self._updateSearchButtons()
示例#13
0
def getSubrepoIcoDict():
    'Return a dictionary mapping each subrepo type to the corresponding icon'
    _subrepoType2IcoMap = {
      'hg': 'hg',
      'git': 'thg-git-subrepo',
      'svn': 'thg-svn-subrepo',
      'hgsubversion': 'thg-svn-subrepo',
      'empty': 'hg'
    }
    icOverlay = geticon('thg-subrepo')
    subrepoIcoDict = {}
    for stype in _subrepoType2IcoMap:
        ic = geticon(_subrepoType2IcoMap[stype])
        ic = getoverlaidicon(ic, icOverlay)
        subrepoIcoDict[stype] = ic
    return subrepoIcoDict
示例#14
0
    def __init__(self, repoagent, otherrev, parent=None):
        super(MergeDialog, self).__init__(parent)
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)

        repo = repoagent.rawRepo()
        self.otherrev = str(otherrev)
        self.localrev = str(repo['.'].rev())

        self.setWindowTitle(_('Merge - %s') % repo.displayname)
        self.setWindowIcon(qtlib.geticon('hg-merge'))
        self.setOption(QWizard.NoBackButtonOnStartPage, True)
        self.setOption(QWizard.NoBackButtonOnLastPage, True)
        self.setOption(QWizard.IndependentPages, True)

        # set pages
        summarypage = SummaryPage(repoagent, self)
        self.addPage(summarypage)
        self.addPage(MergePage(repoagent, self))
        self.addPage(CommitPage(repoagent, self))
        self.addPage(ResultPage(repoagent, self))
        self.currentIdChanged.connect(self.pageChanged)

        # move focus to "Next" button so that "Cancel" doesn't eat Enter key
        summarypage.refreshFinished.connect(
            self.button(QWizard.NextButton).setFocus)

        self.resize(QSize(700, 489).expandedTo(self.minimumSizeHint()))

        repoagent.repositoryChanged.connect(self.repositoryChanged)
        repoagent.configChanged.connect(self.configChanged)
示例#15
0
    def __init__(self, parent=None):
        super(LicenseDialog, self).__init__(parent)

        self.setWindowIcon(qtlib.geticon('thg_logo'))
        self.setWindowTitle(_('License'))
        self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)
        self.resize(700, 400)

        self.lic_txt = QPlainTextEdit()
        self.lic_txt.setFont(QFont('Monospace'))
        self.lic_txt.setTextInteractionFlags(
                Qt.TextSelectableByKeyboard|Qt.TextSelectableByMouse)
        try:
            lic = open(paths.get_license_path(), 'rb').read()
            self.lic_txt.setPlainText(lic)
        except (IOError):
            pass

        self.hspacer = QSpacerItem(40, 20,
                QSizePolicy.Expanding, QSizePolicy.Minimum)
        self.close_btn = QPushButton(_('&Close'))
        self.close_btn.clicked.connect(self.close)

        self.hbox = QHBoxLayout()
        self.hbox.addItem(self.hspacer)
        self.hbox.addWidget(self.close_btn)
        self.vbox = QVBoxLayout()
        self.vbox.setSpacing(6)
        self.vbox.addWidget(self.lic_txt)
        self.vbox.addLayout(self.hbox)

        self.setLayout(self.vbox)
        self._readsettings()
        self.setModal(True)
示例#16
0
    def __init__(self, otherrev, repo, parent):
        super(MergeDialog, self).__init__(parent)
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)

        self.otherrev = str(otherrev)
        self.localrev = str(repo["."].rev())

        self.setWindowTitle(_("Merge - %s") % repo.displayname)
        self.setWindowIcon(qtlib.geticon("hg-merge"))
        self.setOption(QWizard.NoBackButtonOnStartPage, True)
        self.setOption(QWizard.NoBackButtonOnLastPage, True)
        self.setOption(QWizard.IndependentPages, True)

        # set pages
        self.addPage(SummaryPage(repo, self))
        self.addPage(MergePage(repo, self))
        self.addPage(CommitPage(repo, self))
        self.addPage(ResultPage(repo, self))
        self.currentIdChanged.connect(self.pageChanged)

        self.resize(QSize(700, 489).expandedTo(self.minimumSizeHint()))

        repo.repositoryChanged.connect(self.repositoryChanged)
        repo.configChanged.connect(self.configChanged)
        self.repo = repo
示例#17
0
    def __init__(self, repoagent, rev, parent=None):
        super(BackoutDialog, self).__init__(parent)
        self._repoagent = repoagent
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)

        repo = repoagent.rawRepo()
        parentbackout = repo[rev] == repo['.']

        self.setWindowTitle(_('Backout - %s') % repoagent.displayName())
        self.setWindowIcon(qtlib.geticon('hg-revert'))
        self.setOption(QWizard.NoBackButtonOnStartPage, True)
        self.setOption(QWizard.NoBackButtonOnLastPage, True)
        self.setOption(QWizard.IndependentPages, True)

        self.addPage(SummaryPage(repoagent, rev, parentbackout, self))
        self.addPage(BackoutPage(repoagent, rev, parentbackout, self))
        self.addPage(CommitPage(repoagent, rev, parentbackout, self))
        self.addPage(ResultPage(repoagent, self))
        self.currentIdChanged.connect(self.pageChanged)

        self.resize(QSize(700, 489).expandedTo(self.minimumSizeHint()))

        repoagent.repositoryChanged.connect(self.repositoryChanged)
        repoagent.configChanged.connect(self.configChanged)

        self._readSettings()
示例#18
0
    def __init__(self, repoagent, pats, opts, parent=None):
        QDialog.__init__(self, parent)
        self.setWindowIcon(qtlib.geticon('hg-status'))
        self._repoagent = repoagent

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)
        toplayout = QVBoxLayout()
        toplayout.setContentsMargins(10, 10, 10, 0)
        self.stwidget = StatusWidget(repoagent, pats, opts, self,
                                     checkable=False)
        toplayout.addWidget(self.stwidget, 1)
        layout.addLayout(toplayout)

        self.statusbar = cmdui.ThgStatusBar(self)
        layout.addWidget(self.statusbar)
        self.stwidget.showMessage.connect(self.statusbar.showMessage)
        self.stwidget.progress.connect(self.statusbar.progress)
        self.stwidget.titleTextChanged.connect(self.setWindowTitle)
        self.stwidget.linkActivated.connect(self.linkActivated)

        self._subdialogs = qtlib.DialogKeeper(StatusDialog._createSubDialog,
                                              parent=self)

        self.setWindowTitle(self.stwidget.getTitle())
        self.setWindowFlags(Qt.Window)
        self.loadSettings()

        qtlib.newshortcutsforstdkey(QKeySequence.Refresh, self,
                                    self.stwidget.refreshWctx)
        QTimer.singleShot(0, self.stwidget.refreshWctx)
示例#19
0
    def __init__(self, repoagent, rev, parent=None):
        super(BackoutDialog, self).__init__(parent)
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)

        self.backoutrev = rev
        self.parentbackout = False
        self.backoutmergeparentrev = None

        repo = repoagent.rawRepo()
        self.setWindowTitle(_('Backout - %s') % repo.displayname)
        self.setWindowIcon(qtlib.geticon('hg-revert'))
        self.setOption(QWizard.NoBackButtonOnStartPage, True)
        self.setOption(QWizard.NoBackButtonOnLastPage, True)
        self.setOption(QWizard.IndependentPages, True)

        self.addPage(SummaryPage(repoagent, self))
        self.addPage(BackoutPage(repoagent, self))
        self.addPage(CommitPage(repoagent, self))
        self.addPage(ResultPage(repoagent, self))
        self.currentIdChanged.connect(self.pageChanged)

        self.resize(QSize(700, 489).expandedTo(self.minimumSizeHint()))

        repoagent.repositoryChanged.connect(self.repositoryChanged)
        repoagent.configChanged.connect(self.configChanged)
示例#20
0
 def addtaskview(icon, label, name):
     a = newaction(label, icon=None, checkable=True, data=name,
                   enabled='repoopen', menu='view')
     a.setIcon(qtlib.geticon(icon))
     self.actionGroupTaskView.addAction(a)
     self.tasktbar.addAction(a)
     return a
示例#21
0
    def setupUi(self):
        desktopgeom = qApp.desktop().availableGeometry()
        self.resize(desktopgeom.size() * 0.8)

        self.setWindowIcon(qtlib.geticon('hg-log'))

        self.repoTabsWidget = tw = QTabWidget()
        tw.setTabBar(ThgTabBar())
        tw.setDocumentMode(True)
        tw.setTabsClosable(True)
        tw.setMovable(True)
        tw.tabBar().hide()
        tw.tabBar().setContextMenuPolicy(Qt.CustomContextMenu)
        tw.tabBar().customContextMenuRequested.connect(self.tabBarContextMenuRequest)
        tw.lastClickedTab = -1 # No tab clicked yet

        sp = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sp.setHorizontalStretch(1)
        sp.setVerticalStretch(1)
        sp.setHeightForWidth(tw.sizePolicy().hasHeightForWidth())
        tw.setSizePolicy(sp)
        tw.tabCloseRequested.connect(self.repoTabCloseRequested)
        tw.currentChanged.connect(self.repoTabChanged)

        self.setCentralWidget(tw)
        self.statusbar = cmdui.ThgStatusBar(self)
        self.setStatusBar(self.statusbar)
示例#22
0
    def __init__(self, repo, patches, parent):
        super(QDeleteDialog, self).__init__(parent)
        self.setWindowTitle(_('Patch remove - %s') % repo.displayname)
        self.setWindowIcon(qtlib.geticon('hg-qdelete'))
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)
        self.repo = repo
        self.patches = patches

        self.setLayout(QVBoxLayout())

        msg = _('Remove patches from queue?')
        patchesu = u'<li>'.join([hglib.tounicode(p) for p in patches])
        lbl = QLabel(u'<b>%s<ul><li>%s</ul></b>' % (msg, patchesu))
        self.layout().addWidget(lbl)

        self.keepchk = QCheckBox(_('Keep patch files'))
        self.keepchk.setChecked(True)
        self.layout().addWidget(self.keepchk)

        self.cmd = cmdui.Runner(False, self)
        self.cmd.output.connect(self.output)
        self.cmd.makeLogVisible.connect(self.makeLogVisible)

        BB = QDialogButtonBox
        bbox = QDialogButtonBox(BB.Ok | BB.Cancel)
        bbox.accepted.connect(self.accept)
        bbox.rejected.connect(self.reject)
        self.layout().addWidget(bbox)
        self.bbox = bbox
示例#23
0
def getSubrepoIcoDict():
    'Return a dictionary mapping each subrepo type to the corresponding icon'
    _subrepoType2IcoMap = {
        'hg': 'hg',
        'git': 'thg-git-subrepo',
        'svn': 'thg-svn-subrepo',
        'hgsubversion': 'thg-svn-subrepo',
        'empty': 'hg'
    }
    icOverlay = geticon('thg-subrepo')
    subrepoIcoDict = {}
    for stype in _subrepoType2IcoMap:
        ic = geticon(_subrepoType2IcoMap[stype])
        ic = getoverlaidicon(ic, icOverlay)
        subrepoIcoDict[stype] = ic
    return subrepoIcoDict
示例#24
0
    def __init__(self, rev, repo, parent):
        super(BackoutDialog, self).__init__(parent)
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)

        self.backoutrev = rev
        self.parentbackout = False
        self.backoutmergeparentrev = None

        self.setWindowTitle(_('Backout - %s') % repo.displayname)
        self.setWindowIcon(qtlib.geticon('hg-revert'))
        self.setOption(QWizard.NoBackButtonOnStartPage, True)
        self.setOption(QWizard.NoBackButtonOnLastPage, True)
        self.setOption(QWizard.IndependentPages, True)

        self.addPage(SummaryPage(repo, self))
        self.addPage(BackoutPage(repo, self))
        self.addPage(CommitPage(repo, self))
        self.addPage(ResultPage(repo, self))
        self.currentIdChanged.connect(self.pageChanged)

        self.resize(QSize(700, 489).expandedTo(self.minimumSizeHint()))

        repo.repositoryChanged.connect(self.repositoryChanged)
        repo.configChanged.connect(self.configChanged)
示例#25
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._fileactions = filectxactions.FilectxActions(self.repo, self,
                                                          rev=self.ctx.rev())
        self._fileactions.linkActivated.connect(self.linkActivated)
        self.addActions(self._fileactions.actions())
示例#26
0
    def __init__(self, repo, patches, parent):
        super(QDeleteDialog, self).__init__(parent)
        self.setWindowTitle(_('Patch remove - %s') % repo.displayname)
        self.setWindowIcon(qtlib.geticon('hg-qdelete'))
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)
        self.repo = repo
        self.patches = patches

        self.setLayout(QVBoxLayout())

        msg = _('Remove patches from queue?')
        patchesu = u'<li>'.join([hglib.tounicode(p) for p in patches])
        lbl = QLabel(u'<b>%s<ul><li>%s</ul></b>' % (msg, patchesu))
        self.layout().addWidget(lbl)

        self.keepchk = QCheckBox(_('Keep patch files'))
        self.keepchk.setChecked(True)
        self.layout().addWidget(self.keepchk)

        self.cmd = cmdui.Runner(False, self)
        self.cmd.output.connect(self.output)
        self.cmd.makeLogVisible.connect(self.makeLogVisible)

        BB = QDialogButtonBox
        bbox = QDialogButtonBox(BB.Ok|BB.Cancel)
        bbox.accepted.connect(self.accept)
        bbox.rejected.connect(self.reject)
        self.layout().addWidget(bbox)
        self.bbox = bbox
示例#27
0
def getSubrepoIcoDict():
    "Return a dictionary mapping each subrepo type to the corresponding icon"
    _subrepoType2IcoMap = {
        "hg": "hg",
        "git": "thg-git-subrepo",
        "svn": "thg-svn-subrepo",
        "hgsubversion": "thg-svn-subrepo",
        "empty": "hg",
    }
    icOverlay = geticon("thg-subrepo")
    subrepoIcoDict = {}
    for stype in _subrepoType2IcoMap:
        ic = geticon(_subrepoType2IcoMap[stype])
        ic = getoverlaidicon(ic, icOverlay)
        subrepoIcoDict[stype] = ic
    return subrepoIcoDict
示例#28
0
 def setupCustomToolsMenu(self, location):
     tools, toollist = hglib.tortoisehgtools(self._ui, location)
     submenu = QMenu(_('Custom Tools'), self.parent())
     submenu.triggered.connect(self._runCustomCommandByMenu)
     for name in toollist:
         if name == '|':
             submenu.addSeparator()
             continue
         info = tools.get(name, None)
         if info is None:
             continue
         command = info.get('command', None)
         if not command:
             continue
         label = info.get('label', name)
         icon = info.get('icon', customtools.DEFAULTICONNAME)
         status = info.get('status')
         a = submenu.addAction(label)
         a.setData(name)
         if icon:
             a.setIcon(qtlib.geticon(icon))
         if status:
             fdfilters = (_filestatus(status),)
         else:
             fdfilters = ()
         self._customactions[name] = (a, fdfilters)
     submenu.menuAction().setVisible(bool(self._customactions))
     self._addAction('customToolsMenu', submenu.menuAction(), ())
     self._updateActions()
示例#29
0
    def __init__(self, repoagent, parent):
        super(FilectxActions, self).__init__(parent)
        if not isinstance(parent, QWidget):
            raise ValueError('parent must be a QWidget')

        self._repoagent = repoagent
        self._cmdsession = cmdcore.nullCmdSession()
        self._selfds = []

        self._nav_dialogs = qtlib.DialogKeeper(FilectxActions._createnavdialog,
                                               FilectxActions._gennavdialogkey,
                                               self)

        self._actions = {}
        self._customactions = {}
        for name, d in self._actiontable.iteritems():
            desc, icon, key, tip, fdfilters = d
            # QAction must be owned by QWidget; otherwise statusTip for context
            # menu cannot be displayed (QTBUG-16114)
            act = QAction(desc, self.parent())
            if icon:
                act.setIcon(qtlib.geticon(icon))
            if key:
                act.setShortcut(key)
                act.setShortcutContext(Qt.WidgetWithChildrenShortcut)
            if tip:
                act.setStatusTip(tip)
            QObject.connect(act, SIGNAL('triggered()'),
                            self, SLOT('%s()' % name))
            self._addAction(name, act, fdfilters)

        self._initAdditionalActions()
        self._updateActions()
示例#30
0
    def __init__(self, repoagent, pats, opts, parent=None):
        QDialog.__init__(self, parent)
        self.setWindowIcon(qtlib.geticon('hg-status'))
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)
        toplayout = QVBoxLayout()
        toplayout.setContentsMargins(10, 10, 10, 0)
        self.stwidget = StatusWidget(repoagent,
                                     pats,
                                     opts,
                                     self,
                                     checkable=False)
        toplayout.addWidget(self.stwidget, 1)
        layout.addLayout(toplayout)

        self.statusbar = cmdui.ThgStatusBar(self)
        layout.addWidget(self.statusbar)
        self.stwidget.showMessage.connect(self.statusbar.showMessage)
        self.stwidget.progress.connect(self.statusbar.progress)
        self.stwidget.titleTextChanged.connect(self.setWindowTitle)
        self.stwidget.linkActivated.connect(self.linkActivated)

        self._subdialogs = qtlib.DialogKeeper(StatusDialog._createSubDialog,
                                              parent=self)

        self.setWindowTitle(self.stwidget.getTitle())
        self.setWindowFlags(Qt.Window)
        self.loadSettings()

        qtlib.newshortcutsforstdkey(QKeySequence.Refresh, self,
                                    self.stwidget.refreshWctx)
        QTimer.singleShot(0, self.stwidget.refreshWctx)
示例#31
0
    def __init__(self, parent=None):
        super(LicenseDialog, self).__init__(parent)

        self.setWindowIcon(qtlib.geticon('thg_logo'))
        self.setWindowTitle(_('License'))
        self.setWindowFlags(self.windowFlags()
                            & ~Qt.WindowContextHelpButtonHint)
        self.resize(700, 400)

        self.lic_txt = QPlainTextEdit()
        self.lic_txt.setFont(QFont('Monospace'))
        self.lic_txt.setTextInteractionFlags(Qt.TextSelectableByKeyboard
                                             | Qt.TextSelectableByMouse)
        try:
            lic = open(paths.get_license_path(), 'rb').read()
            self.lic_txt.setPlainText(lic)
        except (IOError):
            pass

        self.hspacer = QSpacerItem(40, 20, QSizePolicy.Expanding,
                                   QSizePolicy.Minimum)
        self.close_btn = QPushButton(_('&Close'))
        self.close_btn.clicked.connect(self.close)

        self.hbox = QHBoxLayout()
        self.hbox.addItem(self.hspacer)
        self.hbox.addWidget(self.close_btn)
        self.vbox = QVBoxLayout()
        self.vbox.setSpacing(6)
        self.vbox.addWidget(self.lic_txt)
        self.vbox.addLayout(self.hbox)

        self.setLayout(self.vbox)
        self._readsettings()
        self.setModal(True)
示例#32
0
    def __init__(self, otherrev, repo, parent):
        super(MergeDialog, self).__init__(parent)
        f = self.windowFlags()
        self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)

        self.otherrev = str(otherrev)
        self.localrev = str(repo['.'].rev())

        self.setWindowTitle(_('Merge - %s') % repo.displayname)
        self.setWindowIcon(qtlib.geticon('hg-merge'))
        self.setOption(QWizard.NoBackButtonOnStartPage, True)
        self.setOption(QWizard.NoBackButtonOnLastPage, True)
        self.setOption(QWizard.IndependentPages, True)

        # set pages
        summarypage = SummaryPage(repo, self)
        self.addPage(summarypage)
        self.addPage(MergePage(repo, self))
        self.addPage(CommitPage(repo, self))
        self.addPage(ResultPage(repo, self))
        self.currentIdChanged.connect(self.pageChanged)

        # move focus to "Next" button so that "Cancel" doesn't eat Enter key
        summarypage.refreshFinished.connect(
            self.button(QWizard.NextButton).setFocus)

        self.resize(QSize(700, 489).expandedTo(self.minimumSizeHint()))

        repo.repositoryChanged.connect(self.repositoryChanged)
        repo.configChanged.connect(self.configChanged)
        self.repo = repo
示例#33
0
    def __init__(self, repoagent, rev='.', parent=None):
        QDialog.__init__(self, parent)
        self.setWindowFlags(Qt.Window)
        self.setWindowIcon(qtlib.geticon('hg-log'))

        layout = QVBoxLayout()
        layout.setMargin(0)
        self.setLayout(layout)

        toplayout = QVBoxLayout()
        toplayout.setContentsMargins(5, 5, 5, 0)
        layout.addLayout(toplayout)

        revdetails = RevDetailsWidget(repoagent, parent, rev=rev)
        toplayout.addWidget(revdetails, 1)

        self.statusbar = cmdui.ThgStatusBar(self)
        revdetails.showMessage.connect(self.statusbar.showMessage)
        revdetails.linkActivated.connect(self.linkActivated)

        layout.addWidget(self.statusbar)

        s = QSettings()
        self.restoreGeometry(s.value('revdetails/geom').toByteArray())
        revdetails.loadSettings(s)
        repoagent.repositoryChanged.connect(self.refresh)

        self.revdetails = revdetails
        self.setRev(rev)
        qtlib.newshortcutsforstdkey(QKeySequence.Refresh, self, self.refresh)
示例#34
0
    def createActions(self):
        self.actionClose.triggered.connect(self.close)
        self.actionReload.triggered.connect(self.reload)
        self.actionReload.setIcon(qtlib.geticon('view-refresh'))

        self.actionBack = QAction(_('Back'), self, enabled=False,
                                  shortcut=QKeySequence.Back,
                                  icon=qtlib.geticon('go-previous'))
        self.actionForward = QAction(_('Forward'), self, enabled=False,
                                     shortcut=QKeySequence.Forward,
                                     icon=qtlib.geticon('go-next'))
        self.repoview.revisionSelected.connect(self._updateHistoryActions)
        self.actionBack.triggered.connect(self.repoview.back)
        self.actionForward.triggered.connect(self.repoview.forward)

        self._fileactions = filectxactions.FilectxActions(self._repoagent, self)
        self.addActions(self._fileactions.actions())
示例#35
0
def createStripDialog(repoagent, rev=None, parent=None, opts={}):
    dlg = cmdui.CmdControlDialog(parent)
    dlg.setWindowIcon(qtlib.geticon('hg-strip'))
    dlg.setWindowTitle(_('Strip - %s') % repoagent.displayName())
    dlg.setObjectName('strip')
    dlg.setRunButtonText(_('&Strip'))
    dlg.setCommandWidget(StripWidget(repoagent, rev, dlg, opts))
    return dlg
示例#36
0
    def createActions(self):
        self.actionClose.triggered.connect(self.close)
        self.actionReload.triggered.connect(self.reload)
        self.actionReload.setIcon(qtlib.geticon('view-refresh'))

        self.actionNextDiff = QAction(qtlib.geticon('go-down'), _('Next diff'),
                                      self)
        self.actionNextDiff.setShortcut('Alt+Down')
        self.actionNextDiff.triggered.connect(self.nextDiff)

        self.actionPrevDiff = QAction(qtlib.geticon('go-up'),
                                      _('Previous diff'), self)
        self.actionPrevDiff.setShortcut('Alt+Up')
        self.actionPrevDiff.triggered.connect(self.prevDiff)

        self.actionNextDiff.setEnabled(False)
        self.actionPrevDiff.setEnabled(False)
示例#37
0
def createRemoteUpdateDialog(repoagent, rev=None, parent=None):
    dlg = cmdui.CmdControlDialog(parent)
    dlg.setWindowTitle(_('Remote Update - %s') % repoagent.displayName())
    dlg.setWindowIcon(qtlib.geticon('hg-update'))
    dlg.setObjectName('rupdate')
    dlg.setRunButtonText(_('&Update'))
    dlg.setCommandWidget(RemoteUpdateWidget(repoagent, rev, dlg))
    return dlg
示例#38
0
    def createActions(self):
        self.actionClose.triggered.connect(self.close)
        self.actionReload.triggered.connect(self.reload)
        self.actionReload.setIcon(qtlib.geticon('view-refresh'))

        self.actionNextDiff = QAction(qtlib.geticon('go-down'),
                                      _('Next diff'), self)
        self.actionNextDiff.setShortcut('Alt+Down')
        self.actionNextDiff.triggered.connect(self.nextDiff)

        self.actionPrevDiff = QAction(qtlib.geticon('go-up'),
                                      _('Previous diff'), self)
        self.actionPrevDiff.setShortcut('Alt+Up')
        self.actionPrevDiff.triggered.connect(self.prevDiff)

        self.actionNextDiff.setEnabled(False)
        self.actionPrevDiff.setEnabled(False)
示例#39
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.geticon('visualdiff'))
         a.triggered.connect(self.onVisualDiff)
         a = menu.addAction(_('Diff to &Local'))
         a.setIcon(qtlib.geticon('ldiff'))
         a.triggered.connect(self.onVisualDiffToLocal)
         menu.addSeparator()
         a = menu.addAction(_('Diff &File to Parent'))
         a.setIcon(qtlib.geticon('visualdiff'))
         a.triggered.connect(self.onVisualDiffFile)
         a = menu.addAction(_('Diff File to Lo&cal'))
         a.setIcon(qtlib.geticon('ldiff'))
         a.triggered.connect(self.onVisualDiffFileToLocal)
         menu.addSeparator()
         a = menu.addAction(_('&View at Revision'))
         a.setIcon(qtlib.geticon('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.geticon('edit-file'))
         a.triggered.connect(self.onEditLocal)
         a = menu.addAction(_('&Revert to Revision...'))
         a.setIcon(qtlib.geticon('hg-revert'))
         a.triggered.connect(self.onRevertFileToRevision)
     self.selection = selection
     self.menu.exec_(point)
示例#40
0
def createStatusFilterMenuButton(actiongroup, parent=None):
    """Create button with drop-down menu for status filter"""
    button = QToolButton(parent)
    button.setIcon(qtlib.geticon('hg-status'))
    button.setPopupMode(QToolButton.InstantPopup)
    menu = QMenu(button)
    menu.addActions(actiongroup.actions())
    button.setMenu(menu)
    return button
示例#41
0
 def viewMenuRequest(self, point, selection):
     'User requested a context menu in repo view widget'
     if not selection or len(selection) > 2:
         return
     if len(selection) == 2:
         if self.dualmenu is None:
             self.dualmenu = menu = QMenu(self)
             a = menu.addAction(_('&Diff Selected Changesets'))
             a.triggered.connect(self.onVisualDiffRevs)
             a = menu.addAction(_('Diff Selected &File Revisions'))
             a.setIcon(qtlib.geticon('visualdiff'))
             a.triggered.connect(self.onVisualDiffFileRevs)
         else:
             menu = self.dualmenu
     elif self.menu is None:
         self.menu = menu = QMenu(self)
         a = menu.addAction(_('&Diff Changeset to Parent'))
         a.setIcon(qtlib.geticon('visualdiff'))
         a.triggered.connect(self.onVisualDiff)
         a = menu.addAction(_('Diff Changeset to &Local'))
         a.setIcon(qtlib.geticon('ldiff'))
         a.triggered.connect(self.onVisualDiffToLocal)
         menu.addSeparator()
         a = menu.addAction(_('Diff &File to Parent'))
         a.setIcon(qtlib.geticon('visualdiff'))
         a.triggered.connect(self.onVisualDiffFile)
         a = menu.addAction(_('Diff File to Lo&cal'))
         a.setIcon(qtlib.geticon('ldiff'))
         a.triggered.connect(self.onVisualDiffFileToLocal)
         menu.addSeparator()
         a = menu.addAction(_('&View at Revision'))
         a.setIcon(qtlib.geticon('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.geticon('edit-file'))
         a.triggered.connect(self.onEditLocal)
         a = menu.addAction(_('&Revert to Revision...'))
         a.setIcon(qtlib.geticon('hg-revert'))
         a.triggered.connect(self.onRevertFileToRevision)
         menu.addSeparator()
         a = menu.addAction(_('Show Revision &Details'))
         a.setIcon(qtlib.geticon('hg-log'))
         a.triggered.connect(self.onShowRevisionDetails)
     else:
         menu = self.menu
     self.selection = selection
     menu.exec_(point)
示例#42
0
 def configureActions(self):
     for name, desc, icon, tip, cb in self._action_defs():
         act = self._actions[name]
         if icon:
             act.setIcon(qtlib.geticon(icon))
         if tip:
             act.setStatusTip(tip)
         if cb:
             act.triggered.connect(cb)
         self.addAction(act)
示例#43
0
 def make(text, func, types, icon=None, keys=None, slot=self.runAction):
     action = QAction(text, parent)
     action._filetypes = types
     action._runfunc = func
     if icon:
         action.setIcon(qtlib.geticon(icon))
     if keys:
         action.setShortcut(QKeySequence(keys))
     action.triggered.connect(slot)
     parent.addAction(action)
     allactions.append(action)
示例#44
0
    def data(self, column, role):
        if role == Qt.DecorationRole:
            if column == 0:
                subiconame = SubrepoItem._subrepoType2IcoMap.get(self._repotype, None)
                if subiconame is None:
                    # Unknown (or generic) subrepo type
                    ico = qtlib.geticon('thg-subrepo')
                else:
                    # Overlay the "subrepo icon" on top of the selected subrepo
                    # type icon
                    ico = qtlib.geticon(subiconame)
                    ico = qtlib.getoverlaidicon(ico, qtlib.geticon('thg-subrepo'))

                if not self._valid:
                    ico = qtlib.getoverlaidicon(ico, qtlib.geticon('dialog-warning'))

                return QVariant(ico)
            return QVariant()
        else:
            return super(SubrepoItem, self).data(column, role)
示例#45
0
    def fileIcon(self, index):
        if not index.isValid():
            if self.isDir(index):
                return self._diricon
            else:
                return self._fileicon
        e = index.internalPointer()
        ic = e.icon
        if not ic:
            if self.isDir(index):
                ic = self._diricon
            else:
                ext = os.path.splitext(e.path)[1]
                if not ext:
                    ic = self._fileicon
                else:
                    ic = self._icons.get(ext, None)
                    if not ic:
                        ic = self._fileiconprovider.icon(
                            QFileInfo(self._wjoin(e.path)))
                        if not ic.availableSizes():
                            ic = self._fileicon
                        self._icons[ext] = ic
            e.seticon(ic)

        if not e.status:
            return ic
        st = status.statusTypes[e.status]
        if st.icon:
            icOverlay = qtlib.geticon(st.icon[:-4])
            if e.status == 'S':
                _subrepoType2IcoMap = {
                    'hg': 'hg',
                    'git': 'thg-git-subrepo',
                    'svn': 'thg-svn-subrepo',
                }
                stype = self.subrepoType(index)
                if stype in _subrepoType2IcoMap:
                    ic = qtlib.geticon(_subrepoType2IcoMap[stype])
            ic = qtlib.getoverlaidicon(ic, icOverlay)
        return ic
示例#46
0
 def __init__(self, parent):
     QToolBar.__init__(self, _('Goto'), parent)
     self.setIconSize(QSize(16, 16))
     self.setFloatable(False)
     self.setMovable(False)
     self.setAllowedAreas(Qt.BottomToolBarArea)
     self.setVisible(False)
     self.goAction = QAction(geticon('go-jump'), _('Go'), self)
     self.goAction.triggered.connect(self.goto)
     self.entry = QLineEdit(self)
     self.entry.returnPressed.connect(self.goAction.trigger)
     self.addWidget(self.entry)
     self.addAction(self.goAction)
示例#47
0
 def data(self, column, role):
     if role == Qt.DecorationRole:
         if column == 0:
             baseiconname = 'hg'
             if paths.is_unc_path(self.rootpath()):
                 baseiconname = 'thg-remote-repo'
             ico = qtlib.geticon(baseiconname)
             if not self._valid:
                 ico = qtlib.getoverlaidicon(ico, qtlib.geticon('dialog-warning'))
             return QVariant(ico)
         return QVariant()
     elif role == Qt.FontRole:
         if self._isActiveTab:
             font = QFont()
             font.setBold(True)
         else:
             return QVariant()
         return QVariant(font)
     if column == 0:
         return QVariant(self.shortname())
     elif column == 1:
         return QVariant(self.shortpath())
     return QVariant()
示例#48
0
 def make(text, func, types=None, icon=None, inmenu=None,
          slot=self.runAction):
     if not types & alltypes:
         return
     if inmenu is None:
         inmenu = menu
     action = inmenu.addAction(text)
     action._filetypes = types
     action._runfunc = func
     if icon:
         action.setIcon(qtlib.geticon(icon))
     if func is not None:
         action.triggered.connect(slot)
     return action
示例#49
0
    def __init__(self, webconf, parent=None):
        super(ServeDialog, self).__init__(parent)
        self.setWindowFlags((self.windowFlags() | Qt.WindowMinimizeButtonHint)
                            & ~Qt.WindowContextHelpButtonHint)
        # TODO: choose appropriate icon
        self.setWindowIcon(qtlib.geticon('proxy'))

        self._qui = Ui_ServeDialog()
        self._qui.setupUi(self)

        self._initwebconf(webconf)
        self._initcmd()
        self._initactions()
        self._updateform()
示例#50
0
        def Toolbar():
            tb = QToolBar(_("Patch Branch Toolbar"), self)
            tb.setEnabled(True)
            tb.setObjectName("toolBar_patchbranch")
            tb.setFloatable(False)

            self.actionPMerge = a = QWidgetAction(self)
            a.setIcon(geticon("hg-merge"))
            a.setToolTip(_('Merge all pending dependencies'))
            tb.addAction(self.actionPMerge)
            self.actionPMerge.triggered.connect(self.pmerge_clicked)

            self.actionBackport = a = QWidgetAction(self)
            a.setIcon(geticon("go-previous"))
            a.setToolTip(_('Backout current patch branch'))
            #tb.addAction(self.actionBackport)
            #self.actionBackport.triggered.connect(self.pbackout_clicked)

            self.actionReapply = a = QWidgetAction(self)
            a.setIcon(geticon("go-next"))
            a.setToolTip(_('Backport part of a changeset to a dependency'))
            #tb.addAction(self.actionReapply)
            #self.actionReapply.triggered.connect(self.reapply_clicked)

            self.actionPNew = a = QWidgetAction(self)
            a.setIcon(geticon("fileadd")) #STOCK_NEW
            a.setToolTip(_('Start a new patch branch'))
            tb.addAction(self.actionPNew)
            self.actionPNew.triggered.connect(self.pnew_clicked)

            self.actionEditPGraph = a = QWidgetAction(self)
            a.setIcon(geticon("edit-file")) #STOCK_EDIT
            a.setToolTip(_('Edit patch dependency graph'))
            tb.addAction(self.actionEditPGraph)
            self.actionEditPGraph.triggered.connect(self.edit_pgraph_clicked)

            return tb
示例#51
0
    def data(self, index, role):
        if not index.isValid() or index.row() > len(self) or not self._ctx:
            return nullvariant
        if index.column() != 0:
            return nullvariant

        row = index.row()
        column = index.column()

        current_file_desc = self._files[row]
        current_file = current_file_desc['path']

        if role in (Qt.DisplayRole, Qt.ToolTipRole):
            return QVariant(hglib.tounicode(current_file))
        elif role == Qt.DecorationRole:
            if self._fulllist and bool(self._ctx.p2()):
                if current_file_desc['wasmerged']:
                    icn = geticon('thg-file-merged')
                elif current_file_desc['parent'] == 0:
                    icn = geticon('thg-file-p0')
                elif current_file_desc['parent'] == 1:
                    icn = geticon('thg-file-p1')
                return QVariant(icn.pixmap(20, 20))
            elif current_file_desc['status'] == 'A':
                return QVariant(geticon('fileadd'))
            elif current_file_desc['status'] == 'R':
                return QVariant(geticon('filedelete'))
            elif current_file_desc['status'] == 'S':
                stype = current_file_desc.get('stype', 'hg')
                return QVariant(self._subrepoIcoDict[stype])
            #else:
            #    return QVariant(geticon('filemodify'))
        elif role == Qt.FontRole:
            if current_file_desc['wasmerged']:
                return QVariant(self._boldfont)
        else:
            return nullvariant
示例#52
0
    def __init__(self, parent=None):
        QDialog.__init__(self, parent)
        self.setWindowFlags(Qt.Window)
        self.setWindowIcon(qtlib.geticon("fileadd"))
        self.setWindowTitle(_('New Patch Branch'))

        def AddField(var, label, optional=False):
            hbox = QHBoxLayout()
            SP = QSizePolicy
            le = QLineEdit()
            le.setSizePolicy(SP(SP.Expanding, SP.Fixed))
            if optional:
                cb = QCheckBox(label)
                le.setEnabled(False)
                cb.toggled.connect(le.setEnabled)
                hbox.addWidget(cb)
                setattr(self, var + 'cb', cb)
            else:
                hbox.addWidget(QLabel(label))
            hbox.addWidget(le)
            setattr(self, var + 'le', le)
            return hbox

        def DialogButtons():
            BB = QDialogButtonBox
            bb = QDialogButtonBox(BB.Ok | BB.Cancel)
            bb.accepted.connect(self.accept)
            bb.rejected.connect(self.reject)
            bb.button(BB.Ok).setDefault(True)
            bb.button(BB.Cancel).setDefault(False)
            self.commitButton = bb.button(BB.Ok)
            self.commitButton.setText(_('Commit', 'action button'))
            self.bb = bb
            return bb

        layout = QVBoxLayout()
        layout.setContentsMargins(2, 2, 2, 2)
        self.setLayout(layout)
        layout.addLayout(AddField('patchname', _('Patch name:')))
        layout.addLayout(
            AddField('patchtext', _('Patch message:'), optional=True))
        layout.addLayout(AddField('patchdate', _('Patch date:'),
                                  optional=True))
        layout.addLayout(AddField('patchuser', _('Patch user:'),
                                  optional=True))
        layout.addWidget(DialogButtons())

        self.patchdatele.setText(
            hglib.tounicode(hglib.displaytime(util.makedate())))
示例#53
0
    def __init__(self, statustext, types=None, parent=None, **kwargs):
        self._TYPES = 'MARSC'
        if types is not None:
            self._TYPES = types
        #if 'text' not in kwargs:
        #    kwargs['text'] = _('Status')
        super(StatusFilterButton,
              self).__init__(parent,
                             popupMode=QToolButton.MenuButtonPopup,
                             icon=qtlib.geticon('hg-status'),
                             toolButtonStyle=Qt.ToolButtonTextBesideIcon,
                             **kwargs)

        self.clicked.connect(self.showMenu)
        self._initactions(statustext)
示例#54
0
 def addOrInsertItem(self, text, icon=None):
     if text == self.SEPARATOR:
         item = text
     else:
         if not icon:
             icon = CustomToolConfigDialog._defaulticonname
         if isinstance(icon, str):
             icon = qtlib.geticon(icon)
         item = QListWidgetItem(icon, text)
     row = self.currentIndex().row()
     if row < 0:
         self.addItem(item)
         self.setCurrentRow(self.count() - 1)
     else:
         self.insertItem(row + 1, item)
         self.setCurrentRow(row + 1)
示例#55
0
 def _navigate(self, dlgclass, dlgdict):
     repo, filename, rev = self._findsubsingle(self._currentfile)
     if filename and len(repo.file(filename)) > 0:
         if self._currentfile not in dlgdict:
             # dirty hack to pass workbench only if available
             from tortoisehg.hgqt import workbench  # avoid cyclic dep
             repoviewer = None
             if self.parent() and isinstance(self.parent().window(),
                                             workbench.Workbench):
                 repoviewer = self.parent().window()
             dlg = dlgclass(repo, filename, repoviewer=repoviewer)
             dlgdict[self._currentfile] = dlg
             ufname = hglib.tounicode(filename)
             dlg.setWindowTitle(_('Hg file log viewer - %s') % ufname)
             dlg.setWindowIcon(qtlib.geticon('hg-log'))
         dlg = dlgdict[self._currentfile]
         dlg.goto(rev)
         dlg.show()
         dlg.raise_()
         dlg.activateWindow()
示例#56
0
    def __init__(self, repo, rev=None, parent=None):
        QMainWindow.__init__(self, parent)
        self._repo = repo
        self.setWindowIcon(qtlib.geticon('hg-annotate'))
        self.resize(400, 300)

        self._manifest_widget = ManifestWidget(repo, rev)
        self._manifest_widget.revChanged.connect(self._updatewindowtitle)
        self._manifest_widget.pathChanged.connect(self._updatewindowtitle)
        self._manifest_widget.grepRequested.connect(self._openSearchWidget)
        self._manifest_widget.setContentsMargins(10, 10, 10, 10)
        self.setCentralWidget(self._manifest_widget)
        self.addToolBar(self._manifest_widget.toolbar)

        self.setStatusBar(QStatusBar())
        self._manifest_widget.showMessage.connect(self.statusBar().showMessage)
        self._manifest_widget.linkActivated.connect(self._linkHandler)

        self._readsettings()
        self._updatewindowtitle()
示例#57
0
    def __init__(self, repoagent, filename):
        QMainWindow.__init__(self)
        self._repoagent = repoagent

        self.setupUi(self)
        self._show_rev = None

        assert not isinstance(filename, (unicode, QString))
        self.filename = filename

        repo = repoagent.rawRepo()
        self.setWindowTitle(_('Hg file log viewer [%s] - %s')
                            % (repo.displayname, hglib.tounicode(filename)))
        self.setWindowIcon(qtlib.geticon('hg-log'))

        self.createActions()
        self.setupToolbars()

        self.setupViews()
        self.setupModels()