canis 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,7 +8,7 @@
8
8
  # Author: jkepler http://github.com/mare-imbrium/canis-core/
9
9
  # Date:
10
10
  # License: Same as Ruby's License (http://www.ruby-lang.org/LICENSE.txt)
11
- # Last update: 2014-08-10 14:53
11
+ # Last update: 2014-09-01 13:09
12
12
  #
13
13
  # CHANGES:
14
14
  # For some terminals, like xterm-256color which were not printing spaces
@@ -96,7 +96,6 @@ module Canis
96
96
  #len = @window.width
97
97
  #len = Ncurses.COLS-0 if len == 0
98
98
  #
99
- #@form.window.printstring r, c, "%-*s" % [len, htext], @color_pair, @attr
100
99
  @form.window.printstring r, c, htext, @color_pair, @attr
101
100
  end
102
101
  # internal method, called by repaint to print text_center in the center
@@ -105,7 +104,6 @@ module Canis
105
104
  len = win.getmaxx
106
105
  len = Ncurses.COLS-0 if len == 0 || len > Ncurses.COLS
107
106
  #
108
- #@form.window.printstring r, c, "%-*s" % [len, htext], @color_pair, @attr
109
107
  win.printstring r, ((len-htext.length)/2).floor, htext, @color_pair, @attr
110
108
  end
111
109
  # internal method to print text_right
@@ -113,7 +111,7 @@ module Canis
113
111
  hlen = htext.length
114
112
  len = @window.getmaxx # width was not changing when resize happens
115
113
  len = Ncurses.COLS-0 if len == 0 || len > Ncurses.COLS
116
- $log.debug " def print_top_right(#{htext}) #{len} #{Ncurses.COLS} "
114
+ #$log.debug " def print_top_right(#{htext}) #{len} #{Ncurses.COLS} "
117
115
  @form.window.printstring 0, len-hlen, htext, @color_pair, @attr
118
116
  end
119
117
  ##
@@ -269,6 +269,7 @@ module Canis
269
269
  ### FOR scrollable ###
270
270
  def repaint # textarea
271
271
  #return unless @repaint_required # 2010-02-12 19:08 TRYING - won't let footer print if only col move
272
+ @graphic = @form.window unless @graphic # print_border not getting it 2014-08-30 - 20:41
272
273
  paint if @repaint_required
273
274
  print_foot if @print_footer && !@suppress_borders && (@repaint_footer_required || @repaint_required)
274
275
  end
@@ -839,7 +840,8 @@ module Canis
839
840
  # not sure where to put this, once for all or repeat 2010-02-12 RFED16
840
841
  #my_win = @form? @form.window : @target_window
841
842
  #$log.warn "neither form not target window given!!! TA paint 751" unless my_win
842
- raise "Height or width nil h:#{@height} , w: #{@width} " if @height.nil? || @width.nil?
843
+ raise "height or width nil h:#{@height} , w: #{@width} " if @height.nil? || @width.nil?
844
+ raise "graphic is nil in textarea paint()" unless @graphic
843
845
  print_borders if (@suppress_borders == false && @repaint_all) # do this once only, unless everything changes
844
846
  rc = row_count
845
847
  _maxlen = @maxlen || @width-@internal_width # TODO fix in other branches remove ||=
@@ -5,7 +5,7 @@
5
5
  # Author: jkepler http://github.com/mare-imbrium/canis/
6
6
  # Date: 2014-04-06 - 19:37
7
7
  # License: Same as Ruby's License (http://www.ruby-lang.org/LICENSE.txt)
8
- # Last update: 2014-07-07 00:36
8
+ # Last update: 2014-08-28 17:05
9
9
  # ----------------------------------------------------------------------------- #
10
10
  # listbox.rb Copyright (C) 2012-2014 kepler
11
11
 
@@ -272,6 +272,7 @@ module Canis
272
272
  bg = @source.selected_bgcolor || bg
273
273
  att = @source.selected_attr || REVERSE
274
274
  cp = get_color($datacolor, fg, bg)
275
+
275
276
  elsif lineno == @source.current_index
276
277
  # print focussed row in different attrib
277
278
  if @source.should_show_focus
@@ -47,7 +47,11 @@ module Canis
47
47
  end
48
48
  def repaint
49
49
  acolor = get_color($reversecolor, @color, @bgcolor)
50
- @parent.window.printstring( @row, 0, "|%s|" % ("-"*@width), acolor)
50
+ #@parent.window.printstring( @row, 0, "|%s|" % ("-"*@width), acolor)
51
+ @parent.window.mvwhline( @row, 1, Ncurses::ACS_HLINE, @width)
52
+ # these 2 are probably overwritten by the borders
53
+ @parent.window.mvaddch( @row, 0, Ncurses::ACS_LTEE)
54
+ @parent.window.mvaddch( @row, @width+1, Ncurses::ACS_RTEE)
51
55
  end
52
56
  def destroy
53
57
  end
@@ -133,14 +137,8 @@ module Canis
133
137
  #$log.debug "HL XXX #{self} - > #{@parent} parent nil"
134
138
  end
135
139
  if tf
136
- #color = $datacolor
137
- #@parent.window.mvchgat(y=@row, x=1, @width, Ncurses::A_NORMAL, color, nil)
138
- # above line did not work in vt100, 200 terminals, next works.
139
- # @parent.window.mvchgat(y=@row, x=1, @width, Ncurses::A_REVERSE, $reversecolor, nil) # changed 2011 dts 2011-09-24 multicolumn, 1 skips the border
140
140
  @color_pair ||= get_color($reversecolor, @color, @bgcolor)
141
141
  @parent.window.mvchgat(y=@row, x=@col+1, @width, Ncurses::A_REVERSE, @color_pair, nil)
142
- #@parent.window.mvaddch @row, @col, "*".ord
143
- #@parent.window.wmove @row, @col # 2011-09-25 V1.3.1 NO EFFECT
144
142
  else
145
143
  repaint
146
144
  end
@@ -148,7 +146,6 @@ module Canis
148
146
  end
149
147
  def repaint # menuitem.repaint
150
148
  if @parent.nil? or @parent.window.nil?
151
- $log.debug "repaint #{self} parent nil"
152
149
  # return
153
150
  end
154
151
  r = @row
@@ -168,16 +165,18 @@ module Canis
168
165
  elsif !@mnemonic.nil?
169
166
  m = @mnemonic
170
167
  ix = text.index(m) || text.index(m.swapcase)
171
- charm = text[ix,1]
172
- #@parent.window.printstring( r, ix+1, charm, $datacolor) if !ix.nil?
173
- # prev line changed since not working in vt100 and vt200
174
- @parent.window.printstring( r, ix+1, charm, $reversecolor, 'reverse') if !ix.nil?
168
+ if ix
169
+ charm = text[ix,1]
170
+ #@parent.window.printstring( r, ix+1, charm, $datacolor) if !ix.nil?
171
+ # prev line changed since not working in vt100 and vt200
172
+ @parent.window.printstring( r, ix+1, charm, $reversecolor, 'reverse') if !ix.nil?
173
+ end
175
174
  end
176
175
  #@parent.window.wmove r, c # NO EFFECT
177
176
  end
178
177
  end
179
178
  def destroy
180
- $log.debug "DESTROY menuitem #{@text}"
179
+ #$log.debug "DESTROY menuitem #{@text}"
181
180
  end
182
181
  end
183
182
  ## class Menu. Contains menuitems, and can be a menuitem itself.
@@ -495,6 +494,7 @@ module Canis
495
494
  @layout = { :height => h-1, :width => ww, :top => t, :left => @coffset }
496
495
  @win = Canis::Window.new(@layout)
497
496
  @window = @win
497
+ @window.name = "WINDOW:menu"
498
498
  @color_pair ||= get_color($datacolor, @color, @bgcolor)
499
499
  @rev_color_pair ||= get_color($reversecolor, @color, @bgcolor)
500
500
  @win.bkgd(Ncurses.COLOR_PAIR(@color_pair));
@@ -532,18 +532,22 @@ module Canis
532
532
  @window.printstring( h-2, 0, "+%s+" % ("-"*(ww1)), @rev_color_pair)
533
533
  # in case of multiple rows
534
534
  @window.printstring( r, c, "+%s+" % ("-"*(ww1)), @rev_color_pair)
535
+ # added box with proper ncurses extended char set 2014-08-27 - 14:30
536
+ @window.print_border_only 0,0,h-2, ww, @rev_color_pair
535
537
  select_item 0
536
538
  @window.refresh
537
539
  return @window
538
540
  end
539
541
  # private
542
+ # returns length of longest item in array
540
543
  def array_width a
541
544
  longest = a.max {|a,b| a.to_s.length <=> b.to_s.length }
542
545
  #$log.debug "array width #{longest}"
543
546
  longest.to_s.length
544
547
  end
548
+ # destroys windows and each item within (submenus)
545
549
  def destroy
546
- $log.debug "DESTRY menu #{@text}"
550
+ $log.debug "DESTROY menu #{@text}"
547
551
  return if @window.nil?
548
552
  @visible = false
549
553
  #2014-05-12 - 20:53 next 3 replaced with destroy since destroy refreshes root window.
@@ -552,7 +556,6 @@ module Canis
552
556
  #@window.delwin if !@window.nil?
553
557
  @window.destroy
554
558
  @items.each do |item|
555
- #next if item == :SEPARATOR
556
559
  item.destroy
557
560
  end
558
561
  @window = nil
@@ -689,13 +692,13 @@ module Canis
689
692
  @active_index = 0
690
693
  @repaint_required = true
691
694
  end
695
+ # is this widget focusable, always returns false
692
696
  def focusable
693
697
  false
694
698
  end
695
699
  alias :focusable? focusable
696
- # add a precreated menu
700
+ # add a precreated menu, returning self
697
701
  def add menu
698
- #$log.debug "YYYY inside MB: add #{menu.text} "
699
702
  @items << menu
700
703
  return self
701
704
  end
@@ -705,13 +708,13 @@ module Canis
705
708
  # 2010-09-10 12:07 added while simplifying the interface
706
709
  # this calls add so you get the MB back, not a ref to the menu created NOTE
707
710
  def menu text, &block
708
- #$log.debug "YYYY inside MB: menu text #{text} "
709
711
  m = Menu.new text, &block
710
712
  m.color = @color
711
713
  m.bgcolor = @bgcolor
712
714
  add m
713
715
  return m
714
716
  end
717
+ # move focus to next menu
715
718
  def next_menu
716
719
  #$log.debug "next meu: #{@active_index} "
717
720
  if @active_index < @items.length-1
@@ -720,6 +723,7 @@ module Canis
720
723
  set_menu 0
721
724
  end
722
725
  end
726
+ # move focus to previous menu
723
727
  def prev_menu
724
728
  #$log.debug "prev meu: #{@active_index} "
725
729
  if @active_index > 0
@@ -728,18 +732,29 @@ module Canis
728
732
  set_menu @items.length-1
729
733
  end
730
734
  end
735
+
736
+ # set the given menu index as the current or active menu
737
+ # after closing the active menu.
738
+ # @param Fixnum index of menu to activate, starting 0
731
739
  def set_menu index
732
740
  #$log.debug "set meu: #{@active_index} #{index}"
741
+ # first leave the existing window
733
742
  menu = @items[@active_index]
734
743
  menu.on_leave # hide its window, if open
744
+ # now move to given menu
735
745
  @active_index = index
736
746
  menu = @items[@active_index]
737
747
  menu.on_enter #display window, if previous was displayed
748
+ # move cursor to selected menu option on top, not inside list
738
749
  @window.wmove menu.row, menu.col
739
750
  # menu.show
740
751
  # menu.window.wrefresh # XXX we need this
741
752
  end
742
753
 
754
+ # keep the menu bar visible at all times.
755
+ # If not, then it appears only on using the toggle key.
756
+ # In any case, control only goes to the menubar when you use the toggle key,
757
+ # so it is best NOT to keep it visible.
743
758
  def keep_visible flag=nil
744
759
  return @keep_visible unless flag
745
760
  @keep_visible = flag
@@ -760,7 +775,7 @@ module Canis
760
775
  when -1
761
776
  next
762
777
  when KEY_DOWN
763
- #$log.debug "insdie keyDOWN : #{ch}"
778
+
764
779
  if !@selected
765
780
  current_menu.fire
766
781
  else
@@ -770,28 +785,20 @@ module Canis
770
785
  @selected = true
771
786
  when KEY_ENTER, 10, 13, 32
772
787
  @selected = true
773
- #$log.debug " mb insdie ENTER : #{current_menu}"
774
- ret = current_menu.handle_key ch
775
- #$log.debug "ret = #{ret} mb insdie ENTER : #{current_menu}"
776
- #break; ## 2008-12-29 18:00 This will close after firing
777
- #anything
778
- break if ret == :CLOSE
788
+ ret = current_menu.handle_key ch
789
+ #break; ## 2008-12-29 18:00 This will close after firing anything
790
+ break if ret == :CLOSE
779
791
  when KEY_UP
780
- #$log.debug " mb insdie keyUPP : #{ch}"
781
792
  current_menu.handle_key ch
