App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Gtk2/DeleteSymlistDialog.pm view on Meta::CPAN
}
sub SET_PROPERTY {
my ($self, $pspec, $newval) = @_;
my $pname = $pspec->get_name;
$self->{$pname} = $newval; # per default GET_PROPERTY
if ($pname eq 'symlist') {
my $symlist = $newval;
_update_text ($self);
$self->{'symlist_ids'} = $symlist && do {
my $ref_weak_self = App::Chart::Glib::Ex::MoreUtils::ref_weak ($self);
Glib::Ex::SignalIds->new
($symlist,
$symlist->signal_connect (row_inserted => \&_do_row_insdel,
$ref_weak_self),
$symlist->signal_connect (row_deleted => \&_do_row_insdel,
$ref_weak_self))
};
}
}
sub _do_row_insdel {
my $ref_weak_self = $_[-1];
my $self = $$ref_weak_self || return;
_update_text ($self);
}
sub _update_text {
my ($self) = @_;
my $symlist = $self->{'symlist'};
my $text;
if ($symlist) {
my $length = $symlist->length;
$text = "\n"
. __x('Delete symlist "{name}" ?', name => $symlist->name)
. "\n\n"
. __nx('It has {length} symbol in it.',
'It has {length} symbols in it.',
$length,
length => $length);
} else {
$text = '(No symlist)';
}
$self->set (text => $text);
}
# 'response' signal handler
sub _do_response {
my ($self, $response) = @_;
if ($response eq 'ok') {
if (my $symlist = $self->{'symlist'}) {
$self->set (symlist => undef);
$symlist->delete_symlist;
}
}
$self->destroy;
}
sub popup {
my ($class, $symlist, $parent) = @_;
# if "modal" is obeyed by the window manager then there won't be any other
# delete dialogs open, but it doesn't hurt to let popup() search
require App::Chart::Gtk2::Ex::ToplevelBits;
return App::Chart::Gtk2::Ex::ToplevelBits::popup
($class,
transient_for => $parent,
properties => { symlist => $symlist });
}
1;
__END__
( run in 1.725 second using v1.01-cache-2.11-cpan-364913b4093 )