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)
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'))
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
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]()
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()
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()
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)
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)
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()
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
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)
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)
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
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()
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)
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)
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
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)
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
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)
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())
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
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
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()
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()
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)
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)
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
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)
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())
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
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)
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
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)
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
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)
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)
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)
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)
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
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)
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()
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
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()
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
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
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())))
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)
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)
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()
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()
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()