Plugins/VcsPlugins/vcsMercurial/hg.py

changeset 1311
95685f9ad9f8
parent 1307
9f7a056dbcc6
child 1312
12506dba74dc
--- a/Plugins/VcsPlugins/vcsMercurial/hg.py	Fri Sep 09 12:29:45 2011 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/hg.py	Fri Sep 09 19:15:06 2011 +0200
@@ -48,6 +48,7 @@
 from .HgServeDialog import HgServeDialog
 from .HgUtilities import getConfigPath
 from .HgClient import HgClient
+from .HgImportDialog import HgImportDialog
 
 from .BookmarksExtension.bookmarks import Bookmarks
 from .QueuesExtension.queues import Queues
@@ -829,11 +830,13 @@
         if res:
             dia.exec_()
     
-    def vcsRevert(self, name):
+    def hgRevert(self, name):
         """
         Public method used to revert changes made to a file/directory.
         
         @param name file/directory name to be reverted (string)
+        @return flag indicating, that the update contained an add
+            or delete (boolean)
         """
         args = []
         args.append('revert')
@@ -852,13 +855,15 @@
         while not os.path.isdir(os.path.join(repodir, self.adminDir)):
             repodir = os.path.dirname(repodir)
             if repodir == os.sep:
-                return
+                return False
         
         dia = HgDialog(self.trUtf8('Reverting changes'), self)
         res = dia.startProcess(args, repodir)
         if res:
             dia.exec_()
+            res = dia.hasAddOrDelete()
         self.checkVCSStatus()
+        return res
     
     def vcsMerge(self, name):
         """
@@ -1592,7 +1597,7 @@
         while not os.path.isdir(os.path.join(repodir, self.adminDir)):
             repodir = os.path.dirname(repodir)
             if repodir == os.sep:
-                return
+                return False
         
         dia = HgDialog(title, self)
         res = dia.startProcess(args, repodir)
@@ -2369,6 +2374,61 @@
         self.serveDlg = HgServeDialog(self, repodir)
         self.serveDlg.show()
     
+    def hgImport(self, name):
+        """
+        Public method to import a patch file.
+        
+        @param name directory name of the project to import into (string)
+        @return flag indicating, that the import contained an add, a delete
+            or a change to the project file (boolean)
+        """
+        dname, fname = self.splitPath(name)
+        
+        # find the root of the repo
+        repodir = dname
+        while not os.path.isdir(os.path.join(repodir, self.adminDir)):
+            repodir = os.path.dirname(repodir)
+            if repodir == os.sep:
+                return
+        
+        dlg = HgImportDialog()
+        if dlg.exec_() == QDialog.Accepted:
+            patchFile, noCommit, message, date, user, stripCount, force = \
+                dlg.getParameters()
+            
+            args = []
+            args.append("import")
+            args.append("--verbose")
+            if noCommit:
+                args.append("--no-commit")
+            else:
+                if message:
+                    args.append('--message')
+                    args.append(message)
+                if date:
+                    args.append('--date')
+                    args.append(date)
+                if user:
+                    args.append('--user')
+                    args.append(user)
+            if stripCount != 1:
+                args.append("--strip")
+                args.append(str(stripCount))
+            if force:
+                args.append("--force")
+            args.append(patchFile)
+            
+            dia = HgDialog(self.trUtf8("Import Patch"), self)
+            res = dia.startProcess(args, repodir)
+            if res:
+                dia.exec_()
+                res = dia.hasAddOrDelete()
+            self.checkVCSStatus()
+        else:
+            res = False
+        
+        return res
+    
     ############################################################################
     ## Methods to handle extensions are below.
     ############################################################################

eric ide

mercurial