rbcurse 1.1.3 → 1.1.4
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.
- data/CHANGELOG +31 -0
- data/NOTES +104 -0
- data/README.markdown +38 -50
- data/VERSION +1 -1
- data/examples/README.txt +36 -0
- data/examples/data.txt +683 -0
- data/examples/rfe.rb +14 -3
- data/examples/sqlc.rb +6 -1
- data/examples/sqlm.rb +7 -1
- data/examples/test1.rb +1 -1
- data/examples/test2.rb +3 -3
- data/examples/testchars.rb +1 -1
- data/examples/testcombo.rb +1 -1
- data/examples/testkeypress.rb +2 -1
- data/examples/testlistbox.rb +114 -0
- data/examples/testmenu.rb +1 -1
- data/examples/testmulticomp.rb +1 -1
- data/examples/testscroller.rb +1 -1
- data/examples/testtable.rb +1 -1
- data/examples/testtabp.rb +1 -1
- data/examples/testtestw.rb +1 -1
- data/examples/testtodo.rb +1 -1
- data/examples/testtpane.rb +1 -1
- data/examples/testtpane2.rb +1 -1
- data/examples/testtpanetable.rb +1 -1
- data/examples/todo.rb +1 -0
- data/examples/viewtodo.rb +91 -33
- data/lib/rbcurse/extras/tableextended.rb +40 -0
- data/lib/rbcurse/rlistbox.rb +8 -0
- data/lib/rbcurse/rtable.rb +46 -12
- data/lib/rbcurse/rwidget.rb +8 -3
- data/lib/rbcurse/undomanager.rb +8 -1
- data/lib/rbcurse/vieditable.rb +45 -3
- data/rbcurse.gemspec +10 -4
- metadata +13 -4
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            # Provides extended abilities to a table
         | 
| 2 | 
            +
            # so user does not need to code it into his app.
         | 
| 3 | 
            +
            # At the same time, i don't want to weigh down Table with too much functionality/
         | 
| 4 | 
            +
            # I am putting in some stuff, so that table columns can be resized, using multipliers.
         | 
| 5 | 
            +
            # That allows us to redistribute the space taken or released across rows.
         | 
| 6 | 
            +
            # Other options: dd, C, . (repeat) and how about range operations
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            module TableExtended
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              ##
         | 
| 11 | 
            +
              # increase the focused column
         | 
| 12 | 
            +
              # If no size passed, then use numeric multiplier, else 1
         | 
| 13 | 
            +
              # Typically, one would bind a key such as + to this method
         | 
| 14 | 
            +
              # e.g. atable.bind_key(?+) { atable.increase_column ; }
         | 
| 15 | 
            +
              # See examples/viewtodo.rb for usage
         | 
| 16 | 
            +
              def increase_column num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                acolumn = column focussed_col()
         | 
| 19 | 
            +
                #num = $multiplier || 1
         | 
| 20 | 
            +
                $multiplier = 0
         | 
| 21 | 
            +
                w = acolumn.width + num
         | 
| 22 | 
            +
                acolumn.width w
         | 
| 23 | 
            +
                #atable.table_structure_changed
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
              # decrease the focused column
         | 
| 26 | 
            +
              # If no size passed, then use numeric multiplier, else 1
         | 
| 27 | 
            +
              # Typically, one would bind a key such as - to this method
         | 
| 28 | 
            +
              def decrease_column num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
         | 
| 29 | 
            +
                acolumn = column focussed_col()
         | 
| 30 | 
            +
                w = acolumn.width - num
         | 
| 31 | 
            +
                $multiplier = 0
         | 
| 32 | 
            +
                if w > 3
         | 
| 33 | 
            +
                  acolumn.width w
         | 
| 34 | 
            +
                  #atable.table_structure_changed
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 40 | 
            +
            end
         | 
    
        data/lib/rbcurse/rlistbox.rb
    CHANGED
    
    | @@ -163,6 +163,14 @@ module RubyCurses | |
| 163 163 | 
             
                  return nil
         | 
| 164 164 | 
             
                  #return find_match @last_regex, start, @search_end_ix
         | 
| 165 165 | 
             
                end
         | 
| 166 | 
            +
                ##
         | 
| 167 | 
            +
                # added 2010-05-23 12:10 for listeditable
         | 
| 168 | 
            +
                def slice!(line, howmany)
         | 
| 169 | 
            +
                  ret = @list.slice!(line, howmany)
         | 
| 170 | 
            +
                  lde = ListDataEvent.new(line, line+howmany-1, self, :INTERVAL_REMOVED)
         | 
| 171 | 
            +
                  fire_handler :LIST_DATA_EVENT, lde
         | 
