[Thunar-workers] CVS: design/ui ChangeLog, 1.33, 1.34 ThunarIconView.py, 1.3, 1.4 ThunarListView.py, 1.5, 1.6 ThunarModel.py, 1.1, 1.2 ThunarView.py, 1.5, 1.6 ThunarWindow.py, 1.22, 1.23 thunar.ui, 1.11, 1.12

Benedikt Meurer benny at xfce.org
Mon Mar 28 20:02:28 CEST 2005


Update of /var/cvs/thunar/design/ui
In directory espresso.foo-projects.org:/tmp/cvs-serv26914

Modified Files:
	ChangeLog ThunarIconView.py ThunarListView.py ThunarModel.py 
	ThunarView.py ThunarWindow.py thunar.ui 
Log Message:
2005-03-28	Benedikt Meurer <benny at xfce.org>

	* thunar.ui, ThunarWindow.py: Add 'Invert Selection' to the 'Edit'
	  menu.
	* ThunarIconView.py, ThunarListView.py, ThunarView.py, ThunarModel.py:
	  Implement the new 'Invert Selection' and 'Select by Pattern' actions.
	* ThunarWindow.py: Add dialog for the 'Select by Pattern' action.




Index: ChangeLog
===================================================================
RCS file: /var/cvs/thunar/design/ui/ChangeLog,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- ChangeLog	24 Mar 2005 18:17:40 -0000	1.33
+++ ChangeLog	28 Mar 2005 18:02:25 -0000	1.34
@@ -1,3 +1,11 @@
+2005-03-28	Benedikt Meurer <benny at xfce.org>
+
+	* thunar.ui, ThunarWindow.py: Add 'Invert Selection' to the 'Edit'
+	  menu.
+	* ThunarIconView.py, ThunarListView.py, ThunarView.py, ThunarModel.py:
+	  Implement the new 'Invert Selection' and 'Select by Pattern' actions.
+	* ThunarWindow.py: Add dialog for the 'Select by Pattern' action.
+
 2005-03-24	Benedikt Meurer <benny at xfce.org>
 
 	* ThunarPathBar.py: Don't display forward history as suggested by

Index: ThunarIconView.py
===================================================================
RCS file: /var/cvs/thunar/design/ui/ThunarIconView.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ThunarIconView.py	16 Mar 2005 10:49:05 -0000	1.3
+++ ThunarIconView.py	28 Mar 2005 18:02:25 -0000	1.4
@@ -58,6 +58,25 @@
         return list
 
 
+    def select_by_pattern(self, pattern):
+        self.unselect_all()
+        for iter in self.get_model().match(pattern):
+            path = self.get_model().get_path(iter)
+            self.select_path(path)
+
+
+    def invert_selection(self):
+        model = self.get_model()
+        iter = model.get_iter_first()
+        while iter:
+            path = model.get_path(iter)
+            if self.path_is_selected(path):
+                self.unselect_path(path)
+            else:
+                self.select_path(path)
+            iter = model.iter_next(iter)
+
+
     def _activated(self, path):
         iter = self.get_model().get_iter(path)
         info = self.get_model().get(iter, ThunarModel.COLUMN_FILEINFO)[0]

Index: ThunarListView.py
===================================================================
RCS file: /var/cvs/thunar/design/ui/ThunarListView.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- ThunarListView.py	16 Mar 2005 10:49:05 -0000	1.5
+++ ThunarListView.py	28 Mar 2005 18:02:25 -0000	1.6
@@ -113,6 +113,25 @@
         self.get_selection().select_all()
 
 
+    def select_by_pattern(self, pattern):
+        selection = self.get_selection()
+        selection.unselect_all()
+        for iter in self.get_model().match(pattern):
+            selection.select_iter(iter)
+
+
+    def invert_selection(self):
+        selection = self.get_selection()
+        model = self.get_model()
+        iter = model.get_iter_first()
+        while iter:
+            if selection.iter_is_selected(iter):
+                selection.unselect_iter(iter)
+            else:
+                selection.select_iter(iter)
+            iter = model.iter_next(iter)
+
+
     def _activated(self, path):
         iter = self.get_model().get_iter(path)
         info = self.get_model().get(iter, ThunarModel.COLUMN_FILEINFO)[0]

Index: ThunarModel.py
===================================================================
RCS file: /var/cvs/thunar/design/ui/ThunarModel.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- ThunarModel.py	27 Feb 2005 18:13:49 -0000	1.1
+++ ThunarModel.py	28 Mar 2005 18:02:25 -0000	1.2
@@ -22,7 +22,7 @@
 # 02111-1307, USA.
 #
 
-import dircache, os
+import dircache, fnmatch, os
 
 import pygtk
 pygtk.require('2.0')
