title: GTK how to create 3 different filter for 1 Liststore
body: <p>In GTK/Python, I'm trying to build an interface with nodes.</p>
  
  <p>This is <a href="https://i.stack.imgur.com/SR1jO.png" rel="nofollow noreferrer">photo of my interface</a> </p>
  
  <p><a href="https://i.stack.imgur.com/SR1jO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/SR1jO.png" alt="ChronoMap"></a></p>
  
  <p>I create one liststore and I want to filter different things. The user has to do two actions, first, he has to choose in the combobox the type of filter that he wants to use, if he wants to filter by node's type, node's beginning name or others.</p>
  
  <p>Then in the text entry, he decides what information that he wants to see. Take the exemple of nodes type. There are like 3 different types of nodes, node type 1, node type 2 and node type 3. As an user I want to see only node type 1, so I write 1 in the node entry. Actually I have a problem, it is my filter does not work.</p>
  
  <p>I first create 2 liststores: </p>
  
  <pre><code>    def create_liststore(self):
  
      if len(self.FdessinCarto.pos) != 0:
                  for i,node in enumerate(self.FdessinCarto.pos):
                      self.node_liststore.append([str(node.title),self.controller.model.string_from_numdate(int(node.start_time)),self.controller.model.string_from_numdate(int(node.end_time)),str(node.node_group),str(node.description),str(node.attachment_list)])
  
      self.edgelist = self.controller.get_edge_list()
      if len(self.edgelist) !=0:
          for i in self.edgelist: 
              edge_prop=self.controller.edge_data(i[0],i[1])
              self.edge_liststore.append([edge_prop['label'],str(i[0].title),str(i[1].title),edge_prop['description'],edge_prop['attachment_list']])        
  
      #creating the treeview for Node, making it use the filter as a model, and adding the columns
      self.treeviewNode = Gtk.TreeView.new_with_model(self.node_liststore)
      for i, column_title in enumerate(["Name", "Beginning date", "End date", "Type of node", "Description of node","files"]):
          self.Noderenderer = Gtk.CellRendererText()
          self.Noderenderer.set_property("editable", True)
          column = Gtk.TreeViewColumn(column_title, self.Noderenderer, text=i)
          column.set_sort_column_id(0)
          self.treeviewNode.append_column(column)
  
  
      #creating the treeview for edge
      self.treeviewEdge = Gtk.TreeView.new_with_model(self.edge_liststore)
      for i, column_title in enumerate(["Name", "Node 1", "Node 2", "Description of edge","file"]):
          self.Edgerenderer = Gtk.CellRendererText()
          self.Edgerenderer.set_property("editable", True)
          column = Gtk.TreeViewColumn(column_title, self.Edgerenderer, text=i)
          column.set_sort_column_id(0)
          self.treeviewEdge.append_column(column)
  
      self.SWViewListStore.add(self.treeviewNode)
      self.SWEdgeStore.add(self.treeviewEdge)
      self.SWViewListStore.show_all()
      self.SWEdgeStore.show_all()
  </code></pre>
  
  <p>There are my 3 different filters: </p>
  
  <pre><code>    #creating the filtre
      self.node_beginning_date_filter = self.node_liststore.filter_new()
      self.node_end_date_filter = self.node_liststore.filter_new()
      self.node_type_filter = self.node_liststore.filter_new()
  
  
      #setting the filter function, note that we're not using the
      self.node_end_date_filter.set_visible_func(self.node_end_date_filter_func)
      self.node_beginning_date_filter.set_visible_func(self.node_beginning_date_filter_func)
      self.node_type_filter.set_visible_func(self.node_type_filter_func)
  </code></pre>
  
  <p>Once I change my combo-box, it would activate my function, it took the type of combofilter then also the text of combobox :</p>
  
  <pre><code>    def on_entryComboBox_changed(self,widget):
         textComboFilter = self.View.combo_filter.get_active_text()
         print("textComboFilter %s" %textComboFilter)
          if textComboFilter == "Filter by node's beginning date":
              #print("%s language selected!" % textComboFilter)
              self.View.current_filter = textComboFilter
              self.View.node_beginning_date_filter.refilter() 
  
          if textComboFilter == "Filter by node's end date":
              #print("%s language selected!" % textComboFilter)
              self.View.current_filter = textComboFilter
              self.View.node_end_date_filter.refilter() 
  
          if textComboFilter == "Filter by type of node":
              #print("%s language selected!" % textComboFilter)
              self.View.current_filter = textComboFilter
              self.View.node_type_filter.refilter() 
  </code></pre>
  
  <p>And it does not work.</p>