rbcurse 0.1.3 → 1.1.1

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 (74) hide show
  1. data/CHANGELOG +126 -0
  2. data/Manifest.txt +53 -20
  3. data/README.markdown +423 -0
  4. data/Rakefile +3 -1
  5. data/examples/keytest.rb +177 -0
  6. data/examples/mpad2.rb +156 -0
  7. data/examples/newtesttabp.rb +121 -0
  8. data/examples/rfe.rb +48 -10
  9. data/examples/rfe_renderer.rb +4 -4
  10. data/examples/rvimsplit.rb +376 -0
  11. data/examples/sqlc.rb +97 -106
  12. data/examples/sqlm.rb +446 -0
  13. data/examples/test1.rb +4 -4
  14. data/examples/test2.rb +12 -12
  15. data/examples/testchars.rb +140 -0
  16. data/examples/testkeypress.rb +9 -4
  17. data/examples/testmulticomp.rb +72 -0
  18. data/examples/testscroller.rb +136 -0
  19. data/examples/testscrolllb.rb +86 -0
  20. data/examples/testscrollp.rb +87 -0
  21. data/examples/testscrollta.rb +80 -0
  22. data/examples/testscrolltable.rb +166 -0
  23. data/examples/testsplit.rb +87 -0
  24. data/examples/testsplit2.rb +123 -0
  25. data/examples/testsplit3.rb +215 -0
  26. data/examples/testsplit3_1.rb +244 -0
  27. data/examples/testsplit3a.rb +215 -0
  28. data/examples/testsplit3b.rb +237 -0
  29. data/examples/testsplitta.rb +148 -0
  30. data/examples/testsplittv.rb +142 -0
  31. data/examples/testsplittvv.rb +144 -0
  32. data/examples/testtable.rb +1 -1
  33. data/examples/testtabp.rb +3 -2
  34. data/examples/testtestw.rb +69 -0
  35. data/examples/testtodo.rb +5 -3
  36. data/examples/testtpane.rb +203 -0
  37. data/examples/testtpane2.rb +145 -0
  38. data/examples/testtpanetable.rb +199 -0
  39. data/examples/viewtodo.rb +5 -3
  40. data/lib/rbcurse.rb +1 -1
  41. data/lib/rbcurse/celleditor.rb +2 -2
  42. data/lib/rbcurse/colormap.rb +5 -5
  43. data/lib/rbcurse/defaultlistselectionmodel.rb +3 -3
  44. data/lib/rbcurse/io.rb +663 -0
  45. data/lib/rbcurse/listeditable.rb +306 -0
  46. data/lib/rbcurse/listkeys.rb +15 -15
  47. data/lib/rbcurse/listscrollable.rb +168 -27
  48. data/lib/rbcurse/mapper.rb +35 -13
  49. data/lib/rbcurse/rchangeevent.rb +28 -0
  50. data/lib/rbcurse/rform.rb +845 -0
  51. data/lib/rbcurse/rlistbox.rb +144 -34
  52. data/lib/rbcurse/rmessagebox.rb +10 -5
  53. data/lib/rbcurse/rmulticontainer.rb +325 -0
  54. data/lib/rbcurse/rmultitextview.rb +306 -0
  55. data/lib/rbcurse/rscrollform.rb +369 -0
  56. data/lib/rbcurse/rscrollpane.rb +511 -0
  57. data/lib/rbcurse/rsplitpane.rb +820 -0
  58. data/lib/rbcurse/rtabbedpane.rb +737 -109
  59. data/lib/rbcurse/rtabbedwindow.rb +326 -0
  60. data/lib/rbcurse/rtable.rb +220 -64
  61. data/lib/rbcurse/rtextarea.rb +340 -181
  62. data/lib/rbcurse/rtextview.rb +237 -101
  63. data/lib/rbcurse/rviewport.rb +203 -0
  64. data/lib/rbcurse/rwidget.rb +919 -95
  65. data/lib/rbcurse/scrollable.rb +7 -7
  66. data/lib/rbcurse/selectable.rb +4 -4
  67. data/lib/rbcurse/table/tablecellrenderer.rb +3 -0
  68. data/lib/rbcurse/undomanager.rb +181 -0
  69. data/lib/rbcurse/vieditable.rb +100 -0
  70. data/lib/ver/window.rb +471 -21
  71. metadata +66 -22
  72. data/README.txt +0 -312
  73. data/examples/testd.db +0 -0
  74. data/examples/todocsv.csv +0 -28
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbcurse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rahul Kumar
@@ -9,9 +9,19 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-04 00:00:00 +05:30
12
+ date: 2010-04-24 00:00:00 +05:30
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rubyforge
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.4
24
+ version:
15
25
  - !ruby/object:Gem::Dependency
16
26
  name: hoe
17
27
  type: :development
@@ -20,7 +30,7 @@ dependencies:
20
30
  requirements:
21
31
  - - ">="
22
32
  - !ruby/object:Gem::Version
23
- version: 2.3.3
33
+ version: 2.6.0
24
34
  version:
25
35
  description: Ruby curses widgets for easy application development
26
36
  email: sentinel.2001@gmx.com
@@ -31,29 +41,12 @@ extensions: []
31
41
  extra_rdoc_files:
32
42
  - History.txt
33
43
  - Manifest.txt
34
- - README.txt
35
44
  files:
36
45
  - CHANGELOG
37
46
  - History.txt
38
47
  - Manifest.txt
39
- - README.txt
48
+ - README.markdown
40
49
  - Rakefile
41
- - examples/qdfilechooser.rb
42
- - examples/rfe.rb
43
- - examples/rfe_renderer.rb
44
- - examples/sqlc.rb
45
- - examples/test1.rb
46
- - examples/test2.rb
47
- - examples/testcombo.rb
48
- - examples/testd.db
49
- - examples/testkeypress.rb
50
- - examples/testmenu.rb
51
- - examples/testtable.rb
52
- - examples/testtabp.rb
53
- - examples/testtodo.rb
54
- - examples/todocsv.csv
55
- - examples/viewtodo.rb
56
- - lib/rbcurse.rb
57
50
  - lib/rbcurse/action.rb
58
51
  - lib/rbcurse/applicationheader.rb
59
52
  - lib/rbcurse/celleditor.rb
@@ -61,34 +54,85 @@ files:
61
54
  - lib/rbcurse/colormap.rb
62
55
  - lib/rbcurse/comboboxcellrenderer.rb
63
56
  - lib/rbcurse/defaultlistselectionmodel.rb
57
+ - lib/rbcurse/io.rb
64
58
  - lib/rbcurse/keylabelprinter.rb
65
59
  - lib/rbcurse/listcellrenderer.rb
60
+ - lib/rbcurse/listeditable.rb
66
61
  - lib/rbcurse/listkeys.rb
67
62
  - lib/rbcurse/listscrollable.rb
68
63
  - lib/rbcurse/listselectable.rb
69
64
  - lib/rbcurse/mapper.rb
70
65
  - lib/rbcurse/orderedhash.rb
66
+ - lib/rbcurse/rchangeevent.rb
71
67
  - lib/rbcurse/rcombo.rb
72
68
  - lib/rbcurse/rdialogs.rb
69
+ - lib/rbcurse/rform.rb
73
70
  - lib/rbcurse/rinputdataevent.rb
74
71
  - lib/rbcurse/rlistbox.rb
75
72
  - lib/rbcurse/rmenu.rb
76
73
  - lib/rbcurse/rmessagebox.rb
74
+ - lib/rbcurse/rmulticontainer.rb
75
+ - lib/rbcurse/rmultitextview.rb
77
76
  - lib/rbcurse/rpopupmenu.rb
77
+ - lib/rbcurse/rscrollform.rb
78
+ - lib/rbcurse/rscrollpane.rb
79
+ - lib/rbcurse/rsplitpane.rb
78
80
  - lib/rbcurse/rtabbedpane.rb
81
+ - lib/rbcurse/rtabbedwindow.rb
79
82
  - lib/rbcurse/rtable.rb
80
83
  - lib/rbcurse/rtextarea.rb
81
84
  - lib/rbcurse/rtextview.rb
85
+ - lib/rbcurse/rviewport.rb
82
86
  - lib/rbcurse/rwidget.rb
83
87
  - lib/rbcurse/scrollable.rb
84
88
  - lib/rbcurse/selectable.rb
85
89
  - lib/rbcurse/table/tablecellrenderer.rb
86
90
  - lib/rbcurse/table/tabledatecellrenderer.rb
91
+ - lib/rbcurse/undomanager.rb
92
+ - lib/rbcurse/vieditable.rb
93
+ - lib/rbcurse.rb
87
94
  - lib/ver/keyboard.rb
