libui_paradise 0.2.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +2072 -0
  3. data/doc/README.gen +1931 -0
  4. data/doc/SNIPPETS.md +94 -0
  5. data/doc/todo/todo.md +16 -0
  6. data/lib/libui_paradise/autoinclude.rb +9 -0
  7. data/lib/libui_paradise/base/base.rb +154 -0
  8. data/lib/libui_paradise/colours/colours.rb +14 -0
  9. data/lib/libui_paradise/domain_specific_language/README.md +5 -0
  10. data/lib/libui_paradise/domain_specific_language/button.yml +7 -0
  11. data/lib/libui_paradise/examples/complex/001_hbox_example.rb +17 -0
  12. data/lib/libui_paradise/examples/complex/002_tabs_example.rb +25 -0
  13. data/lib/libui_paradise/examples/complex/003_open_file_button_example.rb +38 -0
  14. data/lib/libui_paradise/examples/complex/004_font_button.rb +41 -0
  15. data/lib/libui_paradise/examples/complex/005_search_entry_example.rb +18 -0
  16. data/lib/libui_paradise/examples/complex/006_coloured_boxes_example.rb +22 -0
  17. data/lib/libui_paradise/examples/complex/007_slider_example.rb +31 -0
  18. data/lib/libui_paradise/examples/complex/008_radio_button_example.rb +23 -0
  19. data/lib/libui_paradise/examples/complex/009_separator_example.rb +25 -0
  20. data/lib/libui_paradise/examples/complex/010_table_example.rb +55 -0
  21. data/lib/libui_paradise/examples/complex/011_two_buttons_showing_how_to_enable_and_disable_them.rb +32 -0
  22. data/lib/libui_paradise/examples/complex/012_password_entry_example.rb +29 -0
  23. data/lib/libui_paradise/examples/complex/013_form_example.rb +38 -0
  24. data/lib/libui_paradise/examples/complex/014_text_example.rb +18 -0
  25. data/lib/libui_paradise/examples/complex/015_text_view_example.rb +16 -0
  26. data/lib/libui_paradise/examples/complex/016_grid_example.rb +31 -0
  27. data/lib/libui_paradise/examples/complex/017_unicode_text_example.rb +30 -0
  28. data/lib/libui_paradise/examples/complex/018_spinbutton_example.rb +33 -0
  29. data/lib/libui_paradise/examples/complex/019_combo_box_example.rb +50 -0
  30. data/lib/libui_paradise/examples/complex/020_checkbox_example.rb +81 -0
  31. data/lib/libui_paradise/examples/complex/021_font_example.rb +115 -0
  32. data/lib/libui_paradise/examples/complex/022_simple_notepad_example.rb +25 -0
  33. data/lib/libui_paradise/examples/complex/023_msg_box_error.rb +27 -0
  34. data/lib/libui_paradise/examples/complex/024_parse_config_file_example.config +6 -0
  35. data/lib/libui_paradise/examples/complex/024_parse_config_file_example.rb +15 -0
  36. data/lib/libui_paradise/examples/complex/025_colour_button.rb +53 -0
  37. data/lib/libui_paradise/examples/complex/026_basic_table_image.rb +96 -0
  38. data/lib/libui_paradise/examples/complex/027_basic_button_example.rb +19 -0
  39. data/lib/libui_paradise/examples/complex/028_try_for_automatic_button_press_event_after_a_delay.rb +47 -0
  40. data/lib/libui_paradise/examples/complex/029_progressbar_example.rb +116 -0
  41. data/lib/libui_paradise/examples/complex/030_entry_responds_to_comment_as_synonymous_to_the_enter_key_pressed_example.rb +140 -0
  42. data/lib/libui_paradise/examples/complex/031_notification_functionality_example.rb +96 -0
  43. data/lib/libui_paradise/examples/complex/032_simple_window_example.rb +69 -0
  44. data/lib/libui_paradise/examples/complex/033_daemonize_and_exit_after_delay_example.rb +91 -0
  45. data/lib/libui_paradise/examples/simple/001_open_file_example.rb +35 -0
  46. data/lib/libui_paradise/examples/simple/002_histogram_example.rb +213 -0
  47. data/lib/libui_paradise/examples/simple/003_fancy_text_example.rb +220 -0
  48. data/lib/libui_paradise/examples/simple/004_date_time_picker.rb +52 -0
  49. data/lib/libui_paradise/examples/simple/005_text_drawing_example.rb +185 -0
  50. data/lib/libui_paradise/examples/simple/006_midi_player.rb +96 -0
  51. data/lib/libui_paradise/examples/simple/007_control_gallery.rb +191 -0
  52. data/lib/libui_paradise/examples/simple/008_basic_area_example.rb +56 -0
  53. data/lib/libui_paradise/examples/simple/009_spectrum.rb +107 -0
  54. data/lib/libui_paradise/examples/simple/README.md +7 -0
  55. data/lib/libui_paradise/experimental/dsl.rb +17 -0
  56. data/lib/libui_paradise/extensions/counters.rb +58 -0
  57. data/lib/libui_paradise/extensions/extensions.rb +29 -0
  58. data/lib/libui_paradise/extensions/hash_fiddle_pointer_widgets.rb +150 -0
  59. data/lib/libui_paradise/extensions/misc.rb +754 -0
  60. data/lib/libui_paradise/fiddle/pointer.rb +1158 -0
  61. data/lib/libui_paradise/generic_window/README.md +9 -0
  62. data/lib/libui_paradise/generic_window/generic_window.rb +79 -0
  63. data/lib/libui_paradise/images/LIBUI_PARADISE_LOGO.png +0 -0
  64. data/lib/libui_paradise/images/README.md +2 -0
  65. data/lib/libui_paradise/images/form_example.png +0 -0
  66. data/lib/libui_paradise/libui_classes/box.rb +156 -0
  67. data/lib/libui_paradise/libui_classes/grid.rb +55 -0
  68. data/lib/libui_paradise/libui_classes/libui_classes.rb +1611 -0
  69. data/lib/libui_paradise/project/project.rb +28 -0
  70. data/lib/libui_paradise/prototype/README.md +3 -0
  71. data/lib/libui_paradise/prototype/prototype.rb +107 -0
  72. data/lib/libui_paradise/requires/require_the_libui_classes.rb +29 -0
  73. data/lib/libui_paradise/requires/require_the_libui_paradise_project.rb +12 -0
  74. data/lib/libui_paradise/toplevel_methods/misc.rb +13 -0
  75. data/lib/libui_paradise/version/version.rb +17 -0
  76. data/lib/libui_paradise.rb +1 -0
  77. data/libui_paradise.gemspec +49 -0
  78. data/test/testing_generic_window.rb +20 -0
  79. metadata +156 -0
