rbcurse-core 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -685,6 +685,7 @@ module RubyCurses
685
685
  end
686
686
  def init_vars
687
687
  @active_index = 0
688
+ @repaint_required = true
688
689
  end
689
690
  def focusable
690
691
  false
@@ -745,6 +746,7 @@ module RubyCurses
745
746
  # menubar LEFT, RIGHT, DOWN
746
747
  def handle_keys
747
748
  @selected = false
749
+ @repaint_required = true # added 2011-12-12 otherwise keeps repainting and you see a flicker
748
750
  @toggle_key ||= 27 # default switch off with ESC, if nothing else defined
749
751
  set_menu 0
750
752
  begin
@@ -804,6 +806,7 @@ module RubyCurses
804
806
  #ensure is required becos one can throw a :close
805
807
  $log.debug " DESTROY IN ENSURE"
806
808
  current_menu.clear_menus #@@menus = [] # added 2009-01-23 13:21
809
+ @repaint_required = false
807
810
  destroy # Note that we destroy the menu bar upon exit
808
811
  end
809
812
  end
@@ -843,12 +846,14 @@ module RubyCurses
843
846
  end
844
847
  ## menubar
845
848
  # TODO: check for menu to be flush right (only for last one).
849
+ # TODO: repaint only if needed
846
850
  def repaint
847
851
  return if !@visible
852
+ return unless @repaint_required
853
+ @repaint_required = false
848
854
  @color_pair = get_color($reversecolor, @color, @bgcolor)
849
855
  @window ||= create_window_menubar
850
- # @window.printstring( 0, 0, "%-*s" % [@cols," "], $reversecolor) # changed 2011 2011-09-24
851
- @window.printstring( 0, 0, "%-*s" % [@cols," "], @color_pair)
856
+ #@window.printstring( 0, 0, "%-*s" % [@cols," "], @color_pair) # this becomes blank in some terms
852
857
  c = 1; r = 0;
853
858
  @items.each do |item|
854
859
  item.row = r; item.col = c; item.coffset = c; item.parent = self
@@ -871,15 +876,29 @@ module RubyCurses
871
876
  @layout = { :height => 1, :width => 0, :top => 0, :left => 0 }
872
877
  @win = VER::Window.new(@layout)
873
878
  @window = @win
879
+ att = get_attrib @attr
874
880
  @win.bkgd(Ncurses.COLOR_PAIR(5)); # <---- FIXME
881
+ len = @window.width
882
+ len = Ncurses.COLS-0 if len == 0
883
+ # print a bar across the screen , which hopefully will not go blank in some terms
884
+ @window.attron(Ncurses.COLOR_PAIR(@color_pair) | att)
885
+ @window.mvhline(0, 0, 1, len)
886
+ @window.attroff(Ncurses.COLOR_PAIR(@color_pair) | att)
875
887
  @panel = @win.panel
876
888
  return @window
877
889
  end
878
890
  def destroy
879
891
  $log.debug "DESTRY menubar "
892
+
893
+ # when we close, but keep visible, we don't want menu to still be hightlighted
894
+ # added on 2011-12-12
895
+ menu = @items[@active_index]
896
+ menu.on_leave # hide its window, if open
897
+
880
898
  @items.each do |item|
881
899
  item.destroy
882
900
  end
901
+ # TODO the current menu should not be highlighted
883
902
  return if @keep_visible
884
903
  @visible = false
885
904
  panel = @window.panel
@@ -20,6 +20,7 @@ require 'rbcurse'
20
20
  require 'rbcurse/core/include/listscrollable'
21
21
  require 'rbcurse/core/include/rinputdataevent'
22
22
  require 'rbcurse/core/include/listeditable'
23
+ require 'rbcurse/core/include/bordertitle'
23
24
 
24
25
  #include Ncurses # FFI 2011-09-8
25
26
  include RubyCurses
@@ -37,16 +38,16 @@ module RubyCurses
37
38
  include ListScrollable
38
39
  # NOTE: common editing functions moved to listeditable
39
40
  include ListEditable
