rndk 0.0.1 → 0.1.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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/demos/appointment.rb +40 -25
  3. data/demos/clock.rb +22 -11
  4. data/demos/fileview.rb +141 -0
  5. data/examples/01-hello-world.rb +1 -2
  6. data/examples/02-colors.rb +58 -0
  7. data/examples/03-markup.rb +70 -0
  8. data/examples/04-quick-widgets.rb +72 -0
  9. data/examples/05-position-widget.rb +3 -6
  10. data/examples/calendar.rb +104 -0
  11. data/examples/scroll.rb +106 -0
  12. data/lib/rndk/alphalist.rb +14 -14
  13. data/lib/rndk/button.rb +21 -21
  14. data/lib/rndk/buttonbox.rb +18 -18
  15. data/lib/rndk/calendar.rb +333 -240
  16. data/lib/rndk/core/color.rb +136 -0
  17. data/lib/rndk/core/display.rb +23 -12
  18. data/lib/rndk/core/draw.rb +32 -26
  19. data/lib/rndk/core/markup.rb +561 -0
  20. data/lib/rndk/core/quick_widgets.rb +232 -12
  21. data/lib/rndk/core/screen.rb +16 -17
  22. data/lib/rndk/core/utils.rb +143 -0
  23. data/lib/rndk/core/widget.rb +133 -92
  24. data/lib/rndk/dialog.rb +17 -17
  25. data/lib/rndk/entry.rb +21 -21
  26. data/lib/rndk/fselect.rb +16 -16
  27. data/lib/rndk/graph.rb +10 -10
  28. data/lib/rndk/histogram.rb +10 -10
  29. data/lib/rndk/itemlist.rb +20 -20
  30. data/lib/rndk/label.rb +66 -45
  31. data/lib/rndk/marquee.rb +10 -10
  32. data/lib/rndk/matrix.rb +27 -27
  33. data/lib/rndk/mentry.rb +22 -22
  34. data/lib/rndk/menu.rb +14 -14
  35. data/lib/rndk/radio.rb +19 -19
  36. data/lib/rndk/scale.rb +21 -21
  37. data/lib/rndk/scroll.rb +19 -19
  38. data/lib/rndk/scroller.rb +2 -0
  39. data/lib/rndk/selection.rb +20 -20
  40. data/lib/rndk/slider.rb +21 -21
  41. data/lib/rndk/swindow.rb +20 -20
  42. data/lib/rndk/template.rb +21 -21
  43. data/lib/rndk/version.rb +1 -1
  44. data/lib/rndk/viewer.rb +18 -18
  45. data/lib/rndk.rb +99 -777
  46. data/rndk.gemspec +1 -1
  47. metadata +12 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5b6103e3b2539bf72321942974536d2688cdf41
4
- data.tar.gz: 5890e72b066792bf7c11e0810aa6fec292c287d8
3
+ metadata.gz: c8f9ad279e8103fa755fa296a6ce77f841d44447
4
+ data.tar.gz: 645cac649bc64fc804541c71868800aa28b172e4
5
5
  SHA512:
6
- metadata.gz: 4236e304d133df93247638b65dba122a1b434f6934f6635e4de784aa169696e773c874efdcb2835713390ee10e7c683b53a71594d9d1eb8b8f01d26d5a3d5af5
7
- data.tar.gz: 18585b599021f220cc26fb9e2127b04727ef7d757b965be78b8e33d66ea27e3ef11f83a0f8013d53cd01b733eb7bc88925a9a40539ffbccf6b7647a946d0e5ec
6
+ metadata.gz: 66e6a0f5bdda584d982e13ecb89643c09f0acc07061c9de05912ecdaff70abf22163d87eba05fd4405d5fbff2672e75188cf07d37a7a22d121a65386612f5a12
7
+ data.tar.gz: 6ab7a46f6aa062a58d3b79a7620665eae38e1b0f6bfbeff64eaa4fd31a78d5dd700b5c9845789b12fda15c7ca77a27e8e8a2976338e1ebf1ee6f3d319b46f457
data/demos/appointment.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
+ # Note: This is not for beginners! Check out the examples/
4
+ # before adventuring into the demos/ realm!
5
+ #
3
6
  # Shows a book where you can create appointments of different
