glimmer 0.7.7 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +288 -141
  4. data/VERSION +1 -1
  5. data/lib/glimmer.rb +0 -20
  6. data/lib/glimmer/config.rb +0 -13
  7. data/lib/glimmer/dsl/engine.rb +25 -18
  8. data/lib/glimmer/dsl/expression.rb +0 -7
  9. data/lib/glimmer/dsl/static_expression.rb +2 -2
  10. metadata +48 -171
  11. data/RUBY_VERSION +0 -1
  12. data/bin/girb +0 -10
  13. data/bin/girb_runner.rb +0 -13
  14. data/bin/glimmer +0 -5
  15. data/icons/scaffold_app.icns +0 -0
  16. data/lib/glimmer/css/rule.rb +0 -25
  17. data/lib/glimmer/css/style_sheet.rb +0 -19
  18. data/lib/glimmer/data_binding/list_selection_binding.rb +0 -52
  19. data/lib/glimmer/data_binding/model_binding.rb +0 -248
  20. data/lib/glimmer/data_binding/observable.rb +0 -21
  21. data/lib/glimmer/data_binding/observable_array.rb +0 -107
  22. data/lib/glimmer/data_binding/observable_model.rb +0 -108
  23. data/lib/glimmer/data_binding/observable_widget.rb +0 -17
  24. data/lib/glimmer/data_binding/observer.rb +0 -124
  25. data/lib/glimmer/data_binding/shine.rb +0 -23
  26. data/lib/glimmer/data_binding/table_items_binding.rb +0 -47
  27. data/lib/glimmer/data_binding/tree_items_binding.rb +0 -71
  28. data/lib/glimmer/data_binding/widget_binding.rb +0 -33
  29. data/lib/glimmer/dsl/css/css_expression.rb +0 -21
  30. data/lib/glimmer/dsl/css/dsl.rb +0 -10
  31. data/lib/glimmer/dsl/css/dynamic_property_expression.rb +0 -12
  32. data/lib/glimmer/dsl/css/property_expression.rb +0 -22
  33. data/lib/glimmer/dsl/css/pv_expression.rb +0 -17
  34. data/lib/glimmer/dsl/css/rule_expression.rb +0 -25
  35. data/lib/glimmer/dsl/css/s_expression.rb +0 -26
  36. data/lib/glimmer/dsl/swt/async_exec_expression.rb +0 -14
  37. data/lib/glimmer/dsl/swt/bind_expression.rb +0 -37
  38. data/lib/glimmer/dsl/swt/color_expression.rb +0 -19
  39. data/lib/glimmer/dsl/swt/column_properties_expression.rb +0 -24
  40. data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +0 -42
  41. data/lib/glimmer/dsl/swt/custom_widget_expression.rb +0 -36
  42. data/lib/glimmer/dsl/swt/data_binding_expression.rb +0 -34
  43. data/lib/glimmer/dsl/swt/display_expression.rb +0 -19
  44. data/lib/glimmer/dsl/swt/dsl.rb +0 -28
  45. data/lib/glimmer/dsl/swt/exec_expression.rb +0 -28
  46. data/lib/glimmer/dsl/swt/layout_data_expression.rb +0 -25
  47. data/lib/glimmer/dsl/swt/layout_expression.rb +0 -27
  48. data/lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb +0 -44
  49. data/lib/glimmer/dsl/swt/menu_bar_expression.rb +0 -33
  50. data/lib/glimmer/dsl/swt/menu_expression.rb +0 -32
  51. data/lib/glimmer/dsl/swt/observe_expression.rb +0 -32
  52. data/lib/glimmer/dsl/swt/property_expression.rb +0 -22
  53. data/lib/glimmer/dsl/swt/rgb_expression.rb +0 -12
  54. data/lib/glimmer/dsl/swt/rgba_expression.rb +0 -12
  55. data/lib/glimmer/dsl/swt/shell_expression.rb +0 -25
  56. data/lib/glimmer/dsl/swt/swt_expression.rb +0 -25
  57. data/lib/glimmer/dsl/swt/sync_exec_expression.rb +0 -15
  58. data/lib/glimmer/dsl/swt/tab_item_expression.rb +0 -33
  59. data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +0 -31
  60. data/lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb +0 -31
  61. data/lib/glimmer/dsl/swt/tree_properties_expression.rb +0 -26
  62. data/lib/glimmer/dsl/swt/widget_expression.rb +0 -34
  63. data/lib/glimmer/dsl/swt/widget_listener_expression.rb +0 -32
  64. data/lib/glimmer/dsl/xml/dsl.rb +0 -11
  65. data/lib/glimmer/dsl/xml/html_expression.rb +0 -25
  66. data/lib/glimmer/dsl/xml/meta_expression.rb +0 -23
  67. data/lib/glimmer/dsl/xml/name_space_expression.rb +0 -37
  68. data/lib/glimmer/dsl/xml/node_parent_expression.rb +0 -33
  69. data/lib/glimmer/dsl/xml/tag_expression.rb +0 -29
  70. data/lib/glimmer/dsl/xml/text_expression.rb +0 -22
  71. data/lib/glimmer/dsl/xml/xml_expression.rb +0 -21
  72. data/lib/glimmer/launcher.rb +0 -196
  73. data/lib/glimmer/package.rb +0 -7
  74. data/lib/glimmer/rake_task.rb +0 -89
  75. data/lib/glimmer/scaffold.rb +0 -478
  76. data/lib/glimmer/swt/color_proxy.rb +0 -53
  77. data/lib/glimmer/swt/display_proxy.rb +0 -74
  78. data/lib/glimmer/swt/font_proxy.rb +0 -72
  79. data/lib/glimmer/swt/layout_data_proxy.rb +0 -84
  80. data/lib/glimmer/swt/layout_proxy.rb +0 -82
  81. data/lib/glimmer/swt/menu_proxy.rb +0 -84
  82. data/lib/glimmer/swt/packages.rb +0 -13
  83. data/lib/glimmer/swt/shell_proxy.rb +0 -170
  84. data/lib/glimmer/swt/swt_proxy.rb +0 -106
  85. data/lib/glimmer/swt/tab_item_proxy.rb +0 -65
  86. data/lib/glimmer/swt/tree_proxy.rb +0 -120
  87. data/lib/glimmer/swt/widget_listener_proxy.rb +0 -34
  88. data/lib/glimmer/swt/widget_proxy.rb +0 -489
  89. data/lib/glimmer/ui/custom_shell.rb +0 -45
  90. data/lib/glimmer/ui/custom_widget.rb +0 -241
  91. data/lib/glimmer/util/proc_tracker.rb +0 -16
  92. data/lib/glimmer/xml/depth_first_search_iterator.rb +0 -22
  93. data/lib/glimmer/xml/name_space_visitor.rb +0 -21
  94. data/lib/glimmer/xml/node.rb +0 -75
  95. data/lib/glimmer/xml/node_visitor.rb +0 -13
  96. data/lib/glimmer/xml/xml_visitor.rb +0 -65
  97. data/vendor/swt/linux/swt.jar +0 -0
  98. data/vendor/swt/mac/swt.jar +0 -0
  99. data/vendor/swt/windows/swt.jar +0 -0
@@ -1,478 +0,0 @@
1
- require 'fileutils'
2
- require 'os'
3
- require 'facets'
4
-
5
- class Scaffold
6
- class << self
7
- include FileUtils
8
-
9
- VERSION = File.read(File.expand_path('../../../VERSION', __FILE__)).strip
10
- RUBY_VERSION = File.read(File.expand_path('../../../RUBY_VERSION', __FILE__)).strip
11
-
12
- # TODO externalize all constants into scaffold/files
13
-
14
- GITIGNORE = <<~MULTI_LINE_STRING
15
- *.gem
16
- *.rbc
17
- /.config
18
- /coverage/
19
- /InstalledFiles
20
- /pkg/
21
- /spec/reports/
22
- /spec/examples.txt
23
- /test/tmp/
24
- /test/version_tmp/
25
- /tmp/
26
-
27
- # Used by dotenv library to load environment variables.
28
- # .env
29
-
30
- ## Specific to RubyMotion:
31
- .dat*
32
- .repl_history
33
- build/
34
- *.bridgesupport
35
- build-iPhoneOS/
36
- build-iPhoneSimulator/
37
-
38
- ## Specific to RubyMotion (use of CocoaPods):
39
- #
40
- # We recommend against adding the Pods directory to your .gitignore. However
41
- # you should judge for yourself, the pros and cons are mentioned at:
42
- # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
43
- #
44
- # vendor/Pods/
45
-
46
- ## Documentation cache and generated files:
47
- /.yardoc/
48
- /_yardoc/
49
- /doc/
50
- /rdoc/
51
-
52
- ## Environment normalization:
53
- /.bundle/
54
- /vendor/bundle
55
- /lib/bundler/man/
56
-
57
- # for a library or gem, you might want to ignore these files since the code is
58
- # intended to run in multiple environments; otherwise, check them in:
59
- Gemfile.lock
60
- # .ruby-version
61
- # .ruby-gemset
62
-
63
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
64
- .rvmrc
65
-
66
- # Mac
67
- .DS_Store
68
-
69
- # Gladiator (Glimmer Editor)
70
- .gladiator
71
-
72
- # Glimmer
73
- dist
74
- packages
75
- MULTI_LINE_STRING
76
-
77
- GEMFILE_APP = <<~MULTI_LINE_STRING
78
- # frozen_string_literal: true
79
-
80
- source 'https://rubygems.org'
81
-
82
- git_source(:github) {|repo_name| "https://github.com/\#{repo_name}" }
83
-
84
- gem 'glimmer', '~> #{VERSION}'
85
-
86
- group :test do
87
- gem 'rspec'
88
- end
89
- MULTI_LINE_STRING
90
-
91
- GEMFILE_GEM = <<~MULTI_LINE_STRING
92
- # frozen_string_literal: true
93
-
94
- source 'https://rubygems.org'
95
-
96
- git_source(:github) {|repo_name| "https://github.com/\#{repo_name}" }
97
-
98
- gem 'glimmer', '~> #{VERSION}'
99
-
100
- group :development do
101
- gem 'rspec', '~> 3.5.0'
102
- gem 'jeweler', '2.3.9'
103
- gem 'simplecov', '>= 0'
104
- end
105
- MULTI_LINE_STRING
106
-
107
- RAKEFILE = <<~MULTI_LINE_STRING
108
- require 'glimmer/rake_task'
109
-
110
- ## Uncomment the following section if you would like to customize javapackager
111
- ## arguments for `glimmer package` command.
112
- #
113
- # Glimmer::Package.javapackager_extra_args =
114
- # " -BlicenseType=" +
115
- # " -Bmac.CFBundleIdentifier=" +
116
- # " -Bmac.category=" +
117
- # " -Bmac.signing-key-developer-id-app="
118
- MULTI_LINE_STRING
119
-
120
- RVM_FUNCTION = <<~MULTI_LINE_STRING
121
- # Load RVM into a shell session *as a function*
122
- if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
123
-
124
- # First try to load from a user install
125
- source "$HOME/.rvm/scripts/rvm"
126
-
127
- elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
128
-
129
- # Then try to load from a root install
130
- source "/usr/local/rvm/scripts/rvm"
131
-
132
- fi
133
- MULTI_LINE_STRING
134
-
135
- def app(app_name)
136
- mkdir app_name
137
- cd app_name
138
- write '.gitignore', GITIGNORE
139
- write '.ruby-version', RUBY_VERSION
140
- write '.ruby-gemset', app_name
141
- write 'VERSION', '1.0.0'
142
- write 'LICENSE.txt', "Copyright (c) #{Time.now.year} #{app_name}"
143
- write 'Gemfile', GEMFILE_APP
144
- write 'Rakefile', RAKEFILE
145
- mkdir 'app'
146
- write "app/#{file_name(app_name)}.rb", app_main_file(app_name)
147
- mkdir 'app/models'
148
- mkdir 'app/views'
149
- custom_shell('AppView', current_dir_name)
150
- if OS.mac?
151
- mkdir_p 'package/macosx'
152
- icon_file = "package/macosx/#{human_name(app_name)}.icns"
153
- cp File.expand_path('../../../icons/scaffold_app.icns', __FILE__), icon_file
154
- puts "Created #{current_dir_name}/#{icon_file}"
155
- end
156
- mkdir 'bin'
157
- write "bin/#{file_name(app_name)}", app_bin_file(app_name)
158
- FileUtils.chmod 0755, "bin/#{file_name(app_name)}"
159
- system "bash -c '#{RVM_FUNCTION}\n cd .\n bundle\n glimmer package\n'"
160
- system "open packages/bundles/#{human_name(app_name).gsub(' ', '\ ')}.app"
161
- # TODO generate rspec test suite
162
- end
163
-
164
- def custom_shell(custom_shell_name, namespace)
165
- namespace ||= current_dir_name
166
- root_dir = File.exists?('app') ? 'app' : 'lib'
167
- parent_dir = "#{root_dir}/views/#{file_name(namespace)}"
168
- mkdir_p parent_dir unless File.exists?(parent_dir)
169
- write "#{parent_dir}/#{file_name(custom_shell_name)}.rb", custom_shell_file(custom_shell_name, namespace)
170
- end
171
-
172
- def custom_widget(custom_widget_name, namespace)
173
- namespace ||= current_dir_name
174
- root_dir = File.exists?('app') ? 'app' : 'lib'
175
- parent_dir = "#{root_dir}/views/#{file_name(namespace)}"
176
- mkdir_p parent_dir unless File.exists?(parent_dir)
177
- write "#{parent_dir}/#{file_name(custom_widget_name)}.rb", custom_widget_file(custom_widget_name, namespace)
178
- end
179
-
180
- def custom_shell_gem(custom_shell_name, namespace)
181
- gem_name = "glimmer-cs-#{compact_name(custom_shell_name)}"
182
- gem_summary = "Glimmer Custom Widget - #{human_name(custom_shell_name)}"
183
- if namespace
184
- gem_name += "-#{compact_name(namespace)}"
185
- gem_summary += " (#{human_name(namespace)})"
186
- else
187
- namespace = 'glimmer'
188
- end
189
- system "jeweler --rspec --summary '#{gem_summary}' --description '#{gem_summary}' #{gem_name}"
190
- cd gem_name
191
- write '.gitignore', GITIGNORE
192
- write '.ruby-version', RUBY_VERSION
193
- write '.ruby-gemset', gem_name
194
- write 'VERSION', '1.0.0'
195
- write 'Gemfile', GEMFILE_GEM
196
- write 'Rakefile', gem_rakefile(custom_shell_name, namespace)
197
- append "lib/#{gem_name}.rb", gem_main_file(custom_shell_name, namespace)
198
- mkdir 'lib/views'
199
- custom_shell(custom_shell_name, namespace)
200
- mkdir 'bin'
201
- write "bin/#{file_name(custom_shell_name)}", gem_bin_file(gem_name, custom_shell_name, namespace)
202
- FileUtils.chmod 0755, "bin/#{file_name(custom_shell_name)}"
203
- if OS.mac?
204
- mkdir_p 'package/macosx'
205
- icon_file = "package/macosx/#{human_name(custom_shell_name)}.icns"
206
- cp File.expand_path('../../../icons/scaffold_app.icns', __FILE__), icon_file
207
- puts "Created #{current_dir_name}/#{icon_file}"
208
- end
209
- system "bash -c '#{RVM_FUNCTION}\n cd .\n bundle\n glimmer package\n'"
210
- system "open packages/bundles/#{human_name(custom_shell_name).gsub(' ', '\ ')}.app"
211
- puts "Finished creating #{gem_name} Ruby gem."
212
- puts 'Edit Rakefile to configure gem details.'
213
- puts 'Run `rake` to execute specs.'
214
- puts 'Run `rake build` to build gem.'
215
- puts 'Run `rake release` to release into rubygems.org once ready.'
216
- end
217
-
218
- def custom_widget_gem(custom_widget_name, namespace)
219
- gem_name = "glimmer-cw-#{compact_name(custom_widget_name)}"
220
- gem_summary = "Glimmer Custom Widget - #{human_name(custom_widget_name)}"
221
- if namespace
222
- gem_name += "-#{compact_name(namespace)}"
223
- gem_summary += " (#{human_name(namespace)})"
224
- else
225
- namespace = 'glimmer'
226
- end
227
- system "jeweler --rspec --summary '#{gem_summary}' --description '#{gem_summary}' #{gem_name}"
228
- cd gem_name
229
- write '.gitignore', GITIGNORE
230
- write '.ruby-version', RUBY_VERSION
231
- write '.ruby-gemset', gem_name
232
- write 'VERSION', '1.0.0'
233
- write 'Gemfile', GEMFILE_GEM
234
- write 'Rakefile', gem_rakefile
235
- write 'spec/spec_helper.rb', spec_helper_file
236
- append "lib/#{gem_name}.rb", gem_main_file(custom_widget_name, namespace)
237
- mkdir 'lib/views'
238
- custom_widget(custom_widget_name, namespace)
239
- system "bash -c '#{RVM_FUNCTION}\n cd .\n bundle\n'"
240
- puts "Finished creating #{gem_name} Ruby gem."
241
- puts 'Edit Rakefile to configure gem details.'
242
- puts 'Run `rake` to execute specs.'
243
- puts 'Run `rake build` to build gem.'
244
- puts 'Run `rake release` to release into rubygems.org once ready.'
245
- end
246
-
247
- private
248
-
249
- def write(file, content)
250
- File.write file, content
251
- file_path = File.expand_path(file)
252
- puts "Created #{current_dir_name}/#{file}"
253
- end
254
-
255
- def append(file, content)
256
- File.open(file, 'a') do |f|
257
- f.write(content)
258
- end
259
- end
260
-
261
- def current_dir_name
262
- File.basename(File.expand_path('.'))
263
- end
264
-
265
- def class_name(app_name)
266
- app_name.underscore.camelcase(:upper)
267
- end
268
-
269
- def file_name(app_name)
270
- app_name.underscore
271
- end
272
- alias dsl_widget_name file_name
273
-
274
- def human_name(app_name)
275
- app_name.underscore.titlecase
276
- end
277
-
278
- def compact_name(gem_name)
279
- gem_name.underscore.camelcase.downcase
280
- end
281
-
282
- def app_main_file(app_name)
283
- <<~MULTI_LINE_STRING
284
- $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
285
-
286
- require 'bundler/setup'
287
- Bundler.require(:default)
288
- require 'views/#{file_name(app_name)}/app_view'
289
-
290
- class #{class_name(app_name)}
291
- include Glimmer
292
-
293
- APP_ROOT = File.expand_path('../..', __FILE__)
294
- VERSION = File.read(File.expand_path('VERSION', APP_ROOT))
295
-
296
- def open
297
- app_view.open
298
- end
299
- end
300
- MULTI_LINE_STRING
301
- end
302
-
303
- def gem_main_file(custom_widget_name, namespace = nil)
304
- custom_widget_file_path = "views"
305
- custom_widget_file_path += "/#{file_name(namespace)}" if namespace
306
- custom_widget_file_path += "/#{file_name(custom_widget_name)}"
307
-
308
- <<~MULTI_LINE_STRING
309
- $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
310
-
311
- require 'glimmer'
312
- require '#{custom_widget_file_path}'
313
- MULTI_LINE_STRING
314
- end
315
-
316
- def app_bin_file(app_name)
317
- <<~MULTI_LINE_STRING
318
- #!/usr/bin/env ruby
319
-
320
- require_relative '../app/#{file_name(app_name)}'
321
-
322
- #{class_name(app_name)}.new.open
323
- MULTI_LINE_STRING
324
- end
325
-
326
- def gem_bin_file(gem_name, custom_shell_name, namespace)
327
- <<~MULTI_LINE_STRING
328
- #!/usr/bin/env ruby
329
-
330
- require_relative '../lib/#{gem_name}'
331
-
332
- include Glimmer
333
-
334
- #{dsl_widget_name(custom_shell_name)}.open
335
- MULTI_LINE_STRING
336
- end
337
-
338
- def gem_rakefile(custom_shell_name = nil, namespace = nil)
339
- rakefile_content = File.read('Rakefile')
340
- lines = rakefile_content.split("\n")
341
- require_rake_line_index = lines.index(lines.detect {|l| l.include?("require 'rake'") })
342
- lines.insert(require_rake_line_index, "require 'glimmer/launcher'")
343
- gem_files_line_index = lines.index(lines.detect {|l| l.include?('# dependencies defined in Gemfile') })
344
- lines.insert(gem_files_line_index, " gem.files = Dir['lib/**/*.rb']")
345
- spec_pattern_line_index = lines.index(lines.detect {|l| l.include?('spec.pattern =') })
346
- lines.insert(spec_pattern_line_index+1, " spec.ruby_opts = [Glimmer::Launcher.jruby_swt_options]")
347
- lines << "\nrequire 'glimmer/rake_task'\n"
348
- file_content = lines.join("\n")
349
- if custom_shell_name
350
- file_content << <<~MULTI_LINE_STRING
351
- Glimmer::Package.javapackager_extra_args =
352
- " -name '#{human_name(custom_shell_name)}'" +
353
- " -title '#{human_name(custom_shell_name)}'" +
354
- " -Bmac.CFBundleName='#{human_name(custom_shell_name)}'" +
355
- " -Bmac.CFBundleIdentifier='org.#{namespace ? compact_name(namespace) : compact_name(custom_shell_name)}.application.#{compact_name(custom_shell_name)}'"
356
- # " -BlicenseType=" +
357
- # " -Bmac.category=" +
358
- # " -Bmac.signing-key-developer-id-app="
359
- MULTI_LINE_STRING
360
- end
361
- file_content
362
- end
363
-
364
- def spec_helper_file
365
- content = File.read('spec/spec_helper.rb')
366
- lines = content.split("\n")
367
- require_line_index = lines.index(lines.detect {|l| l.include?(current_dir_name) })
368
- lines[require_line_index...require_line_index] = [
369
- "require 'bundler/setup'",
370
- 'Bundler.require(:default, :development)',
371
- ]
372
- configure_block_line_index = lines.index(lines.detect {|l| l.include?('RSpec.configure do') }) + 1
373
- lines[configure_block_line_index...configure_block_line_index] = [
374
- ' # The following ensures rspec tests that instantiate and set Glimmer DSL widgets in @target get cleaned after',
375
- ' config.after do',
376
- ' @target.dispose if @target && @target.respond_to?(:dispose)',
377
- ' Glimmer::DSL::Engine.reset',
378
- ' end',
379
- ]
380
-
381
- lines << "\nrequire 'glimmer/rake_task'\n"
382
- lines.join("\n")
383
- end
384
-
385
- def custom_shell_file(custom_shell_name, namespace)
386
- namespace_type = class_name(namespace) == class_name(current_dir_name) ? 'class' : 'module'
387
-
388
- <<~MULTI_LINE_STRING
389
- #{namespace_type} #{class_name(namespace)}
390
- class #{class_name(custom_shell_name)}
391
- include Glimmer::UI::CustomShell
392
-
393
- ## Add options like the following to configure CustomShell by outside consumers
394
- #
395
- # options :title, :background_color
396
- # option :width, 320
397
- # option :height, 240
398
-
399
- ## Uncomment before_body block to pre-initialize variables to use in body
400
- #
401
- #
402
- # before_body {
403
- #
404
- # }
405
-
406
- ## Uncomment after_body block to setup observers for widgets in body
407
- #
408
- # after_body {
409
- #
410
- # }
411
-
412
- ## Add widget content inside custom shell body
413
- ## Top-most widget must be a shell or another custom shell
414
- #
415
- body {
416
- shell {
417
- # Replace example content below with custom shell content
418
- minimum_size 320, 240
419
- text "#{human_name(namespace)} - #{human_name(custom_shell_name)}"
420
- grid_layout
421
- label {
422
- text "Hello, World!"
423
- font height: 40
424
- layout_data :center, :center, true, true
425
- }
426
- }
427
- }
428
-
429
- end
430
- end
431
- MULTI_LINE_STRING
432
- end
433
-
434
- def custom_widget_file(custom_widget_name, namespace)
435
- namespace_type = class_name(namespace) == class_name(current_dir_name) ? 'class' : 'module'
436
-
437
- <<~MULTI_LINE_STRING
438
- #{namespace_type} #{class_name(namespace)}
439
- class #{class_name(custom_widget_name)}
440
- include Glimmer::UI::CustomWidget
441
-
442
- ## Add options like the following to configure CustomWidget by outside consumers
443
- #
444
- # options :custom_text, :background_color
445
- # option :foreground_color, :red
446
-
447
- ## Uncomment before_body block to pre-initialize variables to use in body
448
- #
449
- #
450
- # before_body {
451
- #
452
- # }
453
-
454
- ## Uncomment after_body block to setup observers for widgets in body
455
- #
456
- # after_body {
457
- #
458
- # }
459
-
460
- ## Add widget content under custom widget body
461
- ##
462
- ## If you want to add a shell as the top-most widget,
463
- ## consider creating a custom shell instead
464
- ## (Glimmer::UI::CustomShell offers shell convenience methods, like show and hide)
465
- #
466
- body {
467
- # Replace example content below with custom widget content
468
- label {
469
- background :red
470
- }
471
- }
472
-
473
- end
474
- end
475
- MULTI_LINE_STRING
476
- end
477
- end
478
- end