rbcurse 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/CHANGELOG +1570 -0
  2. data/History.txt +6 -0
  3. data/Manifest.txt +54 -0
  4. data/README.txt +304 -0
  5. data/Rakefile +28 -0
  6. data/examples/qdfilechooser.rb +68 -0
  7. data/examples/rfe.rb +853 -0
  8. data/examples/rfe_renderer.rb +69 -0
  9. data/examples/test1.rb +242 -0
  10. data/examples/test2.rb +498 -0
  11. data/examples/testcombo.rb +95 -0
  12. data/examples/testkeypress.rb +61 -0
  13. data/examples/testmenu.rb +105 -0
  14. data/examples/testtable.rb +266 -0
  15. data/examples/testtabp.rb +106 -0
  16. data/examples/testtodo.rb +532 -0
  17. data/examples/viewtodo.rb +512 -0
  18. data/lib/rbcurse/action.rb +31 -0
  19. data/lib/rbcurse/applicationheader.rb +57 -0
  20. data/lib/rbcurse/celleditor.rb +120 -0
  21. data/lib/rbcurse/checkboxcellrenderer.rb +69 -0
  22. data/lib/rbcurse/colormap.rb +133 -0
  23. data/lib/rbcurse/comboboxcellrenderer.rb +45 -0
  24. data/lib/rbcurse/defaultlistselectionmodel.rb +49 -0
  25. data/lib/rbcurse/keylabelprinter.rb +143 -0
  26. data/lib/rbcurse/listcellrenderer.rb +99 -0
  27. data/lib/rbcurse/listkeys.rb +33 -0
  28. data/lib/rbcurse/listscrollable.rb +216 -0
  29. data/lib/rbcurse/listselectable.rb +67 -0
  30. data/lib/rbcurse/mapper.rb +108 -0
  31. data/lib/rbcurse/orderedhash.rb +77 -0
  32. data/lib/rbcurse/rcombo.rb +243 -0
  33. data/lib/rbcurse/rdialogs.rb +183 -0
  34. data/lib/rbcurse/rform.rb +845 -0
  35. data/lib/rbcurse/rinputdataevent.rb +36 -0
  36. data/lib/rbcurse/rlistbox.rb +804 -0
  37. data/lib/rbcurse/rmenu.rb +666 -0
  38. data/lib/rbcurse/rmessagebox.rb +325 -0
  39. data/lib/rbcurse/rpopupmenu.rb +754 -0
  40. data/lib/rbcurse/rtabbedpane.rb +259 -0
  41. data/lib/rbcurse/rtable.rb +1296 -0
  42. data/lib/rbcurse/rtextarea.rb +673 -0
  43. data/lib/rbcurse/rtextview.rb +335 -0
  44. data/lib/rbcurse/rwidget.rb +1731 -0
  45. data/lib/rbcurse/scrollable.rb +301 -0
  46. data/lib/rbcurse/selectable.rb +94 -0
  47. data/lib/rbcurse/table/tablecellrenderer.rb +85 -0
  48. data/lib/rbcurse/table/tabledatecellrenderer.rb +102 -0
  49. data/lib/rbcurse.rb +7 -0
  50. data/lib/ver/keyboard.rb +150 -0
  51. data/lib/ver/keyboard2.rb +170 -0
  52. data/lib/ver/ncurses.rb +102 -0
  53. data/lib/ver/window.rb +369 -0
  54. data/test/test_rbcurse.rb +0 -0
  55. metadata +118 -0
