class MyCellRendererCombo

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

Attributes

column[RW]
model_col_num[RW]
view[RW]

Public Class Methods

new(column) click to toggle source
Calls superclass method
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 7
def initialize(column)
        @mycombomodel=Gtk::ListStore.new(String,String)
        @jump_to_next=false
        super()
        set_model(@mycombomodel)
        set_text_column(1)
        set_has_entry(false)
        
        set_ellipsize(column.pango_ellipsize)
        set_ellipsize_set(true)
        set_mode(Gtk::CellRenderer::MODE_EDITABLE)

        signal_connect("edited"){|me,path,new_text|
                if selected_combo_value=get_value_from_text(new_text)
                        view.list_model.change_value_of_path(path,column.header['data'],selected_combo_value)
                end
                if @jump_to_next
                        if next_col=view.next_editable_column(column)
                                view.set_cursor(view.list_model.iter_at_cursor.path,next_col,true)#  if next_col.header["type"]!="gtk_toggle"
                        end
                        @jump_to_next=false
                end
                true
        }
        signal_connect("editing-started"){|cell, editable_widget, path|
                if !editable_widget.nil?
                        editable_widget.signal_connect("key-release-event"){|me,event|
                                @jump_to_next= Gdk::Keyval.to_name(event.keyval) == "Return"
                                false
                        }
                end
        }

end

Public Instance Methods

append_row(cdata,cdisplay) click to toggle source
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 80
def append_row(cdata,cdisplay)
        iter=@mycombomodel.append
        iter[0]=cdata
        iter[1]=cdisplay
end
caller() click to toggle source
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 90
def caller
        view
end
data() click to toggle source
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 86
def data
        @header["data"]
end
get_text_from_value(selected_combo_value) click to toggle source
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 69
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
        }
        @text=selected_combo_text
        selected_combo_text
end
get_value_from_text(selected_combo_text) click to toggle source
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 59
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
set_column(column) click to toggle source
# File lib/ListHolder/EditableList/CellRenderers/Combo.rb, line 45
def set_column(column)
      @column=column
              @view=column.list
              @model_col_num=column.colnum

              if column.header['admin'] then
                admin_rows(column.header['querySQL'],column.header['key'].include?(".")){|row| append_row(row[column.header['key']],row[column.header['display']])}
                else
                rows(column.header['querySQL'],column.header['key'].include?(".")){|row| append_row(row[column.header['key']],row[column.header['display']])}
              end unless column.header['querySQL'].length == 0

              set_editable(column.header['editable'])
end