88
95
  - lib/ver/keyboard2.rb
89
96
  - lib/ver/ncurses.rb
90
97
  - lib/ver/window.rb
91
- - test/test_rbcurse.rb
98
+ - examples/keytest.rb
99
+ - examples/mpad2.rb
100
+ - examples/newtesttabp.rb
101
+ - examples/qdfilechooser.rb
102
+ - examples/rfe.rb
103
+ - examples/rfe_renderer.rb
104
+ - examples/rvimsplit.rb
105
+ - examples/sqlc.rb
106
+ - examples/sqlm.rb
107
+ - examples/test1.rb
108
+ - examples/test2.rb
109
+ - examples/testchars.rb
110
+ - examples/testcombo.rb
111
+ - examples/testkeypress.rb
112
+ - examples/testmenu.rb
113
+ - examples/testmulticomp.rb
114
+ - examples/testscroller.rb
115
+ - examples/testscrolllb.rb
116
+ - examples/testscrollp.rb
117
+ - examples/testscrollta.rb
118
+ - examples/testscrolltable.rb
119
+ - examples/testsplit.rb
120
+ - examples/testsplit2.rb
121
+ - examples/testsplit3.rb
122
+ - examples/testsplit3_1.rb
123
+ - examples/testsplit3a.rb
124
+ - examples/testsplit3b.rb
125
+ - examples/testsplitta.rb
126
+ - examples/testsplittv.rb
127
+ - examples/testsplittvv.rb
128
+ - examples/testtable.rb
129
+ - examples/testtabp.rb
130
+ - examples/testtestw.rb
131
+ - examples/testtodo.rb
132
+ - examples/testtpane.rb
133
+ - examples/testtpane2.rb
134
+ - examples/testtpanetable.rb
135
+ - examples/viewtodo.rb
92
136
  has_rdoc: true
93
137
  homepage: http://rbcurse.rubyforge.org/
94
138
  post_install_message:
