Added code to preview a changegroup file.

Fri, 30 Apr 2010 13:48:03 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 30 Apr 2010 13:48:03 +0000
changeset 213
42bb97ff0bbb
parent 212
19785b4c1bed
child 214
eb1cf9398a3f

Added code to preview a changegroup file.

Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgLogDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/hg.py file | annotate | diff | comparison | revisions
--- 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"),

eric ide

mercurial