[BACK]Return to test3.pl CVS log [TXT][DIR] Up to [local] / palm / Palm-Keyring

Diff for /palm/Palm-Keyring/test3.pl between version 1.3 and 1.5

version 1.3, 2006/04/18 20:39:45 version 1.5, 2006/12/06 20:58:18
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
 # $RedRiver: palmkeyring-tk,v 1.2 2006/02/02 00:59:08 andrew Exp $  # $RedRiver: palmkeyring-tk,v 1.4 2006/06/13 00:03:39 andrew Exp $
 ########################################################################  ########################################################################
 # palmkeyring-tk *** A GUI for 'Keyring for PalmOS' written in perl  # palmkeyring-tk *** A GUI for 'Keyring for PalmOS' written in perl
 #  #
 # 2006.01.31 #*#*# andrew fresh <andrew@mad-techies.org>  # 2006.01.31 #*#*# andrew fresh <andrew@mad-techies.org>
 ########################################################################  ########################################################################
 use strict;  use strict;
 use warnings;  use warnings;
   
 use Tk 8.0;  use Tk 8.0;
 use Tk::widgets qw/ Dialog BrowseEntry ROText ProgressBar /;  use Tk::widgets qw/ Dialog BrowseEntry ROText ProgressBar /;
   
 use lib 'lib';  use lib 'lib';
 use Palm::Keyring;  use Palm::Keyring;
   
 #my $File    = "Keys-Gtkr.PDB";  my $NAME    = 'Palm Keyring';
 my $File    = "k:/working/Keys-Gtkr.PDB";  my $VERSION = 0.01;
 my $Keyring = _do_open($File);  
   my $File    = shift || "Keys-Gtkr.PDB";
 my $NAME    = 'Palm Keyring';  my $Keyring = Open($File);
   
 my $lock_when     = 0;  
 my $unlocked     = time; # Change this to 0 when I get more stuff filled out  my $lock_when     = 0;
 my $lock_timeout = 30;  my $unlocked     = time; # Change this to 0 when I get more stuff filled out
   my $lock_timeout = 30;
 my $MW = MainWindow->new();  
 $MW->optionAdd('*BorderWidth' => 1);  build_window();
   MainLoop;
 my $pane = $MW->Panedwindow(  
   Name => 'main',  
   -showhandle => 1,  
   -orient => 'horizontal'  
 )->pack(-fill => 'both', -expand => 1);  sub build_window
   {
 my $lists_frame = $pane->Frame(Name => 'lists')  
   ->pack(-side=>'top',-anchor=>'nw',-fill=>'x');          my $MW = MainWindow->new();
 my $right_frame = $pane->Frame(Name => 'right',-relief=>'sunken')          $MW->optionAdd('*BorderWidth' => 1);
   ->pack(-side=>'top',-anchor=>'ne',-fill=>'both',-expand=>1);  
           my $pane = $MW->Panedwindow(
 my $account_frame = $right_frame->Frame(Name => 'account')                  Name => 'main',
   ->pack(-side=>'top',-anchor=>'nw',-fill=>'both',-expand=>1);                  -showhandle => 1,
 my $lock_frame    = $right_frame->Frame(Name => 'lock',-relief=>'raised')                  -orient => 'horizontal'
   ->pack(-side=>'bottom',-fill=>'x');          )->pack(-fill => 'both', -expand => 1);
   
 $pane->add('.main.lists');          my $lists_frame = $pane->Frame(Name => 'lists')
 $pane->add('.main.right');                  ->pack(-side=>'top',-anchor=>'nw',-fill=>'x');
           my $right_frame = $pane->Frame(Name => 'right',-relief=>'sunken')
 # Lists                  ->pack(-side=>'top',-anchor=>'ne',-fill=>'both',-expand=>1);
 my $category_list = $lists_frame->BrowseEntry()->pack(-side=>'top',-fill=>'x');  
 $category_list->insert(-1, 'All');          my $account_frame = $right_frame->Frame(Name => 'account')
 my $accounts_list = $lists_frame->Scrolled('Listbox', -scrollbars => 'e')                  ->pack(-side=>'top',-anchor=>'nw',-fill=>'both',-expand=>1);
   ->pack(-side=>'top',-fill=>'both',-expand=>1);          my $lock_frame    = $right_frame->Frame(Name => 'lock',-relief=>'raised')
                   ->pack(-side=>'bottom',-fill=>'x');
   
 # Account          $pane->add('.main.lists');
 my %account_entry;          $pane->add('.main.right');
 foreach my $label (qw/Category Name Account Password/) {  
   $account_entry{$label} = $account_frame->LabEntry(-state=>'readonly',  # Lists
   -labelWidth => 10,          my $category_list = $lists_frame->BrowseEntry()
   -labelPack => [-side => 'left', -anchor => 'w'],                  ->pack(-side=>'top',-fill=>'x');
   -label=>$label . ': ', -text => 'my' . $label)          $category_list->insert(-1, 'All');
   ->pack(-side=>'top',-anchor=>'nw',-fill=>'x');          my $accounts_list = $lists_frame->Scrolled('Listbox', -scrollbars => 'e')
 }                  ->pack(-side=>'top',-fill=>'both',-expand=>1);
   
 $account_entry{'Details'} = $account_frame->ROText(-wrap => 'word',-height=>5,-width=>30)  
   ->pack(-side=>'top',-anchor=>'nw',-fill=>'both',-expand=>1);  # Account
 $account_entry{'Details'}->insert('1.0',"This is a test\nThis is only a test");          my %account_entry;
           foreach my $label (qw/Category Name Account Password/) {
                   $account_entry{$label} = $account_frame->LabEntry(-state=>'readonly',
 # Lock                          -labelWidth => 10,
 my $lock_button = $lock_frame->Button(-text => 'Lock', -command => \&Lock)                          -labelPack => [-side => 'left', -anchor => 'w'],
   ->pack(-side=>'left');                          -label=>$label . ': ', -text => 'my' . $label)
 my $lock_progress = $lock_frame->ProgressBar(                                  ->pack(-side=>'top',-anchor=>'nw',-fill=>'x');
   -variable=>\$lock_when,          }
   -blocks => $lock_timeout,  
   -from   => $lock_timeout,          $account_entry{'Details'} = $account_frame->ROText(-wrap => 'word',-height=>5,-width=>30)
   -to     => 0,          ->pack(-side=>'top',-anchor=>'nw',-fill=>'both',-expand=>1);
   -gap    => 0,          $account_entry{'Details'}->insert('1.0',"This is a test\nThis is only a test");
 )->pack(-side=>'right',-fill=>'x',-expand=>1,-padx=>5);  
   
 $lock_progress->repeat(500,\&Lock_Timeout);  # Lock
           my $lock_button = $lock_frame->Button(-text => 'Lock', -command => \&Lock)
 my $menubar = build_menubar($MW);                  ->pack(-side=>'left');
           my $lock_progress = $lock_frame->ProgressBar(
 _populate_lists($Keyring, $category_list, $accounts_list);                  -variable=>\$lock_when,
                   -blocks => $lock_timeout,
 my $VERSION = 0.01;                  -from   => $lock_timeout,
                   -to     => 0,
 MainLoop;                  -gap    => 0,
           )->pack(-side=>'right',-fill=>'x',-expand=>1,-padx=>5);
   
 sub build_menubar {          $lock_progress->repeat(500,\&Lock_Timeout);
   
   # Create the menubar and File and Quit menubuttons.  Note          my $menubar = build_menubar($MW);
   # that the cascade's menu widget is automatically created.  
           _populate_lists($Keyring, $category_list, $accounts_list);
   my $menubar = $MW->Menu;  
   $MW->configure(-menu => $menubar);          return $MW;
   my $file = $menubar->cascade(-label => '~File', -tearoff => 0);  }
   my $help = $menubar->cascade(-label => '~Help', -tearoff => 0);  
   
   # Create the menuitems for each menu.  First, the File menu item.  sub build_menubar {
   
   $file->command(-label => "Open",  -command => \&Open);          my $MW = shift;
   $file->command(-label => "Close", -command => \&Close);  
   $file->command(-label => "Quit",  -command => \&exit);          # Create the menubar and File and Quit menubuttons.  Note
           # that the cascade's menu widget is automatically created.
   # Finally, the Help menuitems.  
           my $menubar = $MW->Menu;
   $help->command(-label => 'Version');          $MW->configure(-menu => $menubar);
   $help->separator;          my $file = $menubar->cascade(-label => '~File', -tearoff => 0);
   $help->command(-label => 'About');          my $help = $menubar->cascade(-label => '~Help', -tearoff => 0);
   
   my $ver_dialog =   $MW->Dialog(-title   => $NAME . ' Version',          # Create the menuitems for each menu.  First, the File menu item.
     -text    => "$NAME\n\nVersion $VERSION",  
     -buttons => ['OK'],          $file->command(-label => "Open",  -command => \&Open);
     -bitmap  => 'info');          $file->command(-label => "Close", -command => \&Close);
   my $about_dialog = $MW->Dialog(-title   => 'About ' . $NAME,          $file->command(-label => "Quit",  -command => \&exit);
     -text    => 'About ' . $NAME . "\n" .  
                 '© Copyright 2006 Andrew Fresh <andrew@mad-techies.org>',          # Finally, the Help menuitems.
     -buttons => ['OK']);  
   my $menu = $help->cget('-menu');          $help->command(-label => 'Version');
   $menu->entryconfigure('Version', -command => [$ver_dialog   => 'Show']);          $help->separator;
   $menu->entryconfigure('About',   -command => [$about_dialog => 'Show']);          $help->command(-label => 'About');
   
   $menubar;                        # return the menubar          my $ver_dialog =   $MW->Dialog(-title   => $NAME . ' Version',
                   -text    => "$NAME\n\nVersion $VERSION",
 }                  -buttons => ['OK'],
                   -bitmap  => 'info');
 sub Lock          my $about_dialog = $MW->Dialog(-title   => 'About ' . $NAME,
 {                  -text    => 'About ' . $NAME . "\n" .
   $unlocked = time;                  '© Copyright 2006 Andrew Fresh <andrew@mad-techies.org>',
 }                  -buttons => ['OK']);
           my $menu = $help->cget('-menu');
 sub Lock_Timeout          $menu->entryconfigure('Version', -command => [$ver_dialog   => 'Show']);
 {          $menu->entryconfigure('About',   -command => [$about_dialog => 'Show']);
   #return unless $unlocked;  
   my $diff = time - $unlocked;          $menubar;                        # return the menubar
   if ($diff > $lock_timeout) {  
     print "Timed out!";  }
     Tk::exit();  
   } else {  sub Lock
     $lock_when = $diff;  {
   }          $unlocked = time;
 }  }
   
 sub Open  sub Lock_Timeout
 {  {
 }          #return unless $unlocked;
           my $diff = time - $unlocked;
 sub Close          if ($diff > $lock_timeout) {
 {                  print "Timed out!";
 }                  Tk::exit();
                   Lock();
 sub _do_open          } else {
 {                  $lock_when = $diff;
   my $file = shift;          }
   my $pdb  = Palm::Keyring->new;  }
   $pdb->Load($file) || die "Couldn't load '$file'";  
   return $pdb;  sub Open
 }  {
           my $file = shift;
 sub _do_close          my $pdb  = Palm::Keyring->new;
 {          $pdb->Load($file) || die "Couldn't load '$file'";
 }          return $pdb;
   }
 sub _do_lock  
 {  sub Close
 }  {
   }
 sub _populate_lists  
 {  sub _populate_lists
   my $pdb  = shift;  {
   my $cat  = shift;          my $pdb  = shift;
   my $acct = shift;          my $cat  = shift;
   foreach my $category (@{ $pdb->{'appinfo'}->{'categories'} }) {          my $acct = shift;
     next unless $category->{'name'};          foreach my $category (@{ $pdb->{'appinfo'}->{'categories'} }) {
     $cat->insert( $category->{'id'}, $category->{'name'});                  next unless $category->{'name'};
   }                  $cat->insert( $category->{'id'}, $category->{'name'});
   foreach my $account (@{ $pdb->{'records'} }) {          }
     next unless $account->{'plaintext'}->{'name'};          foreach my $account (@{ $pdb->{'records'} }) {
     $acct->insert('end', $account->{'plaintext'}->{'name'});                  next unless $account->{'plaintext'}->{'name'};
   }                  $acct->insert('end', $account->{'plaintext'}->{'name'});
               }
 }  
   }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.5

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>