glimmer-dsl-swt 4.17.10.5 → 4.18.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +39 -0
- data/LICENSE.txt +1 -1
- data/README.md +421 -95
- data/RUBY_VERSION +1 -1
- data/VERSION +1 -1
- data/bin/girb +1 -1
- data/bin/girb_runner.rb +1 -1
- data/bin/glimmer +1 -1
- data/glimmer-dsl-swt.gemspec +53 -32
- data/lib/ext/glimmer.rb +1 -1
- data/lib/ext/glimmer/config.rb +1 -1
- data/lib/glimmer-dsl-swt.rb +2 -1
- data/lib/glimmer/Rakefile +1 -1
- data/lib/glimmer/data_binding/list_selection_binding.rb +1 -1
- data/lib/glimmer/data_binding/observable_widget.rb +1 -1
- data/lib/glimmer/data_binding/shine.rb +1 -1
- data/lib/glimmer/data_binding/table_items_binding.rb +1 -1
- data/lib/glimmer/data_binding/tree_items_binding.rb +1 -1
- data/lib/glimmer/data_binding/widget_binding.rb +1 -1
- data/lib/glimmer/dsl/swt/async_exec_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/bind_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/block_property_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/checkbox_group_selection_data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/color_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/column_properties_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/cursor_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/custom_widget_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/dialog_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/directory_dialog_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/display_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/dnd_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/dsl.rb +1 -1
- data/lib/glimmer/dsl/swt/exec_expression.rb +5 -5
- data/lib/glimmer/dsl/swt/expand_item_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/file_dialog_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/font_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/image_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/layout_data_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/layout_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/menu_bar_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/menu_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/message_box_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/observe_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/property_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/radio_group_selection_data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/rgb_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/rgba_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/shell_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/swt_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/sync_exec_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/tab_item_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/tree_properties_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/widget_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/widget_listener_expression.rb +1 -1
- data/lib/glimmer/launcher.rb +1 -1
- data/lib/glimmer/rake_task.rb +1 -1
- data/lib/glimmer/rake_task/list.rb +1 -1
- data/lib/glimmer/rake_task/package.rb +1 -1
- data/lib/glimmer/rake_task/scaffold.rb +1 -1
- data/lib/glimmer/swt/color_proxy.rb +1 -1
- data/lib/glimmer/swt/cursor_proxy.rb +1 -1
- data/lib/glimmer/swt/custom/checkbox_group.rb +1 -1
- data/lib/glimmer/swt/custom/radio_group.rb +1 -1
- data/lib/glimmer/swt/date_time_proxy.rb +1 -1
- data/lib/glimmer/swt/directory_dialog_proxy.rb +1 -1
- data/lib/glimmer/swt/display_proxy.rb +1 -1
- data/lib/glimmer/swt/dnd_proxy.rb +1 -1
- data/lib/glimmer/swt/expand_item_proxy.rb +1 -1
- data/lib/glimmer/swt/file_dialog_proxy.rb +1 -1
- data/lib/glimmer/swt/font_proxy.rb +1 -1
- data/lib/glimmer/swt/image_proxy.rb +12 -11
- data/lib/glimmer/swt/layout_data_proxy.rb +1 -1
- data/lib/glimmer/swt/layout_proxy.rb +8 -4
- data/lib/glimmer/swt/menu_proxy.rb +10 -6
- data/lib/glimmer/swt/message_box_proxy.rb +1 -1
- data/lib/glimmer/swt/packages.rb +1 -1
- data/lib/glimmer/swt/sash_form_proxy.rb +2 -2
- data/lib/glimmer/swt/scrolled_composite_proxy.rb +1 -1
- data/lib/glimmer/swt/shell_proxy.rb +1 -1
- data/lib/glimmer/swt/style_constantizable.rb +9 -5
- data/lib/glimmer/swt/styled_text_proxy.rb +1 -1
- data/lib/glimmer/swt/swt_proxy.rb +1 -1
- data/lib/glimmer/swt/tab_item_proxy.rb +1 -1
- data/lib/glimmer/swt/table_column_proxy.rb +1 -1
- data/lib/glimmer/swt/table_proxy.rb +1 -1
- data/lib/glimmer/swt/tree_proxy.rb +26 -22
- data/lib/glimmer/swt/widget_listener_proxy.rb +1 -1
- data/lib/glimmer/swt/widget_proxy.rb +70 -24
- data/lib/glimmer/ui/custom_shell.rb +1 -1
- data/lib/glimmer/ui/custom_widget.rb +1 -1
- data/lib/glimmer/util/proc_tracker.rb +1 -1
- data/samples/elaborate/contact_manager.rb +1 -1
- data/samples/elaborate/contact_manager/contact.rb +1 -1
- data/samples/elaborate/contact_manager/contact_manager_presenter.rb +1 -1
- data/samples/elaborate/contact_manager/contact_repository.rb +1 -1
- data/samples/elaborate/login.rb +11 -14
- data/samples/elaborate/meta_sample.rb +80 -20
- data/samples/elaborate/tic_tac_toe.rb +2 -2
- data/samples/elaborate/tic_tac_toe/board.rb +1 -1
- data/samples/elaborate/tic_tac_toe/cell.rb +1 -1
- data/samples/elaborate/user_profile.rb +1 -1
- data/samples/hello/hello_browser.rb +3 -1
- data/samples/hello/hello_button.rb +1 -1
- data/samples/hello/hello_checkbox.rb +1 -1
- data/samples/hello/hello_checkbox_group.rb +1 -1
- data/samples/hello/hello_combo.rb +1 -1
- data/samples/hello/hello_computed.rb +10 -4
- data/samples/hello/hello_computed/contact.rb +1 -1
- data/samples/hello/hello_custom_shell.rb +1 -1
- data/samples/hello/hello_custom_widget.rb +1 -1
- data/samples/hello/hello_date_time.rb +1 -1
- data/samples/hello/hello_dialog.rb +78 -0
- data/samples/hello/hello_directory_dialog.rb +1 -1
- data/samples/hello/hello_drag_and_drop.rb +1 -1
- data/samples/hello/hello_expand_bar.rb +1 -1
- data/samples/hello/hello_file_dialog.rb +1 -1
- data/samples/hello/hello_group.rb +1 -1
- data/samples/hello/hello_link.rb +80 -0
- data/samples/hello/hello_list_multi_selection.rb +23 -18
- data/samples/hello/hello_list_single_selection.rb +6 -6
- data/samples/hello/hello_menu_bar.rb +185 -29
- data/samples/hello/hello_message_box.rb +10 -9
- data/samples/hello/hello_pop_up_context_menu.rb +34 -7
- data/samples/hello/hello_radio.rb +1 -1
- data/samples/hello/hello_radio_group.rb +1 -1
- data/samples/hello/hello_sash_form.rb +1 -1
- data/samples/hello/hello_spinner.rb +1 -1
- data/samples/hello/hello_styled_text.rb +1 -1
- data/samples/hello/hello_tab.rb +1 -1
- data/samples/hello/hello_table.rb +1 -1
- data/samples/hello/hello_world.rb +1 -1
- 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 +60 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 773a763de14bf4235417825e86edd36b703b202f5012b9461a6d6aa63cc671e3
|
4
|
+
data.tar.gz: 4dc41f837cbb1eb8e7a90bf0209236f326e26c7af3774b5def8bd3c47fab731c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1365b3d2c0f322b4ea9ce4457c9bd6ccceaf1ea637b916927d21fd2d6da5d0d339944619326027c520e3fb7408d326ced0a09b8ba9e999aa572553fac3532c90
|
7
|
+
data.tar.gz: f6292d8563b0bb7159dd0124a8c2abe184ff0a89d77a47ddc452abab4dbfa0972ab32663cc90866cabad19091e0f128d405942f8fa9d8cbe7ba871bf54728bd2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,44 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
### 4.18.0.1
|
4
|
+
|
5
|
+
- Hello, Dialog! Sample
|
6
|
+
- Added Glimmer icon to Glimmer Meta-Sample (Sample of Samples)
|
7
|
+
- Upgrade Scaffolded projects to JRuby v9.2.14.0
|
8
|
+
- Switch back to official git gem v1.8.1 now that glimmer-git gem branch is merged into it
|
9
|
+
- Fix issue with not reporting exception encountered in editing a tree item if consumer code had a bug
|
10
|
+
|
11
|
+
### 4.18.0.0
|
12
|
+
|
13
|
+
- Upgrade to SWT v4.18
|
14
|
+
- Upgrade to JRuby v9.2.14.0
|
15
|
+
- Apply all WidgetProxy property converters upon normal setting of properties too (not just in DSL) (like `some_widget.background = color_symbol`)
|
16
|
+
- Update Hello, Menu Bar! sample to show accelerators on menu items
|
17
|
+
- Have the `swt` keyword (SWTProxy) support accepting a string character (to build an accelerator style)
|
18
|
+
- Make accelerator property accept symbols and character directly (without swt)
|
19
|
+
- Write meta-sample changes to user directory to avoid permission issues
|
20
|
+
- Zero margin_left, margin_right, margin_top, margin_bottom in layouts given that margin_width and margin_height are set by default
|
21
|
+
- Prevent editing/launching meta-sample from Glimmer Meta-Sample
|
22
|
+
- Fix enablement on `menu` (as opposed to menu_item, where it works)
|
23
|
+
- Fix issue relating to background image scaling on resize of widget
|
24
|
+
|
25
|
+
### 4.17.10.8
|
26
|
+
|
27
|
+
- Support editing sample code in the Glimmer Meta-Sample to enable experimentation and learning
|
28
|
+
- Add a "Reset" button to the Glimmer Meta-Sample to allow resetting sample code changes
|
29
|
+
- Refactor/revise hello_message_box.rb and hello_pop_up_context_menu.rb samples
|
30
|
+
- Upgrade to glimmer 1.0.6
|
31
|
+
|
32
|
+
### 4.17.10.7
|
33
|
+
|
34
|
+
- Loosened dependencies on most Glimmer author-owned gems
|
35
|
+
- Refactored/Simplified/Fixed Hello, Link! Sample
|
36
|
+
|
37
|
+
### 4.17.10.6
|
38
|
+
|
39
|
+
- Hello, Link! Sample
|
40
|
+
- Refactor hello list samples
|
41
|
+
|
3
42
|
### 4.17.10.5
|
4
43
|
|
5
44
|
- Hello, Button! Sample
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
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.
|
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.0.1
|
2
|
+
|
2
3
|
|
3
4
|
## JRuby Desktop Development GUI Framework
|
4
5
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
|
@@ -11,29 +12,29 @@
|
|
11
12
|
|
12
13
|
(The Original Glimmer Library Since 2007. Beware of Imitators!)
|
13
14
|
|
14
|
-
[Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer) is a native-GUI cross-platform desktop development library written in [JRuby](https://www.jruby.org/), an OS-threaded faster version of [Ruby](https://www.ruby-lang.org/en/). [Glimmer](https://github.com/AndyObtiva/glimmer)'s main innovation is a declarative [Ruby DSL](#glimmer-dsl-syntax) that enables productive and efficient authoring of desktop application user-interfaces while 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](#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. To get started quickly, [Glimmer](https://rubygems.org/gems/glimmer) offers [scaffolding](#scaffolding) options for [Apps](#in-production), [Gems](#custom-shell-gem), and [Custom Widgets](#custom-widgets). [Glimmer](https://rubygems.org/gems/glimmer) also includes native-executable [packaging](#packaging--distribution) 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](#custom-shell-gem) on [Linux](https://www.linux.org/).
|
15
|
+
[Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer) is a native-GUI cross-platform desktop development library written in [JRuby](https://www.jruby.org/), an OS-threaded faster version of [Ruby](https://www.ruby-lang.org/en/). [Glimmer](https://github.com/AndyObtiva/glimmer)'s main innovation is a declarative [Ruby DSL](#glimmer-dsl-syntax) that enables productive and efficient authoring of desktop application user-interfaces while 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](#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. To get started quickly, [Glimmer](https://rubygems.org/gems/glimmer) offers [scaffolding](#scaffolding) options for [Apps](#in-production), [Gems](#custom-shell-gem), and [Custom Widgets](#custom-widgets). [Glimmer](https://rubygems.org/gems/glimmer) also includes native-executable [packaging](#packaging--distribution) 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](#custom-shell-gem) on [Linux](https://www.linux.org/).
|
15
16
|
|
16
17
|
[Glimmer receives two updates per month](https://rubygems.org/gems/glimmer-dsl-swt/versions). You can trust [Glimmer](https://rubygems.org/gems/glimmer) with your Ruby desktop GUI development needs. Please make [Glimmer](https://rubygems.org/gems/glimmer) even better by providing feedback and [contributing](#contributing) when possible.
|
17
18
|
|
18
19
|
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.
|
19
20
|
|
20
|
-
[Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) versions 4.
|
21
|
+
[Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) versions 4.18.x.y come with [SWT 4.18](https://download.eclipse.org/eclipse/downloads/drops4/R-4.18-202012021800/), which was released on December 2, 2020.
|
21
22
|
|
22
23
|
[<img src="https://covers.oreillystatic.com/images/9780596519650/lrg.jpg" width=105 /><br />
|
23
|
-
Featured in
|
24
|
+
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)
|
24
25
|
|
25
26
|
Glimmer DSL gems:
|
26
|
-
- [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (JRuby Desktop GUI)
|
27
|
-
- [glimmer-dsl-
|
28
|
-
- [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Web GUI Adapter for Desktop Apps)
|
27
|
+
- [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)
|
28
|
+
- [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Pure Ruby Web GUI and Auto-Webifier of Desktop Apps)
|
29
29
|
- [glimmer-dsl-xml](https://github.com/AndyObtiva/glimmer-dsl-xml): Glimmer DSL for XML (& HTML)
|
30
30
|
- [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS
|
31
|
+
- [glimmer-dsl-tk](https://github.com/AndyObtiva/glimmer-dsl-tk): Glimmer DSL for Tk (Ruby Desktop Development GUI Library)
|
31
32
|
|
32
33
|
## Examples
|
33
34
|
|
34
35
|
### Hello, World!
|
35
36
|
|
36
|
-
Glimmer code (from [samples/hello/hello_world.rb](
|
37
|
+
Glimmer code (from [samples/hello/hello_world.rb](samples/hello/hello_world.rb)):
|
37
38
|
```ruby
|
38
39
|
include Glimmer
|
39
40
|
|
@@ -57,7 +58,7 @@ Glimmer app:
|
|
57
58
|
|
58
59
|
### Tic Tac Toe
|
59
60
|
|
60
|
-
Glimmer code (from [samples/elaborate/tic_tac_toe.rb](
|
61
|
+
Glimmer code (from [samples/elaborate/tic_tac_toe.rb](samples/elaborate/tic_tac_toe.rb)):
|
61
62
|
|
62
63
|
```ruby
|
63
64
|
# ...
|
@@ -96,7 +97,7 @@ Glimmer app:
|
|
96
97
|
|
97
98
|
### Contact Manager
|
98
99
|
|
99
|
-
Glimmer code (from [samples/elaborate/contact_manager.rb](
|
100
|
+
Glimmer code (from [samples/elaborate/contact_manager.rb](samples/elaborate/contact_manager.rb)):
|
100
101
|
|
101
102
|
```ruby
|
102
103
|
# ...
|
@@ -266,6 +267,7 @@ Glimmer App:
|
|
266
267
|
- [Glimmer GUI DSL Syntax](#glimmer-gui-dsl-syntax)
|
267
268
|
- [DSL Auto-Expansion](#dsl-auto-expansion)
|
268
269
|
- [Widgets](#widgets)
|
270
|
+
- [Glimmer GUI DSL Keywords](#glimmer-gui-dsl-keywords)
|
269
271
|
- [SWT Proxies](#swt-proxies)
|
270
272
|
- [Dialog](#dialog)
|
271
273
|
- [Display](#display)
|
@@ -355,6 +357,8 @@ Glimmer App:
|
|
355
357
|
- [Hello, Spinner!](#hello-spinner)
|
356
358
|
- [Hello, Table!](#hello-table)
|
357
359
|
- [Hello, Button!](#hello-button)
|
360
|
+
- [Hello, Link!](#hello-link)
|
361
|
+
- [Hello, Dialog!](#hello-dialog)
|
358
362
|
- [Elaborate Samples](#elaborate-samples)
|
359
363
|
- [User Profile](#user-profile)
|
360
364
|
- [Login](#login)
|
@@ -415,13 +419,13 @@ https://www.eclipse.org/swt/faq.php
|
|
415
419
|
## Pre-requisites
|
416
420
|
|
417
421
|
- JDK 8u241 (1.8.0_241) (find at https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)
|
418
|
-
- JRuby 9.2.
|
419
|
-
- SWT 4.
|
422
|
+
- JRuby 9.2.14.0 (supporting Ruby 2.5.x syntax) (get via [RVM](http://rvm.io) on Mac and Linux or find at [https://www.jruby.org/download](https://www.jruby.org/download) for Windows)
|
423
|
+
- SWT 4.18 (already included in the [glimmer-dsl-swt](https://rubygems.org/gems/glimmer-dsl-swt) gem)
|
420
424
|
|
421
425
|
To obtain JRuby through [RVM](http://rvm.io), you may run:
|
422
426
|
|
423
427
|
```bash
|
424
|
-
rvm install jruby-9.2.
|
428
|
+
rvm install jruby-9.2.14.0
|
425
429
|
```
|
426
430
|
|
427
431
|
Glimmer might still work on other versions of Java, JRuby and SWT, but there are no guarantees, so it is best to stick to the pre-requisites outlined above.
|
@@ -448,7 +452,8 @@ jgem install glimmer-dsl-swt
|
|
448
452
|
|
449
453
|
Or this command if you want a specific version:
|
450
454
|
```
|
451
|
-
jgem install glimmer-dsl-swt -v 4.
|
455
|
+
jgem install glimmer-dsl-swt -v 4.18.0.1
|
456
|
+
|
452
457
|
|
453
458
|
```
|
454
459
|
|
@@ -467,7 +472,8 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
|
|
467
472
|
|
468
473
|
Add the following to `Gemfile`:
|
469
474
|
```
|
470
|
-
gem 'glimmer-dsl-swt', '~> 4.
|
475
|
+
gem 'glimmer-dsl-swt', '~> 4.18.0.1
|
476
|
+
'
|
471
477
|
```
|
472
478
|
|
473
479
|
And, then run:
|
@@ -525,7 +531,8 @@ bin/glimmer samples
|
|
525
531
|
Below are the full usage instructions that come up when running `glimmer` without args.
|
526
532
|
|
527
533
|
```
|
528
|
-
Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.
|
534
|
+
Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.18.0.1
|
535
|
+
|
529
536
|
|
530
537
|
|
531
538
|
Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
|
@@ -1002,8 +1009,9 @@ Output:
|
|
1002
1009
|
Name Gem Version Author Description
|
1003
1010
|
|
1004
1011
|
Css glimmer-dsl-css 1.1.0 AndyMaleh Glimmer DSL for CSS
|
1005
|
-
Opal glimmer-dsl-opal 0.
|
1006
|
-
Swt glimmer-dsl-swt 4.
|
1012
|
+
Opal glimmer-dsl-opal 0.8.0 AndyMaleh Glimmer DSL for Opal
|
1013
|
+
Swt glimmer-dsl-swt 4.18.0.1
|
1014
|
+
|
1007
1015
|
AndyMaleh Glimmer DSL for SWT
|
1008
1016
|
Tk glimmer-dsl-tk 0.0.6 AndyMaleh Glimmer DSL for Tk
|
1009
1017
|
Xml glimmer-dsl-xml 1.1.0 AndyMaleh Glimmer DSL for XML
|
@@ -1084,7 +1092,7 @@ Keep in mind that all samples live under [https://github.com/AndyObtiva/glimmer-
|
|
1084
1092
|
|
1085
1093
|
Glimmer's core is a GUI DSL with a lightweight visual syntax that makes it easy to visualize the nesting of widgets in the GUI hierarchy tree.
|
1086
1094
|
|
1087
|
-
It is available through mixing in the `Glimmer` module, which makes Glimmer GUI DSL keywords available to both the instance scope and class scope:
|
1095
|
+
It is available through mixing in the `Glimmer` module, which makes [Glimmer GUI DSL Keywords](#glimmer-gui-dsl-keywords) available to both the instance scope and class scope:
|
1088
1096
|
|
1089
1097
|
```ruby
|
1090
1098
|
include Glimmer
|
@@ -1270,12 +1278,73 @@ shell {
|
|
1270
1278
|
}.open
|
1271
1279
|
```
|
1272
1280
|
|
1273
|
-
If you are new to Glimmer, you have learned enough to start running some [samples](#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.
|
1281
|
+
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.
|
1274
1282
|
|
1275
1283
|
If you are advanced and need more widgets, check out the [Nebula Project](https://www.eclipse.org/nebula/) for an extensive list of high quality custom widgets:
|
1276
1284
|
|
1277
1285
|
https://www.eclipse.org/nebula/
|
1278
1286
|
|
1287
|
+
#### Glimmer GUI DSL Keywords
|
1288
|
+
|
1289
|
+
This is not an exaustive list, but should give you a good start in learning Glimmer GUI DSL keywords, keeping in mind that the full list can be derived from the [SWT documentation](https://www.eclipse.org/swt/widgets/). More will be explained in the following sections.
|
1290
|
+
|
1291
|
+
**Widgets:**
|
1292
|
+
- `button`: featured in [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Message Box!](#hello-message-box) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe) / [Login](#login)
|
1293
|
+
- `browser`: featured in [Hello, Browser!](#hello-browser)
|
1294
|
+
- `calendar`: featured in [Hello, Date Time!](#hello-date-time)
|
1295
|
+
- `checkbox`: featured in [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox)
|
1296
|
+
- `checkbox_group`: featured in [Hello, Checkbox Group!](#hello-checkbox-group)
|
1297
|
+
- `combo`: featured in [Hello, Table!](#hello-table) / [Hello, Combo!](#hello-combo)
|
1298
|
+
- `composite`: featured in [Hello, Radio!](#hello-radio) / [Hello, Computed!](#hello-computed) / [Hello, Checkbox!](#hello-checkbox) / [Tic Tac Toe](#tic-tac-toe) / [Login](#login) / [Contact Manager](#contact-manager)
|
1299
|
+
- `date`: featured in [Hello, Table!](#hello-table) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Shell!](#hello-custom-shell) / [Tic Tac Toe](#tic-tac-toe)
|
1300
|
+
- `date_drop_down`: featured in [Hello, Table!](#hello-table) / [Hello, Date Time!](#hello-date-time)
|
1301
|
+
- `group`: featured in [Hello, Group!](#hello-group) / [Contact Manager](#contact-manager)
|
1302
|
+
- `label`: featured in [Hello, Computed!](#hello-computed) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, World!](#hello-world) / [Hello, Table!](#hello-table) / [Hello, Tab!](#hello-tab) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager) / [Login](#login)
|
1303
|
+
- `list` (w/ optional `:multi` SWT style): featured in [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Contact Manager](#contact-manager)
|
1304
|
+
- `menu`: featured in [Hello, Menu Bar!](#hello-menu-bar) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Table!](#hello-table)
|
1305
|
+
- `menu_bar`: featured in [Hello, Menu Bar!](#hello-menu-bar)
|
1306
|
+
- `menu_item`: featured in [Hello, Table!](#hello-table) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar)
|
1307
|
+
- `message_box`: featured in [Hello, Table!](#hello-table) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Message Box!](#hello-message-box) / [Hello, Menu Bar!](#hello-menu-bar)
|
1308
|
+
- `radio`: featured in [Hello, Radio!](#hello-radio) / [Hello, Group!](#hello-group)
|
1309
|
+
- `radio_group`: featured in [Hello, Radio Group!](#hello-radio-group)
|
1310
|
+
- `scrolled_composite`
|
1311
|
+
- `shell`: featured in [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Tab!](#hello-tab) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Computed!](#hello-computed) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe) / [Login](#login)
|
1312
|
+
- `tab_folder`: featured in [Hello, Tab!](#hello-tab)
|
1313
|
+
- `tab_item`: featured in [Hello, Tab!](#hello-tab)
|
1314
|
+
- `table`: featured in [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Table!](#hello-table) / [Contact Manager](#contact-manager)
|
1315
|
+
- `table_column`: featured in [Hello, Table!](#hello-table) / [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager)
|
1316
|
+
- `text`: featured in [Hello, Computed!](#hello-computed) / [Login](#login) / [Contact Manager](#contact-manager)
|
1317
|
+
- `time`: featured in [Hello, Table!](#hello-table) / [Hello, Date Time!](#hello-date-time)
|
1318
|
+
- Glimmer::UI::CustomWidget: ability to define any keyword as a custom widget - featured in [Hello, Custom Widget!](#hello-custom-widget)
|
1319
|
+
- Glimmer::UI::CustomShell: ability to define any keyword as a custom shell (aka custom window) that opens in a new browser window (tab) automatically unless there is no shell open in the current browser window (tab) - featured in [Hello, Custom Shell!](#hello-custom-shell)
|
1320
|
+
|
1321
|
+
**Layouts:**
|
1322
|
+
- `grid_layout`: featured in [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Computed!](#hello-computed) / [Hello, Table!](#hello-table) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Contact Manager](#contact-manager) / [Login](#login) / [Tic Tac Toe](#tic-tac-toe)
|
1323
|
+
- `row_layout`: featured in [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Contact Manager](#contact-manager)
|
1324
|
+
- `fill_layout`: featured in [Hello, Custom Widget!](#hello-custom-widget)
|
1325
|
+
- `layout_data`: featured in [Hello, Table!](#hello-table) / [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Computed!](#hello-computed) / [Tic Tac Toe](#tic-tac-toe) / [Contact Manager](#contact-manager)
|
1326
|
+
|
1327
|
+
**Graphics/Style:**
|
1328
|
+
- `color`: featured in [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Menu Bar!](#hello-menu-bar)
|
1329
|
+
- `font`: featured in [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe)
|
1330
|
+
- `Point` class used in setting location on widgets
|
1331
|
+
- `swt` and `SWT` class to set SWT styles on widgets - featured in [Hello, Custom Shell!](#hello-custom-shell) / [Login](#login) / [Contact Manager](#contact-manager)
|
1332
|
+
|
1333
|
+
**Data-Binding/Observers:**
|
1334
|
+
- `bind`: featured in [Hello, Computed!](#hello-computed) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell) / [Login](#login) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe)
|
1335
|
+
- `observe`: featured in [Hello, Table!](#hello-table) / [Tic Tac Toe](#tic-tac-toe)
|
1336
|
+
- `on_widget_selected`: featured in [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Message Box!](#hello-message-box) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Contact Manager](#contact-manager) / [Login](#login) / [Tic Tac Toe](#tic-tac-toe)
|
1337
|
+
- `on_modify_text`
|
1338
|
+
- `on_key_pressed` (and SWT alias `on_swt_keydown`) - featured in [Login](#login) / [Contact Manager](#contact-manager)
|
1339
|
+
- `on_key_released` (and SWT alias `on_swt_keyup`)
|
1340
|
+
- `on_mouse_down` (and SWT alias `on_swt_mousedown`)
|
1341
|
+
- `on_mouse_up` (and SWT alias `on_swt_mouseup`) - featured in [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager)
|
1342
|
+
|
1343
|
+
**Event loop:**
|
1344
|
+
- `display`: featured in [Tic Tac Toe](#tic-tac-toe)
|
1345
|
+
- `async_exec`: featured in [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell)
|
1346
|
+
|
1347
|
+
|
1279
1348
|
#### SWT Proxies
|
1280
1349
|
|
1281
1350
|
Glimmer follows Proxy Design Pattern by having Ruby proxy wrappers for all SWT objects:
|
@@ -1360,9 +1429,11 @@ Dialog is a variation on Shell. It is basically a shell that is modal (blocks wh
|
|
1360
1429
|
|
1361
1430
|
Glimmer facilitates building dialogs by using the `dialog` keyword, which automatically adds the SWT.DIALOG_TRIM and SWT.APPLICATION_MODAL [widget styles](#widget-styles) needed for a dialog.
|
1362
1431
|
|
1432
|
+
Check out [Hello, Dialog!](#hello-dialog) sample to learn more.
|
1433
|
+
|
1363
1434
|
##### message_box
|
1364
1435
|
|
1365
|
-
The Glimmer DSL `message_box` keyword is similar to `shell`, but renders a modal dialog with a title `text` property
|
1436
|
+
The Glimmer DSL `message_box` keyword is similar to `shell` and `dialog`, but renders a modal dialog with a title `text` property, main body `message` property, and dismissal button(s) only (OK button by default or [more options](https://www.eclipse.org/swt/javadoc.php)). It may also be opened via the `#open` method.
|
1366
1437
|
|
1367
1438
|
Example (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
|
1368
1439
|
|
@@ -1476,47 +1547,54 @@ The ampersand symbol indicates the keyboard shortcut key for the menu item (e.g.
|
|
1476
1547
|
Example of a Menu Bar (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
|
1477
1548
|
|
1478
1549
|
```ruby
|
1479
|
-
|
1550
|
+
include Glimmer
|
1551
|
+
|
1552
|
+
COLORS = [:white, :red, :yellow, :green, :blue, :magenta, :gray, :black]
|
1553
|
+
|
1554
|
+
shell {
|
1555
|
+
grid_layout {
|
1556
|
+
margin_width 0
|
1557
|
+
margin_height 0
|
1558
|
+
}
|
1559
|
+
|
1480
1560
|
text 'Hello, Menu Bar!'
|
1481
|
-
|
1482
|
-
label(:center) {
|
1483
|
-
font height:
|
1484
|
-
text 'Check Out The
|
1561
|
+
|
1562
|
+
@label = label(:center) {
|
1563
|
+
font height: 50
|
1564
|
+
text 'Check Out The Menu Bar Above!'
|
1485
1565
|
}
|
1566
|
+
|
1486
1567
|
menu_bar {
|
1487
1568
|
menu {
|
1488
1569
|
text '&File'
|
1489
1570
|
menu_item {
|
1490
|
-
text 'E&xit'
|
1491
|
-
}
|
1492
|
-
menu_item(0) {
|
1493
1571
|
text '&New'
|
1572
|
+
accelerator :command, :N
|
1573
|
+
|
1494
1574
|
on_widget_selected {
|
1495
|
-
message_box
|
1496
|
-
text 'New
|
1497
|
-
message 'New
|
1575
|
+
message_box {
|
1576
|
+
text 'New'
|
1577
|
+
message 'New file created.'
|
1498
1578
|
}.open
|
1499
1579
|
}
|
1500
1580
|
}
|
1501
|
-
|
1502
|
-
text '&
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1581
|
+
menu_item {
|
1582
|
+
text '&Open...'
|
1583
|
+
accelerator :command, :O
|
1584
|
+
|
1585
|
+
on_widget_selected {
|
1586
|
+
message_box {
|
1587
|
+
text 'Open'
|
1588
|
+
message 'Opening File...'
|
1589
|
+
}.open
|
1509
1590
|
}
|
1510
1591
|
}
|
1511
|
-
}
|
1512
|
-
menu {
|
1513
|
-
text '&History'
|
1514
1592
|
menu {
|
1515
|
-
text '&Recent'
|
1593
|
+
text 'Open &Recent'
|
1516
1594
|
menu_item {
|
1517
1595
|
text 'File 1'
|
1518
1596
|
on_widget_selected {
|
1519
|
-
message_box
|
1597
|
+
message_box {
|
1520
1598
|
text 'File 1'
|
1521
1599
|
message 'File 1 Contents'
|
1522
1600
|
}.open
|
@@ -1525,13 +1603,167 @@ shell { |shell_proxy|
|
|
1525
1603
|
menu_item {
|
1526
1604
|
text 'File 2'
|
1527
1605
|
on_widget_selected {
|
1528
|
-
message_box
|
1606
|
+
message_box {
|
1529
1607
|
text 'File 2'
|
1530
1608
|
message 'File 2 Contents'
|
1531
1609
|
}.open
|
1532
1610
|
}
|
1533
1611
|
}
|
1534
1612
|
}
|
1613
|
+
menu_item(:separator)
|
1614
|
+
menu_item {
|
1615
|
+
text 'E&xit'
|
1616
|
+
|
1617
|
+
on_widget_selected {
|
1618
|
+
exit(0)
|
1619
|
+
}
|
1620
|
+
}
|
1621
|
+
}
|
1622
|
+
menu {
|
1623
|
+
text '&Edit'
|
1624
|
+
menu_item {
|
1625
|
+
text 'Cut'
|
1626
|
+
accelerator :command, :X
|
1627
|
+
}
|
1628
|
+
menu_item {
|
1629
|
+
text 'Copy'
|
1630
|
+
accelerator :command, :C
|
1631
|
+
}
|
1632
|
+
menu_item {
|
1633
|
+
text 'Paste'
|
1634
|
+
accelerator :command, :V
|
1635
|
+
}
|
1636
|
+
}
|
1637
|
+
menu {
|
1638
|
+
text '&Options'
|
1639
|
+
|
1640
|
+
menu_item(:radio) {
|
1641
|
+
text '&Enabled'
|
1642
|
+
|
1643
|
+
on_widget_selected {
|
1644
|
+
@select_one_menu.enabled = true
|
1645
|
+
@select_multiple_menu.enabled = true
|
1646
|
+
}
|
1647
|
+
}
|
1648
|
+
@select_one_menu = menu {
|
1649
|
+
text '&Select One'
|
1650
|
+
enabled false
|
1651
|
+
|
1652
|
+
menu_item(:radio) {
|
1653
|
+
text 'Option 1'
|
1654
|
+
}
|
1655
|
+
menu_item(:radio) {
|
1656
|
+
text 'Option 2'
|
1657
|
+
}
|
1658
|
+
menu_item(:radio) {
|
1659
|
+
text 'Option 3'
|
1660
|
+
}
|
1661
|
+
}
|
1662
|
+
@select_multiple_menu = menu {
|
1663
|
+
text '&Select Multiple'
|
1664
|
+
enabled false
|
1665
|
+
|
1666
|
+
menu_item(:check) {
|
1667
|
+
text 'Option 4'
|
1668
|
+
}
|
1669
|
+
menu_item(:check) {
|
1670
|
+
text 'Option 5'
|
1671
|
+
}
|
1672
|
+
menu_item(:check) {
|
1673
|
+
text 'Option 6'
|
1674
|
+
}
|
1675
|
+
}
|
1676
|
+
}
|
1677
|
+
menu {
|
1678
|
+
text '&Format'
|
1679
|
+
menu {
|
1680
|
+
text '&Background Color'
|
1681
|
+
COLORS.each { |color_style|
|
1682
|
+
menu_item(:radio) {
|
1683
|
+
text color_style.to_s.split('_').map(&:capitalize).join(' ')
|
1684
|
+
|
1685
|
+
on_widget_selected {
|
1686
|
+
@label.background = color_style
|
1687
|
+
}
|
1688
|
+
}
|
1689
|
+
}
|
1690
|
+
}
|
1691
|
+
menu {
|
1692
|
+
text 'Foreground &Color'
|
1693
|
+
COLORS.each { |color_style|
|
1694
|
+
menu_item(:radio) {
|
1695
|
+
text color_style.to_s.split('_').map(&:capitalize).join(' ')
|
1696
|
+
|
1697
|
+
on_widget_selected {
|
1698
|
+
@label.foreground = color_style
|
1699
|
+
}
|
1700
|
+
}
|
1701
|
+
}
|
1702
|
+
}
|
1703
|
+
}
|
1704
|
+
menu {
|
1705
|
+
text '&View'
|
1706
|
+
menu_item(:radio) {
|
1707
|
+
text 'Small'
|
1708
|
+
|
1709
|
+
on_widget_selected {
|
1710
|
+
@label.font = {height: 25}
|
1711
|
+
@label.parent.pack
|
1712
|
+
}
|
1713
|
+
}
|
1714
|
+
menu_item(:radio) {
|
1715
|
+
text 'Medium'
|
1716
|
+
selection true
|
1717
|
+
|
1718
|
+
on_widget_selected {
|
1719
|
+
@label.font = {height: 50}
|
1720
|
+
@label.parent.pack
|
1721
|
+
}
|
1722
|
+
}
|
1723
|
+
menu_item(:radio) {
|
1724
|
+
text 'Large'
|
1725
|
+
|
1726
|
+
on_widget_selected {
|
1727
|
+
@label.font = {height: 75}
|
1728
|
+
@label.parent.pack
|
1729
|
+
}
|
1730
|
+
}
|
1731
|
+
}
|
1732
|
+
menu {
|
1733
|
+
text '&Help'
|
1734
|
+
menu_item {
|
1735
|
+
text '&Manual'
|
1736
|
+
accelerator :command, :shift, :M
|
1737
|
+
|
1738
|
+
on_widget_selected {
|
1739
|
+
message_box {
|
1740
|
+
text 'Manual'
|
1741
|
+
message 'Manual Contents'
|
1742
|
+
}.open
|
1743
|
+
}
|
1744
|
+
}
|
1745
|
+
menu_item {
|
1746
|
+
text '&Tutorial'
|
1747
|
+
accelerator :command, :shift, :T
|
1748
|
+
|
1749
|
+
on_widget_selected {
|
1750
|
+
message_box {
|
1751
|
+
text 'Tutorial'
|
1752
|
+
message 'Tutorial Contents'
|
1753
|
+
}.open
|
1754
|
+
}
|
1755
|
+
}
|
1756
|
+
menu_item(:separator)
|
1757
|
+
menu_item {
|
1758
|
+
text '&Report an Issue...'
|
1759
|
+
|
1760
|
+
on_widget_selected {
|
1761
|
+
message_box {
|
1762
|
+
text 'Report an Issue'
|
1763
|
+
message 'Reporting an issue...'
|
1764
|
+
}.open
|
1765
|
+
}
|
1766
|
+
}
|
1535
1767
|
}
|
1536
1768
|
}
|
1537
1769
|
}.open
|
@@ -1540,12 +1772,20 @@ shell { |shell_proxy|
|
|
1540
1772
|
Example of a Pop Up Context Menu (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
|
1541
1773
|
|
1542
1774
|
```ruby
|
1543
|
-
|
1775
|
+
include Glimmer
|
1776
|
+
|
1777
|
+
shell {
|
1778
|
+
grid_layout {
|
1779
|
+
margin_width 0
|
1780
|
+
margin_height 0
|
1781
|
+
}
|
1782
|
+
|
1544
1783
|
text 'Hello, Pop Up Context Menu!'
|
1545
|
-
|
1784
|
+
|
1546
1785
|
label {
|
1547
|
-
|
1548
|
-
|
1786
|
+
text "Right-Click on the Text to\nPop Up a Context Menu"
|
1787
|
+
font height: 50
|
1788
|
+
|
1549
1789
|
menu {
|
1550
1790
|
menu {
|
1551
1791
|
text '&History'
|
@@ -1554,7 +1794,7 @@ shell { |shell_proxy|
|
|
1554
1794
|
menu_item {
|
1555
1795
|
text 'File 1'
|
1556
1796
|
on_widget_selected {
|
1557
|
-
message_box
|
1797
|
+
message_box {
|
1558
1798
|
text 'File 1'
|
1559
1799
|
message 'File 1 Contents'
|
1560
1800
|
}.open
|
@@ -1563,13 +1803,34 @@ shell { |shell_proxy|
|
|
1563
1803
|
menu_item {
|
1564
1804
|
text 'File 2'
|
1565
1805
|
on_widget_selected {
|
1566
|
-
message_box
|
1806
|
+
message_box {
|
1567
1807
|
text 'File 2'
|
1568
1808
|
message 'File 2 Contents'
|
1569
1809
|
}.open
|
1570
1810
|
}
|
1571
1811
|
}
|
1572
1812
|
}
|
1813
|
+
menu {
|
1814
|
+
text '&Archived'
|
1815
|
+
menu_item {
|
1816
|
+
text 'File 3'
|
1817
|
+
on_widget_selected {
|
1818
|
+
message_box {
|
1819
|
+
text 'File 3'
|
1820
|
+
message 'File 3 Contents'
|
1821
|
+
}.open
|
1822
|
+
}
|
1823
|
+
}
|
1824
|
+
menu_item {
|
1825
|
+
text 'File 4'
|
1826
|
+
on_widget_selected {
|
1827
|
+
message_box {
|
1828
|
+
text 'File 4'
|
1829
|
+
message 'File 4 Contents'
|
1830
|
+
}.open
|
1831
|
+
}
|
1832
|
+
}
|
1833
|
+
}
|
1573
1834
|
}
|
1574
1835
|
}
|
1575
1836
|
}
|
@@ -2373,7 +2634,7 @@ shell {
|
|
2373
2634
|
|
2374
2635
|
Check out [Hello, Table!](#hello-table) for an actual example including table editors.
|
2375
2636
|
|
2376
|
-
[Are We There Yet?](#are-we-there-yet) is an actual production Glimmer application that takes full advantage of table capabilities.
|
2637
|
+
[Are We There Yet?](#are-we-there-yet) is an actual production Glimmer application that takes full advantage of table capabilities, storing model data in a database via ActiveRecord. As such, it's an excellent demonstration of how to use Glimmer DSL for SWT with a database.
|
2377
2638
|
|
2378
2639
|
##### Table Sorting
|
2379
2640
|
|
@@ -3285,15 +3546,14 @@ Glimmer Meta-Sample Code Example:
|
|
3285
3546
|
|
3286
3547
|
```ruby
|
3287
3548
|
# ...
|
3288
|
-
code_text {
|
3289
|
-
text bind(SampleDirectory, 'selected_sample.
|
3290
|
-
editable
|
3291
|
-
caret nil
|
3549
|
+
@code_text = code_text {
|
3550
|
+
text bind(SampleDirectory, 'selected_sample.code', read_only: true)
|
3551
|
+
editable bind(SampleDirectory, 'selected_sample.editable')
|
3292
3552
|
}
|
3293
3553
|
# ...
|
3294
3554
|
```
|
3295
3555
|
|
3296
|
-
To use, simply use `code_text` in place of `text` or `styled_text` widget. If you set its `text` value to Ruby code, it automatically styles it with syntax highlighting.
|
3556
|
+
To use, simply use `code_text` in place of the `text` or `styled_text` widget. If you set its `text` value to Ruby code, it automatically styles it with syntax highlighting.
|
3297
3557
|
|
3298
3558
|
#### Video Widget
|
3299
3559
|
|
@@ -3624,7 +3884,7 @@ https://www.eclipse.org/nebula/
|
|
3624
3884
|
|
3625
3885
|
## Samples
|
3626
3886
|
|
3627
|
-
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` gem first and then use the `glimmer` command to run it (alternatively, you may clone the repo, follow [CONTRIBUTING.md](CONTRIBUTING.md) instructions, and run samples locally with development glimmer command: `bin/glimmer`).
|
3887
|
+
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` gem first and then use the `glimmer samples` command to run it (alternatively, you may clone the repo, follow [CONTRIBUTING.md](CONTRIBUTING.md) instructions, and run samples locally with development glimmer command: `bin/glimmer`).
|
3628
3888
|
|
3629
3889
|
You may run any sample via this command:
|
3630
3890
|
|
@@ -3636,6 +3896,8 @@ This brings up the [Glimmer Meta-Sample (The Sample of Samples)](samples/elabora
|
|
3636
3896
|
|
3637
3897
|
![Glimmer Meta-Sample](images/glimmer-meta-sample.png)
|
3638
3898
|
|
3899
|
+
You may edit the code of any sample before launching it by clicking on the "Launch" button. This helps you learn by experimenting with Glimmer GUI DSL syntax. To go back to original code, simply hit the "Reset" button.
|
3900
|
+
|
3639
3901
|
### Hello Samples
|
3640
3902
|
|
3641
3903
|
For hello-type simple samples, check the following.
|
@@ -3644,7 +3906,7 @@ For hello-type simple samples, check the following.
|
|
3644
3906
|
|
3645
3907
|
Code:
|
3646
3908
|
|
3647
|
-
[samples/hello/hello_world.rb](
|
3909
|
+
[samples/hello/hello_world.rb](samples/hello/hello_world.rb)
|
3648
3910
|
|
3649
3911
|
![Hello World](images/glimmer-hello-world.png)
|
3650
3912
|
|
@@ -3652,7 +3914,7 @@ Code:
|
|
3652
3914
|
|
3653
3915
|
Code:
|
3654
3916
|
|
3655
|
-
[samples/hello/hello_tab.rb](
|
3917
|
+
[samples/hello/hello_tab.rb](samples/hello/hello_tab.rb)
|
3656
3918
|
|
3657
3919
|
![Hello Tab English](images/glimmer-hello-tab-english.png)
|
3658
3920
|
![Hello Tab French](images/glimmer-hello-tab-french.png)
|
@@ -3663,7 +3925,7 @@ This sample demonstrates combo data-binding.
|
|
3663
3925
|
|
3664
3926
|
Code:
|
3665
3927
|
|
3666
|
-
[samples/hello/hello_combo.rb](
|
3928
|
+
[samples/hello/hello_combo.rb](samples/hello/hello_combo.rb)
|
3667
3929
|
|
3668
3930
|
![Hello Combo](images/glimmer-hello-combo.png)
|
3669
3931
|
![Hello Combo Expanded](images/glimmer-hello-combo-expanded.png)
|
@@ -3674,7 +3936,7 @@ This sample demonstrates list single-selection data-binding.
|
|
3674
3936
|
|
3675
3937
|
Code:
|
3676
3938
|
|
3677
|
-
[samples/hello/hello_list_single_selection.rb](
|
3939
|
+
[samples/hello/hello_list_single_selection.rb](samples/hello/hello_list_single_selection.rb)
|
3678
3940
|
|
3679
3941
|
![Hello List Single Selection](images/glimmer-hello-list-single-selection.png)
|
3680
3942
|
|
@@ -3684,7 +3946,7 @@ This sample demonstrates list multi-selection data-binding.
|
|
3684
3946
|
|
3685
3947
|
Code:
|
3686
3948
|
|
3687
|
-
[samples/hello/hello_list_multi_selection.rb](
|
3949
|
+
[samples/hello/hello_list_multi_selection.rb](samples/hello/hello_list_multi_selection.rb)
|
3688
3950
|
|
3689
3951
|
![Hello List Multi Selection](images/glimmer-hello-list-multi-selection.png)
|
3690
3952
|
|
@@ -3694,7 +3956,7 @@ This sample demonstrates computed data-binding.
|
|
3694
3956
|
|
3695
3957
|
Code:
|
3696
3958
|
|
3697
|
-
[samples/hello/hello_computed.rb](
|
3959
|
+
[samples/hello/hello_computed.rb](samples/hello/hello_computed.rb)
|
3698
3960
|
|
3699
3961
|
![Hello Browser](images/glimmer-hello-computed.png)
|
3700
3962
|
|
@@ -3704,7 +3966,7 @@ This sample demonstrates a `message_box` dialog.
|
|
3704
3966
|
|
3705
3967
|
Code:
|
3706
3968
|
|
3707
|
-
[samples/hello/hello_message_box.rb](
|
3969
|
+
[samples/hello/hello_message_box.rb](samples/hello/hello_message_box.rb)
|
3708
3970
|
|
3709
3971
|
![Hello Message Box](images/glimmer-hello-message-box.png)
|
3710
3972
|
![Hello Message Box Dialog](images/glimmer-hello-message-box-dialog.png)
|
@@ -3715,7 +3977,7 @@ This sample demonstrates the `browser` widget.
|
|
3715
3977
|
|
3716
3978
|
Code:
|
3717
3979
|
|
3718
|
-
[samples/hello/hello_browser.rb](
|
3980
|
+
[samples/hello/hello_browser.rb](samples/hello/hello_browser.rb)
|
3719
3981
|
|
3720
3982
|
![Hello Browser](images/glimmer-hello-browser.png)
|
3721
3983
|
|
@@ -3725,21 +3987,53 @@ This sample demonstrates drag and drop in Glimmer.
|
|
3725
3987
|
|
3726
3988
|
Code:
|
3727
3989
|
|
3728
|
-
[samples/hello/hello_drag_and_drop.rb](
|
3990
|
+
[samples/hello/hello_drag_and_drop.rb](samples/hello/hello_drag_and_drop.rb)
|
3729
3991
|
|
3730
3992
|
![Hello Drag and Drop](images/glimmer-hello-drag-and-drop.gif)
|
3731
3993
|
|
3732
3994
|
#### Hello, Menu Bar!
|
3733
3995
|
|
3734
|
-
This sample demonstrates menus in Glimmer.
|
3996
|
+
This sample demonstrates menus in Glimmer, including accelerators on the Mac.
|
3735
3997
|
|
3736
3998
|
Code:
|
3737
3999
|
|
3738
|
-
[samples/hello/hello_menu_bar.rb](
|
4000
|
+
[samples/hello/hello_menu_bar.rb](samples/hello/hello_menu_bar.rb)
|
3739
4001
|
|
3740
4002
|
![Hello Menu Bar](images/glimmer-hello-menu-bar.png)
|
4003
|
+
|
3741
4004
|
![Hello Menu Bar File Menu](images/glimmer-hello-menu-bar-file-menu.png)
|
3742
|
-
|
4005
|
+
|
4006
|
+
The Mac Menu includes Accelerator Keys (keyboard shortcuts).
|
4007
|
+
|
4008
|
+
![Hello Menu Bar File Menu Mac Accelerators](images/glimmer-hello-menu-bar-file-menu-mac-accelerators.png)
|
4009
|
+
|
4010
|
+
![Hello Menu Bar Edit Menu](images/glimmer-hello-menu-bar-edit-menu.png)
|
4011
|
+
|
4012
|
+
The Mac Menu includes Accelerator Keys (keyboard shortcuts).
|
4013
|
+
|
4014
|
+
![Hello Menu Bar Edit Menu Mac Accelerators](images/glimmer-hello-menu-bar-edit-menu-mac-accelerators.png)
|
4015
|
+
|
4016
|
+
![Hello Menu Bar Options Menu Disabled](images/glimmer-hello-menu-bar-options-menu-disabled.png)
|
4017
|
+
|
4018
|
+
![Hello Menu Bar Options Menu Select One](images/glimmer-hello-menu-bar-options-menu-select-one.png)
|
4019
|
+
|
4020
|
+
![Hello Menu Bar Options Menu Select Multiple](images/glimmer-hello-menu-bar-options-menu-select-multiple.png)
|
4021
|
+
|
4022
|
+
![Hello Menu Bar Format Menu Background Color](images/glimmer-hello-menu-bar-format-menu-background-color.png)
|
4023
|
+
|
4024
|
+
![Hello Menu Bar Format Menu Foreground Color](images/glimmer-hello-menu-bar-format-menu-foreground-color.png)
|
4025
|
+
|
4026
|
+
![Hello Menu Bar View Menu](images/glimmer-hello-menu-bar-view-menu.png)
|
4027
|
+
|
4028
|
+
![Hello Menu Bar View Small](images/glimmer-hello-menu-bar-view-small.png)
|
4029
|
+
|
4030
|
+
![Hello Menu Bar View Large](images/glimmer-hello-menu-bar-view-large.png)
|
4031
|
+
|
4032
|
+
![Hello Menu Bar Help Menu](images/glimmer-hello-menu-bar-help-menu.png)
|
4033
|
+
|
4034
|
+
The Mac Menu includes Accelerator Keys (keyboard shortcuts) and Mac built-in Search.
|
4035
|
+
|
4036
|
+
![Hello Menu Bar Help Menu Mac Accelerators](images/glimmer-hello-menu-bar-help-menu-mac-accelerators.png)
|
3743
4037
|
|
3744
4038
|
#### Hello, Pop Up Context Menu!
|
3745
4039
|
|
@@ -3747,7 +4041,7 @@ This sample demonstrates pop up context menus in Glimmer.
|
|
3747
4041
|
|
3748
4042
|
Code:
|
3749
4043
|
|
3750
|
-
[samples/hello/hello_pop_up_context_menu.rb](
|
4044
|
+
[samples/hello/hello_pop_up_context_menu.rb](samples/hello/hello_pop_up_context_menu.rb)
|
3751
4045
|
|
3752
4046
|
![Hello Pop Up Context Menu](images/glimmer-hello-pop-up-context-menu.png)
|
3753
4047
|
![Hello Pop Up Context Menu Popped Up](images/glimmer-hello-pop-up-context-menu-popped-up.png)
|
@@ -3758,7 +4052,7 @@ This sample demonstrates the use of a custom widget in Glimmer.
|
|
3758
4052
|
|
3759
4053
|
Code:
|
3760
4054
|
|
3761
|
-
[samples/hello/hello_custom_widget.rb](
|
4055
|
+
[samples/hello/hello_custom_widget.rb](samples/hello/hello_custom_widget.rb)
|
3762
4056
|
|
3763
4057
|
![Hello Custom Widget](images/glimmer-hello-custom-widget.gif)
|
3764
4058
|
|
@@ -3768,7 +4062,7 @@ This sample demonstrates the use of a custom shell (aka custom window) in Glimme
|
|
3768
4062
|
|
3769
4063
|
Code:
|
3770
4064
|
|
3771
|
-
[samples/hello/hello_custom_shell.rb](
|
4065
|
+
[samples/hello/hello_custom_shell.rb](samples/hello/hello_custom_shell.rb)
|
3772
4066
|
|
3773
4067
|
![Hello Custom Shell](images/glimmer-hello-custom-shell.png)
|
3774
4068
|
![Hello Custom Shell Email1](images/glimmer-hello-custom-shell-email1.png)
|
@@ -3781,7 +4075,7 @@ This sample demonstrates the use of a `sash_form` in Glimmer.
|
|
3781
4075
|
|
3782
4076
|
Code:
|
3783
4077
|
|
3784
|
-
[samples/hello/hello_sash_form.rb](
|
4078
|
+
[samples/hello/hello_sash_form.rb](samples/hello/hello_sash_form.rb)
|
3785
4079
|
|
3786
4080
|
Hello, Sash Form! Horizontal Orientation
|
3787
4081
|
|
@@ -3813,7 +4107,7 @@ This sample demonstrates the use of a `styled_text` in Glimmer.
|
|
3813
4107
|
|
3814
4108
|
Code:
|
3815
4109
|
|
3816
|
-
[samples/hello/hello_styled_text.rb](
|
4110
|
+
[samples/hello/hello_styled_text.rb](samples/hello/hello_styled_text.rb)
|
3817
4111
|
|
3818
4112
|
Hello, Styled Text!
|
3819
4113
|
|
@@ -3825,7 +4119,7 @@ This sample demonstrates the use of a `expand_bar` and `expand_item` in Glimmer.
|
|
3825
4119
|
|
3826
4120
|
Code:
|
3827
4121
|
|
3828
|
-
[samples/hello/hello_expand_bar.rb](
|
4122
|
+
[samples/hello/hello_expand_bar.rb](samples/hello/hello_expand_bar.rb)
|
3829
4123
|
|
3830
4124
|
Hello, Expand Bar! All Expanded
|
3831
4125
|
|
@@ -3849,7 +4143,7 @@ This sample demonstrates the use of a `radio` (aka `button(:radio)`) in Glimmer.
|
|
3849
4143
|
|
3850
4144
|
Code:
|
3851
4145
|
|
3852
|
-
[samples/hello/hello_radio.rb](
|
4146
|
+
[samples/hello/hello_radio.rb](samples/hello/hello_radio.rb)
|
3853
4147
|
|
3854
4148
|
Hello, Radio!
|
3855
4149
|
|
@@ -3861,7 +4155,7 @@ This sample demonstrates the use of a `radio_group` in Glimmer, which provides t
|
|
3861
4155
|
|
3862
4156
|
Code:
|
3863
4157
|
|
3864
|
-
[samples/hello/hello_radio_group.rb](
|
4158
|
+
[samples/hello/hello_radio_group.rb](samples/hello/hello_radio_group.rb)
|
3865
4159
|
|
3866
4160
|
Hello, Radio Group!
|
3867
4161
|
|
@@ -3873,7 +4167,7 @@ This sample demonstrates the use of a `group` in Glimmer (not to be confused wit
|
|
3873
4167
|
|
3874
4168
|
Code:
|
3875
4169
|
|
3876
|
-
[samples/hello/hello_group.rb](
|
4170
|
+
[samples/hello/hello_group.rb](samples/hello/hello_group.rb)
|
3877
4171
|
|
3878
4172
|
Hello, Group!
|
3879
4173
|
|
@@ -3885,7 +4179,7 @@ This sample demonstrates the use of a `checkbox` (aka `check` or `button(:check)
|
|
3885
4179
|
|
3886
4180
|
Code:
|
3887
4181
|
|
3888
|
-
[samples/hello/hello_checkbox.rb](
|
4182
|
+
[samples/hello/hello_checkbox.rb](samples/hello/hello_checkbox.rb)
|
3889
4183
|
|
3890
4184
|
Hello, Checkbox!
|
3891
4185
|
|
@@ -3897,7 +4191,7 @@ This sample demonstrates the use of a `checkbox_group` (aka `check_group`) in Gl
|
|
3897
4191
|
|
3898
4192
|
Code:
|
3899
4193
|
|
3900
|
-
[samples/hello/hello_checkbox_group.rb](
|
4194
|
+
[samples/hello/hello_checkbox_group.rb](samples/hello/hello_checkbox_group.rb)
|
3901
4195
|
|
3902
4196
|
Hello, Checkbox Group!
|
3903
4197
|
|
@@ -3909,7 +4203,7 @@ This sample demonstrates the use of a `directory_dialog` in Glimmer.
|
|
3909
4203
|
|
3910
4204
|
Code:
|
3911
4205
|
|
3912
|
-
[samples/hello/hello_directory_dialog.rb](
|
4206
|
+
[samples/hello/hello_directory_dialog.rb](samples/hello/hello_directory_dialog.rb)
|
3913
4207
|
|
3914
4208
|
Hello, Directory Dialog!
|
3915
4209
|
|
@@ -3929,7 +4223,7 @@ This sample demonstrates the use of a `file_dialog` in Glimmer.
|
|
3929
4223
|
|
3930
4224
|
Code:
|
3931
4225
|
|
3932
|
-
[samples/hello/hello_file_dialog.rb](
|
4226
|
+
[samples/hello/hello_file_dialog.rb](samples/hello/hello_file_dialog.rb)
|
3933
4227
|
|
3934
4228
|
Hello, File Dialog!
|
3935
4229
|
|
@@ -3949,7 +4243,7 @@ This sample demonstrates the use of [date_time](#datetime) widget keywords in Gl
|
|
3949
4243
|
|
3950
4244
|
Code:
|
3951
4245
|
|
3952
|
-
[samples/hello/hello_date_time.rb](
|
4246
|
+
[samples/hello/hello_date_time.rb](samples/hello/hello_date_time.rb)
|
3953
4247
|
|
3954
4248
|
Hello, Date Time!
|
3955
4249
|
|
@@ -3961,7 +4255,7 @@ This sample demonstrates the use of `spinner` widget in Glimmer
|
|
3961
4255
|
|
3962
4256
|
Code:
|
3963
4257
|
|
3964
|
-
[samples/hello/hello_spinner.rb](
|
4258
|
+
[samples/hello/hello_spinner.rb](samples/hello/hello_spinner.rb)
|
3965
4259
|
|
3966
4260
|
Hello, Spinner!
|
3967
4261
|
|
@@ -3973,7 +4267,7 @@ This sample demonstrates the use of [table](#table) widget in Glimmer, including
|
|
3973
4267
|
|
3974
4268
|
Code:
|
3975
4269
|
|
3976
|
-
[samples/hello/hello_table.rb](
|
4270
|
+
[samples/hello/hello_table.rb](samples/hello/hello_table.rb)
|
3977
4271
|
|
3978
4272
|
Hello, Table!
|
3979
4273
|
|
@@ -4017,11 +4311,11 @@ Hello, Table! Context Menu
|
|
4017
4311
|
|
4018
4312
|
#### Hello, Button!
|
4019
4313
|
|
4020
|
-
This sample demonstrates the use of `button` widget in Glimmer, including data-binding and click event triggering via `on_widget_selected`.
|
4314
|
+
This sample demonstrates the use of the `button` widget in Glimmer, including data-binding and click event triggering via `on_widget_selected`.
|
4021
4315
|
|
4022
4316
|
Code:
|
4023
4317
|
|
4024
|
-
[samples/hello/hello_button.rb](
|
4318
|
+
[samples/hello/hello_button.rb](samples/hello/hello_button.rb)
|
4025
4319
|
|
4026
4320
|
Hello, Button!
|
4027
4321
|
|
@@ -4031,6 +4325,38 @@ Hello, Button! Incremented 7 times!
|
|
4031
4325
|
|
4032
4326
|
![Hello Button Incremented](images/glimmer-hello-button-incremented.png)
|
4033
4327
|
|
4328
|
+
#### Hello, Link!
|
4329
|
+
|
4330
|
+
This sample demonstrates the use of the `link` widget in Glimmer, including identifying which link was clicked and performing an action (displaying help) based on its location.
|
4331
|
+
|
4332
|
+
Code:
|
4333
|
+
|
4334
|
+
[samples/hello/hello_link.rb](samples/hello/hello_link.rb)
|
4335
|
+
|
4336
|
+
Hello, Link!
|
4337
|
+
|
4338
|
+
![Hello Link](images/glimmer-hello-link.png)
|
4339
|
+
|
4340
|
+
Hello, Link! Clicked
|
4341
|
+
|
4342
|
+
![Hello Link Clicked](images/glimmer-hello-link-clicked.png)
|
4343
|
+
|
4344
|
+
#### Hello, Dialog!
|
4345
|
+
|
4346
|
+
This sample demonstrates the use of the `dialog` widget in Glimmer, which provides a modal `shell` that blocks shells beneath it until closed. And unlike `message_box`, it can contain arbitrary widgets (not just a message).
|
4347
|
+
|
4348
|
+
Code:
|
4349
|
+
|
4350
|
+
[samples/hello/hello_dialog.rb](samples/hello/hello_dialog.rb)
|
4351
|
+
|
4352
|
+
Hello, Dialog!
|
4353
|
+
|
4354
|
+
![Hello Dialog](images/glimmer-hello-dialog.png)
|
4355
|
+
|
4356
|
+
Hello, Dialog! Open Dialog
|
4357
|
+
|
4358
|
+
![Hello Dialog Open Dialog](images/glimmer-hello-dialog-open-dialog.png)
|
4359
|
+
|
4034
4360
|
### Elaborate Samples
|
4035
4361
|
|
4036
4362
|
For more elaborate samples, check the following:
|
@@ -4043,7 +4369,7 @@ Please note that the code has changed since that article was written (the GUI DS
|
|
4043
4369
|
|
4044
4370
|
Code:
|
4045
4371
|
|
4046
|
-
[samples/elaborate/user_profile.rb](
|
4372
|
+
[samples/elaborate/user_profile.rb](samples/elaborate/user_profile.rb)
|
4047
4373
|
|
4048
4374
|
![User Profile](images/glimmer-user-profile.png)
|
4049
4375
|
|
@@ -4053,7 +4379,7 @@ This sample demonstrates basic data-binding, password and text fields, and field
|
|
4053
4379
|
|
4054
4380
|
Code:
|
4055
4381
|
|
4056
|
-
[samples/elaborate/login.rb](
|
4382
|
+
[samples/elaborate/login.rb](samples/elaborate/login.rb)
|
4057
4383
|
|
4058
4384
|
![Login](images/glimmer-login.png)
|
4059
4385
|
![Login Filled In](images/glimmer-login-filled-in.png)
|
@@ -4067,7 +4393,7 @@ Code:
|
|
4067
4393
|
|
4068
4394
|
(Please note that on some Linux instances where the display x-axis is set to double-scale, you need to set the `shell` `minimum_size` to `300, 178` instead of `150, 178`)
|
4069
4395
|
|
4070
|
-
[samples/elaborate/tic_tac_toe.rb](
|
4396
|
+
[samples/elaborate/tic_tac_toe.rb](samples/elaborate/tic_tac_toe.rb)
|
4071
4397
|
|
4072
4398
|
![Tic Tac Toe](images/glimmer-tic-tac-toe.png)
|
4073
4399
|
![Tic Tac Toe In Progress](images/glimmer-tic-tac-toe-in-progress.png)
|
@@ -4079,7 +4405,7 @@ This sample demonstrates table data-binding, sorting, filtering, GUI layout, MVP
|
|
4079
4405
|
|
4080
4406
|
Code:
|
4081
4407
|
|
4082
|
-
[samples/elaborate/contact_manager.rb](
|
4408
|
+
[samples/elaborate/contact_manager.rb](samples/elaborate/contact_manager.rb)
|
4083
4409
|
|
4084
4410
|
Contact Manager
|
4085
4411
|
|
@@ -4350,7 +4676,7 @@ Here is a list of notable 3rd party gems used by Glimmer:
|
|
4350
4676
|
|
4351
4677
|
## Glimmer Process
|
4352
4678
|
|
4353
|
-
[Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) is the lightweight software development process used for building Glimmer libraries and Glimmer apps, which goes beyond Agile, rendering all Agile processes obsolete. [Glimmer Process](PROCESS.md) is simply made up of 7 guidelines to pick and choose as necessary until software development needs are satisfied.
|
4679
|
+
[Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) is the lightweight software development process used for building Glimmer libraries and Glimmer apps, which goes beyond Agile, rendering all Agile processes obsolete. [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) is simply made up of 7 guidelines to pick and choose as necessary until software development needs are satisfied.
|
4354
4680
|
|
4355
4681
|
Learn more by reading the [GPG](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) (Glimmer Process Guidelines)
|
4356
4682
|
|
@@ -4420,7 +4746,7 @@ If your company would like to invest fulltime in further development of the Glim
|
|
4420
4746
|
|
4421
4747
|
[MIT](LICENSE.txt)
|
4422
4748
|
|
4423
|
-
Copyright (c) 2007-
|
4749
|
+
Copyright (c) 2007-2021 - Andy Maleh.
|
4424
4750
|
|
4425
4751
|
--
|
4426
4752
|
|