glimmer-dsl-opal 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +84 -22
  4. data/VERSION +1 -1
  5. data/lib/display.rb +3 -0
  6. data/lib/glimmer-dsl-opal.rb +1 -1
  7. data/lib/glimmer-dsl-opal/ext/glimmer/dsl/engine.rb +5 -2
  8. data/lib/glimmer-dsl-opal/samples/elaborate/contact_manager.rb +17 -13
  9. data/lib/glimmer-dsl-opal/samples/elaborate/login.rb +55 -28
  10. data/lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe.rb +2 -2
  11. data/lib/glimmer-dsl-opal/samples/hello/hello_button.rb +1 -1
  12. data/lib/glimmer-dsl-opal/samples/hello/hello_checkbox.rb +4 -4
  13. data/lib/glimmer-dsl-opal/samples/hello/hello_combo.rb +1 -1
  14. data/lib/glimmer-dsl-opal/samples/hello/hello_computed.rb +5 -5
  15. data/lib/glimmer-dsl-opal/samples/hello/hello_custom_shell.rb +1 -1
  16. data/lib/glimmer-dsl-opal/samples/hello/hello_date_time.rb +4 -4
  17. data/lib/glimmer-dsl-opal/samples/hello/hello_group.rb +6 -6
  18. data/lib/glimmer-dsl-opal/samples/hello/hello_list_multi_selection.rb +1 -1
  19. data/lib/glimmer-dsl-opal/samples/hello/hello_list_single_selection.rb +1 -1
  20. data/lib/glimmer-dsl-opal/samples/hello/hello_radio.rb +6 -6
  21. data/lib/glimmer-dsl-opal/samples/hello/hello_table.rb +2 -2
  22. data/lib/glimmer/data_binding/table_items_binding.rb +3 -2
  23. data/lib/glimmer/dsl/opal/bind_expression.rb +24 -25
  24. data/lib/glimmer/dsl/opal/custom_widget_expression.rb +6 -6
  25. data/lib/glimmer/dsl/opal/dsl.rb +4 -0
  26. data/lib/glimmer/dsl/opal/menu_expression.rb +1 -1
  27. data/lib/glimmer/dsl/opal/message_box_expression.rb +1 -1
  28. data/lib/glimmer/dsl/opal/property_expression.rb +2 -1
  29. data/lib/glimmer/dsl/opal/shape_expression.rb +26 -0
  30. data/lib/glimmer/dsl/opal/shell_expression.rb +1 -1
  31. data/lib/glimmer/dsl/opal/shine_data_binding_expression.rb +49 -0
  32. data/lib/glimmer/dsl/opal/table_items_data_binding_expression.rb +2 -2
  33. data/lib/glimmer/dsl/opal/widget_expression.rb +1 -1
  34. data/lib/glimmer/swt/combo_proxy.rb +1 -0
  35. data/lib/glimmer/swt/composite_proxy.rb +18 -2
  36. data/lib/glimmer/swt/dialog_proxy.rb +47 -32
  37. data/lib/glimmer/swt/display_proxy.rb +128 -9
  38. data/lib/glimmer/swt/grid_layout_proxy.rb +28 -33
  39. data/lib/glimmer/swt/latest_dialog_proxy.rb +3 -1
  40. data/lib/glimmer/swt/latest_message_box_proxy.rb +3 -1
  41. data/lib/glimmer/swt/latest_shell_proxy.rb +6 -2
  42. data/lib/glimmer/swt/layout_proxy.rb +32 -9
  43. data/lib/glimmer/swt/message_box_proxy.rb +20 -10
  44. data/lib/glimmer/swt/row_layout_proxy.rb +13 -6
  45. data/lib/glimmer/swt/shell_proxy.rb +30 -8
  46. data/lib/glimmer/swt/table_proxy.rb +19 -3
  47. data/lib/glimmer/swt/widget_proxy.rb +50 -19
  48. data/lib/glimmer/ui/custom_shell.rb +23 -6
  49. data/lib/glimmer/util/proc_tracker.rb +16 -5
  50. metadata +11 -9
@@ -28,15 +28,26 @@ module Glimmer
28
28
  module CustomShell
29
29
  include Glimmer::UI::CustomWidget
30
30
 
31
+ module ClassMethods
32
+ include Glimmer
33
+ attr_reader :custom_shell
34
+
35
+ def launch
36
+ custom_shell = send(self.name.underscore.gsub('::', '__'))
37
+ custom_shell.open
38
+ end
39
+ end
40
+
31
41
  class << self
32
42
  def included(klass)
33
43
  klass.extend(CustomWidget::ClassMethods)
44
+ klass.extend(CustomShell::ClassMethods)
34
45
  klass.include(Glimmer)
35
46
  Glimmer::UI::CustomWidget.add_custom_widget_namespaces_for(klass)
36
47
  keyword = klass.name.split(':').last.underscore
37
48
  LocalStorage[keyword] = $LOADED_FEATURES.last
38
49
  end
39
-
50
+
40
51
  def request_parameter_string
41
52
  URI.decode_www_form_component(`document.location.href`.match(/\?(.*)$/).to_a[1].to_s)
42
53
  end
@@ -56,14 +67,20 @@ module Glimmer
56
67
 
57
68
  def initialize(parent, args, options, &content)
58
69
  super(parent, args, options, &content)
59
- raise Error, 'Invalid custom shell body root! Must be a shell or another custom shell.' unless body_root.is_a?(Glimmer::SWT::ShellProxy) || body_root.is_a?(Glimmer::UI::CustomShell) || body_root.is_a?(Glimmer::SWT::LatestShellProxy)
70
+ raise Error, 'Invalid custom shell body root! Must be a shell or another custom shell.' unless body_root.is_a?(Glimmer::SWT::ShellProxy) || body_root.is_a?(Glimmer::UI::CustomShell)
60
71
  end
61
72
 
62
- # Classes may override
63
- def open
64
- # TODO consider the idea of delaying rendering till the open method
65
- body_root.open
73
+ def open(async: true)
74
+ work = lambda do
75
+ body_root.open
76
+ end
77
+ if async
78
+ Glimmer::SWT::DisplayProxy.instance.async_exec(&work)
79
+ else
80
+ work.call
81
+ end
66
82
  end
83
+
67
84
 
68
85
  # DO NOT OVERRIDE. JUST AN ALIAS FOR `#open`. OVERRIDE `#open` INSTEAD.
69
86
  def show
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2020-2021 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
5
5
  # "Software"), to deal in the Software without restriction, including
@@ -7,10 +7,10 @@
7
7
  # distribute, sublicense, and/or sell copies of the Software, and to
8
8
  # permit persons to whom the Software is furnished to do so, subject to
9
9
  # the following conditions:
10
- #
10
+ #
11
11
  # The above copyright notice and this permission notice shall be
12
12
  # included in all copies or substantial portions of the Software.
13
- #
13
+ #
14
14
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
15
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
16
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,17 +23,28 @@ require 'delegate'
23
23
 
24
24
  module Glimmer
25
25
  module Util
26
+ # Decorator that provides tracking facilities for Ruby procs, tracking owner (string), invoked_form method name (symbol/string), and called? (boolean)
26
27
  class ProcTracker < DelegateClass(Proc)
27
- def initialize(proc)
28
- super(proc)
28
+ attr_reader :owner, :invoked_from
29
+
30
+ def initialize(proc = nil, owner: nil, invoked_from: nil, &block)
31
+ super(proc || block)
32
+ @owner = owner
33
+ @invoked_from = invoked_from
29
34
  end
35
+
30
36
  def call(*args)
31
37
  __getobj__.call(*args)
32
38
  @called = true
33
39
  end
40
+
34
41
  def called?
35
42
  !!@called
36
43
  end
44
+
45
+ def respond_to?(method, *args, &block)
46
+ %w[owner invoked_from called?].include?(method.to_s) || super(method, *args, &block)
47
+ end
37
48
  end
38
49
  end
39
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-13 00:00:00.000000000 Z
11
+ date: 2021-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.7
19
+ version: 2.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.7
26
+ version: 2.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: glimmer-dsl-xml
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.0
33
+ version: 1.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.1.0
40
+ version: 1.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: glimmer-dsl-css
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.0
47
+ version: 1.2.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.0
54
+ version: 1.2.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: opal-async
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -349,7 +349,9 @@ files:
349
349
  - lib/glimmer/dsl/opal/radio_group_selection_data_binding_expression.rb
350
350
  - lib/glimmer/dsl/opal/rgb_expression.rb
351
351
  - lib/glimmer/dsl/opal/rgba_expression.rb
352
+ - lib/glimmer/dsl/opal/shape_expression.rb
352
353
  - lib/glimmer/dsl/opal/shell_expression.rb
354
+ - lib/glimmer/dsl/opal/shine_data_binding_expression.rb
353
355
  - lib/glimmer/dsl/opal/swt_expression.rb
354
356
  - lib/glimmer/dsl/opal/sync_exec_expression.rb
355
357
  - lib/glimmer/dsl/opal/table_column_expression.rb
@@ -429,7 +431,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
429
431
  - !ruby/object:Gem::Version
430
432
  version: '0'
431
433
  requirements: []
432
- rubygems_version: 3.1.4
434
+ rubygems_version: 3.2.22
433
435
  signing_key:
434
436
  specification_version: 4
435
437
  summary: Glimmer DSL for Opal