Gtk2-Ex-Clock

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

inc/my_pod2html
lib/Gtk2/Ex/Clock.pm
Makefile.PL
MANIFEST			This list of files
MANIFEST.SKIP
README
SIGNATURE
t/Clock-DateTime.t
t/Clock-display.t
t/Clock-load.t
t/Clock-weaken.t
t/Clock.t
t/MyTestHelpers.pm
xt/0-desktop-file-validate.t
xt/0-examples-xrefs.t
xt/0-exe-shebang.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

SIGNATURE  view on Meta::CPAN

SHA256 13db0744687ae7fe2e91f9e2336477b27a8129213be35bec1e6066d3ed57b6c2 examples/standalone.pl
SHA256 7650e43ab2eb69c22598c73879eca5abb44e93a9260b03a2c5665fde41e1c434 examples/tai.pl
SHA256 936c129e4cec0162a7d56659415bd3e81c2b942c25d55e8d9cfd7f85aa864463 examples/twoline.pl
SHA256 aaee799f94ec35dc0b22244498f683976ad5e08df97d368773b0c9b989a6c341 examples/world-aatw.pl
SHA256 fb446254200f009daff08fee94e9067fd78dfd9553dfdae118871570c3407226 examples/world.pl
SHA256 3cf06547516f2f258b55aa3613c48e4d8fb6911139db5b5c52c1069e773c8071 inc/my_pod2html
SHA256 a8a4c2f298e07844673ff3c49a17a432d4593b5a5752dcc6e8585b15a616efbf lib/Gtk2/Ex/Clock.pm
SHA256 0337170069bb60e98ec687da000c6e03b9afa6d9eb783973239a50383597bf0e t/Clock-DateTime.t
SHA256 718f39fc63b6a8b690f67f47312a23c10ec9ede8cba6bb0edb6ca9d1f9c162b1 t/Clock-display.t
SHA256 8e58865619493919f4d8ae0d1ed811a5706c6af772f08161a60ae8b340b70718 t/Clock-load.t
SHA256 6b1c42ddd7077b90a34a4f110ba761ea0010e22e568c916e4c8729aa5f3619fd t/Clock-weaken.t
SHA256 bb47f650f81207ff7b83be77375f5d0b41f1ee6e8a56f938c0d47b43c7ca7a6f t/Clock.t
SHA256 91cd2bba3e246abf05c342ed549ed6d902e8a77a43b6c9c4e092e4c918732ac0 t/MyTestHelpers.pm
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 b31126d6104e3dafd39672af9bd0182ff2fcc077adedbbd76cca60638dd6fe62 xt/0-desktop-file-validate.t
SHA256 1ae41bbd04e6aba264df79250d525e8b2b2e6b311930ef191c5e432936706cdc xt/0-examples-xrefs.t

devel/unmapped.pl  view on Meta::CPAN


sub new {
  my ($class, $widget) = @_;
  if ($widget->flags & 'no-window') {
    die;
  }
  my $events = Gtk2::Ex::WidgetEvents->new ($widget, 'visibility-notify-mask');
  my $self =  bless { widget => $widget, 
                 events => $events,
                    }, $class;
  Scalar::Util::weaken ($self->{'widget'});
  return $self;
}

package Gtk2::Ex::Visibility;
use strict;
use warnings;
use Scalar::Util;
use Glib::Ex::SignalIds;

sub new {
  my ($class, $widget) = @_;
  if ($widget->flags & 'no-window') {
    die;
  }

  my $self =  bless { widget => $widget,
                      visibility_state => '',
                      events => Gtk2::Ex::WidgetEvents->new ($widget, 'visibility-notify-mask'),
                      ids => $ids,
                    }, $class;
  Scalar::Util::weaken ($self->{'widget'});

  Scalar::Util::weaken (my $weak_self = $self);
  my $self->{'ids'} = Glib::Ex::SignalIds->new
    ($widget,
     $widget->signal_connect ('visibility_notify_event',
                              \&_do_visibility_notify_event,
                              \$weak_self));

  return $self;
}

sub _do_visibility_notify_event {

lib/Gtk2/Ex/Clock.pm  view on Meta::CPAN

  # 60*$minute+$second is a little less work.
  #
  my $milliseconds = POSIX::ceil
    (_TIMER_MARGIN_MILLISECONDS
     + (1000
        * ($self->{'decided_resolution'}
           - ((60*$minute + min(59,$second)) % $self->{'decided_resolution'})
           - ($tod - POSIX::floor($tod))))); # fraction part

  ### timer: "$tod is $minute,$second wait $milliseconds to give ".($tod + $milliseconds / 1000.0)
  Scalar::Util::weaken (my $weak_self = $self);
  $self->{'timer'} = Glib::Ex::SourceIds->new
    (Glib::Timeout->add ($milliseconds,
                         \&_timer_callback, \$weak_self,
                         Gtk2::GDK_PRIORITY_REDRAW() - 1));  # before redraws

}


#------------------------------------------------------------------------------

t/Clock.t  view on Meta::CPAN

  is ($clock->get('timezone-string'), 'DEF');
  is ($clock->get('timezone_string'), 'DEF');

  $clock->set('timezone', 'GHI');
  is ($clock->get('timezone'), 'GHI');
  is ($clock->get('timezone-string'), 'GHI');
  is ($clock->get('timezone_string'), 'GHI');
}

#-----------------------------------------------------------------------------
# weakening

# no circular reference between the clock and the timer callback it
# installs
{
  my $clock = Gtk2::Ex::Clock->new;
  require Scalar::Util;
  Scalar::Util::weaken ($clock);
  is ($clock, 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 0.378 second using v1.01-cache-2.11-cpan-1f129e94a17 )