Gtk2::Ex::DateSpinner::CellRenderer -- date cell renderer with DateSpinner for editing
use Gtk2::Ex::DateSpinner::CellRenderer; my $renderer = Gtk2::Ex::DateSpinner::CellRenderer->new; $treeviewcolumn->pack_start ($renderer, 0); $treeviewcolumn->add_attribute ($renderer, text => 0); $renderer->signal_connect (edited => sub { some_code() });
Gtk2::Ex::DateSpinner::CellRenderer is a subclass of Gtk2::CellRendererText.
Gtk2::Ex::DateSpinner::CellRenderer
Gtk2::CellRendererText
Gtk2::Object Gtk2::CellRenderer Gtk2::CellRendererText Gtk2::Ex::DateSpinner::CellRenderer
DateSpinner::CellRenderer displays an ISO format YYYY-MM-DD date as a text field. Editing the field presents both a Gtk2::Entry widget and a popup Gtk2::Ex::DateSpinner.
DateSpinner::CellRenderer
Gtk2::Entry
Gtk2::Ex::DateSpinner
+------------+ | 2008-06-14 | +------------+ +-----------------------------------------------------+ | +------+ +----+ +----+ +----+ +------+ | | | 2008 |^ | 6 |^ | 14 |^ Sat | Ok | |Cancel| | | +------+v +----+v +----+v +----+ +------+ | +-----------------------------------------------------+
The popup allows mouse clicks or arrow keys to increment or decrement the date components. This is good if you often just want to bump a date up or down. And when you're displaying YYYY-MM-DD it makes sense to present it like that for editing. Of course there's a huge range of other ways you could display or edit a date.
See examples/cellrenderer.pl for a complete program with a TreeView and a DateSpinner::CellRenderer.
TreeView
The date to display, and edit, is taken from the renderer text property and must be in YYYY-MM-DD format. A new edited value is passed to the edited signal emitted from the renderer in the usual way (see Gtk2::CellRenderer). Text renderer properties affect the display and xalign in the renderer is copied to the Entry widget so it's left, right or centred while editing the same as displayed (like CellRendererText does).
text
edited
xalign
CellRendererText
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. These are Alt-O and Alt-C in an English locale, though Return and Escape are easier to remember.
Note you must set the editable property (per the base class 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 make some rows editable and others not.
editable
$renderer = Gtk2::Ex::DateSpinner::CellRenderer->new (key=>value,...)
Create and return a new DateSpinner::CellRenderer object. Optional key/value pairs set initial properties as per Glib::Object->new. Eg.
Glib::Object->new
my $renderer = Gtk2::Ex::DateSpinner::CellRenderer->new (editable => 1);
DateSpinner::CellRenderer creates new a new entry widget and a new popup window for each edit and both are destroyed on accept or cancel. This is the same as the base CellRendererText does. It's a little wasteful, but is normally fast enough for casual editing and it might save some memory in between.
The code for the popup is in the Gtk2::Ex::DateSpinner::PopupForEntry component. It's not loaded until the first edit and is only meant for internal use as yet.
Gtk2::Ex::DateSpinner::PopupForEntry
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.
Gtk2::Calendar
http://user42.tuxfamily.org/gtk2-ex-datespinner/index.html
Gtk2-Ex-DateSpinner is Copyright 2008, 2009, 2010, 2013 Kevin Ryde
Gtk2-Ex-DateSpinner 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-DateSpinner 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-DateSpinner. If not, see http://www.gnu.org/licenses/.
To install Gtk2::Ex::DateSpinner, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Gtk2::Ex::DateSpinner
CPAN shell
perl -MCPAN -e shell install Gtk2::Ex::DateSpinner
For more information on module installation, please visit the detailed CPAN module installation guide.