def __init__(self, repoagent, parent=None): super(PruneWidget, self).__init__(parent) self._repoagent = repoagent self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) vbox = QVBoxLayout(self) form = QFormLayout() vbox.addLayout(form) self._revedit = w = QComboBox(self) w.setEditable(True) qtlib.allowCaseChangingInput(w) w.installEventFilter(qtlib.BadCompletionBlocker(w)) w.activated.connect(self._updateRevset) w.lineEdit().textEdited.connect(self._onRevsetEdited) form.addRow(_('Target:'), w) repo = repoagent.rawRepo() self._cslist = w = cslist.ChangesetList(repo, self) vbox.addWidget(w) self._querysess = cmdcore.nullCmdSession() # slightly longer delay than common keyboard auto-repeat rate self._querylater = QTimer(self, interval=550, singleShot=True) self._querylater.timeout.connect(self._updateRevset) self._revedit.setFocus()
def __init__(self, repo, oldbranchop, parent=None): QDialog.__init__(self, parent) self.setWindowTitle(_('%s - branch operation') % repo.displayname) self.setWindowIcon(qtlib.geticon('branch')) layout = QVBoxLayout() self.setLayout(layout) wctx = repo[None] if len(wctx.parents()) == 2: lbl = QLabel('<b>' + _('Select branch of merge commit') + '</b>') layout.addWidget(lbl) branchCombo = QComboBox() # If both parents belong to the same branch, do not duplicate the # branch name in the branch select combo branchlist = [p.branch() for p in wctx.parents()] if branchlist[0] == branchlist[1]: branchlist = [branchlist[0]] for b in branchlist: branchCombo.addItem(hglib.tounicode(b)) layout.addWidget(branchCombo) else: text = '<b>' + _('Changes take effect on next commit') + '</b>' lbl = QLabel(text) layout.addWidget(lbl) grid = QGridLayout() nochange = QRadioButton(_('No branch changes')) newbranch = QRadioButton(_('Open a new named branch')) closebranch = QRadioButton(_('Close current branch')) branchCombo = QComboBox() branchCombo.setEditable(True) qtlib.allowCaseChangingInput(branchCombo) wbu = wctx.branch() for name in repo.namedbranches: if name == wbu: continue branchCombo.addItem(hglib.tounicode(name)) branchCombo.activated.connect(self.accept) grid.addWidget(nochange, 0, 0) grid.addWidget(newbranch, 1, 0) grid.addWidget(branchCombo, 1, 1) grid.addWidget(closebranch, 2, 0) grid.setColumnStretch(0, 0) grid.setColumnStretch(1, 1) layout.addLayout(grid) layout.addStretch() newbranch.toggled.connect(branchCombo.setEnabled) branchCombo.setEnabled(False) if oldbranchop is None: nochange.setChecked(True) elif oldbranchop == False: closebranch.setChecked(True) else: assert type(oldbranchop) == QString bc = branchCombo names = [bc.itemText(i) for i in xrange(bc.count())] if oldbranchop in names: bc.setCurrentIndex(names.index(oldbranchop)) else: bc.addItem(oldbranchop) bc.setCurrentIndex(len(names)) newbranch.setChecked(True) self.closebranch = closebranch BB = QDialogButtonBox bb = QDialogButtonBox(BB.Ok | BB.Cancel) bb.accepted.connect(self.accept) bb.rejected.connect(self.reject) bb.button(BB.Ok).setAutoDefault(True) layout.addWidget(bb) self.bb = bb self.branchCombo = branchCombo QShortcut(QKeySequence('Ctrl+Return'), self, self.accept) QShortcut(QKeySequence('Ctrl+Enter'), self, self.accept) QShortcut(QKeySequence('Escape'), self, self.reject)
def __init__(self, repoagent, rev, parent=None): super(BookmarkDialog, self).__init__(parent) self.setWindowFlags(self.windowFlags() & \ ~Qt.WindowContextHelpButtonHint) self._repoagent = repoagent repo = repoagent.rawRepo() self.rev = rev self.node = repo[rev].node() # base layout box base = QVBoxLayout() base.setSpacing(0) base.setContentsMargins(*(0,)*4) base.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(base) box = QVBoxLayout() box.setSpacing(8) box.setContentsMargins(*(8,)*4) self.layout().addLayout(box) ## main layout grid form = QFormLayout(fieldGrowthPolicy=QFormLayout.AllNonFixedFieldsGrow) box.addLayout(form) form.addRow(_('Revision:'), QLabel('%d (%s)' % (rev, repo[rev]))) ### bookmark combo self.bookmarkCombo = QComboBox() self.bookmarkCombo.setEditable(True) self.bookmarkCombo.currentIndexChanged.connect(self.bookmarkTextChanged) self.bookmarkCombo.editTextChanged.connect(self.bookmarkTextChanged) qtlib.allowCaseChangingInput(self.bookmarkCombo) form.addRow(_('Bookmark:'), self.bookmarkCombo) ### Rename input self.newNameEdit = QLineEdit() self.newNameEdit.textEdited.connect(self.bookmarkTextChanged) form.addRow(_('New Name:'), self.newNameEdit) ### Activate checkbox self.activateCheckBox = QCheckBox() if self.node == self.repo['.'].node(): self.activateCheckBox.setChecked(True) else: self.activateCheckBox.setChecked(False) self.activateCheckBox.setEnabled(False) form.addRow(_('Activate:'), self.activateCheckBox) ## bottom buttons BB = QDialogButtonBox bbox = QDialogButtonBox() self.addBtn = bbox.addButton(_('&Add'), BB.ActionRole) self.renameBtn = bbox.addButton(_('Re&name'), BB.ActionRole) self.removeBtn = bbox.addButton(_('&Remove'), BB.ActionRole) self.moveBtn = bbox.addButton(_('&Move'), BB.ActionRole) bbox.addButton(BB.Close) bbox.rejected.connect(self.reject) box.addWidget(bbox) self.addBtn.clicked.connect(self.add_bookmark) self.renameBtn.clicked.connect(self.rename_bookmark) self.removeBtn.clicked.connect(self.remove_bookmark) self.moveBtn.clicked.connect(self.move_bookmark) ## horizontal separator self.sep = QFrame() self.sep.setFrameShadow(QFrame.Sunken) self.sep.setFrameShape(QFrame.HLine) self.layout().addWidget(self.sep) ## status line self.status = qtlib.StatusLabel() self.status.setContentsMargins(4, 2, 4, 4) self.layout().addWidget(self.status) # dialog setting self.setWindowTitle(_('Bookmark - %s') % self.repo.displayname) self.setWindowIcon(qtlib.geticon('hg-bookmarks')) self.cmd = cmdui.Runner(False, self) self.cmd.output.connect(self.output) self.cmd.makeLogVisible.connect(self.makeLogVisible) self.cmd.commandFinished.connect(self.commandFinished) # prepare to show self.clear_status() self.refresh() self._repoagent.repositoryChanged.connect(self.refresh) self.bookmarkCombo.setFocus() self.bookmarkTextChanged()
def __init__(self, repo, parent=None): super(RepoFilterBar, self).__init__(parent) self.layout().setContentsMargins(0, 0, 0, 0) self.setIconSize(QSize(16,16)) self.setFloatable(False) self.setMovable(False) self._repo = repo self._permanent_queries = list(_permanent_queries) username = repo.ui.config('ui', 'username') if username: self._permanent_queries.insert(0, hgrevset.formatspec('author(%s)', os.path.expandvars(username))) self.filterEnabled = True #Check if the font contains the glyph needed by the branch combo if not QFontMetrics(self.font()).inFont(QString(u'\u2605').at(0)): self._allBranchesLabel = u'*** %s ***' % _('Show all') self.entrydlg = revset.RevisionSetQuery(repo, self) self.entrydlg.progress.connect(self.progress) self.entrydlg.showMessage.connect(self.showMessage) self.entrydlg.queryIssued.connect(self.queryIssued) self.entrydlg.hide() self.revsetcombo = combo = QComboBox() combo.setEditable(True) combo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) combo.setMinimumContentsLength(10) qtlib.allowCaseChangingInput(combo) le = combo.lineEdit() le.returnPressed.connect(self.runQuery) le.selectionChanged.connect(self.selectionChanged) if hasattr(le, 'setPlaceholderText'): # Qt >= 4.7 le.setPlaceholderText(_('### revision set query ###')) combo.activated.connect(self.runQuery) self._revsettypelabel = QLabel(le) self._revsettypetimer = QTimer(self, interval=200, singleShot=True) self._revsettypetimer.timeout.connect(self._updateQueryType) combo.editTextChanged.connect(self._revsettypetimer.start) self._updateQueryType() le.installEventFilter(self) self.clearBtn = QToolButton(self) self.clearBtn.setIcon(qtlib.geticon('filedelete')) self.clearBtn.setToolTip(_('Clear current query and query text')) self.clearBtn.clicked.connect(self.onClearButtonClicked) self.addWidget(self.clearBtn) self.addWidget(qtlib.Spacer(2, 2)) self.addWidget(combo) self.addWidget(qtlib.Spacer(2, 2)) self.searchBtn = QToolButton(self) self.searchBtn.setIcon(qtlib.geticon('view-filter')) self.searchBtn.setToolTip(_('Trigger revision set query')) self.searchBtn.clicked.connect(self.runQuery) self.addWidget(self.searchBtn) self.editorBtn = QToolButton() self.editorBtn.setText('...') self.editorBtn.setToolTip(_('Open advanced query editor')) self.editorBtn.clicked.connect(self.openEditor) self.addWidget(self.editorBtn) icon = QIcon() icon.addPixmap(QApplication.style().standardPixmap(QStyle.SP_TrashIcon)) self.deleteBtn = QToolButton() self.deleteBtn.setIcon(icon) self.deleteBtn.setToolTip(_('Delete selected query from history')) self.deleteBtn.clicked.connect(self.deleteFromHistory) self.deleteBtn.setEnabled(False) self.addWidget(self.deleteBtn) self.addSeparator() self.filtercb = f = QCheckBox(_('filter')) f.toggled.connect(self.filterToggled) f.setToolTip(_('Toggle filtering of non-matched changesets')) self.addWidget(f) self.addSeparator() self.showHiddenBtn = QToolButton() self.showHiddenBtn.setIcon(qtlib.geticon('view-hidden')) self.showHiddenBtn.setCheckable(True) self.showHiddenBtn.setToolTip(_('Show/Hide hidden changesets')) self.showHiddenBtn.clicked.connect(self.showHiddenChanged) self.addWidget(self.showHiddenBtn) self.addSeparator() self._initBranchFilter() self.refresh()
def __init__(self, repo, oldbranchop, parent=None): QDialog.__init__(self, parent) self.setWindowTitle(_('%s - branch operation') % repo.displayname) self.setWindowIcon(qtlib.geticon('branch')) layout = QVBoxLayout() self.setLayout(layout) wctx = repo[None] if len(wctx.parents()) == 2: lbl = QLabel('<b>'+_('Select branch of merge commit')+'</b>') layout.addWidget(lbl) branchCombo = QComboBox() # If both parents belong to the same branch, do not duplicate the # branch name in the branch select combo branchlist = [p.branch() for p in wctx.parents()] if branchlist[0] == branchlist[1]: branchlist = [branchlist[0]] for b in branchlist: branchCombo.addItem(hglib.tounicode(b)) layout.addWidget(branchCombo) else: text = '<b>'+_('Changes take effect on next commit')+'</b>' lbl = QLabel(text) layout.addWidget(lbl) grid = QGridLayout() nochange = QRadioButton(_('No branch changes')) newbranch = QRadioButton(_('Open a new named branch')) closebranch = QRadioButton(_('Close current branch')) branchCombo = QComboBox() branchCombo.setEditable(True) qtlib.allowCaseChangingInput(branchCombo) wbu = wctx.branch() for name in repo.namedbranches: if name == wbu: continue branchCombo.addItem(hglib.tounicode(name)) branchCombo.activated.connect(self.accept) grid.addWidget(nochange, 0, 0) grid.addWidget(newbranch, 1, 0) grid.addWidget(branchCombo, 1, 1) grid.addWidget(closebranch, 2, 0) grid.setColumnStretch(0, 0) grid.setColumnStretch(1, 1) layout.addLayout(grid) layout.addStretch() newbranch.toggled.connect(branchCombo.setEnabled) branchCombo.setEnabled(False) if oldbranchop is None: nochange.setChecked(True) elif oldbranchop == False: closebranch.setChecked(True) else: assert type(oldbranchop) == QString bc = branchCombo names = [bc.itemText(i) for i in xrange(bc.count())] if oldbranchop in names: bc.setCurrentIndex(names.index(oldbranchop)) else: bc.addItem(oldbranchop) bc.setCurrentIndex(len(names)) newbranch.setChecked(True) self.closebranch = closebranch BB = QDialogButtonBox bb = QDialogButtonBox(BB.Ok|BB.Cancel) bb.accepted.connect(self.accept) bb.rejected.connect(self.reject) bb.button(BB.Ok).setAutoDefault(True) layout.addWidget(bb) self.bb = bb self.branchCombo = branchCombo QShortcut(QKeySequence('Ctrl+Return'), self, self.accept) QShortcut(QKeySequence('Ctrl+Enter'), self, self.accept) QShortcut(QKeySequence('Escape'), self, self.reject)
def __init__(self, repoagent, rev, parent=None): super(BookmarkDialog, self).__init__(parent) self.setWindowFlags(self.windowFlags() & \ ~Qt.WindowContextHelpButtonHint) self._repoagent = repoagent repo = repoagent.rawRepo() self.rev = rev self.node = repo[rev].node() # base layout box base = QVBoxLayout() base.setSpacing(0) base.setContentsMargins(*(0, ) * 4) base.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(base) box = QVBoxLayout() box.setSpacing(8) box.setContentsMargins(*(8, ) * 4) self.layout().addLayout(box) ## main layout grid form = QFormLayout(fieldGrowthPolicy=QFormLayout.AllNonFixedFieldsGrow) box.addLayout(form) form.addRow(_('Revision:'), QLabel('%d (%s)' % (rev, repo[rev]))) ### bookmark combo self.bookmarkCombo = QComboBox() self.bookmarkCombo.setEditable(True) self.bookmarkCombo.currentIndexChanged.connect( self.bookmarkTextChanged) self.bookmarkCombo.editTextChanged.connect(self.bookmarkTextChanged) qtlib.allowCaseChangingInput(self.bookmarkCombo) form.addRow(_('Bookmark:'), self.bookmarkCombo) ### Rename input self.newNameEdit = QLineEdit() self.newNameEdit.textEdited.connect(self.bookmarkTextChanged) form.addRow(_('New Name:'), self.newNameEdit) ### Activate checkbox self.activateCheckBox = QCheckBox() if self.node == self.repo['.'].node(): self.activateCheckBox.setChecked(True) else: self.activateCheckBox.setChecked(False) self.activateCheckBox.setEnabled(False) form.addRow(_('Activate:'), self.activateCheckBox) ## bottom buttons BB = QDialogButtonBox bbox = QDialogButtonBox() self.addBtn = bbox.addButton(_('&Add'), BB.ActionRole) self.renameBtn = bbox.addButton(_('Re&name'), BB.ActionRole) self.removeBtn = bbox.addButton(_('&Remove'), BB.ActionRole) self.moveBtn = bbox.addButton(_('&Move'), BB.ActionRole) bbox.addButton(BB.Close) bbox.rejected.connect(self.reject) box.addWidget(bbox) self.addBtn.clicked.connect(self.add_bookmark) self.renameBtn.clicked.connect(self.rename_bookmark) self.removeBtn.clicked.connect(self.remove_bookmark) self.moveBtn.clicked.connect(self.move_bookmark) ## horizontal separator self.sep = QFrame() self.sep.setFrameShadow(QFrame.Sunken) self.sep.setFrameShape(QFrame.HLine) self.layout().addWidget(self.sep) ## status line self.status = qtlib.StatusLabel() self.status.setContentsMargins(4, 2, 4, 4) self.layout().addWidget(self.status) # dialog setting self.setWindowTitle(_('Bookmark - %s') % self.repo.displayname) self.setWindowIcon(qtlib.geticon('hg-bookmarks')) self.cmd = cmdui.Runner(False, self) self.cmd.output.connect(self.output) self.cmd.makeLogVisible.connect(self.makeLogVisible) self.cmd.commandFinished.connect(self.commandFinished) # prepare to show self.clear_status() self.refresh() self._repoagent.repositoryChanged.connect(self.refresh) self.bookmarkCombo.setFocus() self.bookmarkTextChanged()
def __init__(self, repoagent, tag="", rev="tip", parent=None, opts={}): super(TagDialog, self).__init__(parent) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self._repoagent = repoagent repo = repoagent.rawRepo() self.setWindowTitle(_("Tag - %s") % repo.displayname) self.setWindowIcon(qtlib.geticon("hg-tag")) # base layout box base = QVBoxLayout() base.setSpacing(0) base.setContentsMargins(*(0,) * 4) base.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(base) # main layout box box = QVBoxLayout() box.setSpacing(8) box.setContentsMargins(*(8,) * 4) self.layout().addLayout(box) form = QFormLayout(fieldGrowthPolicy=QFormLayout.AllNonFixedFieldsGrow) box.addLayout(form) ctx = repo[rev] form.addRow(_("Revision:"), QLabel("%d (%s)" % (ctx.rev(), ctx))) self.rev = ctx.rev() ### tag combo self.tagCombo = QComboBox() self.tagCombo.setEditable(True) self.tagCombo.setEditText(hglib.tounicode(tag)) self.tagCombo.currentIndexChanged.connect(self.updateStates) self.tagCombo.editTextChanged.connect(self.updateStates) qtlib.allowCaseChangingInput(self.tagCombo) form.addRow(_("Tag:"), self.tagCombo) self.tagRevLabel = QLabel("") form.addRow(_("Tagged:"), self.tagRevLabel) ### options expander = qtlib.ExpanderLabel(_("Options"), False) expander.expanded.connect(self.show_options) box.addWidget(expander) optbox = QVBoxLayout() optbox.setSpacing(6) box.addLayout(optbox) hbox = QHBoxLayout() hbox.setSpacing(0) optbox.addLayout(hbox) self.localCheckBox = QCheckBox(_("Local tag")) self.localCheckBox.toggled.connect(self.updateStates) self.replaceCheckBox = QCheckBox(_("Replace existing tag (-f/--force)")) self.replaceCheckBox.toggled.connect(self.updateStates) optbox.addWidget(self.localCheckBox) optbox.addWidget(self.replaceCheckBox) self.englishCheckBox = QCheckBox(_("Use English commit message")) engmsg = repo.ui.configbool("tortoisehg", "engmsg", False) self.englishCheckBox.setChecked(engmsg) optbox.addWidget(self.englishCheckBox) self.customCheckBox = QCheckBox(_("Use custom commit message:")) self.customCheckBox.toggled.connect(self.customMessageToggle) self.customTextLineEdit = QLineEdit() optbox.addWidget(self.customCheckBox) optbox.addWidget(self.customTextLineEdit) ## bottom buttons BB = QDialogButtonBox bbox = QDialogButtonBox(BB.Close) bbox.rejected.connect(self.reject) self.addBtn = bbox.addButton(_("&Add"), BB.ActionRole) self.removeBtn = bbox.addButton(_("&Remove"), BB.ActionRole) box.addWidget(bbox) self.addBtn.clicked.connect(self.onAddTag) self.removeBtn.clicked.connect(self.onRemoveTag) ## horizontal separator self.sep = QFrame() self.sep.setFrameShadow(QFrame.Sunken) self.sep.setFrameShape(QFrame.HLine) base.addWidget(self.sep) ## status line self.status = qtlib.StatusLabel() self.status.setContentsMargins(4, 2, 4, 4) base.addWidget(self.status) self.cmd = cmdui.Runner(False, self) self.cmd.output.connect(self.output) self.cmd.makeLogVisible.connect(self.makeLogVisible) self.cmd.commandFinished.connect(self.onCommandFinished) repoagent.repositoryChanged.connect(self.refresh) self.customTextLineEdit.setDisabled(True) self.replaceCheckBox.setChecked(bool(opts.get("force"))) self.localCheckBox.setChecked(bool(opts.get("local"))) if not opts.get("local") and opts.get("message"): msg = hglib.tounicode(opts["message"]) self.customCheckBox.setChecked(True) self.customTextLineEdit.setText(msg) self.clear_statue() self.show_options(False) self.tagCombo.setFocus() self.refresh()
def __init__(self, ui, cmdagent, args=None, opts={}, parent=None): super(CloneWidget, self).__init__(parent) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self._cmdagent = cmdagent self.ui = ui dest = src = os.getcwd() if args: if len(args) > 1: src = args[0] dest = args[1] else: src = args[0] udest = hglib.tounicode(dest) usrc = hglib.tounicode(src) ## main layout form = QFormLayout() form.setContentsMargins(0, 0, 0, 0) self.setLayout(form) ### source combo and button self.src_combo = QComboBox() self.src_combo.setEditable(True) self.src_combo.setMinimumContentsLength(30) # cut long path self.src_btn = QPushButton(_('Browse...')) self.src_btn.setAutoDefault(False) self.src_btn.clicked.connect(self._browseSource) srcbox = QHBoxLayout() srcbox.addWidget(self.src_combo, 1) srcbox.addWidget(self.src_btn) form.addRow(_('Source:'), srcbox) ### destination combo and button self.dest_combo = QComboBox() self.dest_combo.setEditable(True) self.dest_combo.setMinimumContentsLength(30) # cut long path self.dest_btn = QPushButton(_('Browse...')) self.dest_btn.setAutoDefault(False) self.dest_btn.clicked.connect(self._browseDestination) destbox = QHBoxLayout() destbox.addWidget(self.dest_combo, 1) destbox.addWidget(self.dest_btn) form.addRow(_('Destination:'), destbox) for combo in (self.src_combo, self.dest_combo): qtlib.allowCaseChangingInput(combo) combo.installEventFilter(qtlib.BadCompletionBlocker(combo)) self.setSource(usrc) self.setDestination(udest) ### options expander = qtlib.ExpanderLabel(_('Options'), False) optwidget = QWidget(self) expander.expanded.connect(optwidget.setVisible) optbox = QVBoxLayout() optbox.setContentsMargins(0, 0, 0, 0) optbox.setSpacing(6) optwidget.setLayout(optbox) form.addRow(expander, optwidget) def chktext(chklabel, btnlabel=None, btnslot=None, stretch=None): hbox = QHBoxLayout() hbox.setSpacing(0) optbox.addLayout(hbox) chk = QCheckBox(chklabel) text = QLineEdit(enabled=False) chk.toggled.connect(text.setEnabled) chk.toggled.connect(text.setFocus) hbox.addWidget(chk) hbox.addWidget(text) if stretch is not None: hbox.addStretch(stretch) if btnlabel: btn = QPushButton(btnlabel) btn.setEnabled(False) btn.setAutoDefault(False) btn.clicked.connect(btnslot) chk.toggled.connect(btn.setEnabled) hbox.addSpacing(6) hbox.addWidget(btn) return chk, text, btn else: return chk, text self.rev_chk, self.rev_text = chktext(_('Clone to revision:'), stretch=40) self.rev_text.setToolTip(_('A revision identifier, bookmark, tag or ' 'branch name')) self.noupdate_chk = QCheckBox(_('Do not update the new working directory')) self.pproto_chk = QCheckBox(_('Use pull protocol to copy metadata')) self.uncomp_chk = QCheckBox(_('Use uncompressed transfer')) optbox.addWidget(self.noupdate_chk) optbox.addWidget(self.pproto_chk) optbox.addWidget(self.uncomp_chk) self.qclone_chk, self.qclone_txt, self.qclone_btn = \ chktext(_('Include patch queue'), btnlabel=_('Browse...'), btnslot=self._browsePatchQueue) self.proxy_chk = QCheckBox(_('Use proxy server')) optbox.addWidget(self.proxy_chk) useproxy = bool(self.ui.config('http_proxy', 'host')) self.proxy_chk.setEnabled(useproxy) self.proxy_chk.setChecked(useproxy) self.insecure_chk = QCheckBox(_('Do not verify host certificate')) optbox.addWidget(self.insecure_chk) self.insecure_chk.setEnabled(False) self.remote_chk, self.remote_text = chktext(_('Remote command:')) # allow to specify start revision for p4 & svn repos. self.startrev_chk, self.startrev_text = chktext(_('Start revision:'), stretch=40) self.hgcmd_txt = QLineEdit() self.hgcmd_txt.setReadOnly(True) form.addRow(_('Hg command:'), self.hgcmd_txt) # connect extra signals self.src_combo.editTextChanged.connect(self._onSourceChanged) self.src_combo.currentIndexChanged.connect(self._suggestDestination) t = QTimer(self, interval=200, singleShot=True) t.timeout.connect(self._suggestDestination) le = self.src_combo.lineEdit() le.editingFinished.connect(t.stop) # only while it has focus le.textEdited.connect(t.start) self.dest_combo.editTextChanged.connect(self._composeCommand) self.rev_chk.toggled.connect(self._composeCommand) self.rev_text.textChanged.connect(self._composeCommand) self.noupdate_chk.toggled.connect(self._composeCommand) self.pproto_chk.toggled.connect(self._composeCommand) self.uncomp_chk.toggled.connect(self._composeCommand) self.qclone_chk.toggled.connect(self._composeCommand) self.qclone_txt.textChanged.connect(self._composeCommand) self.proxy_chk.toggled.connect(self._composeCommand) self.insecure_chk.toggled.connect(self._composeCommand) self.remote_chk.toggled.connect(self._composeCommand) self.remote_text.textChanged.connect(self._composeCommand) self.startrev_chk.toggled.connect(self._composeCommand) # prepare to show optwidget.hide() rev = opts.get('rev') if rev: self.rev_chk.setChecked(True) self.rev_text.setText(hglib.tounicode(rev)) self.noupdate_chk.setChecked(bool(opts.get('noupdate'))) self.pproto_chk.setChecked(bool(opts.get('pull'))) self.uncomp_chk.setChecked(bool(opts.get('uncompressed'))) self.startrev_chk.setVisible(_startrev_available()) self.startrev_text.setVisible(_startrev_available()) self._composeCommand()
def __init__(self, repoagent, tag='', rev='tip', parent=None, opts={}): super(TagDialog, self).__init__(parent) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self._repoagent = repoagent self._cmdsession = cmdcore.nullCmdSession() self.setWindowTitle(_('Tag - %s') % repoagent.displayName()) self.setWindowIcon(qtlib.geticon('hg-tag')) # base layout box base = QVBoxLayout() base.setSpacing(0) base.setContentsMargins(0, 0, 0, 0) base.setSizeConstraint(QLayout.SetMinAndMaxSize) self.setLayout(base) formwidget = QWidget(self) formwidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) form = QFormLayout(fieldGrowthPolicy=QFormLayout.AllNonFixedFieldsGrow) formwidget.setLayout(form) base.addWidget(formwidget) repo = repoagent.rawRepo() ctx = repo[rev] form.addRow(_('Revision:'), QLabel('%d (%s)' % (ctx.rev(), ctx))) self.rev = ctx.rev() ### tag combo self.tagCombo = QComboBox() self.tagCombo.setEditable(True) self.tagCombo.setEditText(hglib.tounicode(tag)) self.tagCombo.setMinimumContentsLength(30) # cut long name self.tagCombo.currentIndexChanged.connect(self.updateStates) self.tagCombo.editTextChanged.connect(self.updateStates) qtlib.allowCaseChangingInput(self.tagCombo) form.addRow(_('Tag:'), self.tagCombo) self.tagRevLabel = QLabel('') form.addRow(_('Tagged:'), self.tagRevLabel) ### options expander = qtlib.ExpanderLabel(_('Options'), False) expander.expanded.connect(self.show_options) optbox = QVBoxLayout() optbox.setSpacing(6) form.addRow(expander, optbox) hbox = QHBoxLayout() hbox.setSpacing(0) optbox.addLayout(hbox) self.localCheckBox = QCheckBox(_('Local tag')) self.localCheckBox.toggled.connect(self.updateStates) self.replaceCheckBox = QCheckBox(_('Replace existing tag (-f/--force)')) self.replaceCheckBox.toggled.connect(self.updateStates) optbox.addWidget(self.localCheckBox) optbox.addWidget(self.replaceCheckBox) self.englishCheckBox = QCheckBox(_('Use English commit message')) engmsg = repo.ui.configbool('tortoisehg', 'engmsg', False) self.englishCheckBox.setChecked(engmsg) optbox.addWidget(self.englishCheckBox) self.customCheckBox = QCheckBox(_('Use custom commit message:')) self.customCheckBox.toggled.connect(self.customMessageToggle) self.customTextLineEdit = QLineEdit() optbox.addWidget(self.customCheckBox) optbox.addWidget(self.customTextLineEdit) ## bottom buttons BB = QDialogButtonBox bbox = QDialogButtonBox(BB.Close) bbox.rejected.connect(self.reject) self.addBtn = bbox.addButton(_('&Add'), BB.ActionRole) self.removeBtn = bbox.addButton(_('&Remove'), BB.ActionRole) form.addRow(bbox) self.addBtn.clicked.connect(self.onAddTag) self.removeBtn.clicked.connect(self.onRemoveTag) ## horizontal separator self.sep = QFrame() self.sep.setFrameShadow(QFrame.Sunken) self.sep.setFrameShape(QFrame.HLine) base.addWidget(self.sep) ## status line self.status = qtlib.StatusLabel() self.status.setContentsMargins(4, 2, 4, 4) base.addWidget(self.status) self._finishmsg = None repoagent.repositoryChanged.connect(self.refresh) self.customTextLineEdit.setDisabled(True) self.replaceCheckBox.setChecked(bool(opts.get('force'))) self.localCheckBox.setChecked(bool(opts.get('local'))) if not opts.get('local') and opts.get('message'): msg = hglib.tounicode(opts['message']) self.customCheckBox.setChecked(True) self.customTextLineEdit.setText(msg) self.clear_status() self.show_options(False) self.tagCombo.setFocus() self.refresh()
def __init__(self, args=None, opts={}, parent=None): super(CloneDialog, self).__init__(parent) f = self.windowFlags() self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint) self.ui = ui.ui() self.ret = None dest = src = cwd = os.getcwd() if args: if len(args) > 1: src = args[0] dest = args[1] else: src = args[0] udest = hglib.tounicode(dest) usrc = hglib.tounicode(src) ucwd = hglib.tounicode(cwd) self.prev_dest = None # base layout box box = QVBoxLayout() box.setSpacing(6) ## main layout grid grid = QGridLayout() grid.setSpacing(6) box.addLayout(grid) ### source combo and button self.src_combo = QComboBox() self.src_combo.setEditable(True) self.src_combo.setMinimumWidth(310) self.src_btn = QPushButton(_('Browse...')) self.src_btn.setAutoDefault(False) self.src_btn.clicked.connect(self.browse_src) grid.addWidget(QLabel(_('Source:')), 0, 0) grid.addWidget(self.src_combo, 0, 1) grid.addWidget(self.src_btn, 0, 2) ### destination combo and button self.dest_combo = QComboBox() self.dest_combo.setEditable(True) self.dest_combo.setMinimumWidth(310) self.dest_btn = QPushButton(_('Browse...')) self.dest_btn.setAutoDefault(False) self.dest_btn.clicked.connect(self.browse_dest) grid.addWidget(QLabel(_('Destination:')), 1, 0) grid.addWidget(self.dest_combo, 1, 1) grid.addWidget(self.dest_btn, 1, 2) for combo in (self.src_combo, self.dest_combo): qtlib.allowCaseChangingInput(combo) s = QSettings() self.shist = s.value('clone/source').toStringList() for path in self.shist: if path: self.src_combo.addItem(path) self.src_combo.setCurrentIndex(-1) self.src_combo.setEditText(usrc) self.dhist = s.value('clone/dest').toStringList() for path in self.dhist: if path: self.dest_combo.addItem(path) self.dest_combo.setCurrentIndex(-1) self.dest_combo.setEditText(udest) ### options expander = qtlib.ExpanderLabel(_('Options'), False) expander.expanded.connect(self.show_options) grid.addWidget(expander, 2, 0, Qt.AlignLeft | Qt.AlignTop) optbox = QVBoxLayout() optbox.setSpacing(6) grid.addLayout(optbox, 2, 1, 1, 2) def chktext(chklabel, btnlabel=None, btnslot=None, stretch=None): hbox = QHBoxLayout() hbox.setSpacing(0) optbox.addLayout(hbox) chk = QCheckBox(chklabel) text = QLineEdit(enabled=False) hbox.addWidget(chk) hbox.addWidget(text) if stretch is not None: hbox.addStretch(stretch) if btnlabel: btn = QPushButton(btnlabel) btn.setEnabled(False) btn.setAutoDefault(False) btn.clicked.connect(btnslot) hbox.addSpacing(6) hbox.addWidget(btn) chk.toggled.connect( lambda e: self.toggle_enabled(e, text, target2=btn)) return chk, text, btn else: chk.toggled.connect(lambda e: self.toggle_enabled(e, text)) return chk, text self.rev_chk, self.rev_text = chktext(_('Clone to revision:'), stretch=40) self.noupdate_chk = QCheckBox( _('Do not update the new working directory')) self.pproto_chk = QCheckBox(_('Use pull protocol to copy metadata')) self.uncomp_chk = QCheckBox(_('Use uncompressed transfer')) optbox.addWidget(self.noupdate_chk) optbox.addWidget(self.pproto_chk) optbox.addWidget(self.uncomp_chk) self.qclone_chk, self.qclone_txt, self.qclone_btn = \ chktext(_('Include patch queue'), btnlabel=_('Browse...'), btnslot=self.onBrowseQclone) self.proxy_chk = QCheckBox(_('Use proxy server')) optbox.addWidget(self.proxy_chk) useproxy = bool(self.ui.config('http_proxy', 'host')) self.proxy_chk.setEnabled(useproxy) self.proxy_chk.setChecked(useproxy) self.insecure_chk = QCheckBox(_('Do not verify host certificate')) optbox.addWidget(self.insecure_chk) self.insecure_chk.setEnabled(False) self.remote_chk, self.remote_text = chktext(_('Remote command:')) # allow to specify start revision for p4 & svn repos. self.startrev_chk, self.startrev_text = chktext(_('Start revision:'), stretch=40) self.hgcmd_lbl = QLabel(_('Hg command:')) self.hgcmd_lbl.setAlignment(Qt.AlignRight) self.hgcmd_txt = QLineEdit() self.hgcmd_txt.setReadOnly(True) grid.addWidget(self.hgcmd_lbl, 3, 0) grid.addWidget(self.hgcmd_txt, 3, 1) self.hgcmd_txt.setMinimumWidth(400) ## command widget self.cmd = cmdui.Widget(True, True, self) self.cmd.commandStarted.connect(self.command_started) self.cmd.commandFinished.connect(self.command_finished) self.cmd.commandFinished.connect(self.cmdfinished) self.cmd.commandCanceling.connect(self.command_canceling) box.addWidget(self.cmd) ## bottom buttons buttons = QDialogButtonBox() self.cancel_btn = buttons.addButton(QDialogButtonBox.Cancel) self.cancel_btn.clicked.connect(self.cmd.cancel) self.close_btn = buttons.addButton(QDialogButtonBox.Close) self.close_btn.clicked.connect(self.onCloseClicked) self.close_btn.setAutoDefault(False) self.clone_btn = buttons.addButton(_('&Clone'), QDialogButtonBox.ActionRole) self.clone_btn.clicked.connect(self.clone) self.detail_btn = buttons.addButton(_('Detail'), QDialogButtonBox.ResetRole) self.detail_btn.setAutoDefault(False) self.detail_btn.setCheckable(True) self.detail_btn.toggled.connect(self.detail_toggled) box.addWidget(buttons) # dialog setting self.setLayout(box) self.layout().setSizeConstraint(QLayout.SetFixedSize) self.setWindowTitle(_('Clone - %s') % ucwd) self.setWindowIcon(qtlib.geticon('hg-clone')) # connect extra signals self.src_combo.editTextChanged.connect(self.composeCommand) self.src_combo.editTextChanged.connect(self.onUrlHttps) self.src_combo.editTextChanged.connect(self.onResetDefault) self.src_combo.currentIndexChanged.connect(self.onResetDefault) self.dest_combo.editTextChanged.connect(self.composeCommand) self.rev_chk.toggled.connect(self.composeCommand) self.rev_text.textChanged.connect(self.composeCommand) self.noupdate_chk.toggled.connect(self.composeCommand) self.pproto_chk.toggled.connect(self.composeCommand) self.uncomp_chk.toggled.connect(self.composeCommand) self.qclone_chk.toggled.connect(self.composeCommand) self.qclone_txt.textChanged.connect(self.composeCommand) self.proxy_chk.toggled.connect(self.composeCommand) self.insecure_chk.toggled.connect(self.composeCommand) self.remote_chk.toggled.connect(self.composeCommand) self.remote_text.textChanged.connect(self.composeCommand) self.startrev_chk.toggled.connect(self.composeCommand) # prepare to show self.cmd.setHidden(True) self.cancel_btn.setHidden(True) self.detail_btn.setHidden(True) self.show_options(False) rev = opts.get('rev') if rev: self.rev_chk.setChecked(True) self.rev_text.setText(hglib.tounicode(rev)) self.noupdate_chk.setChecked(bool(opts.get('noupdate'))) self.pproto_chk.setChecked(bool(opts.get('pull'))) self.uncomp_chk.setChecked(bool(opts.get('uncompressed'))) self.src_combo.setFocus() self.src_combo.lineEdit().selectAll() self.composeCommand()
def __init__(self, repoagent, tag='', rev='tip', parent=None, opts={}): super(TagDialog, self).__init__(parent) self.setWindowFlags(self.windowFlags() & \ ~Qt.WindowContextHelpButtonHint) self._repoagent = repoagent repo = repoagent.rawRepo() self.setWindowTitle(_('Tag - %s') % repo.displayname) self.setWindowIcon(qtlib.geticon('hg-tag')) # base layout box base = QVBoxLayout() base.setSpacing(0) base.setContentsMargins(*(0, ) * 4) base.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(base) # main layout box box = QVBoxLayout() box.setSpacing(8) box.setContentsMargins(*(8, ) * 4) self.layout().addLayout(box) form = QFormLayout(fieldGrowthPolicy=QFormLayout.AllNonFixedFieldsGrow) box.addLayout(form) ctx = repo[rev] form.addRow(_('Revision:'), QLabel('%d (%s)' % (ctx.rev(), ctx))) self.rev = ctx.rev() ### tag combo self.tagCombo = QComboBox() self.tagCombo.setEditable(True) self.tagCombo.setEditText(hglib.tounicode(tag)) self.tagCombo.currentIndexChanged.connect(self.updateStates) self.tagCombo.editTextChanged.connect(self.updateStates) qtlib.allowCaseChangingInput(self.tagCombo) form.addRow(_('Tag:'), self.tagCombo) self.tagRevLabel = QLabel('') form.addRow(_('Tagged:'), self.tagRevLabel) ### options expander = qtlib.ExpanderLabel(_('Options'), False) expander.expanded.connect(self.show_options) box.addWidget(expander) optbox = QVBoxLayout() optbox.setSpacing(6) box.addLayout(optbox) hbox = QHBoxLayout() hbox.setSpacing(0) optbox.addLayout(hbox) self.localCheckBox = QCheckBox(_('Local tag')) self.localCheckBox.toggled.connect(self.updateStates) self.replaceCheckBox = QCheckBox( _('Replace existing tag (-f/--force)')) self.replaceCheckBox.toggled.connect(self.updateStates) optbox.addWidget(self.localCheckBox) optbox.addWidget(self.replaceCheckBox) self.englishCheckBox = QCheckBox(_('Use English commit message')) engmsg = repo.ui.configbool('tortoisehg', 'engmsg', False) self.englishCheckBox.setChecked(engmsg) optbox.addWidget(self.englishCheckBox) self.customCheckBox = QCheckBox(_('Use custom commit message:')) self.customCheckBox.toggled.connect(self.customMessageToggle) self.customTextLineEdit = QLineEdit() optbox.addWidget(self.customCheckBox) optbox.addWidget(self.customTextLineEdit) ## bottom buttons BB = QDialogButtonBox bbox = QDialogButtonBox(BB.Close) bbox.rejected.connect(self.reject) self.addBtn = bbox.addButton(_('&Add'), BB.ActionRole) self.removeBtn = bbox.addButton(_('&Remove'), BB.ActionRole) box.addWidget(bbox) self.addBtn.clicked.connect(self.onAddTag) self.removeBtn.clicked.connect(self.onRemoveTag) ## horizontal separator self.sep = QFrame() self.sep.setFrameShadow(QFrame.Sunken) self.sep.setFrameShape(QFrame.HLine) base.addWidget(self.sep) ## status line self.status = qtlib.StatusLabel() self.status.setContentsMargins(4, 2, 4, 4) base.addWidget(self.status) self.cmd = cmdui.Runner(False, self) self.cmd.output.connect(self.output) self.cmd.makeLogVisible.connect(self.makeLogVisible) self.cmd.commandFinished.connect(self.onCommandFinished) repoagent.repositoryChanged.connect(self.refresh) self.customTextLineEdit.setDisabled(True) self.replaceCheckBox.setChecked(bool(opts.get('force'))) self.localCheckBox.setChecked(bool(opts.get('local'))) if not opts.get('local') and opts.get('message'): msg = hglib.tounicode(opts['message']) self.customCheckBox.setChecked(True) self.customTextLineEdit.setText(msg) self.clear_statue() self.show_options(False) self.tagCombo.setFocus() self.refresh()
def __init__(self, args=None, opts={}, parent=None): super(CloneDialog, self).__init__(parent) f = self.windowFlags() self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint) self.ui = ui.ui() self.ret = None dest = src = cwd = os.getcwd() if args: if len(args) > 1: src = args[0] dest = args[1] else: src = args[0] udest = hglib.tounicode(dest) usrc = hglib.tounicode(src) ucwd = hglib.tounicode(cwd) self.prev_dest = None # base layout box box = QVBoxLayout() box.setSpacing(6) ## main layout grid grid = QGridLayout() grid.setSpacing(6) box.addLayout(grid) ### source combo and button self.src_combo = QComboBox() self.src_combo.setEditable(True) self.src_combo.setMinimumWidth(310) self.src_btn = QPushButton(_("Browse...")) self.src_btn.setAutoDefault(False) self.src_btn.clicked.connect(self.browse_src) grid.addWidget(QLabel(_("Source:")), 0, 0) grid.addWidget(self.src_combo, 0, 1) grid.addWidget(self.src_btn, 0, 2) ### destination combo and button self.dest_combo = QComboBox() self.dest_combo.setEditable(True) self.dest_combo.setMinimumWidth(310) self.dest_btn = QPushButton(_("Browse...")) self.dest_btn.setAutoDefault(False) self.dest_btn.clicked.connect(self.browse_dest) grid.addWidget(QLabel(_("Destination:")), 1, 0) grid.addWidget(self.dest_combo, 1, 1) grid.addWidget(self.dest_btn, 1, 2) for combo in (self.src_combo, self.dest_combo): qtlib.allowCaseChangingInput(combo) s = QSettings() self.shist = s.value("clone/source").toStringList() for path in self.shist: if path: self.src_combo.addItem(path) self.src_combo.setCurrentIndex(-1) self.src_combo.setEditText(usrc) self.dhist = s.value("clone/dest").toStringList() for path in self.dhist: if path: self.dest_combo.addItem(path) self.dest_combo.setCurrentIndex(-1) self.dest_combo.setEditText(udest) ### options expander = qtlib.ExpanderLabel(_("Options"), False) expander.expanded.connect(self.show_options) grid.addWidget(expander, 2, 0, Qt.AlignLeft | Qt.AlignTop) optbox = QVBoxLayout() optbox.setSpacing(6) grid.addLayout(optbox, 2, 1, 1, 2) def chktext(chklabel, btnlabel=None, btnslot=None, stretch=None): hbox = QHBoxLayout() hbox.setSpacing(0) optbox.addLayout(hbox) chk = QCheckBox(chklabel) text = QLineEdit(enabled=False) hbox.addWidget(chk) hbox.addWidget(text) if stretch is not None: hbox.addStretch(stretch) if btnlabel: btn = QPushButton(btnlabel) btn.setEnabled(False) btn.setAutoDefault(False) btn.clicked.connect(btnslot) hbox.addSpacing(6) hbox.addWidget(btn) chk.toggled.connect(lambda e: self.toggle_enabled(e, text, target2=btn)) return chk, text, btn else: chk.toggled.connect(lambda e: self.toggle_enabled(e, text)) return chk, text self.rev_chk, self.rev_text = chktext(_("Clone to revision:"), stretch=40) self.noupdate_chk = QCheckBox(_("Do not update the new working directory")) self.pproto_chk = QCheckBox(_("Use pull protocol to copy metadata")) self.uncomp_chk = QCheckBox(_("Use uncompressed transfer")) optbox.addWidget(self.noupdate_chk) optbox.addWidget(self.pproto_chk) optbox.addWidget(self.uncomp_chk) self.qclone_chk, self.qclone_txt, self.qclone_btn = chktext( _("Include patch queue"), btnlabel=_("Browse..."), btnslot=self.onBrowseQclone ) self.proxy_chk = QCheckBox(_("Use proxy server")) optbox.addWidget(self.proxy_chk) useproxy = bool(self.ui.config("http_proxy", "host")) self.proxy_chk.setEnabled(useproxy) self.proxy_chk.setChecked(useproxy) self.insecure_chk = QCheckBox(_("Do not verify host certificate")) optbox.addWidget(self.insecure_chk) self.insecure_chk.setEnabled(False) self.remote_chk, self.remote_text = chktext(_("Remote command:")) # allow to specify start revision for p4 & svn repos. self.startrev_chk, self.startrev_text = chktext(_("Start revision:"), stretch=40) self.hgcmd_lbl = QLabel(_("Hg command:")) self.hgcmd_lbl.setAlignment(Qt.AlignRight) self.hgcmd_txt = QLineEdit() self.hgcmd_txt.setReadOnly(True) grid.addWidget(self.hgcmd_lbl, 3, 0) grid.addWidget(self.hgcmd_txt, 3, 1) self.hgcmd_txt.setMinimumWidth(400) ## command widget self.cmd = cmdui.Widget(True, True, self) self.cmd.commandStarted.connect(self.command_started) self.cmd.commandFinished.connect(self.command_finished) self.cmd.commandFinished.connect(self.cmdfinished) self.cmd.commandCanceling.connect(self.command_canceling) box.addWidget(self.cmd) ## bottom buttons buttons = QDialogButtonBox() self.cancel_btn = buttons.addButton(QDialogButtonBox.Cancel) self.cancel_btn.clicked.connect(self.cmd.cancel) self.close_btn = buttons.addButton(QDialogButtonBox.Close) self.close_btn.clicked.connect(self.onCloseClicked) self.close_btn.setAutoDefault(False) self.clone_btn = buttons.addButton(_("&Clone"), QDialogButtonBox.ActionRole) self.clone_btn.clicked.connect(self.clone) self.detail_btn = buttons.addButton(_("Detail"), QDialogButtonBox.ResetRole) self.detail_btn.setAutoDefault(False) self.detail_btn.setCheckable(True) self.detail_btn.toggled.connect(self.detail_toggled) box.addWidget(buttons) # dialog setting self.setLayout(box) self.layout().setSizeConstraint(QLayout.SetFixedSize) self.setWindowTitle(_("Clone - %s") % ucwd) self.setWindowIcon(qtlib.geticon("hg-clone")) # connect extra signals self.src_combo.editTextChanged.connect(self.composeCommand) self.src_combo.editTextChanged.connect(self.onUrlHttps) self.src_combo.editTextChanged.connect(self.onResetDefault) self.src_combo.currentIndexChanged.connect(self.onResetDefault) self.dest_combo.editTextChanged.connect(self.composeCommand) self.rev_chk.toggled.connect(self.composeCommand) self.rev_text.textChanged.connect(self.composeCommand) self.noupdate_chk.toggled.connect(self.composeCommand) self.pproto_chk.toggled.connect(self.composeCommand) self.uncomp_chk.toggled.connect(self.composeCommand) self.qclone_chk.toggled.connect(self.composeCommand) self.qclone_txt.textChanged.connect(self.composeCommand) self.proxy_chk.toggled.connect(self.composeCommand) self.insecure_chk.toggled.connect(self.composeCommand) self.remote_chk.toggled.connect(self.composeCommand) self.remote_text.textChanged.connect(self.composeCommand) self.startrev_chk.toggled.connect(self.composeCommand) # prepare to show self.cmd.setHidden(True) self.cancel_btn.setHidden(True) self.detail_btn.setHidden(True) self.show_options(False) rev = opts.get("rev") if rev: self.rev_chk.setChecked(True) self.rev_text.setText(hglib.tounicode(rev)) self.noupdate_chk.setChecked(bool(opts.get("noupdate"))) self.pproto_chk.setChecked(bool(opts.get("pull"))) self.uncomp_chk.setChecked(bool(opts.get("uncompressed"))) self.src_combo.setFocus() self.src_combo.lineEdit().selectAll() self.composeCommand()
def __init__(self, repo, parent=None): super(RepoFilterBar, self).__init__(parent) self.layout().setContentsMargins(0, 0, 0, 0) self.setIconSize(QSize(16, 16)) self.setFloatable(False) self.setMovable(False) self._repo = repo self._permanent_queries = list(_permanent_queries) username = repo.ui.config("ui", "username") if username: self._permanent_queries.insert(0, hgrevset.formatspec("author(%s)", os.path.expandvars(username))) self.filterEnabled = True # Check if the font contains the glyph needed by the branch combo if not QFontMetrics(self.font()).inFont(QString(u"\u2605").at(0)): self._allBranchesLabel = u"*** %s ***" % _("Show all") self.entrydlg = revset.RevisionSetQuery(repo, self) self.entrydlg.progress.connect(self.progress) self.entrydlg.showMessage.connect(self.showMessage) self.entrydlg.queryIssued.connect(self.queryIssued) self.entrydlg.hide() self.revsetcombo = combo = QComboBox() combo.setEditable(True) combo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) combo.setMinimumContentsLength(10) qtlib.allowCaseChangingInput(combo) le = combo.lineEdit() le.returnPressed.connect(self.runQuery) le.selectionChanged.connect(self.selectionChanged) if hasattr(le, "setPlaceholderText"): # Qt >= 4.7 le.setPlaceholderText(_("### revision set query ###")) combo.activated.connect(self.runQuery) self._revsettypelabel = QLabel(le) self._revsettypetimer = QTimer(self, interval=200, singleShot=True) self._revsettypetimer.timeout.connect(self._updateQueryType) combo.editTextChanged.connect(self._revsettypetimer.start) self._updateQueryType() le.installEventFilter(self) self.clearBtn = QToolButton(self) self.clearBtn.setIcon(qtlib.geticon("filedelete")) self.clearBtn.setToolTip(_("Clear current query and query text")) self.clearBtn.clicked.connect(self.onClearButtonClicked) self.addWidget(self.clearBtn) self.addWidget(qtlib.Spacer(2, 2)) self.addWidget(combo) self.addWidget(qtlib.Spacer(2, 2)) self.searchBtn = QToolButton(self) self.searchBtn.setIcon(qtlib.geticon("view-filter")) self.searchBtn.setToolTip(_("Trigger revision set query")) self.searchBtn.clicked.connect(self.runQuery) self.addWidget(self.searchBtn) self.editorBtn = QToolButton() self.editorBtn.setText("...") self.editorBtn.setToolTip(_("Open advanced query editor")) self.editorBtn.clicked.connect(self.openEditor) self.addWidget(self.editorBtn) icon = QIcon() icon.addPixmap(QApplication.style().standardPixmap(QStyle.SP_TrashIcon)) self.deleteBtn = QToolButton() self.deleteBtn.setIcon(icon) self.deleteBtn.setToolTip(_("Delete selected query from history")) self.deleteBtn.clicked.connect(self.deleteFromHistory) self.deleteBtn.setEnabled(False) self.addWidget(self.deleteBtn) self.addSeparator() self.filtercb = f = QCheckBox(_("filter")) f.toggled.connect(self.filterToggled) f.setToolTip(_("Toggle filtering of non-matched changesets")) self.addWidget(f) self.addSeparator() self.showHiddenBtn = QToolButton() self.showHiddenBtn.setIcon(qtlib.geticon("view-hidden")) self.showHiddenBtn.setCheckable(True) self.showHiddenBtn.setToolTip(_("Show/Hide hidden changesets")) self.showHiddenBtn.clicked.connect(self.showHiddenChanged) self.addWidget(self.showHiddenBtn) self.addSeparator() self._initBranchFilter() self.refresh()