40
- dsl_accessor :title
41
- dsl_accessor :title_attrib # bold, reverse, normal
42
- dsl_accessor :footer_attrib # bold, reverse, normal added 2009-12-26 18:25 was this missing or delib
41
+ #dsl_accessor :title
42
+ #dsl_accessor :title_attrib # bold, reverse, normal
43
+ #dsl_accessor :footer_attrib # bold, reverse, normal added 2009-12-26 18:25 was this missing or delib
43
44
  dsl_accessor :list # the array of data to be sent by user
44
45
  dsl_accessor :maxlen # max display length of a row/line
45
46
  attr_reader :toprow
46
47
  dsl_accessor :auto_scroll # boolean, keeps view at end as data is inserted.
47
48
  dsl_accessor :print_footer
48
49
  dsl_accessor :editable # allow editing
49
- dsl_accessor :suppress_borders # added 2010-02-12 12:21 values true or false
50
+ #dsl_accessor :suppress_borders # added 2010-02-12 12:21 values true or false
50
51
  attr_accessor :overwrite_mode # boolean: insert or overwrite, default false.
51
52
 
52
53
  def initialize form = nil, config={}, &block
@@ -72,21 +73,18 @@ module RubyCurses
72
73
  # 2010-01-10 19:35 compute locally if not set
73
74
  install_keys
74
75
  init_vars
76
+ bordertitle_init
75
77
  end
76
78
  def init_vars
77
79
  @repaint_required = true
78
80
  @repaint_footer_required = true # 2010-01-23 22:41
79
81
  @toprow = @current_index = @pcol = 0
80
82
  @repaint_all=true
81
- ## 2010-02-12 12:20 RFED16 taking care if no border requested
82
- @row_offset = @col_offset = 0 if @suppress_borders == true
83
- # added 2010-02-11 15:11 RFED16 so we don't need a form.
84
- @win_left = 0
85
- @win_top = 0
83
+ @row_offset = @col_offset = 0 if @suppress_borders
86
84
  @longest_line = 0
87
85
  # if borders used, reduce 2 from width else 0
88
86
  @internal_width = 2
89
- @internal_width = 2 if @suppress_borders
87
+ @internal_width = 2 if @suppress_borders # WHAT THE !!!! It should be zero
90
88
  bind_key(?\M-w, :kill_ring_save)
91
89
  bind_key(?\C-y, :yank)
92
90
  bind_key(?\M-y, :yank_pop)
@@ -180,7 +178,7 @@ module RubyCurses
180
178
  end
181
179
  ##
182
180
  # private
183
- def print_borders
181
+ def OLDprint_borders
184
182
  window = @graphic # 2009-12-26 14:54 BUFFERED
185
183
  @color_pair = get_color($datacolor) # 2011-09-28 V1.3.1
186
184
  bordercolor = @border_color || @color_pair
@@ -202,7 +200,7 @@ module RubyCurses
202
200
 
203
201
  end
204
202
  # private
205
- def print_title
203
+ def OLDprint_title
206
204
  # truncate title if longer than width
207
205
  return unless @title
208
206
  @color_pair ||= get_color($datacolor)
@@ -279,33 +277,49 @@ module RubyCurses
279
277
 
280
278
  def map_keys
281
279
  return if @keys_mapped
282
- bind_key(Ncurses::KEY_LEFT){ cursor_backward }
283
- bind_key(Ncurses::KEY_RIGHT){ cursor_forward }
284
- bind_key(Ncurses::KEY_UP){ ret = up; get_window.ungetch(KEY_BTAB) if ret == :NO_PREVIOUS_ROW }
280
+ @key_map = :both # get both vim and emacs keys
281
+ require 'rbcurse/core/include/listbindings'
282
+ bindings
283
+ #
284
+ # There's one issue, if using vim keys, most of them won't
285
+ # work in text area. So you will need emacs keys in text area.
286
+
287
+ # moved to listbin
288
+ #bind_key(Ncurses::KEY_LEFT){ cursor_backward }
289
+ #bind_key(Ncurses::KEY_RIGHT){ cursor_forward }
290
+ #bind_key(Ncurses::KEY_UP){ ret = up; get_window.ungetch(KEY_BTAB) if ret == :NO_PREVIOUS_ROW }
285
291
  # the next was irritating if user wanted to add a row ! 2011-10-10