| 172 | 
            +
                  return ret
         | 
| 173 | 
            +
                end
         | 
| 166 174 |  | 
| 167 175 | 
             
                alias :to_array :values
         | 
| 168 176 | 
             
              end # class ListDataModel
         | 
    
        data/lib/rbcurse/rtable.rb
    CHANGED
    
    | @@ -113,6 +113,16 @@ module RubyCurses | |
| 113 113 | 
             
                  bind_key(@KEY_ASK_FIND_BACKWARD) { ask_search_backward }
         | 
| 114 114 | 
             
                  bind_key(@KEY_FIND_NEXT) { find_next }
         | 
| 115 115 | 
             
                  bind_key(@KEY_FIND_PREV) { find_prev }
         | 
| 116 | 
            +
                  # added 2010-05-12 21:41 for vim keys, will work if cell editing allowed is false
         | 
| 117 | 
            +
                  # user should be able to switch to editable and off so he can use keys TODO
         | 
| 118 | 
            +
                  # TODO vim_editable mode: C dd etc . to repeat change, how about range commands like vim
         | 
| 119 | 
            +
                  # TODO use numeric to widen, so we can distribute spacing
         | 
| 120 | 
            +
                  bind_key(?j){ next_row() }
         | 
| 121 | 
            +
                  bind_key(?k){ previous_row() }
         | 
| 122 | 
            +
                  bind_key(?G){ goto_bottom() }
         | 
| 123 | 
            +
                  bind_key([?g,?g]){ goto_top() }
         | 
| 124 | 
            +
                  bind_key(?l) { next_column }
         | 
| 125 | 
            +
                  bind_key(?h) { previous_column }
         | 
| 116 126 | 
             
                end
         | 
| 117 127 |  | 
| 118 128 | 
             
                def focussed_row
         | 
| @@ -538,7 +548,7 @@ module RubyCurses | |
| 538 548 | 
             
                  when ?\C-p.getbyte(0)
         | 
| 539 549 | 
             
                    editing_stopped if @is_editing # 2009-01-16 16:06 
         | 
| 540 550 | 
             
                    scroll_backward
         | 
| 541 | 
            -
                  when 48 | 
| 551 | 
            +
                  when @KEY_GOTO_TOP # removed 48 (0) from here so we can trap numbers
         | 
| 542 552 | 
             
                    # please note that C-[ gives 27, same as esc so will respond after ages
         | 
| 543 553 | 
             
                    editing_stopped if @is_editing # 2009-01-16 16:06 
         | 
| 544 554 | 
             
                    goto_top
         | 
| @@ -551,9 +561,14 @@ module RubyCurses | |
| 551 561 | 
             
                  when @KEY_SCROLL_LEFT
         | 
| 552 562 | 
             
                    editing_stopped if @is_editing # dts 2009-02-17 00:35 
         | 
| 553 563 | 
             
                    scroll_left
         | 
| 564 | 
            +
                  when ?0.getbyte(0)..?9.getbyte(0)
         | 
| 565 | 
            +
                    $multiplier *= 10 ; $multiplier += (ch-48)
         | 
| 566 | 
            +
                    #$log.debug " setting mult to #{$multiplier} in list "
         | 
| 567 | 
            +
                    return 0
         | 
| 554 568 | 
             
                  else
         | 
| 555 569 | 
             
                    # there could be a case of editing here too!
         | 
| 556 570 | 
             
                    ret = process_key ch, self
         | 
| 571 | 
            +
                    $multiplier = 0 
         | 
| 557 572 | 
             
                    return :UNHANDLED if ret == :UNHANDLED
         | 
| 558 573 | 
             
                  end
         | 
| 559 574 | 
             
                  return 0 # added 2010-03-14 13:27 
         | 
| @@ -607,26 +622,40 @@ module RubyCurses | |
| 607 622 | 
             
                  cancel_editor
         | 
| 608 623 | 
             
                end
         | 
| 609 624 | 
             
                ##
         | 
| 610 | 
            -
                def previous_row
         | 
| 625 | 
            +
                #def previous_row
         | 
| 626 | 
            +
                def previous_row num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
         | 
| 611 627 | 
             
                  @oldrow = @current_index
         | 
| 612 | 
            -
             | 
| 628 | 
            +
                #  @current_index -= 1 if @current_index > 0
         | 
| 629 | 
            +
                  num.times { 
         | 
| 630 | 
            +
                    @current_index -= 1 if @current_index > 0
         | 
| 631 | 
            +
                  }
         | 
| 632 | 
            +
                  $multiplier = 0
         | 
| 613 633 | 
             
                  bounds_check
         | 
| 614 634 | 
             
                end
         | 
