/[iselect]/bin/iselect.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /bin/iselect.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6 by dpavlin, Thu Oct 25 13:24:02 2007 UTC revision 7 by dpavlin, Thu Oct 25 14:11:42 2007 UTC
# Line 2  Line 2 
2    
3  use strict;  use strict;
4  use Term::Screen;  use Term::Screen;
5  use Carp qw/confess/;  use Carp qw/cluck/;
6  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
7    
8  my $data = <<'EOF';  my $data = <<'EOF';
# Line 75  sub full_line { Line 75  sub full_line {
75    
76  sub chunk {  sub chunk {
77          my $t = shift;          my $t = shift;
78          return unless length($t) > 2;          cluck "expected line" unless defined $t;
79          return substr($t,1,$scr->cols);          return substr($t,0,$scr->cols);
80  }  }
81    
82  sub redraw_line {  sub redraw_line {
# Line 95  sub redraw { Line 95  sub redraw {
95                  redraw_line( $l, $line );                  redraw_line( $l, $line );
96                  last if ($l == $#lines);                  last if ($l == $#lines);
97          }          }
98            selected(0);
99  }  }
100    
101  sub status {  sub status {
# Line 127  sub selected { Line 128  sub selected {
128                  }                  }
129                  redraw;                  redraw;
130          } elsif ( $d > 0 && $screen_line == $last_screen_line ) {          } elsif ( $d > 0 && $screen_line == $last_screen_line ) {
131                  if ( $pos <= $#lines ) {                  if ( $pos < $#lines ) {
132                          $top_screen_line++;                          $top_screen_line++;
133                          $pos++;                          $pos++;
134                  } else {                  } else {
# Line 168  while(my $key = $scr->getch()) { Line 169  while(my $key = $scr->getch()) {
169                  # first line on screen?                  # first line on screen?
170                  if ( $pos == $top_screen_line ) {                  if ( $pos == $top_screen_line ) {
171                          $top_screen_line -= $lines_on_screen;                          $top_screen_line -= $lines_on_screen;
172                          $top_screen_line = 0;                          $top_screen_line = 0 if $top_screen_line < 0;
                         $pos = $top_screen_line;  
173                          redraw;                          redraw;
                         selected( $pos );  
                 } else {  
                         selected( -( $pos - $top_screen_line ) );  
174                  }                  }
175                    selected( -( $pos - $top_screen_line ) );
176          } elsif ($key eq 'pgdn' ) {          } elsif ($key eq 'pgdn' ) {
177                  # last line on screen?                  # last line on screen?
178                  if ( $pos - $top_screen_line == $lines_on_screen ) {                  if ( $pos - $top_screen_line == $lines_on_screen ) {
179                          $top_screen_line += $lines_on_screen;                          $top_screen_line += $lines_on_screen;
180                          $top_screen_line = $#lines - $lines_on_screen if $top_screen_line > $#lines - $lines_on_screen;                          $top_screen_line = $#lines - $lines_on_screen if $top_screen_line >= $#lines - $lines_on_screen;
                         $pos = $top_screen_line;  
181                          redraw;                          redraw;
                         selected( $pos );  
                 } else {  
                         selected( $top_screen_line + $scr->rows - $pos - 3 );  
182                  }                  }
183                    selected( $top_screen_line + $lines_on_screen - $pos );
184          }          }
185    
186          $status_text = sprintf("pos: %-3d sel_pos: %-3d top_screen_line: %-3d", $pos, $sel_pos, $top_screen_line );          $status_text = sprintf("pos: %-3d sel_pos: %-3d top_screen_line: %-3d", $pos, $sel_pos, $top_screen_line );
# Line 197  while(my $key = $scr->getch()) { Line 192  while(my $key = $scr->getch()) {
192    
193          status;          status;
194    
195          redraw if lc($key) eq 'r';          # CTRL+L
196            redraw if ord($key) eq 0x0c;
197    
198          exit if (lc($key) eq 'q');          exit if (lc($key) eq 'q');
199  }  }

Legend:
Removed from v.6  
changed lines
  Added in v.7

  ViewVC Help
Powered by ViewVC 1.1.26