glimmer-dsl-tk 0.0.38 → 0.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c6969620ced6ade48e45e36bd48909bfe282a412e2f57d8a201f398082c6836
4
- data.tar.gz: d8d4bc858b5fdf7399b10d71922a2e12aaf1cbf0b4c8c0db4bf78416e025a5d0
3
+ metadata.gz: fbb49ce9e435d0313cdec33a81afec3ad4d7716ee6e8363004651417d3535704
4
+ data.tar.gz: 9ad46f88ace884c5d670d2449728369af8510b95e24c291a3bda7580cef65820
5
5
  SHA512:
6
- metadata.gz: 35a7d92e7f5b9098a9dcd50a5045447237bd66b89dfdd9f5ea10d45201b050a66b7b272266f275645552980a043cda9b59b6b96f591521a7da326fce4ff60524
7
- data.tar.gz: c866f8e9a51d4dd291900ebb0c3b506f5a8d0975d1df779474ebf0997114d4384f5a9d2610e868a3196c1ba1b93cfeb98311d41f4e2b35b1582c64cee2b9dc71
6
+ metadata.gz: d58a0179466efe9991f53eefb23c6dd3749c386230d70722e0a6c3f24c85f2affc361e18c21d65b34b2cb37269dfb8c7ceff9953a1bc5059f1db971051b0c4c8
7
+ data.tar.gz: bad07c9519d483534306b04be7e4d110fe302c6dc3f03028d85aa5c85fcfe01437c0471d58b49e3db013abc99d6f55535d5aefacc4bdc651df50b30ecda467e0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.0.42
4
+
5
+ - Add vertical/horizontal scrollbars to Meta-Sample
6
+ - Keep only vertical scrollbar in Hello, Text!
7
+ - Fix issue with including bwidgets and iwidgets in Windows
8
+ - Fix Hello, Menu Bar! sample in Windows (by disabling Windows-special System menu, which does not seem to be working in Tk)
9
+
10
+ ## 0.0.41
11
+
12
+ - Support `scrollbar_frame` Glimmer custom widget as a frame that automatically provides scrollbars when its content's size exceeds its size
13
+ - Support `scrollbar_frame` `xscrollbar` and `yscrollbar` attributes (to enable/disable via boolean or set to a custom externally instantiated scrollbar if needed)
14
+ - Hello, Scrollbar Frame!
15
+
16
+ ## 0.0.40
17
+
18
+ - Hello, Scrollbar!
19
+ - Default to 'alt' Tk theme on Linux
20
+ - Added Windows/Linux accelerators to Hello, Menu Bar!
21
+ - Fix issue with extra junk character added to beginning of Hello, Checkbutton! by mistake
22
+ - Fix issue with Hello, Menu Bar! help menu item crashing in Linux (it is restricted to Mac only)
23
+ - Fix issue with Hello, Text! focus losing selection in Linux upon setting background/foreground/font/font-size
24
+
25
+ ## 0.0.39
26
+
27
+ - Add Language and Language Name menus to Hello, Menu Bar! sample
28
+ - Update Hello, Button! sample to indicate compound option value on image text buttons
29
+ - Support Mac `menu_item(:about, label: ) { on('command') {} }`
30
+ - Support Mac `menu_item(:preferences) { on('command') {} }`
31
+ - Support Mac `menu_item(:help) { on('command') {} }`
32
+ - Support Mac `menu_item(:quit) { on('command') {} }`
33
+ - Support Mac/X11 `'Help'` menu
34
+ - Support Mac `'Window'` menu
35
+ - Support Windows `'System'` menu
36
+
37
+
3
38
  ## 0.0.38
4
39
 
5
40
  - Hello, Menu Bar! sample
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 Tk 0.0.38
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 Tk 0.0.42
2
2
  ## MRI Ruby Desktop Development GUI Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-tk.svg)](http://badge.fury.io/rb/glimmer-dsl-tk)
