Class: Tgui::Grid

Inherits:
Container show all
Defined in:
lib/white_gold/dsl/grid.rb,
lib/white_gold/generated/tgui-abi-loader.gf.rb

Constant Summary

Constants included from ApiChild

ApiChild::API_CHILD_PREFIX

Instance Attribute Summary

Attributes inherited from Widget

#page

Attributes inherited from ExternObject

#pointer

Instance Method Summary collapse

Methods inherited from Container

#_abi_add, #_abi_focus_next_widget, #_abi_focus_previous_widget, #_abi_get, #_abi_get_child_widgets_offset, #_abi_get_focused_child, #_abi_get_focused_leaf, #_abi_get_inner_size, #_abi_get_widget_at_position, #_abi_get_widget_index, #_abi_get_widgets, #_abi_move_widget_backward, #_abi_move_widget_forward, #_abi_move_widget_to_back, #_abi_move_widget_to_front, #_abi_remove, #_abi_remove_all_widgets, #_abi_set_widget_index, #abi_pack_widget, #abi_unpack_widget, #common_widget_post_initialize, #move_at, #move_back, #move_front

Methods included from WidgetOwner

#child_methods, #common_widget_nest, #equip_child_widget

Methods included from BangDef

#def!

Methods inherited from Widget

#_abi_ask_tool_tip, #_abi_can_gain_focus, _abi_finalizer, #_abi_finish_all_animations, #_abi_get_absolute_position, #_abi_get_boolean_renderer_property, #_abi_get_color_renderer_property, #_abi_get_float_renderer_property, #_abi_get_font_renderer_property, #_abi_get_full_size, #_abi_get_mouse_cursor, #_abi_get_name, #_abi_get_outline_renderer_property, #_abi_get_position, #_abi_get_size, #_abi_get_string_renderer_property, #_abi_get_text_size, #_abi_get_text_styles_renderer_property, #_abi_get_texture_renderer_property, #_abi_get_tool_tip, _abi_get_type, _abi_get_unshared, #_abi_get_widget_name, #_abi_hide_with_effect, #_abi_is_animation_playing, #_abi_is_container, #_abi_is_enabled, #_abi_is_focusable, #_abi_is_focused, #_abi_is_mouse_down, #_abi_is_visible, #_abi_key_pressed, #_abi_left_mouse_pressed, #_abi_left_mouse_released, #_abi_mouse_moved, #_abi_move_to_back, #_abi_move_to_front, #_abi_move_with_animation, #_abi_on_animation_finish, #_abi_on_focus, #_abi_on_mouse_enter, #_abi_on_mouse_leave, #_abi_on_position_change, #_abi_on_show_effect_finish, #_abi_on_size_change, #_abi_on_unfocus, #_abi_resize_with_animation, #_abi_right_mouse_pressed, #_abi_right_mouse_released, #_abi_scrolled, #_abi_set_boolean_renderer_property, #_abi_set_color_renderer_property, #_abi_set_enabled, #_abi_set_float_renderer_property, #_abi_set_focusable, #_abi_set_focused, #_abi_set_font_renderer_property, #_abi_set_height, #_abi_set_mouse_cursor, #_abi_set_outline_renderer_property, #_abi_set_position, #_abi_set_renderer, #_abi_set_size, #_abi_set_string_renderer_property, #_abi_set_text_size, #_abi_set_text_styles_renderer_property, #_abi_set_texture_renderer_property, #_abi_set_tool_tip, #_abi_set_visible, #_abi_set_widget_name, #_abi_set_width, #_abi_show_with_effect, #_abi_text_entered, api_attr, finalizer, #flags=, #height, #hide, #method_missing, #pack_animation_time, #renderer=, #respond_to?, #self_cast_up, self_renderer, #show, #theme_comp, #visible=, #width, #window

Methods included from ApiChild

#api_child

Methods included from BangNestedCaller

#bang_method_missing, #bang_object_stack, #bang_respond_to?, #self!, #upon!

Methods inherited from ExternObject

abi_attr, abi_bit_enum, abi_def, abi_enum, #abi_pack, abi_signal, abi_static, #abi_unpack, callback_storage, callback_storage=, data_storage=, finalizer, global_callback_storage, global_callback_storage=, #initialized, self_abi_def, self_abi_def_setter

Methods included from Packer

#abi_pack, #abi_packer, #abi_packer_method_name

Methods included from Unpacker