| 615 | 
            -
                def next_row
         | 
| 635 | 
            +
                #def next_row
         | 
| 636 | 
            +
                # goto next row
         | 
| 637 | 
            +
                # added multipler 2010-05-12 20:51 
         | 
| 638 | 
            +
                def next_row num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
         | 
| 616 639 | 
             
                  rc = row_count
         | 
| 617 640 | 
             
                  @oldrow = @current_index
         | 
| 618 641 | 
             
                  # don't go on if rc 2009-01-16 19:55  XXX
         | 
| 619 642 | 
             
                  if @current_index < rc
         | 
| 620 | 
            -
                     | 
| 643 | 
            +
                    #@current_index += 1 
         | 
| 644 | 
            +
                    @current_index += 1*num if @current_index < rc
         | 
| 621 645 | 
             
                    bounds_check
         | 
| 622 646 | 
             
                  end
         | 
| 647 | 
            +
                  $multiplier = 0
         | 
| 623 648 | 
             
                end
         | 
| 624 649 | 
             
                # move focus to next column
         | 
| 625 650 | 
             
                #  2009-10-07 12:47 behavior change. earlier this would move to next row
         | 
| 626 651 | 
             
                #  if focus was on last visible field. Now it scrolls so that first invisible
         | 
| 627 652 | 
             
                #  field becomes the first column. 
         | 
| 628 | 
            -
                 | 
| 629 | 
            -
             | 
| 653 | 
            +
                #  # 2010-05-13 12:42 added multiplier
         | 
| 654 | 
            +
                #def next_column
         | 
| 655 | 
            +
                def next_column num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
         | 
| 656 | 
            +
                  $multiplier = 0 # so not used again in next row
         | 
| 657 | 
            +
                  #v =  @current_column+1 
         | 
| 658 | 
            +
                  v =  @current_column + num
         | 
| 630 659 | 
             
                  # normal situation, there is a next column go to
         | 
| 631 660 | 
             
                  if v < @table_column_model.column_count 
         | 
| 632 661 | 
             
                    if v <= @_last_column_print
         | 
| @@ -647,7 +676,7 @@ module RubyCurses | |
| 647 676 | 
             
                      @current_column = 0
         | 
| 648 677 | 
             
                      #@current_column = @_first_column_print # added 2009-02-17 00:01 
         | 
| 649 678 | 
             
                      @_first_column_print = 0 # added 2009-10-07 11:25 
         | 
| 650 | 
            -
                      next_row
         | 
| 679 | 
            +
                      next_row 1
         | 
| 651 680 | 
             
                      set_form_col
         | 
| 652 681 | 
             
                      @repaint_required = true
         | 
| 653 682 | 
             
                      @table_changed = true    # so columns are modified by print_header
         | 
| @@ -659,8 +688,9 @@ module RubyCurses | |
| 659 688 | 
             
                # move focus to previous column
         | 
| 660 689 | 
             
                # if you are on first column, check if scrolling required, else move up to
         | 
| 661 690 | 
             
                # last *visible* column of prev row
         | 
| 662 | 
            -
                def previous_column
         | 
| 663 | 
            -
             | 
| 691 | 
            +
                #def previous_column
         | 
| 692 | 
            +
                def previous_column num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
         | 
| 693 | 
            +
                  v =  @current_column - num # 2010-05-13 12:44 1 to num
         | 
| 664 694 | 
             
                  # returning unhandled so focus can go to prev field auto
         | 
| 665 695 | 
             
                  if v < @_first_column_print and @current_index <= 0
         | 
| 666 696 | 
             
                    return :UNHANDLED
         | 
| @@ -674,7 +704,7 @@ module RubyCurses | |
| 674 704 | 
             
                      @current_column = @_last_column_print # added 2009-02-17 00:01 
         | 
| 675 705 | 
             
                      $log.debug " XXXXXX prev col #{@current_column}, las #{@_last_column_print}, fi: #{@_first_column_print}"
         | 
| 676 706 | 
             
                      set_form_col
         | 
| 677 | 
            -
                      previous_row
         | 
| 707 | 
            +
                      previous_row 1
         | 
| 678 708 | 
             
                    end
         | 
| 679 709 | 
             
                  else
         | 
| 680 710 | 
             
                    current_column v
         | 
| @@ -1090,8 +1120,12 @@ module RubyCurses | |
| 1090 1120 | 
             
                    end
         | 
| 1091 1121 | 
             
                  end
         | 
| 1092 1122 | 
             
                  total = 0
         | 
| 1093 | 
            -
                   | 
| 1123 | 
            +
                  # crashing in 1.9.2 due to hash key no insert in iteration 2010-08-22 20:09 
         | 
