Gtk2-Ex-ErrorTextDialog

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

po/Gtk2-Ex-ErrorTextDialog.pot
po/header.pot
po/README
README
SIGNATURE
t/ErrorTextDialog.t
t/FollowAppend.t
t/Handler.t
t/MyTestHelpers.pm
t/SaveDialog.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

SIGNATURE  view on Meta::CPAN

SHA1 af4838bbbb05b201facee1f00317d1df1590df57 lib/Gtk2/Ex/ErrorTextDialog/SaveDialog.pm
SHA1 e41df9fc284b84c01957806891b2a8f8c34fbcbf lib/Gtk2/Ex/TextView/FollowAppend.pm
SHA1 b2744e2b9dfed2dfa9538628e1cc0b31e3faf0b6 po/Gtk2-Ex-ErrorTextDialog.pot
SHA1 2f1b387c57b4661021ac7bb3a1e399156118b9d0 po/README
SHA1 a5423919f4129764379d16438c2af2d941fe8e3d po/header.pot
SHA1 fa7248c26546a2fb72847c29ed232c55319d17bb t/ErrorTextDialog.t
SHA1 5a570f3563c610373e5030cf738a9119757a038d t/FollowAppend.t
SHA1 c17fc6d0f46cbb0ee99b02a051d8841898422eaf t/Handler.t
SHA1 3855de075da37f5bc4e6a5534b2f00cc14872a98 t/MyTestHelpers.pm
SHA1 fa364d5cb1d22fd669e664d311dee66647486673 t/SaveDialog.t
SHA1 179a89c2e520d4e2f93c86e087e2b784c3279197 t/test-weaken.t
SHA1 f2ceb7bb4bf68bd24728b90918e63d251fd06183 xt/0-META-read.t
SHA1 c9e7a47e1f397eb5f46d7e4ef21754d9df76e36e xt/0-Test-ConsistentVersion.t
SHA1 d9e7f38a8dcfdb76c56951e4214be8eeda2e2289 xt/0-Test-DistManifest.t
SHA1 9496e4a2a2734c7093ab6961900dd7a55800976e xt/0-Test-Pod.t
SHA1 083242d959c1a9242c874982e4585872a95bec93 xt/0-Test-Synopsis.t
SHA1 ec454b1b524d2d0b35e5a7d8292ad13d82becab5 xt/0-Test-YAML-Meta.t
SHA1 3c929b147a70e1d0cfe63d69223a5ed407a295b2 xt/0-examples-xrefs.t
SHA1 7bc810750906ae91a13b16c7bd833dd6e1c9741b xt/0-file-is-part-of.t
SHA1 aeb6f41dfae96d04459448f6c3e3dee44691e722 xt/0-no-debug-left-on.t
SHA1 84a47c1d71fd58797a2754030998dfb673b62811 xtools/my-check-copyright-years.sh

devel/AddOn-FollowAppend.pm  view on Meta::CPAN

our $VERSION = 11

use constant DEBUG => 0;

sub new {
  my ($class, $textview) = @_;

  require Scalar::Util;

  my $self = bless { textview => $textview }, $class;
  Scalar::Util::weaken ($self->{'textview'});

  my $weak_self = $self;
  Scalar::Util::weaken ($weak_self);

  $self->{'textview_ids'} = Glib::Ex::SignalIds->new
    ($textview,
     $textview->signal_connect ('notify::buffer', \&_connect_textbuf,
                                \$weak_self));
  # initial textbuf connection
  _connect_textbuf ($textview, undef, \$weak_self);

  return $self;
}

devel/message-set-text.pl  view on Meta::CPAN


my $dialog = Gtk2::Ex::ErrorTextDialog->new;
Gtk2::Ex::ErrorTextDialog::_message_dialog_set_text($dialog,'abc');

our $xx;
BEGIN {
  $xx = sub { 'foo' };
}
print "xx $xx\n";
require Scalar::Util;
Scalar::Util::weaken ($xx);
print "xx $xx\n";






# print "xx ",$Gtk2::Ex::ErrorTextDialog::xx,"\n";
# print "yy ",$Gtk2::Ex::ErrorTextDialog::yy,"\n";
# Scalar::Util::weaken ($Gtk2::Ex::ErrorTextDialog::xx);
# Scalar::Util::weaken ($Gtk2::Ex::ErrorTextDialog::yy);
# print "xx ",$Gtk2::Ex::ErrorTextDialog::xx,"\n";
# print "yy ",$Gtk2::Ex::ErrorTextDialog::yy,"\n";



# my $orig = $Gtk2::Ex::ErrorTextDialog::_message_dialog_set_text;
# print "orig $orig\n";

# print "now  ",$Gtk2::Ex::ErrorTextDialog::_message_dialog_set_text,"\n";
# Scalar::Util::weaken ($orig);
# print "orig $orig\n";

#   print_container_tree($dialog);
# sub print_container_tree {
#   my ($widget, $depth) = @_;
#   $depth ||= 0;
#   print ' 'x$depth,"$widget\n";
#   if ($widget->isa('Gtk2::Container')) {
#     foreach my $child ($widget->get_children) {
#       print_container_tree ($child, $depth + 1);

lib/Gtk2/Ex/TextView/FollowAppend.pm  view on Meta::CPAN

  # that func creates a new TextBuffer in place of what
  # gtk_text_view_destroy() just destroyed and set to NULL.  If a textbuf is
  # re-created like that it leads to a fatal error in
  # gtk_text_view_finalize().
  #
  if (! $self->{'destroyed'} && $pspec->get_name eq 'buffer') {
    require Glib::Ex::SignalIds;
    require Scalar::Util;

    my $textbuf = $self->get_buffer;
    Scalar::Util::weaken (my $weak_self = $self);
    my $ref_weak_self = \$weak_self;

    $self->{'textbuf_ids'} = $textbuf && Glib::Ex::SignalIds->new
      ($textbuf,
       $textbuf->signal_connect_after ('insert-text',
                                       \&_do_textbuf_insert,
                                       $ref_weak_self),
       $textbuf->signal_connect_after ('insert-pixbuf',
                                       \&_do_textbuf_insert_pixbuf_or_anchor,
                                       $ref_weak_self),

t/ErrorTextDialog.t  view on Meta::CPAN

  ok (eval { $dialog->VERSION($want_version); 1 },
      "VERSION object check $want_version");
  my $check_version = $want_version + 1000;
  ok (! eval { $dialog->VERSION($check_version); 1 },
      "VERSION class check $check_version");

  $dialog->destroy;
}

#-----------------------------------------------------------------------------
# Scalar::Util::weaken

diag "Scalar::Util::weaken";
{
  my $dialog = Gtk2::Ex::ErrorTextDialog->new;
  require Scalar::Util;
  Scalar::Util::weaken ($dialog);
  $dialog->destroy;
  MyTestHelpers::main_iterations ();
  is ($dialog, undef, 'garbage collect after destroy');
}

#-----------------------------------------------------------------------------
# instance()

{
  my $instance = Gtk2::Ex::ErrorTextDialog->instance;

t/FollowAppend.t  view on Meta::CPAN

  ok (! eval { $textview->VERSION($check_version); 1 },
      "VERSION object check $check_version");
}

#-----------------------------------------------------------------------------
# destruction

{
  my $textview = Gtk2::Ex::TextView::FollowAppend->new;
  require Scalar::Util;
  Scalar::Util::weaken ($textview);
  is ($textview, undef, 'garbage collect after weaken');
}

#-----------------------------------------------------------------------------
# insertions

{
  my $textview = Gtk2::Ex::TextView::FollowAppend->new;
  my $textbuf = $textview->get_buffer;

  $textbuf->insert_at_cursor ("hello\n");

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) {

t/SaveDialog.t  view on Meta::CPAN

    $dialog->save;
    my $str = do { local $/ = undef; <$fh> }; # slurp
    is ($str, "hello\n", "saved to $filename");
  }

  $dialog->destroy;
  $errdialog->destroy;
}

#-----------------------------------------------------------------------------
# destroy and weaken

{
  my $dialog = do {
    local $SIG{'__WARN__'} = \&MyTestHelpers::warn_suppress_gtk_icon;
    Gtk2::Ex::ErrorTextDialog::SaveDialog->new;
  };
  require Scalar::Util;
  Scalar::Util::weaken ($dialog);
  $dialog->destroy;
  MyTestHelpers::main_iterations ();
  is ($dialog, undef, 'garbage collect after destroy');
}

exit 0;

