libui_paradise 0.1.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.

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.