glimmer-dsl-wx 0.0.2 → 0.0.5

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: a58eca665a94827505984c32aca6e70f41b74227adefc3847d6c36272ccd0125
4
- data.tar.gz: c92afe6e99a78d32b07df6f6e30a70cbd73a65f136dc4f20cdac02a591bc099c
3
+ metadata.gz: 9d5a658d9129e3c8ebf9c27f75d090d8d3f987a56866d1072d8ee17c757a7845
4
+ data.tar.gz: 31fc334221373c19a3461742fac4c201caf513b79413fa3738e09b4aa7a7b752
5
5
  SHA512:
6
- metadata.gz: 4720d808e123c3a67baf8e0fc99b4a5c12c5d1929ba1279cc4ac47fdc24d7fffb61c1aa11d9d303bbbfcd2ad71cf5742b5073e36717ea31bda97b54776ef9b10
7
- data.tar.gz: eed7d3e70d290ac90fe36a2a8502c516febccc4a09f8fc9667cd15886d250a3b3683c245cc72930fe99fe578e48588b7612bdb86a026e38226d3b61fd6667e79
6
+ metadata.gz: 1516d96c79fdcd492d647092af6eed155b36091b7c2499c60384c24666a16e2cb5d2f397d92dd4c5f408d5d9cb947d24b50f7797ca70c644831ceafd89b6225a
7
+ data.tar.gz: e55a50420ee69b41e8406367151320aa29dd9d1d4ba57481475877e6e1624b2fcd1e157c00705ae9f43fb0b417ec4214079a8fa0377f32095c75c06300995368
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.0.5
4
+
5
+ - Nested child control support
6
+ - Listener support
7
+ - `about_box` keyword for displaying an about dialog box
8
+ - samples/glimmer_new/hello_button.rb
9
+ - samples/glimmer_new/hello_button2.rb
10
+ - Fix again the issue with complaining about not finding `frame` `app_name` when not specified despite it being optional
11
+
12
+ ## 0.0.4
13
+
14
+ - Fix issue with complaining about not finding `frame` `app_name` when not specified despite it being optional
15
+
16
+ ## 0.0.3
17
+
18
+ - Support control arguments and properties
19
+ - girb (Glimmer IRB)
20
+ - Use frame title argument in samples/minimal/nothing.rb
21
+ - Support `app_name` argument/property on `frame`
22
+ - Automatically set `app_name` to `frame` `title` if `frame` `app_name` is not specified
23
+ - samples/glimmer_new/hello_world.rb
24
+ - samples/glimmer_new/hello_world2.rb
25
+
3
26
  ## 0.0.2
4
27
 
5
28
  - Remove forgotten occurrences of pd (puts_debuggerer) from code
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 WX 0.0.2
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 WX 0.0.5
2
2
  ## wxWidgets Ruby Desktop Development GUI Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-wx.svg)](http://badge.fury.io/rb/glimmer-dsl-wx)
4
4
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -14,14 +14,80 @@
14
14
  - Scaffolding for new custom controls, apps, and gems
15
15
  - Native-Executable packaging on Mac, Windows, and Linux.
16
16
 
17
- Nothing Sample:
17
+ **Hello, World!**
18
+
19
+ ![Hello, World!](https://github.com/AndyObtiva/glimmer-dsl-wx/blob/master/screenshots/glimmer-dsl-wx-sample-hello-world.png?raw=true)
20
+
21
+ ```ruby
22
+ require 'glimmer-dsl-wx'
23
+
24
+ include Glimmer
25
+
26
+ frame(title: 'Hello, World!')
27
+ ```
28
+
29
+ Alternate Syntax:
30
+
31
+ ```ruby
32
+ require 'glimmer-dsl-wx'
33
+
34
+ include Glimmer
35
+
36
+ frame {
37
+ title 'Hello, World!'
38
+ }
39
+ ```
40
+
41
+ **Hello Button!**
42
+
43
+
44
+ ![Hello, Button!](https://github.com/AndyObtiva/glimmer-dsl-wx/blob/master/screenshots/glimmer-dsl-wx-sample-hello-button.png?raw=true)
45
+
46
+ ![Hello, Button! Clicked](https://github.com/AndyObtiva/glimmer-dsl-wx/blob/master/screenshots/glimmer-dsl-wx-sample-hello-button-clicked.png?raw=true)
47
+
48
+
49
+ ```ruby
50
+ require 'glimmer-dsl-wx'
51
+
52
+ include Glimmer
53
+
54
+ frame(title: 'Hello, Button!') { |f|
55
+ button(label: 'Click To Find Who Built This!') {
56
+ on_button do
57
+ about_box(
58
+ name: f.title,
59
+ version: Wx::WXRUBY_VERSION,
60
+ description: "This is the Hello, Button! sample",
61
+ developers: ['The Glimmer DSL for WX Development Team']
62
+ )
63
+ end
64
+ }
65
+ }
66
+ ```
67
+
68
+ Alternate Syntax:
18
69
 
19
70
  ```ruby
20
71
  require 'glimmer-dsl-wx'
21
72
 
22
73
  include Glimmer
23
74
 
24
- frame
75
+ frame { |f|
76
+ title 'Hello, Button!'
77
+
78
+ button {
79
+ label 'Click To Find Who Built This!'
80
+
81
+ on_button do
82
+ about_box(
83
+ name: f.title,
84
+ version: Wx::WXRUBY_VERSION,
85
+ description: "This is the Hello, Button! sample",
86
+ developers: ['The Glimmer DSL for WX Development Team']
87
+ )
88
+ end
89
+ }
90
+ }
25
91
  ```
26
92
 
27
93
  **[Glimmer](https://rubygems.org/gems/glimmer) DSL Comparison Table:**
@@ -42,6 +108,7 @@ DSL | Platforms | Native? | Vector Graphics? | Pros | Cons | Prereqs
42
108
  ## Table of Contents
43
109
 
44
110
  - [Glimmer DSL for WX](#)
111
+ - [Usage](#usage)
45
112
  - [Process](#process)
46
113
  - [Resources](#resources)
47
114
  - [Help](#help)
@@ -53,6 +120,35 @@ DSL | Platforms | Native? | Vector Graphics? | Pros | Cons | Prereqs
53
120
  - [Contributors](#contributors)
54
121
  - [License](#license)
55
122
 
123
+ ## Usage
124
+
125
+ Follow instructions for installing [wxruby3](https://github.com/mcorino/wxRuby3) on a supported platform (Linux or Windows):
126
+ https://github.com/mcorino/wxRuby3/blob/master/INSTALL.md
127
+
128
+ Install [glimmer-dsl-wx](https://rubygems.org/gems/glimmer-dsl-wx) gem directly into a [maintained Ruby version](https://www.ruby-lang.org/en/downloads/):
129
+
130
+ ```
131
+ gem install glimmer-dsl-wx
132
+ ```
133
+
134
+ Or install via Bundler `Gemfile`:
135
+
136
+ ```ruby
137
+ gem 'glimmer-dsl-wx', '~> 0.0.5'
138
+ ```
139
+
140
+ Test that installation worked by running a sample:
141
+
142
+ ```
143
+ ruby -r glimmer-dsl-wx -e "require 'samples/glimmer_new/hello_world'"
144
+ ```
145
+
146
+ If you cloned project, test by running a sample locally:
147
+
148
+ ```
149
+ ruby -r ./lib/glimmer-dsl-wx.rb samples/glimmer_new/hello_world.rb
150
+ ```
151
+
56
152
  ## Process
57
153
 
58
154
  [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.5
data/bin/girb CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # Copyright (c) 2020-2021 Andy Maleh
3
+ # Copyright (c) 2023 Andy Maleh
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining
6
6
  # a copy of this software and associated documentation files (the
data/bin/girb_runner.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -23,7 +23,7 @@
23
23
  require 'fileutils'
24
24
  require 'etc'
25
25
 
26
- require_relative '../lib/glimmer-dsl-libui'
26
+ require_relative '../lib/glimmer-dsl-wx'
27
27
 
28
28
  include Glimmer
29
29
 
Binary file
@@ -0,0 +1,34 @@
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer/dsl/static_expression'
23
+
24
+ module Glimmer
25
+ module DSL
26
+ module Wx
27
+ class AboutBoxExpression < StaticExpression
28
+ def interpret(parent, keyword, *args, &block)
29
+ ::Wx.about_box(*args)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -29,35 +29,34 @@ module Glimmer
29
29
  include ParentExpression
30
30
 
31
31
  def can_interpret?(parent, keyword, *args, &block)
32
- # Glimmer::Wx::ControlProxy.exists?(keyword)
33
- ::Wx.constants.include?(keyword.capitalize.to_sym)
32
+ Glimmer::Wx::ControlProxy.exists?(keyword)
34
33
  end
35
34
 
36
35
  def interpret(parent, keyword, *args, &block)
37
- # Glimmer::Wx::ControlProxy.create(keyword, parent, args, &block)
38
- control = ::Wx.const_get(keyword.capitalize.to_sym).new(nil)
39
- control.show if keyword == 'frame'
40
- control
36
+ Glimmer::Wx::ControlProxy.create(keyword, parent, args, &block)
41
37
  end
42
38
 
43
39
  def around(parent, keyword, args, block, &interpret_and_add_content)
44
40
  if keyword == 'frame'
45
41
  ::Wx::App.run do
46
- interpret_and_add_content.call
42
+ frame_proxy = interpret_and_add_content.call
43
+ app_name = frame_proxy.app_name || frame_proxy.title
44
+ self.app_name = app_name unless app_name.nil?
47
45
  end
48
46
  else
49
47
  interpret_and_add_content.call
50
48
  end
51
49
  end
52
50
 
53
- # def add_content(parent, keyword, *args, &block)
54
- # options = args.last.is_a?(Hash) ? args.last : {post_add_content: true}
55
- # super
56
- # parent&.post_add_content if options[:post_add_content]
57
- # end
51
+ def add_content(parent, keyword, *args, &block)
52
+ options = args.last.is_a?(Hash) ? args.last : {post_add_content: true}
53
+ options[:post_add_content] = true if options[:post_add_content].nil?
54
+ super
55
+ parent&.post_add_content if options[:post_add_content]
56
+ end
58
57
  end
59
58
  end
60
59
  end
61
60
  end
62
61
 
63
- # require 'glimmer/wx/control_proxy'
62
+ require 'glimmer/wx/control_proxy'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -20,8 +20,7 @@
20
20
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
22
  require 'glimmer/dsl/engine'
23
- # Dir[File.expand_path('*_expression.rb', __dir__)].each {|f| require f}
24
- require 'glimmer/dsl/wx/control_expression'
23
+ Dir[File.expand_path('*_expression.rb', __dir__)].each {|f| require f}
25
24
 
26
25
  # Glimmer DSL expression configuration module
27
26
  #
@@ -41,7 +40,10 @@ module Glimmer
41
40
  # shine_data_binding
42
41
  # property
43
42
  # operation
43
+ # control
44
44
  %w[
45
+ listener
46
+ property
45
47
  control
46
48
  ]
47
49
  )
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -19,23 +19,23 @@
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 'glimmer/dsl/expression'
23
- # require 'glimmer/libui/control_proxy'
24
- #
25
- # module Glimmer
26
- # module DSL
27
- # module Libui
28
- # class ListenerExpression < Expression
29
- # def can_interpret?(parent, keyword, *args, &block)
30
- # (parent.is_a?(Glimmer::LibUI::ControlProxy) or parent.is_a?(Glimmer::LibUI::Shape)) and
31
- # block_given? and
32
- # parent.can_handle_listener?(keyword)
33
- # end
34
- #
35
- # def interpret(parent, keyword, *args, &block)
36
- # parent.handle_listener(keyword, &block)
37
- # end
38
- # end
39
- # end
40
- # end
41
- # end
22
+ require 'glimmer/dsl/expression'
23
+ require 'glimmer/wx/control_proxy'
24
+
25
+ module Glimmer
26
+ module DSL
27
+ module Wx
28
+ class ListenerExpression < Expression
29
+ def can_interpret?(parent, keyword, *args, &block)
30
+ parent.is_a?(Glimmer::Wx::ControlProxy) and
31
+ block_given? and
32
+ parent&.can_handle_listener?(keyword)
33
+ end
34
+
35
+ def interpret(parent, keyword, *args, &block)
36
+ parent.handle_listener(keyword, &block)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -19,30 +19,23 @@
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 'glimmer/dsl/expression'
23
- # require 'glimmer/libui/control_proxy'
24
- # require 'glimmer/libui/shape'
25
- # require 'glimmer/libui/attributed_string'
26
- #
27
- # module Glimmer
28
- # module DSL
29
- # module Libui
30
- # class PropertyExpression < Expression
31
- # def can_interpret?(parent, keyword, *args, &block)
32
- # (
33
- # parent.is_a?(Glimmer::LibUI::ControlProxy) or
34
- # parent.is_a?(Glimmer::LibUI::Shape) or
35
- # parent.is_a?(Glimmer::LibUI::AttributedString) or
36
- # parent.is_a?(Glimmer::LibUI::CustomControl)
37
- # ) and
38
- # block.nil? and
39
- # parent.respond_to?("#{keyword}=", *args)
40
- # end
41
- #
42
- # def interpret(parent, keyword, *args, &block)
43
- # parent.send("#{keyword}=", *args)
44
- # end
45
- # end
46
- # end
47
- # end
48
- # end
22
+ require 'glimmer/dsl/expression'
23
+ require 'glimmer/wx/control_proxy'
24
+
25
+ module Glimmer
26
+ module DSL
27
+ module Wx
28
+ class PropertyExpression < Expression
29
+ def can_interpret?(parent, keyword, *args, &block)
30
+ parent.is_a?(Glimmer::Wx::ControlProxy) and
31
+ block.nil? and
32
+ parent.respond_to?("#{keyword}=", *args)
33
+ end
34
+
35
+ def interpret(parent, keyword, *args, &block)
36
+ parent.send("#{keyword}=", *args)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -0,0 +1,52 @@
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer/wx/parent'
23
+
24
+ module Glimmer
25
+ module Wx
26
+ class ControlProxy
27
+ # Proxy for Wx frame objects
28
+ #
29
+ # Follows the Proxy Design Pattern
30
+ class FrameProxy < ControlProxy
31
+ include Parent
32
+
33
+ attr_accessor :app_name
34
+
35
+ def initialize(keyword, parent, args, &block)
36
+ self.app_name = options.delete(:app_name)
37
+ super(keyword, parent, args, &block)
38
+ end
39
+
40
+ def title=(value)
41
+ # wxWidgets does not allow setting a frame title if set already
42
+ super if (options[:title] || options['title']).nil?
43
+ end
44
+
45
+ def post_add_content
46
+ super
47
+ show
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -19,53 +19,43 @@
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 'glimmer/libui/data_bindable'
22
+ require 'glimmer/wx/data_bindable'
23
+ require 'glimmer/wx/parent'
23
24
 
24
25
  module Glimmer
25
- module LibUI
26
- # Proxy for LibUI control objects
26
+ module Wx
27
+ # Proxy for Wx control objects
27
28
  #
28
29
  # Follows the Proxy Design Pattern
29
30
  class ControlProxy
30
31
  class << self
31
32
  def exists?(keyword)
32
- ::LibUI.respond_to?("new_#{keyword}") or
33
- ::LibUI.respond_to?(keyword) or
33
+ ::Wx.constants.include?(wx_constant_symbol(keyword)) or
34
34
  descendant_keyword_constant_map.keys.include?(keyword)
35
35
  end
36
36
 
37
37
  def create(keyword, parent, args, &block)
38
- widget_proxy_class(keyword).new(keyword, parent, args, &block).tap {|c| control_proxies << c}
38
+ control_proxy_class(keyword).new(keyword, parent, args, &block)
39
39
  end
40
40
 
41
- def widget_proxy_class(keyword)
41
+ def control_proxy_class(keyword)
42
42
  descendant_keyword_constant_map[keyword] || ControlProxy
43
43
  end
44
44
 
45
- # autosave all controls in this array to avoid garbage collection
46
- def control_proxies
47
- @@control_proxies = [] unless defined?(@@control_proxies)
48
- @@control_proxies
49
- end
50
-
51
- def main_window_proxy
52
- control_proxies.find {|c| c.is_a?(WindowProxy)}
53
- end
54
-
55
- def menu_proxies
56
- control_proxies.select {|c| c.keyword == 'menu' }
57
- end
58
-
59
- def image_proxies
60
- control_proxies.select {|c| c.keyword == 'image' }
45
+ def new_control(keyword, parent, args)
46
+ args = args.clone || []
47
+ if args.last.is_a?(Hash)
48
+ args[-1] = args[-1].clone
49
+ end
50
+ ::Wx.const_get(wx_constant_symbol(keyword)).new(parent, *args)
61
51
  end
62
52
 
63
- def new_control(keyword, args)
64
- ::LibUI.send("new_#{keyword}", *args)
53
+ def wx_constant_symbol(keyword)
54
+ keyword.to_s.camelcase(:upper).to_sym
65
55
  end
66
56
 
67
57
  def constant_symbol(keyword)
68
- "#{keyword.camelcase(:upper)}Proxy".to_sym
58
+ "#{keyword.to_s.camelcase(:upper)}Proxy".to_sym
69
59
  end
70
60
 
71
61
  def keyword(constant_symbol)
@@ -73,7 +63,7 @@ module Glimmer
73
63
  end
74
64
 
75
65
  def descendant_keyword_constant_map
76
- @descendant_keyword_constant_map ||= add_aliases_to_keyword_constant_map(map_descendant_keyword_constants_for(self))
66
+ @descendant_keyword_constant_map ||= map_descendant_keyword_constants_for(self)
77
67
  end
78
68
 
79
69
  def reset_descendant_keyword_constant_map
@@ -92,41 +82,12 @@ module Glimmer
92
82
  end
93
83
  accumulator
94
84
  end
95
-
96
- private
97
-
98
- def add_aliases_to_keyword_constant_map(keyword_constant_map)
99
- KEYWORD_ALIASES.each do |keyword, alias_keyword|
100
- keyword_constant_map[alias_keyword] = keyword_constant_map[keyword]
101
- end
102
- keyword_constant_map
103
- end
104
85
  end
105
86
 
106
87
  include DataBindable
107
88
 
108
- KEYWORD_ALIASES = {
109
- 'msg_box' => 'message_box',
110
- 'msg_box_error' => 'message_box_error',
111
- }
112
-
113
- BOOLEAN_PROPERTIES = %w[
114
- padded
115
- checked
116
- enabled toplevel visible
117
- read_only
118
- margined
119
- borderless fullscreen
120
- stretchy
121
- ]
122
-
123
- STRING_PROPERTIES = %w[
124
- text
125
- title
126
- ]
127
-
128
- # libui returns the contained LibUI object
129
- attr_reader :parent_proxy, :libui, :args, :keyword, :block, :content_added
89
+ # wx returns the contained LibUI object
90
+ attr_reader :parent_proxy, :wx, :args, :keyword, :block, :content_added
130
91
  alias content_added? content_added
131
92
 
132
93
  def initialize(keyword, parent, args, &block)
@@ -134,11 +95,14 @@ module Glimmer
134
95
  @parent_proxy = parent
135
96
  @args = args
136
97
  @block = block
137
- @enabled = true
138
98
  build_control
139
99
  post_add_content if @block.nil?
140
100
  end
141
101
 
102
+ def options
103
+ @args&.last&.is_a?(Hash) ? @args.last : {}
104
+ end
105
+
142
106
  # Subclasses may override to perform post add_content work (normally must call super)
143
107
  def post_add_content
144
108
  unless @content_added
@@ -152,7 +116,7 @@ module Glimmer
152
116
  # No Op by default
153
117
  end
154
118
 
155
- def window_proxy
119
+ def frame_proxy
156
120
  found_proxy = self
157
121
  until found_proxy.nil? || found_proxy.is_a?(WindowProxy)
158
122
  found_proxy = found_proxy.parent_proxy
@@ -161,31 +125,17 @@ module Glimmer
161
125
  end
162
126
 
163
127
  def can_handle_listener?(listener_name)
164
- ::LibUI.respond_to?("#{libui_api_keyword}_#{listener_name}") ||
165
- ::LibUI.respond_to?("control_#{listener_name}") ||
166
- has_custom_listener?(listener_name)
128
+ listener_name.to_s.start_with?('on_')
129
+ # TODO figure out if there is a way to check this in Wx or not.
130
+ # has_custom_listener?(listener_name)
167
131
  end
168
132
 
169
133
  def handle_listener(listener_name, &listener)
170
- # replace first listener argument (control libui pointer) with actual Ruby libui object
171
- safe_listener = Proc.new { |*args| listener.call(self, *args[1..-1]) }
172
- if ::LibUI.respond_to?("#{libui_api_keyword}_#{listener_name}")
173
- if listeners[listener_name].nil?
174
- ::LibUI.send("#{libui_api_keyword}_#{listener_name}", libui) do |*args|
175
- listeners_for(listener_name).map { |listener| listener.call(*args) }.last
176
- end
177
- end
178
- listeners_for(listener_name) << safe_listener
179
- elsif ::LibUI.respond_to?("control_#{listener_name}")
180
- if listeners[listener_name].nil?
181
- ::LibUI.send("control_#{listener_name}", libui) do |*args|
182
- listeners_for(listener_name).map { |listener| listener.call(*args) }.last
183
- end
184
- end
185
- listeners_for(listener_name) << safe_listener
186
- elsif has_custom_listener?(listener_name)
187
- handle_custom_listener(listener_name, &listener)
188
- end
134
+ event = listener_name.to_s.sub('on_', '')
135
+ @parent_proxy.wx.send("evt_#{event}", @wx, &listener)
136
+ # elsif has_custom_listener?(listener_name)
137
+ # handle_custom_listener(listener_name, &listener)
138
+ # end
189
139
  end
190
140
 
191
141
  def listeners
@@ -238,31 +188,14 @@ module Glimmer
238
188
  end
239
189
 
240
190
  def respond_to?(method_name, *args, &block)
241
- respond_to_libui?(method_name, *args, &block) ||
242
- (
243
- append_properties.include?(method_name.to_s) ||
244
- (append_properties.include?(method_name.to_s.sub(/\?$/, '')) && BOOLEAN_PROPERTIES.include?(method_name.to_s.sub(/\?$/, ''))) ||
245
- append_properties.include?(method_name.to_s.sub(/=$/, ''))
246
- ) ||
191
+ @wx.respond_to?(method_name, true) ||
247
192
  can_handle_listener?(method_name.to_s) ||
248
193
  super(method_name, true)
249
194
  end
250
195
 
251
- def respond_to_libui?(method_name, *args, &block)
252
- ::LibUI.respond_to?("control_#{method_name}") or
253
- (::LibUI.respond_to?("control_#{method_name.to_s.sub(/\?$/, '')}") && BOOLEAN_PROPERTIES.include?(method_name.to_s.sub(/\?$/, '')) ) or
254
- ::LibUI.respond_to?("control_set_#{method_name.to_s.sub(/=$/, '')}") or
255
- ::LibUI.respond_to?("#{libui_api_keyword}_#{method_name}") or
256
- (::LibUI.respond_to?("#{libui_api_keyword}_#{method_name.to_s.sub(/\?$/, '')}") && BOOLEAN_PROPERTIES.include?(method_name.to_s.sub(/\?$/, '')) ) or
257
- ::LibUI.respond_to?("#{libui_api_keyword}_set_#{method_name.to_s.sub(/=$/, '')}")
258
- end
259
-
260
196
  def method_missing(method_name, *args, &block)
261
- if respond_to_libui?(method_name, *args, &block)
262
- send_to_libui(method_name, *args, &block)
263
- elsif append_properties.include?(method_name.to_s) ||
264
- append_properties.include?(method_name.to_s.sub(/(=|\?)$/, ''))
265
- append_property(method_name, *args)
197
+ if @wx.respond_to?(method_name, true)
198
+ @wx.send(method_name, *args, &block)
266
199
  elsif can_handle_listener?(method_name.to_s)
267
200
  handle_listener(method_name.to_s, &block)
268
201
  else
@@ -270,116 +203,6 @@ module Glimmer
270
203
  end
271
204
  end
272
205
 
273
- def send_to_libui(method_name, *args, &block)
274
- if ::LibUI.respond_to?("#{libui_api_keyword}_#{method_name.to_s.sub(/\?$/, '')}") && args.empty?
275
- property = method_name.to_s.sub(/\?$/, '')
276
- value = ::LibUI.send("#{libui_api_keyword}_#{property}", libui, *args)
277
- handle_string_property(property, handle_boolean_property(property, value))
278
- elsif ::LibUI.respond_to?("#{libui_api_keyword}_get_#{method_name.to_s.sub(/\?$/, '')}") && args.empty?
279
- property = method_name.to_s.sub(/\?$/, '')
280
- value = ::LibUI.send("#{libui_api_keyword}_get_#{property}", libui, *args)
281
- handle_string_property(property, handle_boolean_property(property, value))
282
- elsif ::LibUI.respond_to?("#{libui_api_keyword}_set_#{method_name.to_s.sub(/=$/, '')}") && !args.empty?
283
- property = method_name.to_s.sub(/=$/, '')
284
- args[0] = Glimmer::LibUI.boolean_to_integer(args.first) if BOOLEAN_PROPERTIES.include?(property) && (args.first.is_a?(TrueClass) || args.first.is_a?(FalseClass))
285
- args[0] = '' if STRING_PROPERTIES.include?(property) && args.first == nil
286
- if property.to_s == 'checked'
287
- current_value = Glimmer::LibUI.integer_to_boolean(::LibUI.send("#{libui_api_keyword}_checked", libui), allow_nil: false)
288
- new_value = Glimmer::LibUI.integer_to_boolean(args[0], allow_nil: false)
289
- ::LibUI.send("#{libui_api_keyword}_set_#{property}", libui, *args) if new_value != current_value
290
- else
291
- ::LibUI.send("#{libui_api_keyword}_set_#{property}", libui, *args)
292
- end
293
- elsif ::LibUI.respond_to?("#{libui_api_keyword}_#{method_name}") && !args.empty?
294
- ::LibUI.send("#{libui_api_keyword}_#{method_name}", libui, *args)
295
- elsif ::LibUI.respond_to?("control_#{method_name.to_s.sub(/\?$/, '')}") && args.empty?
296
- property = method_name.to_s.sub(/\?$/, '')
297
- value = ::LibUI.send("control_#{property}", libui, *args)
298
- handle_string_property(property, handle_boolean_property(property, value))
299
- elsif ::LibUI.respond_to?("control_set_#{method_name.to_s.sub(/=$/, '')}")
300
- property = method_name.to_s.sub(/=$/, '')
301
- args[0] = Glimmer::LibUI.boolean_to_integer(args.first) if BOOLEAN_PROPERTIES.include?(property) && (args.first.is_a?(TrueClass) || args.first.is_a?(FalseClass))
302
- args[0] = '' if STRING_PROPERTIES.include?(property) && args.first == nil
303
- ::LibUI.send("control_set_#{method_name.to_s.sub(/=$/, '')}", libui, *args)
304
- elsif ::LibUI.respond_to?("control_#{method_name}") && !args.empty?
305
- ::LibUI.send("control_#{method_name}", libui, *args)
306
- end
307
- end
308
-
309
- def append_properties
310
- @parent_proxy&.class&.constants&.include?(:APPEND_PROPERTIES) ? @parent_proxy.class::APPEND_PROPERTIES : []
311
- end
312
-
313
- def append_property(property, value = nil)
314
- property = property.to_s.sub(/(=|\?)$/, '')
315
- @append_property_hash ||= {}
316
- if value.nil?
317
- value = @append_property_hash[property]
318
- handle_string_property(property, handle_boolean_property(property, value))
319
- else
320
- value = Glimmer::LibUI.boolean_to_integer(value) if BOOLEAN_PROPERTIES.include?(property) && (value.is_a?(TrueClass) || value.is_a?(FalseClass))
321
- @append_property_hash[property] = value
322
- end
323
- end
324
-
325
- def libui_api_keyword
326
- @keyword
327
- end
328
-
329
- def destroy
330
- # TODO exclude menus from this initial return
331
- return if !is_a?(ControlProxy::WindowProxy) && ControlProxy.main_window_proxy&.destroying?
332
- data_binding_model_attribute_observer_registrations.each(&:deregister)
333
- if parent_proxy.nil?
334
- default_destroy
335
- else
336
- parent_proxy.destroy_child(self)
337
- end
338
- end
339
-
340
- def destroy_child(child)
341
- child.default_destroy
342
- children.delete(child)
343
- end
344
-
345
- def default_destroy
346
- deregister_all_custom_listeners
347
- send_to_libui('destroy')
348
- ControlProxy.control_proxies.delete(self)
349
- end
350
-
351
- def enabled(value = nil)
352
- if value.nil?
353
- @enabled
354
- elsif value != @enabled
355
- @enabled = value == 1 || value
356
- if value == 1 || value
357
- send_to_libui('enable')
358
- else
359
- send_to_libui('disable')
360
- end
361
- end
362
- end
363
- alias enabled? enabled
364
- alias set_enabled enabled
365
- alias enabled= enabled
366
-
367
- def visible(value = nil)
368
- current_value = send_to_libui('visible')
369
- if value.nil?
370
- current_value
371
- elsif value != current_value
372
- if value == 1 || value
373
- send_to_libui('show')
374
- else
375
- send_to_libui('hide')
376
- end
377
- end
378
- end
379
- alias visible? visible
380
- alias set_visible visible
381
- alias visible= visible
382
-
383
206
  def content(&block)
384
207
  Glimmer::DSL::Engine.add_content(self, Glimmer::DSL::Libui::ControlExpression.new, @keyword, {post_add_content: @content_added}, &block)
385
208
  end
@@ -387,20 +210,15 @@ module Glimmer
387
210
  private
388
211
 
389
212
  def build_control
390
- @libui = if ::LibUI.respond_to?("new_#{keyword}")
391
- ControlProxy.new_control(@keyword, @args)
392
- elsif ::LibUI.respond_to?(keyword)
393
- @args[0] = @args.first.libui if @args.first.is_a?(ControlProxy)
394
- ::LibUI.send(@keyword, *@args)
213
+ if is_a?(Parent)
214
+ @wx = ControlProxy.new_control(@keyword, @parent_proxy&.wx, @args)
215
+ else
216
+ sizer = ::Wx::HBoxSizer.new
217
+ @parent_proxy.sizer = sizer
218
+ @wx = ControlProxy.new_control(@keyword, @parent_proxy&.wx, @args)
219
+ sizer.add @wx, 0, ::Wx::RIGHT, 8
395
220
  end
396
- end
397
-
398
- def handle_boolean_property(property, value)
399
- BOOLEAN_PROPERTIES.include?(property) ? Glimmer::LibUI.integer_to_boolean(value) : value
400
- end
401
-
402
- def handle_string_property(property, value)
403
- STRING_PROPERTIES.include?(property) ? value.to_s : value
221
+ @wx
404
222
  end
405
223
  end
406
224
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
20
20
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
22
  module Glimmer
23
- module LibUI
23
+ module Wx
24
24
  # Parent controls and shapes who have children and add child post_initialize_child
25
25
  module DataBindable
26
26
  # Sets up read/write (bidirectional) data-binding
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
20
20
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
22
  module Glimmer
23
- module LibUI
23
+ module Wx
24
24
  # Parent controls and shapes who have children and add child post_initialize_child
25
25
  module Parent
26
26
  # Subclasses can override and must call super (passing add_child: false to cancel adding child to children)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2021-2023 Andy Maleh
1
+ # Copyright (c) 2023 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -0,0 +1,37 @@
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer-dsl-wx'
23
+
24
+ include Glimmer
25
+
26
+ frame(title: 'Hello, Button!') { |f|
27
+ button(label: 'Click To Find Who Built This!') {
28
+ on_button do
29
+ about_box(
30
+ name: f.title,
31
+ version: Wx::WXRUBY_VERSION,
32
+ description: "This is the Hello, Button! sample",
33
+ developers: ['The Glimmer DSL for WX Development Team']
34
+ )
35
+ end
36
+ }
37
+ }
@@ -0,0 +1,41 @@
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer-dsl-wx'
23
+
24
+ include Glimmer
25
+
26
+ frame { |f|
27
+ title 'Hello, Button!'
28
+
29
+ button {
30
+ label 'Click To Find Who Built This!'
31
+
32
+ on_button do
33
+ about_box(
34
+ name: f.title,
35
+ version: Wx::WXRUBY_VERSION,
36
+ description: "This is the Hello, Button! sample",
37
+ developers: ['The Glimmer DSL for WX Development Team']
38
+ )
39
+ end
40
+ }
41
+ }
@@ -0,0 +1,26 @@
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer-dsl-wx'
23
+
24
+ include Glimmer
25
+
26
+ frame(title: 'Hello, World!')
@@ -0,0 +1,28 @@
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer-dsl-wx'
23
+
24
+ include Glimmer
25
+
26
+ frame {
27
+ title 'Hello, World!'
28
+ }
@@ -1,24 +1,29 @@
1
- #!/usr/bin/env ruby
2
- # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
- # Adapted for wxRuby3
4
- # Copyright (c) M.J.N. Corino, The Netherlands
5
- ###
6
-
7
- # require 'wx'
1
+ # Copyright (c) 2023 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8
21
 
9
- # This is the minimum code to start a WxRuby app - create a Frame, and
10
- # show it.
11
- # Wx::App.run do
12
- ### self.app_name = 'Nothing'
13
- ### frame = Wx::Frame.new(nil, title: "Empty wxRuby App")
14
- # frame = Wx::Frame.new(nil)
15
- # frame.title = "Empty wxRuby App"
16
- # frame.show
17
- # frame
18
- # end
19
-
20
- require './lib/glimmer-dsl-wx'
22
+ require 'glimmer-dsl-wx'
21
23
 
22
24
  include Glimmer
23
25
 
24
- frame
26
+ frame {
27
+ app_name 'Nothing'
28
+ title 'Empty wxRuby App'
29
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-wx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
@@ -230,6 +230,7 @@ files:
230
230
  - icons/glimmer.png
231
231
  - lib/glimmer-dsl-wx.rb
232
232
  - lib/glimmer-dsl-wx/ext/glimmer.rb
233
+ - lib/glimmer/dsl/wx/about_box_expression.rb
233
234
  - lib/glimmer/dsl/wx/bind_expression.rb
234
235
  - lib/glimmer/dsl/wx/control_expression.rb
235
236
  - lib/glimmer/dsl/wx/data_binding_expression.rb
@@ -241,6 +242,7 @@ files:
241
242
  - lib/glimmer/dsl/wx/shine_data_binding_expression.rb
242
243
  - lib/glimmer/proc_tracker.rb
243
244
  - lib/glimmer/wx/control_proxy.rb
245
+ - lib/glimmer/wx/control_proxy/frame_proxy.rb
244
246
  - lib/glimmer/wx/data_bindable.rb
245
247
  - lib/glimmer/wx/parent.rb
246
248
  - samples/art/wxruby-128x128.png
@@ -248,6 +250,10 @@ files:
248
250
  - samples/art/wxruby-64x64.png
249
251
  - samples/art/wxruby.ico
250
252
  - samples/art/wxruby.png
253
+ - samples/glimmer_new/hello_button.rb
254
+ - samples/glimmer_new/hello_button2.rb
255
+ - samples/glimmer_new/hello_world.rb
256
+ - samples/glimmer_new/hello_world2.rb
251
257
  - samples/minimal/mondrian.ico
252
258
  - samples/minimal/mondrian.png
253
259
  - samples/minimal/nothing.rb