1#!/usr/local/bin/perl -w
2# -*- perl -*-
3
4#
5# $Id: 1.pl,v 1.8 1998/08/28 00:41:44 eserte Exp $
6# Author: Slaven Rezic
7#
8# Copyright (C) 1997,1998 Slaven Rezic. All rights reserved.
9# This program is free software; you can redistribute it and/or
10# modify it under the same terms as Perl itself.
11#
12# Mail: eserte@cs.tu-berlin.de
13# WWW:  http://user.cs.tu-berlin.de/~eserte/
14#
15
16use Tk;
17use Tk::HistEntry;
18use strict;
19
20my $top = new MainWindow;
21
22my($foo, $bla, $blubber);
23
24my $f = $top->Frame->grid(-row => 0, -column => 0,  -sticky => 'n');
25my $lb = $top->Scrolled('Listbox', -scrollbars => 'osoe'
26		       )->grid(-row => 0, -column => 1);
27$f->Label(-text => 'HistEntry')->pack;
28my $b = $f->HistEntry(-textvariable => \$foo)->pack;
29my $bb = $f->Button(-text => 'Add current',
30		    -command => sub {
31			return unless $foo;
32			$b->historyAdd($foo);
33			$lb->delete(0, 'end');
34			foreach ($b->history) {
35			    $lb->insert('end', $_);
36			}
37			$lb->see('end');
38			$foo = '';
39		    })->pack;
40$f->Button(-text => 'Replace history',
41	   -command => sub {
42	       $b->history([keys %ENV]);
43	   }
44	  )->pack;
45$b->bind('<Return>' => sub { $bb->invoke });
46
47my $f2 = $top->Frame->grid(-row => 1, -column => 0, -sticky => 'n');
48my $lb2 = $top->Scrolled('Listbox', -scrollbars => 'osoe'
49			)->grid(-row => 1, -column => 1);
50$f2->Label(-text => 'HistEntry with invoke, limit ...')->pack;
51my $b2;
52$b2 = $f2->HistEntry(-textvariable => \$bla,
53		     -match => 1,
54		     -label => 'Test label',
55		     -labelPack => [-side => 'left'],
56		     -width => 10,
57		     -bell => 0,
58		     -dup => 0,
59		     -limit => 6,
60		     -command => sub {
61			 my $w = shift;
62			 # automatic historyAdd
63			 $lb2->delete(0, 'end');
64			 foreach ($b2->history) {
65			     $lb2->insert('end', $_);
66			 }
67			 $lb2->see('end');
68		     })->pack;
69
70#XXX$b2->configure(-match => 1);#XXX
71$f2->Button(-text => 'Add current',
72	    -command => sub { $b2->invoke })->pack;
73
74my $f3 = $top->Frame->grid(-row => 2, -column => 0, -sticky => 'n');
75my $lb3 = $top->Scrolled('Listbox', -scrollbars => 'osoe'
76			)->grid(-row => 2, -column => 1);
77$f3->Label(-text => 'SimpleHistEntry')->pack;
78my $b3 = $f3->SimpleHistEntry(-textvariable => \$blubber,
79			      -command => sub {
80				  my($w, $line, $added) = @_;
81				  if ($added) {
82				      $lb3->insert('end', $line);
83				      $lb3->see('end');
84				  }
85				  $blubber = '';
86			      })->pack;
87$f3->Button(-text => 'Add current',
88	    -command => sub { $b3->invoke })->pack;
89
90# # Autodestroy
91# my $seconds = 60;
92# my $autodestroy_text = "Autodestroy in " . $seconds . "s\n";
93# $top->Label(-textvariable => \$autodestroy_text,
94# 	   )->grid(-row => 99, -column => 0, -columnspan => 2);
95# $top->repeat(1000, sub { if ($seconds <= 0) { $top->destroy }
96# 			 $seconds--;
97# 			 $autodestroy_text = "Autodestroy in " . $seconds
98# 			   . "s\n";
99# 		     });
100
101$top->Button(-text => 'Exit',
102	     -command => sub { $top->destroy },
103	    )->grid(-row => 99, -column => 0, -columnspan => 2);
104
105MainLoop;
106
107