NAME

Prima::Tie - tie widget properties to scalars and arrays

DESCRIPTION

Prima::Tie contains two abstract classes Prima::Tie::Array and Prima::Tie::Scalar which tie an array or a scalar to a widget's arbitrary array or scalar property. Also, it contains classes Prima::Tie::items, Prima::Tie::text, and Prima::Tie::value, which tie a variable to a widget's items, text, and value properties respectively.

SYNOPSIS

use Prima::Tie;

tie @items, 'Prima::Tie::items', $widget;

tie @some_property, 'Prima::Tie::Array', $widget, 'some_property';

tie $text, 'Prima::Tie::text', $widget;

tie $some_property, 'Prima::Tie::Scalar', $widget, 'some_property';

USAGE

These classes provide immediate access to a widget's array and scalar properties, in particular to popular properties items and text. It is considerably simpler to say

splice(@items,3,1,'new item');

than to say

my @i = @{$widget->items};
splice(@i,3,1,'new item');
$widget->items(\@i);

That way, you can work directly with the text or items. Furthermore, if the only reason you keep an object around after creation is to access its text or items, you no longer need to do so:

tie @some_array, 'Prima::Tie::items', Prima::ListBox->new(@args);

As opposed to:

my $widget = Prima::ListBox->new(@args);
tie @some_array, 'Prima::Tie::items', $widget;

Prima::Tie::items requires the ::items property to be available on the widget. Also, it takes advantage of additional get_items, add_items, and the like methods if available.

Prima::Tie::items

The class is applicable to Prima::ListViewer, Prima::ListBox, Prima::Widget::Header, and their descendants, and in a limited fashion to Prima::OutlineViewer and its descendants Prima::StringOutline and Prima::Outline.

Prima::Tie::text

The class is applicable to any widget.

Prima::Tie::value

The class is applicable to Prima::GroupBox, Prima::Dialog::ColorDialog, Prima::SpinEdit, Prima::Gauge, Prima::Slider, Prima::CircularSlider, and Prima::ScrollBar.

COPYRIGHT

Copyright 2004 Teo Sankaro

This program is distributed under the BSD License. (Although a credit would be nice.)

AUTHORS

Teo Sankaro, <teo_sankaro@hotmail.com>. Dmitry Karasik, <dmitry@karasik.eu.org>.