Gtk2-Ex-ErrorTextDialog
view release on metacpan or search on metacpan
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
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 0.596 second using v1.01-cache-2.11-cpan-65fba6d93b7 )