cdk 0.9.0 → 0.10.0
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 +4 -4
- data/lib/cdk.rb +7 -866
- data/lib/cdk/cdk_objs.rb +46 -423
- data/lib/cdk/components.rb +28 -0
- data/lib/cdk/{alphalist.rb → components/alphalist.rb} +9 -6
- data/lib/cdk/components/button.rb +405 -0
- data/lib/cdk/{buttonbox.rb → components/buttonbox.rb} +11 -11
- data/lib/cdk/{calendar.rb → components/calendar.rb} +13 -13
- data/lib/cdk/components/dialog.rb +343 -0
- data/lib/cdk/{dscale.rb → components/dscale.rb} +0 -0
- data/lib/cdk/{entry.rb → components/entry.rb} +18 -18
- data/lib/cdk/{fscale.rb → components/fscale.rb} +1 -1
- data/lib/cdk/{fselect.rb → components/fselect.rb} +16 -13
- data/lib/cdk/{fslider.rb → components/fslider.rb} +1 -1
- data/lib/cdk/components/graph.rb +386 -0
- data/lib/cdk/{histogram.rb → components/histogram.rb} +3 -3
- data/lib/cdk/{itemlist.rb → components/itemlist.rb} +14 -14
- data/lib/cdk/{label.rb → components/label.rb} +7 -7
- data/lib/cdk/{marquee.rb → components/marquee.rb} +7 -7
- data/lib/cdk/{matrix.rb → components/matrix.rb} +27 -27
- data/lib/cdk/{mentry.rb → components/mentry.rb} +18 -18
- data/lib/cdk/{menu.rb → components/menu.rb} +18 -18
- data/lib/cdk/{radio.rb → components/radio.rb} +12 -12
- data/lib/cdk/{scale.rb → components/scale.rb} +13 -13
- data/lib/cdk/{scroll.rb → components/scroll.rb} +23 -386
- data/lib/cdk/{scroller.rb → components/scroller.rb} +1 -1
- data/lib/cdk/{selection.rb → components/selection.rb} +14 -14
- data/lib/cdk/{slider.rb → components/slider.rb} +15 -15
- data/lib/cdk/{swindow.rb → components/swindow.rb} +14 -14
- data/lib/cdk/{template.rb → components/template.rb} +18 -18
- data/lib/cdk/{uscale.rb → components/uscale.rb} +0 -0
- data/lib/cdk/{uslider.rb → components/uslider.rb} +0 -0
- data/lib/cdk/{viewer.rb → components/viewer.rb} +88 -18
- data/lib/cdk/constants.rb +54 -0
- data/lib/cdk/display.rb +30 -35
- data/lib/cdk/draw.rb +4 -6
- data/lib/cdk/helpers/file.rb +43 -0
- data/lib/cdk/helpers/types.rb +13 -0
- data/lib/cdk/helpers/window.rb +64 -0
- data/lib/cdk/mixins/alignments.rb +55 -0
- data/lib/cdk/mixins/bindings.rb +73 -0
- data/lib/cdk/mixins/borders.rb +62 -0
- data/lib/cdk/mixins/common_controls.rb +14 -0
- data/lib/cdk/mixins/converters.rb +358 -0
- data/lib/cdk/mixins/exit_conditions.rb +31 -0
- data/lib/cdk/mixins/focusable.rb +17 -0
- data/lib/cdk/mixins/formattable.rb +15 -0
- data/lib/cdk/mixins/has_screen.rb +23 -0
- data/lib/cdk/mixins/has_title.rb +64 -0
- data/lib/cdk/mixins/justifications.rb +26 -0
- data/lib/cdk/mixins/list_support.rb +31 -0
- data/lib/cdk/mixins/movement.rb +140 -0
- data/lib/cdk/mixins/window_hooks.rb +18 -0
- data/lib/cdk/mixins/window_input.rb +61 -0
- data/lib/cdk/screen.rb +27 -3
- metadata +51 -29
- data/lib/cdk/dialog.rb +0 -727
@@ -64,7 +64,7 @@ module CDK
|
|
64
64
|
# Rejustify the x and y positions if we need to.
|
65
65
|
xtmp = [xplace]
|
66
66
|
ytmp = [yplace]
|
67
|
-
|
67
|
+
alignxy(cdkscreen.window, xtmp, ytmp, @box_width, @box_height)
|
68
68
|
xpos = xtmp[0]
|
69
69
|
ypos = ytmp[0]
|
70
70
|
|
@@ -108,7 +108,7 @@ module CDK
|
|
108
108
|
# Each choice has to be converted from string to chtype array
|
109
109
|
(0...choice_count).each do |j|
|
110
110
|
choicelen = []
|
111
|
-
@choice <<
|
111
|
+
@choice << char2Chtype(choices[j], choicelen, [])
|
112
112
|
@choicelen << choicelen[0]
|
113
113
|
@maxchoicelen = [@maxchoicelen, choicelen[0]].max
|
114
114
|
end
|
@@ -147,7 +147,7 @@ module CDK
|
|
147
147
|
xpos = self.SCREEN_XPOS(0) + scrollbar_adj
|
148
148
|
|
149
149
|
@input_window.wmove(ypos, xpos)
|
150
|
-
@input_window
|
150
|
+
wrefresh(@input_window)
|
151
151
|
end
|
152
152
|
|
153
153
|
# This actually manages the selection widget
|
@@ -185,7 +185,7 @@ module CDK
|
|
185
185
|
def inject(input)
|
186
186
|
pp_return = 1
|
187
187
|
ret = -1
|
188
|
-
complete = false
|
188
|
+
@complete = false
|
189
189
|
|
190
190
|
# Set the exit type
|
191
191
|
self.setExitType(0)
|
@@ -203,7 +203,7 @@ module CDK
|
|
203
203
|
if pp_return != 0
|
204
204
|
# Check for a predefined binding.
|
205
205
|
if self.checkBind(:SELECTION, input)
|
206
|
-
complete = true
|
206
|
+
@complete = true
|
207
207
|
else
|
208
208
|
case input
|
209
209
|
when Ncurses::KEY_UP
|
@@ -238,14 +238,14 @@ module CDK
|
|
238
238
|
end
|
239
239
|
when CDK::KEY_ESC
|
240
240
|
self.setExitType(input)
|
241
|
-
complete = true
|
241
|
+
@complete = true
|
242
242
|
when Ncurses::ERR
|
243
243
|
self.setExitType(input)
|
244
|
-
complete = true
|
244
|
+
@complete = true
|
245
245
|
when Ncurses::KEY_ENTER, CDK::KEY_TAB, CDK::KEY_RETURN
|
246
246
|
self.setExitType(input)
|
247
247
|
ret = 1
|
248
|
-
complete = true
|
248
|
+
@complete = true
|
249
249
|
when CDK::REFRESH
|
250
250
|
@screen.erase
|
251
251
|
@screen.refresh
|
@@ -253,12 +253,12 @@ module CDK
|
|
253
253
|
end
|
254
254
|
|
255
255
|
# Should we call a post-process?
|
256
|
-
if
|
256
|
+
if !@complete && !(@post_process_func.nil?)
|
257
257
|
@post_process_func.call(:SELECTION, self, @post_process_data, input)
|
258
258
|
end
|
259
259
|
end
|
260
260
|
|
261
|
-
unless complete
|
261
|
+
unless @complete
|
262
262
|
self.drawList(@box)
|
263
263
|
self.setExitType(0)
|
264
264
|
end
|
@@ -412,7 +412,7 @@ module CDK
|
|
412
412
|
|
413
413
|
def getItems(list)
|
414
414
|
@item.each do |item|
|
415
|
-
list <<
|
415
|
+
list << chtype2Char(item)
|
416
416
|
end
|
417
417
|
return @list_size
|
418
418
|
end
|
@@ -429,7 +429,7 @@ module CDK
|
|
429
429
|
end
|
430
430
|
|
431
431
|
def getTitle
|
432
|
-
return
|
432
|
+
return chtype2Char(@title)
|
433
433
|
end
|
434
434
|
|
435
435
|
# This sets the highlight bar.
|
@@ -558,7 +558,7 @@ module CDK
|
|
558
558
|
(0...list_size).each do |j|
|
559
559
|
lentmp = []
|
560
560
|
postmp = []
|
561
|
-
new_list <<
|
561
|
+
new_list << char2Chtype(list[j], lentmp, postmp)
|
562
562
|
new_len << lentmp[0]
|
563
563
|
new_pos << postmp[0]
|
564
564
|
#if new_list[j].size == 0
|
@@ -567,7 +567,7 @@ module CDK
|
|
567
567
|
break
|
568
568
|
end
|
569
569
|
new_pos[j] =
|
570
|
-
|
570
|
+
justify_string(box_width, new_len[j], new_pos[j]) + adjust
|
571
571
|
widest_item = [widest_item, new_len[j]].max
|
572
572
|
end
|
573
573
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative 'cdk_objs'
|
1
|
+
require_relative '../cdk_objs'
|
2
2
|
|
3
3
|
module CDK
|
4
4
|
class SLIDER < CDK::CDKOBJS
|
@@ -33,7 +33,7 @@ module CDK
|
|
33
33
|
# Translate the label string to a chtype array.
|
34
34
|
if !(label.nil?) && label.size > 0
|
35
35
|
label_len = []
|
36
|
-
@label =
|
36
|
+
@label = char2Chtype(label, label_len, [])
|
37
37
|
@label_len = label_len[0]
|
38
38
|
box_width = @label_len + field_width +
|
39
39
|
high_value_len + 2 * @border_size
|
@@ -56,7 +56,7 @@ module CDK
|
|
56
56
|
# Rejustify the x and y positions if we need to.
|
57
57
|
xtmp = [xplace]
|
58
58
|
ytmp = [yplace]
|
59
|
-
|
59
|
+
alignxy(cdkscreen.window, xtmp, ytmp, box_width, box_height)
|
60
60
|
xpos = xtmp[0]
|
61
61
|
ypos = ytmp[0]
|
62
62
|
|
@@ -190,7 +190,7 @@ module CDK
|
|
190
190
|
return false
|
191
191
|
end
|
192
192
|
ch = @field_win.winch
|
193
|
-
if
|
193
|
+
if charOf(ch) != ' '
|
194
194
|
return true
|
195
195
|
end
|
196
196
|
if new_position > 1
|
@@ -199,7 +199,7 @@ module CDK
|
|
199
199
|
return false
|
200
200
|
end
|
201
201
|
ch = @field_win.winch
|
202
|
-
return
|
202
|
+
return charOf(ch) != ' '
|
203
203
|
end
|
204
204
|
return false
|
205
205
|
end
|
@@ -290,7 +290,7 @@ module CDK
|
|
290
290
|
def inject(input)
|
291
291
|
pp_return = 1
|
292
292
|
ret = -1
|
293
|
-
complete = false
|
293
|
+
@complete = false
|
294
294
|
|
295
295
|
# Set the exit type.
|
296
296
|
self.setExitType(0)
|
@@ -309,7 +309,7 @@ module CDK
|
|
309
309
|
if pp_return != 0
|
310
310
|
# Check for a key binding.
|
311
311
|
if self.checkBind(:SLIDER, input)
|
312
|
-
complete = true
|
312
|
+
@complete = true
|
313
313
|
else
|
314
314
|
case input
|
315
315
|
when Ncurses::KEY_LEFT
|
@@ -331,13 +331,13 @@ module CDK
|
|
331
331
|
when CDK::KEY_TAB, CDK::KEY_RETURN, Ncurses::KEY_ENTER
|
332
332
|
self.setExitType(input)
|
333
333
|
ret = @current
|
334
|
-
complete = true
|
334
|
+
@complete = true
|
335
335
|
when CDK::KEY_ESC
|
336
336
|
self.setExitType(input)
|
337
|
-
complete = true
|
337
|
+
@complete = true
|
338
338
|
when Ncurses::ERR
|
339
339
|
self.setExitType(input)
|
340
|
-
complete = true
|
340
|
+
@complete = true
|
341
341
|
when CDK::REFRESH
|
342
342
|
@screen.erase
|
343
343
|
@screen.refresh
|
@@ -367,12 +367,12 @@ module CDK
|
|
367
367
|
self.limitCurrentValue
|
368
368
|
|
369
369
|
# Should we call a post-process?
|
370
|
-
if
|
370
|
+
if !@complete && !(@post_process_func.nil?)
|
371
371
|
@post_process_func.call(:SLIDER, self, @post_process_data, input)
|
372
372
|
end
|
373
373
|
end
|
374
374
|
|
375
|
-
if
|
375
|
+
if !@complete
|
376
376
|
self.drawField
|
377
377
|
self.setExitType(0)
|
378
378
|
end
|
@@ -406,9 +406,9 @@ module CDK
|
|
406
406
|
unless @label_win.nil?
|
407
407
|
Draw.writeChtype(@label_win, 0, 0, @label, CDK::HORIZONTAL,
|
408
408
|
0, @label_len)
|
409
|
-
@label_win
|
409
|
+
wrefresh(@label_win)
|
410
410
|
end
|
411
|
-
|
411
|
+
wrefresh
|
412
412
|
|
413
413
|
# Draw the field window.
|
414
414
|
self.drawField
|
@@ -433,7 +433,7 @@ module CDK
|
|
433
433
|
Ncurses::A_NORMAL, CDK::HORIZONTAL, 0, @current.to_s.size)
|
434
434
|
|
435
435
|
self.moveToEditPosition(@field_edit)
|
436
|
-
@field_win
|
436
|
+
wrefresh(@field_win)
|
437
437
|
end
|
438
438
|
|
439
439
|
# This sets the background attribute of the widget.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative 'cdk_objs'
|
1
|
+
require_relative '../cdk_objs'
|
2
2
|
|
3
3
|
module CDK
|
4
4
|
class SWINDOW < CDK::CDKOBJS
|
@@ -45,7 +45,7 @@ module CDK
|
|
45
45
|
# Rejustify the x and y positions if we need to.
|
46
46
|
xtmp = [xplace]
|
47
47
|
ytmp = [yplace]
|
48
|
-
|
48
|
+
alignxy(cdkscreen.window, xtmp, ytmp, box_width, box_height)
|
49
49
|
xpos = xtmp[0]
|
50
50
|
ypos = ytmp[0]
|
51
51
|
|
@@ -109,9 +109,9 @@ module CDK
|
|
109
109
|
def setupLine(list, x)
|
110
110
|
list_len = []
|
111
111
|
list_pos = []
|
112
|
-
@list[x] =
|
112
|
+
@list[x] = char2Chtype(list, list_len, list_pos)
|
113
113
|
@list_len[x] = list_len[0]
|
114
|
-
@list_pos[x] =
|
114
|
+
@list_pos[x] = justify_string(@box_width, list_len[0], list_pos[0])
|
115
115
|
@widest_line = [@widest_line, @list_len[x]].max
|
116
116
|
end
|
117
117
|
|
@@ -328,7 +328,7 @@ module CDK
|
|
328
328
|
def inject(input)
|
329
329
|
pp_return = 1
|
330
330
|
ret = -1
|
331
|
-
complete = false
|
331
|
+
@complete = false
|
332
332
|
|
333
333
|
# Set the exit type.
|
334
334
|
self.setExitType(0)
|
@@ -347,7 +347,7 @@ module CDK
|
|
347
347
|
if pp_return != 0
|
348
348
|
# Check for a key binding.
|
349
349
|
if self.checkBind(:SWINDOW, input)
|
350
|
-
complete = true
|
350
|
+
@complete = true
|
351
351
|
else
|
352
352
|
case input
|
353
353
|
when Ncurses::KEY_UP
|
@@ -409,13 +409,13 @@ module CDK
|
|
409
409
|
when CDK::KEY_TAB, CDK::KEY_RETURN, Ncurses::KEY_ENTER
|
410
410
|
self.setExitType(input)
|
411
411
|
ret = 1
|
412
|
-
complete = true
|
412
|
+
@complete = true
|
413
413
|
when CDK::KEY_ESC
|
414
414
|
self.setExitType(input)
|
415
|
-
complete = true
|
415
|
+
@complete = true
|
416
416
|
when Ncurses::ERR
|
417
417
|
self.setExitType(input)
|
418
|
-
complete = true
|
418
|
+
@complete = true
|
419
419
|
when CDK::REFRESH
|
420
420
|
@screen.erase
|
421
421
|
@screen.refresh
|
@@ -423,12 +423,12 @@ module CDK
|
|
423
423
|
end
|
424
424
|
|
425
425
|
# Should we call a post-process?
|
426
|
-
if
|
426
|
+
if !@complete && !(@post_process_func.nil?)
|
427
427
|
@post_process_func.call(:SWINDOW, self, @post_process_data, input)
|
428
428
|
end
|
429
429
|
end
|
430
430
|
|
431
|
-
if
|
431
|
+
if !@complete
|
432
432
|
self.drawList(@box)
|
433
433
|
self.setExitType(0)
|
434
434
|
end
|
@@ -456,7 +456,7 @@ module CDK
|
|
456
456
|
|
457
457
|
self.drawTitle(@win)
|
458
458
|
|
459
|
-
|
459
|
+
wrefresh
|
460
460
|
|
461
461
|
# Draw in the list.
|
462
462
|
self.drawList(box)
|
@@ -490,7 +490,7 @@ module CDK
|
|
490
490
|
end
|
491
491
|
end
|
492
492
|
|
493
|
-
@field_win
|
493
|
+
wrefresh(@field_win)
|
494
494
|
end
|
495
495
|
|
496
496
|
# This sets the background attribute of the widget.
|
@@ -713,7 +713,7 @@ module CDK
|
|
713
713
|
|
714
714
|
# Start writing out the file.
|
715
715
|
@list.each do |item|
|
716
|
-
raw_line =
|
716
|
+
raw_line = chtype2Char(item)
|
717
717
|
output_file << "%s\n" % raw_line
|
718
718
|
end
|
719
719
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative 'cdk_objs'
|
1
|
+
require_relative '../cdk_objs'
|
2
2
|
|
3
3
|
module CDK
|
4
4
|
class TEMPLATE < CDK::CDKOBJS
|
@@ -26,17 +26,17 @@ module CDK
|
|
26
26
|
|
27
27
|
# Translate the label string to achtype array
|
28
28
|
if !(label.nil?) && label.size > 0
|
29
|
-
label_len
|
30
|
-
@label
|
29
|
+
label_len = []
|
30
|
+
@label = char2Chtype(label, label_len, [])
|
31
31
|
@label_len = label_len[0]
|
32
32
|
end
|
33
33
|
|
34
34
|
# Translate the char * overlay to a chtype array
|
35
35
|
if !(overlay.nil?) && overlay.size > 0
|
36
|
-
overlay_len
|
37
|
-
@overlay
|
36
|
+
overlay_len = []
|
37
|
+
@overlay = char2Chtype(overlay, overlay_len, [])
|
38
38
|
@overlay_len = overlay_len[0]
|
39
|
-
@field_attr
|
39
|
+
@field_attr = @overlay[0] & Ncurses::A_ATTRIBUTES
|
40
40
|
else
|
41
41
|
@overlay = []
|
42
42
|
@overlay_len = 0
|
@@ -61,7 +61,7 @@ module CDK
|
|
61
61
|
# Rejustify the x and y positions if we need to.
|
62
62
|
xtmp = [xplace]
|
63
63
|
ytmp = [yplace]
|
64
|
-
|
64
|
+
alignxy(cdkscreen.window, xtmp, ytmp, box_width, box_height)
|
65
65
|
xpos = xtmp[0]
|
66
66
|
ypos = ytmp[0]
|
67
67
|
|
@@ -222,7 +222,7 @@ module CDK
|
|
222
222
|
# This injects a character into the widget.
|
223
223
|
def inject(input)
|
224
224
|
pp_return = 1
|
225
|
-
complete = false
|
225
|
+
@complete = false
|
226
226
|
ret = -1
|
227
227
|
|
228
228
|
self.setExitType(0)
|
@@ -240,7 +240,7 @@ module CDK
|
|
240
240
|
if pp_return != 0
|
241
241
|
# Check a predefined binding
|
242
242
|
if self.checkBind(:TEMPLATE, input)
|
243
|
-
complete = true
|
243
|
+
@complete = true
|
244
244
|
else
|
245
245
|
case input
|
246
246
|
when CDK::ERASE
|
@@ -280,14 +280,14 @@ module CDK
|
|
280
280
|
else
|
281
281
|
self.setExitType(input)
|
282
282
|
ret = @info
|
283
|
-
complete = true
|
283
|
+
@complete = true
|
284
284
|
end
|
285
285
|
when CDK::KEY_ESC
|
286
286
|
self.setExitType(input)
|
287
|
-
complete = true
|
287
|
+
@complete = true
|
288
288
|
when Ncurses::ERR
|
289
289
|
self.setExitType(input)
|
290
|
-
complete = true
|
290
|
+
@complete = true
|
291
291
|
when CDK::REFRESH
|
292
292
|
@screen.erase
|
293
293
|
@screen.refresh
|
@@ -297,12 +297,12 @@ module CDK
|
|
297
297
|
end
|
298
298
|
|
299
299
|
# Should we call a post-process?
|
300
|
-
if
|
300
|
+
if !@complete && !(@post_process_func.nil?)
|
301
301
|
@post_process_func.call(:TEMPLATE, self, @post_process_data, input)
|
302
302
|
end
|
303
303
|
end
|
304
304
|
|
305
|
-
if
|
305
|
+
if !@complete
|
306
306
|
self.setExitType(0)
|
307
307
|
end
|
308
308
|
|
@@ -399,7 +399,7 @@ module CDK
|
|
399
399
|
|
400
400
|
self.drawTitle(@win)
|
401
401
|
|
402
|
-
|
402
|
+
wrefresh
|
403
403
|
|
404
404
|
self.drawField
|
405
405
|
end
|
@@ -412,7 +412,7 @@ module CDK
|
|
412
412
|
unless @label_win.nil?
|
413
413
|
Draw.writeChtype(@label_win, 0, 0, @label, CDK::HORIZONTAL,
|
414
414
|
0, @label_len)
|
415
|
-
@label_win
|
415
|
+
wrefresh(@label_win)
|
416
416
|
end
|
417
417
|
|
418
418
|
# Draw in the template
|
@@ -435,7 +435,7 @@ module CDK
|
|
435
435
|
else
|
436
436
|
self.adjustCursor(1)
|
437
437
|
end
|
438
|
-
@field_win
|
438
|
+
wrefresh(@field_win)
|
439
439
|
end
|
440
440
|
|
441
441
|
# Adjust the cursor for the template
|
@@ -446,7 +446,7 @@ module CDK
|
|
446
446
|
@screen_pos += direction
|
447
447
|
end
|
448
448
|
@field_win.wmove(0, @screen_pos)
|
449
|
-
@field_win
|
449
|
+
wrefresh(@field_win)
|
450
450
|
end
|
451
451
|
|
452
452
|
# Set the background attribute of the widget.
|
File without changes
|
File without changes
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative 'cdk_objs'
|
1
|
+
require_relative '../cdk_objs'
|
2
2
|
|
3
3
|
module CDK
|
4
4
|
class VIEWER < CDK::CDKOBJS
|
@@ -35,7 +35,7 @@ module CDK
|
|
35
35
|
# Rejustify the x and y positions if we need to.
|
36
36
|
xtmp = [xplace]
|
37
37
|
ytmp = [yplace]
|
38
|
-
|
38
|
+
alignxy(cdkscreen.window, xtmp, ytmp, box_width, box_height)
|
39
39
|
xpos = xtmp[0]
|
40
40
|
ypos = ytmp[0]
|
41
41
|
|
@@ -57,7 +57,7 @@ module CDK
|
|
57
57
|
if button_count > 0
|
58
58
|
(0...button_count).each do |x|
|
59
59
|
button_len = []
|
60
|
-
@button <<
|
60
|
+
@button << char2Chtype(buttons[x], button_len, [])
|
61
61
|
@button_len << button_len[0]
|
62
62
|
button_width += @button_len[x] + 1
|
63
63
|
end
|
@@ -137,9 +137,9 @@ module CDK
|
|
137
137
|
if interpret
|
138
138
|
list_len = []
|
139
139
|
list_pos = []
|
140
|
-
@list[x] =
|
140
|
+
@list[x] = char2Chtype(list, list_len, list_pos)
|
141
141
|
@list_len[x] = list_len[0]
|
142
|
-
@list_pos[x] =
|
142
|
+
@list_pos[x] = justify_string(@box_width, @list_len[x], list_pos[0])
|
143
143
|
else
|
144
144
|
# We must convert tabs and other nonprinting characters. The curses
|
145
145
|
# library normally does this, but we are bypassing it by writing
|
@@ -152,8 +152,8 @@ module CDK
|
|
152
152
|
t << ' '
|
153
153
|
len += 1
|
154
154
|
end while (len & 7) != 0
|
155
|
-
elsif
|
156
|
-
t <<
|
155
|
+
elsif charOf(list[y].ord).match(/^[[:print:]]$/)
|
156
|
+
t << charOf(list[y].ord)
|
157
157
|
len += 1
|
158
158
|
else
|
159
159
|
t << Ncurses.unctrl(list[y].ord)
|
@@ -187,7 +187,7 @@ module CDK
|
|
187
187
|
if list.size > 0 && interpret
|
188
188
|
(0...list_size).each do |x|
|
189
189
|
filename = ''
|
190
|
-
if
|
190
|
+
if check_for_link(list[x], filename) == 1
|
191
191
|
file_contents = []
|
192
192
|
file_len = CDK.readFile(filename, file_contents)
|
193
193
|
|
@@ -218,7 +218,7 @@ module CDK
|
|
218
218
|
else
|
219
219
|
# Check if we have a file link in this line.
|
220
220
|
filename = []
|
221
|
-
if
|
221
|
+
if check_for_link(list[x], filename) == 1
|
222
222
|
# We have a link, open the file.
|
223
223
|
file_contents = []
|
224
224
|
file_len = 0
|
@@ -555,10 +555,10 @@ module CDK
|
|
555
555
|
pos = 0
|
556
556
|
y = 0
|
557
557
|
while y < @list[x].size
|
558
|
-
plain_char =
|
558
|
+
plain_char = charOf(@list[x][y])
|
559
559
|
|
560
560
|
pos += 1
|
561
|
-
if
|
561
|
+
if charOf(pattern[pos-1]) != plain_char
|
562
562
|
y -= (pos - 1)
|
563
563
|
pos = 0
|
564
564
|
elsif pos == pattern.size
|
@@ -578,10 +578,10 @@ module CDK
|
|
578
578
|
y = 0
|
579
579
|
pos = 0
|
580
580
|
while y < @list[x].size
|
581
|
-
plain_char =
|
581
|
+
plain_char = charOf(@list[x][y])
|
582
582
|
|
583
583
|
pos += 1
|
584
|
-
if
|
584
|
+
if charOf(pattern[pos-1]) != plain_char
|
585
585
|
y -= (pos - 1)
|
586
586
|
pos = 0
|
587
587
|
elsif pos == pattern.size
|
@@ -596,7 +596,7 @@ module CDK
|
|
596
596
|
end
|
597
597
|
return found
|
598
598
|
end
|
599
|
-
|
599
|
+
|
600
600
|
# This allows us to 'jump' to a given line in the file.
|
601
601
|
def jumpToLine
|
602
602
|
newline = CDK::SCALE.new(@screen, CDK::CENTER, CDK::CENTER,
|
@@ -637,7 +637,7 @@ module CDK
|
|
637
637
|
# Box it if it was asked for.
|
638
638
|
if box
|
639
639
|
Draw.drawObjBox(@win, self)
|
640
|
-
|
640
|
+
wrefresh
|
641
641
|
end
|
642
642
|
|
643
643
|
# Draw the info in the viewer.
|
@@ -660,7 +660,7 @@ module CDK
|
|
660
660
|
# Highlight the current button.
|
661
661
|
(0...@button_len[@current_button]).each do |x|
|
662
662
|
# Strip the character of any extra attributes.
|
663
|
-
character =
|
663
|
+
character = charOf(@button[@current_button][x])
|
664
664
|
|
665
665
|
# Add the character into the window.
|
666
666
|
@win.mvwaddch(@box_height - 2, @button_pos[@current_button] + x,
|
@@ -668,7 +668,7 @@ module CDK
|
|
668
668
|
end
|
669
669
|
|
670
670
|
# Refresh the window.
|
671
|
-
|
671
|
+
wrefresh
|
672
672
|
end
|
673
673
|
|
674
674
|
# This sets the background attribute of the widget.
|
@@ -765,7 +765,7 @@ module CDK
|
|
765
765
|
# Box it if we have to.
|
766
766
|
if @box
|
767
767
|
Draw.drawObjBox(@win, self)
|
768
|
-
|
768
|
+
wrefresh
|
769
769
|
end
|
770
770
|
|
771
771
|
# Draw the separation line.
|
@@ -808,5 +808,75 @@ module CDK
|
|
808
808
|
def object_type
|
809
809
|
:VIEWER
|
810
810
|
end
|
811
|
+
|
812
|
+
private
|
813
|
+
|
814
|
+
# This function checks to see if a link has been requested
|
815
|
+
def check_for_link (line, filename)
|
816
|
+
f_pos = 0
|
817
|
+
x = 3
|
818
|
+
if line.nil?
|
819
|
+
return -1
|
820
|
+
end
|
821
|
+
|
822
|
+
# Strip out the filename.
|
823
|
+
if line[0] == L_MARKER && line[1] == 'F' && line[2] == '='
|
824
|
+
while x < line.size
|
825
|
+
if line[x] == R_MARKER
|
826
|
+
break
|
827
|
+
end
|
828
|
+
if f_pos < CDK_PATHMAX
|
829
|
+
filename << line[x]
|
830
|
+
f_pos += 1
|
831
|
+
end
|
832
|
+
x += 1
|
833
|
+
end
|
834
|
+
end
|
835
|
+
return f_pos != 0
|
836
|
+
end
|
837
|
+
|
838
|
+
# This allows the user to view information.
|
839
|
+
def self.viewInfo(screen, title, info, count, buttons, button_count,
|
840
|
+
interpret)
|
841
|
+
selected = -1
|
842
|
+
|
843
|
+
# Create the file viewer to view the file selected.
|
844
|
+
viewer = CDK::VIEWER.new(screen, CDK::CENTER, CDK::CENTER, -6, -16,
|
845
|
+
buttons, button_count, Ncurses::A_REVERSE, true, true)
|
846
|
+
|
847
|
+
# Set up the viewer title, and the contents to the widget.
|
848
|
+
viewer.set(title, info, count, Ncurses::A_REVERSE, interpret, true, true)
|
849
|
+
|
850
|
+
# Activate the viewer widget.
|
851
|
+
selected = viewer.activate([])
|
852
|
+
|
853
|
+
# Make sure they exited normally.
|
854
|
+
if viewer.exit_type != :NORMAL
|
855
|
+
viewer.destroy
|
856
|
+
return -1
|
857
|
+
end
|
858
|
+
|
859
|
+
# Clean up and return the button index selected
|
860
|
+
viewer.destroy
|
861
|
+
return selected
|
862
|
+
end
|
863
|
+
|
864
|
+
# This allows the user to view a file.
|
865
|
+
def self.viewFile(screen, title, filename, buttons, button_count)
|
866
|
+
info = []
|
867
|
+
result = 0
|
868
|
+
|
869
|
+
# Open the file and read the contents.
|
870
|
+
lines = CDK.readFile(filename, info)
|
871
|
+
|
872
|
+
# If we couldn't read the file, return an error.
|
873
|
+
if lines == -1
|
874
|
+
result = lines
|
875
|
+
else
|
876
|
+
result = self.viewInfo(screen, title, info, lines, buttons,
|
877
|
+
button_count, true)
|
878
|
+
end
|
879
|
+
return result
|
880
|
+
end
|
811
881
|
end
|
812
882
|
end
|