t/test-weaken.t  view on Meta::CPAN

use warnings;
use Gtk2::Ex::ErrorTextDialog;
use Test::More;

use lib 't';
use MyTestHelpers;
BEGIN { MyTestHelpers::nowarnings() }

BEGIN {
  # Test::Weaken 3 for "contents"
  my $have_test_weaken = eval "use Test::Weaken 3;
                               use Test::Weaken::Gtk2;
                               1";
  if (! $have_test_weaken) {
    plan skip_all => "due to Test::Weaken 3 and/or Test::Weaken::Gtk2 not available -- $@";
  }
  diag ("Test::Weaken version ", Test::Weaken->VERSION);

  require Gtk2;
  Gtk2->disable_setlocale;  # leave LC_NUMERIC alone for version nums
  my $have_display = Gtk2->init_check;
  if (! $have_display) {
    plan skip_all => "due to no DISPLAY available";
  }

t/test-weaken.t  view on Meta::CPAN

# TextView::FollowAppend

diag "on TextView::FollowAppend->new()";
{
  require Gtk2::Ex::TextView::FollowAppend;
  my $leaks = Test::Weaken::leaks
    ({ constructor => sub { return Gtk2::Ex::TextView::FollowAppend->new },
       contents => \&Test::Weaken::Gtk2::contents_container,
     });
  is ($leaks, undef, 'Test::Weaken deep garbage collection');
  MyTestHelpers::test_weaken_show_leaks($leaks);
}
diag "on TextView::FollowAppend->new_with_buffer()";
{
  my $leaks = Test::Weaken::leaks
    ({ constructor => sub {
         my $textbuf = Gtk2::TextBuffer->new;
         my $textview
           = Gtk2::Ex::TextView::FollowAppend->new_with_buffer ($textbuf);
         return [ $textview, $textbuf ];
       },
       contents => \&Test::Weaken::Gtk2::contents_container,
     });
  is ($leaks, undef, 'Test::Weaken deep garbage collection');
  MyTestHelpers::test_weaken_show_leaks($leaks);
}


#-----------------------------------------------------------------------------
# ErrorTextDialog

diag "on new() ErrorTextDialog";
{
  my $leaks = Test::Weaken::leaks
    ({ constructor => sub {
         my $dialog = Gtk2::Ex::ErrorTextDialog->new;
         $dialog->realize;
         MyTestHelpers::main_iterations ();
         return $dialog;
       },
       destructor => \&Test::Weaken::Gtk2::destructor_destroy,
       contents => \&Test::Weaken::Gtk2::contents_container,
     });
  is ($leaks, undef, 'Test::Weaken deep garbage collection');
  MyTestHelpers::test_weaken_show_leaks($leaks);
}


diag "on instance() ErrorTextDialog";
{
  my $leaks = Test::Weaken::leaks
    ({ constructor => sub {
         my $dialog = Gtk2::Ex::ErrorTextDialog->instance;
         $dialog->realize;
         MyTestHelpers::main_iterations ();
         return $dialog;
       },
       destructor => \&Test::Weaken::Gtk2::destructor_destroy,
       contents => \&Test::Weaken::Gtk2::contents_container,
     });
  is ($leaks, undef, 'Test::Weaken deep garbage collection');
  MyTestHelpers::test_weaken_show_leaks($leaks);
}

# with save dialog
{
  my $leaks = Test::Weaken::leaks
    ({ constructor => sub {
         my $error_dialog = Gtk2::Ex::ErrorTextDialog->new;
         my $save_dialog = do {
           local $SIG{'__WARN__'} = \&MyTestHelpers::warn_suppress_gtk_icon;
           $error_dialog->_save_dialog

t/test-weaken.t  view on Meta::CPAN

         MyTestHelpers::main_iterations ();
         return [ $error_dialog, $save_dialog ];
       },
       # $save_dialog is destroy-with-parent, so destructor only on
       # $error_dialog
       destructor => \&Test::Weaken::Gtk2::destructor_destroy,
       contents => \&Test::Weaken::Gtk2::contents_container,
     });
  is ($leaks, undef,
      'Test::Weaken deep garbage collection -- with save dialog too');
  MyTestHelpers::test_weaken_show_leaks($leaks);
}

exit 0;



( run in 1.343 second using v1.01-cache-2.11-cpan-1f129e94a17 )