class Glimmer::Tk::ListProxy

Custom list widget implementation

Public Class Methods

new(underscored_widget_name, parent_proxy, args) click to toggle source
Calls superclass method
# File lib/glimmer/tk/list_proxy.rb, line 28
def initialize(underscored_widget_name, parent_proxy, args)
  super('treeview', parent_proxy, args)
  @tk.show = 'tree'
end

Public Instance Methods

widget_custom_attribute_mapping() click to toggle source
# File lib/glimmer/tk/list_proxy.rb, line 33
def widget_custom_attribute_mapping
  @widget_custom_attribute_mapping ||= {
    ::Tk::Tile::Treeview => {
      'items' => {
        getter: {name: 'items', invoker: lambda { |widget, args| tk.children('').map(&:text) }},
        setter: {name: 'items=', invoker: lambda { |widget, args|
          @tk.delete @tk.children('')
          args.first.each do |child|
            @tk.insert('', 'end', :text => child)
          end
        }},
      },
      'selection' => {
        getter: {name: 'selection', invoker: lambda { |widget, args| @tk.selection.map(&:text) }},
        setter: {name: 'selection=', invoker: lambda { |widget, args|
          selection_args = args.first.is_a?(Array) ? args.first : [args.first]
          selection_items = selection_args.map do |arg|
            @tk.children('').detect {|item| item.text == arg}
          end
          @tk.selection_set(*selection_items)
        }},
      },
    },
  }
end