4
7
  # kinds, save and restore them on a file.
5
8
  #
@@ -40,8 +43,8 @@ class Appointment
40
43
  lines = []
41
44
 
42
45
  # Read the appointment file.
43
- lines_read = RNDK.readFile(filename, lines)
44
- if lines_read == -1
46
+ lines_read = RNDK.read_file(filename, lines)
47
+ if lines_read == nil
45
48
  app_info.count = 0
46
49
  return
47
50
  end
@@ -114,14 +117,13 @@ class Appointment
114
117
  readAppointmentFile(filename, appointment_info)
115
118
 
116
119
  # Set up RNDK
117
- curses_win = Ncurses.initscr
118
- rndkscreen = RNDK::Screen.new(curses_win)
120
+ rndkscreen = RNDK::Screen.new
119
121
 
120
122
  # Set up RNDK colors
121
- RNDK::Draw.initRNDKColor
123
+ RNDK::Color.init
122
124
 
123
125
  # Create the calendar widget.
124
- calendar = RNDK::CALENDAR.new(rndkscreen,
126
+ calendar = RNDK::Calendar.new(rndkscreen,
125
127
  RNDK::CENTER,
126
128
  RNDK::CENTER,
127
129
  title, day, month, year,
@@ -130,7 +132,6 @@ class Appointment
130
132
 
131
133
  # Is the widget nil?
132
134
  if calendar.nil?
133
- rndkscreen.destroy
134
135
  RNDK::Screen.end_rndk
135
136
 
136
137
  puts "Cannot create the calendar. Is the window too small?"
@@ -148,8 +149,15 @@ class Appointment
148
149
 
149
150
  # Create the itemlist widget.
150
151
  itemlist = RNDK::ITEMLIST.new(calendar.screen,
151
- RNDK::CENTER, RNDK::CENTER, '', 'Select Appointment Type: ',
152
- items, items.size, 0, true, false)
152
+ RNDK::CENTER,
153
+ RNDK::CENTER,
154
+ '',
155
+ 'Select Appointment Type: ',
156
+ items,
157
+ items.size,
158
+ 0,
159
+ true,
160
+ false)
153
161
 
154
162
  # Get the appointment type from the user.
155
163
  selection = itemlist.activate([])
@@ -167,10 +175,19 @@ class Appointment
167
175
  marker = Appointment::GPAppointmentAttributes[selection]
168
176
 
169
177
  # Create the entry field for the description.
170
- entry = RNDK::ENTRY.new(calendar.screen, RNDK::CENTER, RNDK::CENTER,
171
- '<C>Enter a description of the appointment.',
172
- 'Description: ', Ncurses::A_NORMAL, '.'.ord, :MIXED, 40, 1, 512,
173
- true, false)
178
+ entry = RNDK::ENTRY.new(calendar.screen,
179
+ RNDK::CENTER,
180
+ RNDK::CENTER,
181
+ '<C>Enter a description of the appointment.',
182
+ 'Description: ',
183
+ Ncurses::A_NORMAL,
184
+ '.'.ord,
185
+ :MIXED,
186
+ 40,
187
+ 1,
188
+ 512,
189
+ true,
190
+ false)
174
191
 
175
192
  # Get the description.
176
193
  description = entry.activate([])
@@ -275,7 +292,7 @@ class Appointment
275
292
  end
276
293
 
277
294
  # Create the label widget
278
- label = RNDK::LABEL.new(calendar.screen, RNDK::CENTER, RNDK::CENTER, mesg, mesg.size, true, false)
295
+ label = RNDK::LABEL.new(calendar.screen, RNDK::CENTER, RNDK::CENTER, mesg, true, false)
279
296
  label.draw(label.box)
280
297
  label.wait(' ')
281
298
  label.destroy
@@ -293,17 +310,17 @@ class Appointment
293
310
  " '?' displays appointment for selected day",
294
311
  " 'enter' or 'tab' quits"]