| 1124 | 
            +
                  #colwidths.each_pair do |k,v|
         | 
| 1125 | 
            +
                  tkeys = colwidths.keys
         | 
| 1126 | 
            +
                  tkeys.each do |k|
         | 
| 1094 1127 | 
             
                    name = columns[k.to_i]
         | 
| 1128 | 
            +
                    v = colwidths[k]
         | 
| 1095 1129 | 
             
                    colwidths[name] = v
         | 
| 1096 1130 | 
             
                    total += v
         | 
| 1097 1131 | 
             
                  end
         | 
    
        data/lib/rbcurse/rwidget.rb
    CHANGED
    
    | @@ -348,7 +348,12 @@ module RubyCurses | |
| 348 348 | 
             
                   # this bypasses our methods and sets directly !
         | 
| 349 349 | 
             
                  def config_setup aconfig
         | 
| 350 350 | 
             
                    @config = aconfig
         | 
| 351 | 
            -
                    @config | 
| 351 | 
            +
                    # this creates a problem in 1.9.2 since variable_set sets @config 2010-08-22 19:05 RK
         | 
| 352 | 
            +
                    #@config.each_pair { |k,v| variable_set(k,v) }
         | 
| 353 | 
            +
                    keys = @config.keys
         | 
| 354 | 
            +
                    keys.each do |e| 
         | 
| 355 | 
            +
                      variable_set(e, @config[e])
         | 
| 356 | 
            +
                    end
         | 
| 352 357 | 
             
                  end
         | 
| 353 358 | 
             
                end # module config
         | 
| 354 359 | 
             
                ##
         | 
| @@ -1041,7 +1046,7 @@ module RubyCurses | |
| 1041 1046 | 
             
                  @rows_panned = @cols_panned = 0 # how many rows were panned, typically at a higher level
         | 
| 1042 1047 | 
             
                  @firsttime = true; # added on 2010-01-02 19:21 to prevent scrolling crash ! 
         | 
| 1043 1048 | 
             
                  @name ||= ""
         | 
| 1044 | 
            -
                  $kill_ring ||= [] # 2010-03-09 22:42 so textarea and others can copy and paste
         | 
| 1049 | 
            +
                  $kill_ring ||= [] # 2010-03-09 22:42 so textarea and others can copy and paste emacs EMACS
         | 
| 1045 1050 | 
             
                  $kill_ring_pointer = 0 # needs to be incremented with each append, moved with yank-pop
         | 
| 1046 1051 | 
             
                  $append_next_kill = false
         | 
| 1047 1052 | 
             
                  $kill_last_pop_size = 0 # size of last pop which has to be cleared
         | 
| @@ -1548,7 +1553,7 @@ module RubyCurses | |
| 1548 1553 | 
             
                      return 0 if ret == 0
         | 
| 1549 1554 | 
             
                      ch = ret # unhandled char
         | 
| 1550 1555 | 
             
                    elsif ch >= ?\M-1.getbyte(0) && ch <= ?\M-9.getbyte(0)
         | 
| 1551 | 
            -
                      if $catch_alt_digits
         | 
| 1556 | 
            +
                      if $catch_alt_digits # emacs EMACS
         | 
| 1552 1557 | 
             
                        ret = digit_argument ch
         | 
| 1553 1558 | 
             
                        $log.debug " FORM set MULT DA to #{$multiplier}, ret = #{ret}  "
         | 
| 1554 1559 | 
             
                        return 0 if ret == 0 # don't see this happening
         | 
    
        data/lib/rbcurse/undomanager.rb
    CHANGED
    
    | @@ -164,7 +164,14 @@ module RubyCurses | |
| 164 164 | 
             
                    @source.list[row].slice!(col,howmany)
         | 
| 165 165 | 
             
                  when :DELETE_LINE
         | 
| 166 166 | 
             
                    #$log.debug " UNDO redo got deleteline #{row} "
         | 
| 167 | 
            -
                     | 
| 167 | 
            +
                    #@source.list.delete_at row
         | 
| 168 | 
            +
                    # changed on 2010-05-23 12:21 since was not handling mult delete
         | 
| 169 | 
            +
                    case act.text
         | 
| 170 | 
            +
                    when Array
         | 
| 171 | 
            +
                      act.text.size.times { @source.list.delete_at row }
         | 
| 172 | 
            +
                    when String
         | 
| 173 | 
            +
                      @source.list.delete_at row
         | 
| 174 | 
            +
                    end
         | 
| 168 175 | 
             
                  when :INSERT_LINE
         | 
| 169 176 | 
             
                    case act.text
         | 
| 170 177 | 
             
                    when Array
         | 
    
        data/lib/rbcurse/vieditable.rb
    CHANGED
    
    | @@ -12,13 +12,14 @@ require 'rbcurse/listeditable' | |
| 12 12 | 
             
            module ViEditable
         | 
| 13 13 | 
             
              include ListEditable
         | 
| 14 14 |  | 
| 15 | 
            -
              #def ViEditable.vieditable_init
         | 
| 16 15 | 
             
              def vieditable_init
         | 
| 17 16 | 
             
                $log.debug " inside vieditable_init "
         | 
| 18 17 | 
             
                @editable = true
         | 
| 19 18 | 
             
                bind_key( ?C, :edit_line)
         | 
| 20 | 
            -
                bind_key( ?o, :insert_line)
         | 
| 21 | 
            -
                bind_key( ?O) { insert_line(@current_index-1) } 
         | 
| 19 | 
            +
                #bind_key( ?o, :insert_line)
         | 
| 20 | 
            +
                #bind_key( ?O) { insert_line(@current_index-1) } 
         | 
| 21 | 
            +
                bind_key( ?o) { insert_line(@current_index+1) } 
         | 
| 22 | 
            +
                bind_key( ?O) { insert_line(@current_index) } 
         | 
| 22 23 | 
             
                bind_key( ?D, :delete_eol)
         | 
| 23 24 | 
             
                bind_key( [?d, ?$], :delete_eol)
         | 
| 24 25 | 
             
                bind_key( [?d, ?d] , :delete_line ) 
         | 
| @@ -35,25 +36,64 @@ module ViEditable | |
| 35 36 | 
             
                bind_key( ?P ) { yank(@current_index - 1) } # should be before this line
         | 
| 36 37 | 
             
                bind_key(?\w, :forward_word)
         | 
| 37 38 | 
             
                bind_key(?f, :forward_char)
         | 
| 39 | 
            +
                bind_key(?\M-y, :yank_pop)
         | 
| 40 | 
            +
                bind_key(?\M-w, :kill_ring_save)
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
              ##
         | 
| 44 | 
            +
              # Separate mappings for listboxes.
         | 
| 45 | 
            +
              # Some methods don;'t make sense for listboxes and are crashing
         | 
| 46 | 
            +
              # since not present for them. f was being overwritten, too.
         | 
| 47 | 
            +
              # Sorry for duplication, need to clean this somehow.
         | 
| 48 | 
            +
              def vieditable_init_listbox
         | 
| 49 | 
            +
                $log.debug " inside vieditable_init_listbox "
         | 
| 50 | 
            +
                @editable = true
         | 
| 51 | 
            +
                bind_key( ?C, :edit_line)
         | 
| 52 | 
            +
                bind_key( ?o) { insert_line(@current_index+1) } 
         | 
| 53 | 
            +
                bind_key( ?O) { insert_line(@current_index) } 
         | 
| 54 | 
            +
                #bind_key( ?D, :delete_eol)
         | 
| 55 | 
            +
                #bind_key( [?d, ?$], :delete_eol)
         | 
| 56 | 
            +
                bind_key( [?d, ?d] , :delete_line ) 
         | 
| 57 | 
            +
                #bind_key( [?d, ?w], :delete_word )
         | 
| 58 | 
            +
                #bind_key( [?d, ?t], :delete_till )
         | 
| 59 | 
            +
                #bind_key( [?d, ?f], :delete_forward )
         | 
| 60 | 
            +
                bind_key( ?\C-_ ) { @undo_handler.undo if @undo_handler }
         | 
| 61 | 
            +
                bind_key( ?u ) { @undo_handler.undo if @undo_handler }
         | 
| 62 | 
            +
                bind_key( ?\C-r ) { @undo_handler.redo if @undo_handler }
         | 
| 63 | 
            +
                #bind_key( ?x, :delete_curr_char )
         | 
| 64 | 
            +
                #bind_key( ?X, :delete_prev_char )
         | 
| 65 | 
            +
                bind_key( [?y, ?y] , :kill_ring_save ) 
         | 
| 66 | 
            +
                bind_key( ?p, :yank ) # paste after this line
         | 
| 67 | 
            +
                bind_key( ?P ) { yank(@current_index - 1) } # should be before this line
         | 
| 68 | 
            +
                bind_key(?\w, :forward_word)
         | 
| 69 | 
            +
                #bind_key(?f, :forward_char)
         | 
| 70 | 
            +
                bind_key(?\M-y, :yank_pop)
         | 
| 71 | 
            +
                bind_key(?\C-y, :yank)
         | 
| 72 | 
            +
                bind_key(?\M-w, :kill_ring_save)
         | 
