Changeset 136

Show
Ignore:
Timestamp:
Thu Nov 30 13:39:48 2006
Author:
manatlan
Message:

- no more "gtk_tree_store_get_path assertion / treestore/foreach" bug in
jbrout. Avoid it with a self made find method (without using the bugged
foreach)

Files:

Legend:

Unmodified
Added
Removed
Modified
  • trunk/jbrout.py

    r135 r136  
    412 412             return new  
    413 413  
      414     ## BUGGED in pygtk 2.10.3 on foreach/treeiter  
      415     #~ def find(self,node):  
      416         #~ """ return the 'iter' of the node in the model or None """  
      417         #~ def _lookInside(model, path, iter0, rechNode):  
      418             #~ node = model.get(iter0)  
      419             #~ if node and node.file == rechNode.file:  
      420                 #~ _lookInside.ite = iter0  
      421                 #~ return True  
      422         #~ _lookInside.ite=None  
      423         #~ self.foreach( _lookInside, node )  
      424         #~ return _lookInside.ite  
      425  
      426     ## new version, with recursive process, to avoid bug (see below)  
    414 427     def find(self,node):  
    415 428         """ return the 'iter' of the node in the model or None """  
    416           def _lookInside(model, path, iter0, rechNode):  
    417               node = model.get(iter0)  
    418               if node and node.file == rechNode.file:  
    419                   _lookInside.ite = iter0  
    420                   return True  
    421           _lookInside.ite=None  
    422           self.foreach( _lookInside, node )  
    423           return _lookInside.ite  
      429         return self.ffind(self.get_iter_root(),node)  
      430  
      431     def ffind(self,it,node):  
      432         nnode = self.get(it)  
      433         if nnode and nnode.file == node.file:  
      434             return it  
      435         else:  
      436             ic=self.iter_children(it)  
      437             while ic:  
      438                 f=self.ffind(ic,node)  
      439                 if f:  
      440                     return f  
      441                 else:  
      442                     ic = self.iter_next(ic)  
      443  
    424 444  
    425       def findName(self,name):  
    426           """ return the 'iter' of the named album 'name' in the model or None """  
    427           def _lookInside(model, path, iter0, name):  
    428               node = model.get(iter0)  
    429               if node and node.name == name:  
    430                   _lookInside.ite = iter0  
    431                   return True  
    432           _lookInside.ite=None  
    433           self.foreach( _lookInside, name )  
    434           return _lookInside.ite  
    435 445  
    436 446     def expander(self,tree):  
     
    1044 1054     ## TREEVIEW DB  
    1045 1055     ###################################################################################  
    1046       def select(self,model,iter0,all=True,fromFilteredTree=False):  
      1056     def selectAlbum(self,model,iter0,all=True,fromFilteredTree=False):  
    1046 1056         if iter0:  
    1047 1057             self.showProgress(True)  
     
    1090 1100                 model.activeBasket()  
    1091 1101  
    1092                   self.select(model,iter0)  
      1102                 self.selectAlbum(model,iter0)  
    1092 1102  
    1093 1103     def on_menu_new_folder(self,e):  
     
    1105 1115             if newNode!=None:  
    1106 1116                 iter1=model.add(iter0,newNode)  
    1107                   self.select(model,iter1)  
      1117                 self.selectAlbum(model,iter1)  
    1107 1117  
    1108 1118     def on_menu_refresh(self,e):  
     
    1131 1141         model.activeBasket()  
    1132 1142  
    1133           self.select(model,parentIter)  
      1143         self.selectAlbum(model,parentIter)  
    1133 1143  
    1134 1144     def on_menu_delete_from_disk(self,e):  
     
    1154 1164                 model.activeBasket()  
    1155 1165  
    1156                   self.select(model,parentIter)  
      1166                 self.selectAlbum(model,parentIter)  
    1156 1166  
    1157 1167  
     
    1167 1177         treeselection = self.treeviewdb.get_selection()  
    1168 1178         model, iter0 = treeselection.get_selected()  
    1169           self.select(model,iter0,False)  
      1179         self.selectAlbum(model,iter0,False)  
    1169 1179  
    1170 1180     def on_drop_photos(self,model,iter0):  
     
    1225 1235                 #~ print model.iter_is_valid(newIterFolder)  
    1226 1236  
    1227                   self.select(model,newIterFolder)  
      1237                 self.selectAlbum(model,newIterFolder)  
    1227 1237         finally:  
    1228 1238             self.showProgress()  
     
    1245 1255                         iter0=model.fill(new,ito)  
    1246 1256  
    1247                           self.select(model,iter0)  
      1257                         self.selectAlbum(model,iter0)  
    1247 1257  
    1248 1258                         # delete from basket the photo which are moved  
     
    1396 1406             JBrout.plugins.show(widget.items,widget.focus_cell)  
    1397 1407             return 1  
    1398               #~ self.tbl.select(item)  
    1399 1408  
    1400 1409     def on_selecteur_menu_delete_tag(self,b,sel,tag):  
     
    1441 1450         model = self.treeviewdb.get_model()  
    1442 1451         iterFolder = model.find( folderNode)  
    1443           self.select(model,iterFolder)  
      1452         self.selectAlbum(model,iterFolder)  
    1443 1452  
    1444 1453         # and select the selected photo  
     
    1867 1876  
    1868 1877         fromFilteredTree = (widget == self.tvFilteredAlbums)  
    1869           self.select( model, iter0, fromFilteredTree = fromFilteredTree )  
      1878         self.selectAlbum( model, iter0, fromFilteredTree = fromFilteredTree )  
    1869 1878  
    1870 1879     def on_treeviewdb_drag_data_get(self, widget, *args):  
     
    1902 1911                     menu.popup(None,None,None,event.button,0)  
    1903 1912                 elif event.button==2:  
    1904                       self.select(model,iter0,False)  
      1913                     self.selectAlbum(model,iter0,False)  
    1904 1913             else:  
    1905 1914                 # on the basket  
     
    1910 1919                     menu.popup(None,None,None,event.button,0)  
    1911 1920                 elif event.button==2:  
    1912                       self.select(model,iter0)  
      1921                     self.selectAlbum(model,iter0)  
    1912 1921  
    1913 1922