glimmer-dsl-swt 4.18.7.3 → 4.19.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +44 -0
- data/README.md +126 -20
- data/RUBY_VERSION +1 -1
- data/VERSION +1 -1
- data/bin/girb +10 -9
- data/bin/girb_runner.rb +8 -3
- data/bin/glimmer +10 -1
- data/bin/glimmer-setup +58 -0
- data/bin/glimmer_runner.rb +4 -0
- data/docs/reference/GLIMMER_COMMAND.md +98 -32
- data/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md +9 -7
- data/docs/reference/GLIMMER_PACKAGING_AND_DISTRIBUTION.md +7 -1
- data/docs/reference/GLIMMER_SAMPLES.md +25 -0
- data/glimmer-dsl-swt.gemspec +0 -0
- data/lib/glimmer-dsl-swt.rb +8 -0
- data/lib/glimmer/data_binding/widget_binding.rb +1 -1
- data/lib/glimmer/dsl/swt/c_tab_item_expression.rb +58 -0
- data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +2 -1
- data/lib/glimmer/dsl/swt/tab_item_expression.rb +7 -3
- data/lib/glimmer/dsl/swt/widget_expression.rb +1 -1
- data/lib/glimmer/launcher.rb +27 -51
- data/lib/glimmer/rake_task.rb +37 -7
- data/lib/glimmer/rake_task/list.rb +8 -0
- data/lib/glimmer/rake_task/package.rb +7 -2
- data/lib/glimmer/rake_task/scaffold.rb +283 -207
- data/lib/glimmer/swt/c_tab_item_proxy.rb +53 -0
- data/lib/glimmer/swt/custom/code_text.rb +19 -3
- data/lib/glimmer/swt/custom/shape.rb +22 -4
- data/lib/glimmer/swt/image_proxy.rb +5 -1
- data/lib/glimmer/swt/sash_form_proxy.rb +6 -0
- data/lib/glimmer/swt/shell_proxy.rb +3 -1
- data/lib/glimmer/swt/tab_folder_proxy.rb +1 -0
- data/lib/glimmer/swt/tab_item_proxy.rb +17 -18
- data/lib/glimmer/swt/widget_proxy.rb +9 -0
- data/samples/elaborate/mandelbrot_fractal.rb +1 -1
- data/samples/elaborate/tetris.rb +1 -4
- data/samples/elaborate/tetris/view/bevel.rb +4 -1
- data/samples/elaborate/tetris/view/block.rb +1 -3
- data/samples/hello/hello_c_combo.rb +68 -0
- data/samples/hello/hello_c_tab.rb +271 -0
- data/samples/hello/hello_code_text.rb +141 -73
- data/samples/hello/hello_tab.rb +2 -0
- data/vendor/swt/linux/swt.jar +0 -0
- data/vendor/swt/mac/swt.jar +0 -0
- data/vendor/swt/windows/swt.jar +0 -0
- metadata +45 -15
@@ -44,7 +44,7 @@ bin/glimmer samples
|
|
44
44
|
Below are the full usage instructions that come up when running `glimmer` without args.
|
45
45
|
|
46
46
|
```
|
47
|
-
Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.18.
|
47
|
+
Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.18.7.4
|
48
48
|
|
49
49
|
Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
|
50
50
|
|
@@ -67,6 +67,7 @@ Tasks are run via rake. Some tasks take arguments in square brackets.
|
|
67
67
|
Available tasks are below (if you do not see any, please add `require 'glimmer/rake_task'` to Rakefile and rerun or run rake -T):
|
68
68
|
|
69
69
|
Select a Glimmer task to run: (Press ↑/↓ arrow to move, Enter to select and letters to filter)
|
70
|
+
glimmer list:gems:customshape[query] # List Glimmer custom shape gems available at rubygems.org (query is optional) [alt: list:gems:cp]
|
70
71
|
‣ glimmer list:gems:customshell[query] # List Glimmer custom shell gems available at rubygems.org (query is optional) [alt: list:gems:cs]
|
71
72
|
glimmer list:gems:customwidget[query] # List Glimmer custom widget gems available at rubygems.org (query is optional) [alt: list:gems:cw]
|
72
73
|
glimmer list:gems:dsl[query] # List Glimmer DSL gems available at rubygems.org (query is optional)
|
@@ -81,8 +82,11 @@ Select a Glimmer task to run: (Press ↑/↓ arrow to move, Enter to select and
|
|
81
82
|
glimmer run[app_path] # Runs Glimmer app or custom shell gem in the current directory, unless app_path is specified, then runs it instead (app_path is optional)
|
82
83
|
glimmer samples # Brings up the Glimmer Meta-Sample app to allow browsing, running, and viewing code of Glimmer samples
|
83
84
|
glimmer scaffold[app_name] # Scaffold Glimmer application directory structure to build a new app
|
85
|
+
glimmer scaffold:customshape[name,namespace] # Scaffold Glimmer::UI::CustomShape subclass (part of a view) under app/views (namespace is optional) [alt: scaffold:cp]
|
84
86
|
glimmer scaffold:customshell[name,namespace] # Scaffold Glimmer::UI::CustomShell subclass (full window view) under app/views (namespace is optional) [alt: scaffold:cs]
|
85
87
|
glimmer scaffold:customwidget[name,namespace] # Scaffold Glimmer::UI::CustomWidget subclass (part of a view) under app/views (namespace is optional) [alt: scaffold:cw]
|
88
|
+
glimmer scaffold:desktopify[app_name,website] # Desktopify a web app
|
89
|
+
glimmer scaffold:gem:customshape[name,namespace] # Scaffold Glimmer::UI::CustomShape subclass (part of a view) under its own Ruby gem project (namespace is required) [alt: scaffold:gem:cp]
|
86
90
|
glimmer scaffold:gem:customshell[name,namespace] # Scaffold Glimmer::UI::CustomShell subclass (full window view) under its own Ruby gem + app project (namespace is required) [alt: scaffold:ge...
|
87
91
|
glimmer scaffold:gem:customwidget[name,namespace] # Scaffold Glimmer::UI::CustomWidget subclass (part of a view) under its own Ruby gem project (namespace is required) [alt: scaffold:gem:cw]
|
88
92
|
```
|
@@ -162,15 +166,12 @@ $ glimmer scaffold[greeter]
|
|
162
166
|
create Rakefile
|
163
167
|
create Gemfile
|
164
168
|
create LICENSE.txt
|
165
|
-
create README.
|
169
|
+
create README.markdown
|
166
170
|
create .document
|
167
171
|
create lib
|
168
|
-
create lib/
|
169
|
-
create spec
|
170
|
-
create spec/spec_helper.rb
|
171
|
-
create spec/greeter_spec.rb
|
172
|
+
create lib/snowboard_utah.rb
|
172
173
|
create .rspec
|
173
|
-
Juwelier has prepared your gem in ./
|
174
|
+
Juwelier has prepared your gem in ./snowboard_utah
|
174
175
|
Created greeter/.gitignore
|
175
176
|
Created greeter/.ruby-version
|
176
177
|
Created greeter/.ruby-gemset
|
@@ -179,17 +180,19 @@ Created greeter/LICENSE.txt
|
|
179
180
|
Created greeter/Gemfile
|
180
181
|
Created greeter/Rakefile
|
181
182
|
Created greeter/app/greeter.rb
|
182
|
-
Created greeter/app/
|
183
|
-
Created greeter/package/windows/
|
184
|
-
Created greeter/package/macosx/
|
185
|
-
Created greeter/package/linux/
|
183
|
+
Created greeter/app/greeter/view/app_view.rb
|
184
|
+
Created greeter/package/windows/Snowboard Utah.ico
|
185
|
+
Created greeter/package/macosx/Snowboard Utah.icns
|
186
|
+
Created greeter/package/linux/Snowboard Utah.png
|
187
|
+
Created greeter/app/greeter/launch.rb
|
186
188
|
Created greeter/bin/greeter
|
187
|
-
Created greeter/spec/spec_helper.rb
|
188
189
|
...
|
189
190
|
```
|
190
191
|
|
191
192
|
Eventually, it will launch an advanced "Hello, World!" app window having the title of your application ("Greeter").
|
192
193
|
|
194
|
+
(note: javapackager might claim at the end "Error: Bundler "DMG Installer" (dmg) failed to produce a bundle.", but it's a false negative since it works fully anyways)
|
195
|
+
|
193
196
|
![Glimmer Scaffold App](/images/glimmer-scaffolding-app.png)
|
194
197
|
|
195
198
|
It also comes with a boilerplate Preferences dialog.
|
@@ -252,21 +255,6 @@ You should see output like the following:
|
|
252
255
|
|
253
256
|
```
|
254
257
|
$ glimmer scaffold:desktopify[snowboard_utah,https://www.brightonresort.com]
|
255
|
-
Fetching kamelcase-0.0.2.gem
|
256
|
-
Fetching github_api-0.19.0.gem
|
257
|
-
Fetching highline-2.0.3.gem
|
258
|
-
Fetching juwelier-2.4.9.gem
|
259
|
-
Fetching hashie-3.6.0.gem
|
260
|
-
Fetching nokogiri-1.10.10-java.gem
|
261
|
-
Fetching semver2-3.4.2.gem
|
262
|
-
Successfully installed semver2-3.4.2
|
263
|
-
Successfully installed kamelcase-0.0.2
|
264
|
-
Successfully installed highline-2.0.3
|
265
|
-
Successfully installed hashie-3.6.0
|
266
|
-
Successfully installed github_api-0.19.0
|
267
|
-
Successfully installed nokogiri-1.10.10-java
|
268
|
-
Successfully installed juwelier-2.4.9
|
269
|
-
7 gems installed
|
270
258
|
create .gitignore
|
271
259
|
create Rakefile
|
272
260
|
create Gemfile
|
@@ -285,16 +273,19 @@ Created snowboard_utah/LICENSE.txt
|
|
285
273
|
Created snowboard_utah/Gemfile
|
286
274
|
Created snowboard_utah/Rakefile
|
287
275
|
Created snowboard_utah/app/snowboard_utah.rb
|
288
|
-
Created snowboard_utah/app/
|
276
|
+
Created snowboard_utah/app/snowboard_utah/view/app_view.rb
|
289
277
|
Created snowboard_utah/package/windows/Snowboard Utah.ico
|
290
278
|
Created snowboard_utah/package/macosx/Snowboard Utah.icns
|
291
279
|
Created snowboard_utah/package/linux/Snowboard Utah.png
|
280
|
+
Created snowboard_utah/app/snowboard_utah/launch.rb
|
292
281
|
Created snowboard_utah/bin/snowboard_utah
|
293
282
|
...
|
294
283
|
```
|
295
284
|
|
296
285
|
Eventually, it will launch a desktopified version of "https://www.brightonresort.com" having the title of ("Snowboard Utah").
|
297
286
|
|
287
|
+
(note: javapackager might claim at the end "Error: Bundler "DMG Installer" (dmg) failed to produce a bundle.", but it's a false negative since it works fully anyways)
|
288
|
+
|
298
289
|
Desktopified App on Mac
|
299
290
|
|
300
291
|
![Glimmer Scaffold App](/images/glimmer-scaffolding-desktopify.png)
|
@@ -333,7 +324,7 @@ glimmer scaffold:cs[name]
|
|
333
324
|
|
334
325
|
#### Custom Widget
|
335
326
|
|
336
|
-
To scaffold a Glimmer [custom widget](#custom-widgets) (part of a view) for an existing Glimmer app, run the following command:
|
327
|
+
To scaffold a Glimmer [custom widget](GLIMMER_GUI_DSL_SYNTAX.md#custom-widgets) (part of a view) for an existing Glimmer app, run the following command:
|
337
328
|
|
338
329
|
```
|
339
330
|
glimmer scaffold:customwidget[name]
|
@@ -345,6 +336,20 @@ Or the following alternative abbreviation:
|
|
345
336
|
glimmer scaffold:cw[name]
|
346
337
|
```
|
347
338
|
|
339
|
+
#### Custom Shape
|
340
|
+
|
341
|
+
To scaffold a Glimmer [custom shape](GLIMMER_GUI_DSL_SYNTAX.md#custom-shapes) (a composite or customized shape) for an existing Glimmer app, run the following command:
|
342
|
+
|
343
|
+
```
|
344
|
+
glimmer scaffold:customshape[name]
|
345
|
+
```
|
346
|
+
|
347
|
+
Or the following alternative abbreviation:
|
348
|
+
|
349
|
+
```
|
350
|
+
glimmer scaffold:cp[name]
|
351
|
+
```
|
352
|
+
|
348
353
|
#### Custom Shell Gem
|
349
354
|
|
350
355
|
Custom shell gems are self-contained Glimmer apps as well as reusable [custom shells](#custom-shells).
|
@@ -382,7 +387,7 @@ Examples:
|
|
382
387
|
|
383
388
|
#### Custom Widget Gem
|
384
389
|
|
385
|
-
To scaffold a Glimmer [custom widget](#custom-widgets) gem (part of a view distributed as a Ruby gem), run the following command:
|
390
|
+
To scaffold a Glimmer [custom widget](GLIMMER_GUI_DSL_SYNTAX.md#custom-widgets) gem (part of a view distributed as a Ruby gem), run the following command:
|
386
391
|
|
387
392
|
```
|
388
393
|
glimmer scaffold:gem:customwidget[name,namespace]
|
@@ -397,14 +402,40 @@ glimmer scaffold:gem:cw[name,namespace]
|
|
397
402
|
|
398
403
|
It is important to specify a namespace to avoid having your gem clash with existing gems.
|
399
404
|
|
400
|
-
The Ruby gem name will follow the convention "glimmer-cw-customwidgetname-namespace" (the 'cw' is for Custom Widget)
|
405
|
+
The Ruby gem name will follow the convention "glimmer-cw-customwidgetname-namespace" (the 'cw' is for Custom Widget; name words are not separated)
|
401
406
|
|
402
407
|
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)
|
403
408
|
|
404
409
|
Examples:
|
405
410
|
|
406
411
|
- [glimmer-cw-video](https://github.com/AndyObtiva/glimmer-cw-video): Video Widget
|
407
|
-
- [glimmer-cw-
|
412
|
+
- [glimmer-cw-nebula](https://github.com/AndyObtiva/glimmer-cw-nebula): The Nebula Project 50+ enterprise-grade high quality custom widgets for SWT
|
413
|
+
- [glimmer-cw-cdatetime-nebula](https://github.com/AndyObtiva/glimmer-cw-cdatetime-nebula): Nebula CDateTime Widget (piecemeal)
|
414
|
+
|
415
|
+
#### Custom Shape Gem
|
416
|
+
|
417
|
+
To scaffold a Glimmer [custom shape](GLIMMER_GUI_DSL_SYNTAX.md#custom-shapes) gem (part of a view distributed as a Ruby gem), run the following command:
|
418
|
+
|
419
|
+
```
|
420
|
+
glimmer scaffold:gem:customshape[name,namespace]
|
421
|
+
```
|
422
|
+
|
423
|
+
Or the following alternative abbreviation:
|
424
|
+
|
425
|
+
```
|
426
|
+
glimmer scaffold:gem:cp[name,namespace]
|
427
|
+
```
|
428
|
+
|
429
|
+
|
430
|
+
It is important to specify a namespace to avoid having your gem clash with existing gems.
|
431
|
+
|
432
|
+
The Ruby gem name will follow the convention "glimmer-cp-customshapename-namespace" (the 'cp' is for Custom Shape; name words are not separated)
|
433
|
+
|
434
|
+
Only official Glimmer gems created by the Glimmer project committers will have no namespace (e.g. [glimmer-cp-bevel](https://rubygems.org/gems/glimmer-cp-bevel) Ruby gem)
|
435
|
+
|
436
|
+
Examples:
|
437
|
+
|
438
|
+
- [glimmer-cp-bevel](https://github.com/AndyObtiva/glimmer-cp-bevel): Bevel
|
408
439
|
|
409
440
|
### Gem Listing
|
410
441
|
|
@@ -500,6 +531,39 @@ Output:
|
|
500
531
|
|
501
532
|
```
|
502
533
|
|
534
|
+
#### Listing Custom Shape Gems
|
535
|
+
|
536
|
+
The following command lists available Glimmer [Custom Shape Gems](#custom-shape-gem) (prefixed with "glimmer-cp-" by scaffolding convention) created by the the Glimmer community and published on [rubygems.org](http://www.rubygems.org):
|
537
|
+
|
538
|
+
```
|
539
|
+
glimmer list:gems:customshape[query]
|
540
|
+
```
|
541
|
+
|
542
|
+
Or the following alternative abbreviation:
|
543
|
+
|
544
|
+
```
|
545
|
+
glimmer list:gems:cp[query]
|
546
|
+
```
|
547
|
+
|
548
|
+
Example:
|
549
|
+
|
550
|
+
```
|
551
|
+
glimmer list:gems:customshape
|
552
|
+
```
|
553
|
+
|
554
|
+
Output:
|
555
|
+
|
556
|
+
```
|
557
|
+
|
558
|
+
Glimmer Custom Shape Gems at rubygems.org:
|
559
|
+
|
560
|
+
Name Gem Version Author Description
|
561
|
+
|
562
|
+
Bevel glimmer-cp-bevel 0.1.1 Andy Maleh Bevel - Glimmer Custom Shape
|
563
|
+
Stickfigure glimmer-cp-stickfigure 0.1.1 Andy Maleh Stick Figure - Glimmer Custom Shape
|
564
|
+
|
565
|
+
```
|
566
|
+
|
503
567
|
#### Listing DSL Gems
|
504
568
|
|
505
569
|
The following command lists available Glimmer [DSL Gems](#multi-dsl-support) (prefixed with "glimmer-dsl-" by convention) created by the the Glimmer community and published on [rubygems.org](http://www.rubygems.org):
|
@@ -554,6 +618,8 @@ Or, the following on Mac:
|
|
554
618
|
jruby -J-XstartOnFirstThread -r glimmer-dsl-swt -S application.rb
|
555
619
|
```
|
556
620
|
|
621
|
+
Unless you ran `glimmer-setup`, which adds `JRUBY_OPTS` environment variable that includes the `-J-XstartOnFirstThread` option automatically so you would not have to specify manually.
|
622
|
+
|
557
623
|
If you want to use a specific custom version of SWT, run the following on Windows/Linux:
|
558
624
|
|
559
625
|
```
|
@@ -163,7 +163,7 @@ Dynamic keywords are dynamically figured out from currently imported (aka requir
|
|
163
163
|
|
164
164
|
The only reason to distinguish between the two is to realize that importing new Glimmer [custom widgets](#custom-widgets) and Java SWT custom widget libraries automatically expands Glimmer's DSL vocabulary with new dynamic keywords.
|
165
165
|
|
166
|
-
For example, if a project adds this custom Java SWT library from the [Nebula Project](https://
|
166
|
+
For example, if a project adds this custom Java SWT library from the [Nebula Project](https://github.com/AndyObtiva/glimmer-cw-nebula):
|
167
167
|
|
168
168
|
https://www.eclipse.org/nebula/widgets/gallery/gallery.php
|
169
169
|
|
@@ -284,9 +284,7 @@ shell {
|
|
284
284
|
|
285
285
|
If you are new to Glimmer, you have learned enough to start running some [samples](#samples) directly or by reading through [Glimmer GUI DSL Keywords](#glimmer-gui-dsl-keywords) (which list each keyword's samples). Go ahead and run all Glimmer [samples](#samples), and come back to read the rest in any order you like since this material is more organized like a reference.
|
286
286
|
|
287
|
-
If you are advanced and need more widgets, check out the [Nebula Project](https://
|
288
|
-
|
289
|
-
https://www.eclipse.org/nebula/
|
287
|
+
If you are an advanced user of Glimmer DSL for SWT and need more widgets, check out the [Nebula Project](https://github.com/AndyObtiva/glimmer-cw-nebula) for an extensive list (50+) of high quality custom widgets.
|
290
288
|
|
291
289
|
#### Glimmer GUI DSL Keywords
|
292
290
|
|
@@ -370,7 +368,7 @@ These proxy objects have an API and provide some convenience methods, some of wh
|
|
370
368
|
|
371
369
|
Glimmer SWT proxies come with the instance method `#swt_widget`, which returns the actual SWT `Widget` object wrapped by the Glimmer widget proxy. It is useful in cases you'd like to do some custom SWT programming outside of Glimmer.
|
372
370
|
|
373
|
-
##### Shell
|
371
|
+
##### Shell Widget Proxy Methods
|
374
372
|
|
375
373
|
Shell widget proxy has extra methods specific to SWT Shell:
|
376
374
|
- `#open`: Opens the shell, making it visible and active, and starting the SWT Event Loop (you may learn more about it here: https://help.eclipse.org/2019-12/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Display.html). If shell was already open, but hidden, it makes the shell visible.
|
@@ -1042,6 +1040,10 @@ shell(:no_resize) {
|
|
1042
1040
|
}
|
1043
1041
|
```
|
1044
1042
|
|
1043
|
+
##### Fill Screen Window
|
1044
|
+
|
1045
|
+
SWT Shell can open and fill the screen with this style `swt(:fill_screen)`. This makes it have the size of the display, thus filling the screen. Keep in mind that this is different from being maximized (which is a special window state, not just filling the screen).
|
1046
|
+
|
1045
1047
|
### Widget Properties
|
1046
1048
|
|
1047
1049
|
Widget properties such as text value, enablement, visibility, and layout details are set within the widget block using methods matching SWT widget property names in lower snakecase. You may refer to SWT widget guide for details on available widget properties:
|
@@ -1416,7 +1418,7 @@ Shape keywords and their args (including defaults) are listed below (they basica
|
|
1416
1418
|
- `text(string, x, y, is_transparent = true)` text with optional is_transparent to indicate if background is transparent (default is true)
|
1417
1419
|
- `text(string, x, y, flags)` text with optional flags (flag format is `swt(comma_separated_flags)` where flags can be `:draw_delimiter` (i.e. new lines), `:draw_tab`, `:draw_mnemonic`, and `:draw_transparent` as explained in [GC API](https://help.eclipse.org/2020-12/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/graphics/GC.html))
|
1418
1420
|
|
1419
|
-
Shape keywords that can be filled with color can take a keyword argument `fill: true
|
1421
|
+
Shape keywords that can be filled with color can take a keyword argument `fill: true` (or `filled: true`). Defaults to false when not specified unless background is set with no foreground (or foreground is set with no background), in which case a smart default is applied.
|
1420
1422
|
Smart defaults can be applied to automatically infer `gradient: true` (rectangle with both foreground and background) and `round: true` (rectangle with more than 4 args, the extra args are numeric) as well.
|
1421
1423
|
|
1422
1424
|
Optionally, a shape keyword takes a block that can set any attributes from [org.eclipse.swt.graphics.GC](https://help.eclipse.org/2020-12/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/graphics/GC.html) (methods starting with `set`), which enable setting the `background` for filling and `foreground` for drawing.
|
@@ -3473,7 +3475,7 @@ shell { |app_shell|
|
|
3473
3475
|
}.open
|
3474
3476
|
```
|
3475
3477
|
|
3476
|
-
If you use a Custom Shell as the top-level app shell, you may invoke the class method
|
3478
|
+
If you use a Custom Shell as the top-level app shell, you may invoke the class method `.launch` instead to avoid building an app class yourself or including Glimmer into the top-level namespace (e.g. `Tetris.launch` instead of `include Glimmer; tetris.open`)
|
3477
3479
|
|
3478
3480
|
You may check out [Hello, Custom Shell!](GLIMMER_SAMPLES.md#hello-custom-shell) for another example.
|
3479
3481
|
|
@@ -20,6 +20,12 @@ You may choose to generate a specific type of packaging instead by addionally pa
|
|
20
20
|
glimmer package[msi]
|
21
21
|
```
|
22
22
|
|
23
|
+
Make sure to surround with double-quotes when running from ZShell (zsh):
|
24
|
+
|
25
|
+
```
|
26
|
+
glimmer "package[msi]"
|
27
|
+
```
|
28
|
+
|
23
29
|
- Available Mac packaging types are `dmg`, `pkg`, and `image` (image means a pure Mac `app` without a setup program). Keep in mind that the packages you produce are compatible with the same MacOS you are on or older.
|
24
30
|
- Available Windows packaging types are `msi`, `exe`, and `image` (image means a Windows application directory without a setup program). Learn more about Windows packaging are [over here](#windows-application-packaging).
|
25
31
|
|
@@ -190,7 +196,7 @@ Currently, `Glimmer::RakeTask::Package.javapackager_extra_args` is only honored
|
|
190
196
|
You can get around that in zsh by running glimmer package commands with `bash -c` prefix:
|
191
197
|
|
192
198
|
```
|
193
|
-
bash -c 'glimmer package'
|
199
|
+
bash -c 'source ~/.glimmer_source; glimmer package'
|
194
200
|
```
|
195
201
|
|
196
202
|
4. Java on Windows System PATH
|
@@ -2,7 +2,9 @@
|
|
2
2
|
- [Hello Samples](#hello-samples)
|
3
3
|
- [Hello, World!](#hello-world)
|
4
4
|
- [Hello, Tab!](#hello-tab)
|
5
|
+
- [Hello, C Tab!](#hello-c-tab)
|
5
6
|
- [Hello, Combo!](#hello-combo)
|
7
|
+
- [Hello, C Combo!](#hello-c-combo)
|
6
8
|
- [Hello, List Single Selection!](#hello-list-single-selection)
|
7
9
|
- [Hello, List Multi Selection!](#hello-list-multi-selection)
|
8
10
|
- [Hello, Computed!](#hello-computed)
|
@@ -101,6 +103,18 @@ Code:
|
|
101
103
|
![Hello Tab English](/images/glimmer-hello-tab-english.png)
|
102
104
|
![Hello Tab French](/images/glimmer-hello-tab-french.png)
|
103
105
|
|
106
|
+
#### Hello, C Tab!
|
107
|
+
|
108
|
+
This sample demonstrates custom tab widget usage (`c_tab_folder` and `c_tab_item`), which supports more customizations to tab fonts/background/foreground colors and display of extra additional tabs via a drop down.
|
109
|
+
|
110
|
+
Code:
|
111
|
+
|
112
|
+
[samples/hello/hello_c_tab.rb](/samples/hello/hello_c_tab.rb)
|
113
|
+
|
114
|
+
![Hello C Tab](/images/glimmer-hello-c-tab.png)
|
115
|
+
![Hello C Tab Extra Tabs](/images/glimmer-hello-c-tab-extra-tabs.png)
|
116
|
+
![Hello C Tab Other Tab](/images/glimmer-hello-c-tab-other-tab.png)
|
117
|
+
|
104
118
|
#### Hello, Combo!
|
105
119
|
|
106
120
|
This sample demonstrates combo data-binding.
|
@@ -112,6 +126,17 @@ Code:
|
|
112
126
|
![Hello Combo](/images/glimmer-hello-combo.png)
|
113
127
|
![Hello Combo Expanded](/images/glimmer-hello-combo-expanded.png)
|
114
128
|
|
129
|
+
#### Hello, C Combo!
|
130
|
+
|
131
|
+
This sample demonstrates the custom combo variation on combo, which allows the adjustment of the combo height based on font height or layout data.
|
132
|
+
|
133
|
+
Code:
|
134
|
+
|
135
|
+
[samples/hello/hello_c_combo.rb](/samples/hello/hello_c_combo.rb)
|
136
|
+
|
137
|
+
![Hello Combo](/images/glimmer-hello-c-combo.png)
|
138
|
+
![Hello Combo Expanded](/images/glimmer-hello-c-combo-expanded.png)
|
139
|
+
|
115
140
|
#### Hello, List Single Selection!
|
116
141
|
|
117
142
|
This sample demonstrates list single-selection data-binding.
|
data/glimmer-dsl-swt.gemspec
CHANGED
Binary file
|
data/lib/glimmer-dsl-swt.rb
CHANGED
@@ -53,7 +53,7 @@ module Glimmer
|
|
53
53
|
return
|
54
54
|
end
|
55
55
|
# need the rescue false for a scenario with tree items not being equal to model objects raising an exception
|
56
|
-
|
56
|
+
if @async_exec || !((value == evaluate_property) rescue false) # need the rescue false for a scenario with tree items not being equal to model objects raising an exception
|
57
57
|
@widget.set_attribute(@property, value)
|
58
58
|
end
|
59
59
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Copyright (c) 2007-2021 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'
|
23
|
+
require 'glimmer/dsl/static_expression'
|
24
|
+
require 'glimmer/dsl/parent_expression'
|
25
|
+
require 'glimmer/swt/widget_proxy'
|
26
|
+
require 'glimmer/swt/c_tab_item_proxy'
|
27
|
+
|
28
|
+
module Glimmer
|
29
|
+
module DSL
|
30
|
+
module SWT
|
31
|
+
class CTabItemExpression < StaticExpression
|
32
|
+
include ParentExpression
|
33
|
+
|
34
|
+
include_package 'org.eclipse.swt.custom'
|
35
|
+
|
36
|
+
def can_interpret?(parent, keyword, *args, &block)
|
37
|
+
initial_condition = (keyword == 'c_tab_item') and parent.respond_to?(:swt_widget)
|
38
|
+
if initial_condition
|
39
|
+
if parent.swt_widget.is_a?(CTabFolder)
|
40
|
+
return true
|
41
|
+
else
|
42
|
+
Glimmer::Config.logger.error {"c_tab_item widget may only be used directly under a c_tab_folder widget!"}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
false
|
46
|
+
end
|
47
|
+
|
48
|
+
def interpret(parent, keyword, *args, &block)
|
49
|
+
Glimmer::SWT::CTabItemProxy.new(parent, args)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|