The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=for comment based on iup-3.5 - http://www.tecgraf.puc-rio.br/iup/en/elem/iuptext.html

=head1 NAME

IUP::Text - [GUI element] editable text field (single/multi-line, plain/rich-text)

=head1 DESCRIPTION

Creates an editable text field.

=begin HTML

<p>
  <table border="1">
    <col style="background-color: rgb(239, 235, 231);">
    <col style="background-color: rgb(173, 177, 194);">
    <col style="background-color: rgb(212, 208, 200);">
    <col style="background-color: rgb(236, 233, 216);">
    <tbody align="center">
      <tr>
        <th>GTK</th>
        <th>Motif</th>
        <th>Windows<br>Classic</th>
        <th>Windows<br>w/ Style</th>
      </tr>
      <tr>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_gtk.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_mot.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_win2k.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_winxp.png"></td>
      </tr>
      <tr>
        <th colspan="4" style="text-align: center;">When SPIN=YES</th>
      </tr>
      <tr>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_gtk_spin.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_mot_spin.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_win2k_spin.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_winxp_spin.png"></td>
      </tr>
    </tbody>
  </table>
</p>
<p>
  <table border="1">
    <tbody align="left">
      <tr>
        <th>Attributes</th>
        <th>Screenshot</th>
      </tr>
      <tr>
        <td style="text-align: left;">
<pre>
$txt = IUP::Text->new( MULTILINE=>"YES", FORMATTING=>"YES");
$txt->SetAttribute( ADDFORMATTAG_HANDLE => IUP::User->new(
    ALIGNMENT=>"CENTER", 
    SPACEAFTER=>"10",
    FONTSIZE=>"24", 
    SELECTION=>"3,1:3,50",
));
$txt->SetAttribute( ADDFORMATTAG_HANDLE => IUP::User->new(
    BGCOLOR=>"255 128 64",
    UNDERLINE=>"SINGLE",
    WEIGHT=>"BOLD",
    SELECTION=>"3,7:3,11",
));
$txt->SetAttribute( ADDFORMATTAG_HANDLE => IUP::User->new(
    ITALIC=>"YES",
    STRIKEOUT=>"YES",
    SELECTION=>"2,1:2,12",
));
</pre>
        <td><img src="http://kmx.github.io/perl-iup/img-3.9/elem/iuptext_formatting.png"></td>
      </tr>
    </tbody>
  </table>
</p>

=end HTML

=head1 USAGE

=head2 CREATION - new() method

 $text = IUP::Text->new( VALUE=>"text text text" );

B<Returns:> the identifier of the created element, or C<undef> if an error occurs.

NOTE: You can pass to C<new()> other C<ATTRIBUTE=E<gt>'value'> or C<CALLBACKNAME=E<gt>\&func> pairs relevant
to this element - see L<IUP::Manual::02_Elements|IUP::Manual::02_Elements/"new()">.

=head2 ATTRIBUTES

For more info about concept of attributes (setting/getting values etc.)
see L<IUP::Manual::03_Attributes|IUP::Manual::03_Attributes>. Attributes specific to this element:

=over

=item B<ALIGNMENT>

I<[Windows and GTK Only] (non inheritable)>

Text alignment. Possible values: "ALEFT", "ARIGHT", "ACENTER".
  
Default: "ALEFT". In Motif, text is always left aligned.

=item B<APPEND>

I<(write-only)>

Inserts a text at the end of the current text.
In the Multiline, if APPENDNEWLINE=YES, a "\n" character will be
automatically inserted before the appended text if the current text is
not empty(APPENDNEWLINE default is YES). Ignored if set before map.

=item L<BGCOLOR|IUP::Manual::03_Attributes/BGCOLOR>

Background color of the text.
Default: the global attribute TXTBGCOLOR.

=item B<BORDER>

I<(creation only)>

Shows a border around the text. Default:
"YES".

=item B<CANFOCUS>

I<(creation only) (non inheritable)>

enables the focus
traversal of the control. In Windows the control will still get the
focus when clicked. Default: YES. 

=item B<CARET>

I<(non inheritable)>

Position of the insertion point. Its format
depends in MULTILINE=YES. The first position, B<lin> or B<col>, is "1".

For multiple lines a string with the B<< "<lin>,<col>" >> format, where
B<lin> and B<col> are integer numbers corresponding to the caret's
position.

For single line a string in the B<< "<col>" >> format, where B<col>
is an integer number corresponding to the caret's position.

When B<lin> is greater than the number of lines, the caret is placed at
the last line. When B<col> is greater than the number of characters in
the given line, the caret is placed after the last character of the
line.

If the caret is not visible the text is scrolled to make it visible.

In Windows, if the element does not have the focus the returned value
is the position of the first character of the current selection. The
caret is only displayed if the element has the keyboard focus, but its
position can be changed even if not visible. When changed it will also
change the selection but the text will be scrolled only when it
receives the focus.

=item B<CARETPOS>

I<(non inheritable)>

Also the position of the insertion
point, but using a zero based character unique index "pos". Useful for
indexing the VALUE string.

=item B<CLIPBOARD>

I<(write-only)>

clear, cut, copy or paste the selection to
or from the clipboard. Values: "CLEAR", "CUT", "COPY" or "PASTE". In
Windows UNDO is also available, and REDO is available when
FORMATTING=YES. 

=item B<COUNT>

I<(read-only)>

Returns the number of characters in the text. (since iup-3.5)

=item B<CUEBANNER>

I<[Windows Only] (non inheritable)>

Text that is displayed
when there is no text at the control. It works as a textual cue, or tip
to prompt the user for input. Valid only for MULTILINE=NO, and it is
not available for Windows 2000. 

=item B<DRAGDROP>

I<[Windows and GTK Only] (non inheritable)>

Enable or disable
the drag&drop of files. Default: NO, but if DROPFILES_CB is defined
when the element is mapped then it will be automatically enabled.

=item L<FGCOLOR|IUP::Manual::03_Attributes/FGCOLOR>

Text color. Default: the global
attribute TXTFGCOLOR.

=item B<FILTER>

I<[Windows Only] (non inheritable)>

Allows a custom filter to
process the characters: Can be LOWERCASE, UPPERCASE or NUMBER (only numbers allowed). 

=item L<FORMATTING|IUP::Manual::03_Attributes/FORMATTING>

I<[Windows and GTK Only] (non inheritable)>

When enabled allow the use of text formatting attributes.
In GTK is always enabled, but only when MULTILINE=YES. Default: NO.

=item B<INSERT>

I<(write-only)>

Inserts a text in the caret's position, also
replaces the current selection if any. Ignored if set before map.

=item B<LINECOUNT>

I<(read-only)>

Returns the number of characters in the line
where the caret is. When MULTILINE=NO returns always "1". (since iup-3.5)

=item B<LINEVALUE>

I<(read-only)>

Returns the text of the line where the caret
is. It does not include the "\n" character. When MULTILINE=NO returns
the same as VALUE. (since iup-3.5)

=item L<MASK|IUP::Manual::03_Attributes/MASK>

I<(non inheritable)>

Defines a mask that
will filter interactive text input.

=item B<MULTILINE>

I<(creation only) (non inheritable)>

Allows the edition of
multiple lines. In single line mode some characters are invalid, like
"\t", "\r" and "\n". Default: NO.

=item B<NC>

Maximum number of characters allowed for keyboard input, larger
text can still be set using attributes. The maximum value is the limit
of the VALUE attribute. The "0" value is the same as maximum. Default:
maximum.

=item B<OVERWRITE>

I<[Windows and GTK Only] (non inheritable)>

Turns the
overwrite mode ON or OFF. Works only when FORMATTING=YES. 

=item B<PADDING>

Internal margin. Works just like the MARGIN attribute of
the L<IUP::Hbox|IUP::Hbox> and L<IUP::Vbox|IUP::Vbox> containers, but uses a different name to
avoid inheritance problems. Default value: "0x0". In Windows, only the
horizontal value is used. (GTK 2.10 for single line)

=item B<PASSWORD>

I<[Windows and GTK Only] (creation only, non inheritable)>

Hide the typed character using an "*". Default: "NO".

=item B<READONLY>

Allows the user only to read the contents, without
changing it. Restricts keyboard input only, text value can still be
changed using attributes. Navigation keys are still available. Possible
values: "YES", "NO". Default: NO.

=item B<SCROLLBAR>

I<(creation only)>

Valid only when MULTILINE=YES. Associates
an automatic horizontal and/or vertical scrollbar to the multiline. Can
be: "VERTICAL", "HORIZONTAL", "YES" (both) or "NO" (none). Default:
"YES". For all systems, when SCROLLBAR!=NO the natural size will always
include its size even if the native system hides the scrollbar. If
=item B<AUTOHIDE>=YES scrollbars are visible only if they are necessary, by
default AUTOHIDE=NO. In Windows when FORMATTING=NO, AUTOHIDE is not
supported. In Motif AUTOHIDE is not supported.

=item B<SCROLLTO>

I<(non inheritable, write only)>

Scroll the text to make the
given position visible. It uses the same format and reference of the
CARET attribute ("lin:col" or "col" starting at 1). 

=item B<SCROLLTOPOS>

I<(non inheritable, write only)>

Scroll the text to make
the given position visible. It uses the same format and reference of
the CARETPOS attribute ("pos" starting at 0).

=item B<SELECTEDTEXT>

I<(non inheritable)>

Selection text. Returns C<undef> if
there is no selection. When changed replaces the current selection.
Similar to INSERT, but does nothing if there is no selection.

=item B<SELECTION>

I<(non inheritable)>

Selection interval. Returns
C<undef> if there is no selection. Its format depends in MULTILINE=YES. The
first position, B<lin> or B<col>, is "1".

For multiple lines a string in the
B<< "<lin1>,<col1>:<lin2>,<col2>" >>format, where B<lin1>, B<col1>,
B<lin2> and B<col2> are integer numbers corresponding to the
selection's interval. B<col2> correspond to the character after the
last selected character.

For single line a string in the B<< "<col1>:<col2>" >> format, where
B<col1> and B<col2> are integer numbers corresponding to the
selection's interval. B<col2> correspond to the character after the
last selected character.

In Windows, when changing the selection the caret position is also
changed.

The values ALL and NONE are also accepted independently of MULTILINE.

=item B<SELECTIONPOS>

I<(non inheritable)>

Same as SELECTION but using a zero
based character index B<< "<pos1>:<pos2>" >>. Useful for indexing the VALUE
string. The values ALL and NONE are also accepted.

=item L<SIZE|IUP::Manual::03_Attributes/SIZE>

I<(non inheritable)>

Since the contents
can be changed by the user, the B<Natural> B<Size> is not affected by
the text contents . In IUP 2.x the B<Natural> B<Size> was
defined by the number of lines in the text and the with of the largest
line. For IUP 3, use VISIBLECOLUMNS and VISIBLELINES to control the
B<Natural Size>.

=item B<SPIN>

I<(non inheritable, creation only)>

Enables a spin control
attached to the element. Default: NO. The spin increments and
decrements an integer number. The editing in the element is still
available. 

=item B<SPINVALUE>

I<(non inheritable)>

The current value of the spin. The
value is limited to the minimum and maximum values.

=item B<SPINMAX>

I<(non inheritable)>

The maximum value. Default: 100.

=item B<SPINMIN>

I<(non inheritable)>

The minimum value. Default: 0.

=item B<SPININC>

I<(non inheritable)>

The increment value. Default: 1.

=item B<SPINALIGN>

I<(creation only)>

The position of the spin. Can be LEFT or
RIGHT. Default: RIGHT. In GTK is always RIGHT.

=item B<SPINWRAP>

I<(creation only)>

If the position reach a limit it continues
from the opposite limit. Default: NO.

=item B<SPINAUTO>

I<(creation only)>

Enables the automatic update of the text
contents. Default: YES. Use SPINAUTO=NO and the VALUE attribute during
SPIN_CB to control the text contents when the spin is incremented.

In Windows, the increment is multiplied by 5 after 2 seconds and
multiplied by 20 after 5 seconds of a spin button pressed. In GTK, the
increment change is progressively accelerated when a spin button is
pressed.

=item B<TABSIZE>

I<[Windows and GTK Only]>

Valid only when MULTILINE=YES.
Controls the number of characters for a tab stop. Default: 8.

=item B<VALUE>

I<(non inheritable)>

Text entered by the user. The '\n'
character indicates a new line, valid only when MULTILINE=YES. After
the element is mapped and if there is no text will return the empty
string "".

=item B<VALUEMASKED>

I<(non inheritable) (write-only)>

sets VALUE but first
checks if it is validated by MASK. If not does nothing. (since iup-3.4)

=item B<VISIBLECOLUMNS>

Defines the number of visible columns for the
B<Natural Size>, this means that will act also as minimum number of
visible columns. It uses a wider character size then the one used for
the SIZE attribute so strings will fit better without the need of extra
columns. As for SIZE you can set to C<undef> after map to use it as an
initial value. Default 5 

=item B<VISIBLELINES>

When MULTILINE=YES defines the number of visible lines
for the B<Natural Size>, this means that will act also as minimum
number of visible lines. As for SIZE you can set to C<undef> after map to
use it as an initial value. Default: 1 

=item B<WORDWRAP>

I<(creation only)>

Valid only when MULTILINE=YES. If enabled
will force a word wrap of lines that are greater than the with of the
control, and the horizontal scrollbar will be removed. Default: NO.

=back

The following L<common attributes|IUP::Manual::03_Attributes/Common Attributes> are also accepted:

=over

=item * L<ACTIVE|IUP::Manual::03_Attributes/ACTIVE>, L<FONT|IUP::Manual::03_Attributes/FONT>,
L<EXPAND|IUP::Manual::03_Attributes/EXPAND>,
L<SCREENPOSITION|IUP::Manual::03_Attributes/SCREENPOSITION>,
L<POSITION|IUP::Manual::03_Attributes/POSITION>,
L<MINSIZE|IUP::Manual::03_Attributes/MINSIZE>,
L<MAXSIZE|IUP::Manual::03_Attributes/MAXSIZE>, L<WID|IUP::Manual::03_Attributes/WID>,
L<TIP|IUP::Manual::03_Attributes/TIP>,
L<RASTERSIZE|IUP::Manual::03_Attributes/RASTERSIZE>,
L<ZORDER|IUP::Manual::03_Attributes/ZORDER>,
L<VISIBLE|IUP::Manual::03_Attributes/VISIBLE>

=back

=head2 CALLBACKS

For more info about concept of callbacks (setting callback handlers etc.)
see L<IUP::Manual::04_Callbacks|IUP::Manual::04_Callbacks>. Callbacks specific to this element:

=over

=item L<ACTION|IUP::Manual::04_Callbacks/ACTION>

Action generated when the text is
edited, but before its value is actually changed. Can be generated when
using the keyboard, undo system or from the clipboard.

B<Callback handler prototype:>

 sub action_handler {
   my ($self, $c, $new_value) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Text) that activated the event

B<$c:> valid alpha numeric character or 0.

B<$new_value:> Represents the new text value.

B<Returns:> IUP_CLOSE will be processed, but the change will be ignored.
If IUP_IGNORE, the system will ignore the new value. If B<c> is valid
and returns a valid alpha numeric character, this new character will be
used instead. The VALUE attribute can be changed only if IUP_IGNORE is
returned.

=back

=item L<BUTTON_CB|IUP::Manual::04_Callbacks/BUTTON_CB>

Action generated when any
mouse button is pressed or released. Use L<ConvertXYToPos|IUP::Manual::02_Elements/"ConvertXYToPos()"> to convert (x,y)
coordinates in character positioning. 

=item B<CARET_CB>

Action generated when the caret/cursor position is changed.

B<Callback handler prototype:>

 sub caret_cb_handler {
   my ($self, $lin, $col, $pos) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Text) that activated the event

B<$lin, $col:> line and column number (start at 1).

B<$pos:> 0 based character position.

For single line controls B<lin> is always 1, and B<pos> is always B<col-1>.

=back

=item L<DROPFILES_CB|IUP::Manual::04_Callbacks/DROPFILES_CB>

I<[Windows and GTK Only]>

Action generated when one or more files are dropped in the element.

=item L<MOTION_CB|IUP::Manual::04_Callbacks/MOTION_CB>

Action generated when the
mouse is moved. Use L<ConvertXYToPos|IUP::Manual::02_Elements/"ConvertXYToPos()">
to convert (x,y) coordinates in character positioning. 

=item B<SPIN_CB>

Action generated when a spin button is pressed. Valid only
when SPIN=YES. When this callback is called the ACTION callback is not
called. The VALUE attribute can be changed during this callback only if
SPINAUTO=NO. 

B<Callback handler prototype:>

 sub spin_cb_handler {
   my ($self, $pos) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Text) that activated the event

B<$pos:> the value of the spin (after it was incremented).

B<Returns:> IUP_IGNORE is processed in Windows and Motif.

=back

=item B<VALUECHANGED_CB>

Called after the value was interactively changed by the user. 

B<Callback handler prototype:>

 sub valuechanged_cb_handler {
   my ($self) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Text) that activated the event

=back

=back

The following L<common callbacks|IUP::Manual::04_Callbacks/Common Callbacks> are also accepted:

=over

=item * L<MAP_CB|IUP::Manual::04_Callbacks/MAP_CB>,
L<UNMAP_CB|IUP::Manual::04_Callbacks/UNMAP_CB>,
L<GETFOCUS_CB|IUP::Manual::04_Callbacks/GETFOCUS_CB>,
L<KILLFOCUS_CB|IUP::Manual::04_Callbacks/KILLFOCUS_CB>,
L<ENTERWINDOW_CB|IUP::Manual::04_Callbacks/ENTERWINDOW_CB>,
L<LEAVEWINDOW_CB|IUP::Manual::04_Callbacks/LEAVEWINDOW_CB>,
L<K_ANY|IUP::Manual::04_Callbacks/K_ANY>, L<HELP_CB|IUP::Manual::04_Callbacks/HELP_CB>

=back

=head2 Auxiliary Functions

=head3 TextConvertLinColToPos()

 $pos = $text->TextConvertLinColToPos($lin, $col);

Converts a (lin, col) character positioning into an absolute position.
For single line controls B<pos> is always B<col-1>. 

=head3 TextConvertPosToLinCol()

 ($lin, $col) = $text->TextConvertPosToLinCol($pos);

Converts an absolute position into a (lin, col) character positioning.
For single line controls B<lin> is always 1, and B<col> is always
B<pos+1>.

=head1 NOTES

When MULTILINE=YES the Enter key will add a new line, and the Tab key
will insert a Tab. So the "DEFAULTENTER" button will not be processed
when the element has the keyboard focus, also to change focus to the
next element press E<lt>CtrlE<gt>+E<lt>TabE<gt>.

In Windows, if you press a Ctrl+key combination that is not supported
by the control, then a beep is sound.

When using UTF-8 strings be aware that all attributes are
indexed by characters, NOT by byte index, because some characters in
UTF-8 can use more than one byte.

=head2 Navigation, Selection and Clipboard Keys

Here is a list of the common keys for all drivers. Other keys are
available depending on the driver.

B<Navigation:>

 Keys             Action             
 --------------------------------------------------
 Arrows           move by individual characters/lines
 Ctrl+Arrows      move by words/paragraphs
 Home/End         move to begin/end line
 Ctrl+Home/End    move to begin/end text
 PgUp/PgDn        move vertically by pages
 Ctrl+PgUp/PgDn   move horizontally by pages

B<Selection:>

 Keys             Action             
 --------------------------------------------------
 Shift+Arrows     select charaters
 Ctrl+A           select all

B<Deleting:>

 Keys             Action             
 --------------------------------------------------
 Del              delete the character at right
 Backspace        delete the character at left

B<Clipboard:>

 Keys             Action             
 --------------------------------------------------
 Ctrl+C           copy
 Ctrl+X           cut
 Ctrl+V           paste

=head1 EXAMPLES


The element B<IUP::Text> is used in the following sample scripts:

=over

=item * L<0-basic/button.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/button.pl> - IUP::Button example

=item * L<0-basic/cbox.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/cbox.pl> - IUP::Cbox example

=item * L<0-basic/colorbrowser.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/colorbrowser.pl> - IUP::ColorBrowser example

=item * L<0-basic/drag-demo.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/drag-demo.pl> - IUP::Text DRAG-and-DROP demo (drag part)

=item * L<0-basic/frame2.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/frame2.pl> - IUP::Image example

=item * L<0-basic/item.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/item.pl> - IUP::Item Example

=item * L<0-basic/layoutdialog.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/layoutdialog.pl> - IUP::LayoutDialog example

=item * L<0-basic/mask_simple.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/mask_simple.pl> - IUP::Text + MASK example

=item * L<0-basic/menu.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/menu.pl> - IUP::Menu example

=item * L<0-basic/sbox1.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/sbox1.pl> - IUP::Sbox example

=item * L<0-basic/sbox2.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/sbox2.pl> - IUP::Sbox example

=item * L<0-basic/separator.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/separator.pl> - IUP::Separator example

=item * L<0-basic/submenu.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/submenu.pl> - IUP::Submenu example

=item * L<0-basic/tabs2.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/tabs2.pl> - IUP::Tabs example

=item * L<0-basic/text1.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/text1.pl> - IUP::Text (single line) example

=item * L<0-basic/text2.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/text2.pl> - IUP::Text example

=item * L<0-basic/text_font.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/text_font.pl> - IUP::Text (font) example

=item * L<0-basic/text_format.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/text_format.pl> - IUP::Text (formating) example

=item * L<0-basic/text_multiline.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/text_multiline.pl> - IUP::Text (multiline) example

=item * L<0-basic/tree_set_attrs.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/tree_set_attrs.pl> - IUP::Tree example (attributes)

=item * L<0-basic/zbox.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/0-basic/zbox.pl> - IUP::Zbox example

=item * L<1-apps/app-mdi.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/1-apps/app-mdi.pl> - IUP app example

=item * L<1-apps/app-plot-demo.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/1-apps/app-plot-demo.pl> - dials for zooming

=item * L<1-apps/app-sample1.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/1-apps/app-sample1.pl> - example used for screenshot - IUP.pod

=item * L<1-apps/app-sample2.pl|https://metacpan.org/source/KMX/IUP-0.201/examples/1-apps/app-sample2.pl> - example based on the original sample.c

=back 



=head1 SEE ALSO

L<IUP::List|IUP::List>

The original doc: L<iuptext.html|http://www.tecgraf.puc-rio.br/iup/en/elem/iuptext.html>
 

=cut