changeset 6870:e2e5425905ac

[project @ 2007-09-06 20:18:20 by jwe]
author jwe
date Thu, 06 Sep 2007 20:18:28 +0000
parents f9c893831e68
children 34cd0b319a29
files ChangeLog configure.in scripts/ChangeLog scripts/plot/drawnow.m scripts/plot/print.m
diffstat 5 files changed, 88 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Sep 06 16:38:44 2007 +0000
+++ b/ChangeLog	Thu Sep 06 20:18:28 2007 +0000
@@ -1,3 +1,7 @@
+2007-09-06  John W. Eaton  <jwe@octave.org>
+
+	* configure.in: Avoid broken strptime function on Cygwin systems.
+
 2007-09-01  David Bateman  <dbateman@free.fr>
 
 	* configure.in: AC_SUBST and check the variable TEXINFO_QHULL.
--- a/configure.in	Thu Sep 06 16:38:44 2007 +0000
+++ b/configure.in	Thu Sep 06 20:18:28 2007 +0000
@@ -29,7 +29,7 @@
 EXTERN_CXXFLAGS="$CXXFLAGS"
 
 AC_INIT
-AC_REVISION($Revision: 1.573 $)
+AC_REVISION($Revision: 1.574 $)
 AC_PREREQ(2.57)
 AC_CONFIG_SRCDIR([src/octave.cc])
 AC_CONFIG_HEADER(config.h)
@@ -1453,7 +1453,7 @@
 esac
 
 case "$canonical_host_type" in
-  *-apple-darwin*)
+  *-apple-darwin* | *-*-cygwin*)
     ## The weekday function, which uses strptime, is broken because
     ## strptime is apparently not setting wday correctly for formats
     ## like "%d-%m-%Y", so use our version.  We could use an actual
--- a/scripts/ChangeLog	Thu Sep 06 16:38:44 2007 +0000
+++ b/scripts/ChangeLog	Thu Sep 06 20:18:28 2007 +0000
@@ -1,3 +1,9 @@
+2007-09-06  John W. Eaton  <jwe@octave.org>
+
+	* plot/drawnow.m (drawnow): New arg, debug_file.
+	(init_plot_stream): Split from open_plot_stream.
+	* plot/print.m: Accept -debug=FILE argument.
+
 2007-09-06  David Bateman  <dbateman@free.fr>
 
         * general/celldisp.m: New function.
--- a/scripts/plot/drawnow.m	Thu Sep 06 16:38:44 2007 +0000
+++ b/scripts/plot/drawnow.m	Thu Sep 06 20:18:28 2007 +0000
@@ -24,7 +24,7 @@
 
 ## Author: jwe
 
-function drawnow (term, file)
+function drawnow (term, file, debug_file)
 
   persistent drawnow_executing = 0;
 
@@ -35,18 +35,27 @@
       return;
     endif
 
-    if (nargin == 2)
+    if (nargin == 2 || nargin == 3)
       h = get (0, "currentfigure");
       if (h)
 	f = get (h);
 	plot_stream = [];
+	fid = [];
 	unwind_protect
 	  plot_stream = open_gnuplot_stream ([], term, file);
 	  __go_draw_figure__ (f, plot_stream);
+	  if (nargin == 3)
+	    fid = fopen (debug_file, "wb");
+	    init_plot_stream (fid, [], term, file);
+	    __go_draw_figure__ (f, fid);
+	  endif
 	unwind_protect_cleanup
 	  if (! isempty (plot_stream))
 	    pclose (plot_stream);
 	  endif
+	  if (! isempty (fid))
+	    fclose (fid);
+	  endif
 	end_unwind_protect
       else
 	error ("drawnow: nothing to draw");
@@ -84,7 +93,7 @@
 
 endfunction
 
-function plot_stream = open_gnuplot_stream (h, term, file)
+function plot_stream = open_gnuplot_stream (h, varargin)
 
   ## If drawnow is cleared, it is possible to register __go_close_all__
   ## more than once, but that is not fatal.
@@ -102,47 +111,7 @@
       set (h, "__plot_stream__", plot_stream);
     endif
 