782
793
  when KEY_LEFT
783
- #$log.debug " mb insdie KEYLEFT : #{ch}"
784
794
  ret = current_menu.handle_key ch
785
795
  prev_menu if ret == :UNHANDLED
786
- #display_items if @selected
787
796
  when KEY_RIGHT
788
- #$log.debug " mb insdie KEYRIGHT : #{ch}"
789
797
  ret = current_menu.handle_key ch
790
798
  next_menu if ret == :UNHANDLED
791
799
  when ?\C-g.getbyte(0) # abort
792
800
  throw :menubarclose
793
801
  else
794
- #$log.debug " mb insdie ELSE : #{ch}"
795
802
  ret = current_menu.handle_key ch
796
803
  if ret == :UNHANDLED
797
804
  Ncurses.beep
@@ -808,11 +815,13 @@ module Canis
808
815
  ensure
809
816
  #ensure is required becos one can throw a :close
810
817
  $log.debug " DESTROY IN ENSURE"
811
- current_menu.clear_menus #@@menus = [] # added 2009-01-23 13:21
818
+ current_menu.clear_menus
812
819
  @repaint_required = false
813
820
  destroy # Note that we destroy the menu bar upon exit
814
821
  end
815
822
  end
823
+
824
+ # returns current_menu
816
825
  def current_menu
817
826
  @items[@active_index]
818
827
  end
@@ -877,8 +886,13 @@ module Canis
877
886
  end
878
887
  def create_window_menubar
879
888
  @layout = { :height => 1, :width => 0, :top => 0, :left => 0 }
889
+ $log.debug "create window menu bar "
880
890
  @win = Canis::Window.new(@layout)
891
+ @win.name = "WINDOW:menubar"
881
892
  @window = @win
893
+ # hack since we put all windows in there, and this should not be coming after Root.
894
+ # This should not have been a window in the first place.
895
+ $global_windows.delete @win
882
896
  att = get_attrib @attr
883
897
  @win.bkgd(Ncurses.COLOR_PAIR(5)); # <---- FIXME
884
898
  len = @window.width
@@ -5,7 +5,7 @@
5
5
  # Author: jkepler http://github.com/mare-imbrium/canis/
6
6
  # Date: 03.11.11 - 22:15
7
7
  # License: Same as Ruby's License (http://www.ruby-lang.org/LICENSE.txt)
8
- # Last update: 2014-07-08 18:05
8
+ # Last update: 2014-08-30 17:47
9
9
  # == CHANGES
10
10
  # == TODO
11
11
  # _ <ENTER> should result in OK being pressed if its default, ESC should result in cancel esp 2 time
@@ -74,6 +74,8 @@ module Canis
74
74
 
75
75
  end
76
76
  def item widget
77
+ # # normalcolor gives a white on black stark title like links and elinks
78
+ # You can also do 'acolor' to give you a sober title that does not take attention away, like mc
77
79
  # remove from existing form if set, problem with this is mnemonics -- rare situation.
78
80
  if widget.form
79
81
  f = widget.form
@@ -134,8 +136,11 @@ module Canis
134
136
  @window.print_border_mb 1,2, @height, @width, bordercolor, borderatt
135
137
  @window.wattroff(Ncurses.COLOR_PAIR(bordercolor) | (borderatt || FFI::NCurses::A_NORMAL))
136
138
  @title ||= "+-+"
139
+ @title_color ||= $normalcolor
137
140
  title = " "+@title+" "
138
- @window.printstring(@row=1,@col=(@width-title.length)/2,title, color=$normalcolor)
141
+ # normalcolor gives a white on black stark title like links and elinks
142
+ # You can also do 'acolor' to give you a sober title that does not take attention away, like mc
143
+ @window.printstring(@row=1,@col=(@width-title.length)/2,title, color=@title_color)
139
144
  #print_message if @message
140
145
  create_action_buttons unless @action_buttons
141
146
  end
@@ -227,6 +232,46 @@ module Canis
227
232
  end
228
233
  alias :text= :text
229
234
 
