--- loncom/xml/lonplot.pm	2003/05/16 15:12:49	1.84
+++ loncom/xml/lonplot.pm	2003/08/28 20:38:25	1.87
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.84 2003/05/16 15:12:49 sakharuk Exp $
+# $Id: lonplot.pm,v 1.87 2003/08/28 20:38:25 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -113,7 +113,7 @@ my $words_test     = sub {$_[0]=~s/\s+/
 ###################################################################
 my @gnuplot_edit_order = 
     qw/alttag bgcolor fgcolor height width font transparent grid samples 
-    border align texwidth/;
+    border align texwidth plottype/;
 
 my $gnuplot_help_text = <<"ENDPLOTHELP";
 <p>
@@ -230,6 +230,13 @@ my %gnuplot_defaults =
          edit_type   => 'entry',
          size        => '5'
          },
+     plottype  => {
+	 default     => 'Cartesian',
+	 test        => sub {$_[0]=~/^(Polar|Cartesian)$/},
+	 description => 'Plot type:',
+	 edit_type   => 'choice',
+         choices     => ['Polar','Cartesian']
+         },
      );
 
 my %key_defaults = 
@@ -807,7 +814,11 @@ sub start_function {
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	if (exists($curves[-1]->{'data'})) {
-	    &Apache::lonxml::warning('Use of <function> precludes use of <data>.  The <data> will be omitted in favor of the <function> declaration.');
+	    &Apache::lonxml::warning
+                ('Use of the <b>curve function</b> tag precludes use of '.
+                 ' the <b>curve data</b> tag.  '.
+                 'The curve data tag will be omitted in favor of the '.
+                 'curve function declaration.');
 	    delete $curves[-1]->{'data'} ;
 	}
         my $function = &Apache::lonxml::get_all_text("/function",$parser);
@@ -843,9 +854,11 @@ sub start_data {
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	if (exists($curves[-1]->{'function'})) {
-	    &Apache::lonxml::warning('Use of <data> precludes use of .'.
-	    '<function>.  The <function> will be omitted in favor of '.
-            'the <data> declaration.');
+	    &Apache::lonxml::warning
+                ('Use of the <b>curve function</b> tag precludes use of '.
+                 ' the <b>curve data</b> tag.  '.
+                 'The curve function tag will be omitted in favor of the '.
+                 'curve data declaration.');
 	    delete($curves[-1]->{'function'});
 	}
 	my $datatext = &Apache::lonxml::get_all_text("/data",$parser);
@@ -869,14 +882,14 @@ sub start_data {
 	    # Check that it's non-empty
 	    if (! defined($data[$i])) {
 		&Apache::lonxml::warning(
-		    'undefined <data> value.  Replacing with '.
+		    'undefined curve data value.  Replacing with '.
 		    ' pi/e = 1.15572734979092');
 		$data[$i] = 1.15572734979092;
 	    }
 	    # Check that it's a number
 	    if (! &$real_test($data[$i]) & ! &$int_test($data[$i])) {
 		&Apache::lonxml::warning(
-		    'Bad <data> value of '.$data[$i].'  Replacing with '.
+		    'Bad curve data value of '.$data[$i].'  Replacing with '.
 		    ' pi/e = 1.15572734979092');
 		$data[$i] = 1.15572734979092;
 	    }
@@ -964,8 +977,13 @@ sub set_defaults {
 sub get_attributes{
     my ($values,$defaults,$parstack,$safeeval,$tag) = @_;
     foreach my $attr (keys(%{$defaults})) {
-	$values->{$attr} = 
-	    &Apache::lonxml::get_param($attr,$parstack,$safeeval);
+	if ($attr eq 'texwidth') {
+	    $values->{$attr} = 
+		&Apache::lonxml::get_param($attr,$parstack,$safeeval,undef,1);
+	} else {
+	    $values->{$attr} = 
+		&Apache::lonxml::get_param($attr,$parstack,$safeeval);
+	}
 	if ($values->{$attr} eq '' | !defined($values->{$attr})) {
 	    $values->{$attr} = $defaults->{$attr}->{'default'};
 	    next;
@@ -1010,6 +1028,12 @@ sub write_gnuplot_file {
 	$gnuplot_input .= "set output \"/home/httpd/perl/tmp/".
 	    &Apache::lonnet::unescape($filename).".eps\"\n";
     }
+    # cartesian or polar?
+    if (lc($plot{'plottype'}) eq 'polar') {
+        $gnuplot_input .= 'set polar'.$/;
+    } else {
+        # Assume Cartesian
+    }
     # grid
     $gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on');
     # border
@@ -1144,7 +1168,7 @@ sub check_inputs {
     my $curve;
     foreach $curve (@curves) {
 	if (!defined($curve->{'function'})&&!defined($curve->{'data'})){
-	    &Apache::lonxml::warning("One of the curves specified did not contain any <data> or <function> declarations\n");
+	    &Apache::lonxml::warning("One of the curves specified did not contain any curve data or curve function declarations\n");
 	    return '';
 	}
     }