Module: Glimmer::LibUI

Defined in:
lib/glimmer/libui.rb,
lib/glimmer/libui/shape.rb,
lib/glimmer/libui/parent.rb,
lib/glimmer/libui/shape/arc.rb,
lib/glimmer/libui/shape/line.rb,
lib/glimmer/libui/shape/bezier.rb,
lib/glimmer/libui/shape/figure.rb,
lib/glimmer/libui/shape/square.rb,
lib/glimmer/libui/control_proxy.rb,
lib/glimmer/libui/shape/rectangle.rb,
lib/glimmer/libui/control_proxy/box.rb,
lib/glimmer/libui/control_proxy/column.rb,
lib/glimmer/libui/control_proxy/area_proxy.rb,
lib/glimmer/libui/control_proxy/form_proxy.rb,
lib/glimmer/libui/control_proxy/grid_proxy.rb,
lib/glimmer/libui/control_proxy/menu_proxy.rb,
lib/glimmer/libui/control_proxy/path_proxy.rb,
lib/glimmer/libui/control_proxy/dual_column.rb,
lib/glimmer/libui/control_proxy/entry_proxy.rb,
lib/glimmer/libui/control_proxy/group_proxy.rb,
lib/glimmer/libui/control_proxy/image_proxy.rb,
lib/glimmer/libui/control_proxy/label_proxy.rb,
lib/glimmer/libui/control_proxy/message_box.rb,
lib/glimmer/libui/control_proxy/table_proxy.rb,
lib/glimmer/libui/control_proxy/button_proxy.rb,
lib/glimmer/libui/control_proxy/matrix_proxy.rb,
lib/glimmer/libui/control_proxy/window_proxy.rb,
lib/glimmer/libui/control_proxy/transformable.rb,
lib/glimmer/libui/control_proxy/checkbox_proxy.rb,
lib/glimmer/libui/control_proxy/combobox_proxy.rb,
lib/glimmer/libui/control_proxy/tab_item_proxy.rb,
lib/glimmer/libui/control_proxy/editable_column.rb,
lib/glimmer/libui/control_proxy/menu_item_proxy.rb,
lib/glimmer/libui/control_proxy/image_part_proxy.rb,
lib/glimmer/libui/control_proxy/enableable_column.rb,
lib/glimmer/libui/control_proxy/font_button_proxy.rb,
lib/glimmer/libui/control_proxy/color_button_proxy.rb,
lib/glimmer/libui/control_proxy/radio_buttons_proxy.rb,
lib/glimmer/libui/control_proxy/multiline_entry_proxy.rb,
lib/glimmer/libui/control_proxy/box/vertical_box_proxy.rb,
lib/glimmer/libui/control_proxy/date_time_picker_proxy.rb,
lib/glimmer/libui/control_proxy/editable_combobox_proxy.rb,
lib/glimmer/libui/control_proxy/box/horizontal_box_proxy.rb,
lib/glimmer/libui/control_proxy/column/text_column_proxy.rb,
lib/glimmer/libui/control_proxy/column/image_column_proxy.rb,
lib/glimmer/libui/control_proxy/message_box/msg_box_proxy.rb,
lib/glimmer/libui/control_proxy/column/button_column_proxy.rb,
lib/glimmer/libui/control_proxy/column/checkbox_column_proxy.rb,
lib/glimmer/libui/control_proxy/column/image_text_column_proxy.rb,
lib/glimmer/libui/control_proxy/entry_proxy/search_entry_proxy.rb,
lib/glimmer/libui/control_proxy/area_proxy/scrolling_area_proxy.rb,
lib/glimmer/libui/control_proxy/message_box/msg_box_error_proxy.rb,
lib/glimmer/libui/control_proxy/column/progress_bar_column_proxy.rb,
lib/glimmer/libui/control_proxy/entry_proxy/password_entry_proxy.rb,
lib/glimmer/libui/control_proxy/column/checkbox_text_column_proxy.rb,
lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb,
lib/glimmer/libui/control_proxy/menu_item_proxy/about_menu_item_proxy.rb,
lib/glimmer/libui/control_proxy/menu_item_proxy/check_menu_item_proxy.rb,
lib/glimmer/libui/control_proxy/date_time_picker_proxy/date_picker_proxy.rb,
lib/glimmer/libui/control_proxy/date_time_picker_proxy/time_picker_proxy.rb,
lib/glimmer/libui/control_proxy/menu_item_proxy/separator_menu_item_proxy.rb,
lib/glimmer/libui/control_proxy/menu_item_proxy/preferences_menu_item_proxy.rb,
lib/glimmer/libui/control_proxy/multiline_entry_proxy/non_wrapping_multiline_entry_proxy.rb