235
+ # similar to +text+ but to view a hash using a tree object, so one can
236
+ # drill down.
237
+ # Added on 2014-08-30 - 17:39 to view an objects instance_variables and public_methods.
238
+ def tree message
239
+ require 'canis/core/widgets/tree'
240
+ @suggested_w = @width || (FFI::NCurses.COLS * 0.80).floor
241
+ @suggested_h = @height || (FFI::NCurses.LINES * 0.80).floor
242
+
243
+ message_col = 3
244
+ r = 2
245
+ display_length = @suggested_w-4
246
+ display_length -= message_col
247
+ clr = @color || :white
248
+ bgclr = @bgcolor || :black
249
+
250
+ # now that we have moved to textpad that +8 was causing black lines to remain after the text
251
+ #message_height = message.size #+ 8
252
+ message_height = 20
253
+ # reduce if possible if its not required.
254
+ #
255
+ r1 = (FFI::NCurses.LINES-@suggested_h)/2
256
+ r1 = r1.floor
257
+ w = @suggested_w
258
+ c1 = (FFI::NCurses.COLS-w)/2
259
+ c1 = c1.floor
260
+ @suggested_row = r1
261
+ @suggested_col = c1
262
+ brow = @button_row || @suggested_h-4
263
+ available_ht = brow - r + 1
264
+ message_height = [message_height, available_ht].min
265
+ # replaced 2014-04-14 - 23:51
266
+ tree = Canis::Tree.new @form, {:name=>"treedialogtree", :data => message,
267
+ :row => r, :col => message_col, :width => display_length, :suppress_borders => true,
268
+ :height => message_height, :bgcolor => bgclr , :color => clr}
269
+ #message_label.set_content message
270
+ tree.treemodel.root_visible = false
271
+ yield tree if block_given?
272
+
273
+ end
274
+
230
275
  # returns button index (or in some cases, whatever value was thrown
231
276
  # if user did not specify any button_type but gave his own and did throw (:close, x)
232
277
  private
@@ -235,6 +280,10 @@ module Canis
235
280
  while((ch = @window.getchar()) != FFI::NCurses::KEY_F10 )
236
281
  break if ch == ?\C-q.getbyte(0) || ch == 2727 # added double esc
237
282
  begin
283
+ # trying out repaint of window also if repaint all asked for. 12 is C-l
284
+ if ch == 1000 or ch == 12
285
+ repaint
286
+ end
238
287
  @form.handle_key(ch)
239
288
  @window.wrefresh
240
289
  rescue => err
@@ -9,7 +9,7 @@
9
9
  * Author: jkepler (ABCD)
10
10
  * Date: 2008-11-19 12:49
11
11
  * License: Same as Ruby's License (http://www.ruby-lang.org/LICENSE.txt)
12
- * Last update: 2014-08-18 14:58
12
+ * Last update: 2014-08-28 16:58
13
13
 
14
14
  == CHANGES
15
15
  * 2011-10-2 Added PropertyVetoException to rollback changes to property
@@ -477,8 +477,7 @@ module Canis
477
477
  case keycode
478
478
  when String
479
479
  # single assignment
480
- keycode = keycode.getbyte(0) #if keycode.class==String ## 1.9 2009-10-05 19:40
481
- #@_key_map[keycode] = blk
480
+ keycode = keycode.getbyte(0)
482
481
  when Array
483
482
  # double assignment
484
483
  # this means that all these keys have to be pressed in succession for this block, like "gg" or "C-x C-c"
@@ -545,7 +544,7 @@ module Canis
545
544
  $log.debug " composite contains #{key} : #{val} "
546
545
  end
547
546
  def check_composite_mapping key, window
548
- $log.debug "inside check with #{key} "
547
+ #$log.debug "inside check with #{key} "
549
548
  return nil if !@_key_composite_map
550
549
  return nil if !@_key_composite_map.key? key
551
550
  $log.debug " composite has #{key} "
@@ -577,7 +576,7 @@ module Canis
577
576
  # instead of just nil, we need to go back up, but since not recursive ...
578
577
  #return nil unless n
579
578
  unless n
580
- # testing shift otherwise it seems current key evaluated twice
579
+ # testing shift otherwise it seems current key evaluated twice 2014-08-17
581
580
  unconsumed.shift
582
581
  $log.debug "push unconsumed:#{unconsumed} " unless n
583
582
  unconsumed.each {|e| window.ungetch(e)} unless n
@@ -1244,7 +1243,7 @@ module Canis
1244
1243
  fire_handler :ENTER, self
1245
1244
  end
1246
1245
  end
1247
- ## got left out by mistake 2008-11-26 20:20
1246
+ ## Called when user exits a widget
1248
1247
  def on_leave
1249
1248
  @state = :NORMAL # duplicating since often these are inside containers
1250
1249
  @focussed = false
@@ -1609,7 +1608,8 @@ module Canis
1609
1608
  # what kind of key-bindings do you want, :vim or :emacs