| 38 73 |  | 
| 39 74 | 
             
              end
         | 
| 40 75 |  | 
| 41 76 | 
             
              ##
         | 
| 42 77 | 
             
              # edit current or given line
         | 
| 78 | 
            +
              # FIXME needs to fire handler 2010-05-23 11:40 
         | 
| 43 79 | 
             
              def edit_line lineno=@current_index
         | 
| 44 80 | 
             
                line = @list[lineno]
         | 
| 45 81 | 
             
                prompt = "Edit: "
         | 
| 46 82 | 
             
                maxlen = 80
         | 
| 47 83 | 
             
                config={}; 
         | 
| 84 | 
            +
                oldline = line.dup
         | 
| 48 85 | 
             
                config[:default] = line
         | 
| 49 86 | 
             
                ret, str = rbgetstr(@form.window, $error_message_row, $error_message_col,  prompt, maxlen, config)
         | 
| 50 87 | 
             
                $log.debug " rbgetstr returned #{ret} , #{str} "
         | 
| 51 88 | 
             
                return if ret != 0
         | 
| 52 89 | 
             
                @list[lineno].replace(str)
         | 
| 90 | 
            +
                fire_handler :CHANGE, InputDataEvent.new(0,oldline.length, self, :DELETE_LINE, lineno, oldline)     #  2008-12-24 18:34 
         | 
| 91 | 
            +
                fire_handler :CHANGE, InputDataEvent.new(0,str.length, self, :INSERT_LINE, lineno, str)
         | 
| 53 92 | 
             
                @repaint_required = true
         | 
| 54 93 | 
             
              end
         | 
| 55 94 | 
             
              ##
         | 
| 56 95 | 
             
              # insert a line 
         | 
| 96 | 
            +
              # FIXME needs to fire handler 2010-05-23 11:40 
         | 
| 57 97 | 
             
              def insert_line lineno=@current_index
         | 
| 58 98 | 
             
                prompt = "Insert: "
         | 
| 59 99 | 
             
                maxlen = 80
         | 
| @@ -65,6 +105,8 @@ module ViEditable | |
| 65 105 | 
             
                $log.debug " rbgetstr returned #{ret} , #{str} "
         | 
| 66 106 | 
             
                return if ret != 0
         | 
| 67 107 | 
             
                @list.insert lineno, str
         | 
| 108 | 
            +
                ## added handler on 2010-05-23 11:46 - undo works - tested in testlistbox.rb
         | 
| 109 | 
            +
                fire_handler :CHANGE, InputDataEvent.new(0,str.length, self, :INSERT_LINE, lineno, str)
         | 
| 68 110 | 
             
                @repaint_required = true
         | 
| 69 111 | 
             
              end
         | 
| 70 112 | 
             
              ##
         | 
    
        data/rbcurse.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{rbcurse}
         | 
| 8 | 
            -
              s.version = "1.1. | 
| 8 | 
            +
              s.version = "1.1.4"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Rahul Kumar"]
         | 
