Fri, 30 Apr 2010 13:48:03 +0000
Added code to preview a changegroup file.
--- a/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py Wed Apr 28 17:59:38 2010 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py Fri Apr 30 13:48:03 2010 +0000 @@ -84,12 +84,13 @@ else: return str(version) - def start(self, fn, versions = None): + def start(self, fn, versions = None, bundle = None): """ Public slot to start the hg diff command. @param fn filename to be diffed (string) @param versions list of versions to be diffed (list of up to 2 strings or None) + @param bundle name of a bundle file (string) """ self.errorGroup.hide() self.inputGroup.show() @@ -105,8 +106,11 @@ args.append('diff') self.vcs.addArguments(args, self.vcs.options['global']) self.vcs.addArguments(args, self.vcs.options['diff']) - - if self.vcs.bundleFile: + + if bundle: + args.append('--repository') + args.append(bundle) + elif self.vcs.bundleFile: args.append('--repository') args.append(self.vcs.bundleFile)
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Wed Apr 28 17:59:38 2010 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Fri Apr 30 13:48:03 2010 +0000 @@ -40,12 +40,13 @@ MessageColumn = 5 TagsColumn = 6 - def __init__(self, vcs, mode = "log", parent = None): + def __init__(self, vcs, mode = "log", bundle = None, parent = None): """ Constructor @param vcs reference to the vcs object - @param mode mode of the dialog (string; one of log, incoming, outgoing) + @param mode mode of the dialog (string; one of log, incoming, outgoing) + @param bundle name of a bundle file (string) @param parent parent widget (QWidget) """ QDialog.__init__(self, parent) @@ -61,7 +62,8 @@ if mode in ("log", "incoming", "outgoing"): self.commandMode = mode else: - self.commandMode = "log" + self.commandMode = "log" + self.bundle = bundle self.__maxDate = QDate() self.__minDate = QDate() @@ -292,9 +294,13 @@ process = QProcess() args = [] args.append("parents") - if self.commandMode == "incoming" and self.vcs.bundleFile: - args.append("--repository") - args.append(self.vcs.bundleFile) + if self.commandMode == "incoming": + if self.bundle: + args.append("--repository") + args.append(self.bundle) + elif self.vcs.bundleFile: + args.append("--repository") + args.append(self.vcs.bundleFile) args.append("--template") args.append("{rev}\n") args.append("-r") @@ -452,12 +458,15 @@ args.append('--copies') args.append('--style') args.append(os.path.join(os.path.dirname(__file__), "styles", "logBrowser.style")) - if self.commandMode == "incoming": - project = e5App().getObject("Project") - self.vcs.bundleFile = os.path.join( - project.getProjectManagementDir(), "hg-bundle.hg") - args.append('--bundle') - args.append(self.vcs.bundleFile) + if self.commandMode == "incoming": + if self.bundle: + args.append(self.bundle) + else: + project = e5App().getObject("Project") + self.vcs.bundleFile = os.path.join( + project.getProjectManagementDir(), "hg-bundle.hg") + args.append('--bundle') + args.append(self.vcs.bundleFile) if not self.projectMode: args.append(self.filename) @@ -688,7 +697,7 @@ del self.diff self.diff = HgDiffDialog(self.vcs) self.diff.show() - self.diff.start(self.filename, [rev1, rev2]) + self.diff.start(self.filename, [rev1, rev2], self.bundle) def on_buttonBox_clicked(self, button): """
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogDialog.py Wed Apr 28 17:59:38 2010 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgLogDialog.py Fri Apr 30 13:48:03 2010 +0000 @@ -28,12 +28,13 @@ The dialog is nonmodal. Clicking a link in the upper text pane shows a diff of the revisions. """ - def __init__(self, vcs, mode = "log", parent = None): + def __init__(self, vcs, mode = "log", bundle = None, parent = None): """ Constructor @param vcs reference to the vcs object @param mode mode of the dialog (string; one of log, incoming, outgoing) + @param bundle name of a bundle file (string) @param parent parent widget (QWidget) """ QWidget.__init__(self, parent) @@ -47,6 +48,7 @@ self.mode = mode else: self.mode = "log" + self.bundle = bundle self.contents.setHtml(\ self.trUtf8('<b>Processing your request, please wait...</b>')) @@ -129,11 +131,14 @@ args.append('--style') args.append(os.path.join(os.path.dirname(__file__), "styles", "logDialog.style")) if self.mode == "incoming": - project = e5App().getObject("Project") - self.vcs.bundleFile = os.path.join( - project.getProjectManagementDir(), "hg-bundle.hg") - args.append('--bundle') - args.append(self.vcs.bundleFile) + if self.bundle: + args.append(self.bundle) + else: + project = e5App().getObject("Project") + self.vcs.bundleFile = os.path.join( + project.getProjectManagementDir(), "hg-bundle.hg") + args.append('--bundle') + args.append(self.vcs.bundleFile) if not self.projectMode: args.append(self.filename) @@ -163,13 +168,13 @@ process = QProcess() args = [] args.append("parents") - if self.mode == "incoming" and self.vcs.bundleFile: - args.append("--repository") - args.append(self.vcs.bundleFile) - args.append("--template") - args.append("{rev}:{node|short}\n") - args.append("-r") - args.append(rev) + if self.mode == "incoming": + if self.bundle: + args.append("--repository") + args.append(self.bundle) + elif self.vcs.bundleFile: + args.append("--repository") + args.append(self.vcs.bundleFile) if not self.projectMode: args.append(self.filename) @@ -369,7 +374,7 @@ del self.diff self.diff = HgDiffDialog(self.vcs) self.diff.show() - self.diff.start(filename, [v1, v2]) + self.diff.start(filename, [v1, v2], self.bundle) def on_passwordCheckBox_toggled(self, isOn): """
--- a/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Wed Apr 28 17:59:38 2010 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Fri Apr 30 13:48:03 2010 +0000 @@ -595,6 +595,21 @@ self.connect(self.hgBundleAct, SIGNAL('triggered()'), self.__hgBundle) self.actions.append(self.hgBundleAct) + self.hgPreviewBundleAct = E5Action(self.trUtf8('Preview changegroup'), + self.trUtf8('Preview changegroup...'), + 0, 0, self, 'mercurial_preview_bundle') + self.hgPreviewBundleAct.setStatusTip(self.trUtf8( + 'Preview a changegroup file containing a collecting of changesets' + )) + self.hgPreviewBundleAct.setWhatsThis(self.trUtf8( + """<b>Preview changegroup</b>""" + """<p>This previews a changegroup file containing a collecting of""" + """ changesets.</p>""" + )) + self.connect(self.hgPreviewBundleAct, SIGNAL('triggered()'), + self.__hgPreviewBundle) + self.actions.append(self.hgPreviewBundleAct) + self.hgUnbundleAct = E5Action(self.trUtf8('Apply changegroups'), self.trUtf8('Apply changegroups...'), 0, 0, self, 'mercurial_unbundle') @@ -687,7 +702,8 @@ adminMenu.addAction(self.hgVerifyAct) bundleMenu = QMenu(self.trUtf8("Changegroup Management"), menu) - bundleMenu.addAction(self.hgBundleAct) + bundleMenu.addAction(self.hgBundleAct) + bundleMenu.addAction(self.hgPreviewBundleAct) bundleMenu.addAction(self.hgUnbundleAct) bisectMenu = QMenu(self.trUtf8("Bisect"), menu) @@ -901,6 +917,12 @@ Protected slot used to create a changegroup file. """ self.vcs.hgBundle(self.project.ppath) + + def __hgPreviewBundle(self): + """ + Protected slot used to preview a changegroup file. + """ + self.vcs.hgPreviewBundle(self.project.ppath) def __hgUnbundle(self): """
--- a/Plugins/VcsPlugins/vcsMercurial/hg.py Wed Apr 28 17:59:38 2010 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/hg.py Fri Apr 30 13:48:03 2010 +0000 @@ -1656,7 +1656,7 @@ None, self.trUtf8("Create changegroup"), None, - self.trUtf8("Mercurial Bundle Files (*.bundle)"), + self.trUtf8("Mercurial Bundle Files (*.hg)"), None, QFileDialog.Options(QFileDialog.DontConfirmOverwrite)) @@ -1699,6 +1699,29 @@ if res: dia.exec_() + def hgPreviewBundle(self, name): + """ + Public method used to view the log of incoming changes from a + changegroup file. + + @param name file/directory name to show the log of (string) + """ + file = QFileDialog.getOpenFileName(\ + None, + self.trUtf8("Preview changegroup"), + "", + self.trUtf8("Mercurial Bundle Files (*.hg);;All Files (*)")) + if file: + if self.getPlugin().getPreferences("UseLogBrowser"): + self.logBrowser = \ + HgLogBrowserDialog(self, mode = "incoming", bundle = file) + self.logBrowser.show() + self.logBrowser.start(name) + else: + self.log = HgLogDialog(self, mode = "incoming", bundle = file) + self.log.show() + self.log.start(name) + def hgUnbundle(self, name): """ Public method to apply changegroup files. @@ -1718,7 +1741,7 @@ None, self.trUtf8("Apply changegroups"), "", - self.trUtf8("Mercurial Bundle Files (*.bundle);;All Files (*)")) + self.trUtf8("Mercurial Bundle Files (*.hg);;All Files (*)")) if files: update = QMessageBox.question(None, self.trUtf8("Apply changegroups"),