286
- #bind_key(Ncurses::KEY_DOWN){ ret = down ; get_window.ungetch(KEY_TAB) if ret == :NO_NEXT_ROW }
287
- bind_key(Ncurses::KEY_DOWN){ ret = down ; }
288
- bind_key(?\C-a, 'start of line'){ cursor_bol }
289
- bind_key(?\C-e, 'end of line'){ cursor_eol }
290
- bind_key(?\C-d, 'scroll forward') { scroll_forward }
291
- bind_key(?\C-b, 'scroll backward') { scroll_backward }
292
- bind_key(?\C-[, 'goto start') { goto_start }
293
- bind_key(?\C-], 'goto end') { goto_end }
292
+ ##bind_key(Ncurses::KEY_DOWN){ ret = down ; get_window.ungetch(KEY_TAB) if ret == :NO_NEXT_ROW }
293
+ #bind_key(Ncurses::KEY_DOWN){ ret = down ; }
294
294
 
295
295
  bind_key(KEY_BACKSPACE){ delete_prev_char if @editable }
296
296
  bind_key(KEY_BSPACE){ delete_prev_char if @editable}
297
297
  bind_key(?\M-d, :delete_word)
298
298
  bind_key(?\M-f, :forward_word)
299
299
 
300
- #bind_key(127){ delete_prev_char }
301
- bind_key(330, 'delete current char'){ delete_curr_char if @editable }
302
- #bind_key(?\C-k){ delete_eol }
303
- #bind_key(?\C-_){ undo_delete_eol }
300
+ # earlier 330
301
+ bind_key(FFI::NCurses::KEY_DC, 'delete current char'){ delete_curr_char if @editable }
302
+ bind_key(?\C-k, 'kill line'){ kill_line }
303
+ bind_key(?\C-_, 'undo'){ undo }
304
+ bind_key(?\C-r, 'redo') { text_redo }
304
305
  #bind_key(27){ set_buffer @original_value }
305
- bind_key([?\C-x, ?e], :edit_external)
306
- bind_key([?\C-x, ?\C-s], :saveas)
306
+ #bind_key([?\C-x, ?e], :edit_external)
307
+ #bind_key([?\C-x, ?\C-s], :saveas)
307
308
  @keys_mapped = true
308
309
  end
310
+ # mimicking emacs behavior of C-k.
311
+ # delete entire line if at start, else delete till eol
312
+ def kill_line
313
+ # i'ved added curpos == 0 since emacs deletes a line if cursor is at 0
314
+ # Earlier behavior was based on alpine which leaves a blank line
315
+ if @editable
316
+ if @buffer.chomp == "" || @curpos == 0
317
+ delete_line
318
+ else
319
+ delete_eol
320
+ end
321
+ end
322
+ end
309
323
 
310
324
  # textarea
311
325
  def handle_key ch
@@ -332,49 +346,15 @@ module RubyCurses
332
346
  end
333
347
  #$log.debug "TA: after : curpos #{@curpos} blen: #{@buffer.length}, w: #{@width} max #{@maxlen}"
334
348
 
349
+ #NOTE C-d being used for del what of scroll !!
335
350
  case ch
336
- when KEY_ENTER, 10, KEY_RETURN
351
+ when KEY_ENTER, KEY_RETURN, FFI::NCurses::KEY_ENTER # numeric enter
337
352
  insert_break
338
- when Ncurses.KEY_BACKSPACE, Ncurses.KEY_BSPACE
339
- if @editable # checking here means that i can programmatically bypass!!
340
- delete_prev_char
341
- end
342
- when Ncurses.KEY_DELETE, ?\C-d.getbyte(0) # delete char
343
- if @editable
344
- delete_curr_char
345
- end
346
- when ?\C-k.getbyte(0) # delete till eol
347
- # i'ved added curpos == 0 since emacs deletes a line if cursor is at 0
348
- # Earlier behavior was based on alpine which leaves a blank line
349
- if @editable
350
- #if @buffer == ""
351
- if @buffer.chomp == "" || @curpos == 0
352
- delete_line
353
- else
354
- delete_eol
355
- end
356
- end
357
353
  #when ?\C-u.getbyte(0)
358
354
  ## since textareas are editable we use a control key to increase
