Fix GUI output viewer to use the "auto" feature of the driver width
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 25 Sep 2007 23:59:40 +0000 (23:59 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Tue, 25 Sep 2007 23:59:40 +0000 (23:59 +0000)
and length.  Closes patch #6210.

src/ui/gui/ChangeLog
src/ui/gui/output-viewer.c
src/ui/gui/output-viewer.h
src/ui/gui/psppire.c

index c63f744b388cbb4d529fa8d66c4e9079ad7f2c9c..eab0f7af9771ef480ff946dd1c51b3d6ac965d94 100644 (file)
@@ -1,3 +1,11 @@
+2007-09-26  John Darrington <john@darrington.wattle.id.au>
+       
+       * output-viewer.c output-viewer.h psppire.c: (closes patch #6210) 
+       Changed width and length parameters of output driver to
+       "auto". Changed default width and length  to be something
+       acceptable to the ascii driver.  (reload_viewer) Dynamically
+       allocate the line buffer so that it matches the width of the output.
+       
 2007-09-24  Ben Pfaff  <blp@gnu.org>
 
        * message-dialog.c (popup_message): Refer to files that contain
index 62dc85f1c2a4147c9cb1cff7b72059c60babf67d..d3b78f1481e9b098935e28368fff0d6a02319aa4 100644 (file)
@@ -46,8 +46,8 @@ cancel_urgency (GtkWindow *window,  gpointer data)
 
 static struct output_viewer *the_output_viewer = NULL;
 
-int viewer_length = -1;
-int viewer_width = -1;
+int viewer_length = 16;
+int viewer_width = 59;
 
 /* Callback for the "delete" action (clicking the x on the top right
    hand corner of the window) */
@@ -196,7 +196,7 @@ void
 reload_viewer (struct output_viewer *ov)
 {
   GtkTextIter end_iter;
-  char line[OUTPUT_LINE_WIDTH];
+  static char *line = NULL;
   GtkTextMark *mark ;
   gboolean chars_inserted = FALSE;
 
@@ -211,12 +211,14 @@ reload_viewer (struct output_viewer *ov)
        }
     }
 
+  line = xrealloc (line, sizeof (char) * (viewer_width + 1));
+
   gtk_text_buffer_get_end_iter (ov->buffer, &end_iter);
 
   mark = gtk_text_buffer_create_mark (ov->buffer, NULL, &end_iter, TRUE);
 
   /* Read in the next lot of text */
-  while (fgets (line, OUTPUT_LINE_WIDTH, ov->fp) != NULL)
+  while (fgets (line, viewer_width + 1, ov->fp) != NULL)
     {
       chars_inserted = TRUE;
       gtk_text_buffer_insert (ov->buffer, &end_iter, line, -1);
index 2036b66f323318265eaa7f88fa0966ffaec2d754..b5c9ffcea77e4a62fc4c0e36158931a37ad29c5a 100644 (file)
@@ -35,10 +35,5 @@ void reload_the_viewer (void);
 
 #define OUTPUT_FILE_NAME "psppire.txt"
 
-/* Make sure these two agree !! */
-#define OUTPUT_LINE_WIDTH 80
-#define OUTPUT_LINE_WIDTH_str "80"
-
-
 
 #endif
index b874d393cf6df29b7709cf13f9398c0a043953a1..eaf9ca95294638d90347f3f9087d64602d7f282c 100644 (file)
@@ -111,8 +111,8 @@ initialize (void)
 
   outp_configure_driver_line (
     ss_cstr ("gui:ascii:screen:squeeze=on headers=off top-margin=0 "
-             "bottom-margin=0 paginate=off length=50 "
-            "width=" OUTPUT_LINE_WIDTH_str " emphasis=none "
+             "bottom-margin=0 paginate=off length=auto width=auto "
+            "emphasis=none "
              "output-file=\"" OUTPUT_FILE_NAME "\" append=yes"));
 
   unlink (OUTPUT_FILE_NAME);