@@ -0,0 +1,183 @@
1
+ =begin
2
+ * Name: dialogs so user can do basic stuff in one line.
3
+ * Description:
4
+ * Author: rkumar
5
+
6
+ --------
7
+ * Date: 2008-12-30 12:22
8
+ * License:
9
+ Same as Ruby's License (http://www.ruby-lang.org/LICENSE.txt)
10
+
11
+ TODO:
12
+ Add one get_string(message, len, regex ...)
13
+ Add select_one (message, values, default)
14
+ =end
15
+ require 'rubygems'
16
+ require 'ncurses'
17
+ require 'logger'
18
+ require 'rbcurse/rwidget'
19
+ require 'rbcurse/rmessagebox'
20
+
21
+ ##
22
+ # pops up a modal box with a message and an OK button.
23
+ # No return value.
24
+ # Usage:
25
+ # alert("You did not enter anything!")
26
+ # alert("You did not enter anything!", "title"=>"Wake Up")
27
+ # alert("You did not enter anything!", {"title"=>"Wake Up", "bgcolor"=>"blue", "color"=>"white"})
28
+ # block currently ignored. don't know what to do, can't pass it to MB since alread sending in a block
29
+ def alert text, config={}, &block
30
+ title = config['title'] || "Alert"
31
+ #instance_eval &block if block_given?
32
+ mb = RubyCurses::MessageBox.new nil, config do
33
+ title title
34
+ message text
35
+ button_type :ok
36
+ end
37
+ end
38
+ def confirm text, config={}, &block
39
+ title = config['title'] || "Confirm"
40
+ #instance_eval &block if block_given?
41
+ mb = RubyCurses::MessageBox.new nil, config do
42
+ title title
43
+ message text
44
+ button_type :yes_no
45
+ end
46
+ return mb.selected_index == 0 ? :YES : :NO
47
+ end
48
+
49
+ ##
50
+ # allows user entry of a string.
51
+ # In config you may pass Field related properties such as chars_allowed, valid_regex, values, etc.
52
+ def get_string(message, len=20, default="", config={})
53
+ config["maxlen"]=len
54
+ title = config["title"] || "Input required"
55
+ mb = RubyCurses::MessageBox.new nil, config do
56
+ title title
57
+ message message
58
+ type :input
59
+ button_type :ok
60
+ default_value default
61
+ end
62
+ return mb.input_value
63
+ end
64
+
65
+ ##
66
+ # Added 2009-02-05 13:16
67
+ # get a string from user with some additional checkboxes and optionally supply default values
68
+ # Usage:
69
+ #sel, inp, hash = get_string_with_options("Enter a filter pattern", 20, "*", {"checkboxes" => ["case sensitive","reverse"], "checkbox_defaults"=>[true, false]})
70
+ # sel, inp, hash = get_string_with_options("Enter a filter pattern", 20, "*", {"checkboxes" => ["case sensitive","reverse"]})
71
+ # $log.debug " POPUP: #{sel}: #{inp}, #{hash['case sensitive']}, #{hash['reverse']}"
72
+ #
73
+ # @param: message to print,
74
+ # @param: length of entry field
75
+ # @param: default value of field
76
+ # @param: configuration of box or field
77
+ # checkboxes: array of strings to use as checkboxes
78
+ # checkbox_defaults : array of true/false default values for each cb
79
+ # @return: int 0 OK, 1 cancel pressed
80
+ # @return: string value entered
81
+ # @return: hash of strings and booleans for checkboxes and values
82
+ #
83
+ def get_string_with_options(message, len=20, default="", config={})
84
+ title = config["title"] || "Input required"
85
+ input_config = config["input_config"] || {}
86
+ checks = config["checkboxes"]
87
+ checkbox_defaults = config["checkbox_defaults"] || []
88
+
89
+ height = config["height"] || 1
90
+ display_length = config["display_length"] || 30
91
+
92
+ r = 3
93
+ c = 4
94
+ mform = RubyCurses::Form.new nil
95
+ message_label = RubyCurses::Label.new mform, {'text' => message, "name"=>"message_label","row" => r, "col" => c, "display_length" => display_length, "height" => height, "attr"=>"reverse"}
96
+
97
+ r += 1
98
+ input = RubyCurses::Field.new mform, input_config do
99
+ name "input"
100
+ row r
101
+ col c
102
+ display_length display_length
103
+ maxlen len
104
+ set_buffer default
105
+ end
106
+ if !checks.nil?
107
+ r += 2
108
+ checks.each_with_index do |cbtext,ix|
109
+ field = RubyCurses::CheckBox.new mform do
110
+ text cbtext
111
+ name cbtext
112
+ value checkbox_defaults[ix]||false
113
+ color 'black'
114
+ bgcolor 'white'
115
+ row r
116
+ col c
117
+ end
118
+ r += 1
119
+ end
120
+ end
121
+ radios = config["radiobuttons"]
122
+ if !radios.nil?
123
+ radio_default = config["radio_default"] || radios[0]
124
+ radio = RubyCurses::Variable.new radio_default
125
+ r += 2
126
+ radios.each_with_index do |cbtext,ix|
127
+ field = RubyCurses::RadioButton.new mform do
128
+ variable radio
129
+ text cbtext
130
+ value cbtext
131
+ color 'black'
132
+ bgcolor 'white'
133
+ row r
134
+ col c
135
+ end
136
+ r += 1
137
+ end
138
+ end
139
+ mb = RubyCurses::MessageBox.new mform do
140
+ title title
141
+ button_type :ok_cancel
142
+ default_button 0
143
+ end
144
+ hash = {}
145
+ if !checks.nil?
146
+ checks.each do |c|
147
+ hash[c] = mform.by_name[c].getvalue
148
+ end
149
+ end
150
+ hash["radio"] = radio.get_value unless radio.nil?
151
+ # returns button index (0 = OK), value of field, hash containing values of checkboxes
152
+ return mb.selected_index, mform.by_name['input'].getvalue, hash
153
+ end
154
+
155
+ =begin
156
+ http://www.kammerl.de/ascii/AsciiSignature.php
157
+ ___
158
+ |__ \
159
+ ) |
160
+ / /
161
+ |_|
162
+ (_)
163
+
164
+ _
165
+ | |
166
+ | |
167
+ | |
168
+ |_|
169
+ (_)
170
+
171
+
172
+ _____ _ _____
173
+ | __ \ | | / ____|
174
+ | |__) | _| |__ _ _ | | _ _ _ __ ___ ___ ___
175
+ | _ / | | | '_ \| | | | | | | | | | '__/ __|/ _ \/ __|
176
+ | | \ \ |_| | |_) | |_| | | |___| |_| | | \__ \ __/\__ \
177
+ |_| \_\__,_|_.__/ \__, | \_____\__,_|_| |___/\___||___/
178
+ __/ |
179
+ |___/
180
+
181
+ =end
182
+
183
+