@@ -0,0 +1,9 @@
1
+ The main purpose of the class in this directory is to provide
2
+ a simplified toplevel window for the libui_paradise gem. That
3
+ way a user can directly tap into this, or use the base class
4
+ called LibuiParadise::GUI::LibUI::Base, to quickly display a
5
+ window.
6
+
7
+ I needed this functionality in September 2022 to quickly
8
+ show a "Backup has finished!" message on windows specifically,
9
+ to indicate that backup has, well - finished.
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === LibuiParadise::GenericWindow
6
+ # =========================================================================== #
7
+ # require 'libui_paradise/generic_window/generic_window.rb'
8
+ # LibuiParadise::GenericWindow.new(ARGV)
9
+ # =========================================================================== #
10
+ require 'libui_paradise/base/base.rb'
11
+
12
+ module LibuiParadise
13
+
14
+ class GenericWindow < LibuiParadise::Base # === LibuiParadise::GenericWindow
15
+
16
+ # ========================================================================= #
17
+ # === TITLE
18
+ # ========================================================================= #
19
+ TITLE = 'Generic Window'
20
+
21
+ # ========================================================================= #
22
+ # === WIDTH
23
+ # ========================================================================= #
24
+ WIDTH = 500
25
+
26
+ # ========================================================================= #
27
+ # === HEIGHT
28
+ # ========================================================================= #
29
+ HEIGHT = 300
30
+
31
+ # ========================================================================= #
32
+ # === initialize
33
+ # ========================================================================= #
34
+ def initialize(
35
+ *use_these_widgets,
36
+ &block
37
+ )
38
+ reset
39
+ # ======================================================================= #
40
+ # === Handle blocks given to this method next
41
+ # ======================================================================= #
42
+ if block_given?
43
+ yielded = yield
44
+ case yielded
45
+ # ===================================================================== #
46
+ # === :do_not_run_yet
47
+ # ===================================================================== #
48
+ when :do_not_run_yet,
49
+ :dont_run_already
50
+ run_already = false
51
+ end
52
+ end
53
+ if run_already # This is coupled to batch-adding widgets.
54
+ add_these_widgets_to_the_main_window(
55
+ use_these_widgets
56
+ )
57
+ run
58
+ end
59
+ end
60
+
61
+ # ========================================================================= #
62
+ # === reset
63
+ # ========================================================================= #
64
+ def reset
65
+ super()
66
+ end
67
+
68
+ # ========================================================================= #
69
+ # === run
70
+ # ========================================================================= #
71
+ def run
72
+ super()
73
+ end
74
+
75
+ end; end
76
+
77
+ if __FILE__ == $PROGRAM_NAME
78
+ LibuiParadise::GUI::LibUI::GenericWindow.new
79
+ end
@@ -0,0 +1,2 @@
1
+ This directory only contains the libui_paradise logo that was
2
+ created on 27.08.2021 via cfdg, gimp, kolourpaint and pngquant.
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/libui_classes/box.rb'
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.vbox (vbox tag)
13
+ #
14
+ # This method will create a vertical box.
15
+ # ========================================================================= #
16
+ def self.vbox(*optional_widgets)
17
+ _ = ::LibUI.new_vertical_box
18
+ add_to_the_registered_widgets(_, __method__)
19
+ if optional_widgets and !optional_widgets.empty?
20
+ optional_widgets.flatten.each {|this_widget| _ << this_widget }
21
+ end
22
+ return _
23
+ end; self.instance_eval { alias ui_vbox vbox } # === ui_vbox
24
+
25
+ # ========================================================================= #
26
+ # === ui_padded_vbox
27
+ #
28
+ # This method will call .is_padded on the vbox after it has been
29
+ # initialized.
30
+ # ========================================================================= #
31
+ def ui_padded_vbox(*optional_widgets)
32
+ _ = ui_vbox(optional_widgets)
33
+ _.is_padded
34
+ return _
35
+ end; alias padded_vbox ui_padded_vbox # === padded_vbox
36
+
37
+ # ========================================================================= #
38
+ # === LibuiParadise::Extensions.hbox (hbox tag)
39
+ #
40
+ # This method will create a horizontal box.
41
+ # ========================================================================= #
42
+ def self.hbox(*optional_widgets)
43
+ _ = ::LibUI.new_horizontal_box
44
+ add_to_the_registered_widgets(_, __method__)
45
+ if optional_widgets and !optional_widgets.flatten.empty?
46
+ optional_widgets.flatten.each {|this_widget|
47
+ _.add(this_widget)
48
+ }
49
+ end
50
+ return _
51
+ end; self.instance_eval { alias ui_hbox hbox } # === ui_hbox
52
+ self.instance_eval { alias create_hbox hbox } # === create_hbox
53
+
54
+ # ========================================================================= #
55
+ # === ui_hbox (hbox tag)
56
+ # ========================================================================= #
57
+ def hbox(*optional_widgets)
58
+ ::LibuiParadise::Extensions.hbox(optional_widgets)
59
+ end; alias ui_hbox hbox # === ui_hbox
60
+ alias create_hbox hbox # === create_hbox
61
+ alias libui_hbox hbox # === libui_hbox
62
+
63
+ # ========================================================================= #
64
+ # === ui_padded_hbox
65
+ #
66
+ # If you want to add optional widgets then simply pass them as argument
67
+ # to this method.
68
+ # ========================================================================= #
69
+ def ui_padded_hbox(*optional_widgets)
70
+ _ = ui_hbox(optional_widgets)
71
+ _.is_padded
72
+ return _
73
+ end; alias padded_hbox ui_padded_hbox # === padded_hbox
74
+ alias libui_padded_hbox ui_padded_hbox # === libui_padded_hbox
75
+
76
+ # ========================================================================= #
77
+ # === two_elements_hbox
78
+ #
79
+ # This method will return a horizontal box (hbox) that is accepting
80
+ # two arguments (two widgets) that will be embedded onto that hbox.
81
+ # Then the result is returned.
82
+ # ========================================================================= #
83
+ def two_elements_hbox(
84
+ widget1,
85
+ widget2,
86
+ options = {
87
+ layout_to_use: :maximal # This is the default.
88
+ }
89
+ )
90
+ _ = ui_padded_hbox
91
+ # ======================================================================= #
92
+ # === Handle :layout_to_use
93
+ #
94
+ # This is mostly done to distinguish between maximal() and minimal()
95
+ # for widgets.
96
+ # ======================================================================= #
97
+ if options.is_a?(Hash) and options.has_key?(:layout_to_use)
98
+ case options[:layout_to_use]
99
+ # ===================================================================== #
100
+ # === :maximal
101
+ # ===================================================================== #
102
+ when :maximal
103
+ _.maximal(widget1)
104
+ _.maximal(widget2)
105
+ # ===================================================================== #
106
+ # === :minimal
107
+ # ===================================================================== #
108
+ when :minimal
109
+ _.minimal(widget1)
110
+ _.minimal(widget2)
111
+ end
112
+ else
113
+ _.minimal(widget1)
114
+ _.minimal(widget2)
115
+ end
116
+ return _
117
+ end
118
+
119
+ # ========================================================================= #
120
+ # === vbox
121
+ # ========================================================================= #
122
+ def vbox(*optional_widgets)
123
+ ::LibuiParadise::Extensions.vbox(optional_widgets)
124
+ end; alias ui_vbox vbox # === ui_vbox
125
+ alias gtk_box vbox # === gtk_box
126
+
127
+ end
128
+
129
+ # ========================================================================= #
130
+ # === LibuiParadise.hbox
131
+ #
132
+ # This toplevel-method can be used to instantiate a new hbox.
133
+ # ========================================================================= #
134
+ def self.hbox(*optional_widgets)
135
+ ::LibuiParadise::Extensions.hbox(optional_widgets)
136
+ end; self.instance_eval { alias ui_hbox hbox } # === LibuiParadise.ui_hbox
137
+ self.instance_eval { alias create_hbox hbox } # === LibuiParadise.create_hbox
138
+
139
+ # =========================================================================== #
140
+ # === LibuiParadise.padded_vbox
141
+ # =========================================================================== #
142
+ def self.padded_vbox
143
+ _ = ::LibuiParadise::Extensions.vbox
144
+ _.is_padded
145
+ return _
146
+ end
147
+
148
+
149
+ # =========================================================================== #
150
+ # === LibuiParadise.vbox
151
+ # =========================================================================== #
152
+ def self.vbox
153
+ ::LibuiParadise::Extensions.vbox
154
+ end
155
+
156
+ end
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/libui_classes/grid.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.grid (grid tag)
13
+ #
14
+ # To insert into a grid, try to use this API:
15
+ #
16
+ # uiGridInsertAt(
17
+ # uiGrid *g,
18
+ # uiControl *c,
19
+ # uiControl *existing,
20
+ # uiAt at,
21
+ # int xspan,
22
+ # int yspan,
23
+ # int hexpand,
24
+ # uiAlign halign, int vexpand, uiAlign valign
25
+ # )
26
+ #
27
+ # Example to add a new entry onto the grid:
28
+ #
29
+ # UI.grid_append(grid, text('Yo2'), 1, 0, 1, 1, 0, 0, 1, 0)
30
+ #
31
+ # ========================================================================= #
32
+ def self.grid
33
+ _ = ::LibUI.new_grid
34
+ add_to_the_registered_widgets(_, __method__)
35
+ return _
36
+ end; self.instance_eval { alias ui_grid grid } # === LibuiParadise::Extensions.ui_grid
37
+
38
+ # ========================================================================= #
39
+ # === grid
40
+ # ========================================================================= #
41
+ def grid
42
+ ::LibuiParadise::Extensions.grid
43
+ end; alias ui_grid grid # === ui_grid
44
+
45
+ # ========================================================================= #
46
+ # === ui_padded_grid
47
+ # ========================================================================= #
48
+ def ui_padded_grid
49
+ _ = ui_grid # This is defined in the method above ^^^ this method.
50
+ _.is_padded
51
+ return _
52
+ end; alias padded_grid ui_padded_grid # === padded_grid
53
+ alias default_grid ui_padded_grid # === default_grid
54
+
55
+ end; end