App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Gtk2/Main.pm view on Meta::CPAN
return $self->{'view'}->get('symbol');
}
# return the menubar widget
sub menubar {
my ($self) = @_;
return $self->{'ui'}->get_widget('/MenuBar');
}
# return App::Chart::Gtk2::Main widget, preferring the transient parent of $dialog,
# if $dialog is given
sub find_for_dialog {
my ($class, $dialog) = @_;
if ($dialog
&& $dialog->can('get_transient_for')
&& (my $parent = $dialog->get_transient_for)) {
if ($parent->isa($class)) {
return $parent;
}
}
my $screen = $dialog->get_screen;
foreach my $toplevel (Gtk2::Window->list_toplevels) {
if ($toplevel->isa($class) && $toplevel->get_screen == $screen) {
return $toplevel;
}
}
foreach my $toplevel (Gtk2::Window->list_toplevels) {
if ($toplevel->isa($class)) {
return $toplevel;
}
}
return $class->new;
}
#------------------------------------------------------------------------------
# mainline
sub main {
my ($class, $args) = @_;
### Main main() args: $args
## no critic (ProhibitExit, ProhibitExitInSubroutines)
my $symbol = $args->[0];
my $symlist = undef;
if (@$args > 1 || (Scalar::Util::blessed($symbol)
&& $symbol->isa('App::Chart::Gtk2::Symlist'))) {
print STDERR __"chart: only one symbol argument when starting the GUI\n";
exit 1;
}
require Gtk2::Ex::ErrorTextDialog::Handler;
Glib->install_exception_handler
(\&Gtk2::Ex::ErrorTextDialog::Handler::exception_handler);
if (0) {
## no critic (RequireLocalizedPunctuationVars)
$SIG{'__WARN__'} = \&Gtk2::Ex::ErrorTextDialog::Handler::exception_handler;
}
Gtk2->disable_setlocale; # leave LC_NUMERIC alone for version nums
Gtk2->init;
Glib::Idle->add
(sub {
my $self = $class->instance;
$self->signal_connect (destroy => sub { Gtk2->main_quit; });
main::initfile (File::Spec->catfile(App::Chart::chart_directory(),
'gui.pl'));
$self->show;
App::Chart::chart_dirbroadcast()->listen;
if (defined $symbol) {
my $label = $self->{'view'}->{'initial'}->get_child;
$label->set_text(__x('Loading {symbol} ...', symbol => $symbol));
Glib::Idle->add
(sub {
require App::Chart::SymbolMatch;
my ($match_symbol, $match_symlist)
= App::Chart::SymbolMatch::find ($symbol);
if ($match_symbol) {
($symbol, $symlist) = ($match_symbol, $match_symlist);
}
$self->goto_symbol ($symbol, $symlist);
return Glib::SOURCE_REMOVE;
});
}
return Glib::SOURCE_REMOVE;
},
Glib::G_PRIORITY_HIGH);
Gtk2->main;
}
1;
__END__
=for stopwords Eg menubar undef symlist
=head1 NAME
App::Chart::Gtk2::Main -- Chart program main window
=for test_synopsis my ($symbol)
=head1 SYNOPSIS
use App::Chart::Gtk2::Main;
App::Chart::Gtk2::Main->open ($symbol)
=head1 WIDGET HIERARCHY
C<App::Chart::Gtk2::Main> is a subclass of C<Gtk2::Window>.
Gtk2::Widget
Gtk2::Container
Gtk2::Bin
Gtk2::Window
App::Chart::Gtk2::Main
( run in 0.663 second using v1.01-cache-2.11-cpan-ceb78f64989 )