libui_paradise 0.2.49 → 0.4.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +405 -259
  3. data/bin/libui_message +7 -0
  4. data/doc/README.gen +356 -131
  5. data/doc/todo/todo.md +14 -5
  6. data/lib/libui_paradise/autoinclude.rb +2 -1
  7. data/lib/libui_paradise/base/base.rb +51 -62
  8. data/lib/libui_paradise/base_module/base_module.rb +1514 -0
  9. data/lib/libui_paradise/colours/colours.rb +14 -2
  10. data/lib/libui_paradise/domain_specific_language/README.md +6 -0
  11. data/lib/libui_paradise/examples/complex/002_tabs_example.rb +1 -2
  12. data/lib/libui_paradise/examples/complex/003_open_file_button_example.rb +3 -5
  13. data/lib/libui_paradise/examples/complex/006_coloured_boxes_example.rb +2 -2
  14. data/lib/libui_paradise/examples/complex/007_slider_example.rb +10 -4
  15. data/lib/libui_paradise/examples/complex/008_radio_button_example.rb +2 -2
  16. data/lib/libui_paradise/examples/complex/009_separator_example.rb +2 -2
  17. data/lib/libui_paradise/examples/complex/010_table_example.rb +139 -49
  18. data/lib/libui_paradise/examples/complex/011_two_buttons_showing_how_to_enable_and_disable_them.rb +2 -1
  19. data/lib/libui_paradise/examples/complex/012_password_entry_example.rb +1 -1
  20. data/lib/libui_paradise/examples/complex/013_form_example.rb +1 -1
  21. data/lib/libui_paradise/examples/complex/014_text_example.rb +1 -1
  22. data/lib/libui_paradise/examples/complex/015_text_view_example.rb +4 -4
  23. data/lib/libui_paradise/examples/complex/016_grid_example.rb +20 -11
  24. data/lib/libui_paradise/examples/complex/017_unicode_text_example.rb +2 -2
  25. data/lib/libui_paradise/examples/complex/018_spinbutton_example.rb +1 -1
  26. data/lib/libui_paradise/examples/complex/019_combo_box_example.rb +1 -1
  27. data/lib/libui_paradise/examples/complex/020_checkbox_example.rb +5 -5
  28. data/lib/libui_paradise/examples/complex/021_font_example.rb +4 -3
  29. data/lib/libui_paradise/examples/complex/022_simple_notepad_example.rb +3 -3
  30. data/lib/libui_paradise/examples/complex/023_msg_box_error.rb +5 -5
  31. data/lib/libui_paradise/examples/complex/024_parse_config_file_example.rb +2 -2
  32. data/lib/libui_paradise/examples/complex/025_colour_button.rb +1 -1
  33. data/lib/libui_paradise/examples/complex/026_basic_table_image.rb +5 -8
  34. data/lib/libui_paradise/examples/complex/027_basic_button_example.rb +3 -3
  35. data/lib/libui_paradise/examples/complex/028_try_for_automatic_button_press_event_after_a_delay.rb +4 -5
  36. data/lib/libui_paradise/examples/complex/029_progressbar_example.rb +4 -5
  37. data/lib/libui_paradise/examples/complex/030_entry_responds_to_comment_as_synonymous_to_the_enter_key_pressed_example.rb +5 -6
  38. data/lib/libui_paradise/examples/complex/031_notification_functionality_example.rb +3 -2
  39. data/lib/libui_paradise/examples/complex/032_simple_window_example.rb +2 -1
  40. data/lib/libui_paradise/examples/complex/033_daemonize_and_exit_after_delay_example.rb +3 -2
  41. data/lib/libui_paradise/examples/complex/034_bold_text_example.rb +115 -0
  42. data/lib/libui_paradise/examples/complex/035_parse_into_table_example.rb +109 -0
  43. data/lib/libui_paradise/examples/simple/001_open_file_example.rb +1 -1
  44. data/lib/libui_paradise/examples/simple/002_histogram_example.rb +6 -6
  45. data/lib/libui_paradise/examples/simple/003_fancy_text_example.rb +80 -43
  46. data/lib/libui_paradise/examples/simple/005_text_drawing_example.rb +11 -11
  47. data/lib/libui_paradise/examples/simple/007_control_gallery.rb +21 -14
  48. data/lib/libui_paradise/examples/simple/009_spectrum.rb +7 -1
  49. data/lib/libui_paradise/examples/simple/010_font_button.rb +31 -0
  50. data/lib/libui_paradise/examples/simple/011_simple_notepad.rb +24 -0
  51. data/lib/libui_paradise/examples/simple/012_table_example.rb +71 -0
  52. data/lib/libui_paradise/examples/simple/013_scrolling_pane_example.rb +28 -0
  53. data/lib/libui_paradise/examples/simple/014_simple_entry_example.rb +30 -0
  54. data/lib/libui_paradise/examples/simple/015_slider_example.rb +32 -0
  55. data/lib/libui_paradise/fiddle/{pointer.rb → fiddle.rb} +768 -615
  56. data/lib/libui_paradise/generic_window/generic_window.rb +1 -1
  57. data/lib/libui_paradise/images/README.md +5 -2
  58. data/lib/libui_paradise/libui_classes/button.rb +31 -0
  59. data/lib/libui_paradise/libui_classes/entry.rb +35 -0
  60. data/lib/libui_paradise/libui_classes/grid.rb +14 -23
  61. data/lib/libui_paradise/libui_classes/hbox.rb +39 -0
  62. data/lib/libui_paradise/libui_classes/libui_classes.rb +9 -1595
  63. data/lib/libui_paradise/libui_classes/msg_box.rb +121 -0
  64. data/lib/libui_paradise/libui_classes/msg_box_error.rb +41 -0
  65. data/lib/libui_paradise/libui_classes/slider.rb +28 -0
  66. data/lib/libui_paradise/libui_classes/spinbox.rb +48 -0
  67. data/lib/libui_paradise/libui_classes/vbox.rb +38 -0
  68. data/lib/libui_paradise/project/project.rb +6 -1
  69. data/lib/libui_paradise/prototype/prototype.rb +8 -10
  70. data/lib/libui_paradise/requires/require_the_libui_classes.rb +2 -2
  71. data/lib/libui_paradise/requires/require_the_libui_paradise_project.rb +5 -3
  72. data/lib/libui_paradise/toplevel_methods/add_to_the_registered_widgets.rb +70 -0
  73. data/lib/libui_paradise/toplevel_methods/hash_fiddle_pointer_widgets.rb +37 -0
  74. data/lib/libui_paradise/toplevel_methods/toplevel_counters.rb +83 -0
  75. data/lib/libui_paradise/toplevel_methods/toplevel_methods.rb +792 -0
  76. data/lib/libui_paradise/version/version.rb +2 -2
  77. data/lib/libui_paradise.rb +0 -0
  78. data/libui_paradise.gemspec +5 -4
  79. data/test/testing_generic_window.rb +2 -0
  80. metadata +35 -30
  81. data/doc/SNIPPETS.md +0 -94
  82. data/lib/libui_paradise/extensions/counters.rb +0 -58
  83. data/lib/libui_paradise/extensions/extensions.rb +0 -29
  84. data/lib/libui_paradise/extensions/hash_fiddle_pointer_widgets.rb +0 -150
  85. data/lib/libui_paradise/extensions/misc.rb +0 -754
  86. data/lib/libui_paradise/libui_classes/box.rb +0 -156
  87. data/lib/libui_paradise/toplevel_methods/misc.rb +0 -13
