version 1.100, 2004/08/17 17:37:56
|
version 1.106, 2005/04/07 06:56:27
|
Line 35 use Apache::File;
|
Line 35 use Apache::File;
|
use Apache::response; |
use Apache::response; |
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::edit; |
use Apache::edit; |
|
use Apache::lonnet; |
|
|
use vars qw/$weboutputformat $versionstring/; |
use vars qw/$weboutputformat $versionstring/; |
|
|
Line 119 my $words_test = sub {$_[0]=~s/\s+/
|
Line 120 my $words_test = sub {$_[0]=~s/\s+/
|
################################################################### |
################################################################### |
my @gnuplot_edit_order = |
my @gnuplot_edit_order = |
qw/alttag bgcolor fgcolor height width font transparent grid samples |
qw/alttag bgcolor fgcolor height width font transparent grid samples |
border align texwidth texfont plottype/; |
border align texwidth texfont plotcolor plottype lmargin rmargin tmargin |
|
bmargin major_ticscale minor_ticscale/; |
|
|
|
my $margin_choices = ['default',0..20]; |
|
|
my %gnuplot_defaults = |
my %gnuplot_defaults = |
( |
( |
Line 211 my %gnuplot_defaults =
|
Line 215 my %gnuplot_defaults =
|
edit_type => 'choice', |
edit_type => 'choice', |
choices => [qw/8 10 12 14 16 18 20 22 24 26 28 30 32 34 36/], |
choices => [qw/8 10 12 14 16 18 20 22 24 26 28 30 32 34 36/], |
}, |
}, |
|
plotcolor => { |
|
default => 'monochrome', |
|
test => sub {$_[0]=~/^(monochrome|color|colour)$/}, |
|
description => 'Color setting for printing:', |
|
edit_type => 'choice', |
|
choices => [qw/monochrome color colour/], |
|
}, |
plottype => { |
plottype => { |
default => 'Cartesian', |
default => 'Cartesian', |
test => sub {$_[0]=~/^(Polar|Cartesian)$/}, |
test => sub {$_[0]=~/^(Polar|Cartesian)$/}, |
Line 218 my %gnuplot_defaults =
|
Line 229 my %gnuplot_defaults =
|
edit_type => 'choice', |
edit_type => 'choice', |
choices => ['Cartesian','Polar'] |
choices => ['Cartesian','Polar'] |
}, |
}, |
|
lmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Left margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
rmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Right margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
tmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Top margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
bmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Bottom margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
major_ticscale => { |
|
default => '1', |
|
test => $real_test, |
|
description => 'Size of major tic marks (plot coordinates)', |
|
edit_type => 'entry', |
|
size => '5' |
|
}, |
|
minor_ticscale => { |
|
default => '0.5', |
|
test => $real_test, |
|
description => 'Size of minor tic mark (plot coordinates)', |
|
edit_type => 'entry', |
|
size => '5' |
|
}, |
); |
); |
|
|
my %key_defaults = |
my %key_defaults = |
Line 461 sub end_gnuplot {
|
Line 514 sub end_gnuplot {
|
## |
## |
## Determine filename |
## Determine filename |
my $tmpdir = '/home/httpd/perl/tmp/'; |
my $tmpdir = '/home/httpd/perl/tmp/'; |
my $filename = $ENV{'user.name'}.'_'.$ENV{'user.domain'}. |
my $filename = $env{'user.name'}.'_'.$env{'user.domain'}. |
'_'.time.'_'.$$.$randnumber.'_plot'; |
'_'.time.'_'.$$.$randnumber.'_plot'; |
## Write the plot description to the file |
## Write the plot description to the file |
&write_gnuplot_file($tmpdir,$filename,$target); |
&write_gnuplot_file($tmpdir,$filename,$target); |
Line 984 sub write_gnuplot_file {
|
Line 1037 sub write_gnuplot_file {
|
} |
} |
# set term |
# set term |
if ($target eq 'web') { |
if ($target eq 'web') { |
$gnuplot_input .= 'set term gif '; |
$gnuplot_input .= 'set term '.$weboutputformat .' '; |
$gnuplot_input .= 'transparent ' if ($plot{'transparent'} eq 'on'); |
$gnuplot_input .= 'transparent ' if ($plot{'transparent'} eq 'on'); |
$gnuplot_input .= $plot{'font'} . ' '; |
$gnuplot_input .= $plot{'font'} . ' '; |
$gnuplot_input .= 'size '.$plot{'width'}.','.$plot{'height'}.' '; |
$gnuplot_input .= 'size '.$plot{'width'}.','.$plot{'height'}.' '; |
Line 992 sub write_gnuplot_file {
|
Line 1045 sub write_gnuplot_file {
|
# set output |
# set output |
$gnuplot_input .= "set output\n"; |
$gnuplot_input .= "set output\n"; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$gnuplot_input .= "set term postscript eps monochrome solid \"Helvetica\" $pt \n"; |
$gnuplot_input .= "set term postscript eps $plot{'plotcolor'} solid \"Helvetica\" $pt \n"; |
$gnuplot_input .= "set output \"/home/httpd/perl/tmp/". |
$gnuplot_input .= "set output \"/home/httpd/perl/tmp/". |
&Apache::lonnet::unescape($filename).".eps\"\n"; |
&Apache::lonnet::unescape($filename).".eps\"\n"; |
} |
} |
Line 1002 sub write_gnuplot_file {
|
Line 1055 sub write_gnuplot_file {
|
} else { |
} else { |
# Assume Cartesian |
# Assume Cartesian |
} |
} |
|
# margin |
|
if (lc($plot{'lmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set lmargin '.$plot{'lmargin'}.$/; |
|
} |
|
if (lc($plot{'rmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set rmargin '.$plot{'rmargin'}.$/; |
|
} |
|
if (lc($plot{'tmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set tmargin '.$plot{'tmargin'}.$/; |
|
} |
|
if (lc($plot{'bmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set bmargin '.$plot{'bmargin'}.$/; |
|
} |
|
# tic scales |
|
$gnuplot_input .= 'set ticscale '. |
|
$plot{'major_ticscale'}.' '.$plot{'minor_ticscale'}.$/; |
# grid |
# grid |
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); |
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); |
# border |
# border |
Line 1061 sub write_gnuplot_file {
|
Line 1130 sub write_gnuplot_file {
|
my $label; |
my $label; |
foreach $label (@labels) { |
foreach $label (@labels) { |
$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '. |
$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '. |
$label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}.' font "Helvetica,'.$pt.'pt"'.$/ ; |
$label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}; |
|
if ($target eq 'tex') { |
|
$gnuplot_input .=' font "Helvetica,'.$pt.'pt"' ; |
|
} |
|
$gnuplot_input .= $/; |
} |
} |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$gnuplot_input .="set size 1,".$plot{'height'}/$plot{'width'}*1.38; |
$gnuplot_input .="set size 1,".$plot{'height'}/$plot{'width'}*1.38; |
Line 1172 sub edit_attributes {
|
Line 1245 sub edit_attributes {
|
($description,$attr,$token, |
($description,$attr,$token, |
$defaults->{$attr}->{'size'}); |
$defaults->{$attr}->{'size'}); |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'choice') { |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'choice') { |
$result .= &Apache::edit::select_arg |
$result .= &Apache::edit::select_or_text_arg |
($description,$attr,$defaults->{$attr}->{'choices'},$token); |
($description,$attr,$defaults->{$attr}->{'choices'},$token); |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'onoff') { |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'onoff') { |
$result .= &Apache::edit::select_arg |
$result .= &Apache::edit::select_or_text_arg |
($description,$attr,['on','off'],$token); |
($description,$attr,['on','off'],$token); |
} |
} |
$result .= '<br />'; |
$result .= '<br />'; |