@@ -70,6 +70,17 @@
             ])
 
 
+    def match(self, pattern):
+        result = []
+        iter = self.get_iter_first()
+        while iter:
+            info = self.get(iter, self.COLUMN_FILEINFO)[0]
+            if fnmatch.fnmatch(info.get_visible_name(), pattern):
+                result.append(iter)
+            iter = self.iter_next(iter)
+        return result
+
+
     def _compare(self, model, iter1, iter2):
         info1 = self.get(iter1, self.COLUMN_FILEINFO)[0]
         info2 = self.get(iter2, self.COLUMN_FILEINFO)[0]

Index: ThunarView.py
===================================================================
RCS file: /var/cvs/thunar/design/ui/ThunarView.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- ThunarView.py	16 Mar 2005 10:49:05 -0000	1.5
+++ ThunarView.py	28 Mar 2005 18:02:25 -0000	1.6
@@ -42,6 +42,14 @@
         pass
 
 
+    def select_by_pattern(self, pattern):
+        pass
+
+
+    def invert_selection(self):
+        pass
+
+
     def activated(self, info, new_window = False):
         self.emit('activated', info, new_window)
 

Index: ThunarWindow.py
===================================================================
RCS file: /var/cvs/thunar/design/ui/ThunarWindow.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- ThunarWindow.py	20 Mar 2005 17:10:19 -0000	1.22
+++ ThunarWindow.py	28 Mar 2005 18:02:25 -0000	1.23
@@ -82,7 +82,8 @@
             ('cut-files', gtk.STOCK_CUT, 'Cu_t Files', '<Control>X'),
             ('paste-files', gtk.STOCK_PASTE, '_Paste Files', '<Control>V'),
             ('select-all-files', None, 'Select _All Files', '<Control>S', None, lambda ign, self: self.view.select_all()),
-            ('select-by-pattern', None, 'Select by Pattern', None),
+            ('select-by-pattern', None, 'Select b_y Pattern', None, None, lambda ign, self: self._action_select_by_pattern()),
+            ('invert-selection', None, '_Invert Selection', '<Control>I', None, lambda ign, self: self.view.invert_selection()),
             ('edit-toolbars', None, '_Edit Toolbars...', None),
             ('preferences', gtk.STOCK_PREFERENCES, 'Prefere_nces...', None),
         ], self)
@@ -134,7 +135,6 @@
         self.action_group.get_action('copy-files').set_property('sensitive', False)
         self.action_group.get_action('cut-files').set_property('sensitive', False)
         self.action_group.get_action('paste-files').set_property('sensitive', False)
-        self.action_group.get_action('select-by-pattern').set_property('sensitive', False)
         self.action_group.get_action('edit-toolbars').set_property('sensitive', False)
         self.action_group.get_action('preferences').set_property('sensitive', False)
         self.action_group.get_action('go-back').set_property('sensitive', False)
@@ -462,6 +462,33 @@
         return False
 
 
+    def _action_select_by_pattern(self):
+        dialog = gtk.Dialog('Select by pattern', self, gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR | gtk.DIALOG_MODAL, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
+        dialog.set_default_response(gtk.RESPONSE_OK)
+        dialog.set_default_size(390, 50)
+        dialog.set_border_width(6)
+
+        hbox = gtk.HBox(False, 10)
+        hbox.set_border_width(6)
+        dialog.vbox.pack_start(hbox, True, True, 0)
+        hbox.show()
+
+        label = gtk.Label('Pattern:')
+        hbox.pack_start(label, False, False, 0)
+        label.show()
+
+        entry = gtk.Entry()
+        entry.set_activates_default(True)
+        hbox.pack_start(entry, True, True, 0)
+        entry.show()
+
+        if dialog.run() == gtk.RESPONSE_OK:
+            pattern = entry.get_chars(0, -1)
+            self.view.select_by_pattern(pattern)
+
+        dialog.destroy()
+
+        
     def _action_open_location_other(self):
         if self.pathbar and self.pathbar.__class__ == ThunarLocationBar:
             self.pathbar.focus()

Index: thunar.ui
===================================================================
RCS file: /var/cvs/thunar/design/ui/thunar.ui,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- thunar.ui	20 Mar 2005 17:10:19 -0000	1.11
+++ thunar.ui	28 Mar 2005 18:02:26 -0000	1.12
@@ -40,6 +40,7 @@
       <separator />
       <menuitem action="select-all-files" />
       <menuitem action="select-by-pattern" />
+      <menuitem action="invert-selection" />
       <separator />
       <menuitem action="edit-toolbars" />
       <menuitem action="preferences" />




More information about the Thunar-workers mailing list