glimmer-dsl-tk 0.0.37 → 0.0.41

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.
@@ -27,16 +27,32 @@ require 'glimmer'
27
27
  require 'puts_debuggerer' if ENV['pd'].to_s.downcase == 'true'
28
28
  # require 'super_module'
29
29
  require 'tk'
30
+ require 'tkextlib/bwidget'
31
+ require 'tkextlib/iwidgets'
30
32
  require 'os'
31
33
  require 'facets/hash/symbolize_keys'
34
+ require 'facets/string/underscore'
35
+ require 'facets/string/camelcase'
36
+ require 'delegate'
32
37
 
33
38
  # Internal requires
34
39
  # require 'ext/glimmer/config'
35
40
  # require 'ext/glimmer'
36
41
  require 'glimmer/dsl/tk/dsl'
42
+
37
43
  Glimmer::Config.loop_max_count = -1
44
+
38
45
  Glimmer::Config.excluded_keyword_checkers << lambda do |method_symbol, *args|
39
46
  method = method_symbol.to_s
40
47
  result = false
41
48
  result ||= method == 'load_iseq'
42
49
  end
50
+
51
+ Tk::Tile::Style.theme_use 'alt' if OS.linux?
52
+
53
+ ::TkOption.add '*tearOff', 0
54
+
55
+ class ::Tk::TkSysMenu_Window < Tk::Menu
56
+ include Tk::SystemMenu
57
+ SYSMENU_NAME = 'window'
58
+ end
@@ -47,7 +47,7 @@ class HelloButton
47
47
  default 'active'
48
48
  focus true
49
49
 
50
- command {
50
+ on('command') {
51
51
  self.count += 1
52
52
  }
53
53
  }
@@ -64,7 +64,7 @@ class HelloButton
64
64
  button {
65
65
  image File.expand_path('../../icons/glimmer.png', __dir__), subsample: 5
66
66
 
67
- command {
67
+ on('command') {
68
68
  message_box(title: 'Image Button', message: 'Image Button Clicked!')
69
69
  }
70
70
  }
@@ -81,10 +81,10 @@ class HelloButton
81
81
  ['center', 'top', 'bottom', 'left', 'right'].each do |compound_option|
82
82
  button {
83
83
  image File.expand_path('../../icons/glimmer.png', __dir__), subsample: 5
84
- text 'Text Image Button'
84
+ text "#{compound_option.capitalize} Image"
85
85
  compound compound_option
86
86
 
87
- command {
87
+ on('command') {
88
88
  message_box(title: 'Text Image Button', message: 'Text Image Button Clicked!', detail: "(#{compound_option})")
89
89
  }
90
90
  }
@@ -1,4 +1,4 @@
1
- `# Copyright (c) 2020-2021 Andy Maleh
1
+ # Copyright (c) 2020-2021 Andy Maleh
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
@@ -0,0 +1,265 @@
1
+ # Copyright (c) 2020-2021 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer-dsl-tk'
23
+
24
+ include Glimmer
25
+
26
+ COLORS = [:white, :red, :yellow, :green, :blue, :magenta, :gray, :black]
27
+
28
+ Tk::Tile::Style.theme_use "classic" # this enables setting background on label just for demo purposes
29
+
30
+ root { |r|
31
+ title 'Hello, Menu Bar!'
32
+
33
+ @label = label {
34
+ grid row_weight: 1, column_weight: 1
35
+ text 'Check Out The Menu Bar Above!'
36
+ font size: 50
37
+ anchor 'center'
38
+ }
39
+
40
+ menu {
41
+ # Mac-specific application menu (right next to the Apple menu)
42
+ if OS.mac?
43
+ menu(:application) {
44
+ menu_item(:about, label: 'About My Application') {
45
+ accelerator 'Command+A'
46
+
47
+ on('command') do
48
+ message_box(parent: r, title: 'About', message: 'About my application.')
49
+ end
50
+ }
51
+
52
+ menu_item(:preferences) {
53
+ on('command') do
54
+ message_box(parent: r, title: 'Preferences', message: 'Preferences of my application.')
55
+ end
56
+ }
57
+
58
+ # If not defined, application simply quits upon selecting Quit menu item
59
+ menu_item(:quit) {
60
+ on('command') do
61
+ message_box(parent: r, title: 'Quit', message: 'Quitting my application...')
62
+ exit(0)
63
+ end
64
+ }
65
+ }
66
+ end
67
+
68
+ # Windows-specific system menu (to the top-left of the window frame)
69
+ if OS.windows?
70
+ menu(label: 'System')
71
+ end
72
+
73
+ menu(label: 'File', underline: 0) {
74
+ menu_item(label: 'New', underline: 0) {
75
+ accelerator OS.mac? ? 'Command+N' : 'Control+N'
76
+
77
+ on('command') do
78
+ message_box(parent: r, title: 'New', message: 'New file created.')
79
+ end
80
+ }
81
+
82
+ menu_item(label: 'Open...', underline: 0) {
83
+ accelerator OS.mac? ? 'Command+O' : 'Control+O'
84
+
85
+ on('command') do
86
+ message_box(parent: r, title: 'Open', message: 'Opening File...')
87
+ end
88
+ }
89
+
90
+ menu(label: 'Open Recent', underline: 5) {
91
+ menu_item(label: 'File 1') {
92
+ on('command') do
93
+ message_box(parent: r, title: 'File 1', message: 'File 1 Contents')
94
+ end
95
+ }
96
+
97
+ menu_item(label: 'File 2') {
98
+ on('command') do
99
+ message_box(parent: r, title: 'File 2', message: 'File 2 Contents')
100
+ end
101
+ }
102
+ }
103
+
104
+ menu_item(:separator)
105
+
106
+ menu_item(label: 'Exit', underline: 1) {
107
+ on('command') do
108
+ exit(0)
109
+ end
110
+ }
111
+ }
112
+
113
+ menu(label: 'Edit', underline: 0) {
114
+ menu_item(label: 'Cut', underline: 2) {
115
+ accelerator OS.mac? ? 'Command+X' : 'Control+X'
116
+ }
117
+
118
+ menu_item(label: 'Copy', underline: 0) {
119
+ accelerator OS.mac? ? 'Command+C' : 'Control+C'
120
+ }
121
+
122
+ menu_item(label: 'Paste', underline: 0) {
123
+ accelerator OS.mac? ? 'Command+V' : 'Control+V'
124
+ }
125
+ }
126
+
127
+ menu(label: 'Options', underline: 0) {
128
+ menu_item(:checkbutton, label: 'Enabled', underline: 0) {
129
+ on('command') do
130
+ @select_one_menu.children.each { |menu_item| menu_item.state = menu_item.state == 'disabled' ? 'normal' : 'disabled' }
131
+ @select_multiple_menu.children.each { |menu_item| menu_item.state = menu_item.state == 'disabled' ? 'normal' : 'disabled' }
132
+ end
133
+ }
134
+
135
+ @select_one_menu = menu(label: 'Select One', underline: 7) {
136
+ menu_item(:radiobutton, label: 'Option 1') {
137
+ state 'disabled'
138
+ }
139
+ menu_item(:radiobutton, label: 'Option 2') {
140
+ state 'disabled'
141
+ }
142
+ menu_item(:radiobutton, label: 'Option 3') {
143
+ state 'disabled'
144
+ }
145
+ }
146
+
147
+ @select_multiple_menu = menu(label: 'Select Multiple', underline: 7) {
148
+ menu_item(:checkbutton, label: 'Option 4') {
149
+ state 'disabled'
150
+ }
151
+ menu_item(:checkbutton, label: 'Option 5') {
152
+ state 'disabled'
153
+ }
154
+ menu_item(:checkbutton, label: 'Option 6') {
155
+ state 'disabled'
156
+ }
157
+ }
158
+ }
159
+
160
+ menu(label: 'Language', underline: 3) {
161
+ ['denmark', 'finland', 'france', 'germany', 'italy', 'mexico', 'netherlands', 'norway', 'usa'].each do |image_name|
162
+ menu_item(:radiobutton, label: image_name.capitalize) {
163
+ selection image_name == 'usa'
164
+ image File.expand_path("images/#{image_name}.png", __dir__)
165
+ }
166
+ end
167
+ }
168
+
169
+ menu(label: 'Country', underline: 3) {
170
+ ['denmark', 'finland', 'france', 'germany', 'italy', 'mexico', 'netherlands', 'norway', 'usa'].each do |image_name|
171
+ menu_item(:radiobutton, label: image_name.capitalize) {
172
+ selection image_name == 'usa'
173
+ image File.expand_path("images/#{image_name}.png", __dir__)
174
+ compound 'left'
175
+ }
176
+ end
177
+ }
178
+
179
+ menu(label: 'Format', underline: 0) {
180
+ menu(label: 'Background Color', underline: 0) {
181
+ COLORS.each { |color_style|
182
+ menu_item(:radiobutton, label: color_style.to_s.split('_').map(&:capitalize).join(' ')) {
183
+ on('command') do
184
+ @label.background = color_style
185
+ end
186
+ }
187
+ }
188
+ }
189
+
190
+ menu(label: 'Foreground Color', underline: 11) {
191
+ COLORS.each { |color_style|
192
+ menu_item(:radiobutton, label: color_style.to_s.split('_').map(&:capitalize).join(' ')) {
193
+ on('command') do
194
+ @label.foreground = color_style
195
+ end
196
+ }
197
+ }
198
+ }
199
+ }
200
+
201
+ menu(label: 'View', underline: 0) {
202
+ menu_item(:radiobutton, label: 'Small', underline: 0) {
203
+ accelerator OS.mac? ? 'Command+S' : 'Control+S'
204
+
205
+ on('command') do
206
+ @label.font = {size: 25}
207
+ end
208
+ }
209
+
210
+ menu_item(:radiobutton, label: 'Medium', underline: 0) {
211
+ accelerator OS.mac? ? 'Command+M' : 'Control+M'
212
+ selection true
213
+
214
+ on('command') do
215
+ @label.font = {size: 50}
216
+ end
217
+ }
218
+
219
+ menu_item(:radiobutton, label: 'Large', underline: 0) {
220
+ accelerator OS.mac? ? 'Command+L' : 'Control+L'
221
+
222
+ on('command') do
223
+ @label.font = {size: 75}
224
+ end
225
+ }
226
+ }
227
+
228
+ # Mac-specific window menu (containing zooming/resizing menu items)
229
+ menu(label: 'Window', underline: 0) if OS.mac?
230
+
231
+ menu(label: 'Help', underline: 0) {
232
+ if OS.mac?
233
+ menu_item(:help) {
234
+ on('command') do
235
+ message_box(parent: r, title: 'Help', message: 'Help for my application.')
236
+ end
237
+ }
238
+ end
239
+
240
+ menu_item(label: 'Manual', underline: 0) {
241
+ accelerator OS.mac? ? 'Command+Shift+M' : 'Control+U'
242
+
243
+ on('command') do
244
+ message_box(parent: r, title: 'Manual', message: 'Manual Contents')
245
+ end
246
+ }
247
+
248
+ menu_item(label: 'Tutorial', underline: 0) {
249
+ accelerator OS.mac? ? 'Command+Shift+T' : 'Control+T'
250
+
251
+ on('command') do
252
+ message_box(parent: r, title: 'Tutorial', message: 'Tutorial Contents')
253
+ end
254
+ }
255
+
256
+ menu_item(:separator)
257
+
258
+ menu_item(label: 'Report an Issue...', underline: 0) {
259
+ on('command') do
260
+ message_box(parent: r, title: 'Report an Issue', message: 'Reporting an issue...')
261
+ end
262
+ }
263
+ }
264
+ }
265
+ }.open
@@ -19,24 +19,48 @@
19
19
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
20
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
- require 'glimmer/tk/widget_proxy'
22
+ require 'glimmer-dsl-tk'
23
23
 
24
- module Glimmer
25
- module Tk
26
- # Represents widgets that can invoke a command
27
- module Commandable
28
- def command_block=(proc)
29
- tk.command(proc)
30
- end
24
+ include Glimmer
25
+
26
+ root {
27
+ title 'Hello, Scrollbar!'
28
+ width 400
29
+ height 500
30
+
31
+ notebook {
32
+ grid sticky: 'nsew'
33
+
34
+ frame(text: 'Scrollable List') {
35
+ @list = list {
36
+ grid sticky: 'nsew', row: 0, column: 0, row_weight: 1, column_weight: 1
37
+ items 40.times.map {|n| "Item #{n + 1} of a very long list" }
38
+ }
39
+
40
+ @scrollbar = scrollbar {
41
+ grid row: 0, column: 1
42
+ # orient 'vertical' # default
43
+ }
44
+ @list.yscrollbar @scrollbar
45
+ }
46
+
47
+ frame(text: 'Scrollable Text') {
48
+ @text = text {
49
+ grid sticky: 'nsew', row: 0, column: 0, row_weight: 1, column_weight: 1
50
+ value ("This is a random sample of text that will repeat over and over and over"*2 + "\n")*40
51
+ }
31
52
 
32
- def handle_listener(listener_name, &listener)
33
- case listener_name.to_s.downcase
34
- when 'command'
35
- command(listener)
36
- else
37
- super
38
- end
39
- end
40
- end
41
- end
42
- end
53
+ @yscrollbar = scrollbar {
54
+ grid row: 0, column: 1
55
+ # orient 'vertical' # default
56
+ }
57
+ @text.yscrollbar @yscrollbar
58
+
59
+ @xscrollbar = scrollbar {
60
+ grid row: 1, column: 0, column_span: 2, row_weight: 0
61
+ orient 'horizontal'
62
+ }
63
+ @text.xscrollbar @xscrollbar
64
+ }
65
+ }
66
+ }.open
@@ -0,0 +1,77 @@
1
+ # Copyright (c) 2020-2021 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ require 'glimmer-dsl-tk'
23
+
24
+ include Glimmer
25
+
26
+ root {
27
+ title 'Hello, Scrollbar Frame!'
28
+ width 400
29
+ height 400
30
+
31
+ notebook {
32
+ grid sticky: 'nsew'
33
+
34
+ frame(text: 'X/Y Scroll') {
35
+ scrollbar_frame {
36
+ 30.times do |row|
37
+ 10.times do |column|
38
+ button {
39
+ grid row: row, column: column, row_weight: 0, column_weight: 0
40
+ text "Row #{row} | Column #{column}"
41
+ }
42
+ end
43
+ end
44
+ }
45
+ }
46
+
47
+ frame(text: 'Y Scroll') {
48
+ scrollbar_frame {
49
+ xscrollbar false
50
+
51
+ 30.times do |row|
52
+ 2.times do |column|
53
+ button {
54
+ grid row: row, column: column, row_weight: 0, column_weight: 0
55
+ text "Row #{row} | Column #{column}"
56
+ }
57
+ end
58
+ end
59
+ }
60
+ }
61
+
62
+ frame(text: 'X Scroll') {
63
+ scrollbar_frame {
64
+ yscrollbar false
65
+
66
+ 13.times do |row|
67
+ 10.times do |column|
68
+ button {
69
+ grid row: row, column: column, row_weight: 0, column_weight: 0
70
+ text "Row #{row} | Column #{column}"
71
+ }
72
+ end
73
+ end
74
+ }
75
+ }
76
+ }
77
+ }.open
@@ -105,32 +105,32 @@ class HelloText
105
105
  height 800
106
106
 
107
107
  frame {
108
- grid row: 0, column: 0
108
+ grid row: 0, column: 0, column_span: 2
109
109
 
110
110
  column_index = -1
111
111
 
112
112
  combobox { |cb|
113
113
  grid row: 1, column: column_index += 1, column_weight: 1
114
114
  readonly true
115
- text <=> [self, :font_family, after_write: ->(value) { @text.toggle_selection_font_format('family', value == FONT_FAMILY_PROMPT ? 'Courier New' : value, focus: 100) }]
115
+ text <=> [self, :font_family, after_write: ->(value) { @text.toggle_selection_font_format('family', value == FONT_FAMILY_PROMPT ? 'Courier New' : value, focus: OS.mac? ? 100 : true) }]
116
116
  }
117
117
 
118
118
  combobox {
119
119
  grid row: 1, column: column_index += 1, column_weight: 1
120
120
  readonly true
121
- text <=> [self, :font_size, after_write: ->(value) { @text.toggle_selection_font_format('size', value == FONT_SIZE_PROMPT ? 13 : value, focus: 100) }]
121
+ text <=> [self, :font_size, after_write: ->(value) { @text.toggle_selection_font_format('size', value == FONT_SIZE_PROMPT ? 13 : value, focus: OS.mac? ? 100 : true) }]
122
122
  }
123
123
 
124
124
  combobox {
125
125
  grid row: 1, column: column_index += 1, column_weight: 1
126
126
  readonly true
127
- text <=> [self, :foreground, after_write: ->(value) { @text.add_selection_format('foreground', value == FOREGROUND_PROMPT ? 'black' : value, focus: 100) }]
127
+ text <=> [self, :foreground, after_write: ->(value) { @text.add_selection_format('foreground', value == FOREGROUND_PROMPT ? 'black' : value, focus: OS.mac? ? 100 : true) }]
128
128
  }
129
129
 
130
130
  combobox {
131
131
  grid row: 1, column: column_index += 1, column_weight: 1
132
132
  readonly true
133
- text <=> [self, :background, after_write: ->(value) { @text.add_selection_format('background', value == BACKGROUND_PROMPT ? 'white' : value, focus: 100) }]
133
+ text <=> [self, :background, after_write: ->(value) { @text.add_selection_format('background', value == BACKGROUND_PROMPT ? 'white' : value, focus: OS.mac? ? 100 : true) }]
134
134
  }
135
135
 
136
136
  separator {
@@ -282,7 +282,7 @@ class HelloText
282
282
 
283
283
  @text = text {
284
284
  grid row: 1, column: 0, row_weight: 1
285
- wrap 'word'
285
+ # wrap 'word'
286
286
  undo true
287
287
  value <=> [self, :document]
288
288
 
@@ -303,6 +303,16 @@ class HelloText
303
303
  show_find_dialog if (event.keysym == 'f') && ((OS.mac? && event.state == 8) || (!OS.mac? && event.state == 4))
304
304
  end
305
305
  }
306
+
307
+ @yscrollbar = y_scrollbar {
308
+ grid row: 1, column: 1
309
+ }
310
+ @text.yscrollbar @yscrollbar
311
+
312
+ @xscrollbar = x_scrollbar {
313
+ grid row: 2, column: 0, column_span: 2, row_weight: 0
314
+ }
315
+ @text.xscrollbar @xscrollbar
306
316
  }
307
317
  @root.open
308
318
  end
@@ -74,7 +74,7 @@ root { |root_window|
74
74
 
75
75
  frame {
76
76
  label {
77
- text "This is a transparent window\nYou can hit ESCAPE to close."
77
+ text "This is a transparent window\n(Varies per platform)\nYou can hit ESCAPE to close."
78
78
  anchor 'center'
79
79
  }
80
80
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-tk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.37
4
+ version: 0.0.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-06 00:00:00.000000000 Z
11
+ date: 2021-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -226,18 +226,19 @@ files:
226
226
  - lib/glimmer/dsl/tk/root_expression.rb
227
227
  - lib/glimmer/dsl/tk/shine_data_binding_expression.rb
228
228
  - lib/glimmer/dsl/tk/widget_expression.rb
229
- - lib/glimmer/tk/button_proxy.rb
230
229
  - lib/glimmer/tk/checkbutton_proxy.rb
231
230
  - lib/glimmer/tk/combobox_proxy.rb
232
- - lib/glimmer/tk/commandable.rb
233
231
  - lib/glimmer/tk/drag_and_drop_extension.rb
234
232
  - lib/glimmer/tk/entry_proxy.rb
235
233
  - lib/glimmer/tk/frame_proxy.rb
236
234
  - lib/glimmer/tk/label_proxy.rb
237
235
  - lib/glimmer/tk/list_proxy.rb
236
+ - lib/glimmer/tk/menu_item_proxy.rb
237
+ - lib/glimmer/tk/menu_proxy.rb
238
238
  - lib/glimmer/tk/notebook_proxy.rb
239
239
  - lib/glimmer/tk/radiobutton_proxy.rb
240
240
  - lib/glimmer/tk/root_proxy.rb
241
+ - lib/glimmer/tk/scrollbar_frame_proxy.rb
241
242
  - lib/glimmer/tk/spinbox_proxy.rb
242
243
  - lib/glimmer/tk/text_proxy.rb
243
244
  - lib/glimmer/tk/text_variable_owner.rb
@@ -258,10 +259,13 @@ files:
258
259
  - samples/hello/hello_label.rb
259
260
  - samples/hello/hello_list_multi_selection.rb
260
261
  - samples/hello/hello_list_single_selection.rb
262
+ - samples/hello/hello_menu_bar.rb
261
263
  - samples/hello/hello_message_box.rb
262
264
  - samples/hello/hello_notebook.rb
263
265
  - samples/hello/hello_radiobutton.rb
264
266
  - samples/hello/hello_root.rb
267
+ - samples/hello/hello_scrollbar.rb
268
+ - samples/hello/hello_scrollbar_frame.rb
265
269
  - samples/hello/hello_separator.rb
266
270
  - samples/hello/hello_spinbox.rb
267
271
  - samples/hello/hello_text.rb
@@ -1,34 +0,0 @@
1
- # Copyright (c) 2020-2021 Andy Maleh
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining
4
- # a copy of this software and associated documentation files (the
5
- # "Software"), to deal in the Software without restriction, including
6
- # without limitation the rights to use, copy, modify, merge, publish,
7
- # distribute, sublicense, and/or sell copies of the Software, and to
8
- # permit persons to whom the Software is furnished to do so, subject to
9
- # the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be
12
- # included in all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
-
22
- require 'glimmer/tk/widget_proxy'
23
- require 'glimmer/tk/commandable'
24
-
25
- module Glimmer
26
- module Tk
27
- # Proxy for Tk::Tile::Button
28
- #
29
- # Follows the Proxy Design Pattern
30
- class ButtonProxy < WidgetProxy
31
- include Commandable
32
- end
33
- end
34
- end