r22612 - in /trunk/libterm-visual-perl: MANIFEST META.yml Visual.pm debian/changelog examples/no_status_title.pl examples/simple_test.pl visual.pm.diff

dmn at users.alioth.debian.org dmn at users.alioth.debian.org
Tue Jul 1 09:59:52 UTC 2008


Author: dmn
Date: Tue Jul  1 09:59:52 2008
New Revision: 22612

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=22612
Log:
New upstream release

Added:
    trunk/libterm-visual-perl/META.yml
      - copied unchanged from r22611, branches/upstream/libterm-visual-perl/current/META.yml
Removed:
    trunk/libterm-visual-perl/visual.pm.diff
Modified:
    trunk/libterm-visual-perl/MANIFEST
    trunk/libterm-visual-perl/Visual.pm
    trunk/libterm-visual-perl/debian/changelog
    trunk/libterm-visual-perl/examples/no_status_title.pl
    trunk/libterm-visual-perl/examples/simple_test.pl

Modified: trunk/libterm-visual-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libterm-visual-perl/MANIFEST?rev=22612&op=diff
==============================================================================
--- trunk/libterm-visual-perl/MANIFEST (original)
+++ trunk/libterm-visual-perl/MANIFEST Tue Jul  1 09:59:52 2008
@@ -3,7 +3,6 @@
 Makefile.PL
 README
 Visual.pm
-visual.pm.diff
 Visual/StatusBar.pm
 examples/logmon.pl
 examples/no_status_title.pl
@@ -12,3 +11,4 @@
 examples/test_scrollback.pl
 examples/tailall.pl
 t/use.t
+META.yml                                 Module meta-data (added by MakeMaker)

Modified: trunk/libterm-visual-perl/Visual.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libterm-visual-perl/Visual.pm?rev=22612&op=diff
==============================================================================
--- trunk/libterm-visual-perl/Visual.pm (original)
+++ trunk/libterm-visual-perl/Visual.pm Tue Jul  1 09:59:52 2008
@@ -4,9 +4,9 @@
 use strict;
 use warnings;
 use vars qw($VERSION $REVISION $console);
-$VERSION = '0.06';
-$REVISION = do {my at r=(q$Revision: 0.06 $=~/\d+/g);sprintf"%d."."%02d"x$#r, at r};
-
+$VERSION = '0.08';
+$REVISION = do {my at r=(q$Revision: 0.08 $=~/\d+/g);sprintf"%d."."%02d"x$#r, at r};
+#use Visual::StatusBar;
 use Term::Visual::StatusBar;
 use POE qw(Wheel::Curses Wheel::ReadWrite ); 
 use Curses;
@@ -148,6 +148,7 @@
   
   $kernel->alias_set( $alias );
   $console = POE::Wheel::Curses->new( InputEvent => 'private_input');
+   use_default_colors();
   my $old_mouse_events = 0;
   mousemask(0, $old_mouse_events);
 
@@ -194,7 +195,11 @@
   my $use_status = 1 unless defined $params{Use_Status};
   my $new_window_id = CREATE_WINDOW_ID($self);
   my $window_name = $params{Window_Name} || $new_window_id;
-
+  my $input_prompt = $params{Input_Prompt} || ""; 
+  my $prompt_size = 0;
+  if (length $input_prompt) {
+       $prompt_size = length( $input_prompt ) ;
+  }
   my $input;
   if ($self->[COMMON_INPUT]) {
     $input = $self->[COMMON_INPUT];
@@ -206,11 +211,13 @@
        Command_History  => [ ],
        Data             => "",
        Data_Save        => "",
-       Cursor           => 0,
+       Cursor           => $prompt_size || 0,
        Cursor_Save      => 0,
        Tab_Complete     => undef,
        Insert           => 1,
        Edit_Position    => 0,
+       Prompt           => $input_prompt,
+       Prompt_Size      => $prompt_size,
     };
   }
   # Allow override of possible global options
@@ -654,6 +661,13 @@
 
   $heap->{input_session} = $sender->ID();
   $heap->{input_event}   = $event;
+ 
+   # Increase the sender's reference count so the session stays alive
+   # while the terminal is active.  We'll decrease the reference count
+   # in _stop so it can go away when the terminal does.
+ 
+   $kernel->refcount_increment( $sender->ID(), "terminal link" );
+
 }
 
 ### Get input from the Curses thing.