1610
1609
  $key_map_type ||= :vim ## :emacs or :vim, keys to be defined accordingly. TODO
1611
1610
 
1612
- bind_key(KEY_F1, 'help') { hm = help_manager(); hm.display_help }
1611
+ #bind_key(KEY_F1, 'help') { hm = help_manager(); hm.display_help }
1612
+ map_keys unless @keys_mapped
1613
1613
  end
1614
1614
  ##
1615
1615
  # set this menubar as the form's menu bar.
@@ -2064,6 +2064,7 @@ module Canis
2064
2064
  #
2065
2065
  def map_keys
2066
2066
  return if @keys_mapped
2067
+ bind_key(KEY_F1, 'help') { hm = help_manager(); hm.display_help }
2067
2068
  bind_keys([?\M-?,?\?], 'show field help') {
2068
2069
  #if get_current_field.help_text
2069
2070
  #textdialog(get_current_field.help_text, 'title' => 'Help Text', :bgcolor => 'green', :color => :white)
@@ -2084,17 +2085,19 @@ module Canis
2084
2085
  # this forces a repaint of all visible widgets and has been added for the case of overlapping
2085
2086
  # windows, since a black rectangle is often left when a window is destroyed. This is internally
2086
2087
  # triggered whenever a window is destroyed, and currently only for root window.
2088
+ # NOTE: often the window itself or spaces between widgets also gets cleared, so basically
2089
+ # the window itself may need recreating ? 2014-08-18 - 21:03
2087
2090
  def repaint_all_widgets
2088
- #$log.debug " REPAINT ALL in FORM called "
2091
+ $log.debug " REPAINT ALL in FORM called "
2089
2092
  @widgets.each do |w|
2090
2093
  next if w.visible == false
2091
2094
  next if w.class.to_s == "Canis::MenuBar"
2092
- #$log.debug " ---- REPAINT ALL #{w.name} "
2095
+ $log.debug " ---- REPAINT ALL #{w.name} "
2093
2096
  #w.repaint_required true
2094
2097
  w.repaint_all true
2095
2098
  w.repaint
2096
2099
  end
2097
- #$log.debug " REPAINT ALL in FORM complete "
2100
+ $log.debug " REPAINT ALL in FORM complete "
2098
2101
  # place cursor on current_widget
2099
2102
  setpos
2100
2103
  end
@@ -2107,7 +2110,8 @@ module Canis
2107
2110
  # NOTE : please rescue exceptions when you use this in your main loop and alert() user
2108
2111
  #
2109
2112
  def handle_key(ch)
2110
- map_keys unless @keys_mapped
2113
+ # 2014-08-19 - 21:10 moving to init, so that user may override or remove
2114
+ #map_keys unless @keys_mapped
2111
2115
  handled = :UNHANDLED # 2011-10-4
2112
2116
  if ch == ?\C-u.getbyte(0)
2113
2117
  ret = universal_argument
@@ -2127,11 +2131,16 @@ module Canis
2127
2131
  case ch
2128
2132
  when -1
2129
2133
  return
2130
- when 1000
2131
- $log.debug " form RESIZE HK #{ch} #{self}, #{@name} "
2134
+ when 1000, 12
2135
+ # NOTE this works if widgets cover entire screen like text areas and lists but not in
2136
+ # dialogs where there is blank space. only widgets are painted.
2137
+ # testing out 12 is C-l
2138
+ $log.debug " form REFRESH_ALL repaint_all HK #{ch} #{self}, #{@name} "
2132
2139
  repaint_all_widgets
2133
2140
  return
2134
- when FFI::NCurses::KEY_RESIZE # SIGWINCH
2141
+ when FFI::NCurses::KEY_RESIZE # SIGWINCH
2142
+ # note that in windows that have dialogs or text painted on window such as title or
2143
+ # box, the clear call will clear it out. these are not redrawn.
2135
2144
  lines = Ncurses.LINES
2136
2145
  cols = Ncurses.COLS
2137
2146
  x = Ncurses.stdscr.getmaxy
@@ -2578,7 +2587,6 @@ module Canis
2578
2587
  #
2579
2588
  def handle_key ch
2580
2589
  @repaint_required = true
2581
- #map_keys unless @keys_mapped # moved to init
2582
2590
  case ch
2583
2591
  when 32..126
2584
2592
  #$log.debug("FIELD: ch #{ch} ,at #{@curpos}, buffer:[#{@buffer}] bl: #{@buffer.to_s.length}")