libui_paradise 0.1.49

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of libui_paradise might be problematic. Click here for more details.

Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1505 -0
  3. data/doc/README.gen +1252 -0
  4. data/doc/SNIPPETS.md +221 -0
  5. data/doc/TODO.md +14 -0
  6. data/lib/libui_paradise/autoinclude.rb +9 -0
  7. data/lib/libui_paradise/domain_specific_language/README.md +5 -0
  8. data/lib/libui_paradise/domain_specific_language/button.yml +7 -0
  9. data/lib/libui_paradise/examples/001_basic_button_example.rb +17 -0
  10. data/lib/libui_paradise/examples/002_basic_table_image.rb +92 -0
  11. data/lib/libui_paradise/examples/003_font_button.rb +34 -0
  12. data/lib/libui_paradise/examples/004_date_time_picker.rb +31 -0
  13. data/lib/libui_paradise/examples/005_msg_box_error.rb +25 -0
  14. data/lib/libui_paradise/examples/006_histogram.rb +193 -0
  15. data/lib/libui_paradise/examples/007_combo_box_example.rb +41 -0
  16. data/lib/libui_paradise/examples/008_simple_notepad_example.rb +23 -0
  17. data/lib/libui_paradise/examples/009_checkbox_example.rb +82 -0
  18. data/lib/libui_paradise/examples/010_grid_example.rb +26 -0
  19. data/lib/libui_paradise/examples/011_fancy_text_example.rb +21 -0
  20. data/lib/libui_paradise/examples/012_control_gallery.rb +180 -0
  21. data/lib/libui_paradise/examples/013_midi_player.rb +91 -0
  22. data/lib/libui_paradise/examples/014_basic_draw_text.rb +134 -0
  23. data/lib/libui_paradise/examples/015_font_example.rb +91 -0
  24. data/lib/libui_paradise/examples/016_search_entry_example.rb +16 -0
  25. data/lib/libui_paradise/examples/017_tabs_example.rb +22 -0
  26. data/lib/libui_paradise/examples/018_image_example.rb +82 -0
  27. data/lib/libui_paradise/examples/019_open_file_button_example.rb +24 -0
  28. data/lib/libui_paradise/examples/020_unicode_text_example.rb +28 -0
  29. data/lib/libui_paradise/examples/021_spinbutton_example.rb +25 -0
  30. data/lib/libui_paradise/examples/022_text_example.rb +16 -0
  31. data/lib/libui_paradise/examples/023_parse_config_file_example.config +6 -0
  32. data/lib/libui_paradise/examples/023_parse_config_file_example.rb +13 -0
  33. data/lib/libui_paradise/examples/024_text_view_example.rb +14 -0
  34. data/lib/libui_paradise/examples/025_scrolling_area.rb +16 -0
  35. data/lib/libui_paradise/examples/026_colour_button.rb +51 -0
  36. data/lib/libui_paradise/examples/027_form_example.rb +37 -0
  37. data/lib/libui_paradise/examples/028_password_entry_example.rb +17 -0
  38. data/lib/libui_paradise/examples/029_two_buttons_showing_how_to_enable_and_disable_them.rb +32 -0
  39. data/lib/libui_paradise/examples/030_table_example.rb +51 -0
  40. data/lib/libui_paradise/experimental/dsl.rb +17 -0
  41. data/lib/libui_paradise/extensions/extensions.rb +25 -0
  42. data/lib/libui_paradise/extensions/hash_fiddle_pointer_widgets.rb +129 -0
  43. data/lib/libui_paradise/extensions/misc.rb +309 -0
  44. data/lib/libui_paradise/fiddle/pointer.rb +841 -0
  45. data/lib/libui_paradise/images/LIBUI_PARADISE_LOGO.png +0 -0
  46. data/lib/libui_paradise/images/README.md +2 -0
  47. data/lib/libui_paradise/images/form_example.png +0 -0
  48. data/lib/libui_paradise/libui_classes/area_handler.rb +52 -0
  49. data/lib/libui_paradise/libui_classes/button.rb +82 -0
  50. data/lib/libui_paradise/libui_classes/checkbox.rb +37 -0
  51. data/lib/libui_paradise/libui_classes/color_button.rb +44 -0
  52. data/lib/libui_paradise/libui_classes/combobox.rb +55 -0
  53. data/lib/libui_paradise/libui_classes/editable_combobox.rb +51 -0
  54. data/lib/libui_paradise/libui_classes/entry.rb +80 -0
  55. data/lib/libui_paradise/libui_classes/font.rb +78 -0
  56. data/lib/libui_paradise/libui_classes/font_button.rb +40 -0
  57. data/lib/libui_paradise/libui_classes/grid.rb +55 -0
  58. data/lib/libui_paradise/libui_classes/hbox.rb +98 -0
  59. data/lib/libui_paradise/libui_classes/horizontal_separator.rb +41 -0
  60. data/lib/libui_paradise/libui_classes/image.rb +82 -0
  61. data/lib/libui_paradise/libui_classes/label.rb +83 -0
  62. data/lib/libui_paradise/libui_classes/menu.rb +36 -0
  63. data/lib/libui_paradise/libui_classes/msg_box.rb +97 -0
  64. data/lib/libui_paradise/libui_classes/msg_box_error.rb +49 -0
  65. data/lib/libui_paradise/libui_classes/multiline_entry.rb +59 -0
  66. data/lib/libui_paradise/libui_classes/non_wrapping_multiline_entry.rb +41 -0
  67. data/lib/libui_paradise/libui_classes/open_file.rb +42 -0
  68. data/lib/libui_paradise/libui_classes/password_entry.rb +49 -0
  69. data/lib/libui_paradise/libui_classes/progressbar.rb +41 -0
  70. data/lib/libui_paradise/libui_classes/radio_buttons.rb +36 -0
  71. data/lib/libui_paradise/libui_classes/scrolling_area.rb +85 -0
  72. data/lib/libui_paradise/libui_classes/search_entry.rb +36 -0
  73. data/lib/libui_paradise/libui_classes/spinbox.rb +55 -0
  74. data/lib/libui_paradise/libui_classes/tab.rb +39 -0
  75. data/lib/libui_paradise/libui_classes/table.rb +45 -0
  76. data/lib/libui_paradise/libui_classes/text_layout.rb +42 -0
  77. data/lib/libui_paradise/libui_classes/vbox.rb +51 -0
  78. data/lib/libui_paradise/libui_classes/window.rb +167 -0
  79. data/lib/libui_paradise/project/project.rb +26 -0
  80. data/lib/libui_paradise/prototype/README.md +3 -0
  81. data/lib/libui_paradise/prototype/prototype.rb +101 -0
  82. data/lib/libui_paradise/requires/require_the_libui_classes.rb +26 -0
  83. data/lib/libui_paradise/requires/require_the_libui_paradise_project.rb +11 -0
  84. data/lib/libui_paradise/version/version.rb +17 -0
  85. data/lib/libui_paradise.rb +1 -0
  86. data/libui_paradise.gemspec +49 -0
  87. metadata +164 -0
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # The upstream C API can be found here:
6
+ #
7
+ # https://github.com/andlabs/libui/blob/master/unix/progressbar.c
8
+ #
9
+ # =========================================================================== #
10
+ # require 'libui_paradise/ui_classes/progressbar.rb
11
+ # =========================================================================== #
12
+ module LibuiParadise
13
+
14
+ module Extensions # === LibuiParadise::Extensions
15
+
16
+ # ========================================================================= #
17
+ # === LibuiParadise::Extensions.new_progress_bar
18
+ # ========================================================================= #
19
+ def self.new_progress_bar
20
+ _ = LibUI.new_progress_bar
21
+ add_to_the_registered_widgets(_, __method__)
22
+ return _
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === new_progress_bar
27
+ # ========================================================================= #
28
+ def new_progress_bar
29
+ return ::LibuiParadise::Extensions.new_progress_bar
30
+ end
31
+
32
+ end
33
+
34
+ # =========================================================================== #
35
+ # === LibuiParadise.new_progress_bar
36
+ # =========================================================================== #
37
+ def self.new_progress_bar
38
+ return ::LibuiParadise::Extensions.new_progress_bar
39
+ end
40
+
41
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/radio_buttons.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.radio_buttons
13
+ # ========================================================================= #
14
+ def self.radio_buttons
15
+ _ = UI.new_radio_buttons
16
+ add_to_the_registered_widgets(_, __method__)
17
+ return _
18
+ end; self.instance_eval { alias ui_radio_buttons radio_buttons } # === LibuiParadise::Extensionsui_radio_buttons
19
+
20
+ # ========================================================================= #
21
+ # === radio_buttons
22
+ # ========================================================================= #
23
+ def radio_buttons
24
+ return ::LibuiParadise::Extensions.radio_buttons
25
+ end; alias ui_radio_buttons radio_buttons # === ui_radio_buttons
26
+
27
+ end
28
+
29
+ # =========================================================================== #
30
+ # === LibuiParadise.radio_buttons
31
+ # =========================================================================== #
32
+ def self.radio_buttons
33
+ return ::LibuiParadise::Extensions.radio_buttons
34
+ end
35
+
36
+ end
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/scrolling_area.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.scrolling_area
13
+ #
14
+ # It seems as if scrolling is not yet easily available in libui.
15
+ #
16
+ # The upstream API is like this:
17
+ #
18
+ # uiArea *area = uiNewScrollingArea(&handler, 400, 400);
19
+ #
20
+ # The two numbers are width and height, as integers, respectively.
21
+ # In total three arguments are required. The first argument is
22
+ # a so-called "AreaHandler".
23
+ #
24
+ # The code may be found here:
25
+ #
26
+ # https://github.com/andlabs/libui/blob/master/windows/areascroll.cpp
27
+ #
28
+ # ========================================================================= #
29
+ def self.scrolling_area(
30
+ widget,
31
+ width = 400,
32
+ height = 400
33
+ )
34
+ case width
35
+ when :default, nil
36
+ width = 400
37
+ end
38
+ case height
39
+ when :default, nil
40
+ height = 400
41
+ end
42
+ _ = LibUI.new_scrolling_area(widget, width, height)
43
+ # ======================================================================= #
44
+ # The next part does not yet work - is it even possible to add widgets
45
+ # to a scrolling area in libui?
46
+ # if optional_widget
47
+ # _.add(optional_widget)
48
+ # end
49
+ # ======================================================================= #
50
+ add_to_the_registered_widgets(_, __method__)
51
+ return _
52
+ end; self.instance_eval { alias ui_scrolling_area scrolling_area } # === LibuiParadise::Extensions.ui_scrolling_area
53
+ self.instance_eval { alias ui_scrolled_window scrolling_area } # === LibuiParadise::Extensions.ui_scrolling_window
54
+
55
+ # ========================================================================= #
56
+ # === scrolling_area
57
+ #
58
+ # It seems as if scrolling is not yet easily available in libui.
59
+ #
60
+ # The upstream API is like this:
61
+ #
62
+ # uiArea *area = uiNewScrollingArea(&handler, 400, 400);
63
+ #
64
+ # ========================================================================= #
65
+ def scrolling_area(
66
+ optional_widget = nil
67
+ )
68
+ LibuiParadise::Extensions.scrolling_area(optional_widget)
69
+ end; alias ui_scrolling_area scrolling_area # === ui_scrolling_area
70
+ alias ui_scrolled_window scrolling_area # === ui_scrolling_window
71
+
72
+ end
73
+
74
+ # =========================================================================== #
75
+ # === LibuiParadise.scrolling_area
76
+ # =========================================================================== #
77
+ def self.scrolling_area(
78
+ widget,
79
+ width = :default,
80
+ height = :default
81
+ )
82
+ ::LibuiParadise::Extensions.scrolling_area(widget, width, height)
83
+ end
84
+
85
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/search_entry.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.search_entry
13
+ # ========================================================================= #
14
+ def self.search_entry
15
+ _ = UI.new_search_entry
16
+ add_to_the_registered_widgets(_, __method__)
17
+ return _
18
+ end; self.instance_eval { alias ui_search_entry search_entry } # === LibuiParadise::Extensions.ui_search_entry
19
+
20
+ # ========================================================================= #
21
+ # === search_entry
22
+ # ========================================================================= #
23
+ def search_entry
24
+ ::LibuiParadise::Extensions.search_entry
25
+ end; alias ui_search_entry search_entry # === ui_search_entry
26
+
27
+ end
28
+
29
+ # =========================================================================== #
30
+ # === LibuiParadise.search_entry
31
+ # =========================================================================== #
32
+ def self.search_entry
33
+ ::LibuiParadise::Extensions.search_entry
34
+ end; self.instance_eval { alias ui_search_entry search_entry } # === LibuiParadise.ui_search_entry
35
+
36
+ end
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/spinbox.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.spinbox
13
+ #
14
+ # This method will return a spin-button, also called a spin-box.
15
+ # ========================================================================= #
16
+ def self.spinbox(
17
+ start_point = 0,
18
+ end_point = 100
19
+ )
20
+ _ = UI.new_spinbox(start_point.to_i, end_point.to_i)
21
+ add_to_the_registered_widgets(_, __method__)
22
+ return _
23
+ end; self.instance_eval { alias ui_spinbox spinbox } # === LibuiParadise::Extensions.ui_spinbox
24
+ self.instance_eval { alias ui_spinbutton spinbox } # === LibuiParadise::Extensions.ui_spinbutton
25
+ self.instance_eval { alias spinbutton spinbox } # === LibuiParadise::Extensions.spinbutton
26
+
27
+ # ========================================================================= #
28
+ # === spinbox
29
+ #
30
+ # This method will return a spin-button, also called a spin-box.
31
+ # ========================================================================= #
32
+ def spinbox(
33
+ start_point = 0,
34
+ end_point = 100
35
+ )
36
+ ::LibuiParadise::Extensions.spinbox(start_point, end_point)
37
+ end; alias ui_spinbox spinbox # === ui_spinbox
38
+ alias ui_spinbutton spinbox # === ui_spinbutton
39
+ alias spinbutton spinbox # === spinbutton
40
+
41
+ end
42
+
43
+ # =========================================================================== #
44
+ # === LibuiParadise.spinbox
45
+ # =========================================================================== #
46
+ def self.spinbox(
47
+ start_point = 0,
48
+ end_point = 100
49
+ )
50
+ ::LibuiParadise::Extensions.spinbox(start_point, end_point)
51
+ end; self.instance_eval { alias ui_spinbox spinbox } # === LibuiParadise.ui_spinbox
52
+ self.instance_eval { alias ui_spinbutton spinbox } # === LibuiParadise.ui_spinbutton
53
+ self.instance_eval { alias spinbutton spinbox } # === LibuiParadise.spinbutton
54
+
55
+ end
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/tab.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.tab
13
+ #
14
+ # This could be also called "notebook_tab".
15
+ # ========================================================================= #
16
+ def self.tab
17
+ _ = UI.new_tab
18
+ add_to_the_registered_widgets(_, __method__)
19
+ return _
20
+ end; self.instance_eval { alias ui_tab tab } # === LibuiParadise::Extensions.ui_tab
21
+ self.instance_eval { alias ui_tabs tab } # === LibuiParadise::Extensions.ui_tabs
22
+ self.instance_eval { alias notebook tab } # === LibuiParadise::Extensions.notebook
23
+ self.instance_eval { alias ui_notebook tab } # === LibuiParadise::Extensions.ui_notebook
24
+ self.instance_eval { alias notebook_tab tab } # === LibuiParadise::Extensions.notebook_tab
25
+
26
+ # ========================================================================= #
27
+ # === tab
28
+ #
29
+ # This could be also called "notebook_tab".
30
+ # ========================================================================= #
31
+ def tab
32
+ ::LibuiParadise::Extensions.tab
33
+ end; alias ui_tab tab # === ui_tab
34
+ alias ui_tabs tab # === ui_tabs
35
+ alias notebook tab # === notebook
36
+ alias ui_notebook tab # === ui_notebook
37
+ alias notebook_tab tab # === notebook_tab
38
+
39
+ end; end
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/table.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.table
13
+ #
14
+ # The argument should be of type table_params.
15
+ #
16
+ # Example for this:
17
+ #
18
+ # table_params = LibUI::FFI::TableParams.malloc
19
+ # table_params.Model = model
20
+ # table_params.RowBackgroundColorModelColumn = -1
21
+ #
22
+ # ========================================================================= #
23
+ def self.table(i)
24
+ _ = LibUI.new_table(i)
25
+ LibuiParadise::Extensions.register_this_fiddle_pointer_widget(_, __method__)
26
+ return _
27
+ end; self.instance_eval { alias ui_table table } # === LibuiParadise::Extensions.ui_table
28
+
29
+ # ========================================================================= #
30
+ # === table
31
+ # ========================================================================= #
32
+ def table(i)
33
+ ::LibuiParadise::Extensions.table(i)
34
+ end; alias ui_table table # === ui_table
35
+
36
+ end
37
+
38
+ # =========================================================================== #
39
+ # === LibuiParadise.table
40
+ # =========================================================================== #
41
+ def self.table(i)
42
+ ::LibuiParadise::Extensions.table(i)
43
+ end; self.instance_eval { alias ui_table table } # === LibuiParadise.ui_table
44
+
45
+ end
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/text_layout.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === LibuiParadise::Extensions.text_layout
13
+ # ========================================================================= #
14
+ def self.text_layout(
15
+ i = ''
16
+ )
17
+ _ = UI.draw_new_text_layout(i.to_s)
18
+ add_to_the_registered_widgets(_, __method__)
19
+ return _
20
+ end
21
+
22
+ # ========================================================================= #
23
+ # === text_layout
24
+ # ========================================================================= #
25
+ def text_layout(
26
+ i = ''
27
+ )
28
+ ::LibuiParadise::Extensions.text_layout(i)
29
+ end
30
+
31
+ end
32
+
33
+ # =========================================================================== #
34
+ # === LibuiParadise.text_layout
35
+ # =========================================================================== #
36
+ def self.text_layout(
37
+ i = ''
38
+ )
39
+ ::LibuiParadise::Extensions.text_layout(i)
40
+ end
41
+
42
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/libui_classes/vbox.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
17
+ _ = UI.new_vertical_box
18
+ add_to_the_registered_widgets(_, __method__)
19
+ return _
20
+ end; self.instance_eval { alias ui_vbox vbox } # === ui_vbox
21
+
22
+ # ========================================================================= #
23
+ # === vbox
24
+ # ========================================================================= #
25
+ def vbox
26
+ ::LibuiParadise::Extensions.vbox
27
+ end; alias ui_vbox vbox # === ui_vbox
28
+ alias gtk_box vbox # === gtk_box
29
+
30
+ # ========================================================================= #
31
+ # === ui_padded_vbox
32
+ #
33
+ # This method will call .is_padded on the vbox after it has been
34
+ # initialized.
35
+ # ========================================================================= #
36
+ def ui_padded_vbox
37
+ _ = ui_vbox
38
+ _.is_padded
39
+ return _
40
+ end; alias padded_vbox ui_padded_vbox # === padded_vbox
41
+
42
+ end
43
+
44
+ # =========================================================================== #
45
+ # === LibuiParadise.vbox
46
+ # =========================================================================== #
47
+ def self.vbox
48
+ ::LibuiParadise::Extensions.vbox
49
+ end
50
+
51
+ end
@@ -0,0 +1,167 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/ui_classes/window.rb
6
+ # =========================================================================== #
7
+ module LibuiParadise
8
+
9
+ module Extensions # === LibuiParadise::Extensions
10
+
11
+ # ========================================================================= #
12
+ # === @main_window
13
+ #
14
+ # This variable can be used to keep track of the main window in use.
15
+ # ========================================================================= #
16
+ @main_window = nil
17
+
18
+ # ========================================================================= #
19
+ # === LibuiParadise::Extensions.main_window?
20
+ # ========================================================================= #
21
+ def self.main_window?
22
+ @main_window
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === main_window?
27
+ # ========================================================================= #
28
+ def main_window?
29
+ ::LibuiParadise::Extensions.main_window?
30
+ end
31
+
32
+ # ========================================================================= #
33
+ # === LibuiParadise::Extensions.set_main_window
34
+ # ========================================================================= #
35
+ def self.set_main_window(i)
36
+ @main_window = i
37
+ end
38
+
39
+ # ========================================================================= #
40
+ # === LibuiParadise::Extensions.window (window tag)
41
+ #
42
+ # This method will create a new main-window.
43
+ #
44
+ # It will also call UI.simple_exit(). This is done mostly so that we
45
+ # can omit that line whenever we use e. g. ui_main_window().
46
+ # ========================================================================= #
47
+ def self.window(
48
+ the_title = '', # Pick a title for the window here.
49
+ width = 500, # width in n pixels.
50
+ height = 300, # height in n pixels.
51
+ has_menubar = 1, # hasMenubar or has not.
52
+ &block
53
+ )
54
+ raw_has_menubar = 0
55
+ if has_menubar.is_a? Numeric
56
+ raw_has_menubar = has_menubar
57
+ end
58
+ # ======================================================================= #
59
+ # Instantiate a new main-window next:
60
+ # ======================================================================= #
61
+ main_window = LibUI.new_window(
62
+ the_title,
63
+ width,
64
+ height,
65
+ raw_has_menubar
66
+ )
67
+ set_main_window(main_window) # Keep a reference stored here.
68
+ # ======================================================================= #
69
+ # Since as of 30.08.2021 we will also register the main-window.
70
+ #
71
+ # In the long run we may obsolete and deprecate @main_window, since
72
+ # it is no longer needed - but for now we will retain that variable.
73
+ # ======================================================================= #
74
+ add_to_the_registered_widgets(main_window, __method__)
75
+ if has_menubar and has_menubar.is_a?(Hash)
76
+ if has_menubar.has_key? :margin
77
+ if has_menubar[:margin] == true
78
+ main_window.has_margin
79
+ end
80
+ end
81
+ end
82
+ UI.simple_exit(main_window)
83
+ if block_given?
84
+ yield
85
+ end
86
+ return main_window # Always return it here.
87
+ end; self.instance_eval { alias main_window window } # === LibuiParadise::Extensions.main_window
88
+ self.instance_eval { alias ui_main_window window } # === LibuiParadise::Extensions.ui_main_window
89
+ self.instance_eval { alias margined_window window } # === LibuiParadise::Extensions.margined_window
90
+ self.instance_eval { alias ui_window window } # === LibuiParadise::Extensions.ui_window
91
+
92
+ # ========================================================================= #
93
+ # === window
94
+ # ========================================================================= #
95
+ def window(
96
+ the_title = '', # Pick a title for the window here.
97
+ width = 500, # width in n pixels.
98
+ height = 300, # height in n pixels.
99
+ has_menubar = 1 # hasMenubar or has not.
100
+ )
101
+ LibuiParadise::Extensions.window(
102
+ the_title, width, height, has_menubar
103
+ )
104
+ end; alias main_window window # === main_window
105
+
106
+ # ========================================================================= #
107
+ # === ui_margined_main_window
108
+ #
109
+ # This variant is like ui_main_window() but it will automatically
110
+ # put a margin on the window, via .is_margined().
111
+ #
112
+ # Note that the variant name "ui_padded_main_window" is a misnomer,
113
+ # since it is a margin rather than padding - but I found that it
114
+ # is easier to not care about this, so for the time being (September
115
+ # 2021) this is how it is. It may be subject to change in the future,
116
+ # though.
117
+ # ========================================================================= #
118
+ def ui_margined_main_window(
119
+ the_title = '', # Pick a title for the window here.
120
+ width = 500, # width in n pixels.
121
+ height = 300, # height in n pixels.
122
+ has_menubar = 1 # hasMenubar or has not.
123
+ )
124
+ _ = LibuiParadise.window(the_title, width, height, has_menubar)
125
+ _.is_margined
126
+ return _
127
+ end; alias ui_margined_window ui_margined_main_window # === ui_margined_window
128
+ alias ui_padded_main_window ui_margined_main_window # === ui_padded_main_window
129
+ alias margined_window ui_margined_main_window # === margined_window
130
+ alias padded_window ui_margined_main_window # === padded_window
131
+ alias padded_main_window ui_margined_main_window # === padded_main_window
132
+ alias ui_main_window ui_margined_main_window # === ui_main_window
133
+ alias ui_window ui_margined_main_window # === ui_window
134
+
135
+ end
136
+
137
+ # =========================================================================== #
138
+ # === LibuiParadise.window
139
+ # =========================================================================== #
140
+ def self.window(
141
+ the_title = '', # Pick a title for the window here.
142
+ width = 500, # width in n pixels.
143
+ height = 300, # height in n pixels.
144
+ has_menubar = 1 # hasMenubar or has not.
145
+ )
146
+ ::LibuiParadise::Extensions.window(
147
+ the_title,
148
+ width,
149
+ height,
150
+ has_menubar
151
+ )
152
+ end; self.instance_eval { alias main_window window } # === LibuiParadise.main_window
153
+ self.instance_eval { alias margined_window window } # === LibuiParadise.margined_window
154
+ self.instance_eval { alias ui_window window } # === LibuiParadise.ui_window
155
+ self.instance_eval { alias ui_main_window window } # === LibuiParadise.ui_main_window
156
+ self.instance_eval { alias ui_padded_main_window window } # === LibuiParadise.margined_window
157
+ self.instance_eval { alias padded_window window } # === LibuiParadise.padded_window
158
+ self.instance_eval { alias padded_main_window window } # === LibuiParadise.padded_main_window
159
+
160
+ # =========================================================================== #
161
+ # === LibuiParadise.main_window?
162
+ # =========================================================================== #
163
+ def self.main_window?
164
+ LibuiParadise::Extensions.main_window?
165
+ end
166
+
167
+ end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'libui_paradise/project/project.rb'
6
+ # LibuiParadise.project_base_dir?
7
+ # =========================================================================== #
8
+ module LibuiParadise
9
+
10
+ # ========================================================================= #
11
+ # === PROJECT_BASE_DIRECTORY
12
+ # ========================================================================= #
13
+ PROJECT_BASE_DIRECTORY =
14
+ File.absolute_path("#{__dir__}/..")+'/'
15
+ BASE_DIR = PROJECT_BASE_DIRECTORY
16
+
17
+ # ========================================================================= #
18
+ # === LibuiParadise.project_base_dir?
19
+ # ========================================================================= #
20
+ def self.project_base_dir?
21
+ PROJECT_BASE_DIRECTORY
22
+ end; self.instance_eval { alias project_base_dir project_base_dir? } # === LibuiParadise.project_base_dir
23
+ self.instance_eval { alias project_base_dir? project_base_dir? } # === LibuiParadise.project_base_dir?
24
+ self.instance_eval { alias project_base_directory? project_base_dir? } # === LibuiParadise.project_base_directory?
25
+
26
+ end
@@ -0,0 +1,3 @@
1
+ The .rb file in this directory can be used to quickly copy/paste a
2
+ working skeleton that can be adjusted and modifed for quick GUI
3
+ prototyping via libui.