# HG changeset patch
# User Sune Foldager <c...@cyanite.org>
# Date 1260126169 -3600
# Node ID 8412a56aa82cda32751027e0b12db3d52e0ff934
# Parent  564f7f808e63e01571fd0ac542a293dbd83372be
history: auto-select files changed via context menu

diff --git a/tortoisehg/hgtk/status.py b/tortoisehg/hgtk/status.py
--- a/tortoisehg/hgtk/status.py
+++ b/tortoisehg/hgtk/status.py
@@ -728,6 +728,12 @@
         gobject.timeout_add(50, status_wait, thread)
         return True
 
+    def set_file_states(self, paths, state=True):
+        for p in paths:
+            self.filemodel[p][FM_CHECKED] = state
+            self.update_chunk_state(self.filemodel[p])
+        self.update_check_count()
+
     def select_toggle(self, cellrenderer, path):
         'User manually toggled file status via checkbox'
         self.filemodel[path][FM_CHECKED] = not self.filemodel[path][FM_CHECKED]
@@ -1418,6 +1424,7 @@
         types = {'M':[], 'A':[], 'R':[], '!':[], 'I':[], '?':[], 'C':[],
                  'r':[], 'u':[]}
         all = []
+        pathmap = {}
         for p in tpaths:
             row = model[p]
             file = util.pconvert(row[FM_PATH])
@@ -1429,15 +1436,20 @@
             else:
                 types[row[FM_STATUS]].append(file)
             all.append(file)
+            pathmap[file] = p
 
-        def make(label, handler, stats, enabled=True):
+        def make(label, handler, stats, enabled=True, paths=False):
             files = []
             for t in stats:
                 files.extend(types[t])
             if not files:
                 return
             item = gtk.MenuItem(label, True)
-            item.connect('activate', handler, files)
+            if paths:
+                p = [pathmap[f] for f in files]
+                item.connect('activate', handler, files, p)
+            else:
+                item.connect('activate', handler, files)
             item.set_border_width(1)
             item.set_sensitive(enabled)
             menu.append(item)
@@ -1459,10 +1471,12 @@
             from tortoisehg.hgtk import history
             dlg = history.run(self.ui, canonpats=files)
             dlg.display()
-        def forget(menuitem, files):
+        def forget(menuitem, files, paths):
             self.hg_forget(files)
-        def add(menuitem, files):
+            self.set_file_states(paths, state=False)
+        def add(menuitem, files, paths):
             self.hg_add(files)
+            self.set_file_states(paths, state=True)
         def delete(menuitem, files):
             self.delete_files(files)
         def unmark(menuitem, files):
@@ -1515,8 +1529,8 @@
         menu.append_sep()
         make(_('L_og'), log, 'MARC!ru')
         menu.append_sep()
-        make(_('_Forget'), forget, 'MARC!ru')
-        make(_('_Add'), add, 'I?')
+        make(_('_Forget'), forget, 'MARC!ru', paths=True)
+        make(_('_Add'), add, 'I?', paths=True)
         make(_('_Guess Rename...'), guess_rename, '?')
         make(_('_Ignore'), ignore, '?')
         make(_('Remove versioned'), remove, 'C')

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to