Gtk2-Ex-DateSpinner
view release on metacpan or search on metacpan
Makefile.PL
MANIFEST This list of files
MANIFEST.SKIP
README
SIGNATURE
t/CellRenderer.t
t/DateSpinner-load.t
t/DateSpinner.t
t/MyTestHelpers.pm
t/PopupForEntry.t
t/test-weaken.t
xt/0-examples-xrefs.t
xt/0-file-is-part-of.t
xt/0-META-read.t
xt/0-no-debug-left-on.t
xt/0-Test-ConsistentVersion.t
xt/0-Test-DistManifest.t
xt/0-Test-Pod.t
xt/0-Test-Synopsis.t
xt/0-Test-YAML-Meta.t
xtools/my-check-copyright-years.sh
SHA256 e7e4996d038b506896697c8f9f48b40afe963a9b8214d2fe89b7e7c5eb4ee213 examples/simple.pl
SHA256 28bec8fe29b497164cfeac7aa1707d8ed81874bb08ccda5b7a490b0869f4a3ca inc/my_pod2html
SHA256 a657d2fc952ecc1635cf4225addb68e908c56a62ee47e5d6c6a874bceb77a025 lib/Gtk2/Ex/DateSpinner.pm
SHA256 d28d866657b09bfc41c49cc02a55a2f928f71bcea1156942339c5de4545ec2b9 lib/Gtk2/Ex/DateSpinner/CellRenderer.pm
SHA256 d3b02a874c0cce21098745716dcd9bc68f56e56846fdfb6aa756238ffa137347 lib/Gtk2/Ex/DateSpinner/PopupForEntry.pm
SHA256 26e2af4dfa3c2c9ccbfc1676264a50b4db5e897eab176694aea68ccc345415fe t/CellRenderer.t
SHA256 587540c72b72417568e6974815994b270ee8f08d00c9d4bf71a06d0ecfa800cb t/DateSpinner-load.t
SHA256 6ea4e35c6fe20eb7eb858a1b4e57e67289cca96ef1d190a27657d24fc17f6b18 t/DateSpinner.t
SHA256 91cd2bba3e246abf05c342ed549ed6d902e8a77a43b6c9c4e092e4c918732ac0 t/MyTestHelpers.pm
SHA256 9501a0c9c42285c850d979ba367ff83cf2285dd2e888ff0208f8f77a1df02b18 t/PopupForEntry.t
SHA256 ef4b53433c845cc98bde37207b1e9c02c845394d127416aee5e615b814448daf t/test-weaken.t
SHA256 ef75312e02ddcfed7095de7eecebc6b7b863d56acd9b64142737ab7a5edb57e3 xt/0-META-read.t
SHA256 f03d4741c4e6dd385c7bafa06118082bad4809a64e28a094635324ef8ab4f3e5 xt/0-Test-ConsistentVersion.t
SHA256 be42622f3841d04240cb1284e6b30e1af81cb0fcb56d29e853c70af656653488 xt/0-Test-DistManifest.t
SHA256 48b441e0c335e93946d913897e342662387788833229c5ba5fac57f0ff3d567c xt/0-Test-Pod.t
SHA256 2e1e1d896a226aeb190cdcfbe83969f634c1be3e7344302e023915e3f7150732 xt/0-Test-Synopsis.t
SHA256 d33b48c1986680cd934565250bd9e3879674dfe6aad69b1717ed76354a29ff44 xt/0-Test-YAML-Meta.t
SHA256 1ae41bbd04e6aba264df79250d525e8b2b2e6b311930ef191c5e432936706cdc xt/0-examples-xrefs.t
SHA256 75a73148514fad2715873d1e02a6fa8e3b9cc43f7aff97aaffac9721c086a319 xt/0-file-is-part-of.t
SHA256 7d9eacc605d8cb575b2869790e4b90d71dea6a97547c725825a49e1db036dee4 xt/0-no-debug-left-on.t
SHA256 330b4711b382ca5c9961eb0270f5bb50d1dc5c43108dc5aa609e1ade77f228fe xtools/my-check-copyright-years.sh
devel/cell.pl view on Meta::CPAN
$toplevel->show_all;
Gtk2->main;
exit 0;
sub renderer_edited_set_value {
my ($renderer, $dest, $col_num) = @_;
(defined $col_num) || croak 'No column number supplied';
my @userdata = ($dest, $col_num);
require Scalar::Util;
Scalar::Util::weaken ($userdata[0]);
$renderer->signal_connect (edited => \&_renderer_edited_set_value_handler,
\@userdata);
}
sub _renderer_edited_set_value_handler {
my ($renderer, $pathstr, $newtext, $userdata) = @_;
my ($dest, $col_num) = @$userdata;
if ($dest->can('get_tree_view')) {
# on Gtk2::TreeViewColumn go to the Gtk2::TreeView
$dest = $dest->get_tree_view || croak 'No viewer from get_tree_view';
lib/Gtk2/Ex/DateSpinner/CellRenderer.pm view on Meta::CPAN
require Gtk2::Ex::DateSpinner::PopupForEntry;
Gtk2::Ex::DateSpinner::PopupForEntry->new (entry => $entry);
my $value = $self->get('text');
$entry->set_text (defined $value ? $value : '');
$entry->select_region (0, -1);
my $ref_weak_self = \$self;
require Scalar::Util;
Scalar::Util::weaken ($ref_weak_self);
$entry->signal_connect (editing_done => \&_do_entry_editing_done,
$ref_weak_self);
# {
# $entry->signal_connect (destroy => sub {
# print "editable: destroy\n";
# });
# $entry->signal_connect (focus_out_event => sub {
# print "editable: focus_out_event\n";
# return 0; # Gtk2::EVENT_PROPAGATE
lib/Gtk2/Ex/DateSpinner/PopupForEntry.pm view on Meta::CPAN
# $self->window->set_decorations (['border']);
# }
sub SET_PROPERTY {
my ($self, $pspec, $newval) = @_;
my $pname = $pspec->get_name;
$self->{$pname} = $newval;
if ($pname eq 'entry') {
my $entry = $newval;
Scalar::Util::weaken ($self->{'entry'});
$self->{'entry_ids'} = $entry && do {
require Scalar::Util;
my $ref_weak_self = \$self;
Scalar::Util::weaken ($ref_weak_self);
require Glib::Ex::SignalIds;
Glib::Ex::SignalIds->new
($entry,
$entry->signal_connect (size_allocate => \&_do_position,
$ref_weak_self),
$entry->signal_connect (changed => \&_do_entry_changed,
$ref_weak_self),
$entry->signal_connect (editing_done => \&_do_entry_editing_done,
$ref_weak_self),
t/CellRenderer.t view on Meta::CPAN
my $renderer = Gtk2::Ex::DateSpinner::CellRenderer->new;
ok ($renderer->VERSION >= $want_version, 'VERSION object method');
ok (eval { $renderer->VERSION($want_version); 1 },
"VERSION object check $want_version");
my $check_version = $want_version + 1000;
ok (! eval { $renderer->VERSION($check_version); 1 },
"VERSION object check $check_version");
require Scalar::Util;
Scalar::Util::weaken ($renderer);
is ($renderer, undef, 'should be garbage collected when weakened');
}
#-----------------------------------------------------------------------------
# start_editing return object
Gtk2->disable_setlocale; # leave LC_NUMERIC alone for version nums
my $have_display = Gtk2->init_check;
SKIP: {
$have_display or skip 'no DISPLAY available', 2;
t/CellRenderer.t view on Meta::CPAN
my $rect = Gtk2::Gdk::Rectangle->new (0, 0, 100, 100);
my $editable = $renderer->start_editing
($event, $toplevel, "0", $rect, $rect, ['selected']);
isa_ok ($editable, 'Gtk2::CellEditable',
'start_editing return');
$toplevel->add ($editable);
$toplevel->remove ($editable);
MyTestHelpers::main_iterations(); # for idle handler hack
require Scalar::Util;
Scalar::Util::weaken ($editable);
is ($editable, undef, 'editable should be garbage collected when weakened');
$toplevel->destroy;
}
exit 0;
t/DateSpinner.t view on Meta::CPAN
my $check_version = $want_version + 1000;
ok (! eval{Gtk2::Ex::DateSpinner->VERSION($check_version); 1},
"VERSION class check $check_version");
}
require Gtk2;
MyTestHelpers::glib_gtk_versions();
#------------------------------------------------------------------------------
# weakening
#
# no circular reference between the datespinner and the spinbuttons
# within it
Gtk2->disable_setlocale; # leave LC_NUMERIC alone for version nums
my $have_display = Gtk2->init_check;
SKIP: {
# seem to need a DISPLAY initialized in gtk 2.16 or get a slew of warnings
# creating a Gtk2::Ex::DateSpinner
t/DateSpinner.t view on Meta::CPAN
my $datespinner = Gtk2::Ex::DateSpinner->new;
ok ($datespinner->VERSION >= $want_version, 'VERSION object method');
ok (eval { $datespinner->VERSION($want_version); 1 },
"VERSION object check $want_version");
my $check_version = $want_version + 1000;
ok (! eval { $datespinner->VERSION($check_version); 1 },
"VERSION object check $check_version");
require Scalar::Util;
Scalar::Util::weaken ($datespinner);
is ($datespinner, undef, 'should be garbage collected when weakened');
}
exit 0;
t/MyTestHelpers.pm view on Meta::CPAN
? "$obj->{$_}" : '[undef]')}
keys %$obj));
}
if (eval { require Devel::FindRef }) {
MyTestHelpers::diag (Devel::FindRef::track($obj, 8));
} else {
MyTestHelpers::diag ("Devel::FindRef not available -- ", $@);
}
}
sub test_weaken_show_leaks {
my ($leaks) = @_;
$leaks || return;
my $unfreed = $leaks->unfreed_proberefs;
my $unfreed_count = scalar(@$unfreed);
MyTestHelpers::diag ("Test-Weaken leaks $unfreed_count objects");
MyTestHelpers::dump ($leaks);
my $proberef;
foreach $proberef (@$unfreed) {
( run in 2.482 seconds using v1.01-cache-2.11-cpan-65fba6d93b7 )