@@ -692,7 +706,11 @@
   # Beginning of line.
   if ($key eq '^A' or $key eq 'KEY_HOME') {
     if ($winref->{Input}{Cursor}) {
-      $winref->{Input}{Cursor} = 0;
+      if ($winref->{Input}{Prompt_Size}) {
+        $winref->{Input}{Cursor} = $winref->{Input}{Prompt_Size};
+      } else {
+         $winref->{Input}{Cursor} = 0;
+      }
       _refresh_edit($self, $window_id); 
       doupdate();        
     }
@@ -702,9 +720,15 @@
   # Back one character.
   if ($key eq 'KEY_LEFT') {
     if ($winref->{Input}{Cursor}) {
-      $winref->{Input}{Cursor}--;
-      _refresh_edit($self, $window_id);
-      doupdate();
+      if($winref->{Input}{Prompt}) {
+        if($winref->{Input}{Cursor} > $winref->{Input}{Prompt_Size}) {
+            $winref->{Input}{Cursor}--;
+        }
+      } else {
+            $winref->{Input}{Cursor}--;
+        }
+            _refresh_edit($self, $window_id);
+            doupdate();
     }
     return;
   }
@@ -727,14 +751,22 @@
 
   # Interrupt.
   if ($key eq '^\\') {
-    &shutdown;
+
+    $kernel->alias_remove($self->[ALIAS]);
+    delete $heap->{stderr_reader};
+    undef $console;
+    if (defined $heap->{input_session}) {
+        delete $heap->{input_session};          
+    }
+    $kernel->signal($kernel, "UIDESTROY");
     return;
   }
 
   # Delete a character.
   if ($key eq '^D' or $key eq 'KEY_DC') {
-    if ($winref->{Input}{Cursor} < length($winref->{Input}{Data})) {
-      substr($winref->{Input}{Data}, $winref->{Input}{Cursor}, 1) = '';
+       my $csize = $winref->{Input}{Cursor} - $winref->{Input}{Prompt_Size};
+    if ($csize < length($winref->{Input}{Data})) {
+      substr($winref->{Input}{Data}, $winref->{Input}{Cursor} - $winref->{Input}{Prompt_Size}, 1) = '';
       _refresh_edit($self, $window_id);
       doupdate();
     }
@@ -753,7 +785,7 @@
 
   # Forward character.
   if ($key eq '^F' or $key eq 'KEY_RIGHT') {
-    if ($winref->{Input}{Cursor} < length($winref->{Input}{Data})) {
+    if (($winref->{Input}{Cursor} - $winref->{Input}{Prompt_Size}) < length($winref->{Input}{Data})) {
       $winref->{Input}{Cursor}++;
       _refresh_edit($self, $window_id);
       doupdate();
@@ -764,10 +796,12 @@
   # Backward delete character.
   if ($key eq '^H' or $key eq "^?" or $key eq 'KEY_BACKSPACE') {
     if ($winref->{Input}{Cursor}) {
+     if ($winref->{Input}{Cursor} > ($winref->{Input}{Prompt_Size} )) {
       $winref->{Input}{Cursor}--;
-      substr($winref->{Input}{Data}, $winref->{Input}{Cursor}, 1) = '';
+      substr($winref->{Input}{Data}, $winref->{Input}{Cursor} - $winref->{Input}{Prompt_Size}, 1) = '';
       _refresh_edit($self, $window_id);
       doupdate();
+     }
     }
     return;
   }
@@ -1282,28 +1316,29 @@
     my $line = $winref->{Buffer}->[$buffer_y]; # does this work?
     my $column = 1;
     while (length $line) {
-      if ($line =~ s/^\0\(blink_(on|off)\)//) {
-         if ($1 eq 'on') { $screen->attron(A_BLINK); }
-         if ($1 eq 'off') { $screen->attroff(A_BLINK); }
-         $screen->noutrefresh();
-      }
-
-      if ($line =~ s/^\0\(bold_(on|off)\)//) {
-         if ($1 eq 'on') { $screen->attron(A_BOLD); }
-         if ($1 eq 'off') { $screen->attroff(A_BOLD); }
-         $screen->noutrefresh();
-      }
-
-      if ($line =~ s/^\0\(underline_(on|off)\)//) {
-         if ($1 eq 'on') { $screen->attron(A_UNDERLINE); }
-         if ($1 eq 'off') { $screen->attroff(A_UNDERLINE); }
-         $screen->noutrefresh();
-      }
-
-      if ($line =~ s/^ \0 \( ([^\)]+) \) //x) {
-        $screen->attrset($self->[PALETTE]->{$1}->[PAL_PAIR]); 
-        $screen->noutrefresh();
-      }
+      while ($line =~ s/^\0\(([^)]+)\)//) {
+        my $cmd = $1;
+        if ($cmd =~ /blink_(on|off)/) {
+          if ($1 eq 'on') { $screen->attron(A_BLINK); }
+          if ($1 eq 'off') { $screen->attroff(A_BLINK); }
+          $screen->noutrefresh();
+        }
+        elsif ($cmd =~ /bold_(on|off)/) {
+          if ($1 eq 'on') { $screen->attron(A_BOLD); }
+          if ($1 eq 'off') { $screen->attroff(A_BOLD); }
+          $screen->noutrefresh();
+        }
+        elsif ($cmd =~ /underline_(on|off)/) {
+          if ($1 eq 'on') { $screen->attron(A_UNDERLINE); }
+          if ($1 eq 'off') { $screen->attroff(A_UNDERLINE); }
+          $screen->noutrefresh();
+        }
+        else {
+          $screen->attrset($self->[PALETTE]->{$cmd}->[PAL_PAIR]); 
+          $screen->noutrefresh();
+        }
+      }
+
       if ($line =~ s/^([^\0]+)//x) {
 
         # TODO: This needs to be revised so it cuts off the last word,
@@ -1354,6 +1389,7 @@
      re      => COLOR_RED,      red     => COLOR_RED,
      wh      => COLOR_WHITE,    white   => COLOR_WHITE,
      ye      => COLOR_YELLOW,   yellow  => COLOR_YELLOW,
+     de      => -1,             default => -1,
    );
 
   my %attribute_table =
@@ -1464,8 +1500,12 @@
 sub terminal_stopped {
   if (DEBUG) { print ERRS "Enter terminal_stopped\n"; }
   my ($kernel, $heap) = @_[KERNEL, HEAP];
+    $kernel->alias_remove($_[OBJECT][ALIAS]);
+    delete $heap->{stderr_reader};
+    undef $console;
 
   if (defined $heap->{input_session}) {
+     $kernel->refcount_decrement( $heap->{input_session}, "terminal link" );
     delete $heap->{input_session};
   }
 }
@@ -1557,7 +1597,9 @@
   $edit->attron(A_NORMAL);
   $edit->erase();
   $edit->noutrefresh();
-
+  if ($winref->{Input}{Prompt}) {
+    $visible_input = $winref->{Input}{Prompt} . $visible_input;
+  }
   while (length($visible_input)) {
     if ($visible_input =~ /^[\x00-\x1f]/) {
       $edit->attron(A_UNDERLINE);
@@ -1597,7 +1639,7 @@
     # edit box.
 
     $winref->{Input}{Data_Save} = $winref->{Input}{Data} = "";
-    $winref->{Input}{Cursor_Save} = $winref->{Input}{Cursor} = 0;
+    $winref->{Input}{Cursor_Save} = $winref->{Input}{Cursor} = $winref->{Input}{Prompt_Size} || 0;
     $winref->{Input}{History_Position} = -1;
 
     _refresh_edit($self, $window_id);
@@ -1619,7 +1661,9 @@
         $winref->{Input}{Data} = 
           $winref->{Input}{Command_History}->[++$winref->{Input}{History_Position}];
         $winref->{Input}{Cursor} = length($winref->{Input}{Data});
-
+        if ($winref->{Input}{Prompt_Size}) {
+          $winref->{Input}{Cursor} += $winref->{Input}{Prompt_Size};
+        }
         _refresh_edit($self, $window_id);
         doupdate();
       }
@@ -1631,7 +1675,9 @@
     elsif ($winref->{Input}{History_Position} < @{$winref->{Input}{Command_History}} - 1) {
       $winref->{Input}{Data} = $winref->{Input}{Command_History}->[++$winref->{Input}{History_Position}];
       $winref->{Input}{Cursor} = length($winref->{Input}{Data});
-
+        if ($winref->{Input}{Prompt_Size}) {
+          $winref->{Input}{Cursor} += $winref->{Input}{Prompt_Size};
+        }
       _refresh_edit($self, $window_id);
       doupdate();
     }
@@ -1654,6 +1700,9 @@
     elsif ($winref->{Input}{History_Position} > 0) {
       $winref->{Input}{Data} = $winref->{Input}{Command_History}->[--$winref->{Input}{History_Position}];
       $winref->{Input}{Cursor} = length($winref->{Input}{Data});
+        if ($winref->{Input}{Prompt_Size}) {
+          $winref->{Input}{Cursor} += $winref->{Input}{Prompt_Size};
+        }
       _refresh_edit($self, $window_id);
       doupdate();
     }
@@ -1746,7 +1795,21 @@
 
 }
 
-
+sub set_input_prompt {
+  if (DEBUG) { print ERRS "Enter set_input_prompt\n"; }
+  my $self = shift;
+  my $window_id = shift;
+  my $prompt = shift;
+  my $validity = validate_window($self, $window_id);
+  if ($validity) {
+    my $winref = $self->[WINDOW]->{$window_id};
+    $winref->{Input}{Cursor} -= $winref->{Input}{Prompt_Size};
+    $winref->{Input}{Prompt} = $prompt;
+    $winref->{Input}{Cursor} = $winref->{Input}{Prompt_Size} = length $prompt;
+      _refresh_edit($self, $window_id);
+      doupdate();
+ }
+}
 
 sub set_errlevel {}
 sub get_errlevel {}
@@ -1759,13 +1822,20 @@
 }
 
 sub shutdown {
-    $_[KERNEL]->alias_remove($_[OBJECT][ALIAS]);
-    delete $_[HEAP]->{stderr_reader};
-    undef $console;
-    if (defined $_[HEAP]->{input_session}) {
-      $_[KERNEL]->post( $_[HEAP]->{input_session}, $_[HEAP]->{input_event},
-                        undef, 'interrupt' );
-    }
+my $self = shift;
+
+$poe_kernel->post($self->[ALIAS], "_stop");
+
+#    $_[KERNEL]->alias_remove($_[OBJECT][ALIAS]);
+#    delete $_[HEAP]->{stderr_reader};
+#    undef $console;
+#    if (defined $_[HEAP]->{input_session}) {
+#      $_[KERNEL]->post( $_[HEAP]->{input_session}, $_[HEAP]->{input_event},
+#                        undef, 'interrupt' );
+
+#clean up, and close Term::Visual's session so that the only thing that is left is client side, and when ^\ is punched in, clean up things that would leak otherwise, and interrupt?
+
+#    }
 }
 
 1;
@@ -1802,6 +1872,8 @@
 
         Buffer_Size  => 1000,
         History_Size => 50,
+
+        Input_Prompt => "[foo] ", # Set the input prompt for the input line.
  
         Use_Title    => 0, # Don't use a titlebar 
         Use_Status   => 0, # Don't use a statusbar
@@ -1815,13 +1887,15 @@
      }
     );
 
-  sub _start_handler {
+  sub start_handler {
     my $kernel = $_[KERNEL];
 
     # Tell the terminal to send me input as "got_term_input".
     $kernel->post( interface => send_me_input => "got_term_input" );
                     
     $vt->set_status_field( $window_id, bar => $value );
+
+    $vt->set_input_prompt($window_id, "\$");
 
     $vt->print( $window_id, "my Window ID is $window_id" );
   }
@@ -1936,6 +2010,10 @@
 
   History_Size => 50
 
+Set the input prompt of the window
+
+  Input_Prompt => "foo"
+
 Set the title of the window
 
   Title => "This is the Titlebar"
@@ -2055,6 +2133,16 @@
          are set and used by Term::Visual internally.
          It is safe to redifine there values.
 
+=item color codes
+
+Once your color definitions are set in the palette you must insert
+color codes to your output.
+These are formatted as follows: "\0(ncolor)"
+
+So if you wanted to print something with a color you could simply use:
+
+  $vt->print( $window_id, "\0(color_name)My this is a wonderful color." );
+
 =item set_title
 
   $vt->set_title( $window_id, "This is the new Title" );
@@ -2088,6 +2176,12 @@
   $vt->set_status_field( $window_id, field => "value" );
 
   $vt->set_status_field( $window_id, foo => "bar", biz => "baz" );
+
+=item set_input_prompt
+
+  $vt->set_input_prompt($window_id, "\$");
+
+  $vt->set_input_prompt($window_id, "[foo]");
 
 =item columnize
   columnize takes a list of text and formats it into
@@ -2307,11 +2401,11 @@
 
 
 Except where otherwise noted, 
-Term::Visual is Copyright 2002, 2003, 2004 Charles Ayres. All rights reserved.
+Term::Visual is Copyright 2002-2007 Charles Ayres. All rights reserved.
 Term::Visual is free software; you may redistribute it and/or modify
 it under the same terms as Perl itself.
 
-Questions and Comments can be sent to lunartear+visterm at ambientheory.com
+Questions and Comments can be sent to lunartear at cpan.org
 
 Please send bug reports and wishlist items to:
  http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Term-Visual

Modified: trunk/libterm-visual-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libterm-visual-perl/debian/changelog?rev=22612&op=diff
==============================================================================
--- trunk/libterm-visual-perl/debian/changelog (original)
+++ trunk/libterm-visual-perl/debian/changelog Tue Jul  1 09:59:52 2008
@@ -1,5 +1,6 @@
-libterm-visual-perl (0.06-2) UNRELEASED; urgency=low
+libterm-visual-perl (0.08-1) UNRELEASED; urgency=low
 
+  [ gregor herrmann ]
   * Take over for the Debian Perl Group with maintainer's permission
     (http://lists.debian.org/debian-perl/2008/06/msg00039.html)
   * debian/control: Added: Vcs-Svn field (source stanza); Vcs-Browser
@@ -10,7 +11,10 @@
     Uploaders.
   * Add debian/watch.
 
- -- gregor herrmann <gregoa at debian.org>  Sun, 15 Jun 2008 17:29:31 +0200
+  [ Damyan Ivanov ]
+  * New upstream release
+
+ -- Damyan Ivanov <dmn at debian.org>  Tue, 01 Jul 2008 12:57:43 +0300
 
 libterm-visual-perl (0.06-1.1) unstable; urgency=low
 

Modified: trunk/libterm-visual-perl/examples/no_status_title.pl
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libterm-visual-perl/examples/no_status_title.pl?rev=22612&op=diff
==============================================================================
--- trunk/libterm-visual-perl/examples/no_status_title.pl (original)
+++ trunk/libterm-visual-perl/examples/no_status_title.pl Tue Jul  1 09:59:52 2008
@@ -41,7 +41,7 @@
 
   # Tell the terminal to send me input as "got_term_input".
   $kernel->post( interface => send_me_input => "got_term_input" );
-
+#  $vt->print($window_id, $vt->[0]{$window_id}->{Screen_Height});
 }
 
 ### The main input handler for this program.  This would be supplied

Modified: trunk/libterm-visual-perl/examples/simple_test.pl
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libterm-visual-perl/examples/simple_test.pl?rev=22612&op=diff
==============================================================================
--- trunk/libterm-visual-perl/examples/simple_test.pl (original)
+++ trunk/libterm-visual-perl/examples/simple_test.pl Tue Jul  1 09:59:52 2008
@@ -2,7 +2,7 @@
 use strict;
 sub Term::Visual::DEBUG () { 1 }
 sub Term::Visual::DEBUG_FILE () { 'test.log' }
-use lib '../.';
+#use lib '../.';
 use Carp;
 use POE;
 use Term::Visual;
@@ -40,7 +40,7 @@
 
        Buffer_Size => 1000,
        History_Size => 50,
-
+       Input_Prompt => "[foo] ",
        Title => "Title of window_one"  );
 
 POE::Session->create
@@ -50,6 +50,7 @@
       update_time    => \&update_time,
       update_name    => \&update_name,
       test_buffer    => \&test_buffer,
+      _stop          => \&stop_guts,
     }
   );
 
