glimmer 0.9.5 → 0.10.0

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: c22f962213e82b271d67b69d910604e73ab8a257e8a797fa58feb2d97d6c199e
4
- data.tar.gz: eee60acdf118d572196ef4a2c1eca7705093ea9d3db2fcea1a05bb612710f05b
3
+ metadata.gz: 5c67def84181cab028446e3087c2c22d091bb0b17d02aa91e3948a8d7b176113
4
+ data.tar.gz: a2613dc9b58d1ef2d048b93f695e2aef799b06c46ec85999a78ecb48a6c5d469
5
5
  SHA512:
6
- metadata.gz: 360edce8ae04be32396a272ad947897d256c171759f3304ed4f3b521a208540a2834e05a3140fe61de166337858bbd85c13655d02b92b1cd13e60b44b78cb0d6
7
- data.tar.gz: 482df9f676948f24f68e665899c15e7e14b78f40f100580771a4af943fd524b676ae140f19cf1d7b370d2ef1fb5e3c4bff9f0e2eb4a8cb1cb95884c74be6ef37
6
+ metadata.gz: cbab9c4d0212aa47f46dd73394c05a47ebb95d1b18afb1b76b7400c72ae188f849776f411e3808b3fbd75537d3c7ca416fe3bcf90c08aba17e3058a8bccbc228
7
+ data.tar.gz: f913e477fa27d42e46614470e3e9e3c18fafd08e2a8fb6eb65c579b6a5894884e61da5203fc0df1d41fd4860f5dc4b435c123c6b5822a4056f6c01bfb4854ff2
data/README.md CHANGED
@@ -17,7 +17,7 @@ Glimmer DSL gems:
17
17
  - [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (Desktop GUI)
18
18
  - [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Web GUI Adapter for Desktop Apps)
19
19
  - [glimmer-dsl-xml](https://github.com/AndyObtiva/glimmer-dsl-xml): Glimmer DSL for XML (& HTML)
20
- - [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS (Cascading Style Sheets)
20
+ - [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS
21
21
 
22
22
  ## Examples
23
23
 
@@ -251,7 +251,7 @@ Otherwise, Option 2 ([Bundler](#option-2-bundler)) is recommended for building G
251
251
 
252
252
  Run this command to install directly:
253
253
  ```
254
- jgem install glimmer-dsl-swt -v 0.3.0
254
+ jgem install glimmer-dsl-swt -v 0.4.1
255
255
  ```
256
256
 
257
257
  `jgem` is JRuby's version of `gem` command.
@@ -269,7 +269,7 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
269
269
 
270
270
  Add the following to `Gemfile`:
271
271
  ```
272
- gem 'glimmer-dsl-swt', '~> 0.3.0'
272
+ gem 'glimmer-dsl-swt', '~> 0.4.1'
273
273
  ```
274
274
 
275
275
  And, then run:
@@ -484,7 +484,10 @@ The Ruby gem name will follow the convention "glimmer-cw-customwidgetname-namesp
484
484
 
485
485
  Only official Glimmer gems created by the Glimmer project committers will have no namespace (e.g. [glimmer-cw-video](https://rubygems.org/gems/glimmer-cw-video) Ruby gem)
486
486
 
487
- Example: [https://github.com/AndyObtiva/glimmer-cw-video](https://github.com/AndyObtiva/glimmer-cw-video)
487
+ Examples:
488
+
489
+ - [glimmer-cw-video](https://github.com/AndyObtiva/glimmer-cw-video): Video Widget
490
+ - [glimmer-cw-cdatetime-nebula](https://github.com/AndyObtiva/glimmer-cw-cdatetime-nebula): Nebula CDateTime Widget
488
491
 
489
492
  ### Gem Listing
490
493
 
@@ -569,7 +572,7 @@ Output:
569
572
 
570
573
  Css glimmer-dsl-css 0.1.0 AndyMaleh Glimmer DSL for CSS
571
574
  Opal glimmer-dsl-opal 0.0.9 AndyMaleh Glimmer DSL for Opal
572
- Swt glimmer-dsl-swt 0.3.0 AndyMaleh Glimmer DSL for SWT
575
+ Swt glimmer-dsl-swt 0.4.1 AndyMaleh Glimmer DSL for SWT
573
576
  Xml glimmer-dsl-xml 0.1.0 AndyMaleh Glimmer DSL for XML
574
577
 
575
578
  ```
@@ -761,7 +764,7 @@ automatically uses the display created earlier without having to explicitly hook
761
764
  ```ruby
762
765
  @display = display {
763
766
  cursor_location 300, 300
764
- on_event_keydown {
767
+ on_swt_keydown {
765
768
  # ...
766
769
  }
767
770
  # ...
@@ -1721,10 +1724,10 @@ Glimmer comes with `Observer` module, which is used internally for data-binding,
1721
1724
 
1722
1725
  Glimmer supports observing widgets with two main types of events:
1723
1726
  1. `on_{swt-listener-method-name}`: where {swt-listener-method-name} is replaced with the lowercase underscored event method name on an SWT listener class (e.g. `on_verify_text` for `org.eclipse.swt.events.VerifyListener#verifyText`).
1724
- 2. `on_event_{swt-event-constant}`: where {swt-event-constant} is replaced with an `org.eclipse.swt.SWT` event constant (e.g. `on_event_show` for `SWT.Show` to observe when widget becomes visible)
1727
+ 2. `on_swt_{swt-event-constant}`: where {swt-event-constant} is replaced with an [`org.eclipse.swt.SWT`](https://help.eclipse.org/2020-06/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/SWT.html) event constant (e.g. `on_swt_show` for `SWT.Show` to observe when widget becomes visible)
1725
1728
 
1726
1729
  Additionally, there are two more types of events:
1727
- - SWT `display` supports global listeners called filters that run on any widget. They are hooked via `on_event_{swt-event-constant}`
1730
+ - SWT `display` supports global listeners called filters that run on any widget. They are hooked via `on_swt_{swt-event-constant}`
1728
1731
  - SWT `display` supports Mac application menu item observers (`on_about` and `on_preferences`), which you can read about under [Miscellaneous](#miscellaneous).
1729
1732
 
1730
1733
  Number 1 is more commonly used in SWT applications, so make it your starting point. Number 2 covers events not found in number 1, so look into it if you don't find an SWT listener you need in number 1.
@@ -1769,21 +1772,21 @@ Note that every Tic Tac Toe grid cell has its `text` and `enabled` properties da
1769
1772
 
1770
1773
  Next however, each of these Tic Tac Toe grid cells, which are clickable buttons, have an `on_widget_selected` observer, which once triggered, marks the cell on the `TicTacToe::Board` to make a move.
1771
1774
 
1772
- **Regarding number 2**, you can figure out all available events by looking at the `org.eclipse.swt.SWT` API:
1775
+ **Regarding number 2**, you can figure out all available events by looking at the [`org.eclipse.swt.SWT`](https://help.eclipse.org/2020-06/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/SWT.html) API:
1773
1776
 
1774
1777
  https://help.eclipse.org/2019-12/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/SWT.html
1775
1778
 
1776
1779
  Example (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
1777
1780
 
1778
- `SWT.Show` - hooks a listener for showing a widget (using `on_event_show` in Glimmer)
1779
- `SWT.Hide` - hooks a listener for hiding a widget (using `on_event_hide` in Glimmer)
1781
+ `SWT.Show` - hooks a listener for showing a widget (using `on_swt_show` in Glimmer)
1782
+ `SWT.Hide` - hooks a listener for hiding a widget (using `on_swt_hide` in Glimmer)
1780
1783
 
1781
1784
  ```ruby
1782
1785
  shell {
1783
1786
  @button1 = button {
1784
1787
  text "Show 2nd Button"
1785
1788
  visible true
1786
- on_event_show {
1789
+ on_swt_show {
1787
1790
  @button2.swt_widget.setVisible(false)
1788
1791
  }
1789
1792
  on_widget_selected {
@@ -1793,7 +1796,7 @@ shell {
1793
1796
  @button2 = button {
1794
1797
  text "Show 1st Button"
1795
1798
  visible false
1796
- on_event_show {
1799
+ on_swt_show {
1797
1800
  @button1.swt_widget.setVisible(false)
1798
1801
  }
1799
1802
  on_widget_selected {
@@ -1803,7 +1806,7 @@ shell {
1803
1806
  }.open
1804
1807
  ```
1805
1808
 
1806
- **Gotcha:** SWT.Resize event needs to be hooked using **`on_event_Resize`** because `org.eclipse.swt.SWT` has 2 constants for resize: `RESIZE` and `Resize`, so it cannot infer the right one automatically from the underscored version `on_event_resize`
1809
+ **Gotcha:** SWT.Resize event needs to be hooked using **`on_swt_Resize`** because [`org.eclipse.swt.SWT`](https://help.eclipse.org/2020-06/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/SWT.html) has 2 constants for resize: `RESIZE` and `Resize`, so it cannot infer the right one automatically from the underscored version `on_swt_resize`
1807
1810
 
1808
1811
  ##### Alternative Syntax
1809
1812
 
@@ -2097,7 +2100,7 @@ shell { |app_shell|
2097
2100
  @current_step_number = 1
2098
2101
  @wizard_steps = 5.times.map { |n|
2099
2102
  wizard_step(number: n+1, step_count: 5) {
2100
- on_event_hide {
2103
+ on_swt_hide {
2101
2104
  if @current_step_number < 5
2102
2105
  @current_step_number += 1
2103
2106
  app_shell.hide
@@ -2397,7 +2400,7 @@ Also, you may invoke `Display.setAppVersion('1.0.0')` if needed for OS app versi
2397
2400
 
2398
2401
  #### Video Widget
2399
2402
 
2400
- ![Video Widget](images/glimmer-video-widget.png)
2403
+ [![Video Widget](images/glimmer-video-widget.png)](https://github.com/AndyObtiva/glimmer-cw-video)
2401
2404
 
2402
2405
  Glimmer supports a [video custom widget](https://github.com/AndyObtiva/glimmer-cw-video) not in SWT.
2403
2406
 
@@ -2449,17 +2452,16 @@ Glimmer configuration may be done via the `Glimmer::Config` module.
2449
2452
 
2450
2453
  ### logger
2451
2454
 
2452
- Glimmer supports logging via a Ruby Logger configurable with the `Glimmer::Config.logger` config option.
2453
- It is disabled by default to ensure not affecting desktop app performance.
2454
- It may be enabled via `Glimmer::Config.enable_logging`
2455
- When enabled, the Glimmer logger level defaults to `:warn` (aka `Logger::WARN`)
2456
- It may be configured to show a different level of logging via `Glimmer::Config.logger.level` just ike with any Ruby Logger.
2455
+ Glimmer supports logging via a standard `STDOUT` Ruby `Logger` configured in the `Glimmer::Config.logger` config option.
2456
+ It is set to level Logger::ERROR by default.
2457
+ Log level may be adjusted via `Glimmer::Config.logger.level` just like any other Ruby Logger.
2458
+ It may be replaced with a custom logger via `Glimmer::Config.logger = custom_logger`
2459
+ All logging is done lazily via blocks (e.g. `logger.debug {message}`) to avoid affecting app performance with logging when below the configured logging level threshold.
2457
2460
 
2458
2461
  Example:
2459
2462
 
2460
2463
  ```ruby
2461
- Glimmer::Config.enable_logging
2462
- Glimmer::Config.logger.level = Logger::DEBUG
2464
+ Glimmer::Config.logger.level = :debug
2463
2465
  ```
2464
2466
  This results in more verbose debug loggging to `STDOUT`, which is very helpful in troubleshooting Glimmer DSL syntax when needed.
2465
2467
 
@@ -3067,13 +3069,15 @@ Glimmer DSL Engine specific tasks are at:
3067
3069
 
3068
3070
  ## Change Log
3069
3071
 
3072
+ [glimmer-dsl-swt/CHANGELOG.md](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/CHANGELOG.md)
3073
+
3070
3074
  [CHANGELOG.md](CHANGELOG.md)
3071
3075
 
3072
3076
  ## Contributing
3073
3077
 
3074
3078
  **Contributors Wanted!**
3075
3079
 
3076
- If you would like to contribute to Glimmer, please study up on Glimmer and [SWT](#swt-reference), run all Glimmer [samples](#samples), and build a small sample app to add to [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) Hello or Elaborate samples via a Pull Request. Once done, contact me on [Chat](#chat).
3080
+ If you would like to contribute to Glimmer, please study up on Glimmer and [SWT](#swt-reference), run all Glimmer [samples](#samples), and build a small sample app (perhaps from [this TODO list](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/TODO.md#samples)) to add to [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) Hello or Elaborate samples via a Pull Request. Once done, contact me on [Chat](#chat).
3077
3081
 
3078
3082
  You may apply for contributing to any of these Glimmer DSL gems whether you prefer to focus on the desktop or web:
3079
3083
  - [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (Desktop GUI)
@@ -3096,7 +3100,11 @@ If your company would like to invest fulltime in further development of the Glim
3096
3100
 
3097
3101
  ## License
3098
3102
 
3099
- Copyright (c) 2007-2020 Andy Maleh.
3100
- See LICENSE.txt for further details.
3103
+ [MIT](https://opensource.org/licenses/MIT)
3104
+
3105
+ Copyright (c) 2007-2020 - Andy Maleh.
3106
+ See [LICENSE.txt](LICENSE.txt) for further details.
3107
+
3108
+ --
3101
3109
 
3102
3110
  Glimmer logo was made by <a href="https://www.flaticon.com/authors/freepik" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon"> www.flaticon.com</a>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.5
1
+ 0.10.0
@@ -52,16 +52,16 @@ module Glimmer
52
52
  if method_symbol.to_s.match(REGEX_METHODS_EXCLUDED)
53
53
  raise ExcludedKeywordError, "Glimmer excluded keyword: #{method_symbol}"
54
54
  end
55
- Glimmer::Config.logger&.debug "Interpreting keyword: #{method_symbol}"
55
+ Glimmer::Config.logger.debug {"Interpreting keyword: #{method_symbol}"}
56
56
  Glimmer::DSL::Engine.interpret(method_symbol, *args, &block)
57
57
  rescue ExcludedKeywordError => e
58
58
  # TODO add a feature to show excluded keywords optionally for debugging purposes
59
59
  super(method_symbol, *args, &block)
60
60
  rescue InvalidKeywordError => e
61
61
  if !method_symbol.to_s.match(REGEX_METHODS_EXCLUDED)
62
- Glimmer::Config.logger&.error e.message
62
+ Glimmer::Config.logger.error {e.message}
63
63
  end
64
- Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
64
+ Glimmer::Config.logger.debug {"#{e.message}\n#{e.backtrace.join("\n")}"}
65
65
  super(method_symbol, *args, &block)
66
66
  end
67
67
  end
@@ -11,20 +11,23 @@ module Glimmer
11
11
 
12
12
  # Returns Glimmer logger (standard Ruby logger)
13
13
  def logger
14
- # unless defined? @@logger
15
- # @@logger = Logger.new(STDOUT).tap {|logger| logger.level = Logger::WARN}
16
- # end
17
- @@logger if defined? @@logger
14
+ reset_logger! unless defined? @@logger
15
+ @@logger
16
+ end
17
+
18
+ def logger=(custom_logger)
19
+ @@logger = custom_logger
18
20
  end
19
21
 
20
- def enable_logging
21
- @@logger = Logger.new(STDOUT).tap {|logger| logger.level = Logger::WARN}
22
+ def reset_logger!
23
+ self.logger = Logger.new(STDOUT).tap do |logger|
24
+ logger.level = Logger::ERROR
25
+ end
22
26
  end
23
27
  end
24
28
  end
25
29
  end
26
30
 
27
31
  if ENV['GLIMMER_LOGGER_LEVEL']
28
- Glimmer::Config.enable_logging
29
32
  Glimmer::Config.logger.level = ENV['GLIMMER_LOGGER_LEVEL'].downcase
30
33
  end
@@ -70,7 +70,7 @@ module Glimmer
70
70
  end
71
71
  rescue => e
72
72
  #ignore writing if no property writer exists
73
- Glimmer::Config.logger&.debug "No need to observe property writer: #{property_writer_name}\n#{e.message}\n#{e.backtrace.join("\n")}"
73
+ Glimmer::Config.logger.debug {"No need to observe property writer: #{property_writer_name}\n#{e.message}\n#{e.backtrace.join("\n")}"}
74
74
  end
75
75
 
76
76
  def unregister_dependent_observers(property_name, old_value)
@@ -96,7 +96,7 @@ module Glimmer
96
96
  dynamic_expression_chains_of_responsibility[dsl] = expression_names.reverse.map do |expression_name|
97
97
  expression_class(dsl_namespace, expression_name).new
98
98
  end.reduce(nil) do |last_expresion_handler, expression|
99
- Glimmer::Config.logger&.debug "Adding dynamic expression: #{expression.class.name}"
99
+ Glimmer::Config.logger.debug {"Adding dynamic expression: #{expression.class.name}"}
100
100
  expression_handler = ExpressionHandler.new(expression)
101
101
  expression_handler.next = last_expresion_handler if last_expresion_handler
102
102
  expression_handler
@@ -104,7 +104,7 @@ module Glimmer
104
104
  end
105
105
 
106
106
  def add_static_expression(static_expression)
107
- Glimmer::Config.logger&.debug "Adding static expression: #{static_expression.class.name}"
107
+ Glimmer::Config.logger.debug {"Adding static expression: #{static_expression.class.name}"}
108
108
  keyword = static_expression.class.keyword
109
109
  static_expression_dsl = static_expression.class.dsl
110
110
  static_expressions[keyword] ||= {}
@@ -132,7 +132,7 @@ module Glimmer
132
132
  if !static_expression.can_interpret?(Glimmer::DSL::Engine.parent, keyword, *args, &block)
133
133
  raise Error, "Invalid use of Glimmer keyword #{keyword} with args #{args} under parent #{Glimmer::DSL::Engine.parent}"
134
134
  else
135
- Glimmer::Config.logger&.debug "#{static_expression.class.name} will handle expression keyword #{keyword}"
135
+ Glimmer::Config.logger.debug {"#{static_expression.class.name} will handle expression keyword #{keyword}"}
136
136
  static_expression.interpret(Glimmer::DSL::Engine.parent, keyword, *args, &block).tap do |ui_object|
137
137
  Glimmer::DSL::Engine.add_content(ui_object, static_expression, &block) unless block.nil?
138
138
  Glimmer::DSL::Engine.dsl_stack.pop
@@ -23,9 +23,9 @@ module Glimmer
23
23
  # Otherwise, it forwards to the next handler configured via `#next=` method
24
24
  # If there is no handler next, then it raises an error
25
25
  def handle(parent, keyword, *args, &block)
26
- Glimmer::Config.logger&.debug "Attempting to handle #{keyword} with #{@expression.class.name.split(":").last}"
26
+ Glimmer::Config.logger.debug {"Attempting to handle #{keyword} with #{@expression.class.name.split(":").last}"}
27
27
  if @expression.can_interpret?(parent, keyword, *args, &block)
28
- Glimmer::Config.logger&.debug "#{@expression.class.name} will handle expression keyword #{keyword}"
28
+ Glimmer::Config.logger.debug {"#{@expression.class.name} will handle expression keyword #{keyword}"}
29
29
  return @expression
30
30
  elsif @next_expression_handler
31
31
  return @next_expression_handler.handle(parent, keyword, *args, &block)
@@ -34,7 +34,7 @@ module Glimmer
34
34
  message = "Glimmer keyword #{keyword} with args #{args} cannot be handled"
35
35
  message += " inside parent #{parent}" if parent
36
36
  message += "! Check the validity of the code."
37
- # Glimmer::Config.logger&.error message
37
+ # Glimmer::Config.logger.error {message}
38
38
  raise InvalidKeywordError, message
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-18 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement