Tk-PopEntry

 view release on metacpan or  search on metacpan

PopEntry.pm  view on Meta::CPAN

package Tk::PopEntry;

use strict;
require Tk::Entry;

use vars qw(@ISA $VERSION);
@ISA = qw(Tk::Derived Tk::Entry);
$VERSION = 0.06;

Construct Tk::Widget 'PopEntry';

sub Populate{
   my($dw, $args) = @_;
   $dw->SUPER::Populate($args);
   
   my $menuitems = delete $args->{-menuitems};
   my $nomenu = delete $args->{-nomenu};
   
   # Create the toplevel here, for easier reference later
   my $menu = $dw->Toplevel(-bd=>2, -relief=>'raised');
   $menu->withdraw;
   $menu->overrideredirect(1);
   $menu->transient;
   
   # The default menu items
   if(!defined($menuitems)){
      $menuitems = [
         ["Cut",     'Tk::PopEntry::cutToClip',      '<Control-x>', 2],
         ["Copy",    'Tk::PopEntry::copyToClip',     '<Control-c>', 0],
         ["Paste",   'Tk::PopEntry::pasteFromClip',  '<Control-v>', 0],
         ["Delete",  'Tk::PopEntry::deleteSelected', '<Control-d>', 0],
         ["Sel. All",'Tk::PopEntry::selectAll',      '<Control-a>', 7],
      ];
   }

   $dw->Advertise('popupmenu' => $menu);
   
   #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   # The -menu options is for convenience, but is not generally 
   # meant to be called as a configure option once created.  Caveat Progammor.
   #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   $dw->ConfigSpecs(
      -pattern    => ['PASSIVE'],
      -case       => ['PASSIVE'],
      -maxwidth   => ['PASSIVE'],
      -maxvalue   => ['PASSIVE'],
      -minvalue   => ['PASSIVE'],
      -nomenu     => ['PASSIVE',undef,undef,$nomenu],
      -nospace    => ['PASSIVE',undef,undef,0],
      -menuitems  => ['PASSIVE',undef,undef,$menuitems],
      -menu       => ['PASSIVE',undef,undef,$menu],
      DEFAULT     => [$dw],
   );
    
   $dw->setBindings($menuitems);
}

# Set the default bindings
sub setBindings{
   my($dw, $menuitems) = @_;
      
   my($callback, $binding);
   my $popupmenu = $dw->Subwidget('popupmenu');

   $dw->bind("<Key>", sub{ $dw->validate } );

   $dw->bind("<Button-3>",



( run in 1.033 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )