glimmer-dsl-libui 0.11.5 → 0.11.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c7045c2016a37ef9423c6d3e8f2a8480b0b1590e98afc56a2587a4a7d304e30
4
- data.tar.gz: 41699750c28cb881e8c9335280c01836044e89ef31964ec149e052155662ea3c
3
+ metadata.gz: 07dbccff31a389edf42d2fa69ae2ef9b9542d2117d01dfdb50eb586ebc76306c
4
+ data.tar.gz: ba4cd480c791257bbbf762e1dd96dff5ab0a04b152ff6c65e4eaf02acc6808e5
5
5
  SHA512:
6
- metadata.gz: 076d9bc4874bd8328110afd687aa334da3408e9b7dd87937bb7e8eec84591b872bf09e977327de91c27f67e8d342bc4a70e764f87ad61d00fce30bd2cf4daa99
7
- data.tar.gz: 640f1392dd961fb5387d04bddada7baef42120ae75d91a6ee362be928ce89966f52688887b996986fb46ed08c5b434d863f726cf56fff5b6ade52bf2a45f087c
6
+ metadata.gz: 6cfdf98cce4e5a8b51abdef7ed0e030314ec580f454897383189140ad01c81be98f1e134422a5e9ca8fd48ee6b96153d595935cbc1b39133c98da20f8e8122e0
7
+ data.tar.gz: 4b6d53753335cdfad880df26cd6fdc2affa537a101d73ff6d833f2f050fcb0ab24943423ccbd8b08aca9c5c8a063997cb0f43f9731bad3d1eb55fcf92de11182
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.11.7
4
+
5
+ - Fix issue with `table` `checkbox_text_color_column` checkbox edits not working
6
+
7
+ ## 0.11.6
8
+
9
+ - Organize scaffolded application menus under a `menu_bar` method
10
+ - Optimize performance of startup time, cutting ~26ms by delaying load of certain gems until needed:
11
+ - Cut ~16ms of startup time by not loading `perfect-shape` gem until area canvas graphics are used
12
+ - Cut ~10ms of startup time by not loading `color` gem until used by `Glimmer::LibUI.interpret_color` method
13
+ - Optimize performance of scaffolding, cutting ~54ms by not loading `facets` gem completely, yet load used part of facets only ('facets/string/titlecase')
14
+ - Optimize performance of glimmer command listing of gems, cutting ~54ms by not loading `facets` gem completely, yet load used part of facets only ('facets/string/titlecase')
15
+ - Fix issue with `listener_expression.rb` failing for `TextProxy` due to not having `can_handle_listener?` method.
16
+ - Fix issue with `TextProxy.can_handle_listener?` crashing when `text` is nested under `area` `on_draw`
17
+
3
18
  ## 0.11.5
4
19
 
5
20
  - Support table explicit data-binding with a model attribute that returns an Enumerator (instead of an Array)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.11.5
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.11.7
2
2
  ## Prerequisite-Free Ruby Desktop Development Cross-Platform Native GUI Library ([Fukuoka Award Winning](http://www.digitalfukuoka.jp/topics/187?locale=ja))
3
3
  ### The Quickest Way From Zero To GUI
4
4
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-libui.svg)](http://badge.fury.io/rb/glimmer-dsl-libui)
@@ -28,7 +28,7 @@ The main trade-off in using [Glimmer DSL for LibUI](https://rubygems.org/gems/gl
28
28
  - [Declarative DSL syntax](#glimmer-gui-dsl-concepts) that visually maps to the GUI control hierarchy
29
29
  - [Convention over configuration](#smart-defaults-and-conventions) via smart defaults and automation of low-level details
30
30
  - Requiring the [least amount of syntax](#glimmer-gui-dsl-concepts) possible to build GUI
31
- - [Custom Component](#custom-components) support (Custom Controls, Custom Windows, and Custom Shapes)
31
+ - [Custom Component](#custom-components) support (Custom Controls, Custom Windows, and Custom Shapes), including external Ruby gems (e.g. [Graphs and Charts](https://github.com/AndyObtiva/glimmer-libui-cc-graphs_and_charts))
32
32
  - [Bidirectional/Unidirectional Data-Binding](#data-binding) to declaratively wire and automatically synchronize GUI Views with Models
33
33
  - [Scaffolding](#scaffold-application) for new custom windows/controls, apps, and gems
34
34
  - [Far Future Plan] Native-Executable packaging on Mac, Windows, and Linux.
@@ -47,8 +47,28 @@ Mac | Windows | Linux
47
47
  ----|---------|------
48
48
  ![glimmer-dsl-libui-mac-basic-window.png](images/glimmer-dsl-libui-mac-basic-window.png) | ![glimmer-dsl-libui-windows-basic-window.png](images/glimmer-dsl-libui-windows-basic-window.png) | ![glimmer-dsl-libui-linux-basic-window.png](images/glimmer-dsl-libui-linux-basic-window.png)
49
49
 
50
+ Basic Button
51
+
52
+ ```ruby
53
+ require 'glimmer-dsl-libui'
54
+
55
+ include Glimmer
56
+
57
+ window('hello world', 300, 200) {
58
+ button('Button') {
59
+ on_clicked do
60
+ msg_box('Information', 'You clicked the button')
61
+ end
62
+ }
63
+ }.show
64
+ ```
65
+
50
66
  Basic Table Progress Bar
51
67
 
68
+ Mac | Windows | Linux
69
+ ----|---------|------
70
+ ![glimmer-dsl-libui-mac-basic-button.png](/images/glimmer-dsl-libui-mac-basic-button.png) ![glimmer-dsl-libui-mac-basic-button-msg-box.png](/images/glimmer-dsl-libui-mac-basic-button-msg-box.png) | ![glimmer-dsl-libui-windows-basic-button.png](/images/glimmer-dsl-libui-windows-basic-button.png) ![glimmer-dsl-libui-windows-basic-button-msg-box.png](/images/glimmer-dsl-libui-windows-basic-button-msg-box.png) | ![glimmer-dsl-libui-linux-basic-button.png](/images/glimmer-dsl-libui-linux-basic-button.png) ![glimmer-dsl-libui-linux-basic-button-msg-box.png](/images/glimmer-dsl-libui-linux-basic-button-msg-box.png)
71
+
52
72
  ```ruby
53
73
  require 'glimmer-dsl-libui'
54
74
 
@@ -433,7 +453,7 @@ gem install glimmer-dsl-libui
433
453
  Or install via Bundler `Gemfile`:
434
454
 
435
455
  ```ruby
436
- gem 'glimmer-dsl-libui', '~> 0.11.5'
456
+ gem 'glimmer-dsl-libui', '~> 0.11.7'
437
457
  ```
438
458
 
439
459
  Test that installation worked by running the [Glimmer Meta-Example](#examples):
@@ -640,7 +660,7 @@ Mac | Windows | Linux
640
660
 
641
661
  Application scaffolding enables automatically generating the directories/files of a new desktop GUI application that follows the MVC architecture and can be packaged as a Ruby gem that includes an executable script for running the app conveniently. It also ensures that software engineers follow the recommended Glimmer DSL for LibUI conventions and best practices. Application Scaffolding greatly improves software engineering productivity when building desktop applications with [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui).
642
662
 
643
- Application Scaffolding relies on the [juwelier](https://rubygems.org/gems/juwelier) Ruby gem, which expects having a local Git config (global settings in `~/.gitconfig`) of [`user.name`](https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git#setting-your-git-username-for-every-repository-on-your-computer), [`user.email`](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-email-address-for-every-repository-on-your-computer), and `github.user`.
663
+ Application Scaffolding relies on the juwelier Ruby gem, which expects a local Git config of [`user.name`](https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git#setting-your-git-username-for-every-repository-on-your-computer) (git config --global user.name "FirstName LastName") and `github.user` (`git config --global github.user githubusername`).
644
664
 
645
665
  Scaffold Glimmer DSL for LibUI application with this command:
646
666
 
@@ -1356,6 +1376,8 @@ window {
1356
1376
  ...
1357
1377
  ```
1358
1378
 
1379
+ A real external Custom Control Gem is [Graphs and Charts](https://github.com/AndyObtiva/glimmer-libui-cc-graphs_and_charts).
1380
+
1359
1381
  ### Scaffold Custom Window Gem
1360
1382
 
1361
1383
  A custom window is a specialization of a custom control that has a `window` as its `body` root.
@@ -1753,7 +1775,7 @@ These are all the supported keywords. Note that some keywords do not represent c
1753
1775
  Keyword(Args) | Properties | Listeners
1754
1776
  ------------- | ---------- | ---------
1755
1777
  `about_menu_item` | None | `on_clicked`
1756
- `area` | `auto_draw_enabled` | `on_draw(area_draw_params)`, `on_mouse_event(area_mouse_event)`, `on_mouse_down(area_mouse_event)`, `on_mouse_up(area_mouse_event)`, `on_mouse_drag_started(area_mouse_event)`, `on_mouse_dragged(area_mouse_event)`, `on_mouse_dropped(area_mouse_event)`, `on_mouse_entered`, `on_mouse_exited`, `on_key_event(area_key_event)`, `on_key_down(area_key_event)`, `on_key_up(area_key_event)`
1778
+ `area` | `auto_draw_enabled` | `on_draw(area_draw_params)`, `on_mouse_event(area_mouse_event)`, `on_mouse_moved(area_mouse_event)`, `on_mouse_down(area_mouse_event)`, `on_mouse_up(area_mouse_event)`, `on_mouse_drag_started(area_mouse_event)`, `on_mouse_dragged(area_mouse_event)`, `on_mouse_dropped(area_mouse_event)`, `on_mouse_entered`, `on_mouse_exited`, `on_key_event(area_key_event)`, `on_key_down(area_key_event)`, `on_key_up(area_key_event)`
1757
1779
  `arc(x_center as Numeric, y_center as Numeric, radius as Numeric, start_angle as Numeric, sweep as Numeric, is_negative as Boolean)` | `x_center` (`Numeric`), `y_center` (`Numeric`), `radius` (`Numeric`), `start_angle` (`Numeric`), `sweep` (`Numeric`), `is_negative` (Boolean) | None
1758
1780
  `background_color_column` | None | None
1759
1781
  `bezier(x = nil as Numeric, y = nil as Numeric, c1_x as Numeric, c1_y as Numeric, c2_x as Numeric, c2_y as Numeric, end_x as Numeric, end_y as Numeric)` | `x` (`Numeric`), `y` (`Numeric`), `c1_x` (`Numeric`), `c1_y` (`Numeric`), `c2_x` (`Numeric`), `c2_y` (`Numeric`), `end_x` (`Numeric`), `end_y` (`Numeric`) | None
@@ -3001,7 +3023,7 @@ For example, you can define a custom `address_view` control as an aggregate of m
3001
3023
 
3002
3024
  There are two ways to define custom components:
3003
3025
  - Method-Based: simply define a method representing the custom component you want (e.g. `address_view`) with any options needed (e.g. `address(address_model: some_model)`).
3004
- - Class-Based: define a class matching the camelcased name of the custom component by convention (e.g. the `address_view` custom component keyword would have a class called `AddressView`) and `include Glimmer::LibUI::CustomControl`, `include Glimmer::LibUI::CustomWindow`, or `include Glimmer::LibUI::CustomShape` depending on if the component represents a standard control, a whole window, or an [area canvas graphics shape](#area-path-shapes). Classes add the benefit of being able to distribute the custom components into a separate file for external reuse from multiple views or for sharing as a Ruby gem.
3026
+ - Class-Based: define a class matching the camelcased name of the custom component by convention (e.g. the `address_view` custom component keyword would have a class called `AddressView`) and `include Glimmer::LibUI::CustomControl`, `include Glimmer::LibUI::CustomWindow`, or `include Glimmer::LibUI::CustomShape` depending on if the component represents a standard control, a whole window, or an [area canvas graphics shape](#area-path-shapes). Classes add the benefit of being able to distribute the custom components into a separate file for external reuse from multiple views or for sharing as a Ruby gem (e.g. [Graphs and Charts Ruby gem](https://github.com/AndyObtiva/glimmer-libui-cc-graphs_and_charts)).
3005
3027
 
3006
3028
  It is OK to use the terms "custom control", "custom component", and "custom keyword" synonymously though "custom component" is a broader term that covers things other than controls too like custom shapes (e.g. `cube`), custom attributed strings (e.g. `alternating_color_string`), and custom transforms (`isometric_transform`).
3007
3029
 
@@ -4124,6 +4146,16 @@ Mac | Windows | Linux
4124
4146
  ----|---------|------
4125
4147
  ![glimmer-dsl-libui-mac-form-table.png](/images/glimmer-dsl-libui-mac-form-table.png) | ![glimmer-dsl-libui-windows-form-table.png](/images/glimmer-dsl-libui-windows-form-table.png) | ![glimmer-dsl-libui-linux-form-table.png](/images/glimmer-dsl-libui-linux-form-table.png)
4126
4148
 
4149
+ ## Libraries
4150
+
4151
+ ### Graphs and Charts
4152
+
4153
+ This is a Ruby gem that aims at providing support for graphs and charts (custom controls) in Glimmer DSL for LibUI.
4154
+
4155
+ https://github.com/AndyObtiva/glimmer-libui-cc-graphs_and_charts
4156
+
4157
+ ![basic line graph](https://github.com/AndyObtiva/glimmer-libui-cc-graphs_and_charts/raw/master/screenshots/glimmer-libui-cc-graphs_and_charts-mac-basic-line-graph.png)
4158
+
4127
4159
  ## Applications
4128
4160
 
4129
4161
  Here are some applications built with [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui)
@@ -4190,6 +4222,14 @@ This is built as an exploratory software prototype by [Ari Brown](https://github
4190
4222
 
4191
4223
  ![Electric Avenue](https://user-images.githubusercontent.com/16188/260890040-b4b28429-1789-4cdd-a708-45a2bd62b70f.png)
4192
4224
 
4225
+ ### Adamantite
4226
+
4227
+ A local password manager written in Ruby (closed source software):
4228
+
4229
+ https://rubygems.org/gems/adamantite
4230
+
4231
+ ![Adamantite password manager](/images/glimmer-dsl-libui-mac-application-adamantite.png)
4232
+
4193
4233
  ## Process
4194
4234
 
4195
4235
  [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.5
1
+ 0.11.7
Binary file
@@ -34,6 +34,7 @@ module Glimmer
34
34
  parent.is_a?(Glimmer::LibUI::CustomShape)
35
35
  ) and
36
36
  block_given? and
37
+ parent.respond_to?(:can_handle_listener?) and
37
38
  parent.can_handle_listener?(keyword)
38
39
  end
39
40
 
@@ -167,6 +167,7 @@ module Glimmer
167
167
  end
168
168
 
169
169
  def perfect_shape
170
+ require 'perfect-shape'
170
171
  the_perfect_shape_dependencies = perfect_shape_dependencies
171
172
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
172
173
  draw_fill_mode, _ = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -519,7 +519,7 @@ module Glimmer
519
519
  attribute = column_attributes[column]
520
520
  table_cell_row.send("#{attribute}=", ::LibUI.table_value_int(val).to_i == 1)
521
521
  end
522
- when Column::CheckboxTextColumnProxy
522
+ when Column::CheckboxTextColumnProxy, Column::CheckboxTextColorColumnProxy
523
523
  column = @columns[column].index
524
524
  if table_cell_row.is_a?(Array)
525
525
  table_cell_row[column] ||= []
@@ -174,7 +174,7 @@ module Glimmer
174
174
  end
175
175
 
176
176
  def can_handle_listener?(listener_name)
177
- area_proxy.can_handle_listener?(listener_name)
177
+ area_proxy&.can_handle_listener?(listener_name)
178
178
  end
179
179
 
180
180
  def handle_listener(listener_name, &listener)
@@ -184,6 +184,7 @@ module Glimmer
184
184
  end
185
185
 
186
186
  def perfect_shape
187
+ require 'perfect-shape'
187
188
  the_perfect_shape_dependencies = perfect_shape_dependencies
188
189
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
189
190
  absolute_x, absolute_y, width, height = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -51,6 +51,7 @@ module Glimmer
51
51
  end
52
52
 
53
53
  def perfect_shape
54
+ require 'perfect-shape'
54
55
  the_perfect_shape_dependencies = perfect_shape_dependencies
55
56
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
56
57
  absolute_x_center, absolute_y_center, radius, start_angle, sweep, is_negative = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -62,6 +62,7 @@ module Glimmer
62
62
  end
63
63
 
64
64
  def perfect_shape
65
+ require 'perfect-shape'
65
66
  the_perfect_shape_dependencies = perfect_shape_dependencies
66
67
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
67
68
  absolute_x, absolute_y, absolute_c1_x, absolute_c1_y, absolute_c2_x, absolute_c2_y, absolute_end_x, absolute_end_y = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -51,6 +51,7 @@ module Glimmer
51
51
  end
52
52
 
53
53
  def perfect_shape
54
+ require 'perfect-shape'
54
55
  the_perfect_shape_dependencies = perfect_shape_dependencies
55
56
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
56
57
  absolute_x_center, absolute_y_center, radius = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -87,6 +87,7 @@ module Glimmer
87
87
  end
88
88
 
89
89
  def perfect_shape
90
+ require 'perfect-shape'
90
91
  perfect_shape_dependencies = [x, y, children.map(&:perfect_shape_dependencies)]
91
92
  if perfect_shape_dependencies != @perfect_shape_dependencies
92
93
  x, y, _ = @perfect_shape_dependencies = perfect_shape_dependencies
@@ -58,6 +58,7 @@ module Glimmer
58
58
  end
59
59
 
60
60
  def perfect_shape
61
+ require 'perfect-shape'
61
62
  the_perfect_shape_dependencies = perfect_shape_dependencies
62
63
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
63
64
  absolute_x, absolute_y, closed, draw_fill_mode, children = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -61,6 +61,7 @@ module Glimmer
61
61
  end
62
62
 
63
63
  def perfect_shape
64
+ require 'perfect-shape'
64
65
  the_perfect_shape_dependencies = perfect_shape_dependencies
65
66
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
66
67
  absolute_x, absolute_y, absolute_end_x, absolute_end_y = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -45,6 +45,7 @@ module Glimmer
45
45
  end
46
46
 
47
47
  def perfect_shape
48
+ require 'perfect-shape'
48
49
  the_perfect_shape_dependencies = perfect_shape_dependencies
49
50
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
50
51
  absolute_point_array = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -46,6 +46,7 @@ module Glimmer
46
46
  end
47
47
 
48
48
  def perfect_shape
49
+ require 'perfect-shape'
49
50
  the_perfect_shape_dependencies = perfect_shape_dependencies
50
51
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
51
52
  absolute_point_array = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -45,6 +45,7 @@ module Glimmer
45
45
  end
46
46
 
47
47
  def perfect_shape
48
+ require 'perfect-shape'
48
49
  the_perfect_shape_dependencies = perfect_shape_dependencies
49
50
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
50
51
  absolute_point_array = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -39,6 +39,7 @@ module Glimmer
39
39
  end
40
40
 
41
41
  def perfect_shape
42
+ require 'perfect-shape'
42
43
  the_perfect_shape_dependencies = perfect_shape_dependencies
43
44
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
44
45
  absolute_x, absolute_y, width, height = @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -41,6 +41,7 @@ module Glimmer
41
41
  end
42
42
 
43
43
  def perfect_shape
44
+ require 'perfect-shape'
44
45
  the_perfect_shape_dependencies = perfect_shape_dependencies
45
46
  if the_perfect_shape_dependencies != @perfect_shape_dependencies
46
47
  @perfect_shape_dependencies = the_perfect_shape_dependencies
@@ -182,6 +182,7 @@ module Glimmer
182
182
  return unless respond_to?(:point_array)
183
183
 
184
184
  point_array = self.point_array || []
185
+ require 'perfect-shape'
185
186
  point_array = PerfectShape::MultiPoint.normalize_point_array(point_array)
186
187
  point_array.map do |point|
187
188
  if composite_shape
data/lib/glimmer/libui.rb CHANGED
@@ -92,6 +92,7 @@ module Glimmer
92
92
  value[:a] = value.delete(:alpha) if value[:alpha]
93
93
  value
94
94
  elsif value.is_a?(String) && !value.start_with?('0x') && !value.start_with?('#') && !value.downcase.match(/^((([1-9a-f]){6})|(([1-9a-f]){3}))$/)
95
+ require 'color'
95
96
  color = Color::RGB.extract_colors(value).first
96
97
  color.nil? ? {} : {
97
98
  r: color.red,
@@ -194,6 +195,7 @@ module Glimmer
194
195
  end
195
196
 
196
197
  def x11_colors
198
+ require 'color'
197
199
  Color::RGB.constants.reject {|c| c.to_s.upcase == c.to_s}.map(&:to_s).map(&:underscore).map(&:to_sym)
198
200
  end
199
201
 
@@ -19,8 +19,8 @@
19
19
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
20
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
- require 'facets'
23
22
  require 'text-table'
23
+ require 'facets/string/titlecase'
24
24
 
25
25
  module Glimmer
26
26
  module RakeTask
@@ -21,7 +21,7 @@
21
21
 
22
22
  require 'fileutils'
23
23
  require 'os'
24
- require 'facets'
24
+ require 'facets/string/titlecase'
25
25
 
26
26
  # TODO refactor to nest under RakeTask namespace
27
27
 
@@ -578,32 +578,7 @@ require '#{window_type == :app ? current_dir_name : namespace}/model/greeting'
578
578
  custom_window_file_content += <<-MULTI_LINE_STRING
579
579
  before_body do
580
580
  @greeting = Model::Greeting.new
581
-
582
- menu('File') {
583
- menu_item('Preferences...') {
584
- on_clicked do
585
- display_preferences_dialog
586
- end
587
- }
588
-
589
- # Enables quitting with CMD+Q on Mac with Mac Quit menu item
590
- quit_menu_item if OS.mac?
591
- }
592
- menu('Help') {
593
- if OS.mac?
594
- about_menu_item {
595
- on_clicked do
596
- display_about_dialog
597
- end
598
- }
599
- end
600
-
601
- menu_item('About') {
602
- on_clicked do
603
- display_about_dialog
604
- end
605
- }
606
- }
581
+ menu_bar
607
582
  end
608
583
  MULTI_LINE_STRING
609
584
  elsif window_type == :gem
@@ -670,6 +645,39 @@ require '#{window_type == :app ? current_dir_name : namespace}/model/greeting'
670
645
  }
671
646
  MULTI_LINE_STRING
672
647
 
648
+ if %i[app].include?(window_type)
649
+ custom_window_file_content += <<-MULTI_LINE_STRING
650
+
651
+ def menu_bar
652
+ menu('File') {
653
+ menu_item('Preferences...') {
654
+ on_clicked do
655
+ display_preferences_dialog
656
+ end
657
+ }
658
+
659
+ # Enables quitting with CMD+Q on Mac with Mac Quit menu item
660
+ quit_menu_item if OS.mac?
661
+ }
662
+ menu('Help') {
663
+ if OS.mac?
664
+ about_menu_item {
665
+ on_clicked do
666
+ display_about_dialog
667
+ end
668
+ }
669
+ end
670
+
671
+ menu_item('About') {
672
+ on_clicked do
673
+ display_about_dialog
674
+ end
675
+ }
676
+ }
677
+ end
678
+ MULTI_LINE_STRING
679
+ end
680
+
673
681
  if %i[gem app].include?(window_type)
674
682
  custom_window_file_content += <<-MULTI_LINE_STRING
675
683
 
@@ -23,11 +23,9 @@ $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
23
23
 
24
24
  # External requires
25
25
  require 'glimmer'
26
- require 'perfect-shape'
27
26
  # require 'logging'
28
27
  require 'puts_debuggerer' if (ENV['PD'] || ENV['pd']).to_s.downcase == 'true'
29
28
  # require 'super_module'
30
- require 'color'
31
29
  require 'os'
32
30
  require 'equalizer'
33
31
  require 'array_include_methods'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-libui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ version: 0.11.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-29 00:00:00.000000000 Z
11
+ date: 2023-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -640,7 +640,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
640
640
  - !ruby/object:Gem::Version
641
641
  version: '0'
642
642
  requirements: []
643
- rubygems_version: 3.4.6
643
+ rubygems_version: 3.5.1
644
644
  signing_key:
645
645
  specification_version: 4
646
646
  summary: Glimmer DSL for LibUI (Fukuoka Award Winning Prerequisite-Free Ruby Desktop