App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Gtk2/WeblinkMenu.pm view on Meta::CPAN
$self->{$pname} = $newval; # per default GET_PROPERTY
# $pname eq 'symbol'
_update_model_contents ($self);
_update_parent_sensitive ($self);
}
sub _do_notify {
my ($self, $pspec) = @_;
### WeblinkMenu _do_notify: $pspec->get_name
if ($pspec->get_name eq 'attach_widget') {
my $parent = $self->get_attach_widget;
### attached: "$parent"
### model: $self->get('model')
$self->{'connp'} = Glib::Ex::ConnectProperties->dynamic
([$self->get('model'), 'model-rows#not-empty'],
[$parent, 'sensitive']);
}
# return shift->signal_chain_from_overridden(@_);
}
sub _update_model_contents {
my ($self) = @_;
### WeblinkMenu _update_model_contents()
my $model = $self->get('model');
my $symbol = $self->get('symbol');
my $i = 0;
if (defined $symbol) {
foreach my $weblink (App::Chart::Weblink->links_for_symbol ($symbol)) {
my $iter = $model->iter_nth_child(undef,$i++) || $model->append;
$model->set ($iter, 0 => $weblink);
}
}
while (my $iter = $model->iter_nth_child(undef,$i)) {
$model->remove ($iter);
}
}
sub _update_parent_sensitive {
my ($self) = @_;
return;
### WeblinkMenu _update_parent_sensitive: $self->get_attach_widget
my $parent_item = $self->get_attach_widget || return;
my $model = $self->get('model');
$parent_item->set_sensitive ($model->get_iter_first);
}
# 'item-create-or-update' class closure handler
sub _do_item_create_or_update {
my ($self, $item, $model, $path, $iter) = @_;
my $weblink = $model->get_value ($iter, 0);
if (! $item) {
$item = Gtk2::MenuItem->new_with_label ('');
$item->show;
}
$item->get_child->set_text_with_mnemonic ($weblink->name);
set_property_maybe
($item,
sensitive => $weblink->sensitive($self->get('symbol')),
# tooltip-markup new in 2.12
tooltip_markup => Glib::Markup::escape_text($weblink->{'desc'} || ''));
return $item;
}
# 'activate' class closure
sub _do_activate {
my ($self, $item, $model, $path, $iter) = @_;
my $weblink = $model->get_value ($iter, 0);
my $symbol = $self->get('symbol');
$weblink->open ($symbol);
}
1;
__END__
=for stopwords weblinks weblink WeblinkMenu
=head1 NAME
App::Chart::Gtk2::WeblinkMenu -- menu of weblinks for stock symbol
=head1 SYNOPSIS
use App::Chart::Gtk2::WeblinkMenu;
my $menu = App::Chart::Gtk2::WeblinkMenu->new;
=head1 DESCRIPTION
A App::Chart::Gtk2::WeblinkMenu widget displays a menu of the weblinks (see
L<App::Chart::Weblink>) for a given stock symbol. Clicking on one of the
menu items opens the corresponding weblink in a browser as per
C<< $weblink->open >>.
+---------------------------+
| FOOEX Company Information |
| Google Stock Page |
| Yahoo Stock Page |
+---------------------------+
Any parent menu item holding the WeblinkMenu is set sensitive or insensitive
according to whether there's weblinks for the given symbol, including
insensitive when the symbol is the empty string.
=head1 WIDGET HIERARCHY
C<App::Chart::Gtk2::WeblinkMenu> is a subclass of C<Gtk2::Menu>,
Gtk2::Widget
Gtk2::Container
Gtk2::MenuShell
Gtk2::Menu
App::Chart::Gtk2::WeblinkMenu
=head1 FUNCTIONS
=over 4
=item C<< App::Chart::Gtk2::WeblinkMenu->new (key=>value,...) >>
Create and return a new C<App::Chart::Gtk2::WeblinkMenu> object. Optional
key/value pairs can be given to set initial properties as per
( run in 2.743 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )