math-image
view release on metacpan or search on metacpan
lib/App/MathImage/Tk/Main.pm view on Meta::CPAN
# Copyright 2011, 2012, 2013 Kevin Ryde
# This file is part of Math-Image.
#
# Math-Image is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 3, or (at your option) any later
# version.
#
# Math-Image is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License along
# with Math-Image. If not, see <http://www.gnu.org/licenses/>.
package App::MathImage::Tk::Main;
use 5.008;
use strict;
use warnings;
use FindBin;
use List::Util 'max';
use Tk;
use Tk::Balloon;
use Locale::TextDomain 1.19 ('App-MathImage');
use App::MathImage::Generator;
use App::MathImage::Tk::Drawing;
use App::MathImage::Tk::Perl::WidgetBits 'with_underline';
# uncomment this to run the ### lines
# use Smart::Comments;
use base 'Tk::Derived', 'Tk::MainWindow';
Tk::Widget->Construct('AppMathImageTkMain');
our $VERSION = 110;
sub Populate {
my ($self, $args) = @_;
# read-only
$self->ConfigSpecs(-menubar => [ 'PASSIVE',
'AppMathImageTkMain',
'AppMathImageTkMain',
undef ]);
$self->ConfigSpecs(-toolbar => [ 'PASSIVE',
'AppMathImageTkMain',
'AppMathImageTkMain',
undef ]);
$self->ConfigSpecs(-drawing => [ 'PASSIVE',
'AppMathImageTkMain',
'AppMathImageTkMain',
undef ]);
my $balloon = $self->Balloon;
# cf add-on Tk::ToolBar
my $toolbar
= $self->{'Configure'}->{'-toolbar'}
= $self->Component('Frame','toolbar');
my $menubar
= $self->{'Configure'}->{'-menubar'}
= $self->Component('Frame','menubar',
-relief => 'raised', -bd => 2);
my $gui_options = delete $args->{'-gui_options'};
my $gen_options = delete $args->{'-gen_options'} || {};
{
my %gen_options = %{App::MathImage::Generator->default_options};
delete $gen_options{'width'};
delete $gen_options{'height'};
$gen_options = { %gen_options,
%$gen_options };
}
### Main gen_options: $gen_options
my $drawing
= $self->{'Configure'}->{'-drawing'}
= $self->Component
('AppMathImageTkDrawing','drawing',
-background => 'black',
-foreground => 'white',
-activebackground => 'black',
-activeforeground => 'white',
-disabledforeground => 'white',
(defined $gen_options->{'width'}
? (-width => $gen_options->{'width'},
-height => $gen_options->{'height'} || $gen_options->{'width'})
: ()),
);
$drawing->bind('<Enter>', [\&_do_drawing_motion, Ev('x'), Ev('y')]);
$drawing->bind('<Motion>', [\&_do_drawing_motion, Ev('x'), Ev('y')]);
( run in 0.405 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )