The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Gtk2::Ex::Spinner::CellRenderer -- integer cell renderer with Spinner for editing

SYNOPSIS

 use Gtk2::Ex::Spinner::CellRenderer;
 my $renderer = Gtk2::Ex::Spinner::CellRenderer->new;

 $treeviewcolumn->pack_start ($renderer, 0);
 $treeviewcolumn->add_attribute ($renderer, text => 0);
 $renderer->signal_connect (edited => sub { ... });

WIDGET HIERARCHY

Gtk2::Ex::Spinner::CellRenderer is a subclass of Gtk2::CellRendererText.

    Gtk2::Object
      Gtk2::CellRenderer
        Gtk2::CellRendererText
          Gtk2::Ex::Spinner::CellRenderer

DESCRIPTION

Gtk2::Ex::Spinner::CellRenderer is based on a great Gtk2::Ex::DateSpinner::CellRenderer, so in most cases documentation is the same. License is (of course) the same too :-).

Spinner::CellRenderer displays an integer as a text field. Editing the field presents both a Gtk2::Entry and a popup Gtk2::Ex::Spinner.

    +------------+
    |         99 |
    +------------+
    +------------------------------+
    | +-----+     +----+ +------+  |
    | |  99 |^    | Ok | |Cancel|  |
    | +-----+v    +----+ +------+  |
    +------------------------------+

The popup allows mouse clicks or arrow keys to increment or decrement the value. This is good if you often just want to bump a value up or down a bit.

Details

The value to display, and edit, is taken from the renderer text property and must an integer. A new edited value is passed to the edited signal emitted on the renderer in the usual way (see Gtk2::CellRenderer). Text renderer properties affect the display. xalign is copied to the Entry widget to have it left, right or centred while editing the same as displayed (like CellRendererText does).

Pressing Return in the fields accepts the values. Pressing Escape cancels the edit. Likewise the Ok and Cancel button widgets. The stock accelerators activate the buttons too, Alt-O and Alt-C in an English locale, though Return and Escape are much easier to remember.

Note you must set the editable property (per the base Gtk2::CellRendererText) to make the DateSpinner::CellRenderer editable, otherwise nothing happens when you click. That property can be controlled by the usual model column or data function mechanisms to have some rows editable and others not.

FUNCTIONS

$renderer = Gtk2::Ex::Spinner::CellRenderer->new (key=>value,...)

Create and return a new Spinner::CellRenderer object. Optional key/value pairs set initial properties as per Glib::Object->new. Eg.

    my $renderer = Gtk2::Ex::Spinner::CellRenderer->new
                     (editable => 1);

OTHER NOTES

As with the plain CellRendererText, Spinner::CellRenderer creates a new editable widget for every edit, including a new popup window every time. Both are destroyed when accepted or cancelled. That's a little wasteful, but it's usually fast enough for casual editing and it might save some memory in between.

The code for the popup and entry is in the Gtk2::Ex::Spinner::PopupForEntry and Gtk2::Ex::Spinner::EntryWithCancel components. They're not loaded until the first edit. They're only meant for internal use as yet.

SEE ALSO

Gtk2::Ex::DateSpinner, Gtk2::CellRendererText

Gtk2-Perl examples/cellrenderer_date.pl does a similar display/edit popping up a Gtk2::Calendar. See Gtk2::Ex::Datasheet::DBI for a version of it in use.

LICENSE

Gtk2-Ex-Spinner is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

Gtk2-Ex-Spinner is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Gtk2-Ex-Spinner. If not, see http://www.gnu.org/licenses/.