295
312
 
296
- rndkscreen.popupLabel msg
313
+ rndkscreen.popup_label msg
297
314
  end
298
315
 
299
316
  # Now we bind actions to the calendar.
300
317
  # Create a key binding to mark days on the calendar.
301
- calendar.bind(:CALENDAR, 'm', create_calendar_mark_cb, appointment_info)
302
- calendar.bind(:CALENDAR, 'M', create_calendar_mark_cb, appointment_info)
303
- calendar.bind(:CALENDAR, 'r', remove_calendar_mark_cb, appointment_info)
304
- calendar.bind(:CALENDAR, 'R', remove_calendar_mark_cb, appointment_info)
305
- calendar.bind(:CALENDAR, '?', display_calendar_mark_cb, appointment_info)
306
- calendar.bind(:CALENDAR, 'h', show_help, nil)
318
+ calendar.bind(:calendar, 'm', create_calendar_mark_cb, appointment_info)
319
+ calendar.bind(:calendar, 'M', create_calendar_mark_cb, appointment_info)
320
+ calendar.bind(:calendar, 'r', remove_calendar_mark_cb, appointment_info)
321
+ calendar.bind(:calendar, 'R', remove_calendar_mark_cb, appointment_info)
322
+ calendar.bind(:calendar, '?', display_calendar_mark_cb, appointment_info)
323
+ calendar.bind(:calendar, 'h', show_help, nil)
307
324
 
308
325
  # Set all the appointments read from the file.
309
326
  appointment_info.appointment.each do |appointment|
@@ -316,17 +333,15 @@ class Appointment
316
333
  end
317
334
 
318
335
  # Draw the calendar widget.
319
- calendar.draw(calendar.box)
336
+ calendar.draw calendar.box
320
337
 
321
338
  # Let the user play with the widget.
322
- calendar.activate([])
339
+ calendar.activate
323
340
 
324
341
  # Save the appointment information.
325
342
  Appointment.saveAppointmentFile(filename, appointment_info)
326
343
 
327
344
  # Clean up.
328
- calendar.destroy
329
- rndkscreen.destroy
330
345
  RNDK::Screen.end_rndk
331
346
  end
332
347
  end
data/demos/clock.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
+ # Note: This is not for beginners! Check out the examples/
4
+ # before adventuring into the demos/ realm!
5
+ #
3
6
  # Shows a colored clock on the screen according to
4
7
  # current system time.
5
8
  # Press any key to exit.
@@ -8,20 +11,19 @@ require 'rndk/label'
8
11
 
9
12
  begin
10
13
  # Set up RNDK
11
- curses_win = Ncurses.initscr
12
- rndkscreen = RNDK::Screen.new curses_win
13
- RNDK::Draw.initRNDKColor
14
+ rndkscreen = RNDK::Screen.new
15
+ RNDK::Color.init
14
16
 
15
17
  # Initial time string
16
18
  mesg = ['</1/B>HH:MM:SS']
17
19
 
18
20
  # Declare the labels.
19
- label = RNDK::LABEL.new(rndkscreen, RNDK::CENTER, RNDK::CENTER, mesg, 1, true, true)
21
+ label = RNDK::LABEL.new(rndkscreen, RNDK::CENTER, RNDK::CENTER, mesg, true, true)
20
22
 
21
23
  # Woops, something bad happened
22
24
  if label.nil?
23
25
  rndkscreen.destroy
24
- RNDK.end_rndk
26
+ RNDK::Screen.end_rndk
25
27
 
26
28
  puts "Cannot create the label. Is the window too small?"
27
29
  exit 1
@@ -33,7 +35,11 @@ begin
33
35
  # Will wait 50ms before getting input
34
36
  Ncurses.wtimeout(label.screen.window, 50)
35
37
 