@@ -7,11 +7,11 @@ module LibuiParadise
7
7
  # ========================================================================= #
8
8
  # === VERSION
9
9
  # ========================================================================= #
10
- VERSION = '0.2.49'
10
+ VERSION = '0.4.13'
11
11
 
12
12
  # ========================================================================= #
13
13
  # === LAST_UPDATE
14
14
  # ========================================================================= #
15
- LAST_UPDATE = '09.10.2022'
15
+ LAST_UPDATE = '28.12.2023'
16
16
 
17
17
  end
File without changes
@@ -15,15 +15,16 @@ Gem::Specification.new { |s|
15
15
  This project bundles together some custom bindings and code to the
16
16
  official (upstream) ruby-libui interface. ruby-libui, in turn,
17
17
  makes available code written in the libui project. You can find
18
- the libui project here: https://github.com/andlabs/libui
19
- and the ruby-libui bindings maintained by kojix2 here:
20
- https://rubygems.org/gems/libui
18
+ the libui project here: https://github.com/andlabs/libui and
19
+ the ruby-libui bindings maintained by kojix2 here:
20
+
21
+ https://rubygems.org/gems/libui
21
22
 
22
23
  For more documentation about the libui_paradise gem, please have a look
23
24
  at the official homepage of this gem at rubygems.org, at its
24
25
  documentation/ link on the bottom right hand side (or just use
25
26
  this link directly:
26
- https://www.rubydoc.info/gems/libui_paradise/
27
+ https://www.rubydoc.info/gems/libui_paradise/
27
28
  )
28
29
 
29
30
  EOF
@@ -4,6 +4,8 @@
4
4
  # =========================================================================== #
5
5
  require 'libui_paradise'
6
6
 
7
+ LibuiParadise.init
8
+
7
9
  text1 = LibuiParadise.text('Some text here.')
8
10
  text2 = LibuiParadise.text('Some text there.')
9
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libui_paradise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.49
4
+ version: 0.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert A. Heiler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-09 00:00:00.000000000 Z
11
+ date: 2023-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libui
@@ -24,34 +24,26 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description: |2+
28
-
29
- This project bundles together some custom bindings and code to the
30
- official (upstream) ruby-libui interface. ruby-libui, in turn,
31
- makes available code written in the libui project. You can find
32
- the libui project here: https://github.com/andlabs/libui
33
- and the ruby-libui bindings maintained by kojix2 here:
34
- https://rubygems.org/gems/libui
35
-
36
- For more documentation about the libui_paradise gem, please have a look
37
- at the official homepage of this gem at rubygems.org, at its
38
- documentation/ link on the bottom right hand side (or just use
39
- this link directly:
40
- https://www.rubydoc.info/gems/libui_paradise/
41
- )
42
-
27
+ description: "\nThis project bundles together some custom bindings and code to the\nofficial
28
+ (upstream) ruby-libui interface. ruby-libui, in turn,\nmakes available code written
29
+ in the libui project. You can find\nthe libui project here: https://github.com/andlabs/libui
30
+ and \nthe ruby-libui bindings maintained by kojix2 here:\n\n https://rubygems.org/gems/libui\n\nFor
31
+ more documentation about the libui_paradise gem, please have a look\nat the official
32
+ homepage of this gem at rubygems.org, at its\ndocumentation/ link on the bottom
33
+ right hand side (or just use\nthis link directly:\n https://www.rubydoc.info/gems/libui_paradise/\n)\n\n"
43
34
  email: shevy@inbox.lt
44
35
  executables: []
45
36
  extensions: []
46
37
  extra_rdoc_files: []
47
38
  files:
48
39
  - README.md
40
+ - bin/libui_message
49
41
  - doc/README.gen
50
- - doc/SNIPPETS.md
51
42
  - doc/todo/todo.md
52
43
  - lib/libui_paradise.rb
53
44
  - lib/libui_paradise/autoinclude.rb
54
45
  - lib/libui_paradise/base/base.rb
46
+ - lib/libui_paradise/base_module/base_module.rb
55
47
  - lib/libui_paradise/colours/colours.rb
56
48
  - lib/libui_paradise/domain_specific_language/README.md
57
49
  - lib/libui_paradise/domain_specific_language/button.yml
@@ -89,6 +81,8 @@ files:
89
81
  - lib/libui_paradise/examples/complex/031_notification_functionality_example.rb
90
82
  - lib/libui_paradise/examples/complex/032_simple_window_example.rb
91
83
  - lib/libui_paradise/examples/complex/033_daemonize_and_exit_after_delay_example.rb
84
+ - lib/libui_paradise/examples/complex/034_bold_text_example.rb
85
+ - lib/libui_paradise/examples/complex/035_parse_into_table_example.rb
92
86
  - lib/libui_paradise/examples/simple/001_open_file_example.rb
93
87
  - lib/libui_paradise/examples/simple/002_histogram_example.rb
94
88
  - lib/libui_paradise/examples/simple/003_fancy_text_example.rb
@@ -98,27 +92,39 @@ files:
98
92
  - lib/libui_paradise/examples/simple/007_control_gallery.rb
99
93
  - lib/libui_paradise/examples/simple/008_basic_area_example.rb
100
94
  - lib/libui_paradise/examples/simple/009_spectrum.rb
95
+ - lib/libui_paradise/examples/simple/010_font_button.rb
96
+ - lib/libui_paradise/examples/simple/011_simple_notepad.rb
97
+ - lib/libui_paradise/examples/simple/012_table_example.rb
98
+ - lib/libui_paradise/examples/simple/013_scrolling_pane_example.rb
99
+ - lib/libui_paradise/examples/simple/014_simple_entry_example.rb
100
+ - lib/libui_paradise/examples/simple/015_slider_example.rb
101
101
  - lib/libui_paradise/examples/simple/README.md
102
102
  - lib/libui_paradise/experimental/dsl.rb
103
- - lib/libui_paradise/extensions/counters.rb
104
- - lib/libui_paradise/extensions/extensions.rb
105
- - lib/libui_paradise/extensions/hash_fiddle_pointer_widgets.rb
106
- - lib/libui_paradise/extensions/misc.rb
107
- - lib/libui_paradise/fiddle/pointer.rb
103
+ - lib/libui_paradise/fiddle/fiddle.rb
108
104
  - lib/libui_paradise/generic_window/README.md
109
105
  - lib/libui_paradise/generic_window/generic_window.rb
110
106
  - lib/libui_paradise/images/LIBUI_PARADISE_LOGO.png
111
107
  - lib/libui_paradise/images/README.md
112
108
  - lib/libui_paradise/images/form_example.png
113
- - lib/libui_paradise/libui_classes/box.rb
109
+ - lib/libui_paradise/libui_classes/button.rb
110
+ - lib/libui_paradise/libui_classes/entry.rb
114
111
  - lib/libui_paradise/libui_classes/grid.rb
112
+ - lib/libui_paradise/libui_classes/hbox.rb
115
113
  - lib/libui_paradise/libui_classes/libui_classes.rb
114
+ - lib/libui_paradise/libui_classes/msg_box.rb
115
+ - lib/libui_paradise/libui_classes/msg_box_error.rb
116
+ - lib/libui_paradise/libui_classes/slider.rb
117
+ - lib/libui_paradise/libui_classes/spinbox.rb
118
+ - lib/libui_paradise/libui_classes/vbox.rb
116
119
  - lib/libui_paradise/project/project.rb
117
120
  - lib/libui_paradise/prototype/README.md
118
121
  - lib/libui_paradise/prototype/prototype.rb
119
122
  - lib/libui_paradise/requires/require_the_libui_classes.rb
120
123
  - lib/libui_paradise/requires/require_the_libui_paradise_project.rb
121
- - lib/libui_paradise/toplevel_methods/misc.rb
124
+ - lib/libui_paradise/toplevel_methods/add_to_the_registered_widgets.rb
125
+ - lib/libui_paradise/toplevel_methods/hash_fiddle_pointer_widgets.rb
126
+ - lib/libui_paradise/toplevel_methods/toplevel_counters.rb
127
+ - lib/libui_paradise/toplevel_methods/toplevel_methods.rb
122
128
  - lib/libui_paradise/version/version.rb
123
129
  - libui_paradise.gemspec
124
130
  - test/testing_generic_window.rb
@@ -139,18 +145,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
145
  requirements:
140
146
  - - ">="
141
147
  - !ruby/object:Gem::Version
142
- version: 3.3.7
148
+ version: 3.5.3
143
149
  requirements: []
144
- rubygems_version: 3.3.7
150
+ rubygems_version: 3.5.3
145
151
  signing_key:
146
152
  specification_version: 4
147
153
  summary: 'This project bundles together some custom bindings and code to the official
148
154
  (upstream) ruby-libui interface. ruby-libui, in turn, makes available code written
149
155
  in the libui project. You can find the libui project here: https://github.com/andlabs/libui
150
- and the ruby-libui bindings maintained by kojix2 here: https://rubygems.org/gems/libui For
156
+ and the ruby-libui bindings maintained by kojix2 here: https://rubygems.org/gems/libui For
151
157
  more documentation about the libui_paradise gem, please have a look at the official
152
158
  homepage of this gem at rubygems.org, at its documentation/ link on the bottom right
153
159
  hand side (or just use this link directly: https://www.rubydoc.info/gems/libui_paradise/
154
160
  )'
155
161
  test_files: []
156
- ...
data/doc/SNIPPETS.md DELETED
@@ -1,94 +0,0 @@
1
- # How to add a new main window:
2
- # width, height, hasMenubar
3
- main_window = UI.new_window('hello world', 300, 200, 1)
4
-
5
- Source code:
6
-
7
- https://raw.githubusercontent.com/andlabs/libui/master/unix/window.c
8
-
9
- # How to add a libui-widget to the main window / Designate a child widget:
10
-
11
- UI.window_set_child(main_window, button)
12
-
13
- # Act on closing-event (on quit tag):
14
-
15
- UI.window_on_closing(main_window) {
16
- puts 'Bye Bye'
17
- UI.control_destroy(main_window)
18
- UI.quit
19
- 0
20
- }
21
- # Or simpler:
22
- close_properly(main_window)
23
-
24
- # Add the window to the main UI:
25
-
26
- UI.control_show(main_window)
27
- main_window.show_the_controls # Or use this one here.
28
-
29
-
30
- # Add a checkbox (checkbox tag, checkbutton)
31
-
32
- checkbox = UI.new_checkbox('Checkbox') # or ui_checkbox
33
- checkbox_toggle_callback = proc { |pointer|
34
- checked = UI.checkbox_checked(pointer) == 1
35
- UI.window_set_title(MAIN_WINDOW, "Checkbox is #{checked}")
36
- UI.checkbox_set_text(pointer, "I am the checkbox (#{checked})")
37
- 0
38
- }
39
- UI.checkbox_on_toggled(checkbox, checkbox_toggle_callback, nil)
40
- UI.box_append(inner, checkbox, 0)
41
-
42
- To set it checked:
43
-
44
- checkbox.set_checked(1)
45
-
46
- To query its state:
47
-
48
- checked = UI.checkbox_checked(pointer) == 1
49
-
50
- # And the control:
51
-
52
- UI.control_show(main_window)
53
-
54
- # Using a text-entry (ui entry tag):
55
-
56
- text_entry = UI.new_entry
57
- UI.entry_set_text(text_entry, 'Please enter your feelings')
58
- UI.entry_on_changed(text_entry, text_changed_callback, nil)
59
-
60
- # To set this on a "multiline entry", aka spanning several
61
- # rows, do use:
62
- UI.multiline_entry_set_text(entry1, 'Yo there')
63
- ui_text_view # an alias used in libui_paradise
64
-
65
- text1 = UI.entry_text(entry1) # Obtain text. You may have to call .to_s on it, to guarantee the String.
66
- UI.multiline_entry_text # Obtain the text from a multiline entry.
67
-
68
- # Create a combobox (combo tag, combobox tag):
69
-
70
- combobox_selected_callback = proc { |ptr|
71
- puts "New combobox selection: #{UI.combobox_selected(ptr)}"
72
- }
73
- cbox = UI.new_combobox
74
- UI.combobox_append(cbox, 'combobox Item 1')
75
- UI.combobox_append(cbox, 'combobox Item 2')
76
- UI.combobox_append(cbox, 'combobox Item 3')
77
- UI.box_append(inner, cbox, 0)
78
- UI.combobox_on_selected(cbox, combobox_selected_callback, nil)
79
-
80
- # Or more concise:
81
- combo_box = UI.combobox {
82
- ['combobox Item 1', 'combobox Item 2', 'combobox Item 3']
83
- }
84
-
85
-
86
- # Add content to an editable combox:
87
-
88
- UI.append() # .append() adds the named item to the end of the EditableCombobox.
89
-
90
- # How to build a menu-interface (menu tag):
91
-
92
- help_menu = UI.new_menu('Help')
93
- version_item = UI.menu_append_item(help_menu, 'Version')
94
-
@@ -1,58 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'libui_paradise/extensions/counters.rb
6
- # =========================================================================== #
7
- module LibuiParadise
8
-
9
- # =========================================================================== #
10
- # === @counter_left
11
- # =========================================================================== #
12
- @counter_left = 0
13
-
14
- # =========================================================================== #
15
- # === LibuiParadise.counter_left?
16
- # =========================================================================== #
17
- def self.counter_left?
18
- @counter_left
19
- end; self.instance_eval { alias counter_left counter_left? } # === LibuiParadise.counter_left
20
- self.instance_eval { alias left_counter counter_left? } # === LibuiParadise.left_counter
21
- self.instance_eval { alias left_counter? counter_left? } # === LibuiParadise.left_counter?
22
-
23
- # =========================================================================== #
24
- # === LibuiParadise.counter_left=
25
- # =========================================================================== #
26
- def self.counter_left=(i = 1)
27
- @counter_left = i
28
- end
29
-
30
- # =========================================================================== #
31
- # === @counter_top
32
- # =========================================================================== #
33
- @counter_top = 0
34
-
35
- # =========================================================================== #
36
- # === LibuiParadise.counter_top?
37
- # =========================================================================== #
38
- def self.counter_top?
39
- @counter_top
40
- end; self.instance_eval { alias counter_top counter_top? } # === LibuiParadise.counter_top
41
- self.instance_eval { alias top_counter counter_top? } # === LibuiParadise.top_counter
42
- self.instance_eval { alias top_counter? counter_top? } # === LibuiParadise.top_counter?
43
-
44
- # =========================================================================== #
45
- # === LibuiParadise.counter_top=
46
- # =========================================================================== #
47
- def self.counter_top=(i = 1)
48
- @counter_top = i
49
- end
50
-
51
- # =========================================================================== #
52
- # === LibuiParadise.counters?
53
- # =========================================================================== #
54
- def self.counters?
55
- return [@counter_left, @counter_top]
56
- end
57
-
58
- end
@@ -1,29 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # === LibuiParadise::Extensions
6
- #
7
- # This .rb file is primarly used to "extend" libui in a convenient
8
- # way. That way we only have to require this file and the rest will
9
- # be set up correctly for us.
10
- # =========================================================================== #
11
- # require 'libui_paradise/extensions/extensions.rb
12
- # include Libuiparadise::Extensions
13
- # =========================================================================== #
14
- require 'libui' # Mandatory require-call.
15
-
16
- module LibuiParadise
17
-
18
- module Extensions # === LibuiParadise::Extensions
19
-
20
- require 'libui_paradise/fiddle/pointer.rb'
21
- require 'libui_paradise/extensions/hash_fiddle_pointer_widgets.rb'
22
- require 'libui_paradise/extensions/misc.rb'
23
- require 'libui_paradise/libui_classes/libui_classes.rb'
24
-
25
- end; end
26
-
27
- alias e puts
28
-
29
- LibuiParadise::Extensions.initializer # Make UI known here.
@@ -1,150 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'libui_paradise/extensions/hash_fiddle_pointer_widgets.rb'
6
- # =========================================================================== #
7
- module LibuiParadise
8
-
9
- module Extensions # === LibuiParadise::Extensions
10
-
11
- # ========================================================================= #
12
- # === @hash_fiddle_pointer_widgets
13
- #
14
- # This hash will contain all widgets, via pointer.
15
- # ========================================================================= #
16
- @hash_fiddle_pointer_widgets = {}
17
-
18
- # ========================================================================= #
19
- # === LibuiParadise::Extensions.hash_fiddle_pointer_widgets?
20
- # ========================================================================= #
21
- def self.hash_fiddle_pointer_widgets?
22
- @hash_fiddle_pointer_widgets
23
- end
24
-
25
- # ========================================================================= #
26
- # === main_hash?
27
- #
28
- # Access the main hash defined above.
29
- # ========================================================================= #
30
- def main_hash?
31
- ::LibuiParadise::Extensions.hash_fiddle_pointer_widgets?
32
- end; alias toplevel_hash? main_hash? # === toplevel_hash?
33
-
34
- # ========================================================================= #
35
- # === LibuiParadise::Extensions.register_this_fiddle_pointer_widget
36
- #
37
- # This method registers the particular widget in use.
38
- #
39
- # Every new_* method available via LibUI.new* that creates a new widget
40
- # has to be registered via this method here, by calling it.
41
- #
42
- # That way we have a main Hash that contains lots of Fiddle::Pointers
43
- # and we can, at a later time, modify these Fiddle::Pointer or call
44
- # toplevel methods with these registered pointers. This will only
45
- # work if we have registered these pointers, though, which is why
46
- # each method that creates a new libui-widget has to make use of
47
- # this method here.
48
- #
49
- # The only exception to the above rule is the main window. The
50
- # main window is always stored in the @main_window variable instead.
51
- #
52
- # Perhaps it should also use the method here, but I found it simpler
53
- # to just refer to it via @main_window or main_window?. (Note that
54
- # in future releases of the libui_paradise gem, @main_window will
55
- # probably be removed and integrated just like any other
56
- # libui-widget. But this has not been done yet, so it is retained
57
- # as-is right now.)
58
- #
59
- # The mandatory entries given to this method must be of the
60
- # following format:
61
- #
62
- # object_id -> [:the_fiddle_pointer_widget, :the_type]
63
- #
64
- # In other words, a key (as an Integer), and an Array as
65
- # its primary value.
66
- #
67
- # The object_id will be determined automatically, so it can
68
- # be omitted. It is the value that is simply returned by
69
- # calling the .object_id method, so we do not have to do
70
- # anything else here.
71
- #
72
- # The very last argument of the two-member Array should be a
73
- # symbol, such as :grid. This is automatically ensured via a
74
- # call to __method__ which returns a Symbol. That way we can
75
- # then call the correct method internally, once we know we
76
- # have a :grid or any other widget.
77
- # ========================================================================= #
78
- def self.register_this_fiddle_pointer_widget(
79
- the_fiddle_pointer_widget,
80
- the_type_of_the_widget = nil
81
- )
82
- # ======================================================================= #
83
- # Determine the object-id automatically next:
84
- # ======================================================================= #
85
- object_id_to_use = the_fiddle_pointer_widget.object_id
86
- # ======================================================================= #
87
- # Then, store it on the main Hash.
88
- # ======================================================================= #
89
- @hash_fiddle_pointer_widgets[object_id_to_use] =
90
- [
91
- the_fiddle_pointer_widget,
92
- the_type_of_the_widget
93
- ]
94
- end; self.instance_eval { alias add_to_the_registered_widgets register_this_fiddle_pointer_widget } # === LibuiParadise::Extensions.add_to_the_registered_widgets
95
-
96
- # ========================================================================= #
97
- # === LibuiParadise::Extensions.current_widget_pointer?
98
- # ========================================================================= #
99
- def self.current_widget_pointer?
100
- LibuiParadise::Extensions.hash_fiddle_pointer_widgets?.values.last.first
101
- end
102
-
103
- # ========================================================================= #
104
- # === last_pointer?
105
- #
106
- # This used to return the "current" widget pointer, but past September
107
- # 2021 this is rarely in use anymore. Use current_widget_pointer?
108
- # instead, based on the main Hash that keeps all widgets registered.
109
- # ========================================================================= #
110
- def last_pointer?
111
- LibuiParadise::Extensions.current_widget_pointer?
112
- end; alias current_pointer? last_pointer? # === current_pointer?
113
- alias current_widget_pointer? last_pointer? # === current_widget_pointer?
114
-
115
- # ========================================================================= #
116
- # === current_widget_pointer_type?
117
- # ========================================================================= #
118
- def current_widget_pointer_type?
119
- LibuiParadise::Extensions.hash_fiddle_pointer_widgets?.values.last.last
120
- end
121
-
122
- # ========================================================================= #
123
- # === register_this_fiddle_pointer_widget
124
- # ========================================================================= #
125
- def register_this_fiddle_pointer_widget(
126
- the_fiddle_pointer_widget,
127
- the_type_of_the_widget = nil
128
- )
129
- ::LibuiParadise::Extensions.register_this_fiddle_pointer_widget(
130
- the_fiddle_pointer_widget,
131
- the_type_of_the_widget
132
- )
133
- end; alias add_to_the_registered_widgets register_this_fiddle_pointer_widget # === add_to_the_registered_widgets
134
-
135
- end
136
-
137
- # ========================================================================= #
138
- # === LibuiParadise.register_this_fiddle_pointer_widget
139
- # ========================================================================= #
140
- def self.register_this_fiddle_pointer_widget(
141
- the_fiddle_pointer_widget,
142
- the_type_of_the_widget = nil
143
- )
144
- ::LibuiParadise::Extensions.register_this_fiddle_pointer_widget(
145
- the_fiddle_pointer_widget,
146
- the_type_of_the_widget
147
- )
148
- end; self.instance_eval { alias add_to_the_registered_widgets register_this_fiddle_pointer_widget } # === LibuiParadise.add_to_the_registered_widgets
149
-
150
- end