data/README.txt DELETED
@@ -1,312 +0,0 @@
1
- = rbcurse
2
-
3
- * http://totalrecall.wordpress.com << CORRECTED !!!
4
-
5
- * rbcurse on rubyforge: http://rbcurse.rubyforge.org/
6
-
7
- * See latest changes on http://github.com/rkumar/rbcurse/tree/master/CHANGELOG
8
-
9
- * Many working demos in examples folder, such as:
10
-
11
- * test2.rb (exit with F1, Or Cancel button/Alt-C) contains various
12
- widgets. F2 for menubar toggling
13
-
14
- * rfe.rb is a ruby file explorer
15
-
16
- * sqlc.rb is a ruby sql client demo (using testd.db at
17
- http://www.benegal.org/files/screen/testd.db)
18
-
19
- * testtodo.rb is a test TODO application
20
-
21
- * Screenshots on
22
- http://www.benegal.org/files/screen/?M=D (new)
23
- and on blog, http://totalrecall.wordpress.com
24
- and http://github.com/rkumar/rbcurse/wikis/screenshots (old)
25
-
26
- * Todo (for 0.1.2): http://rubyforge.org/pm/task.php?group_id=7775&group_project_id=13812&func=browse
27
-
28
- * Next Major Release: http://rubyforge.org/pm/task.php?group_project_id=13813&group_id=7775&func=browse
29
-
30
- == DESCRIPTION:
31
-
32
- A small but comprehensive widget library written in ruby for creating ncurses
33
- applications.
34
-
35
- == FEATURES
36
-
37
- * entry fields in ruby
38
- * scrollable list box (new, editable with Field, checkbox and combos)
39
- * multi-line editable area
40
- * togglebutton, radio and check buttons (with mnemonics)
41
- * message box
42
- * menubar - with submenu and CheckBoxMenuItem
43
- * popup list
44
- * tabbedpane (multiple forms using tabbed metaphor)
45
- * combobox
46
- * labels with mnemonics (hotkeys)
47
- * multi-column table - with cell selection and editing
48
-
49
- Above may be created using DSL like syntax, or hashes.
50
-
51
- == Sample programs:
52
-
53
- * sqlc.rb is a ruby sql client demo
54
- * rfe : file explorer or Finder like app
55
- * testtodo.rb : a todo app based on a yaml file (now csv)
56
- * test2.rb most widgets (including menus)
57
- * test1.rb various kinds of messageboxes (input, list, custom)
58
- * testtabp.rb tabbed pane
59
- * testcombo.rb combos with various insert policies and vertical
60
- alignments
61
-
62
- == PROBLEMS, ISSUES
63
- TextArea not bug free. Some situations wrapping errors could exist.
64
-
65
- == Terminal related issues.
66
-
67
- * Some terminals may not show underlines (e.g screen).
68
-
69
- * Some terminals (xterm-color) do not process Function keys, avoid declaring F1 etc if
70
- unsure of client terminals. I have put in fixes for xterm-color F1 and
71
- backtab.
72
-
73
- * To use ALT/META keys on a Mac OS X, in Terminal preferences, under
74
- Keyboard, select
75
- "use Option as Meta key". All hotkeys are automatically, ALT combinations.
76
-
77
- * Some screens do not display window background color under spaces.
78
- This is okay under "screen" and "xterm-color" but not under "xterm". You will notice
79
- this in the message box samples.
80
-
81
- I am developing and testing under "screen" under OS X Leopard.
82
-
83
- == SYNOPSIS:
84
-
85
- See lib/rbcurse/rwidgets.rb.
86
- For test programs, see test1, test2, testcombo etc in examples folder.
87
-
88
- This depends only on "window" provided by ncurses. Does not use forms
89
- and fields. Minor changes and improvements may have happened to sample
90
- code below. See test programs for latest, working code.
91
-
92
- === create a window and a form based on window
93
-
94
- @layout = { :height => 0, :width => 0, :top => 0, :left => 0 }
95
- @win = VER::Window.new(@layout)
96
-
97
- @form = Form.new @win
98
-
99
-
100
- === create a bunch of fields with dependent labels
101
-
102
- r = 1; c = 22;
103
- %w[ name age company].each do |w|
104
- field = Field.new @form do
105
- name w
106
- row r
107
- col c
108
- display_length 30
109
- set_buffer "abcd #{w}"
110
- set_label Label.new @form, {'text' => w}
111
- end
112
- r += 1
113
- end
114
-
115
- === create a variable (like TkVariable) and tie a label to it.
116
-
117
- $results = Variable.new
118
- $results.value = "A variable"
119
- var = RubyCurses::Label.new @form, {'text_variable' => $results, "row" => r, "col" => 22}
120
- r += 1
121
-
122
- === create a list and a list box based on the list.
123
-
124
- mylist = []
125
- 0.upto(100) { |v| mylist << "#{v} scrollable data" }
126
-
127
- field = Listbox.new @form do
128
- name "mylist"
129
- row r
130
- col 1
131
- width 40
132
- height 10
133
- list mylist
134
- end
135
- field.insert 5, "hello ruby", "so long python", "farewell java", "RIP .Net"
136
-
137
- === create a textarea for entry
138
-
139
- texta = TextArea.new @form do
140
- name "mytext"
141
- row 1
142
- col 52
143
- width 40
144
- height 20
145
- end
146
- texta << "hello there" << "we are testing deletes in this application"
147
- texta << "HELLO there" << "WE ARE testing deletes in this application"
148
-
149
- === create a check box, updates a Variable
150
-
151
- checkbutton = CheckBox.new @form do
152
- text_variable $results
153
- #value = true
154
- onvalue "selected cb"
155
- offvalue "UNselected cb"
156
- text "Please click me"
157
- row 17
158
- col 22
159
- end
160
-
161
- === change field properties at any time by referring to them by name
162
-
163
- @form.by_name["age"].display_length = 3
164
- @form.by_name["age"].maxlen = 3
165
- @form.by_name["age"].set_buffer "24"
166
- @form.by_name["name"].set_buffer "Not focusable"
167
- @form.by_name["age"].chars_allowed = /\d/
168
- @form.by_name["company"].type(:ALPHA)
169
- @form.by_name["name"].set_focusable(false)
170
-
171
- @form.by_name["password"].color 'red'
172
- @form.by_name["password"].bgcolor 'blue'
173
-
174
- # restrict entry to some values
175
- password.values(%w[ scotty tiger secret qwerty])
176
-
177
- # validation using ruby's regular expressions
178
-
179
- field.valid_regex(/^[A-Z]\d+/)
180
-
181
- === bind events to forms, and fields
182
-
183
- @form.bind(:ENTER) { |f| f.label.bgcolor = $promptcolor if f.instance_of? RubyCurses::Field}
184
- @form.bind(:LEAVE) { |f| f.label.bgcolor = $datacolor if f.instance_of? RubyCurses::Field}
185
-
186
- === create buttons
187
-
188
- ok_button = Button.new @form do
189
- text "OK"
190
- name "OK"
191
- row 18
192
- col 22
193
- end
194
- ok_button.command { |form| $results.value = "OK PRESS:";form.printstr(@window, 23,45, "OK CALLED") }
195
- #text "Cancel"
196
- cancel_button = Button.new @form do
197
- text_variable $results
198
- row 18
199
- col 28
200
- end
201
- cancel_button.command { |form| form.printstr(@window, 23,45, "Cancel CALLED"); throw(:close); }
202
-
203
- === create radio buttons
204
-
205
- colorlabel = Label.new @form, {'text' => "Select a color:", "row" => 20,
206
- "col" => 22, "color"=> "cyan"}
207
- $radio = Variable.new
208
- radio1 = RadioButton.new @form do
209
- text_variable $radio
210
- text "red"
211
- value "red"
212
- color "red"
213
- row 21
214
- col 22
215
- end
216
- radio2 = RadioButton.new @form do
217
- text_variable $radio
218
- text "green"
219
- value "green"
220
- color "green"
221
- row 22
222
- col 22
223
- end
224
-
225
- === create a messagebox
226
-
227
- @mb = RubyCurses::MessageBox.new do
228
- title "Enter your name"
229
- message "Enter your name"
230
- type :input
231
- default_value "rahul"
232
- default_button 0
233
- end
234
- #title "Color selector"
235
- #type :custom
236
- #buttons %w[red green blue yellow]
237
- #underlines [0,0,0,0]
238
-
239
- $log.debug "MBOX : #{@mb.selected_index} "
240
- $log.debug "MBOX : #{@mb.input_value} "
241
-
242
- === create a read-only scrollable view of data
243
-
244
- @textview = TextView.new @form do
245
- name "myView"
246
- row 16
247
- col 52
248
- width 40
249
- height 7
250
- end
251
- content = File.open("../../README.txt","r").readlines
252
- @textview.set_content content
253
-
254
- ## set it to point to row 21
255
- @textview.top_row 21
256
-
257
-
258
- # lets scroll the text view as we scroll the listbox
259
-
260
- listb.bind(:ENTER_ROW, @textview) { |arow, tview| tview.top_row arow }
261
-
262
- # lets scroll the text view to the line you enter in the numeric
263
- # field
264
- @form.by_name["line"].bind(:LEAVE, @textview) { |fld, tv| tv.top_row(fld.getvalue.to_i) }
265
-
266
- # lets scroll the text view to the first match of the regex you
267
- # enter
268
- @form.by_name["regex"].bind(:LEAVE, @textview) { |fld, tv| tv.top_row(tv.find_first_match(fld.getvalue)) }
269
-
270
- # change the value of colorlabel to the selected radiobutton
271
- # (red or green)
272
-
273
- $radio.update_command(colorlabel) {|tv, label| label.color tv.value}
274
-
275
- # change the attribute of colorlabel to bold or normal
276
-
277
- $results.update_command(colorlabel,checkbutton) {|tv, label, cb|
278
- attrs = cb.value ? 'bold' : nil; label.attrs(attrs)}
279
-
280
- # during menu creation, create a checkboxmenuitem
281
-
282
- item = RubyCurses::CheckBoxMenuItem.new "CheckMe"
283
-
284
- # when selected, make colorlabel attribute reverse.
285
-
286
- item.command(colorlabel){|it, label| att = it.getvalue ? 'reverse' :
287
- nil; label.attrs(att); label.repaint}
288
-
289
- == REQUIREMENTS:
290
-
291
- * ruby 1.8.7 (not compatible with 1.9)
292
-
293
- * ncurses-ruby
294
-
295
- (following is provided with source)
296
-
297
- * uses the window class created by "manveru" (michael)
298
- It is provided with this package, and has some alterations from the
299
- original. I have added a method getchar() which traps and returns
300
- ALT/META, META+CTRL, META+SHIFT+CONTROL, ALT+Fn etc.
301
-
302
-
303
- == INSTALL:
304
-
305
- sudo gem install ncurses-ruby
306
- sudo gem install rbcurse
307
-
308
- == LICENSE:
309
-
310
- Copyright (c) 2008 rkumar
311
-
312
- Same as ruby license.