359
355
  ## multiplier. Series is 4 16 64
360
356
  #@multiplier = (@multiplier == 0 ? 4 : @multiplier *= 4)
361
357
  #return 0
362
- when ?\C-_.getbyte(0) # changed from C-u so i can use C-u for multipliers
363
- undo
364
- when ?\C-r.getbyte(0) # redo if UndoHandler installed
365
- text_redo # won't accept name redo
366
- #when @KEY_ASK_FIND_FORWARD
367
- # ask_search_forward
368
- #when @KEY_ASK_FIND_BACKWARD
369
- # ask_search_backward
370
- when @KEY_ASK_FIND
371
- ask_search
372
- when @KEY_FIND_MORE
373
- find_more
374
- #when @KEY_FIND_NEXT
375
- # find_next
376
- #when @KEY_FIND_PREV
377
- # find_prev
378
358
  else
379
359
  #$log.debug(" textarea ch #{ch}")
380
360
  ret = putc ch
@@ -14,6 +14,7 @@ TODO
14
14
  require 'logger'
15
15
  require 'rbcurse'
16
16
  require 'rbcurse/core/include/listscrollable'
17
+ require 'rbcurse/core/include/bordertitle'
17
18
  require 'forwardable'
18
19
 
19
20
  include RubyCurses
@@ -30,19 +31,15 @@ module RubyCurses
30
31
  include ListScrollable
31
32
  extend Forwardable
32
33
  #dsl_accessor :height # height of viewport cmmented on 2010-01-09 19:29 since widget has method
33
- dsl_accessor :title # set this on top
34
- dsl_accessor :title_attrib # bold, reverse, normal
34
+ #dsl_accessor :title # set this on top
35
+ #dsl_accessor :title_attrib # bold, reverse, normal
35
36
  dsl_accessor :footer_attrib # bold, reverse, normal
36
37
  dsl_accessor :list # the array of data to be sent by user
37
38
  dsl_accessor :maxlen # max len to be displayed
38
39
  attr_reader :toprow # the toprow in the view (offsets are 0)
39
- # attr_reader :prow # the row on which cursor/focus is
40
- #attr_reader :winrow # the row in the viewport/window
41
40
  # painting the footer does slow down cursor painting slightly if one is moving cursor fast
42
41
  dsl_accessor :print_footer
43
- dsl_accessor :suppress_borders # added 2010-02-10 20:05 values true or false
44
42
  attr_reader :current_index
45
- dsl_accessor :border_attrib, :border_color #
46
43
  dsl_accessor :sanitization_required
47
44
 
48
45
  def initialize form = nil, config={}, &block
@@ -65,6 +62,7 @@ module RubyCurses
65
62
  @_events << :PRESS # new, in case we want to use this for lists and allow ENTER
66
63
  @_events << :ENTER_ROW # new, should be there in listscrollable ??
67
64
  install_keys # do something about this nonsense FIXME
65
+ bordertitle_init
68
66
  init_vars
69
67
  end
70
68
  def init_vars #:nodoc:
@@ -81,23 +79,16 @@ module RubyCurses
81
79
  # longest line on screen.
82
80
  @longest_line = 0 # the longest line printed on this page, used to determine if scrolling shd work
83
81
  @internal_width = 2
84
- @internal_width = 0 if @suppress_borders
82
+ @internal_width = 0 if @suppress_borders # NOTE bordertitle says 1
85
83
 
84
+ @search_found_ix = nil # so old searches don't get highlighted
86
85
  end
87
86
  def map_keys
88
- bind_key([?g,?g], 'goto start'){ goto_start } # mapping double keys like vim
89
- bind_key(?G, 'goto end'){ goto_bottom() }
90
- bind_key([?',?'], 'goto last position'){ goto_last_position } # vim , goto last row position (not column)
91
- bind_key(?/, :ask_search)
92
- bind_key(?n, :find_more)
93
- bind_key([?\C-x, ?>], :scroll_right)
94
- bind_key([?\C-x, ?<], :scroll_left)
95
- bind_key(?\M-l, :scroll_right)
96
- bind_key(?\M-h, :scroll_left)
97
- bind_key([?\C-x, ?\C-s], :saveas)
98
- bind_key([?\C-x, ?e], :edit_external)
99
- bind_keys([?\C-d, 32], 'scroll forward'){ scroll_forward() }
100
- bind_key(?\C-b, 'scroll backward'){ scroll_backward() }
87
+ require 'rbcurse/core/include/listbindings'
88
+ bindings()
89
+ #bind_key([?\C-x, ?\C-s], :saveas)
90
+ #bind_key([?\C-x, ?e], :edit_external)
91
+ bind_key(32, 'scroll forward'){ scroll_forward() }
101
92
  # have placedhere so multi-bufer can override BS to prev buffer
