App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Gtk2/RawDialog.pm view on Meta::CPAN
sub _do_weblink_menu_open {
my ($item) = @_;
require App::Chart::Gtk2::GUI;
App::Chart::Gtk2::GUI::browser_open ($item->{'url'});
}
sub _do_weblink_menu_copy {
my ($item) = @_;
my $clipboard = Gtk2::Clipboard->get_for_display
($item->get_display, Gtk2::Gdk::Atom->new('PRIMARY'));
$clipboard->set_text ($item->{'url'});
}
sub set_symbol {
my ($self, $symbol) = @_;
if (! defined $symbol) { $symbol = ''; }
if ($symbol eq $self->{'symbol'}) { return; }
if ($symbol) {
$self->set_title (__x('Chart: RawDialog: {symbol}',
symbol => $symbol));
} else {
$self->set_title (__('Chart: RawDialog'));
}
$self->{'symbol'} = $symbol; # per default GET_PROPERTY
$self->{'entry'}->set_text ($symbol);
$self->refresh;
$self->notify ('symbol');
}
sub SET_PROPERTY {
my ($self, $pspec, $newval) = @_;
my $pname = $pspec->get_name;
if ($pspec->get_name eq 'symbol') {
$self->set_symbol ($newval);
} else {
$self->{$pname} = $newval; # per default GET_PROPERTY
}
}
# 'notify::page' signal on the Gtk2::Notebook
sub _do_notebook_page {
my ($notebook) = @_;
my $self = $notebook->get_toplevel;
my $pagenum = $notebook->get_current_page;
my $pagewidget = $notebook->get_nth_page ($pagenum);
$self->set_response_sensitive (RESPONSE_APPLY, $pagewidget->{'datasheet'});
$self->set_response_sensitive (RESPONSE_UNDO, $pagewidget->{'datasheet'});
$self->set_response_sensitive (RESPONSE_DELETE, $pagewidget->{'datasheet'});
$self->set_response_sensitive (RESPONSE_INSERT, $pagewidget->{'insert_defaults'});
_refresh_page ($self, $pagewidget);
}
sub _refresh_page {
my ($self, $pagewidget) = @_;
### _refresh_page(): $pagewidget->{'dirty'}
### for: $self->{'symbol'}
if ($pagewidget->{'dirty'}) {
Gtk2::Ex::WidgetCursor->busy;
$pagewidget->{'dirty'} = 0;
my $symbol = $self->{'symbol'};
if (my $datasheet = $pagewidget->{'datasheet'}) {
### datasheet query
$datasheet->query ({bind_values => [$symbol]}, 0);
} elsif (my $seriestreeview = $pagewidget->{'seriestreeview'}) {
my $series;
if ($symbol) {
require App::Chart::Series::Database;
$series = App::Chart::Series::Database->new ($symbol);
}
$seriestreeview->set (series => $series);
} elsif (my $rawlatest = $pagewidget->{'rawlatest'}) {
$rawlatest->set (symbol => $symbol);
} elsif (my $rawinfo = $pagewidget->{'rawinfo'}) {
$rawinfo->set (symbol => $symbol);
} elsif (my $store = $pagewidget->{'weblinks_store'}) {
require App::Chart::Weblink;
my @weblinks = App::Chart::Weblink->links_for_symbol ($symbol);
### weblinks for: $symbol, scalar(@weblinks)
$store->clear;
foreach my $weblink (@weblinks) {
$store->set ($store->append,
0 => mnemonic_to_markup ($weblink->name),
1 => $weblink->url ($symbol),
2 => __('Double click to open this URL in a browser'));
}
} else {
die 'Oops, unknown raw refresh';
}
}
}
sub refresh {
my ($self) = @_;
### RawDialog refresh()
my $notebook = $self->{'notebook'};
$notebook->foreach (sub {
my ($scrolled) = @_;
$scrolled->{'dirty'} = 1;
});
_do_notebook_page ($notebook); # redraw current page
}
# 'response' signal on ourselves
sub _do_response {
my ($self, $response) = @_;
if ($response eq RESPONSE_REFRESH) {
$self->refresh;
} elsif ($response eq RESPONSE_INSERT) {
my $notebook = $self->{'notebook'};
my $pagenum = $notebook->get_current_page;
my $pagewidget = $notebook->get_nth_page ($pagenum);
if ((my $datasheet = $pagewidget->{'datasheet'})
( run in 2.115 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )