<HTML> <HEAD> <TITLE>PopEntry.pm</TITLE> <LINK REV="made" HREF="mailto:"> </HEAD> <BODY> <A NAME="__index__"></A> <!-- INDEX BEGIN --> <UL> <LI><A HREF="#name">NAME</A></LI> <LI><A HREF="#synopsis">SYNOPSIS</A></LI> <LI><A HREF="#options">OPTIONS</A></LI> <LI><A HREF="#planned changes">PLANNED CHANGES</A></LI> <LI><A HREF="#author">AUTHOR</A></LI> <LI><A HREF="#see also">SEE ALSO</A></LI> </UL> <!-- INDEX END --> <HR> <P> <H1>NAME</H1> Tk::PopEntry - An Entry widget with a built in right-click menu as well as predefined validation options. <BR> <HR> <P> <H1><A NAME="synopsis">SYNOPSIS</A></H1> <PRE> use PopEntry; $dw = $parent->PopEntry( -pattern => 'alpha', 'capsonly', 'signed_int', 'unsigned_int', 'float', 'nondigit', or any supplied regexp. -nomenu => 0 or 1, -case => 'upper', 'lower', 'capitalize', -maxwidth => int, -minwidth => int, -maxvalue => int, -nospace => 0 or 1, -menuitems => ['string', 'callback', 'binding', 'index'], ); $dw->pack; </PRE> <P> <HR> <P> <H1>DESCRIPTION</H1> <P>PopEntry is an Entry widget with a right-click menu automatically attached. In addition, certain field masks can easily be applied to the entry widget in order to force the end-user into entering only the values you want him or her to enter.</P> <P>By default, there are five items attached to the right-click menu: Cut, Copy, Paste, Delete and Select All. The default bindings for the items are ctrl-x, ctrl-c, ctrl-v, ctrl-d, and ctrl-a, respectively.</P> <P>The difference between 'Cut' and 'Delete' is that the former automatically copies the contents that were cut to the clipboard, while the latter does not.</P> <P> <P> <HR> <H1><A NAME="options">OPTIONS</A></H1> <P><B>-pattern</B> <BR> The pattern specified here creates an input mask for the Popentry widget. There are six pre-defined masks: <BR><BR> alpha - Upper and lower case a-z only. <BR> capsonly - Upper case A-Z only. <BR> nondigit - Any characters except 0-9. <BR> float - A float value, which may or may not include a decimal. <BR> signed_int - A signed integer value, which may or may not include a '+'. <BR> unsigned_int - An unsigned integer value.</P> <P>You may also specify a regular expression of your own design using Perl's standard regular expression mechanisms. Be sure to use single quotes.</P> <P> <P><B>-nomenu</B> <BR> If set to true, then no right-click menu will appear. Presumably, you would set this if you were only interested in the input-mask functionality.</P> <P><B>-nospace</B> <BR> If set to true, the user may not enter whitespace before, after or between words within that Popentry widget.</P> <P><B>-maxwidth</B> <BR> Specifies the maximum number of characters that the user can enter in that particular Popentry widget. Note that this is not the same as the width of the widget.</P> <P><B>-maxvalue</B> <BR> If one of the pre-defined numeric patterns is chosen, this specifies the maximum allowable value that may be entered by a user for the widget.</P> <P><B>-minvalue</B> <BR> If one of the pre-defined numeric patterns is chosen, this specifies the minimum allowable value for the first digit (0-9). This should work better.</P> <P><B>-menuitems</B> <BR> If specified, this creates a user-defined right-click menu rather than the one that is provided by default. The value specified must be a four element anonymous array that contains:</P> <P> <UL> <LI>a string (text) that appears on the menu, <LI>a callback (in 'package::callback' syntax format), <LI>a binding for that option (see below), <LI>an index value specifying where on the menu it should appear, starting at index 0. </UL></P> <P> The binding specified need only be in the form, '<ctrl-x>'. You needn't explicitly bind it yourself. Your callback will automatically be bound to the event sequence you specified. <P> <HR> <H1>KNOWN BUGS</H1> <P>The -pattern option ``capsonly'' will only work properly if no more than one word is supplied.</P> <P>The -minvalue only works for the first digit.</P> <P> <P> <HR> <H1><A NAME="planned changes">PLANNED CHANGES</A></H1> <P>Fix the issues mentioned above.</P> <P>Allow individual entries to be added or removed from the menu via predefined methods.</P> <P> <HR> <H1><A NAME="author">AUTHOR</A></H1> <P>Daniel J. Berger <A HREF="mailto:djberg96@hotmail.com">djberg96@hotmail.com</A></P> <P> <HR> <H1><A NAME="see also">SEE ALSO</A></H1> <P>Entry</P> </BODY> </HTML>