36
- begin
38
+ loop do
39
+ # Will go on until the user presses something
40
+ char = Ncurses.wgetch label.screen.window
41
+ break unless (char == Ncurses::ERR)
42
+
37
43
  current_time = Time.now.getlocal
38
44
 
39
45
  # Formatting time string.
@@ -41,16 +47,21 @@ begin
41
47
  mesg = [str]
42
48
 
43
49
  # Set the label contents
44
- label.set(mesg, 1, label.box)
50
+ label.set(mesg, label.box)
45
51
 
46
52
  # Draw the label and sleep
47
53
  label.draw(label.box)
48
54
  Ncurses.napms(500)
49
- end while (Ncurses.wgetch(label.screen.window)) == Ncurses::ERR
55
+ end
50
56
 
51
- # Clean up
52
- label.destroy
53
- rndkscreen.destroy
54
57
  RNDK::Screen.end_rndk
58
+
59
+ # In case something goes wrong
60
+ rescue Exception => e
61
+ RNDK::Screen.end_rndk
62
+
63
+ puts e
64
+ puts e.inspect
65
+ puts e.backtrace
55
66
  end
56
67
 
data/demos/fileview.rb ADDED
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Note: This is not for beginners! Check out the examples/
4
+ # before adventuring into the demos/ realm!
5
+ #
6
+ # Shows a FSelect Widget, asking you to pick a file.
7
+ # Then, a Viewer Widget, showing that file's contents.
8
+ #
9
+ require 'optparse'
10
+ require 'rndk/fselect'
11
+
12
+ begin
13
+ filename = ''
14
+ directory = '.'
15
+
16
+ # Create the viewer buttons.
17
+ button = [
18
+ '</5><OK><!5>',
19
+ '</5><Cancel><!5>',
20
+ ]
21
+
22
+ # Set up RNDK and Colors
23
+ rndkscreen = RNDK::Screen.new
24
+ RNDK::Color.init
25
+
26
+ # Get the filename
27
+ if filename == ''
28
+ title = '<C>Pick a file.'
29
+ label = 'File: '
30
+ fselect = RNDK::FSELECT.new(rndkscreen,
31
+ RNDK::CENTER,
32
+ RNDK::CENTER,
33
+ 20,
34
+ 65,
35
+ title,
36
+ label,
37
+ Ncurses::A_NORMAL,
38
+ '_',
39
+ Ncurses::A_REVERSE,
40
+ '</5>', '</48>', '</N>', '</N>',
41
+ true,
42
+ false)
43
+
44
+ # Set the starting directory. This is not necessary because when
45
+ # the file selector starts it uses the present directory as a default.
46
+ fselect.set(directory,
47
+ Ncurses::A_NORMAL,
48
+ '.',
49
+ Ncurses::A_REVERSE,
50
+ '</5>', '</48>',
51
+ '</N>', '</N>',
52
+ fselect.box)
53
+
54
+ # Activate the file selector.
55
+ filename = fselect.activate([])
56
+
57
+ # Check how the person exited from the widget.
58
+ if fselect.exit_type == :ESCAPE_HIT
59
+ # pop up a message for the user.
60
+ mesg = [
61
+ '<C>Escape hit. No file selected.',
62
+ '',
63
+ '<C>Press any key to continue.',
64
+ ]
65
+ rndkscreen.popup_label(mesg, 3)
66
+
67
+ fselect.destroy
68
+
69
+ RNDK::Screen.end_rndk
70
+ exit
71
+ end
72
+ fselect.destroy
73
+ end
74
+
75
+ # Create the file viewer to view the file selected.
76
+ example = RNDK::VIEWER.new(rndkscreen,
77
+ RNDK::CENTER,
78
+ RNDK::CENTER,
79
+ 20,
80
+ -2,
81
+ button,
82
+ 2,
83
+ Ncurses::A_REVERSE,
84
+ true,
85
+ false)
86
+
87
+ # Could we create the viewer widget?
88
+ if example.nil?
89
+ RNDK::Screen.end_rndk
90
+
91
+ puts "Cannot create viewer. Is the window too small?"
92
+ exit 1
93
+ end
94
+
95
+ # Open the file and read the contents.
96
+
97
+ info = []
98
+ lines = RNDK.read_file(filename, info)
99
+ if lines == -1
100
+ puts "Could not open %s" % [filename]
101
+ exit 1
102
+ end
103
+
104
+ # Set up the viewer title and the contents to the widget.
105
+ title = '<C></B/22>%20s<!22!B> (If screen is messed up, press Ctrl+L)' % filename
106
+ example.set(title, info, lines, Ncurses::A_REVERSE, true, true, true)
107
+
108
+ # Activate the viewer widget.
109
+ selected = example.activate([])
110
+
111
+ # Check how the person exited from the widget.
112
+ if example.exit_type == :ESCAPE_HIT
113
+ mesg = [
114
+ '<C>Escape hit. No Button selected.',
115
+ '',
116
+ '<C>Press any key to continue.',
117
+ ]
118
+ rndkscreen.popup_label mesg
119
+
120
+ elsif example.exit_type == :NORMAL
121
+ mesg = [
122
+ '<C>You selected button %d' % [selected],
123
+ '',
124
+ '<C>Press any key to continue.',
125
+ ]
126
+ rndkscreen.popup_label mesg
127
+ end
128
+
129
+ # Clean up
130
+ RNDK::Screen.end_rndk
131
+
132
+ # In case something goes wrong
133
+ rescue Exception => e
134
+ RNDK::Screen.end_rndk
135
+
136
+ puts e
137
+ puts e.inspect
138
+ puts e.backtrace
139
+ end
140
+
141
+
@@ -10,7 +10,7 @@ begin
10
10
  rndkscreen = RNDK::Screen.new