102
93
  bind_keys([KEY_BACKSPACE,KEY_BSPACE,KEY_DELETE], :cursor_backward)
103
94
  bind_key(?r) { getstr("Enter a word: ") } if $log.debug?
@@ -215,33 +206,6 @@ module RubyCurses
215
206
  txt.gsub(/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/,
216
207
  "\\1\\3\n")
217
208
  end
218
- ## print a border
219
- ## Note that print_border clears the area too, so should be used sparingly.
220
- def print_borders #:nodoc:
221
- raise "textview needs width" unless @width
222
- raise "textview needs height" unless @height
223
-
224
- $log.debug " #{@name} print_borders, #{@graphic.name} "
225
-
226
- @color_pair = get_color($datacolor) # added 2011-09-28 as in rlistbox
227
- # bordercolor = @border_color || $datacolor # changed 2011 dts
228
- bordercolor = @border_color || @color_pair # 2011-09-28 V1.3.1
229
- borderatt = @border_attrib || Ncurses::A_NORMAL
230
- @graphic.print_border @row, @col, @height-1, @width, bordercolor, borderatt
231
- print_title
232
- end
233
- def print_title #:nodoc:
234
- return unless @title
235
- raise "textview needs width" unless @width
236
- @color_pair ||= get_color($datacolor) # should we not use this ??? XXX
237
-
238
- # check title.length and truncate if exceeds width
239
- _title = @title
240
- if @title.length > @width - 2
241
- _title = @title[0..@width-2]
242
- end
243
- @graphic.printstring( @row, @col+(@width-_title.length)/2, _title, @color_pair, @title_attrib) unless @title.nil?
244
- end
245
209
  def print_foot #:nodoc:
246
210
  @footer_attrib ||= Ncurses::A_REVERSE
247
211
  footer = "R: #{@current_index+1}, C: #{@curpos+@pcol}, #{@list.length} lines "
@@ -309,7 +273,7 @@ module RubyCurses
309
273
  $log.debug " textview got ch #{ch} "
310
274
  @old_pcol = @pcol
311
275
  @buffer = @list[@current_index]
312
- if @buffer.nil? and row_count == 0
276
+ if @buffer.nil? && row_count == 0
313
277
  @list << "\r"
314
278
  @buffer = @list[@current_index]
315
279
  end
@@ -334,12 +298,10 @@ module RubyCurses
334
298
  # This should be configurable, or only if all rows are visible
335
299
  #get_window.ungetch(KEY_TAB) if ret == :NO_NEXT_ROW
336
300
  check_curpos
337
- when KEY_LEFT, ?h.getbyte(0)
338
- cursor_backward
339
- when KEY_RIGHT, ?l.getbyte(0)
340
- cursor_forward
341
- #when KEY_BACKSPACE, KEY_BSPACE, KEY_DELETE
301
+ #when KEY_LEFT, ?h.getbyte(0)
342
302
  #cursor_backward
303
+ #when KEY_RIGHT, ?l.getbyte(0)
304
+ #cursor_forward
343
305
  when ?\C-a.getbyte(0) #, ?0.getbyte(0)
344
306
  # take care of data that exceeds maxlen by scrolling and placing cursor at start
345
307
  @repaint_required = true if @pcol > 0 # tried other things but did not work
@@ -351,12 +313,7 @@ module RubyCurses
351
313
  # it only goes to end of visible screen, set_form probably does a sanity check
352
314
  blen = row_length # @buffer.rstrip.length FIXME
353
315
  set_form_col blen
