view release on metacpan or search on metacpan
ChangeLog.pre-git view on Meta::CPAN
* t/GtkEntry.t
* xs/GtkEntry.xs: Wrap gtk_entry_set_overwrite_mode,
gtk_entry_get_overwrite_mode, and gtk_entry_get_text_length.
* t/GtkColorSelectionDialog.t
* xs/GtkColorSelectionDialog.xs: Wrap
gtk_color_selection_dialog_get_color_selection; deprecate
Gtk2::ColorSelectionDialog->colorsel.
* t/GtkCalendar.t
* xs/GtkCalendar.xs: Wrap gtk_calendar_get_detail_width_chars,
gtk_calendar_set_detail_width_chars,
gtk_calendar_get_detail_height_rows and
gtk_calendar_set_detail_height_rows.
2008-08-16 Torsten Schoenfeld <kaffeetisch@gmx.de>
* xs/GdkPixmap.xs
* xs/GtkGC.xs
* xs/PangoCairo.xs: Add hierarchy sections to the unregistered
custom subclasses Gtk2::Gdk::Bitmap, Gtk2::GC, and
Gtk2::Pango::Cairo::Context.
* t/GdkWindow.t
ChangeLog.pre-git view on Meta::CPAN
undef for the focus child argument to
gtk_container_set_focus_child.
* t/GtkClipboard.t
* xs/GtkClipboard.xs: Wrap gtk_clipboard_request_uris,
gtk_clipboard_wait_for_uris, and
gtk_clipboard_wait_is_uris_available. Also fix the rich text
tests.
* t/GtkCalendar.t
* xs/GtkCalendar.xs: Wrap gtk_calendar_set_detail_func.
2008-08-08 Torsten Schoenfeld <kaffeetisch@gmx.de>
* xs/GdkCairo.xs
* xs/GdkProperty.xs
* xs/GtkBuilder.xs
* xs/GtkSelection.xs: Fix some POD glitches.
2008-08-07 Torsten Schoenfeld <kaffeetisch@gmx.de>
ChangeLog.pre-git view on Meta::CPAN
Gtk2/xs/GtkStock.xs, Gtk2/xs/GtkTextIter.xs,
Gtk2/xs/GtkToolButton.xs, Gtk2/xs/GtkTreeModel.xs,
Gtk2/xs/GtkTreeView.xs, Gtk2/xs/GtkTreeViewColumn.xs,
Gtk2/xs/GtkWindow.xs: Make all version checks refer to stable
releases.
2005/09/06 muppetman
* examples/cellrenderer_date.pl, AUTHORS: Modified patch from Daniel
Kasak (dkasak at nusconsulting dot com dot au) ensures that the
calendar popup never appears offscreen.
* examples/cellrenderer_date.pl: Further modify the example to use
size_request() instead of showing the window offscreen to get the
allocation and then moving it onscreen.
2005/09/05 kaffeetisch
* MANIFEST, META.yml: Remove META.yml.
* doctypes: Add GdkPixbuf_noinc.
ChangeLog.pre-git view on Meta::CPAN
* t/GtkMenu.t: Prevent random failures by making sure we only
execute the positioning callback once.
2004/03/14 04:00 (-0500) muppetman
* examples/adding_stock_icons.pl, examples/customrenderer.pl,
examples/file_chooser.pl, examples/histogramplot.pl,
examples/insert-text-test.pl, examples/testdnd.pl:
improve commentary, so these make better examples.
* examples/calendar.pl: remove cruft; use dialog's response rather
than old-school manip of buttons.
* examples/combo_box.pl: do something more interesting with the
do-it-yourself cell renderer example.
2004/03/12 23:11 (-0500) muppetman
* Gtk2.exports: fix missing symbols in the exports so we can link
on win32
ChangeLog.pre-git view on Meta::CPAN
Remove a g_printerr.
2004/01/25 04:10 (-0500) muppetman
* Gtk2.pm, README, NEWS: unstable release 1.031
* Makefile.PL, README: update Glib requirement to 1.031.
2004/01/25 01:50 (-0500) muppetman
* examples/buttonbox.pl, examples/calendar.pl, examples/color_list.pl,
examples/histogramplot.pl, examples/layout.pl, examples/rulers.pl,
examples/scribble.pl, examples/socket.pl, examples/thread_usage.pl,
gtk-demo/appwindow.pl, gtk-demo/button_box.pl,
gtk-demo/changedisplay.pl, gtk-demo/colorsel.pl, gtk-demo/dialog.pl,
gtk-demo/drawingarea.pl, gtk-demo/editable_cells.pl,
gtk-demo/entry_completion.pl, gtk-demo/hypertext.pl,
gtk-demo/images.pl, gtk-demo/item_factory.pl, gtk-demo/list_store.pl,
gtk-demo/main.pl, gtk-demo/menus.pl, gtk-demo/panes.pl,
gtk-demo/pixbufs.pl, gtk-demo/sizegroup.pl, gtk-demo/stock_browser.pl,
gtk-demo/textview.pl, gtk-demo/tree_store.pl, gtk-demo/ui_manager.pl:
ChangeLog.pre-git view on Meta::CPAN
A t/GtkVBox.t
A t/GtkVButtonBox.t
A t/GtkVPaned.t
A t/GtkVRuler.t
A t/GtkVScale.t
A t/GtkVScrollbar.t
A t/GtkVSeparator.t
A t/GtkViewport.t
A t/GtkWidget.t
R t/accel-group-map.t
R t/calendar.t
R t/file-selection.t
R t/paned.t
R t/text-iter-searches.t
R t/trivial-widgets.t: Rename, split, extend and/or create tests.
The new policy and long running goal is to have a .t for every
.xs.
2004/01/10 05:17 (+0100) kaffeetisch
ChangeLog.pre-git view on Meta::CPAN
them.
2003/12/05 07:49 (-0500) rwmcfa1
* t/accel-group-map.t: initial import of accel group and accel map test
accel has some issues, way more to come, and resolution of those as
well.
2003/12/04 23:23 (-0500) rwmcfa1
* t/calendar.t: initial import
2003/12/04 21:35 (-0500) muppetman
* Gtk2.pm: bump version to 1.030 for next unstable devel series.
sync authors section with the AUTHORS file.
* AUTHORS: remove circular file reference and point readers to the
LICENSE file rather than including more boilerplate than content.
2003/12/04 13:10 (-0500) rwmcfa1
ChangeLog.pre-git view on Meta::CPAN
2003/05/03 11:17 joered
* Gtk2/: Gtk2.pm, Makefile.PL, pm/Helper.pm: removed deprecated
timeout/idle/input methods from Gtk2.pm; added Gtk2/pm/Helper.pm
with a convenience implementation of add_watch/remove_watch
2003/05/02 18:11 muppetman
* Gtk2/gtk-demo/apple-red.png, Gtk2/gtk-demo/background.jpg,
Gtk2/gtk-demo/gnome-applets.png, Gtk2/gtk-demo/gnome-calendar.png,
Gtk2/gtk-demo/gnome-foot.png, Gtk2/gtk-demo/gnome-gimp.png,
Gtk2/gtk-demo/gnome-gmush.png, Gtk2/gtk-demo/gnome-gsame.png,
Gtk2/gtk-demo/gnu-keys.png: images needed by Gtk2/gtk-demo/pixbufs.pl,
directly from the gtk+-2.2.1 source distribution.
* G/GType.xs, Gtk2/examples/histogramplot.pl: a bunch of code,
borrowed from pygtk, to add signals to a derived class.
altered the histogramplot example to use a new signal.
* Gtk2/xs/GtkTooltips.xs: allow tip_private to default to NULL
constants-2.18
copyright.pod
doctypes
examples/accel_groups.pl
examples/adding_stock_icons.pl
examples/assistant.pl
examples/attributes.pl
examples/buttonbox.pl
examples/cairo-clock.pl
examples/cairo-rendering.pl
examples/calendar.pl
examples/cellrenderer_date.pl
examples/cellrenderer_popup.pl
examples/cellrenderer_progress.pl
examples/cellrenderer_spinbutton.pl
examples/color_list.pl
examples/color_snooper.pl
examples/combo_box.pl
examples/customlist.pl
examples/customrenderer.pl
examples/customtree.pl
gtk-demo/changedisplay.pl
gtk-demo/colorsel.pl
gtk-demo/combobox.pl
gtk-demo/demo.ui
gtk-demo/dialog.pl
gtk-demo/drawingarea.pl
gtk-demo/editable_cells.pl
gtk-demo/entry_completion.pl
gtk-demo/floppybuddy.gif
gtk-demo/gnome-applets.png
gtk-demo/gnome-calendar.png
gtk-demo/gnome-foot.png
gtk-demo/gnome-gimp.png
gtk-demo/gnome-gmush.png
gtk-demo/gnome-gsame.png
gtk-demo/gnu-keys.png
gtk-demo/gtk-logo-rgb.gif
gtk-demo/hypertext.pl
gtk-demo/images.pl
gtk-demo/item_factory.pl
gtk-demo/list_store.pl
* Fix a memory leak in Gtk2::Pango::LayoutLine::get_x_ranges.
* Make Gtk2::Widget::hide_on_delete actually usable as a delete-event signal
handler.
* Fix a stack handling issue in Gtk2::TreeModel::get.
Overview of changes in Gtk2 1.191
=================================
* Wrap a lot of new API from gtk+ 2.14, among which:
- gtk_builder_add_objects_from_file and gtk_builder_add_objects_from_string
- gtk_calendar_set_detail_func
- gtk_clipboard_request_uris, gtk_clipboard_wait_for_uris, and
gtk_clipboard_wait_is_uris_available
- gtk_icon_info_new_for_pixbuf
- gtk_page_setup_load_file and gtk_page_setup_load_key_file
- gtk_print_settings_load_file and gtk_print_settings_load_key_file
- gtk_widget_get_snapshot
- gtk_show_uri
- gdk_screen_get_monitor_height_mm, gdk_screen_get_monitor_width_mm, and
gdk_screen_get_monitor_plug_name
- gdk_window_redirect_to_drawable and gdk_window_remove_redirection
examples/calendar.pl view on Meta::CPAN
# FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for
# more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this library; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
# this was originally gtk-2.2.1/examples/calendar/calendar.c
# ported to gtk2-perl (and perl-ized) by rm
use strict;
use Gtk2;
use Glib ':constants';
use constant DEF_PAD => 10;
use constant DEF_PAD_SMALL => 5;
use constant TM_YEAR_BASE => 1900;
sub calendar_select_font
{
my $calendar = shift;
my $fsd = Gtk2::FontSelectionDialog->new ('Font Selection Dialog');
$fsd->set_position('mouse');
$fsd->set_font_name ($calendar->get_style->font_desc->to_string);
$fsd->signal_connect ('response' => sub {
my (undef, $response) = @_;
if ($response eq 'ok') {
my $font_name = $fsd->get_font_name;
return unless $font_name;
$calendar->modify_font
(Gtk2::Pango::FontDescription->from_string
($font_name));
}
$fsd->destroy;
});
$fsd->show;
}
sub calendar_set_signal_strings
{
my $sig_ref = shift;
my $new_sig = shift;
$sig_ref->{prev2}->set_text($sig_ref->{prev}->get_text);
$sig_ref->{prev}->set_text($sig_ref->{curr}->get_text);
$sig_ref->{curr}->set_text($new_sig);
}
sub create_calendar
{
my $window;
my $vbox;
my $vbox2;
my $vbox3;
my $hbox;
my $hbbox;
my $calendar;
my @toggles;
my $button;
my $frame;
my $separator;
my $label;
my $bbox;
my $i;
my %signals = ();
examples/calendar.pl view on Meta::CPAN
$vbox->pack_start($hbox, TRUE, TRUE, DEF_PAD);
$hbbox = Gtk2::HButtonBox->new;
$hbox->pack_start($hbbox, FALSE, FALSE, DEF_PAD);
$hbbox->set_layout('spread');
$hbbox->set_spacing(5);
# Calendar widget
$frame = Gtk2::Frame->new('Calendar');
$hbbox->pack_start($frame, FALSE, TRUE, DEF_PAD);
$calendar = Gtk2::Calendar->new;
$calendar->mark_day(19);
$frame->add($calendar);
$calendar->display_options([]);
$calendar->signal_connect( 'month_changed' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1], 'month changed: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$calendar->signal_connect( 'day_selected' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1], 'day selected: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$calendar->signal_connect( 'day_selected_double_click' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1],
'day selected double click: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$calendar->signal_connect( 'prev_month' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1], 'prev month: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$calendar->signal_connect( 'next_month' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1], 'next month: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$calendar->signal_connect( 'prev_year' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1], 'prev year: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$calendar->signal_connect( 'next_year' => sub {
my ($year, $month, $day) = $calendar->get_date;
calendar_set_signal_strings($_[1], 'next year: '.
sprintf("%02d/%d/%d", $month+1, $day, $year) );
}, \%signals );
$separator = Gtk2::VSeparator->new;
$hbox->pack_start($separator, FALSE, TRUE, 0);
$vbox2 = Gtk2::VBox->new(FALSE, DEF_PAD);
$hbox->pack_start($vbox2, FALSE, FALSE, DEF_PAD);
# Build the Right frame with the flags in
examples/calendar.pl view on Meta::CPAN
$toggles[$i]->signal_connect( 'toggled' => sub {
my $j;
my $opts = [];
for($j = 0; $j < scalar(@flags); $j++ )
{
if( $toggles[$j]->get_active )
{
push @$opts, $flags[$j];
}
}
$calendar->display_options($opts);
});
$vbox3->pack_start($toggles[$i], TRUE, TRUE, 0);
}
foreach (@flags)
{
$_ =~ s/\s/-/g;
$_ = lc($_);
}
# Build the right font-button
$button = Gtk2::Button->new('Font...');
$button->signal_connect( 'clicked' => sub {
calendar_select_font($_[1]);
}, $calendar );
$vbox2->pack_start($button, FALSE, FALSE, 0);
#
# Build the Signal-event part.
#
$frame = Gtk2::Frame->new('Signal events');
$vbox->pack_start($frame, TRUE, TRUE, DEF_PAD);
$vbox2 = Gtk2::VBox->new(TRUE, DEF_PAD_SMALL);
examples/calendar.pl view on Meta::CPAN
$bbox->add($button);
$button->set_flags('can-default');
$button->grab_default;
$window->show_all;
}
Gtk2->init;
create_calendar;
Gtk2->main;
exit 0;
examples/cellrenderer_date.pl view on Meta::CPAN
my ($cell, $year, $month, $day) = @_;
return ($year, sprintf("%02d", $month), sprintf("%02d", $day));
}
sub INIT_INSTANCE {
my ($cell) = @_;
my $popup = Gtk2::Window -> new ('popup');
my $vbox = Gtk2::VBox -> new(0, 0);
my $calendar = Gtk2::Calendar -> new();
my $hbox = Gtk2::HBox -> new(0, 0);
my $today = Gtk2::Button -> new('Today');
my $none = Gtk2::Button -> new('None');
$cell -> {_arrow} = Gtk2::Arrow -> new("down", "none");
# We can't just provide the callbacks now because they might need access to
# cell-specific variables. And we can't just connect the signals in
examples/cellrenderer_date.pl view on Meta::CPAN
$today -> signal_connect(clicked => sub {
$cell -> { _today_clicked_callback } -> (@_)
if (exists($cell -> { _today_clicked_callback }));
});
$none -> signal_connect(clicked => sub {
$cell -> { _none_clicked_callback } -> (@_)
if (exists($cell -> { _none_clicked_callback }));
});
$calendar -> signal_connect(day_selected_double_click => sub {
$cell -> { _day_selected_double_click_callback } -> (@_)
if (exists($cell -> { _day_selected_double_click_callback }));
});
$calendar -> signal_connect(month_changed => sub {
$cell -> { _month_changed } -> (@_)
if (exists($cell -> { _month_changed }));
});
$hbox -> pack_start($today, 1, 1, 0);
$hbox -> pack_start($none, 1, 1, 0);
$vbox -> pack_start($calendar, 1, 1, 0);
$vbox -> pack_start($hbox, 0, 0, 0);
# Find out if the click happended outside of our window. If so, hide it.
# Largely copied from Planner (the former MrProject).
# Implement via Gtk2::get_event_widget?
$popup -> signal_connect(button_press_event => sub {
my ($popup, $event) = @_;
if ($event -> button() == 1) {
examples/cellrenderer_date.pl view on Meta::CPAN
return 1;
}
}
return 0;
});
$popup -> add($vbox);
$cell -> { _popup } = $popup;
$cell -> { _calendar } = $calendar;
}
sub START_EDITING {
my ($cell, $event, $view, $path, $background_area, $cell_area, $flags) = @_;
my $popup = $cell -> { _popup };
my $calendar = $cell -> { _calendar };
# Specify the callbacks. Will be called by the signal handlers set up in
# INIT_INSTANCE.
$cell -> { _today_clicked_callback } = sub {
my ($button) = @_;
my ($year, $month, $day) = $cell -> get_today();
$cell -> signal_emit(edited => $path, join("-", $cell -> add_padding($year, $month, $day)));
$cell -> hide_popup();
};
$cell -> { _none_clicked_callback } = sub {
my ($button) = @_;
$cell -> signal_emit(edited => $path, "");
$cell -> hide_popup();
};
$cell -> { _day_selected_double_click_callback } = sub {
my ($calendar) = @_;
my ($year, $month, $day) = $calendar -> get_date();
$cell -> signal_emit(edited => $path, join("-", $cell -> add_padding($year, ++$month, $day)));
$cell -> hide_popup();
};
$cell -> { _month_changed } = sub {
my ($calendar) = @_;
my ($selected_year, $selected_month) = $calendar -> get_date();
my ($current_year, $current_month, $current_day) = $cell -> get_today();
if ($selected_year == $current_year &&
++$selected_month == $current_month) {
$calendar -> mark_day($current_day);
}
else {
$calendar -> unmark_day($current_day);
}
};
my ($year, $month, $day) = $cell -> get_date();
$calendar -> select_month($month - 1, $year);
$calendar -> select_day($day);
# Figure out where to put the popup - i.e., don't put it offscreen,
# as it's not movable (by the user).
$popup -> get_child -> show_all(); # all but $popup itself
$popup -> realize;
my ($requisition) = $popup->size_request;
my ($popup_width, $popup_height) = ($requisition->width, $requisition->height);
my $screen_height = $popup->get_screen->get_height;
gtk-demo/pixbufs.pl view on Meta::CPAN
chdir '../gtk-demo';
use constant FRAME_DELAY => 50;
use constant BACKGROUND_NAME => "background.jpg";
my @image_names = (
"apple-red.png",
"gnome-applets.png",
"gnome-calendar.png",
"gnome-foot.png",
"gnome-gmush.png",
"gnome-gimp.png",
"gnome-gsame.png",
"gnu-keys.png"
);
# demo window
my $window = undef;
xs/GtkCalendar.xs view on Meta::CPAN
* Licensed under the LGPL, see LICENSE file for more information.
*
* $Id$
*/
#include "gtk2perl.h"
#if GTK_CHECK_VERSION (2, 14, 0)
static GPerlCallback *
gtk2perl_calendar_detail_func_create (SV * func, SV * data)
{
GType param_types [4];
param_types[0] = GTK_TYPE_CALENDAR;
param_types[1] = G_TYPE_UINT;
param_types[2] = G_TYPE_UINT;
param_types[3] = G_TYPE_UINT;
return gperl_callback_new (func, data, G_N_ELEMENTS (param_types),
param_types, G_TYPE_STRING);
}
static gchar *
gtk2perl_calendar_detail_func (GtkCalendar *calendar,
guint year,
guint month,
guint day,
gpointer user_data)
{
GPerlCallback * callback = (GPerlCallback*)user_data;
GValue value = {0,};
gchar * retval;
g_value_init (&value, callback->return_type);
gperl_callback_invoke (callback, &value, calendar, year, month, day);
/* caller owns return value */
retval = g_value_dup_string (&value);
g_value_unset (&value);
return retval;
}
#endif /* 2.14 */
MODULE = Gtk2::Calendar PACKAGE = Gtk2::Calendar PREFIX = gtk_calendar_
=for apidoc marked_date
=for signature $widget->marked_date ($value)
=for signature value = $widget->marked_date
=cut
=for apidoc year
=for signature $widget->year ($value)
=for signature value = $widget->year
=cut
xs/GtkCalendar.xs view on Meta::CPAN
case 3:
PUSHs (sv_2mortal (newSViv (cal->month)));
break;
case 4:
PUSHs (sv_2mortal (newSViv (cal->selected_day)));
break;
default:
g_assert_not_reached ();
}
## GtkWidget* gtk_calendar_new (void)
GtkWidget*
gtk_calendar_new (class)
C_ARGS:
/*void*/
## gboolean gtk_calendar_select_month (GtkCalendar *calendar, guint month, guint year)
gboolean
gtk_calendar_select_month (calendar, month, year)
GtkCalendar * calendar
guint month
guint year
## void gtk_calendar_select_day (GtkCalendar *calendar, guint day)
void
gtk_calendar_select_day (calendar, day)
GtkCalendar * calendar
guint day
## gboolean gtk_calendar_mark_day (GtkCalendar *calendar, guint day)
gboolean
gtk_calendar_mark_day (calendar, day)
GtkCalendar * calendar
guint day
## gboolean gtk_calendar_unmark_day (GtkCalendar *calendar, guint day)
gboolean
gtk_calendar_unmark_day (calendar, day)
GtkCalendar * calendar
guint day
## void gtk_calendar_clear_marks (GtkCalendar *calendar)
void
gtk_calendar_clear_marks (calendar)
GtkCalendar * calendar
## void gtk_calendar_set_display_options (GtkCalendar *calendar, GtkCalendarDisplayOptions flags)
## void gtk_calendar_display_options (GtkCalendar *calendar, GtkCalendarDisplayOptions flags)
=for apidoc display_options
The old name for C<set_display_options>.
=cut
void
gtk_calendar_set_display_options (calendar, flags)
GtkCalendar * calendar
GtkCalendarDisplayOptions flags
ALIAS:
display_options = 1
CODE:
#if GTK_CHECK_VERSION(2,4,0)
gtk_calendar_set_display_options (calendar, flags);
#else
gtk_calendar_display_options (calendar, flags);
#endif
CLEANUP:
PERL_UNUSED_VAR (ix);
GtkCalendarDisplayOptions
gtk_calendar_get_display_options (GtkCalendar * calendar)
CODE:
#if GTK_CHECK_VERSION(2,4,0)
RETVAL = gtk_calendar_get_display_options (calendar);
#else
RETVAL = calendar->display_flags;
#endif
OUTPUT:
RETVAL
## void gtk_calendar_get_date (GtkCalendar *calendar, guint *year, guint *month, guint *day)
void
gtk_calendar_get_date (GtkCalendar * calendar, OUTLIST guint year, OUTLIST guint month, OUTLIST guint day)
## void gtk_calendar_freeze (GtkCalendar *calendar)
void
gtk_calendar_freeze (calendar)
GtkCalendar * calendar
## void gtk_calendar_thaw (GtkCalendar *calendar)
void
gtk_calendar_thaw (calendar)
GtkCalendar * calendar
#if GTK_CHECK_VERSION (2, 14, 0)
## void gtk_calendar_set_detail_func (GtkCalendar *calendar, GtkCalendarDetailFunc func, gpointer data, GDestroyNotify destroy)
void gtk_calendar_set_detail_func (GtkCalendar *calendar, SV *func, SV *data=NULL)
PREINIT:
GPerlCallback * callback;
CODE:
callback = gtk2perl_calendar_detail_func_create (func, data);
gtk_calendar_set_detail_func (calendar,
gtk2perl_calendar_detail_func,
callback,
(GDestroyNotify) gperl_callback_destroy);
gint gtk_calendar_get_detail_width_chars (GtkCalendar *calendar);
void gtk_calendar_set_detail_width_chars (GtkCalendar *calendar, gint chars);
gint gtk_calendar_get_detail_height_rows (GtkCalendar *calendar);
void gtk_calendar_set_detail_height_rows (GtkCalendar *calendar, gint rows);
#endif /* 2.14 */