| 12 | 
            -
              s.date = %q{2010- | 
| 12 | 
            +
              s.date = %q{2010-08-30}
         | 
| 13 13 | 
             
              s.default_executable = %q{rbcurse}
         | 
| 14 14 | 
             
              s.description = %q{Ruby curses widgets for easy application development on text terminals (ruby 1.9, 1.8)}
         | 
| 15 15 | 
             
              s.email = %q{sentinel.2001@gmx.com}
         | 
| @@ -31,6 +31,7 @@ Gem::Specification.new do |s| | |
| 31 31 | 
             
                 "VERSION",
         | 
| 32 32 | 
             
                 "bin/rbcurse",
         | 
| 33 33 | 
             
                 "examples/README.txt",
         | 
| 34 | 
            +
                 "examples/data.txt",
         | 
| 34 35 | 
             
                 "examples/keytest.rb",
         | 
| 35 36 | 
             
                 "examples/mpad2.rb",
         | 
| 36 37 | 
             
                 "examples/newtesttabp.rb",
         | 
| @@ -46,6 +47,7 @@ Gem::Specification.new do |s| | |
| 46 47 | 
             
                 "examples/testchars.rb",
         | 
| 47 48 | 
             
                 "examples/testcombo.rb",
         | 
| 48 49 | 
             
                 "examples/testkeypress.rb",
         | 
| 50 | 
            +
                 "examples/testlistbox.rb",
         | 
| 49 51 | 
             
                 "examples/testmenu.rb",
         | 
| 50 52 | 
             
                 "examples/testmulticomp.rb",
         | 
| 51 53 | 
             
                 "examples/testscroller.rb",
         | 
| @@ -69,6 +71,7 @@ Gem::Specification.new do |s| | |
| 69 71 | 
             
                 "examples/testtpane.rb",
         | 
| 70 72 | 
             
                 "examples/testtpane2.rb",
         | 
| 71 73 | 
             
                 "examples/testtpanetable.rb",
         | 
| 74 | 
            +
                 "examples/todo.db",
         | 
| 72 75 | 
             
                 "examples/todo.yml",
         | 
| 73 76 | 
             
                 "examples/todocsv.csv",
         | 
| 74 77 | 
             
                 "examples/viewtodo.rb",
         | 
| @@ -80,6 +83,7 @@ Gem::Specification.new do |s| | |
| 80 83 | 
             
                 "lib/rbcurse/colormap.rb",
         | 
| 81 84 | 
             
                 "lib/rbcurse/comboboxcellrenderer.rb",
         | 
| 82 85 | 
             
                 "lib/rbcurse/defaultlistselectionmodel.rb",
         | 
| 86 | 
            +
                 "lib/rbcurse/extras/tableextended.rb",
         | 
| 83 87 | 
             
                 "lib/rbcurse/io.rb",
         | 
| 84 88 | 
             
                 "lib/rbcurse/keylabelprinter.rb",
         | 
| 85 89 | 
             
                 "lib/rbcurse/listcellrenderer.rb",
         | 
| @@ -126,7 +130,7 @@ Gem::Specification.new do |s| | |
| 126 130 | 
             
              s.homepage = %q{http://rbcurse.rubyforge.org/}
         | 
| 127 131 | 
             
              s.rdoc_options = ["--charset=UTF-8"]
         | 
| 128 132 | 
             
              s.require_paths = ["lib"]
         | 
| 129 | 
            -
              s.rubygems_version = %q{1.3. | 
| 133 | 
            +
              s.rubygems_version = %q{1.3.7}
         | 
| 130 134 | 
             
              s.summary = %q{Ruby Curses Toolkit}
         | 
| 131 135 | 
             
              s.test_files = [
         | 
| 132 136 | 
             
                "test/test_rbcurse.rb",
         | 
| @@ -144,6 +148,7 @@ Gem::Specification.new do |s| | |
| 144 148 | 
             
                 "examples/testchars.rb",
         | 
| 145 149 | 
             
                 "examples/testcombo.rb",
         | 
| 146 150 | 
             
                 "examples/testkeypress.rb",
         | 
| 151 | 
            +
                 "examples/testlistbox.rb",
         | 
| 147 152 | 
             
                 "examples/testmenu.rb",
         | 
| 148 153 | 
             
                 "examples/testmulticomp.rb",
         | 
| 149 154 | 
             
                 "examples/testscroller.rb",
         | 
| @@ -167,6 +172,7 @@ Gem::Specification.new do |s| | |
| 167 172 | 
             
                 "examples/testtpane.rb",
         | 
| 168 173 | 
             
                 "examples/testtpane2.rb",
         | 
| 169 174 | 
             
                 "examples/testtpanetable.rb",
         | 
| 175 | 
            +
                 "examples/todo.rb",
         | 
| 170 176 | 
             
                 "examples/viewtodo.rb"
         | 
| 171 177 | 
             
              ]
         | 
| 172 178 |  | 
| @@ -174,7 +180,7 @@ Gem::Specification.new do |s| | |
| 174 180 | 
             
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         | 
| 175 181 | 
             
                s.specification_version = 3
         | 
| 176 182 |  | 
| 177 | 
            -
                if Gem::Version.new(Gem:: | 
| 183 | 
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 178 184 | 
             
                else
         | 
| 179 185 | 
             
                end
         | 
| 180 186 | 
             
              else
         | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 1
         | 
| 7 7 | 
             
              - 1
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 1.1. | 
| 8 | 
            +
              - 4
         | 
| 9 | 
            +
              version: 1.1.4
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Rahul Kumar
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010- | 
| 17 | 
            +
            date: 2010-08-30 00:00:00 +05:30
         | 
| 18 18 | 
             
            default_executable: rbcurse
         | 
| 19 19 | 
             
            dependencies: []
         | 
| 20 20 |  | 
| @@ -40,6 +40,7 @@ files: | |
| 40 40 | 
             
            - VERSION
         | 
| 41 41 | 
             
            - bin/rbcurse
         | 
| 42 42 | 
             
            - examples/README.txt
         | 
| 43 | 
            +
            - examples/data.txt
         | 
| 43 44 | 
             
            - examples/keytest.rb
         | 
| 44 45 | 
             
            - examples/mpad2.rb
         | 
| 45 46 | 
             
            - examples/newtesttabp.rb
         | 
| @@ -55,6 +56,7 @@ files: | |
| 55 56 | 
             
            - examples/testchars.rb
         | 
| 56 57 | 
             
            - examples/testcombo.rb
         | 
| 57 58 | 
             
            - examples/testkeypress.rb
         | 
| 59 | 
            +
            - examples/testlistbox.rb
         | 
| 58 60 | 
             
            - examples/testmenu.rb
         | 
| 59 61 | 
             
            - examples/testmulticomp.rb
         | 
| 60 62 | 
             
            - examples/testscroller.rb
         | 
| @@ -78,6 +80,7 @@ files: | |
| 78 80 | 
             
            - examples/testtpane.rb
         | 
| 79 81 | 
             
            - examples/testtpane2.rb
         | 
| 80 82 | 
             
            - examples/testtpanetable.rb
         | 
| 83 | 
            +
            - examples/todo.db
         | 
| 81 84 | 
             
            - examples/todo.yml
         | 
| 82 85 | 
             
            - examples/todocsv.csv
         | 
| 83 86 | 
             
            - examples/viewtodo.rb
         | 
| @@ -89,6 +92,7 @@ files: | |
| 89 92 | 
             
            - lib/rbcurse/colormap.rb
         | 
| 90 93 | 
             
            - lib/rbcurse/comboboxcellrenderer.rb
         | 
| 91 94 | 
             
            - lib/rbcurse/defaultlistselectionmodel.rb
         | 
| 95 | 
            +
            - lib/rbcurse/extras/tableextended.rb
         | 
| 92 96 | 
             
            - lib/rbcurse/io.rb
         | 
| 93 97 | 
             
            - lib/rbcurse/keylabelprinter.rb
         | 
| 94 98 | 
             
            - lib/rbcurse/listcellrenderer.rb
         | 
| @@ -131,6 +135,7 @@ files: | |
| 131 135 | 
             
            - lib/ver/window.rb
         | 
| 132 136 | 
             
            - rbcurse.gemspec
         | 
| 133 137 | 
             
            - test/test_rbcurse.rb
         | 
| 138 | 
            +
            - examples/todo.rb
         | 
| 134 139 | 
             
            has_rdoc: true
         | 
| 135 140 | 
             
            homepage: http://rbcurse.rubyforge.org/
         | 
| 136 141 | 
             
            licenses: []
         | 
| @@ -141,6 +146,7 @@ rdoc_options: | |
| 141 146 | 
             
            require_paths: 
         | 
| 142 147 | 
             
            - lib
         | 
| 143 148 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 149 | 
            +
              none: false
         | 
| 144 150 | 
             
              requirements: 
         | 
| 145 151 | 
             
              - - ">="
         | 
| 146 152 | 
             
                - !ruby/object:Gem::Version 
         | 
| @@ -148,6 +154,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 148 154 | 
             
                  - 0
         | 
| 149 155 | 
             
                  version: "0"
         | 
| 150 156 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 157 | 
            +
              none: false
         | 
| 151 158 | 
             
              requirements: 
         | 
| 152 159 | 
             
              - - ">="
         | 
| 153 160 | 
             
                - !ruby/object:Gem::Version 
         | 
| @@ -157,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 157 164 | 
             
            requirements: []
         | 
| 158 165 |  | 
| 159 166 | 
             
            rubyforge_project: 
         | 
| 160 | 
            -
            rubygems_version: 1.3. | 
| 167 | 
            +
            rubygems_version: 1.3.7
         | 
| 161 168 | 
             
            signing_key: 
         | 
| 162 169 | 
             
            specification_version: 3
         | 
| 163 170 | 
             
            summary: Ruby Curses Toolkit
         | 
| @@ -177,6 +184,7 @@ test_files: | |
| 177 184 | 
             
            - examples/testchars.rb
         | 
| 178 185 | 
             
            - examples/testcombo.rb
         | 
| 179 186 | 
             
            - examples/testkeypress.rb
         | 
| 187 | 
            +
            - examples/testlistbox.rb
         | 
| 180 188 | 
             
            - examples/testmenu.rb
         | 
| 181 189 | 
             
            - examples/testmulticomp.rb
         | 
| 182 190 | 
             
            - examples/testscroller.rb
         | 
| @@ -200,4 +208,5 @@ test_files: | |
| 200 208 | 
             
            - examples/testtpane.rb
         | 
| 201 209 | 
             
            - examples/testtpane2.rb
         | 
| 202 210 | 
             
            - examples/testtpanetable.rb
         | 
| 211 | 
            +
            - examples/todo.rb
         | 
| 203 212 | 
             
            - examples/viewtodo.rb
         |