354
- # search related
355
- when @KEY_ASK_FIND
356
- ask_search
357
- when @KEY_FIND_MORE
358
- find_more
359
- when 10, 13, KEY_ENTER
316
+ when KEY_ENTER, FFI::NCurses::KEY_ENTER
360
317
  #fire_handler :PRESS, self
361
318
  fire_action_event
362
319
  when ?0.getbyte(0)..?9.getbyte(0)
@@ -16,6 +16,7 @@ TODO:
16
16
  require 'rbcurse'
17
17
  require 'rbcurse/core/widgets/tree/treemodel'
18
18
  require 'rbcurse/core/widgets/tree/treecellrenderer'
19
+ require 'rbcurse/core/include/bordertitle'
19
20
 
20
21
  TreeSelectionEvent = Struct.new(:node, :tree, :state, :previous_node, :row_first)
21
22
 
@@ -32,9 +33,9 @@ module RubyCurses
32
33
  include ListScrollable
33
34
  #extend Forwardable
34
35
  dsl_accessor :height
35
- dsl_accessor :title
36
- dsl_property :title_attrib # bold, reverse, normal
37
- dsl_accessor :border_attrib, :border_color # FIXME not used currently
36
+ #dsl_accessor :title
37
+ #dsl_property :title_attrib # bold, reverse, normal
38
+ #dsl_accessor :border_attrib, :border_color # FIXME not used currently
38
39
 
39
40
  attr_reader :toprow
40
41
  # attr_reader :prow
@@ -44,7 +45,7 @@ module RubyCurses
44
45
  dsl_accessor :selected_color, :selected_bgcolor, :selected_attr
45
46
  dsl_accessor :max_visible_items # how many to display 2009-01-11 16:15
46
47
  dsl_accessor :cell_editing_allowed # obsolete
47
- dsl_accessor :suppress_borders
48
+ #dsl_accessor :suppress_borders
48
49
  dsl_property :show_selector
49
50
  dsl_property :row_selected_symbol # 2009-01-12 12:01 changed from selector to selected
50
51
  dsl_property :row_unselected_symbol # added 2009-01-12 12:00
@@ -82,14 +83,15 @@ module RubyCurses
82
83
  @longest_line = 0
83
84
 
84
85
 
85
- @win_left = 0
86
- @win_top = 0
86
+ #@win_left = 0
87
+ #@win_top = 0
87
88
  @_events.push(*[:ENTER_ROW, :LEAVE_ROW, :TREE_COLLAPSED_EVENT, :TREE_EXPANDED_EVENT, :TREE_SELECTION_EVENT, :TREE_WILL_COLLAPSE_EVENT, :TREE_WILL_EXPAND_EVENT])
88
89
 
89
90
 
90
91
  bind(:PROPERTY_CHANGE){|e| @cell_renderer = nil } # will be recreated if anything changes 2011-09-28 V1.3.1
91
92
  # FIXME the above is dangerous if user set his own renderer with some values XXX
92
93
  init_vars
94
+ bordertitle_init
93
95
 
94
96
  #if !@list.selected_index.nil?
95
97
  #set_focus_on @list.selected_index # the new version
@@ -109,48 +111,28 @@ module RubyCurses
109
111
  @row_offset = @col_offset = 0 if @suppress_borders
110
112
  @internal_width = 2 # taking into account borders accounting for 2 cols
111
113
  @internal_width = 0 if @suppress_borders # should it be 0 ???
114
+ map_keys unless @keys_mapped
112
115
 
113
116
  end
114
117
  # maps keys to methods
115
118
  # checks @key_map can be :emacs or :vim.
116
119
  def map_keys
117
120
  @keys_mapped = true
