class MyFRendererCombo

this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)

Public Class Methods

new(caller,header) click to toggle source
Calls superclass method
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 8
        def initialize(caller,header)
                @header=header
                @caller=caller
                @defval=get_conf(caller.list.get_id,header["id"],"filter") || "-1"
                @mycombomodel=Gtk::ListStore.new(String,String)
                @filter=Gtk::TreeModelFilter.new(@mycombomodel)
                @typed=""
                super()
                set_model(@filter)
                update()
                set_row_separator_func{|model, iter|  
                        iter[1]=='separator' or iter[0]=='---'
                }
                @filter.set_visible_func{|model, iter|
                if iter[0] and @typed
                        ret=iter[0].upcase.index(@typed.upcase)
#                       print iter[0],":",iter[0][0 .. @typed.length]," == ",@typed," = ",ret,"\n"
                        ret
                end
                }
#                 update
                signal_connect('changed'){|me| 
                        set_conf(caller.list.get_id,header['id'],"filter",self.active_iter[1])
                        @caller.list.refilter
                }
                signal_connect('key-press-event'){|me,key|
                        case key.keyval
                                when ?a .. ?z,?A .. ?Z, ?0 .. ?9 then @typed=@typed+key.keyval.chr
                                when 65288 then @typed="" if @typed.length==1
                                @typed=@typed[0 .. @typed.length-2] if @typed.length>0
                        end
#                       print "current filter: ",@typed,",",@typed.length,"\n"
                        @filter.refilter
                }
        end

Public Instance Methods

append_row(cdata,cdisplay) click to toggle source
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 60
def append_row(cdata,cdisplay)
  iter=@mycombomodel.append
  iter[0]=cdisplay
  iter[1]=cdata
end
get_text_from_value(selected_combo_value) click to toggle source
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 76
def get_text_from_value(selected_combo_value)
  selected_combo_text=nil
  @mycombomodel.each {|model, path, iter|  
        if iter[0]==selected_combo_value
          selected_combo_text=iter[1]
        end
  }
  return selected_combo_text
end
get_value_from_text(selected_combo_text) click to toggle source
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 66
def get_value_from_text(selected_combo_text)
          selected_combo_value=nil
          @mycombomodel.each {|model, path, iter|  
                if iter[1]==selected_combo_text
                  selected_combo_value=iter[0]
                end
          }
          return selected_combo_value
end
select_value(selected_value=@defval) click to toggle source
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 90
def select_value(selected_value=@defval)
  @defval=selected_value
  @mycombomodel.each {|model, path, iter|  self.set_active(path.indices[0]) if iter[1]==@defval }
end
text() click to toggle source
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 86
def text
  return self.active_iter[1]
end
update(new_value=@defval) click to toggle source
# File lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb, line 43
def update(new_value=@defval)
          set_model(nil)
          @defval=new_value
          @mycombomodel.clear
          if @header['wantnew']
              append_row("-1","")
              append_row("---","---")
          end
          if @header['admin']
                        admin_rows(@header['querySQL'],@header['key'].include?(".")){|row| append_row(row[@header['key']],row[@header['display']])}
                else
                        rows(@header['querySQL'],@header['key'].include?(".")){|row| append_row(row[@header['key']],row[@header['display']])}
          end unless @header['querySQL'].length == 0
          set_model(@mycombomodel)
          select_value()
end