[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.1 and 1.2

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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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