glimmer-dsl-wx 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a58eca665a94827505984c32aca6e70f41b74227adefc3847d6c36272ccd0125
4
+ data.tar.gz: c92afe6e99a78d32b07df6f6e30a70cbd73a65f136dc4f20cdac02a591bc099c
5
+ SHA512:
6
+ metadata.gz: 4720d808e123c3a67baf8e0fc99b4a5c12c5d1929ba1279cc4ac47fdc24d7fffb61c1aa11d9d303bbbfcd2ad71cf5742b5073e36717ea31bda97b54776ef9b10
7
+ data.tar.gz: eed7d3e70d290ac90fe36a2a8502c516febccc4a09f8fc9667cd15886d250a3b3683c245cc72930fe99fe578e48588b7612bdb86a026e38226d3b61fd6667e79
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # Change Log
2
+
3
+ ## 0.0.2
4
+
5
+ - Remove forgotten occurrences of pd (puts_debuggerer) from code
6
+
7
+ ## 0.0.1
8
+
9
+ - First alpha release of Glimmer DSL for WX for wxWidgets GUI Toolkit, using wxruby3 binding, and supporting "nothing" sample
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
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.
data/README.md ADDED
@@ -0,0 +1,120 @@
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
2
+ ## wxWidgets Ruby Desktop Development GUI Library
3
+ [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-wx.svg)](http://badge.fury.io/rb/glimmer-dsl-wx)
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)
5
+
6
+ [Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [WX](https://www.wxwidgets.org/) is an [MRI Ruby](https://www.ruby-lang.org) desktop development GUI (Graphical User Interface) library for the cross-platform native widget [wxWidgets](https://www.wxwidgets.org/) GUI toolkit. It provides a Glimmer GUI DSL on top of the [wxruby3](https://github.com/mcorino/wxRuby3) binding.
7
+
8
+ [Glimmer DSL for WX](https://rubygems.org/gems/glimmer-dsl-wx) aims to provide a DSL similar to the [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) to enable more productive desktop development in Ruby with:
9
+ - [Declarative DSL syntax](#glimmer-gui-dsl-concepts) that visually maps to the GUI control hierarchy
10
+ - [Convention over configuration](#smart-defaults-and-conventions) via smart defaults and automation of low-level details
11
+ - Requiring the [least amount of syntax](#glimmer-gui-dsl-concepts) possible to build GUI
12
+ - [Custom Control](#custom-keywords) support
13
+ - [Bidirectional/Unidirectional Data-Binding](#data-binding) to declaratively wire and automatically synchronize GUI Views with Models
14
+ - Scaffolding for new custom controls, apps, and gems
15
+ - Native-Executable packaging on Mac, Windows, and Linux.
16
+
17
+ Nothing Sample:
18
+
19
+ ```ruby
20
+ require 'glimmer-dsl-wx'
21
+
22
+ include Glimmer
23
+
24
+ frame
25
+ ```
26
+
27
+ **[Glimmer](https://rubygems.org/gems/glimmer) DSL Comparison Table:**
28
+ DSL | Platforms | Native? | Vector Graphics? | Pros | Cons | Prereqs
29
+ ----|-----------|---------|------------------|------|------|--------
30
+ [Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)](https://github.com/AndyObtiva/glimmer-dsl-swt) | Mac / Windows / Linux | Yes | Yes (Canvas Shape DSL) | Very Mature / Scaffolding / Native Executable Packaging / Custom Widgets | Slow JRuby Startup Time / Heavy Memory Footprint | Java / JRuby
31
+ [Glimmer DSL for Opal (Pure Ruby Web GUI and Auto-Webifier of Desktop Apps)](https://github.com/AndyObtiva/glimmer-dsl-opal) | All Web Browsers | No | Yes (Canvas Shape DSL) | Simpler than All JavaScript Technologies / Auto-Webify Desktop Apps | Setup Process / Only Rails 5 Support for Now | Rails
32
+ [Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-libui) | Mac / Windows / Linux | Yes | Yes (Area API) | Fast Startup Time / Light Memory Footprint | LibUI is an Incomplete Mid-Alpha Only | None Other Than MRI Ruby
33
+ [Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-tk) | Mac / Windows / Linux | Some Native-Themed Widgets (Not Truly Native) | Yes (Canvas) | Fast Startup Time / Light Memory Footprint | Complicated Setup / Widgets Do Not Look Truly Native, Espcially on Linux | ActiveTcl / MRI Ruby
34
+ [Glimmer DSL for GTK (Ruby-GNOME Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-gtk) | Mac / Windows / Linux | Only on Linux | Yes (Cairo) | Complete Access to GNOME Features on Linux (Forte) | Not Native on Mac and Windows | None Other Than MRI Ruby on Linux / Brew Packages on Mac / MSYS & MING Toolchains on Windows / MRI Ruby
35
+ [Glimmer DSL for FX (FOX Toolkit Ruby Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-fx) | Mac (requires XQuartz) / Windows / Linux | No | Yes (Canvas) | No Prerequisites on Windows (Forte Since Binaries Are Included Out of The Box) | Widgets Do Not Look Native / Mac Usage Obtrusively Starts XQuartz | None Other Than MRI Ruby on Windows / XQuarts on Mac / MRI Ruby
36
+ [Glimmer DSL for WX (wxWidgets Ruby Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-wx) | Mac / Windows / Linux | Yes | Yes | Fast Startup Time / Light Memory Footprint | wxruby3 is still beta and does not support Mac yet | wxWidgets library, Doxygen, and other prereqs
37
+ [Glimmer DSL for JFX (JRuby JavaFX Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-jfx) | Mac / Windows / Linux | No | Yes (javafx.scene.shape and javafx.scene.canvas) | Rich in Custom Widgets | Slow JRuby Startup Time / Heavy Memory Footprint / Widgets Do Not Look Native | Java / JRuby / JavaFX SDK
38
+ [Glimmer DSL for Swing (JRuby Swing Desktop Development GUI Library)](https://github.com/AndyObtiva/glimmer-dsl-swing) | Mac / Windows / Linux | No | Yes (Java2D) | Very Mature | Slow JRuby Startup Time / Heavy Memory Footprint / Widgets Do Not Look Native | Java / JRuby
39
+ [Glimmer DSL for XML (& HTML)](https://github.com/AndyObtiva/glimmer-dsl-xml) | All Web Browsers | No | Yes (SVG) | Programmable / Lighter-weight Than Actual XML | XML Elements Are Sometimes Not Well-Named (Many Types of Input) | None
40
+ [Glimmer DSL for CSS](https://github.com/AndyObtiva/glimmer-dsl-css) | All Web Browsers | No | Yes | Programmable | CSS Is Over-Engineered / Too Many Features To Learn | None
41
+
42
+ ## Table of Contents
43
+
44
+ - [Glimmer DSL for WX](#)
45
+ - [Process](#process)
46
+ - [Resources](#resources)
47
+ - [Help](#help)
48
+ - [Issues](#issues)
49
+ - [Chat](#chat)
50
+ - [Planned Features and Feature Suggestions](#planned-features-and-feature-suggestions)
51
+ - [Change Log](#change-log)
52
+ - [Contributing](#contributing)
53
+ - [Contributors](#contributors)
54
+ - [License](#license)
55
+
56
+ ## Process
57
+
58
+ [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md)
59
+
60
+ ## Resources
61
+
62
+ - [Code Master Blog](https://andymaleh.blogspot.com)
63
+ - [wxruby3 Bindings](https://github.com/mcorino/wxRuby3)
64
+ - [wxWidgets GUI Toolkit](https://www.wxwidgets.org/)
65
+
66
+ ## Help
67
+
68
+ ### Issues
69
+
70
+ If you encounter [issues](https://github.com/AndyObtiva/glimmer-dsl-wx/issues) that are not reported, discover missing features that are not mentioned in [TODO.md](TODO.md), or think up better ways to use [wxWidgets](https://www.wxwidgets.org/) than what is possible with [Glimmer DSL for WX](https://rubygems.org/gems/glimmer-dsl-wx), you may submit an [issue](https://github.com/AndyObtiva/glimmer-dsl-wx/issues/new) or [pull request](https://github.com/AndyObtiva/glimmer-dsl-wx/compare) on [GitHub](https://github.com). In the meantime, you may try older gem versions of [Glimmer DSL for WX](https://rubygems.org/gems/glimmer-dsl-wx) till you find one that works.
71
+
72
+ ### Chat
73
+
74
+ If you need live help, try to [![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)
75
+
76
+ ## Planned Features and Feature Suggestions
77
+
78
+ These features have been planned or suggested. You might see them in a future version of [Glimmer DSL for WX](https://rubygems.org/gems/glimmer-dsl-wx). You are welcome to contribute more feature suggestions.
79
+
80
+ [TODO.md](TODO.md)
81
+
82
+ ## Change Log
83
+
84
+ [CHANGELOG.md](CHANGELOG.md)
85
+
86
+ ## Contributing
87
+
88
+ If you would like to contribute to the project, please adhere to the [Open-Source Etiquette](https://github.com/AndyObtiva/open-source-etiquette) to ensure the best results.
89
+
90
+ - Check out the latest master to make sure the feature hasn't been
91
+ implemented or the bug hasn't been fixed yet.
92
+ - Check out the issue tracker to make sure someone already hasn't
93
+ requested it and/or contributed it.
94
+ - Fork the project.
95
+ - Start a feature/bugfix branch.
96
+ - Commit and push until you are happy with your contribution.
97
+ - Make sure to add tests for it. This is important so I don't break it
98
+ in a future version unintentionally.
99
+ - Please try not to mess with the Rakefile, version, or history. If
100
+ you want to have your own version, or is otherwise necessary, that
101
+ is fine, but please isolate to its own commit so I can cherry-pick
102
+ around it.
103
+
104
+ Note that the latest development sometimes takes place in the [development](https://github.com/AndyObtiva/glimmer-dsl-wx/tree/development) branch (usually deleted once merged back to [master](https://github.com/AndyObtiva/glimmer-dsl-wx)).
105
+
106
+ ## Contributors
107
+
108
+ * [Andy Maleh](https://github.com/AndyObtiva) (Founder)
109
+
110
+ [Click here to view contributor commits.](https://github.com/AndyObtiva/glimmer-dsl-wx/graphs/contributors)
111
+
112
+ ## License
113
+
114
+ [MIT](LICENSE.txt)
115
+
116
+ Copyright (c) 2023 Andy Maleh
117
+
118
+ --
119
+
120
+ [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=40 />](https://github.com/AndyObtiva/glimmer) Built for [Glimmer](https://github.com/AndyObtiva/glimmer) (DSL Framework).
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.2
data/bin/girb ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright (c) 2020-2021 Andy Maleh
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ # This script was written for Windows and Linux only
25
+
26
+ require_relative 'girb_runner'
27
+
28
+ require 'irb'
29
+
30
+ IRB.start('.')
@@ -0,0 +1,47 @@
1
+ # Copyright (c) 2021-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 'puts_debuggerer'
23
+ require 'fileutils'
24
+ require 'etc'
25
+
26
+ require_relative '../lib/glimmer-dsl-libui'
27
+
28
+ include Glimmer
29
+
30
+ GIRB_RUNNER_EXIT_FILE = "#{Dir.home}/.girb_runner_exit"
31
+ FileUtils.rm_rf GIRB_RUNNER_EXIT_FILE
32
+
33
+ @exit_method = method(:exit)
34
+
35
+ @exit_girb_block = lambda do
36
+ FileUtils.touch GIRB_RUNNER_EXIT_FILE
37
+ end
38
+
39
+ def self.exit(*args)
40
+ @exit_girb_block.call
41
+ @exit_method.call(*args)
42
+ end
43
+
44
+ def self.quit(*args)
45
+ @exit_girb_block.call
46
+ @exit_method.call(*args)
47
+ end
Binary file
data/icons/glimmer.png ADDED
Binary file
@@ -0,0 +1,36 @@
1
+ # Copyright (c) 2021-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
+ # require 'glimmer/dsl/bind_expression'
24
+ #
25
+ # module Glimmer
26
+ # module DSL
27
+ # module Libui
28
+ ### Responsible for setting up the return value of the bind keyword (command symbol)
29
+ ### as a ModelBinding. It is then used by another command handler like
30
+ ### DataBindingExpression
31
+ # class BindExpression < StaticExpression
32
+ # include Glimmer::DSL::BindExpression
33
+ # end
34
+ # end
35
+ # end
36
+ # end
@@ -0,0 +1,63 @@
1
+ # Copyright (c) 2021-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/expression'
23
+ require 'glimmer/dsl/parent_expression'
24
+
25
+ module Glimmer
26
+ module DSL
27
+ module Wx
28
+ class ControlExpression < Expression
29
+ include ParentExpression
30
+
31
+ def can_interpret?(parent, keyword, *args, &block)
32
+ # Glimmer::Wx::ControlProxy.exists?(keyword)
33
+ ::Wx.constants.include?(keyword.capitalize.to_sym)
34
+ end
35
+
36
+ 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
41
+ end
42
+
43
+ def around(parent, keyword, args, block, &interpret_and_add_content)
44
+ if keyword == 'frame'
45
+ ::Wx::App.run do
46
+ interpret_and_add_content.call
47
+ end
48
+ else
49
+ interpret_and_add_content.call
50
+ end
51
+ end
52
+
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
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ # require 'glimmer/wx/control_proxy'
@@ -0,0 +1,45 @@
1
+ # Copyright (c) 2021-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/expression'
23
+ # require 'glimmer/data_binding/model_binding'
24
+ #
25
+ # module Glimmer
26
+ # module DSL
27
+ # module Libui
28
+ ### Responsible for wiring data-binding
29
+ ### Depends on BindExpression
30
+ # class DataBindingExpression < Expression
31
+ # def can_interpret?(parent, keyword, *args, &block)
32
+ # args.size == 1 and
33
+ # args[0].is_a?(DataBinding::ModelBinding) and
34
+ # parent.respond_to?(:data_bind)
35
+ # end
36
+ #
37
+ # def interpret(parent, keyword, *args, &block)
38
+ # property = keyword
39
+ # model_binding = args[0]
40
+ # parent.data_bind(property, model_binding)
41
+ # end
42
+ # end
43
+ # end
44
+ # end
45
+ # end
@@ -0,0 +1,50 @@
1
+ # Copyright (c) 2021-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/engine'
23
+ # Dir[File.expand_path('*_expression.rb', __dir__)].each {|f| require f}
24
+ require 'glimmer/dsl/wx/control_expression'
25
+
26
+ # Glimmer DSL expression configuration module
27
+ #
28
+ # When DSL engine interprets an expression, it attempts to handle
29
+ # with expressions listed here in the order specified.
30
+
31
+ # Every expression has a corresponding Expression subclass
32
+ # in glimmer/dsl
33
+
34
+ module Glimmer
35
+ module DSL
36
+ module Wx
37
+ Engine.add_dynamic_expressions(
38
+ Wx,
39
+ # listener
40
+ # data_binding
41
+ # shine_data_binding
42
+ # property
43
+ # operation
44
+ %w[
45
+ control
46
+ ]
47
+ )
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,41 @@
1
+ # Copyright (c) 2021-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/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
@@ -0,0 +1,35 @@
1
+ # Copyright (c) 2021-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
+ # require 'glimmer/dsl/top_level_expression'
24
+ # require 'glimmer/dsl/observe_expression'
25
+ #
26
+ # module Glimmer
27
+ # module DSL
28
+ # module Libui
29
+ # class ObserveExpression < StaticExpression
30
+ # include TopLevelExpression
31
+ # include Glimmer::DSL::ObserveExpression
32
+ # end
33
+ # end
34
+ # end
35
+ # end
@@ -0,0 +1,47 @@
1
+ # Copyright (c) 2021-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/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 OperationExpression < 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)
36
+ # ) and
37
+ # block.nil? and
38
+ # parent.respond_to?(keyword, *args)
39
+ # end
40
+ #
41
+ # def interpret(parent, keyword, *args, &block)
42
+ # parent.send(keyword, *args)
43
+ # end
44
+ # end
45
+ # end
46
+ # end
47
+ # end
@@ -0,0 +1,48 @@
1
+ # Copyright (c) 2021-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/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
@@ -0,0 +1,42 @@
1
+ # Copyright (c) 2021-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/expression'
23
+ # require 'glimmer/data_binding/model_binding'
24
+ # require 'glimmer/data_binding/shine'
25
+ #
26
+ # module Glimmer
27
+ # module DSL
28
+ # module Libui
29
+ # class ShineDataBindingExpression < Expression
30
+ # def can_interpret?(parent, keyword, *args, &block)
31
+ # args.size == 0 and
32
+ # block.nil? and
33
+ # parent.respond_to?(keyword, *args, &block)
34
+ # end
35
+ #
36
+ # def interpret(parent, keyword, *args, &block)
37
+ # Glimmer::DataBinding::Shine.new(parent, keyword)
38
+ # end
39
+ # end
40
+ # end
41
+ # end
42
+ # end