Class: TkWrapper::Widgets::Base::Manager

Inherits:
Object
  • Object
show all
Defined in:
lib/widgets/base/manager.rb

Constant Summary collapse

ComparatorItemStore =
TkWrapper::Widgets::Base::ComparatorItemStore
WidgetStore =
TkWrapper::Widgets::Base::WidgetStore

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeManager

Returns a new instance of Manager.



12
13
14
15
16
# File 'lib/widgets/base/manager.rb', line 12

def initialize
  @configurations = ComparatorItemStore.new
  @modifications = ComparatorItemStore.new
  @widgets = WidgetStore.new
end

Instance Attribute Details

#widgetsObject (readonly)

Returns the value of attribute widgets.



10
11
12
# File 'lib/widgets/base/manager.rb', line 10

def widgets
  @widgets
end

Instance Method Details

#add_configuration(comparator, configuration) ⇒ Object



24
25
26
# File 'lib/widgets/base/manager.rb', line 24

def add_configuration(comparator, configuration)
  @configurations.push(comparator, configuration)
end

#add_configurations(matcher = nil, configuration = nil, **configurations) ⇒ Object Also known as: config



18
19
20
21
22
# File 'lib/widgets/base/manager.rb', line 18

def add_configurations(matcher = nil, configuration = nil, **configurations)
  add_configuration(matcher, configuration) if configuration

  configurations.each { |mat, cfg| add_configuration(mat, cfg) }
end

#add_modification(matcher, &callback) ⇒ Object Also known as: modify



28
29
30
# File 'lib/widgets/base/manager.rb', line 28

def add_modification(matcher, &callback)
  @modifications.push(matcher, callback)
end

#configurations(widget) ⇒ Object



32
33
34
35
# File 'lib/widgets/base/manager.rb', line 32

def configurations(widget)
  config_list = @configurations.items_and_matches_for_widget(widget)
  config_list.map { |configs| configs[:items] }.flatten(1)
end

#configure(widget) ⇒ Object



46
47
48
# File 'lib/widgets/base/manager.rb', line 46

def configure(widget)
  widget.config.merge(*configurations(widget))
end

#execute_modifications(widget) ⇒ Object



37
38
39
40
41
42
43
44
# File 'lib/widgets/base/manager.rb', line 37

def execute_modifications(widget)
  item_list = @modifications.items_and_matches_for_widget(widget)
  item_list.each do |items|
    items[:items].each do |callback|
      callback.call(widget, items[:match])
    end
  end
end

#tk_widget(id) ⇒ Object



50
51
52
# File 'lib/widgets/base/manager.rb', line 50

def tk_widget(id)
  @widgets[id].tk_widget
end