#abi_unpack, #abi_unpacker, #abi_unpacker_method_name

Constructor Details

#initialize(*a, pointer: nil) ⇒ Grid

Returns a new instance of Grid.



1293
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1293

def initialize(*a, pointer: nil);    Abi.call_arg_map! a; super(pointer: pointer || Abi.ABI_Grid_new(*a)); initialized(); end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Tgui::Widget

Instance Method Details

#_abi_get_widget(*a) ⇒ Object



1297
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1297

def _abi_get_widget(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_getWidget(@pointer, *a); end

#_abi_get_widget_alignment(*a) ⇒ Object



1301
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1301

def _abi_get_widget_alignment(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_getWidgetAlignment(@pointer, *a); end

#_abi_get_widget_locations(*a) ⇒ Object



1302
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1302

def _abi_get_widget_locations(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_getWidgetLocations(@pointer, *a); end

#_abi_get_widget_padding(*a) ⇒ Object



1299
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1299

def _abi_get_widget_padding(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_getWidgetPadding(@pointer, *a); end

#_abi_is_auto_size(*a) ⇒ Object



1295
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1295

def _abi_is_auto_size(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_isAutoSize(@pointer, *a); end

#_abi_set_auto_size(*a) ⇒ Object



1294
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1294

def _abi_set_auto_size(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_setAutoSize(@pointer, *a); end

#_abi_set_widget_alignment(*a) ⇒ Object



1300
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1300

def _abi_set_widget_alignment(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_setWidgetAlignment(@pointer, *a); end

#_abi_set_widget_cell(*a) ⇒ Object



1296
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1296

def _abi_set_widget_cell(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_setWidgetCell(@pointer, *a); end

#_abi_set_widget_padding(*a) ⇒ Object



1298
# File 'lib/white_gold/generated/tgui-abi-loader.gf.rb', line 1298

def _abi_set_widget_padding(*a);    Abi.call_arg_map! a; Abi.ABI_Grid_setWidgetPadding(@pointer, *a); end

#add(widget, id) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
# File 'lib/white_gold/dsl/grid.rb', line 85

def add widget, id
  super
  _abi_set_widget_cell abi_pack_widget(widget), *cell
  _abi_set_widget_alignment abi_pack_widget(widget), abi_pack(Alignment, alignment) if alignment
  _abi_set_widget_padding abi_pack_widget(widget), abi_pack(Outline, *padding) if padding
  if direction == :column
    next_column false
  else
    next_row false
  end
end

#get(*keys) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/white_gold/dsl/grid.rb', line 97

def get(*keys)
  case keys
  in [Symbol]
    id = page.clubs[keys.first]&.members&.first
    id && self_cast_up(_abi_get(abi_pack_string id))
  in [Integer, Integer]
    self_cast_up(_abi_get_widget *keys)
  else
    Enumerator.new do |e|
      Array(self_get_widget_name keys).flatten.compact.uniq.each do |id|
        w = _abi_get(abi_pack_string id)
        e << self_cast_up(w) if w && !w.null?
      end
    end
  end      
end

#next_column(reset_row = true) ⇒ Object



62
63
64
65
# File 'lib/white_gold/dsl/grid.rb', line 62

def next_column reset_row = true
  c = cell
  self.cell = [reset_row ? 0 : c[0], c[1] + 1]
end

#next_row(reset_column = true) ⇒ Object



53
54
55
56
# File 'lib/white_gold/dsl/grid.rb', line 53

def next_row reset_column = true
  c = cell
  self.cell = [c[0] + 1, reset_column ? 0 : c[1]]
end

#self_get_widget_name(a) ⇒ Object

internal



116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/white_gold/dsl/grid.rb', line 116

def self_get_widget_name a
  case a
  in Widget
    a.name
  in [Integer, Integer]
    w = _abi_get_widget *a
    return nil if w.null?
    self_cast_up(w, equip: false).name
  in Enumerable
    a.map{ self_get_widget_name _1 }.flatten
  else
    page.clubs[a]&.members
  end
end

#widgetsObject



75
76
77
78
79
80
81
82
83
# File 'lib/white_gold/dsl/grid.rb', line 75

def widgets
  widgets = {}
  block_caller = Fiddle::Closure::BlockCaller.new(0, 
    [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]) do |pointer, type, row, column|
    widgets[[row, column]] = self_cast_up(pointer, abi_unpack_string(type))
  end
  _abi_get_widget_locations block_caller
  return widgets
end