118
- $log.debug " cam in XXXX map keys"
119
- bind_key(32){ toggle_row_selection() }
120
- bind_key(KEY_ENTER) { toggle_expanded_state() }
121
- bind_key(?o) { toggle_expanded_state() }
122
- bind_key(?f){ ask_selection_for_char() }
123
- bind_key(?\M-v){ @one_key_selection = !@one_key_selection }
124
- bind_key(KEY_DOWN){ next_row() }
125
- bind_key(KEY_UP){ previous_row() }
126
- bind_key(?O){ expand_children() }
127
- bind_key(?X){ collapse_children() }
121
+ bind_key(32, 'toggle row selection'){ toggle_row_selection() }
122
+ bind_key(KEY_ENTER, 'toggle expanded state') { toggle_expanded_state() }
123
+ bind_key(?o, 'toggle expanded state') { toggle_expanded_state() }
124
+ bind_key(?f, 'first row starting with char'){ ask_selection_for_char() }
125
+ bind_key(?\M-v, 'one key selection toggle'){ @one_key_selection = !@one_key_selection }
126
+ bind_key(?O, 'expand children'){ expand_children() }
127
+ bind_key(?X, 'collapse children'){ collapse_children() }
128
128
  bind_key(?>, :scroll_right)
129
129
  bind_key(?<, :scroll_left)
130
- bind_key(?\M-l, :scroll_right)
131
- bind_key(?\M-h, :scroll_left)
132
130
  # TODO
133
- bind_key(?x){ collapse_parent() }
134
- bind_key(?p){ goto_parent() }
135
- if $key_map == :emacs
136
- $log.debug " EMACSam in XXXX map keys"
137
- bind_key(?\C-v){ scroll_forward }
138
- bind_key(?\M-v){ scroll_backward }
139
- bind_key(?\C-s){ ask_search() }
140
- bind_key(?\C-n){ next_row() }
141
- bind_key(?\C-p){ previous_row() }
142
- bind_key(?\M->){ goto_bottom() }
143
- bind_key(?\M-<){ goto_top() }
144
- else # :vim
145
- $log.debug " VIM cam in XXXX map keys"
146
- bind_key(?j){ next_row() }
147
- bind_key(?k){ previous_row() }
148
- bind_key(?\C-d){ scroll_forward }
149
- bind_key(?\C-b){ scroll_backward }
150
- bind_key(?G){ goto_bottom() }
151
- bind_key([?g,?g]){ goto_top() }
152
- bind_key(?/){ ask_search() }
153
- end
131
+ bind_key(?x, 'collapse parent'){ collapse_parent() }
132
+ bind_key(?p, 'goto parent'){ goto_parent() }
133
+ require 'rbcurse/core/include/listbindings'
134
+ #ListBindings.bindings
135
+ bindings
154
136
  end
155
137
 
156
138
  ##
@@ -270,7 +252,7 @@ module RubyCurses
270
252
  toggle_row_selection
271
253
  @default_value = nil
272
254
  end
273
- def print_borders
255
+ def OLDprint_borders
274
256
  width = @width
275
257
  height = @height-1 # 2010-01-04 15:30 BUFFERED HEIGHT
276
258
  window = @graphic # 2010-01-04 12:37 BUFFERED
@@ -284,7 +266,7 @@ module RubyCurses
284
266
  window.print_border startrow, startcol, height, width, bordercolor, borderatt
285
267
  print_title
286
268
  end
287
- def print_title
269
+ def OLDprint_title
288
270
  return unless @title
289
271
  _title = @title
290
272
  if @title.length > @width - 2
@@ -301,7 +283,7 @@ module RubyCurses
301
283
  @list
302
284
  end
303
285
  def get_window
304
- @graphic # 2010-01-04 12:37 BUFFERED
286
+ @graphic
305
287
  end
306
288
  ### END FOR scrollable ###
307
289
  # override widgets text
@@ -313,7 +295,6 @@ module RubyCurses
313
295
  return if @list.nil? || @list.empty?
314
296
  @current_index ||= 0
315
297
  @toprow ||= 0
316
- map_keys unless @keys_mapped
317
298
  h = scrollatrow()
318
299
  rc = row_count
319
300
  $log.debug " tree got ch #{ch}"
@@ -451,8 +432,8 @@ module RubyCurses
451
432
 
452
433
  raise " #{@name} neither form, nor target window given TV paint " unless my_win
453
434
  raise " #{@name} NO GRAPHIC set as yet TV paint " unless @graphic
454
- @win_left = my_win.left
455
- @win_top = my_win.top
435
+ #@win_left = my_win.left
436
+ #@win_top = my_win.top
456
437
 
457
438
  $log.debug "rtree repaint #{@name} graphic #{@graphic}"
458
439
  print_borders unless @suppress_borders # do this once only, unless everything changes