/[iselect]/ISelect.pm
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 /ISelect.pm

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

revision 20 by dpavlin, Thu Oct 25 20:21:43 2007 UTC revision 21 by dpavlin, Thu Oct 25 20:41:54 2007 UTC
# Line 150  sub redraw_statusline { Line 150  sub redraw_statusline {
150          .$pos_txt)->normal();          .$pos_txt)->normal();
151    
152          $scr->at($scr->rows - $status_lines + 2,0)->puts(          $scr->at($scr->rows - $status_lines + 2,0)->puts(
153                  sprintf('%-'.$scr->cols.'s', $self->error_text)                  sprintf('%-'.$scr->cols.'s', $self->error_text )
154          ) if $self->error_text;          ) if $self->error_text;
155  }  }
156    
# Line 179  sub selected { Line 179  sub selected {
179                  if ( $pos > 0 ) {                  if ( $pos > 0 ) {
180                          $top_screen_line--;                          $top_screen_line--;
181                          $pos--;                          $pos--;
182                          $self->redraw_screen;  #                       $self->redraw_screen;
183                            $self->screen->at(0,0)->il;
184                  } else {                  } else {
185                          $self->error_text( "Already at Begin." );                          $self->error_text( "Already at Begin." );
186                  }                  }
# Line 187  sub selected { Line 188  sub selected {
188                  if ( $pos < $nr_lines ) {                  if ( $pos < $nr_lines ) {
189                          $top_screen_line++;                          $top_screen_line++;
190                          $pos++;                          $pos++;
191                          $self->redraw_screen;  #                       $self->redraw_screen;
192                            $self->screen->at(0,0)->dl;
193                  } else {                  } else {
194                          $self->error_text( "Already at End." );                          $self->error_text( "Already at End." );
195                  }                  }
# Line 228  sub loop { Line 230  sub loop {
230    
231          # find which lines are selectable in input file          # find which lines are selectable in input file
232          for my $l (0 .. $#lines) {          for my $l (0 .. $#lines) {
233                  if ($lines[$l] =~ s/^{s}//) {                  if ($lines[$l] =~ m/^{s}/) {
234                          $selectable_line->{$l}++;                          $selectable_line->{$l}++;
235                  }                  }
236          }          }
# Line 245  sub loop { Line 247  sub loop {
247          $self->redraw_screen;          $self->redraw_screen;
248          $self->selected;          $self->selected;
249    
250            my $lines_on_screen = $self->screen->rows - $status_lines;
251    
252          while(my $key = $self->screen->getch()) {          while(my $key = $self->screen->getch()) {
253    
254                  my $lines_on_screen = $self->screen->rows - $status_lines;                  $self->error_text('');
255    
256                  if ($key eq 'ku') {                  if ($key eq 'ku') {
257                          $self->selected( -1 );                          $self->selected( -1 );
# Line 260  sub loop { Line 264  sub loop {
264                                  $top_screen_line = 0 if $top_screen_line < 0;                                  $top_screen_line = 0 if $top_screen_line < 0;
265                                  $self->redraw_screen;                                  $self->redraw_screen;
266                          }                          }
267                          $self->selected( -( $pos - $top_screen_line ) );                          if ( my $rel_pos = -( $pos - $top_screen_line ) ) {
268                                    $self->selected( $rel_pos );
269                            } else {
270                                    $self->error_text( "Already at top." );
271                            }
272                  } elsif ($key eq 'pgdn' ) {                  } elsif ($key eq 'pgdn' ) {
273                          # last line on screen?                          # last line on screen?
274                          if ( $pos - $top_screen_line == $lines_on_screen ) {                          if ( $pos - $top_screen_line == $lines_on_screen ) {
# Line 273  sub loop { Line 281  sub loop {
281                                  warn "max_top_screen_line = $max_top_screen_line top_screen_line = $top_screen_line\n";                                  warn "max_top_screen_line = $max_top_screen_line top_screen_line = $top_screen_line\n";
282                                  $self->redraw_screen;                                  $self->redraw_screen;
283                          }                          }
284                          $self->selected( $top_screen_line + $lines_on_screen - $pos );                          if (my $relative_pos = $top_screen_line + $lines_on_screen - $pos) {
285                                    $self->selected( $relative_pos );
286                            } else {
287                                    $self->error_text( "Already at bottom." );
288                            }
289                  }                  }
290    
291                  if ( length($key) > 1 ) {                  if ( length($key) > 1 ) {

Legend:
Removed from v.20  
changed lines
  Added in v.21

  ViewVC Help
Powered by ViewVC 1.1.26