App-ErrorCalculator
view release on metacpan or search on metacpan
lib/App/ErrorCalculator.pm view on Meta::CPAN
package App::ErrorCalculator;
use strict;
use warnings;
our $VERSION = '1.02';
use Math::Symbolic ();
use Math::SymbolicX::Error;
use Math::SymbolicX::NoSimplification;
use Spreadsheet::Read ();
use Number::WithError;
use Glib qw/TRUE FALSE/;
use Gtk2 '-init';
use Gtk2::Ex::Dialogs ( destroy_with_parent => TRUE,
modal => TRUE,
no_separator => FALSE );
sub _delete_event
{
# If you return FALSE in the "delete_event" signal handler,
# GTK will emit the "destroy" signal. Returning TRUE means
# you don't want the window to be destroyed.
# This is useful for popping up 'are you sure you want to quit?'
# type dialogs.
#print "delete event occurred\n";
# Change TRUE to FALSE and the main window will be destroyed with
# a "delete_event".
return FALSE;
}
my $window = Gtk2::Window->new('toplevel');
$window->set_border_width(10);
# When the window is given the "delete_event" signal (this is given
# by the window manager, usually by the "close" option, or on the
# titlebar), we ask it to call the delete_event () functio
# as defined above. No data is passed to the callback function.
$window->signal_connect(delete_event => \&_delete_event);
# Here we connect the "destroy" event to a signal handler.
# This event occurs when we call Gtk2::Widget::destroy on the window,
# or if we return FALSE in the "delete_event" callback. Perl supports
# anonymous subs, so we can use one of them for one line callbacks.
$window->signal_connect(destroy => sub { Gtk2->main_quit; });
my $table = Gtk2::Table->new(5, 4, FALSE);
$window->add($table);
# Labels
my $l = Gtk2::Label->new('Function:');
$table->attach_defaults(
$l, 0, 1, # left/right
1, 2, # top/bottom
);
$l->show;
$l = Gtk2::Label->new('Input:');
$table->attach_defaults(
$l, 0, 1, # left/right
2, 3, # top/bottom
);
$l->show;
$l = Gtk2::Label->new('Output:');
$table->attach_defaults(
$l, 0, 1, # left/right
3, 4, # top/bottom
);
$l->show;
# feedback labels
my $funclabel = Gtk2::Label->new('Valid Function ');
$table->attach_defaults(
$funclabel, 3, 4, # left/right
1, 2, # top/bottom
);
$funclabel->show;
my $inlabel = Gtk2::Label->new('Invalid Data File');
$table->attach_defaults(
$inlabel, 3, 4, # left/right
2, 3, # top/bottom
);
$inlabel->show;
my $outlabel = Gtk2::Label->new('Invalid Output File');
$table->attach_defaults(
$outlabel, 3, 4, # left/right
3, 4, # top/bottom
);
$outlabel->show;
# Entries
my $funcentry = Gtk2::Entry->new;
$table->attach_defaults(
$funcentry, 1, 2, # left/right
1, 2, # top/bottom
);
$funcentry->signal_connect(
activate => \&_validate_func,
);
$funcentry->signal_connect(
changed => \&_validate_func,
);
$funcentry->set_text('f = a * x^2');
$funcentry->show;
( run in 2.621 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )