glimmer-dsl-swt 4.18.7.2 → 4.18.7.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +113 -17
- data/VERSION +1 -1
- data/docs/reference/GLIMMER_COMMAND.md +82 -5
- data/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md +3 -5
- data/glimmer-dsl-swt.gemspec +10 -9
- data/lib/glimmer/data_binding/widget_binding.rb +1 -1
- data/lib/glimmer/rake_task.rb +36 -6
- data/lib/glimmer/rake_task/list.rb +8 -0
- data/lib/glimmer/rake_task/scaffold.rb +103 -0
- data/lib/glimmer/swt/custom/code_text.rb +19 -3
- data/lib/glimmer/swt/custom/shape.rb +366 -198
- data/lib/glimmer/swt/custom/shape/image.rb +7 -9
- data/lib/glimmer/swt/custom/shape/path.rb +1 -5
- data/lib/glimmer/swt/custom/shape/polygon.rb +24 -8
- data/lib/glimmer/swt/custom/shape/polyline.rb +5 -0
- data/lib/glimmer/swt/custom/shape/rectangle.rb +10 -19
- data/lib/glimmer/swt/image_proxy.rb +5 -1
- data/samples/elaborate/tetris.rb +1 -15
- data/samples/elaborate/tetris/model/game.rb +3 -0
- data/samples/elaborate/tetris/view/bevel.rb +81 -0
- data/samples/elaborate/tetris/view/block.rb +5 -30
- data/samples/hello/hello_code_text.rb +141 -73
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ea8c8ccaf5bed68b086f7152510acf44d0ce50026d3d6ddc6d6f5a2bff9a75c
|
4
|
+
data.tar.gz: f492f57e327e40fe4995b1b38ba737cc7dce46f48c6955581514812c4b873a68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5d460f70cc1eadab8e75d973b264e0c98833ddac519065b9449abb74a43bea201b2d31b70e20904647cc56c006b604bdf85b5648865842b103ad3e5a6e57ebc
|
7
|
+
data.tar.gz: 2007bd5c63d1141670973bbe2fc6254dabea7f74695716e542aa39322f25f5badaefc2b3cdfd70d33114920bdc58e4f902efb9e51718a3c64d7611c3e6720140
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,36 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
### 4.18.7.7
|
4
|
+
|
5
|
+
- Upgrade to glimmer v1.3.0
|
6
|
+
- Handle `code_text` encountering errors in adding observation request
|
7
|
+
- Always notify widget binding observer on `async_exec: true` data-bindings
|
8
|
+
|
9
|
+
### 4.18.7.6
|
10
|
+
|
11
|
+
- Update the Hello, Code Text! sample to use data-binding
|
12
|
+
- Upgrade `puts_debuggerer` gem dependency to version 0.12.0
|
13
|
+
- Fix issue with `code_text` data-binding
|
14
|
+
|
15
|
+
### 4.18.7.5
|
16
|
+
|
17
|
+
- Update `ImageProxy` with missing methods `#size`, `#parent_proxy`, and `#parent`, needed for a better "Shapes in an Image" support.
|
18
|
+
|
19
|
+
### 4.18.7.4
|
20
|
+
|
21
|
+
- Add `glimmer scaffold:customshape[name,namespace]` command
|
22
|
+
- Add `glimmer scaffold:gem:customshape[name,namespace]` command
|
23
|
+
- Add `glimmer list:gems:customshape[keyword]` command
|
24
|
+
- Support automatic inference of `fill: true` for `path` just like other shapes
|
25
|
+
- Support `filled: true` alternative for `fill: true` Canvas Shape DSL option
|
26
|
+
- Fix issue with having to pass base_color to `bevel` custom shape in Tetris before data-binding instead of data-binding being sufficient
|
27
|
+
|
28
|
+
### 4.18.7.3
|
29
|
+
|
30
|
+
- Support the ability for nested shapes to override their parent `shape` common shared properties
|
31
|
+
- Refactor Tetris to use a custom shape (`bevel`) for its blocks given they are used in both the game and the icon, thus achieving code reuse
|
32
|
+
- Fix issue with moving filled polygon (moving drawn polygon works)
|
33
|
+
|
3
34
|
### 4.18.7.2
|
4
35
|
|
5
36
|
- Enable defining custom shapes with direct args just like basic shapes (alternative to using keyword arg options)
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
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 SWT 4.18.7.
|
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 SWT 4.18.7.7
|
2
2
|
## JRuby Desktop Development GUI Framework
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
|
4
4
|
[![Travis CI](https://travis-ci.com/AndyObtiva/glimmer-dsl-swt.svg?branch=master)](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
|
@@ -8,12 +8,14 @@
|
|
8
8
|
|
9
9
|
**[Contributors Wanted! (Submit a Glimmer App Sample to Get Started)](#contributing)**
|
10
10
|
|
11
|
-
|
11
|
+
**(The Original Glimmer Library Handling the World’s Ruby GUI Needs Since 2007. Beware of Imitators!)**
|
12
|
+
|
13
|
+
[Glimmer](https://github.com/AndyObtiva/glimmer) DSL for SWT is a native-GUI cross-platform desktop development library written in [JRuby](https://www.jruby.org/), an OS-threaded faster JVM version of [Ruby](https://www.ruby-lang.org/en/). [Glimmer](https://github.com/AndyObtiva/glimmer) was the [first Ruby gem](https://rubygems.org/gems/glimmer) to bring [SWT](https://www.eclipse.org/swt/) (Standard Widget Toolkit) to [Ruby](https://www.ruby-lang.org/en/), thanks to its creator [Andy Maleh](https://andymaleh.blogspot.com/), an EclipseCon/EclipseWorld/RubyConf speaker and expert. [Glimmer](https://github.com/AndyObtiva/glimmer)'s main innovation is a declarative [Ruby DSL](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#glimmer-dsl-syntax) that enables productive and efficient authoring of desktop application user-interfaces by relying on the robust [Eclipse SWT library](https://www.eclipse.org/swt/). [Glimmer](https://rubygems.org/gems/glimmer) additionally innovates by having built-in [data-binding](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#data-binding) support, which greatly facilitates synchronizing the GUI with domain models, thus achieving true decoupling of object oriented components and enabling developers to solve business problems (test-first) without worrying about GUI concerns, or alternatively drive development GUI-first, and then write clean business models (test-first) afterwards. Not only does Glimmer provide a large set of GUI [widgets](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#widgets), but it also supports drawing Canvas Graphics like [Shapes](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#canvas-shape-dsl) and [Animations](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#canvas-animation-dsl). To get started quickly, [Glimmer](https://rubygems.org/gems/glimmer) offers [scaffolding](docs/reference/GLIMMER_COMMAND.md#scaffolding) options for [Apps](#in-production), [Gems](docs/reference/GLIMMER_COMMAND.md#custom-shell-gem), and [Custom Widgets](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#custom-widgets). [Glimmer](https://rubygems.org/gems/glimmer) also includes native-executable [packaging](docs/reference/GLIMMER_PACKAGING_AND_DISTRIBUTION.md) support, sorely lacking in other libraries, thus enabling the delivery of desktop apps written in [Ruby](https://www.ruby-lang.org/en/) as truly native DMG/PKG/APP files on the [Mac](https://www.apple.com/ca/macos) + [App Store](https://developer.apple.com/macos/distribution/), MSI/EXE files on [Windows](https://www.microsoft.com/en-ca/windows), and [Gem Packaged Shell Scripts](docs/reference/GLIMMER_COMMAND.md#packaging) on [Linux](https://www.linux.org/).
|
12
14
|
|
13
15
|
[<img src="https://covers.oreillystatic.com/images/9780596519650/lrg.jpg" width=105 /><br />
|
14
16
|
Featured in JRuby Cookbook](http://shop.oreilly.com/product/9780596519650.do) and [Chalmers/Gothenburg University Software Engineering Master's Lecture Material](http://www.cse.chalmers.se/~bergert/slides/guest_lecture_DSLs.pdf)
|
15
17
|
|
16
|
-
[Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.18.7.
|
18
|
+
[Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.18.7.7 includes [SWT 4.18](https://download.eclipse.org/eclipse/downloads/drops4/R-4.18-202012021800/), which was released on December 2, 2020. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT.
|
17
19
|
|
18
20
|
[Glimmer DSL for SWT receives two updates per month](https://rubygems.org/gems/glimmer-dsl-swt/versions). You can trust [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) with your Ruby desktop GUI development needs! [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) brings great ideas to the table, such as declarative programming via domain specific languages, currently under-utilized in the GUI domain. That said, it may not be feature complete enough for everybody's needs, so please help make [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) even better by providing feedback and [contributing](#contributing) when possible. The project is very active, so any feature suggestions that are accepted could be implemented within weeks if not days. Also, you are welcome to [hire me](#hire-me) full-time if you want long-term development of [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) for your project needs.
|
19
21
|
|
@@ -340,7 +342,7 @@ jgem install glimmer-dsl-swt
|
|
340
342
|
|
341
343
|
Or this command if you want a specific version:
|
342
344
|
```
|
343
|
-
jgem install glimmer-dsl-swt -v 4.18.7.
|
345
|
+
jgem install glimmer-dsl-swt -v 4.18.7.7
|
344
346
|
```
|
345
347
|
|
346
348
|
`jgem` is JRuby's version of `gem` command.
|
@@ -358,7 +360,7 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
|
|
358
360
|
|
359
361
|
Add the following to `Gemfile`:
|
360
362
|
```
|
361
|
-
gem 'glimmer-dsl-swt', '~> 4.18.7.
|
363
|
+
gem 'glimmer-dsl-swt', '~> 4.18.7.7'
|
362
364
|
```
|
363
365
|
|
364
366
|
And, then run:
|
@@ -374,27 +376,115 @@ You may learn more about other Glimmer related gems ([`glimmer-dsl-opal`](https:
|
|
374
376
|
|
375
377
|
You can use the glimmer command to scaffold new apps, run apps & samples, package native executables, and list Glimmer community gems.
|
376
378
|
|
377
|
-
|
379
|
+
```
|
380
|
+
glimmer
|
381
|
+
```
|
382
|
+
|
383
|
+
```
|
384
|
+
Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.18.7.7
|
385
|
+
|
386
|
+
Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
|
387
|
+
|
388
|
+
Runs Glimmer applications and tasks.
|
389
|
+
|
390
|
+
When applications are specified, they are run using JRuby,
|
391
|
+
automatically preloading the glimmer Ruby gem and SWT jar dependency.
|
392
|
+
|
393
|
+
Optionally, extra Glimmer options, JRuby options, and/or environment variables may be passed in.
|
394
|
+
|
395
|
+
Glimmer options:
|
396
|
+
- "--bundler=GROUP" : Activates gems in Bundler default group in Gemfile
|
397
|
+
- "--pd=BOOLEAN" : Requires puts_debuggerer to enable pd method
|
398
|
+
- "--quiet=BOOLEAN" : Does not announce file path of Glimmer application being launched
|
399
|
+
- "--debug" : Displays extra debugging information, passes "--debug" to JRuby, and enables debug logging
|
400
|
+
- "--log-level=VALUE" : Sets Glimmer's Ruby logger level ("ERROR" / "WARN" / "INFO" / "DEBUG"; default is none)
|
401
|
+
|
402
|
+
Tasks are run via rake. Some tasks take arguments in square brackets.
|
403
|
+
|
404
|
+
Available tasks are below (if you do not see any, please add `require 'glimmer/rake_task'` to Rakefile and rerun or run rake -T):
|
405
|
+
|
406
|
+
Select a Glimmer task to run: (Press ↑/↓ arrow to move, Enter to select and letters to filter)
|
407
|
+
glimmer list:gems:customshape[query] # List Glimmer custom shape gems available at rubygems.org (query is optional) [alt: list:gems:cp]
|
408
|
+
‣ glimmer list:gems:customshell[query] # List Glimmer custom shell gems available at rubygems.org (query is optional) [alt: list:gems:cs]
|
409
|
+
glimmer list:gems:customwidget[query] # List Glimmer custom widget gems available at rubygems.org (query is optional) [alt: list:gems:cw]
|
410
|
+
glimmer list:gems:dsl[query] # List Glimmer DSL gems available at rubygems.org (query is optional)
|
411
|
+
glimmer package[type] # Package app for distribution (generating config, jar, and native files) (type is optional)
|
412
|
+
glimmer package:clean # Clean by removing "dist" and "packages" directories
|
413
|
+
glimmer package:config # Generate JAR config file
|
414
|
+
glimmer package:gem # Generate gem under pkg directory
|
415
|
+
glimmer package:gemspec # Generate gemspec
|
416
|
+
glimmer package:jar # Generate JAR file
|
417
|
+
glimmer package:lock_jars # Lock JARs
|
418
|
+
glimmer package:native[type] # Generate Native files
|
419
|
+
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)
|
420
|
+
glimmer samples # Brings up the Glimmer Meta-Sample app to allow browsing, running, and viewing code of Glimmer samples
|
421
|
+
glimmer scaffold[app_name] # Scaffold Glimmer application directory structure to build a new app
|
422
|
+
glimmer scaffold:customshape[name,namespace] # Scaffold Glimmer::UI::CustomShape subclass (part of a view) under app/views (namespace is optional) [alt: scaffold:cp]
|
423
|
+
glimmer scaffold:customshell[name,namespace] # Scaffold Glimmer::UI::CustomShell subclass (full window view) under app/views (namespace is optional) [alt: scaffold:cs]
|
424
|
+
glimmer scaffold:customwidget[name,namespace] # Scaffold Glimmer::UI::CustomWidget subclass (part of a view) under app/views (namespace is optional) [alt: scaffold:cw]
|
425
|
+
glimmer scaffold:desktopify[app_name,website] # Desktopify a web app
|
426
|
+
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]
|
427
|
+
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...
|
428
|
+
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]
|
429
|
+
```
|
430
|
+
|
431
|
+
Learn more at: [docs/reference/GLIMMER_COMMAND.md](docs/reference/GLIMMER_COMMAND.md)
|
378
432
|
|
379
433
|
## Girb (Glimmer irb) Command
|
380
434
|
|
381
435
|
You can use `girb` as an alternative to `irb` when prototyping Glimmer DSL for SWT GUI DSL code.
|
382
436
|
|
383
|
-
|
437
|
+
```
|
438
|
+
girb
|
439
|
+
```
|
440
|
+
|
441
|
+
![GIRB](/images/glimmer-girb.png)
|
442
|
+
|
443
|
+
Learn more at: [docs/reference/GLIMMER_GIRB.md](docs/reference/GLIMMER_GIRB.md)
|
384
444
|
|
385
445
|
## Glimmer GUI DSL Syntax
|
386
446
|
|
387
|
-
|
447
|
+
Here is a listing of supported widgets taken from the [SWT website](https://www.eclipse.org/swt/widgets/):
|
448
|
+
|
449
|
+
[![SWT Widgets](/images/glimmer-swt-widgets.png)](https://www.eclipse.org/swt/widgets/)
|
450
|
+
|
451
|
+
In a nutshell, the Glimmer GUI DSL syntax consists mainly of:
|
388
452
|
|
389
|
-
|
453
|
+
1. Keywords
|
390
454
|
|
391
|
-
|
455
|
+
Example of a keyword representing a table widget:
|
456
|
+
|
457
|
+
```ruby
|
458
|
+
table
|
459
|
+
```
|
460
|
+
|
461
|
+
2. Style/Args
|
462
|
+
|
463
|
+
Example of a multi-line selection table widget:
|
464
|
+
|
465
|
+
```ruby
|
466
|
+
table(:multi)
|
467
|
+
```
|
468
|
+
|
469
|
+
3. Content/Properties
|
470
|
+
|
471
|
+
Example of a multi-line selection table widget with a table column as content that has a header `text` property as 'Name'.
|
472
|
+
|
473
|
+
```ruby
|
474
|
+
table(:multi) {
|
475
|
+
table_column {
|
476
|
+
text 'Name'
|
477
|
+
}
|
478
|
+
}
|
479
|
+
```
|
480
|
+
|
481
|
+
Learn more at: [docs/reference/GLIMMER_GUI_DSL_SYNTAX.md](docs/reference/GLIMMER_GUI_DSL_SYNTAX.md)
|
392
482
|
|
393
483
|
## Glimmer Configuration
|
394
484
|
|
395
485
|
Glimmer configuration may be done via the `Glimmer::Config` module.
|
396
486
|
|
397
|
-
[docs/reference/GLIMMER_CONFIGURATION.md](docs/reference/GLIMMER_CONFIGURATION.md)
|
487
|
+
Learn more at: [docs/reference/GLIMMER_CONFIGURATION.md](docs/reference/GLIMMER_CONFIGURATION.md)
|
398
488
|
|
399
489
|
## Glimmer Style Guide
|
400
490
|
|
@@ -402,10 +492,6 @@ Glimmer configuration may be done via the `Glimmer::Config` module.
|
|
402
492
|
|
403
493
|
## Samples
|
404
494
|
|
405
|
-
See a listing of samples over here, including screenshots and explanations of what each sample demonstrates:
|
406
|
-
|
407
|
-
[docs/reference/GLIMMER_SAMPLES.md](docs/reference/GLIMMER_SAMPLES.md)
|
408
|
-
|
409
495
|
Check the [samples](samples) directory in [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) for examples on how to write Glimmer applications. To run a sample, make sure to install the `glimmer-dsl-swt` gem first and then run:
|
410
496
|
```
|
411
497
|
glimmer samples
|
@@ -415,6 +501,8 @@ glimmer samples
|
|
415
501
|
|
416
502
|
![Glimmer Meta-Sample](/images/glimmer-meta-sample.png)
|
417
503
|
|
504
|
+
See a listing of samples including screenshots and explanations at: [docs/reference/GLIMMER_SAMPLES.md](docs/reference/GLIMMER_SAMPLES.md)
|
505
|
+
|
418
506
|
## In Production
|
419
507
|
|
420
508
|
The following production apps have been built with Glimmer.
|
@@ -441,11 +529,19 @@ If you have a Glimmer app you would like referenced here, please mention in a Pu
|
|
441
529
|
|
442
530
|
[<img alt="Connector Logo" src="https://raw.githubusercontent.com/AndyObtiva/connector/master/package/linux/Connector.png" height=40 /> Connector](https://github.com/AndyObtiva/connector): A minimalist open-source multi-engine web browser
|
443
531
|
|
532
|
+
### The DCR Programming Language
|
533
|
+
|
534
|
+
[<img alt="Connector Logo" src="https://raw.githubusercontent.com/AndyObtiva/dcr/f31cd45a8503051e899ed8e831fd03654d38e418/package/linux/Draw%20Color%20Repeat.png" height=40 /> Draw Color Repeat](https://github.com/AndyObtiva/dcr): A young boy programming language for Drawing and Coloring with Repetition
|
535
|
+
|
444
536
|
## Packaging & Distribution
|
445
537
|
|
446
|
-
Glimmer simplifies the process of native-executable packaging and distribution on Mac and Windows via a single
|
538
|
+
Glimmer simplifies the process of native-executable packaging and distribution on Mac and Windows via a single command:
|
539
|
+
|
540
|
+
```
|
541
|
+
glimmer package
|
542
|
+
```
|
447
543
|
|
448
|
-
[docs/reference/GLIMMER_PACKAGING_AND_DISTRIBUTION.md](docs/reference/GLIMMER_PACKAGING_AND_DISTRIBUTION.md)
|
544
|
+
Learn more at: [docs/reference/GLIMMER_PACKAGING_AND_DISTRIBUTION.md](docs/reference/GLIMMER_PACKAGING_AND_DISTRIBUTION.md)
|
449
545
|
|
450
546
|
## App Updates
|
451
547
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.18.7.
|
1
|
+
4.18.7.7
|
@@ -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
|
```
|
@@ -333,7 +337,7 @@ glimmer scaffold:cs[name]
|
|
333
337
|
|
334
338
|
#### Custom Widget
|
335
339
|
|
336
|
-
To scaffold a Glimmer [custom widget](#custom-widgets) (part of a view) for an existing Glimmer app, run the following command:
|
340
|
+
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
341
|
|
338
342
|
```
|
339
343
|
glimmer scaffold:customwidget[name]
|
@@ -345,6 +349,20 @@ Or the following alternative abbreviation:
|
|
345
349
|
glimmer scaffold:cw[name]
|
346
350
|
```
|
347
351
|
|
352
|
+
#### Custom Shape
|
353
|
+
|
354
|
+
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:
|
355
|
+
|
356
|
+
```
|
357
|
+
glimmer scaffold:customshape[name]
|
358
|
+
```
|
359
|
+
|
360
|
+
Or the following alternative abbreviation:
|
361
|
+
|
362
|
+
```
|
363
|
+
glimmer scaffold:cp[name]
|
364
|
+
```
|
365
|
+
|
348
366
|
#### Custom Shell Gem
|
349
367
|
|
350
368
|
Custom shell gems are self-contained Glimmer apps as well as reusable [custom shells](#custom-shells).
|
@@ -382,7 +400,7 @@ Examples:
|
|
382
400
|
|
383
401
|
#### Custom Widget Gem
|
384
402
|
|
385
|
-
To scaffold a Glimmer [custom widget](#custom-widgets) gem (part of a view distributed as a Ruby gem), run the following command:
|
403
|
+
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
404
|
|
387
405
|
```
|
388
406
|
glimmer scaffold:gem:customwidget[name,namespace]
|
@@ -397,14 +415,40 @@ glimmer scaffold:gem:cw[name,namespace]
|
|
397
415
|
|
398
416
|
It is important to specify a namespace to avoid having your gem clash with existing gems.
|
399
417
|
|
400
|
-
The Ruby gem name will follow the convention "glimmer-cw-customwidgetname-namespace" (the 'cw' is for Custom Widget)
|
418
|
+
The Ruby gem name will follow the convention "glimmer-cw-customwidgetname-namespace" (the 'cw' is for Custom Widget; name words are not separated)
|
401
419
|
|
402
420
|
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
421
|
|
404
422
|
Examples:
|
405
423
|
|
406
424
|
- [glimmer-cw-video](https://github.com/AndyObtiva/glimmer-cw-video): Video Widget
|
407
|
-
- [glimmer-cw-
|
425
|
+
- [glimmer-cw-nebula](https://github.com/AndyObtiva/glimmer-cw-nebula): The Nebula Project 50+ enterprise-grade high quality custom widgets for SWT
|
426
|
+
- [glimmer-cw-cdatetime-nebula](https://github.com/AndyObtiva/glimmer-cw-cdatetime-nebula): Nebula CDateTime Widget (piecemeal)
|
427
|
+
|
428
|
+
#### Custom Shape Gem
|
429
|
+
|
430
|
+
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:
|
431
|
+
|
432
|
+
```
|
433
|
+
glimmer scaffold:gem:customshape[name,namespace]
|
434
|
+
```
|
435
|
+
|
436
|
+
Or the following alternative abbreviation:
|
437
|
+
|
438
|
+
```
|
439
|
+
glimmer scaffold:gem:cp[name,namespace]
|
440
|
+
```
|
441
|
+
|
442
|
+
|
443
|
+
It is important to specify a namespace to avoid having your gem clash with existing gems.
|
444
|
+
|
445
|
+
The Ruby gem name will follow the convention "glimmer-cp-customshapename-namespace" (the 'cp' is for Custom Shape; name words are not separated)
|
446
|
+
|
447
|
+
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)
|
448
|
+
|
449
|
+
Examples:
|
450
|
+
|
451
|
+
- [glimmer-cp-bevel](https://github.com/AndyObtiva/glimmer-cp-bevel): Bevel
|
408
452
|
|
409
453
|
### Gem Listing
|
410
454
|
|
@@ -500,6 +544,39 @@ Output:
|
|
500
544
|
|
501
545
|
```
|
502
546
|
|
547
|
+
#### Listing Custom Shape Gems
|
548
|
+
|
549
|
+
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):
|
550
|
+
|
551
|
+
```
|
552
|
+
glimmer list:gems:customshape[query]
|
553
|
+
```
|
554
|
+
|
555
|
+
Or the following alternative abbreviation:
|
556
|
+
|
557
|
+
```
|
558
|
+
glimmer list:gems:cp[query]
|
559
|
+
```
|
560
|
+
|
561
|
+
Example:
|
562
|
+
|
563
|
+
```
|
564
|
+
glimmer list:gems:customshape
|
565
|
+
```
|
566
|
+
|
567
|
+
Output:
|
568
|
+
|
569
|
+
```
|
570
|
+
|
571
|
+
Glimmer Custom Shape Gems at rubygems.org:
|
572
|
+
|
573
|
+
Name Gem Version Author Description
|
574
|
+
|
575
|
+
Bevel glimmer-cp-bevel 0.1.1 Andy Maleh Bevel - Glimmer Custom Shape
|
576
|
+
Stickfigure glimmer-cp-stickfigure 0.1.1 Andy Maleh Stick Figure - Glimmer Custom Shape
|
577
|
+
|
578
|
+
```
|
579
|
+
|
503
580
|
#### Listing DSL Gems
|
504
581
|
|
505
582
|
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):
|
@@ -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
|
|
@@ -1416,7 +1414,7 @@ Shape keywords and their args (including defaults) are listed below (they basica
|
|
1416
1414
|
- `text(string, x, y, is_transparent = true)` text with optional is_transparent to indicate if background is transparent (default is true)
|
1417
1415
|
- `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
1416
|
|
1419
|
-
Shape keywords that can be filled with color can take a keyword argument `fill: true
|
1417
|
+
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
1418
|
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
1419
|
|
1422
1420
|
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.
|
data/glimmer-dsl-swt.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: glimmer-dsl-swt 4.18.7.
|
5
|
+
# stub: glimmer-dsl-swt 4.18.7.7 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "glimmer-dsl-swt".freeze
|
9
|
-
s.version = "4.18.7.
|
9
|
+
s.version = "4.18.7.7"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["AndyMaleh".freeze]
|
14
|
-
s.date = "2021-03-
|
14
|
+
s.date = "2021-03-23"
|
15
15
|
s.description = "Glimmer DSL for SWT (JRuby Desktop Development GUI Framework) is a native-GUI cross-platform desktop development library written in JRuby, an OS-threaded faster JVM version of Ruby. Glimmer's main innovation is a declarative Ruby DSL that enables productive and efficient authoring of desktop application user-interfaces by relying on the robust Eclipse SWT library. Glimmer additionally innovates by having built-in data-binding support, which greatly facilitates synchronizing the GUI with domain models, thus achieving true decoupling of object oriented components and enabling developers to solve business problems (test-first) without worrying about GUI concerns, or alternatively drive development GUI-first, and then write clean business models (test-first) afterwards. Not only does Glimmer provide a large set of GUI widgets, but it also supports drawing Canvas Graphics like Shapes and Animations. To get started quickly, Glimmer offers scaffolding options for Apps, Gems, and Custom Widgets. Glimmer also includes native-executable packaging support, sorely lacking in other libraries, thus enabling the delivery of desktop apps written in Ruby as truly native DMG/PKG/APP files on the Mac + App Store, MSI/EXE files on Windows, and Gem Packaged Shell Scripts on Linux.".freeze
|
16
16
|
s.email = "andy.am@gmail.com".freeze
|
17
17
|
s.executables = ["glimmer".freeze, "girb".freeze]
|
@@ -176,6 +176,7 @@ Gem::Specification.new do |s|
|
|
176
176
|
"samples/elaborate/tetris/model/game.rb",
|
177
177
|
"samples/elaborate/tetris/model/past_game.rb",
|
178
178
|
"samples/elaborate/tetris/model/tetromino.rb",
|
179
|
+
"samples/elaborate/tetris/view/bevel.rb",
|
179
180
|
"samples/elaborate/tetris/view/block.rb",
|
180
181
|
"samples/elaborate/tetris/view/high_score_dialog.rb",
|
181
182
|
"samples/elaborate/tetris/view/playfield.rb",
|
@@ -246,10 +247,10 @@ Gem::Specification.new do |s|
|
|
246
247
|
s.specification_version = 4
|
247
248
|
|
248
249
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
249
|
-
s.add_runtime_dependency(%q<glimmer>.freeze, ["~> 1.
|
250
|
+
s.add_runtime_dependency(%q<glimmer>.freeze, ["~> 1.3.1"])
|
250
251
|
s.add_runtime_dependency(%q<super_module>.freeze, [">= 1.4.1", "< 2.0.0"])
|
251
252
|
s.add_runtime_dependency(%q<nested_inherited_jruby_include_package>.freeze, [">= 0.3.0", "< 2.0.0"])
|
252
|
-
s.add_runtime_dependency(%q<puts_debuggerer>.freeze, [">= 0.
|
253
|
+
s.add_runtime_dependency(%q<puts_debuggerer>.freeze, [">= 0.12.0", "< 2.0.0"])
|
253
254
|
s.add_runtime_dependency(%q<rake-tui>.freeze, [">= 0.2.3", "< 2.0.0"])
|
254
255
|
s.add_runtime_dependency(%q<logging>.freeze, [">= 2.3.0", "< 3.0.0"])
|
255
256
|
s.add_runtime_dependency(%q<os>.freeze, [">= 1.0.0", "< 2.0.0"])
|
@@ -264,10 +265,10 @@ Gem::Specification.new do |s|
|
|
264
265
|
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.16.1"])
|
265
266
|
s.add_development_dependency(%q<simplecov-lcov>.freeze, ["~> 0.7.0"])
|
266
267
|
else
|
267
|
-
s.add_dependency(%q<glimmer>.freeze, ["~> 1.
|
268
|
+
s.add_dependency(%q<glimmer>.freeze, ["~> 1.3.1"])
|
268
269
|
s.add_dependency(%q<super_module>.freeze, [">= 1.4.1", "< 2.0.0"])
|
269
270
|
s.add_dependency(%q<nested_inherited_jruby_include_package>.freeze, [">= 0.3.0", "< 2.0.0"])
|
270
|
-
s.add_dependency(%q<puts_debuggerer>.freeze, [">= 0.
|
271
|
+
s.add_dependency(%q<puts_debuggerer>.freeze, [">= 0.12.0", "< 2.0.0"])
|
271
272
|
s.add_dependency(%q<rake-tui>.freeze, [">= 0.2.3", "< 2.0.0"])
|
272
273
|
s.add_dependency(%q<logging>.freeze, [">= 2.3.0", "< 3.0.0"])
|
273
274
|
s.add_dependency(%q<os>.freeze, [">= 1.0.0", "< 2.0.0"])
|
@@ -283,10 +284,10 @@ Gem::Specification.new do |s|
|
|
283
284
|
s.add_dependency(%q<simplecov-lcov>.freeze, ["~> 0.7.0"])
|
284
285
|
end
|
285
286
|
else
|
286
|
-
s.add_dependency(%q<glimmer>.freeze, ["~> 1.
|
287
|
+
s.add_dependency(%q<glimmer>.freeze, ["~> 1.3.1"])
|
287
288
|
s.add_dependency(%q<super_module>.freeze, [">= 1.4.1", "< 2.0.0"])
|
288
289
|
s.add_dependency(%q<nested_inherited_jruby_include_package>.freeze, [">= 0.3.0", "< 2.0.0"])
|
289
|
-
s.add_dependency(%q<puts_debuggerer>.freeze, [">= 0.
|
290
|
+
s.add_dependency(%q<puts_debuggerer>.freeze, [">= 0.12.0", "< 2.0.0"])
|
290
291
|
s.add_dependency(%q<rake-tui>.freeze, [">= 0.2.3", "< 2.0.0"])
|
291
292
|
s.add_dependency(%q<logging>.freeze, [">= 2.3.0", "< 3.0.0"])
|
292
293
|
s.add_dependency(%q<os>.freeze, [">= 1.0.0", "< 2.0.0"])
|