@@ -70,7 +71,9 @@
   # Start updating the time.
   $kernel->yield( "update_time" );
   $kernel->yield( "update_name" );
+  $vt->set_input_prompt($window_id, "\$");
 #  $kernel->yield( "test_buffer" );
+#  $vt->shutdown;
 }
 
 ### The main input handler for this program.  This would be supplied
@@ -81,11 +84,16 @@
   my ($kernel, $heap, $input, $exception) = @_[KERNEL, HEAP, ARG0, ARG1];
 
   # Got an exception.  These are interrupt (^C) or quit (^\).
-  if (defined $exception) {
-    warn "got exception: $exception";
-    exit;
+#  if (defined $exception) {
+#    warn "got exception: $exception";
+#    exit;
+#  }
+  if ($input eq 'quit') {
+   $kernel->yield('_stop'); 
   }
-  $vt->print($window_id, $input);
+  else {
+    $vt->print($window_id, $input);
+  }
 }
 
 ### Update the time on the status bar.
@@ -117,6 +125,17 @@
   $kernel->alarm( test_buffer => int(time() / 60) * 60 + 20 ); 
 }
 
+sub stop_guts {
+  my ($kernel, $heap) = @_[KERNEL, HEAP];
+  $vt->shutdown;
+  $kernel->alarm_remove_all();
+  if (defined $heap->{input_session}) {
+    delete $heap->{input_session};
+  }
+
+}
+
+
 $poe_kernel->run();
-$vt->shutdown;
+#$vt->shutdown;
 exit 0;




More information about the Pkg-perl-cvs-commits mailing list