rbcurse 0.1.3 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,86 @@
1
+ #$LOAD_PATH << "/Users/rahul/work/projects/rbcurse/"
2
+ # Creates a scrollpane with a Testwidget (which is a modified TextView class)
3
+ require 'rubygems'
4
+ require 'ncurses'
5
+ require 'logger'
6
+ require 'rbcurse'
7
+ require 'rbcurse/rlistbox'
8
+ require 'rbcurse/rscrollpane'
9
+ if $0 == __FILE__
10
+ include RubyCurses
11
+ include RubyCurses::Utils
12
+
13
+ begin
14
+ # Initialize curses
15
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
16
+ $log = Logger.new("v#{$0}.log")
17
+ $log.level = Logger::DEBUG
18
+
19
+ @window = VER::Window.root_window
20
+
21
+ catch(:close) do
22
+ colors = Ncurses.COLORS
23
+ @form = Form.new @window
24
+ r = 1; c = 10; w = 40
25
+ ht = 10
26
+ # print filler stars
27
+ filler = "*" * (w+2)
28
+ #(ht+3).times(){|i| @form.window.printstring(i,c-1, filler, $datacolor) }
29
+
30
+
31
+ @scroll = ScrollPane.new @form do
32
+ name "myScroller"
33
+ row r+ht+1
34
+ col c
35
+ width w
36
+ height ht
37
+ end
38
+ mylist = []
39
+ 0.upto(100) { |v| mylist << "#{v} scrollable data" }
40
+ $listdata = Variable.new mylist
41
+ # NOTE that embedded object is not passed form, since it doesn't update form
42
+ listb = Listbox.new nil do
43
+ name "mylist"
44
+ row 0
45
+ col 0
46
+ width w+10
47
+ height ht+10
48
+ list_variable $listdata
49
+ #selection_mode :SINGLE
50
+ show_selector true
51
+ row_selected_symbol "[X] "
52
+ row_unselected_symbol "[ ] "
53
+ title "A long list"
54
+ title_attrib 'reverse'
55
+ cell_editing_allowed true
56
+ end
57
+ ## The next 2 are not advised since they don't trigger events
58
+ #listb.insert 55, "hello ruby", "so long python", "farewell java", "RIP .Net"
59
+ #$listdata.value.insert 55, "hello ruby", "so long python", "farewell java", "RIP .Net"
60
+ listb.list_data_model.insert 55, "hello ruby", "so long python", "farewell java", "RIP .Net", "hi lisp", "hi clojure", "hiya erlang"
61
+ @scroll.child(listb)
62
+
63
+
64
+ @help = "q to quit. This is a test of Listbox which uses a pad/buffer.: #{$0}"
65
+ #RubyCurses::Label.new @form, {'text' => @help, "row" => 21, "col" => 2, "color" => "yellow"}
66
+
67
+ @form.repaint
68
+ @window.wrefresh
69
+ Ncurses::Panel.update_panels
70
+ while((ch = @window.getchar()) != ?q.getbyte(0) )
71
+ str = keycode_tos ch
72
+ @form.handle_key(ch)
73
+ @form.repaint
74
+ @window.wrefresh
75
+ end
76
+ end
77
+ rescue => ex
78
+ ensure
79
+ @window.destroy if !@window.nil?
80
+ VER::stop_ncurses
81
+ p ex if ex
82
+ p(ex.backtrace.join("\n")) if ex
83
+ $log.debug( ex) if ex
84
+ $log.debug(ex.backtrace.join("\n")) if ex
85
+ end
86
+ end
@@ -0,0 +1,87 @@
1
+ #$LOAD_PATH << "/Users/rahul/work/projects/rbcurse/"
2
+ # Creates a scrollpane with a TextView (which is a modified TextView class)
3
+ require 'rubygems'
4
+ require 'ncurses'
5
+ require 'logger'
6
+ require 'rbcurse'
7
+ #require 'rbcurse/rtextview'
8
+ require 'rbcurse/rmultitextview'
9
+ require 'rbcurse/rscrollpane'
10
+ require 'rbcurse/undomanager'
11
+ if $0 == __FILE__
12
+ include RubyCurses
13
+ include RubyCurses::Utils
14
+
15
+ begin
16
+ # Initialize curses
17
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
18
+ $log = Logger.new("v#{$0}.log")
19
+ $log.level = Logger::DEBUG
20
+
21
+ @window = VER::Window.root_window
22
+
23
+ catch(:close) do
24
+ colors = Ncurses.COLORS
25
+ @form = Form.new @window
26
+ @form.name = "Form::MAINFORM"
27
+ r = 3; c = 5; w = 80
28
+ ht = 20
29
+ # print filler stars
30
+ #filler = "*" * (w+2)
31
+ #(ht+3).times(){|i| @form.window.printstring(i,c-1, filler, $datacolor) }
32
+
33
+
34
+ @scroll = ScrollPane.new @form do
35
+ name "myScroller"
36
+ row r
37
+ col c
38
+ width w
39
+ height ht
40
+ end
41
+ @textview = MultiTextView.new do
42
+ #@textview = TextView.new do
43
+ name "myView"
44
+ row 0
45
+ col 0
46
+ width w
47
+ height ht +20
48
+ title "README.txt"
49
+ title_attrib 'bold'
50
+ print_footer true
51
+ footer_attrib 'bold'
52
+ #suppress_borders true
53
+ end
54
+ #@textview.should_create_buffer true # can be moved to scrollpane
55
+ #@textview.set_buffering(:target_window => @form.window, :bottom => @scroll.height-1, :right => @scroll.width-1 )
56
+ #content = File.open("../README.markdown","r").readlines
57
+ #@textview.set_content content #, :WRAP_WORD
58
+ @textview.add "../README.markdown", "Readme"
59
+
60
+ @textview.load_module "vieditable", "ViEditable"
61
+ @scroll.child(@textview)
62
+ undom = SimpleUndo.new @textview
63
+ #@textview.show_caret=true
64
+
65
+ @help = "F1 to quit. #{$0} TextView inside scrollpane. M-n M-p M-h M-l M-< M->, e to open file, : for menu""
66
+ RubyCurses::Label.new @form, {'text' => @help, "row" => ht+r+1, "col" => 2, "color" => "yellow"}
67
+
68
+ @form.repaint
69
+ @window.wrefresh
70
+ Ncurses::Panel.update_panels
71
+ while((ch = @window.getchar()) != KEY_F1 ) # ?q.getbyte(0) )
72
+ str = keycode_tos ch
73
+ @form.handle_key(ch)
74
+ @form.repaint
75
+ @window.wrefresh
76
+ end
77
+ end
78
+ rescue => ex
79
+ ensure
80
+ @window.destroy if !@window.nil?
81
+ VER::stop_ncurses
82
+ p ex if ex
83
+ p(ex.backtrace.join("\n")) if ex
84
+ $log.debug( ex) if ex
85
+ $log.debug(ex.backtrace.join("\n")) if ex
86
+ end
87
+ end
@@ -0,0 +1,80 @@
1
+ #$LOAD_PATH << "/Users/rahul/work/projects/rbcurse/"
2
+ # Creates a scrollpane with a Testwidget (which is a modified TextView class)
3
+ require 'rubygems'
4
+ require 'ncurses'
5
+ require 'logger'
6
+ require 'rbcurse'
7
+ require 'rbcurse/rtextarea'
8
+ require 'rbcurse/rscrollpane'
9
+ if $0 == __FILE__
10
+ include RubyCurses
11
+ include RubyCurses::Utils
12
+
13
+ begin
14
+ # Initialize curses
15
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
16
+ $log = Logger.new("v#{$0}.log")
17
+ $log.level = Logger::DEBUG
18
+
19
+ @window = VER::Window.root_window
20
+
21
+ catch(:close) do
22
+ colors = Ncurses.COLORS
23
+ @form = Form.new @window
24
+ @form.name = "Form::MAINFORM"
25
+ $log.debug " MAIN FORM #{@form} w #{@window} "
26
+ r = 3; c = 10; w = 40
27
+ ht = 10
28
+
29
+
30
+ @scroll = ScrollPane.new @form do
31
+ name "myScroller"
32
+ row r+1
33
+ col c
34
+ width w
35
+ height ht
36
+ end
37
+ # XXX we are passing nil as form, so its bound to bomb FIXME TODO
38
+ @textview = TextArea.new @nil do
39
+ name "myText"
40
+ row 0
41
+ col 0
42
+ width w+10
43
+ height ht+10
44
+ title "EditMe.txt"
45
+ title_attrib 'bold'
46
+ print_footer true
47
+ footer_attrib 'bold'
48
+ end
49
+ @scroll.child(@textview)
50
+ @textview << "I expect to pass through this world but once." << "Any good therefore that I can do, or any kindness or abilities that I can show to any fellow creature, let me do it now."
51
+ @textview << "Let me not defer it or neglect it, for I shall not pass this way again."
52
+ @textview << " "
53
+ @textview << "F1 to exit. M-n, M-p, M-h, M-l for scrolling."
54
+ @textview << "Some more text going below scrollpane.. "
55
+ @textview << "Try C-[ C-] for going to start and end "
56
+
57
+
58
+ @help = "F1 to quit. #{$0}. This is a test of TextArea inside a Scrollpane (it uses a pad/buffer)."
59
+ RubyCurses::Label.new @form, {'text' => @help, "row" => 23, "col" => 2, "color" => "yellow"}
60
+
61
+ @form.repaint
62
+ @window.wrefresh
63
+ Ncurses::Panel.update_panels
64
+ while((ch = @window.getchar()) != KEY_F1)
65
+ str = keycode_tos ch
66
+ @form.handle_key(ch)
67
+ @form.repaint
68
+ @window.wrefresh
69
+ end
70
+ end
71
+ rescue => ex
72
+ ensure
73
+ @window.destroy if !@window.nil?
74
+ VER::stop_ncurses
75
+ p ex if ex
76
+ p(ex.backtrace.join("\n")) if ex
77
+ $log.debug( ex) if ex
78
+ $log.debug(ex.backtrace.join("\n")) if ex
79
+ end
80
+ end
@@ -0,0 +1,166 @@
1
+ #$LOAD_PATH << "/Users/rahul/work/projects/rbcurse/"
2
+ #*******************************************************#
3
+ # testsrolltable.rb #
4
+ # written by Rahul Kumar #
5
+ # January 18, 2010 #
6
+ # #
7
+ # Test table inside a scrollpane. #
8
+ # The table here has minimal functionality. Pls refer #
9
+ # testtable.rb for more complete functionality. #
10
+ #
11
+ # /----+----+----+-----\
12
+ # |____|____|____|_____|
13
+ # | | | | V|
14
+ # | | | | V|
15
+ # + | | | V|
16
+ # | | | | V|
17
+ # | | | | V|
18
+ # |>>>>>>>>>>> | |
19
+ # \----+----+----+-----/
20
+ # http://totalrecall.files.wordpress.com/2010/01/rbcurse-tablescrollpane.png
21
+ #
22
+ #
23
+ # Released under ruby license. See #
24
+ # http://www.ruby-lang.org/en/LICENSE.txt #
25
+ # Copyright 2010, Rahul Kumar #
26
+ #*******************************************************#
27
+ # Creates a scrollpane with a Table
28
+ require 'rubygems'
29
+ require 'ncurses'
30
+ require 'logger'
31
+ require 'rbcurse'
32
+ require 'rbcurse/rtable'
33
+ require 'rbcurse/rscrollpane'
34
+ if $0 == __FILE__
35
+ include RubyCurses
36
+ include RubyCurses::Utils
37
+
38
+ begin
39
+ # Initialize curses
40
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
41
+ # file = File.open("v#{$0}.log", File::WRONLY | File::APPEND | File::CREAT)
42
+ $log = Logger.new("v#{$0}.log")
43
+ $log.level = Logger::DEBUG
44
+
45
+ @window = VER::Window.root_window
46
+
47
+ catch(:close) do
48
+ colors = Ncurses.COLORS
49
+ @form = Form.new @window
50
+ r = 3; c = 7; w = 80
51
+ ht = 20
52
+
53
+ scroll = ScrollPane.new @form do
54
+ name "myScroller"
55
+ row r
56
+ col c
57
+ width w
58
+ height ht
59
+ end
60
+ data = [["Pathetique",3,"Tchaikovsky",3.21, true, "WIP"],
61
+ ["Ali Maula Ali Maula",3,"NFAK",3.47, true, "WIP"],
62
+ ["Tera Hijr Mera Nasib",92,"Razia Sultan",412, true, "Fin"],
63
+ ["Piano Concerto 4&5",4,"Beethoven",110.0, false, "Cancel"],
64
+ ["Toccata and Fugue",4,"J S Bach",102.72, false, "Postp"],
65
+ ["Symphony No. 3",4,"Henryk Gorecki",102.72, true, "Postp"],
66
+ ["The Great Gig in the Sky",8,"Pink Floyd",12.72, false, "Todo"],
67
+ ["Steppes of Central Asia",9,"Borodin",12.2, false, "WIP"],
68
+ ["Wish You Were Here",8,"Pink Floyd",2.7, false, "Todo"],
69
+ ["Habanera",nil,"Maria Callas",112.7, true, "Cancel"],
70
+ ["Mack the Knife",9,"Loius Armstrong",12.2, false, "Todo"],
71
+ ["Prince Igor",9,"Borodin",16.3, false, "WIP"],
72
+ ["Shahbaaz Qalandar",9,"Nusrat Fateh Ali Khan",12.2, false, "Todo"],
73
+ ["Raag Darbari",9,"Ustad Fateh Ali Khan",12.2, false, "Todo"],
74
+ ["Yaad-e-Mustafa Aisi",9,"Santoo Khan",12.2, true, "Todo"],
75
+ ["Chaconne",4,"Johann S Bach",12.42, true, "Postp"],
76
+ ["Raag Jaunpuri",9,"Ustad Fateh Ali Khan",12.2, false, "Todo"],
77
+ ["Dalaleragita",9,"Vaishnava",12.2, false, "Todo"],
78
+ ["Prasada sevaya",9,"Vaishnava",12.2, false, "Todo"],
79
+ ["Sri Rupamanjiri",9,"Vaishnava",12.2, false, "Todo"],
80
+ ["M Vlast ",9,"Smetana",12.2, false, "Todo"],
81
+ ["Jai Radha Madhava",163,"Jagjit Singh",5.4, false, "WIP"]]
82
+
83
+ colnames = %w[ Song Cat Artist Ratio Flag Status]
84
+ statuses = ["Todo", "WIP", "Fin", "Cancel", "Postp"]
85
+
86
+ atable = Table.new nil do
87
+ name "mytext"
88
+ row 0
89
+ col 0
90
+ width 78
91
+ height 15
92
+ #title "A Table"
93
+ #title_attrib (Ncurses::A_REVERSE | Ncurses::A_BOLD)
94
+ cell_editing_allowed true
95
+ editing_policy :EDITING_AUTO
96
+ set_data data, colnames
97
+ end
98
+ sel_col = Variable.new 0
99
+ sel_col.value = 0
100
+ tcm = atable.get_table_column_model
101
+ selcolname = atable.get_column_name sel_col.value
102
+ #
103
+ ## key bindings fo atable
104
+ # column widths
105
+ tcm.column(0).width 24
106
+ tcm.column(1).width 5
107
+ tcm.column(2).width 18
108
+ #tcm.column(2).editable false
109
+ tcm.column(3).width 7
110
+ tcm.column(4).width 5
111
+ tcm.column(5).width 8
112
+ atable.configure() do
113
+ bind_key(330) { atable.remove_column(tcm.column(atable.focussed_col)) rescue "" }
114
+ bind_key(?+) {
115
+ acolumn = atable.get_column selcolname
116
+ w = acolumn.width + 1
117
+ acolumn.width w
118
+ #atable.table_structure_changed
119
+ }
120
+ bind_key(?-) {
121
+ acolumn = atable.get_column selcolname
122
+ w = acolumn.width - 1
123
+ if w > 3
124
+ acolumn.width w
125
+ #atable.table_structure_changed
126
+ end
127
+ }
128
+ bind_key(?>) {
129
+ colcount = tcm.column_count-1
130
+ #atable.move_column sel_col.value, sel_col.value+1 unless sel_col.value == colcount
131
+ col = atable.focussed_col
132
+ atable.move_column col, col+1 unless col == colcount
133
+ }
134
+ bind_key(?<) {
135
+ col = atable.focussed_col
136
+ atable.move_column col, col-1 unless col == 0
137
+ #atable.move_column sel_col.value, sel_col.value-1 unless sel_col.value == 0
138
+ }
139
+ #bind_key(KEY_RIGHT) { sel_col.value = sel_col.value+1; current_column sel_col.value}
140
+ #bind_key(KEY_LEFT) { sel_col.value = sel_col.value-1;current_column sel_col.value}
141
+ end
142
+ scroll.child(atable)
143
+
144
+ @help = "F1 to quit. This is a test of Table inside a scrollpane. #{$0} M-n M-p M-< M-> M-h M-l"
145
+ RubyCurses::Label.new @form, {'text' => @help, "row" => ht+r+1, "col" => 2, "color" => "yellow"}
146
+
147
+ @form.repaint
148
+ @window.wrefresh
149
+ Ncurses::Panel.update_panels
150
+ while((ch = @window.getchar()) != KEY_F1 ) # ?q.getbyte(0) )
151
+ str = keycode_tos ch
152
+ @form.handle_key(ch)
153
+ @form.repaint
154
+ @window.wrefresh
155
+ end
156
+ end
157
+ rescue => ex
158
+ ensure
159
+ @window.destroy if !@window.nil?
160
+ VER::stop_ncurses
161
+ p ex if ex
162
+ p(ex.backtrace.join("\n")) if ex
163
+ $log.debug( ex) if ex
164
+ $log.debug(ex.backtrace.join("\n")) if ex
165
+ end
166
+ end
@@ -0,0 +1,87 @@
1
+ #$LOAD_PATH << "/Users/rahul/work/projects/rbcurse/"
2
+ require 'rubygems'
3
+ require 'ncurses'
4
+ require 'logger'
5
+ require 'rbcurse'
6
+ require 'rbcurse/rsplitpane'
7
+ #require 'rbcurse/rtestwidget'
8
+ #
9
+ ## this sample creates a single scrollpane, and allows you to change orientation
10
+ ##+ and move divider around using - + and =.
11
+ #
12
+ if $0 == __FILE__
13
+ include RubyCurses
14
+ include RubyCurses::Utils
15
+
16
+ begin
17
+ # Initialize curses
18
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
19
+ $log = Logger.new("v#{$0}.log")
20
+ $log.level = Logger::DEBUG
21
+
22
+ @window = VER::Window.root_window
23
+
24
+ catch(:close) do
25
+ colors = Ncurses.COLORS
26
+ @form = Form.new @window
27
+ r = 3; c = 7; ht = 18
28
+ # filler just to see that we are covering correct space and not wasting lines or cols
29
+ filler = "*" * 88
30
+ (ht+2).times(){|i| @form.window.printstring(i,r, filler, $datacolor) }
31
+
32
+
33
+ @help = "q to quit. v h - + = : #{$0} . Check logger too"
34
+ RubyCurses::Label.new @form, {'text' => @help, "row" => ht+r, "col" => 2, "color" => "yellow"}
35
+
36
+ $message = Variable.new
37
+ $message.value = "Message Comes Here"
38
+ message_label = RubyCurses::Label.new @form, {'text_variable' => $message, "name"=>"message_label","row" => ht+r+2, "col" => 1, "display_length" => 60, "height" => 2, 'color' => 'cyan'}
39
+ $message.update_command() { message_label.repaint } # why ?
40
+
41
+ splitp = SplitPane.new @form do
42
+ name "mypane"
43
+ row r
44
+ col c
45
+ width 70
46
+ height ht
47
+ # focusable false
48
+ #orientation :VERTICAL_SPLIT
49
+ end
50
+ splitp.bind(:PROPERTY_CHANGE){|e| $message.value = e.to_s }
51
+
52
+ @form.repaint
53
+ @window.wrefresh
54
+ Ncurses::Panel.update_panels
55
+ while((ch = @window.getchar()) != ?q.getbyte(0) )
56
+ str = keycode_tos ch
57
+ case ch
58
+ when ?v.getbyte(0)
59
+ splitp.orientation(:VERTICAL_SPLIT)
60
+ splitp.reset_to_preferred_sizes
61
+ when ?h.getbyte(0)
62
+ splitp.orientation(:HORIZONTAL_SPLIT)
63
+ splitp.reset_to_preferred_sizes
64
+ when ?-.getbyte(0)
65
+ splitp.set_divider_location(splitp.divider_location-1)
66
+ when ?+.getbyte(0)
67
+ splitp.set_divider_location(splitp.divider_location+1)
68
+ when ?=.getbyte(0)
69
+ splitp.set_resize_weight(0.50)
70
+ end
71
+ #splitp.get_buffer().wclear
72
+ #splitp << "#{ch} got (#{str})"
73
+ splitp.repaint # since the above keys are not being handled inside
74
+ @form.handle_key(ch)
75
+ @window.wrefresh
76
+ end
77
+ end
78
+ rescue => ex
79
+ ensure
80
+ @window.destroy if !@window.nil?
81
+ VER::stop_ncurses
82
+ p ex if ex
83
+ p(ex.backtrace.join("\n")) if ex
84
+ $log.debug( ex) if ex
85
+ $log.debug(ex.backtrace.join("\n")) if ex
86
+ end
87
+ end