App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Gtk2/RawDialog.pm view on Meta::CPAN
$treeview->set_fixed_height_mode (1);
$pagewidget->show_all;
_refresh_page ($pagewidget);
}
sub _init_weblinks {
my ($notebook, $scrolled, $pagenum) = @_;
$scrolled->set (hscrollbar_policy => 'automatic');
my $treeview = Gtk2::TreeView->new;
$treeview->set (tooltip_column => 2);
$treeview->signal_connect (row_activated => \&_do_weblink_row_activate);
$treeview->signal_connect (button_press_event => \&_do_weblink_button_press);
$scrolled->add ($treeview);
my $store = $scrolled->{'weblinks_store'}
= Gtk2::ListStore->new ('Glib::String', 'Glib::String', 'Glib::String');
$treeview->set_model ($store);
my $renderer = Gtk2::CellRendererText->new;
$renderer->set (xalign => 0,
ypad => 0);
$renderer->set_fixed_height_from_font (1);
my $em = Gtk2::Ex::Units::em($treeview);
{
my $column = Gtk2::TreeViewColumn->new_with_attributes
(__('Name'), $renderer, markup => 0);
$column->set (sizing => 'fixed',
fixed_width => 20*$em,
resizable => 1);
$treeview->append_column ($column);
}
{
my $column = Gtk2::TreeViewColumn->new_with_attributes
(__('URL'), $renderer, text => 1);
$column->set (sizing => 'fixed',
fixed_width => 60*$em,
resizable => 1);
$column->{'menu_func'} = \&_do_weblink_menu_popup;
$treeview->append_column ($column);
}
$scrolled->show_all;
}
sub _do_weblink_row_activate {
my ($treeview, $path, $column) = @_;
my $url = _do_weblink_row_url ($treeview, $path);
require App::Chart::Gtk2::GUI;
App::Chart::Gtk2::GUI::browser_open ($url);
}
sub _do_weblink_row_url {
my ($treeview, $path) = @_;
my $store = $treeview->get_model;
my $iter = $store->get_iter ($path);
return $store->get_value ($iter, 1);
}
sub mnemonic_to_markup {
my ($str) = @_;
$str = Glib::Markup::escape_text($str);
$str =~ s{_(.)}{$1 eq '_' ? '' : "<u>$1</u>"}eg;
return $str;
}
# 'button-press-event' on the weblink TreeView
sub _do_weblink_button_press {
my ($treeview, $event) = @_;
my ($path, $column) = $treeview->get_path_at_pos ($event->x, $event->y);
if (!$path) { return; }
if (my $func = $column->{'menu_func'}) {
$func->($treeview, $event, $path);
}
return Gtk2::EVENT_PROPAGATE;
}
sub _do_weblink_menu_popup {
my ($treeview, $event, $path) = @_;
my $menu = Gtk2::Menu->new;
$menu->set_screen ($treeview->get_screen);
my $url = _do_weblink_row_url ($treeview, $path);
{
my $item = Gtk2::ImageMenuItem->new_from_stock ('gtk-open');
$item->{'url'} = $url;
$item->signal_connect (activate => \&_do_weblink_menu_open);
$menu->append ($item);
}
# LinkButton of Gtk 2.14 has a "Copy URL" message string (translated etc),
# could show that
{
my $item = Gtk2::ImageMenuItem->new_from_stock ('gtk-copy');
$item->{'url'} = $url;
$item->signal_connect (activate => \&_do_weblink_menu_copy);
$menu->append ($item);
}
$menu->show_all;
$menu->popup (undef, undef, undef, undef,
$event->button, $event->time);
}
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
( run in 0.615 second using v1.01-cache-2.11-cpan-39bf76dae61 )