glimmer-dsl-tk 0.0.30 → 0.0.34

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.
@@ -64,7 +64,7 @@ class HelloText
64
64
  MULTI_LINE_STRING
65
65
  end
66
66
 
67
- attr_accessor :document
67
+ attr_accessor :document, :find_text
68
68
 
69
69
  attr_accessor :foreground
70
70
 
@@ -90,8 +90,16 @@ class HelloText
90
90
  [FONT_SIZE_PROMPT] + (9..64).to_a.map(&:to_s)
91
91
  end
92
92
 
93
+ def find
94
+ text_index = @text.search(/#{find_text}/i, @text.tag_ranges('sel')&.first&.last || @text.index('insert'))
95
+ unless text_index.to_s.empty?
96
+ @text.tag_remove('sel', '1.0', 'end')
97
+ @text.tag_add('sel', text_index, "#{text_index} + #{find_text.size} chars")
98
+ end
99
+ end
100
+
93
101
  def launch
94
- root {
102
+ @root = root {
95
103
  title 'Hello, Text!'
96
104
  width 1280
97
105
  height 800
@@ -99,11 +107,6 @@ class HelloText
99
107
  frame {
100
108
  grid row: 0, column: 0
101
109
 
102
- label {
103
- grid row: 0, column: 0, columnspan: 17
104
- text 'Select a region of text and then apply formatting from the toolbar'
105
- }
106
-
107
110
  column_index = -1
108
111
 
109
112
  combobox {
@@ -135,7 +138,7 @@ class HelloText
135
138
  orient 'vertical'
136
139
  }
137
140
 
138
- button {
141
+ @bold_button = button {
139
142
  grid row: 1, column: column_index += 1, column_weight: 0
140
143
  text 'B'
141
144
  style font: {weight: 'bold'}
@@ -145,7 +148,7 @@ class HelloText
145
148
  end
146
149
  }
147
150
 
148
- button {
151
+ @italic_button = button {
149
152
  grid row: 1, column: column_index += 1, column_weight: 0
150
153
  text 'I'
151
154
  style font: {slant: 'italic'}
@@ -155,7 +158,7 @@ class HelloText
155
158
  end
156
159
  }
157
160
 
158
- button {
161
+ @underline_button = button {
159
162
  grid row: 1, column: column_index += 1, column_weight: 0
160
163
  text 'U'
161
164
  style font: {underline: true}
@@ -164,36 +167,36 @@ class HelloText
164
167
  @text.toggle_selection_font_format('underline', true)
165
168
  end
166
169
  }
167
-
170
+
168
171
  separator {
169
172
  grid row: 1, column: column_index += 1, column_weight: 0
170
173
  orient 'vertical'
171
174
  }
172
175
 
173
- button {
176
+ @justify_left_button = button {
174
177
  grid row: 1, column: column_index += 1, column_weight: 0
175
- image File.expand_path("images/cut.png", __dir__), subsample: 32
178
+ image File.expand_path("images/align-left.png", __dir__), subsample: 32
176
179
 
177
180
  on('command') do
178
- @text.text_cut
181
+ @text.add_selection_format('justify', 'left')
179
182
  end
180
183
  }
181
184
 
182
- button {
185
+ @justify_center_button = button {
183
186
  grid row: 1, column: column_index += 1, column_weight: 0
184
- image File.expand_path("images/copy.png", __dir__), subsample: 32
187
+ image File.expand_path("images/align-center.png", __dir__), subsample: 32
185
188
 
186
189
  on('command') do
187
- @text.text_copy
190
+ @text.add_selection_format('justify', 'center')
188
191
  end
189
192
  }
190
193
 
191
- button {
194
+ @justify_right_button = button {
192
195
  grid row: 1, column: column_index += 1, column_weight: 0
193
- image File.expand_path("images/paste.png", __dir__), subsample: 32
196
+ image File.expand_path("images/align-right.png", __dir__), subsample: 32
194
197
 
195
198
  on('command') do
196
- @text.text_paste
199
+ @text.add_selection_format('justify', 'right')
197
200
  end
198
201
  }
199
202
 
@@ -204,51 +207,51 @@ class HelloText
204
207
 
205
208
  button {
206
209
  grid row: 1, column: column_index += 1, column_weight: 0
207
- image File.expand_path("images/align-left.png", __dir__), subsample: 32
210
+ image File.expand_path("images/picture.png", __dir__), subsample: 32
208
211
 
209
212
  on('command') do
210
- @text.add_selection_format('justify', 'left')
213
+ @text.get_open_file_to_insert_image
211
214
  end
212
215
  }
213
216
 
214
217
  button {
215
218
  grid row: 1, column: column_index += 1, column_weight: 0
216
- image File.expand_path("images/align-center.png", __dir__), subsample: 32
219
+ image File.expand_path("images/search.png", __dir__), subsample: 32
217
220
 
218
221
  on('command') do
219
- @text.add_selection_format('justify', 'center')
222
+ show_find_dialog
220
223
  end
221
224
  }
222
225
 
226
+ separator {
227
+ grid row: 1, column: column_index += 1, column_weight: 0
228
+ orient 'vertical'
229
+ }
230
+
223
231
  button {
224
232
  grid row: 1, column: column_index += 1, column_weight: 0
225
- image File.expand_path("images/align-right.png", __dir__), subsample: 32
233
+ image File.expand_path("images/cut.png", __dir__), subsample: 32
226
234
 
227
235
  on('command') do
228
- @text.add_selection_format('justify', 'right')
236
+ @text.text_cut
229
237
  end
230
238
  }
231
239
 
232
- separator {
233
- grid row: 1, column: column_index += 1, column_weight: 0
234
- orient 'vertical'
235
- }
236
-
237
240
  button {
238
241
  grid row: 1, column: column_index += 1, column_weight: 0
239
- image File.expand_path("images/undo.png", __dir__), subsample: 32
242
+ image File.expand_path("images/copy.png", __dir__), subsample: 32
240
243
 
241
244
  on('command') do
242
- @text.edit_undo
245
+ @text.text_copy
243
246
  end
244
247
  }
245
248
 
246
249
  button {
247
250
  grid row: 1, column: column_index += 1, column_weight: 0
248
- image File.expand_path("images/redo.png", __dir__), subsample: 32
251
+ image File.expand_path("images/paste.png", __dir__), subsample: 32
249
252
 
250
253
  on('command') do
251
- @text.edit_redo
254
+ @text.text_paste
252
255
  end
253
256
  }
254
257
 
@@ -257,12 +260,22 @@ class HelloText
257
260
  orient 'vertical'
258
261
  }
259
262
 
263
+
260
264
  button {
261
265
  grid row: 1, column: column_index += 1, column_weight: 0
262
- image File.expand_path("images/picture.png", __dir__), subsample: 32
266
+ image File.expand_path("images/undo.png", __dir__), subsample: 32
263
267
 
264
268
  on('command') do
265
- @text.get_open_file_to_insert_image
269
+ @text.edit_undo
270
+ end
271
+ }
272
+
273
+ button {
274
+ grid row: 1, column: column_index += 1, column_weight: 0
275
+ image File.expand_path("images/redo.png", __dir__), subsample: 32
276
+
277
+ on('command') do
278
+ @text.edit_redo
266
279
  end
267
280
  }
268
281
  }
@@ -272,8 +285,67 @@ class HelloText
272
285
  wrap 'word'
273
286
  undo true
274
287
  value <=> [self, :document]
288
+
289
+ on('KeyPress') do |event|
290
+ show_find_dialog if (event.keysym == 'f') && ((OS.mac? && event.state == 8) || (!OS.mac? && event.state == 4))
291
+ end
292
+
293
+ on('InsertMarkMoved') do
294
+ self.font_family = @text.applied_font_format_value('family')
295
+ self.font_size = @text.applied_font_format_value('size')
296
+ @bold_button.default = @text.applied_font_format_value('weight') == 'bold' ? 'active' : 'normal'
297
+ @italic_button.default = @text.applied_font_format_value('slant') == 'italic' ? 'active' : 'normal'
298
+ @underline_button.default = @text.applied_font_format_value('underline') == true ? 'active' : 'normal'
299
+ self.background = @text.applied_format_value('background')
300
+ self.foreground = @text.applied_format_value('foreground')
301
+ @justify_left_button.default = @text.applied_format_value('justify') == 'left' ? 'active' : 'normal'
302
+ @justify_center_button.default = @text.applied_format_value('justify') == 'center' ? 'active' : 'normal'
303
+ @justify_right_button.default = @text.applied_format_value('justify') == 'right' ? 'active' : 'normal'
304
+ end
305
+ }
306
+ }
307
+ @root.open
308
+ end
309
+
310
+ def show_find_dialog
311
+ toplevel(@root) { |tl|
312
+ title 'Find'
313
+
314
+ label {
315
+ text 'Text:'
316
+ }
317
+ entry { |e|
318
+ focus true
319
+ text <=> [
320
+ self,
321
+ :find_text,
322
+ after_write: lambda do
323
+ text_index = @text.search(/#{find_text}/i, 'insert')
324
+ unless text_index.to_s.empty?
325
+ @text.tag_remove('sel', '1.0', 'end')
326
+ @text.tag_add('sel', text_index, "#{text_index} + #{find_text.size} chars")
327
+ end
328
+ end
329
+ ]
330
+
331
+ on('KeyPress') do |event|
332
+ if event.keysym == 'Return'
333
+ find
334
+ elsif event.keysym == 'Escape'
335
+ tl.grab_release
336
+ tl.destroy
337
+ end
338
+ end
339
+ }
340
+ button {
341
+ text 'Find'
342
+ default 'active'
343
+
344
+ on('command') do
345
+ find
346
+ end
275
347
  }
276
- }.open
348
+ }
277
349
  end
278
350
  end
279
351
 
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.30
4
+ version: 0.0.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-23 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -211,6 +211,7 @@ files:
211
211
  - icons/glimmer.png
212
212
  - lib/glimmer-dsl-tk.rb
213
213
  - lib/glimmer/data_binding/tk/list_selection_binding.rb
214
+ - lib/glimmer/data_binding/tk/one_time_observer.rb
214
215
  - lib/glimmer/data_binding/tk/widget_binding.rb
215
216
  - lib/glimmer/dsl/tk/attribute_expression.rb
216
217
  - lib/glimmer/dsl/tk/bind_expression.rb
@@ -240,6 +241,7 @@ files:
240
241
  - lib/glimmer/tk/spinbox_proxy.rb
241
242
  - lib/glimmer/tk/text_proxy.rb
242
243
  - lib/glimmer/tk/text_variable_owner.rb
244
+ - lib/glimmer/tk/toplevel_proxy.rb
243
245
  - lib/glimmer/tk/treeview_proxy.rb
244
246
  - lib/glimmer/tk/variable_owner.rb
245
247
  - lib/glimmer/tk/widget_proxy.rb