Defined Under Namespace

Modules: Parent, Transformable Classes: ControlProxy, Shape

Class Method Summary collapse

Class Method Details

.boolean_to_integer(bool, allow_nil: true) ⇒ Object



29
30
31
# File 'lib/glimmer/libui.rb', line 29

def boolean_to_integer(bool, allow_nil: true)
  bool.nil? ? (allow_nil ? nil : 0) : (bool ? 1 : 0)
end

.enum_symbol_to_value(enum_name, enum_symbol, default_index: 0) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'lib/glimmer/libui.rb', line 98

def enum_symbol_to_value(enum_name, enum_symbol, default_index: 0)
  if enum_symbol.is_a?(Integer)
    enum_symbol
  elsif enum_symbols(enum_name).include?(enum_symbol.to_s.to_sym)
    ::LibUI.const_get("#{enum_name}_#{enum_symbol}".camelcase(:upper))
  else
    enum_symbol_to_value(enum_name, enum_symbols(enum_name)[default_index])
  end
end

.enum_symbols(enum_name) ⇒ Object

Returns ruby underscored symbols for enum values starting with enum name (camelcase, e.g. ‘ext_key’)



92
93
94
95
96
# File 'lib/glimmer/libui.rb', line 92

def enum_symbols(enum_name)
  enum_name = enum_name.to_s.underscore.to_sym
  @enum_symbols ||= {}
  @enum_symbols[enum_name] ||= ::LibUI.constants.select { |c| c.to_s.start_with?(enum_name.to_s.camelcase(:upper)) }.map { |c| c.to_s.underscore.sub("#{enum_name}_", '').to_sym }
end

.hex_to_rgb(value) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/glimmer/libui.rb', line 72

def hex_to_rgb(value)
  if value.is_a?(String)
    if !value.start_with?('0x')
      value = value.chars.map {|char| [char, char]}.flatten.join if value.length == 3
      value = "0x#{value}"
    end
    value = value.to_i(16)
  end
  if value.is_a?(Integer)
    hex_value = value
    value = {
      r: ((hex_value >> 16) & 0xFF),
      g: ((hex_value >> 8) & 0xFF),
      b: (hex_value & 0xFF),
    }
  end
  value
end

.integer_to_boolean(int, allow_nil: true) ⇒ Object



25
26
27
# File 'lib/glimmer/libui.rb', line 25

def integer_to_boolean(int, allow_nil: true)
  int.nil? ? (allow_nil ? nil : false) : int == 1
end

.interpret_color(value) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/glimmer/libui.rb', line 33

def interpret_color(value)
  if value.is_a?(Array) && value.last.is_a?(Hash)
    options = value.last
    value = value[0...-1]
  end
  value = value.first if value.is_a?(Array) && value.size == 1
  value = value.to_s if value.is_a?(Symbol)
  value = value[:color] if value.is_a?(Hash) && value[:color]
  result = if value.is_a?(Array)
    old_value = value
    value = {
      r: value[0],
      g: value[1],
      b: value[2],
    }
    value[:a] = value[3] unless value[3].nil?
    value
  elsif value.is_a?(Hash)
    old_value = value
    value = old_value.dup
    value[:r] = value.delete(:red) if value[:red]
    value[:g] = value.delete(:green) if value[:green]
    value[:b] = value.delete(:blue) if value[:blue]
    value[:a] = value.delete(:alpha) if value[:alpha]
    value
  elsif value.is_a?(String) && !value.start_with?('0x') && !value.downcase.match(/^((([1-9a-f]){6})|(([1-9a-f]){3}))$/)
    color = Color::RGB.extract_colors(value).first
    color.nil? ? {} : {
      r: color.red,
      g: color.green,
      b: color.blue,
    }
  else
    hex_to_rgb(value)
  end
  result.merge!(options) if options
  result
end