4
4
  [![Ruby](https://github.com/AndyObtiva/glimmer-dsl-tk/actions/workflows/ruby.yml/badge.svg)](https://github.com/AndyObtiva/glimmer-dsl-tk/actions/workflows/ruby.yml)
@@ -121,6 +121,8 @@ Other [Glimmer](https://github.com/AndyObtiva/glimmer) DSL gems:
121
121
  - [Hello, Drag and Drop!](#hello-drag-and-drop)
122
122
  - [Hello, Built-in Dialog!](#hello-built-in-dialog)
123
123
  - [Hello, Separator!](#hello-separator)
124
+ - [Hello, Scrollbar!](#hello-scrollbar)
125
+ - [Hello, Scrollbar Frame!](#hello-scrollbar-frame)
124
126
  - [Hello, Menu Bar!](#hello-menu-bar)
125
127
  - [Applications](#applications)
126
128
  - [Glimmer Tk Calculator](#glimmer-tk-calculator)
@@ -156,6 +158,14 @@ For example, on Windows, you can follow the [instructions over here](https://tkd
156
158
  - Setup environment variables TCL_LIBRARY=C:\ActiveTcl\lib\tcl8.6 & TK_LIBRARY=C:\ActiveTcl\lib\tk8.6
157
159
  - Run: `gem install tk -v0.4.0`
158
160
 
161
+ For example, on Linux, you can:
162
+ - Download the ActiveTcl Linux package from [ActiveState.com](https://activestate.com)
163
+ - Extract the tar gz file using command `tar zxvf ActiveTcl-version-number.tar.gz`
164
+ - Run included install shell script `./ActiveTcl-version-number/install.sh`
165
+ - Install [RVM](https://rvm.io/) by running `\curl -sSL https://get.rvm.io | bash -s stable` (and run `curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -` if needed for mentioned security reasons)
166
+ - Run: `rvm install 3.0.2 --enable-shared --enable-pthread --with-tk --with-tcl`
167
+ - Run: `gem install tk -v0.4.0`
168
+
159
169
  Afterwards, if you open `irb`, you should be able to run `require 'tk'` successfully.
160
170
 
161
171
  ## Setup
@@ -171,7 +181,7 @@ gem install glimmer-dsl-tk
171
181
 
172
182
  Add the following to `Gemfile`:
173
183
  ```
174
- gem 'glimmer-dsl-tk', '~> 0.0.38'
184
+ gem 'glimmer-dsl-tk', '0.0.42'
175
185
  ```
176
186
 
177
187
  And, then run:
@@ -296,13 +306,17 @@ keyword(args) | attributes | event bindings & callbacks
296
306
  `list` | `selectmode`, `selection` | None
297
307
  `message_box(type: , message: , detail: , title: , icon: , default: , parent: )` | None | None
298
308
  `menu(label: nil) (label is nil if nested under root/toplevel for menu bar)` | None | None
299
- `menu_item(style = :command, label: , underline: )` (style also can be `:radiobutton`, `:checkbutton`, or `:separator`) | `state`, `accelerator`, `selection` & `variable` (if `:radiobutton` or `:checkbutton`) | `command`
309
+ `menu_item(style = :command, label: , underline: )` (style also can be `:radiobutton`, `:checkbutton`, `:separator`, `:about`, `:preferences`, `:quit`, `:help`) | `state`, `accelerator`, `selection` & `variable` (if `:radiobutton` or `:checkbutton`), `image`, `compound` | `command`
300
310
  `notebook` | None | None
301
311
  `radiobutton` | `text`, `variable` (Boolean), `image` (optional keyword args: `subsample`, `zoom`, `from`, `to`, `shrink`, `compositingrule`), `compound` (`'center', 'top', 'bottom', 'left', 'right'`), `value` (default: `text`) | `command {}`
302
312
  `root` | `title`, `iconphoto`, `background`, `alpha`, `escapable`, `fullscreen?`, `topmost?`, `transparent?`, `stackorder`, `winfo_screendepth`, `winfo_screenvisual`, `winfo_screenwidth`, `winfo_screenheight`, `winfo_pixels('li')`, `winfo_screen`, `wm_maxsize`, `state` (`'normal', 'iconic', 'withdrawn', 'icon', 'zoomed'`) | `'DELETE_WINDOW'`, `'OPEN_WINDOW'`
313
+ `scrollbar` | `orient` | `command`
314
+ `scrollbar_frame` | `xscrollbar` (Boolean or scrollbar widget proxy), `yscrollbar` (Boolean or scrollbar widget proxy) | None
303
315
  `separator` | `orient` (`'horizontal' (default) or 'vertical'`) | None
304
316
  `toplevel` | `title`, `iconphoto`, `background`, `alpha`, `escapable`, `fullscreen?`, `topmost?`, `transparent?`, `stackorder`, `winfo_screendepth`, `winfo_screenvisual`, `winfo_screenwidth`, `winfo_screenheight`, `winfo_pixels('li')`, `winfo_screen`, `wm_maxsize`, `state` (`'normal', 'iconic', 'withdrawn', 'icon', 'zoomed'`) | `'DELETE_WINDOW'`
305
317
  `text` | `value`, [many more attributes](https://tcl.tk/man/tcl8.6/TkCmd/text.htm#M116) | `'modified'`, `'selection'`, `'insert_mark_moved'` (alias: `'insert_mark_move', 'InsertMarkMove', 'InsertMarkMoved'`)
318
+ `x_scrollbar` | `orient` (`'horizontal'`) | `command`
319
+ `y_scrollbar` | `orient` (`'vertical'`) | `command`
306
320
 
307
321
  Options for `get_open_file` and `get_multiple_open_file` include:
308
322
  - `filetypes`: `Hash` of `'Group Name' => '.ext'` entries (e.g. `filetypes: {'PNG Images' => '.png'}`
@@ -422,8 +436,44 @@ Other useful built-in API methods:
422
436
  - `text_edit_undo`
423
437
  - `text_edit_redo`
424
438
 
439
+ If you would like to add scrollbars, you can set the `xscrollbar` and `yscrollbar` attributes.
440
+
441
+ Example of adding a vertical `scrollbar`:
442
+
443
+ ```ruby
444
+ textarea_yscrollbar = y_scrollbar {
445
+ grid row:0, column:1
446
+ }
447
+
448
+ textarea = text {
449
+ grid row:0, column:0, column_weight: 0
450
+ wrap "word"
451
+ yscrollbar textarea_yscrollbar
452
+ }
453
+ ```
454
+
455
+ Example of adding both a horizontal `scrollbar` and a vertical `scrollbar` (must disable `wrap "word"` for horizontal scrolling to work):
456
+
457
+ ```ruby
458
+ textarea_xscrollbar = x_scrollbar {
459
+ grid row:1, column:0, column_span: 2, row_weight: 0
460
+ }
461
+
462
+ textarea_yscrollbar = y_scrollbar {
463
+ grid row:0, column:1
464
+ }
465
+
466
+ textarea = text {
467
+ grid row:0, column:0, column_weight: 0
468
+ xscrollbar textarea_xscrollbar
469
+ yscrollbar textarea_yscrollbar
470
+ }
471
+ ```
472
+
425
473
  Check out the [Hello, Text!](#hello-text) sample for a good demonstration of the `text` widget features.
426
474
 
475
+ Check out the [Hello, Scrollbar!](#hello-scrollbar) sample for a `text` demo with scrolling.
476
+
427
477
  #### Drag and Drop API
428
478
 
429
479
  Drag and drop works by simply designating a widget as a drag source with attribute `drag_source true`
@@ -2937,6 +2987,160 @@ Glimmer app:
2937
2987
 
2938
2988
  ![glimmer dsl tk screenshot sample hello separator](images/glimmer-dsl-tk-screenshot-sample-hello-separator.png)
2939
2989
 
2990
+ ### Hello, Scrollbar!
2991
+
2992
+ Glimmer code (from [samples/hello/hello_scrollbar.rb](samples/hello/hello_scrollbar.rb)):
2993
+
2994
+ ```ruby
2995
+ require 'glimmer-dsl-tk'
2996
+
2997
+ include Glimmer
2998
+
2999
+ root {
3000
+ title 'Hello, Scrollbar!'
3001
+ width 400
3002
+ height 500
3003
+
3004
+ notebook {
3005
+ grid sticky: 'nsew'
3006
+
3007
+ frame(text: 'Scrollable List') {
3008
+ @list = list {
3009
+ grid sticky: 'nsew', row: 0, column: 0, row_weight: 1, column_weight: 1
3010
+ items 40.times.map {|n| "Item #{n + 1} of a very long list" }
3011
+ }
3012
+
3013
+ @scrollbar = scrollbar {
3014
+ grid row: 0, column: 1
3015
+ # orient 'vertical' # default
3016
+ }
3017
+ @list.yscrollbar @scrollbar
3018
+ }
3019
+
3020
+ frame(text: 'Scrollable Text') {
3021
+ @text = text {
3022
+ grid sticky: 'nsew', row: 0, column: 0, row_weight: 1, column_weight: 1
3023
+ value ("This is a random sample of text that will repeat over and over and over"*2 + "\n")*40
3024
+ }
3025
+
3026
+ @yscrollbar = scrollbar {
3027
+ grid row: 0, column: 1
3028
+ # orient 'vertical' # default
3029
+ }
3030
+ @text.yscrollbar @yscrollbar
3031
+
3032
+ @xscrollbar = scrollbar {
3033
+ grid row: 1, column: 0, column_span: 2, row_weight: 0
3034
+ orient 'horizontal'
3035
+ }
3036
+ @text.xscrollbar @xscrollbar
3037
+ }
3038
+ }
3039
+
3040
+ }.open
3041
+ ```
3042
+
3043
+ Run with [glimmer-dsl-tk](https://rubygems.org/gems/glimmer-dsl-tk) gem installed:
3044
+
3045
+ ```
3046
+ ruby -r glimmer-dsl-tk -e "require 'samples/hello/hello_scrollbar'"
3047
+ ```
3048
+
3049
+ Alternatively, run from cloned project without [glimmer-dsl-tk](https://rubygems.org/gems/glimmer-dsl-tk) gem installed:
3050
+
3051
+ ```
3052
+ ruby -r ./lib/glimmer-dsl-tk.rb samples/hello/hello_scrollbar.rb
3053
+ ```
3054
+
3055
+ Glimmer app:
3056
+
3057
+ ![glimmer dsl tk screenshot sample hello scrollbar](images/glimmer-dsl-tk-screenshot-sample-hello-scrollbar-list.png)
3058
+
3059
+ ![glimmer dsl tk screenshot sample hello scrollbar](images/glimmer-dsl-tk-screenshot-sample-hello-scrollbar-text.png)
3060
+
3061
+ ### Hello, Scrollbar Frame!
3062
+
3063
+ Glimmer code (from [samples/hello/hello_scrollbar_frame.rb](samples/hello/hello_scrollbar_frame.rb)):
3064
+
3065
+ ```ruby
3066
+ require 'glimmer-dsl-tk'
3067
+
3068
+ include Glimmer
3069
+
3070
+ root {
3071
+ title 'Hello, Scrollbar Frame!'
3072
+ width 400
3073
+ height 400
3074
+
3075
+ notebook {
3076
+ grid sticky: 'nsew'
3077
+
3078
+ frame(text: 'X/Y Scroll') {
3079
+ scrollbar_frame {
3080
+ 30.times do |row|
3081
+ 10.times do |column|
3082
+ button {
3083
+ grid row: row, column: column, row_weight: 0, column_weight: 0
3084
+ text "Row #{row} | Column #{column}"
3085
+ }
3086
+ end
3087
+ end
3088
+ }
3089
+ }
3090
+
3091
+ frame(text: 'Y Scroll') {
3092
+ scrollbar_frame {
3093
+ xscrollbar false
3094
+
3095
+ 30.times do |row|
3096
+ 2.times do |column|
3097
+ button {
3098
+ grid row: row, column: column, row_weight: 0, column_weight: 0
3099
+ text "Row #{row} | Column #{column}"
3100
+ }
3101
+ end
3102
+ end
3103
+ }
3104
+ }
3105
+
3106
+ frame(text: 'X Scroll') {
3107
+ scrollbar_frame {
3108
+ yscrollbar false
3109
+
3110
+ 13.times do |row|
3111
+ 10.times do |column|
3112
+ button {
3113
+ grid row: row, column: column, row_weight: 0, column_weight: 0
3114
+ text "Row #{row} | Column #{column}"
3115
+ }
3116
+ end
3117
+ end
3118
+ }
3119
+ }
3120
+ }
3121
+ }.open
3122
+ ```
3123
+
3124
+ Run with [glimmer-dsl-tk](https://rubygems.org/gems/glimmer-dsl-tk) gem installed:
3125
+
3126
+ ```
3127
+ ruby -r glimmer-dsl-tk -e "require 'samples/hello/hello_scrollbar_frame'"
3128
+ ```
3129
+
3130
+ Alternatively, run from cloned project without [glimmer-dsl-tk](https://rubygems.org/gems/glimmer-dsl-tk) gem installed:
3131
+
3132
+ ```
3133
+ ruby -r ./lib/glimmer-dsl-tk.rb samples/hello/hello_scrollbar_frame.rb
3134
+ ```
3135
+
3136
+ Glimmer app:
3137
+
3138
+ ![glimmer dsl tk screenshot sample hello scrollbar frame x y scroll](images/glimmer-dsl-tk-screenshot-sample-hello-scrollbar-frame-x-y-scroll.png)
3139
+
3140
+ ![glimmer dsl tk screenshot sample hello scrollbar frame y scroll](images/glimmer-dsl-tk-screenshot-sample-hello-scrollbar-frame-y-scroll.png)
3141
+
3142
+ ![glimmer dsl tk screenshot sample hello scrollbar frame x scroll](images/glimmer-dsl-tk-screenshot-sample-hello-scrollbar-frame-x-scroll.png)
3143
+
2940
3144
  ### Hello, Menu Bar!
2941
3145
 
2942
3146
  Glimmer code (from [samples/hello/hello_menu_bar.rb](samples/hello/hello_menu_bar.rb)):
@@ -2961,51 +3165,92 @@ root { |r|
2961
3165
  }
2962
3166
 
2963
3167
  menu {
3168
+ # Mac-specific application menu (right next to the Apple menu)
3169
+ if OS.mac?
3170
+ menu(:application) {
3171
+ menu_item(:about, label: 'About My Application') {
3172
+ accelerator 'Command+A'
3173
+
3174
+ on('command') do
3175
+ message_box(parent: r, title: 'About', message: 'About my application.')
3176
+ end
3177
+ }
3178
+
3179
+ menu_item(:preferences) {
3180
+ on('command') do
3181
+ message_box(parent: r, title: 'Preferences', message: 'Preferences of my application.')
3182
+ end
3183
+ }
3184
+
3185
+ # If not defined, application simply quits upon selecting Quit menu item
3186
+ menu_item(:quit) {
3187
+ on('command') do
3188
+ message_box(parent: r, title: 'Quit', message: 'Quitting my application...')
3189
+ exit(0)
3190
+ end
3191
+ }
3192
+ }
3193
+ end
3194
+
3195
+ # Windows-specific system menu (to the top-left of the window frame)
3196
+ if OS.windows?
3197
+ menu(label: 'System')
3198
+ end
3199
+
2964
3200
  menu(label: 'File', underline: 0) {
2965
3201
  menu_item(label: 'New', underline: 0) {
2966
- accelerator 'Command+N'
3202
+ accelerator OS.mac? ? 'Command+N' : 'Control+N'
2967
3203
 
2968
3204
  on('command') do
2969
3205
  message_box(parent: r, title: 'New', message: 'New file created.')
2970
3206
  end
2971
3207
  }
3208
+
2972
3209
  menu_item(label: 'Open...', underline: 0) {
2973
- accelerator 'Command+O'
3210
+ accelerator OS.mac? ? 'Command+O' : 'Control+O'
2974
3211
 
2975
3212
  on('command') do
2976
3213
  message_box(parent: r, title: 'Open', message: 'Opening File...')
2977
3214
  end
2978
3215
  }
3216
+
2979
3217
  menu(label: 'Open Recent', underline: 5) {
2980
3218
  menu_item(label: 'File 1') {
2981
3219
  on('command') do
2982
3220
  message_box(parent: r, title: 'File 1', message: 'File 1 Contents')
2983
3221
  end
2984
3222
  }
3223
+
2985
3224
  menu_item(label: 'File 2') {
2986
3225
  on('command') do
2987
3226
  message_box(parent: r, title: 'File 2', message: 'File 2 Contents')
2988
3227
  end
2989
3228
  }
2990
3229
  }
3230
+
2991
3231
  menu_item(:separator)
3232
+
2992
3233
  menu_item(label: 'Exit', underline: 1) {
2993
3234
  on('command') do
2994
3235
  exit(0)
2995
3236
  end
2996
3237
  }
2997
3238
  }
3239
+
2998
3240
  menu(label: 'Edit', underline: 0) {
2999
3241
  menu_item(label: 'Cut', underline: 2) {
3000
- accelerator 'Command+X'
3242
+ accelerator OS.mac? ? 'Command+X' : 'Control+X'
3001
3243
  }
3244
+
3002
3245
  menu_item(label: 'Copy', underline: 0) {
3003
- accelerator 'Command+C'
3246
+ accelerator OS.mac? ? 'Command+C' : 'Control+C'
3004
3247
  }
3248
+
3005
3249
  menu_item(label: 'Paste', underline: 0) {
3006
- accelerator 'Command+V'
3250
+ accelerator OS.mac? ? 'Command+V' : 'Control+V'
3007
3251
  }
3008
3252
  }
3253
+
3009
3254
  menu(label: 'Options', underline: 0) {
3010
3255
  menu_item(:checkbutton, label: 'Enabled', underline: 0) {
3011
3256
  on('command') do
@@ -3013,7 +3258,8 @@ root { |r|
3013
3258
  @select_multiple_menu.children.each { |menu_item| menu_item.state = menu_item.state == 'disabled' ? 'normal' : 'disabled' }
3014
3259
  end
3015
3260
  }
3016
- @select_one_menu = menu(label: 'Select One', underline: 0) {
3261
+
3262
+ @select_one_menu = menu(label: 'Select One', underline: 7) {
3017
3263
  menu_item(:radiobutton, label: 'Option 1') {
3018
3264
  state 'disabled'
3019
3265
  }
@@ -3024,7 +3270,8 @@ root { |r|
3024
3270
  state 'disabled'
3025
3271
  }
3026
3272
  }
3027
- @select_multiple_menu = menu(label: 'Select Multiple', underline: 0) {
3273
+
3274
+ @select_multiple_menu = menu(label: 'Select Multiple', underline: 7) {
3028
3275
  menu_item(:checkbutton, label: 'Option 4') {
3029
3276
  state 'disabled'
3030
3277
  }
@@ -3036,6 +3283,26 @@ root { |r|
3036
3283
  }
3037
3284
  }
3038
3285
  }
3286
+
3287
+ menu(label: 'Language', underline: 3) {
3288
+ ['denmark', 'finland', 'france', 'germany', 'italy', 'mexico', 'netherlands', 'norway', 'usa'].each do |image_name|
3289
+ menu_item(:radiobutton, label: image_name.capitalize) {
3290
+ selection image_name == 'usa'
3291
+ image File.expand_path("images/#{image_name}.png", __dir__)
3292
+ }
3293
+ end
3294
+ }
3295
+
3296
+ menu(label: 'Country', underline: 3) {
3297
+ ['denmark', 'finland', 'france', 'germany', 'italy', 'mexico', 'netherlands', 'norway', 'usa'].each do |image_name|
3298
+ menu_item(:radiobutton, label: image_name.capitalize) {
3299
+ selection image_name == 'usa'
3300
+ image File.expand_path("images/#{image_name}.png", __dir__)
3301
+ compound 'left'
3302
+ }
3303
+ end
3304
+ }
3305
+
3039
3306
  menu(label: 'Format', underline: 0) {
3040
3307
  menu(label: 'Background Color', underline: 0) {
3041
3308
  COLORS.each { |color_style|
@@ -3046,6 +3313,7 @@ root { |r|
3046
3313
  }
3047
3314
  }
3048
3315
  }
3316
+
3049
3317
  menu(label: 'Foreground Color', underline: 11) {
3050
3318
  COLORS.each { |color_style|
3051
3319
  menu_item(:radiobutton, label: color_style.to_s.split('_').map(&:capitalize).join(' ')) {
@@ -3056,46 +3324,64 @@ root { |r|
3056
3324
  }
3057
3325
  }
3058
3326
  }
3327
+
3059
3328
  menu(label: 'View', underline: 0) {
3060
3329
  menu_item(:radiobutton, label: 'Small', underline: 0) {
3061
- accelerator 'Command+S'
3330
+ accelerator OS.mac? ? 'Command+S' : 'Control+S'
3062
3331
 
3063
3332
  on('command') do
3064
3333
  @label.font = {size: 25}
3065
3334
  end
3066
3335
  }
3336
+
3067
3337
  menu_item(:radiobutton, label: 'Medium', underline: 0) {
3068
- accelerator 'Command+M'
3338
+ accelerator OS.mac? ? 'Command+M' : 'Control+M'
3069
3339
  selection true
3070
3340
 
3071
3341
  on('command') do
3072
3342
  @label.font = {size: 50}
3073
3343
  end
3074
3344
  }
3345
+
3075
3346
  menu_item(:radiobutton, label: 'Large', underline: 0) {
3076
- accelerator 'Command+L'
3347
+ accelerator OS.mac? ? 'Command+L' : 'Control+L'
3077
3348
 
3078
3349
  on('command') do
3079
3350
  @label.font = {size: 75}
3080
3351
  end
3081
3352
  }
3082
3353
  }
3354
+
3355
+ # Mac-specific window menu (containing zooming/resizing menu items)
3356
+ menu(label: 'Window', underline: 0) if OS.mac?
3357
+
3083
3358
  menu(label: 'Help', underline: 0) {
3359
+ if OS.mac?
3360
+ menu_item(:help) {
3361
+ on('command') do
3362
+ message_box(parent: r, title: 'Help', message: 'Help for my application.')
3363
+ end
3364
+ }
3365
+ end
3366
+
3084
3367
  menu_item(label: 'Manual', underline: 0) {
3085
- accelerator 'Command+Shift+M'
3368
+ accelerator OS.mac? ? 'Command+Shift+M' : 'Control+U'
3086
3369
 
3087
3370
  on('command') do
3088
3371
  message_box(parent: r, title: 'Manual', message: 'Manual Contents')
3089
3372
  end
3090
3373
  }
3374
+
3091
3375
  menu_item(label: 'Tutorial', underline: 0) {
3092
- accelerator 'Command+Shift+T'
3376
+ accelerator OS.mac? ? 'Command+Shift+T' : 'Control+T'
3093
3377
 
3094
3378
  on('command') do
3095
3379
  message_box(parent: r, title: 'Tutorial', message: 'Tutorial Contents')
3096
3380
  end
3097
3381
  }
3382
+
3098
3383
  menu_item(:separator)
3384
+
3099
3385
  menu_item(label: 'Report an Issue...', underline: 0) {
3100
3386
  on('command') do
3101
3387
  message_box(parent: r, title: 'Report an Issue', message: 'Reporting an issue...')
@@ -3122,12 +3408,20 @@ Glimmer app:
3122
3408
 
3123
3409
  ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar.png)
3124
3410
 
3411
+ ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-application.png)
3412
+
3125
3413
  ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-file.png)
3126
3414
 
3127
3415
  ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-edit.png)
3128
3416
 
3129
3417
  ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-options.png)
3130
3418
 
3419
+ ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-language.png)
3420
+
3421
+ ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-language-name.png)
3422
+
3423
+ ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-window.png)
3424
+
3131
3425
  ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-format.png)
3132
3426
 
3133
3427
  ![glimmer dsl tk screenshot sample hello menu-bar](images/glimmer-dsl-tk-screenshot-sample-hello-menu-bar-view.png)
@@ -3152,9 +3446,9 @@ https://github.com/ancorgs/y3network-ruby-ui
3152
3446
 
3153
3447
  This is a Graphical User Interface for the famous [cryptopunks Ruby gem](https://github.com/cryptopunksnotdead/cryptopunks/tree/master/cryptopunks).
3154
3448
 
3155
- https://github.com/AndyObtiva/cryptopunks-gui
3449
+ https://github.com/cryptopunksnotdead/cryptopunks-gui
3156
3450
 
3157
- ![CryptoPunks GUI Screenshot](https://raw.githubusercontent.com/AndyObtiva/cryptopunks-gui/master/screenshots/cryptopunks-gui-screenshot.png)
3451
+ ![CryptoPunks GUI Screenshot](https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks-gui/master/screenshots/cryptopunks-gui-screenshot.png)
3158
3452
 
3159
3453
  ### Circule
3160
3454
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.38
1
+ 0.0.42
Binary file
@@ -28,11 +28,15 @@ module Glimmer
28
28
  def can_interpret?(parent, keyword, *args, &block)
29
29
  block_given? and
30
30
  args.size == 0 and
31
- parent.respond_to?("#{keyword}_block=")
31
+ (parent.respond_to?("#{keyword}_block=") || (parent.respond_to?(:tk) && parent.tk.respond_to?(keyword)))
32
32
  end
33
33
 
34
34
  def interpret(parent, keyword, *args, &block)
35
- parent.send("#{keyword}_block=", block)
35
+ if parent.respond_to?("#{keyword}_block=")
36
+ parent.send("#{keyword}_block=", block)
37
+ else
38
+ parent.tk.send(keyword, block)
39
+ end
36
40
  nil
37
41
  end
38
42
  end
@@ -38,11 +38,11 @@ module Glimmer
38
38
  %w[
39
39
  list_selection_data_binding
40
40
  data_binding
41
- block_attribute
42
41
  attribute
43
42
  shine_data_binding
44
43
  widget
45
44
  built_in_dialog
45
+ block_attribute
46
46
  ]
47
47
  )
48
48
  end
@@ -20,7 +20,6 @@
20
20
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
22
  require 'glimmer/tk/widget_proxy'
23
- require 'glimmer/tk/commandable'
24
23
  require 'glimmer/tk/variable_owner'
25
24
 
26
25
  module Glimmer
@@ -29,7 +28,6 @@ module Glimmer
29
28
  #
30
29
  # Follows the Proxy Design Pattern
31
30
  class CheckbuttonProxy < WidgetProxy
32
- include Commandable
33
31
  include VariableOwner
34
32
  end
35
33
  end