-    if (nargin == 3)
-      fprintf (plot_stream, "set terminal %s;\n", term);
-      fprintf (plot_stream, "set output \"%s\";\n", file);
-    else
-
-      ## Guess the terminal type.
-      term = getenv ("GNUTERM");
-      if (isempty (term))
-	if (! isempty (getenv ("DISPLAY")))
-          term = "x11";
-	elseif (! isunix ())
-          term = "windows";
-	else
-	  ## This should really be checking for os x before setting
-	  ## the terminal type to aqua, but nobody will notice because
-	  ## every other unix will be using x11 and windows will be
-	  ## using windows.  Those diehards still running octave from
-	  ## a linux console know how to set the GNUTERM variable.
-          term = "aqua";
-	endif
-      endif
-
-      ## If no 'h' (why not?) then open the terminal as Figure 0.
-      if (isempty (h))
-        h = 0;
-      endif
-
-      if (strcmp (term, "x11"))
-        fprintf (plot_stream, "set terminal x11 title \"Figure %d\"\n", h);
-      elseif (strcmp (term, "aqua"))
-        ## Aqua doesn't understand the 'title' option despite what the
-        ## gnuplot 4.2 documentation says.
-        fprintf (plot_stream, "set terminal aqua %d\n", h);
-      elseif (strcmp (term, "wxt"))
-        fprintf (plot_stream, "set terminal wxt title \"Figure %d\"\n", h);
-      endif
-      ## gnuplot will pick up the GNUTERM environment variable itself
-      ## so no need to set the terminal type if not also setting the
-      ## figure title.
-
-    endif
+    init_plot_stream (plot_stream, h, varargin{:})
 
     if (isempty (__go_close_all_registered__))
       atexit ("__go_close_all__");
@@ -152,3 +121,53 @@
   endif
 
 endfunction
+
+function init_plot_stream (plot_stream, h, term, file)
+
+  if (nargin == 4)
+    if (! isempty (term))
+      fprintf (plot_stream, "set terminal %s;\n", term);
+    endif
+    if (! isempty (file))
+      fprintf (plot_stream, "set output \"%s\";\n", file);
+    endif
+  else
+
+    ## Guess the terminal type.
+    term = getenv ("GNUTERM");
+    if (isempty (term))
+      if (! isempty (getenv ("DISPLAY")))
+	term = "x11";
+      elseif (! isunix ())
+	term = "windows";
+      else
+	## This should really be checking for os x before setting
+	## the terminal type to aqua, but nobody will notice because
+	## every other unix will be using x11 and windows will be
+	## using windows.  Those diehards still running octave from
+	## a linux console know how to set the GNUTERM variable.
+	term = "aqua";
+      endif
+    endif
+
+    ## If no 'h' (why not?) then open the terminal as Figure 0.
+    if (isempty (h))
+      h = 0;
+    endif
+
+    if (strcmp (term, "x11"))
+      fprintf (plot_stream, "set terminal x11 title \"Figure %d\"\n", h);
+    elseif (strcmp (term, "aqua"))
+      ## Aqua doesn't understand the 'title' option despite what the
+      ## gnuplot 4.2 documentation says.
+      fprintf (plot_stream, "set terminal aqua %d\n", h);
+    elseif (strcmp (term, "wxt"))
+      fprintf (plot_stream, "set terminal wxt title \"Figure %d\"\n", h);
+    endif
+    ## gnuplot will pick up the GNUTERM environment variable itself
+    ## so no need to set the terminal type if not also setting the
+    ## figure title.
+
+  endif
+
+endfunction
--- a/scripts/plot/print.m	Thu Sep 06 16:38:44 2007 +0000
+++ b/scripts/plot/print.m	Thu Sep 06 20:18:28 2007 +0000
@@ -119,6 +119,8 @@
   name = "";
   devopt = "";
   printer = "";
+  debug = false;
+  debug_file = "octave-print-commands.log"
 
   for i = 1:nargin
     arg = varargin{i};
@@ -135,8 +137,13 @@
 	orientation = "portrait";
       elseif (strcmp (arg, "-landscape"))
 	orientation = "landscape";
+      elseif (strncmp (arg, "-debug", 6))
+	debug = true;
+	if (length (arg) > 7)
+	  debug_file = arg(7:end);
+	endif
       elseif (length (arg) > 2 && arg(1:2) == "-d")
-	devopt = arg(3:length(arg));
+	devopt = arg(3:end);
       elseif (length (arg) > 2 && arg(1:2) == "-P")
 	printer = arg;
       elseif (length (arg) > 2 && arg(1:2) == "-F")
@@ -332,7 +339,11 @@
     new_terminal = dev;
   endif
 
-  drawnow (new_terminal, name);
+  if (debug)
+    drawnow (new_terminal, name, debug_file);
+  else
+    drawnow (new_terminal, name);
+  endif
 
   if (! isempty (convertname))
     command = sprintf ("convert '%s' '%s'", name, convertname);