Hi you all,

I am developping a python application which connects to a database (postresql) and displays the query results on a treeview. In adittion to displaying the info i do need to implement filtering facility for all the columns of the treestore/liststore model in order to allow the user an easy search method to find the desired information.

The treestore is created with information related to cars, the columns are:

car_model   car_year   car_color   car_type  car_price
chevrolet      1998       white       sedan     5.000 US$
ford             1996        blue         sedan     3.000 US$
 -                 -             -                -               -
 -                 -             -                -               -
 -                 -             -                -               -

I have been able to allow filtering to only one column, an extract of my code as follows:


--------------------------------------------------------------------------------------------------------------------------------
  #treestore creation
  self.treestore = gtk.TreeStore(str, str, str, str, str)
  self.modelfilter = self.treestore.filter_new()
  self.treeview=gtk.TreeView()

  #append treestore columns
self.treestore.append(None, [self.model, self.year, self.color, self.type, self.price]

  #set treestore model to allow filtering by car_model column
  self.modelfilter.set_visible_func(self.visible_cd, self.car_model)

#the function to filter the treestore
def visible_cb(self, treestore, iter, x)
 return treestore.get_value(iter, 0) in x

#self.car_model is a list of items wich change according to user needs and can be controlled by a #secundary treeview or a button this function is not explained.
----------------------------------------------------------------------------------------------------------------------------------

The code mentioned above does work but i can only fllter by defining criterias in the first column. To allow filtering to all the columns i do need the following code to work:

----------------------------------------------------------------------------------------------------------------------------------
treemodelfilter.set_modify_func(types, func, data=None)
def func(model, iter, column, user_data)
-----------------------------------------------------------------------------------------------------------------------------------

where types should be:
types = (str, str, str, str, str)

the function to allow filtering:
def visible_cb(self, treestore, column, iter, x)
 return treestore.get_value(iter, column) in x

and the rest of the code never changes...however it is not woking. Any suggestion about the code mention?? am i making mistakes?? where?? do i have to pass the column number someway to the visible_cb function??? how??

can any of you suggest a code example to follow and find out how the treeview must be coded in order to allow "multicolumn filtering"???

thanks in advance for your support..
Juan


_______________________________________________
pygtk mailing list   pygtk@daa.com.au
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to