11
11
 
12
12
  # Set up RNDK colors
13
- RNDK::Draw.initRNDKColor
13
+ RNDK::Color.init
14
14
 
15
15
  # Set the labels' content.
16
16
  # (RNDK supports a "markup" string, with colors
@@ -28,7 +28,6 @@ begin
28
28
  RNDK::CENTER, # x
29
29
  RNDK::CENTER, # y
30
30
  mesg, # message
31
- 4, # lines count
32
31
  true, # box?
33
32
  true) # shadow?
34
33
 
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Shows how to use colors on your daily life,
4
+ # plus this beautiful Calendar Widget!
5
+ #
6
+ require 'rndk/calendar'
7
+
8
+ begin
9
+ # Always initialize and save the scren
10
+ screen = RNDK::Screen.new
11
+ RNDK::Color.init
12
+
13
+ # Disabling the blinking cursor
14
+ Ncurses.curs_set 0
15
+
16
+ # Welcome to our Calendar Widget!
17
+ #
18
+ # We call Colors attributes - or attrib.
19
+ # We use them as:
20
+ #
21
+ # RNDK::Color[:foreground_background]
22
+ #
23
+ # If you want to use your terminal's default
24
+ # background, simply do:
25
+ #
26
+ # RNDK::Color[:foreground]
27
+ #
28
+ # On the calendar, if we supply 0 as the
29
+ # day/month/year it'll use the current day/month/year.
30
+ cal = RNDK::Calendar.new(screen,
31
+ RNDK::CENTER, # x
32
+ RNDK::CENTER, # y
33
+ "Colored calendar", # title
34
+ 0, # day
35
+ 0, # month
36
+ 0, # year
37
+ RNDK::Color[:red_yellow], # day attrib
38
+ RNDK::Color[:cyan_white], # month attrib
39
+ RNDK::Color[:black_cyan], # year attrib
40
+ RNDK::Color[:red], # highlight
41
+ true, # has box?
42
+ false) # has shadow?
43
+ cal.activate []
44
+
45
+ RNDK::Screen.end_rndk
46
+
47
+ # Assuring we end RNDK in case something
48
+ # bad happens.
49
+ # You'll see this a lot on the examples.
50
+ rescue Exception => e
51
+ RNDK::Screen.end_rndk
52
+
53
+ puts e
54
+ puts e.inspect
55
+ puts e.backtrace
56
+ exit 1
57
+ end
58
+
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Shows all the color pairs available on RNDK.
4
+ # Also, how to use RNDK's color markup on strings.
5
+ #
6
+ # Colors on text are achieved by foreground/background
7
+ # color pairs. Run the example now.
8
+ #
9
+ # As you just say, they go from 1 to 80, going on the
10
+ # following order in sets of 8 and from background to
11
+ # foreground:
12
+ #
13
+ # 1. white
14
+ # 2. red
15
+ # 3. green
16
+ # 4. yellow
17
+ # 5. blue
18
+ # 6. magenta
19
+ # 7. cyan
20
+ # 8. black
21
+ #
22
+ # Which means that 4 is white on yellow, 11 is red on green
23
+ # and 44 is magenta on yellow.
24
+ #
25
+ # 65 to 72 are the default terminal's foreground over
26
+ # color backgrounds and 73 to 80 are the colors over
27
+ # the terminal's default background.
28
+
29
+ require 'rndk/label'
30
+
31
+ begin
32
+ # Starting RNDK and Color support
33
+ screen = RNDK::Screen.new
34
+ RNDK::Color.init
35
+
36
+ # Don't get scared, we're simply showing off all 80 color
37
+ # pairs available.
38
+ #
39
+ # * To start a color, do `</XX>`, where XX is a color pair
40
+ # from 1 to 80.
41
+ # * To stop it, do `<!XX>`, where XX is the same as above.
42
+
43
+ msg = []
44
+ msg << "</1>Pair01<!1> </2>Pair02<!2> </3>Pair03<!3> </4>Pair04<!4> </5>Pair05<!5> </6>Pair06<!6> </7>Pair07<!7> </8>Pair08<!8>"
45
+ msg << "</9>Pair09<!9> </10>Pair10<!10> </11>Pair11<!11> </12>Pair12<!12> </13>Pair13<!13> </14>Pair14<!14> </15>Pair15<!15> </16>Pair16<!16>"
46
+ msg << "</17>Pair17<!17> </18>Pair18<!18> </19>Pair19<!19> </20>Pair20<!20> </21>Pair21<!21> </22>Pair22<!22> </23>Pair23<!23> </24>Pair24<!24>"
47
+ msg << "</25>Pair25<!25> </26>Pair26<!26> </27>Pair27<!27> </28>Pair28<!28> </29>Pair29<!29> </30>Pair30<!30> </31>Pair31<!31> </32>Pair32<!32>"
48
+ msg << "</33>Pair33<!33> </34>Pair34<!34> </35>Pair35<!35> </36>Pair36<!36> </37>Pair37<!37> </38>Pair38<!38> </39>Pair39<!39> </40>Pair40<!40>"
49
+ msg << "</41>Pair41<!41> </42>Pair42<!42> </43>Pair43<!43> </44>Pair44<!44> </45>Pair45<!45> </46>Pair46<!46> </47>Pair47<!47> </48>Pair48<!48>"
50
+ msg << "</49>Pair49<!49> </50>Pair50<!50> </51>Pair51<!51> </52>Pair52<!52> </53>Pair53<!53> </54>Pair54<!54> </55>Pair55<!55> </56>Pair56<!56>"
51
+ msg << "</57>Pair57<!57> </58>Pair58<!58> </59>Pair59<!59> </60>Pair60<!60> </61>Pair61<!61> </62>Pair62<!62> </63>Pair63<!63> </64>Pair64<!64>"
52
+ msg << "</65>Pair65<!65> </66>Pair66<!66> </67>Pair67<!67> </68>Pair68<!68> </69>Pair69<!69> </70>Pair70<!70> </71>Pair71<!71> </72>Pair72<!72>"
53
+ msg << "</73>Pair73<!73> </74>Pair74<!74> </75>Pair75<!75> </76>Pair76<!76> </77>Pair77<!77> </78>Pair78<!78> </79>Pair79<!79> </80>Pair80<!80>"
54
+ msg << ""
55
+ msg << "<C>All RNDK color pairs (press 'q' to quit)"
56
+
57
+ # Show label with that huge message.
58
+ label = RNDK::LABEL.new(screen,
59
+ RNDK::CENTER, # x
60
+ 1, # y
61
+ msg,
62
+ true, # has box?
63
+ true) # has shadow?
64
+
65
+ screen.refresh
66
+ label.wait('q') # wait for key to be pressed
67
+
68
+ RNDK::Screen.end_rndk
69
+ end
70
+
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This shows you how easy it is to use the Quick Widgets --
4
+ # temporary pre-made Widgets with a single action.
5
+ #
6
+ # They're automatically included within `require 'rndk'`.
7
+ require 'rndk'
8
+
9
+ begin
10
+ screen = RNDK::Screen.new
11
+
12
+ # Popup label
13
+ msg = ["Hello, there!",
14
+ "Lemme show you some pre-made widgets",
15
+ "This is the popup_label",
16
+ "(press any key to continue)"
17
+ ]
18
+ screen.popup_label msg
19
+
20
+ # Popup dialog
21
+ msg = ["Now this is the popup_dialog",
22
+ "It returns the index of which button",
23
+ "you select"
24
+ ]
25
+ buttons = ["Press me",
26
+ "No, press me",
27
+ "No, me"
28
+ ]
29
+ choice = screen.popup_dialog(msg, buttons)
30
+
31
+ screen.popup_label ["You selected button no #{choice}"]
32
+
33
+ # View file
34
+ title = "view_file (If something bad happens, press Ctrl+L)"
35
+ buttons = ["I'm impressed",
36
+ "Maybe impressed",
37
+ "Not impressed"
38
+ ]
39
+ screen.view_file(title, __FILE__, buttons)
40
+
41
+ # Get list index
42
+ title = "get_list_index example"
43
+ msg = ["Apples",
44
+ "Oranges",
45
+ "Avocados",
46
+ "Watermelons"]
47
+
48
+ screen.get_list_index(title, msg, true)
49
+
50
+ # Get string
51
+ title = "get_string example"
52
+ msg = "Finally, the last example! What did you thing of it? "
53
+
54
+ value = screen.get_string(title, msg, "great")
55
+
56
+ screen.popup_label ["You just said '#{value}'"]
57
+
58
+ # Finally, the end!
59
+ RNDK::Screen.end_rndk
60
+
61
+ puts "...and as always, thanks for watching!"
62
+
63
+ # Just in case something bad happens.
64
+ rescue Exception => e
65
+ RNDK::Screen.end_rndk
66
+
67
+ puts e
68
+ puts e.inspect
69
+ puts e.backtrace
70
+ exit 1
71
+ end
72
+
@@ -40,7 +40,7 @@ begin
40
40
  rndkscreen = RNDK::Screen.new(curses_win)
41
41
 
42
42
  # Set up RNDK colors
43
- RNDK::Draw.initRNDKColor
43
+ RNDK::Color.init
44
44
 
45
45
  # Create the entry field widget.
46
46
  entry = RNDK::ENTRY.new(rndkscreen,
@@ -79,7 +79,7 @@ begin
79
79
  "",
80
80
  "<C>Press any key to continue."
81
81
  ]
82
- rndkscreen.popupLabel mesg
82
+ rndkscreen.popup_label mesg
83
83
 
84
84
  elsif entry.exit_type == :NORMAL
85
85
  mesg = [
@@ -88,12 +88,9 @@ begin
88
88
  "",
89
89
  "<C>Press any key to continue."
90
90
  ]
91
- rndkscreen.popupLabel mesg
91
+ rndkscreen.popup_label mesg
92
92
  end
93
93
 
94
- # Clean up
95
- entry.destroy
96
- rndkscreen.destroy
97
94
  RNDK::Screen.end_rndk
98
95
 
99
96
  # Just in case something bad happens.