Author: manolo
Date: 2010-03-28 03:13:26 -0700 (Sun, 28 Mar 2010)
New Revision: 7349
Log:
Fl_PSfile_Device::start_job(): allow user to customize the file chooser title

Modified:
   branches/branch-1.3/FL/Fl_PSfile_Device.H
   branches/branch-1.3/src/Fl_PS_Printer.cxx

Modified: branches/branch-1.3/FL/Fl_PSfile_Device.H
===================================================================
--- branches/branch-1.3/FL/Fl_PSfile_Device.H   2010-03-28 06:58:39 UTC (rev 
7348)
+++ branches/branch-1.3/FL/Fl_PSfile_Device.H   2010-03-28 10:13:26 UTC (rev 
7349)
@@ -248,9 +248,8 @@
     void rotate(float angle);
     void translate(int x, int y);
     void untranslate(void);
-    int end_page (void);
-    void end_job (void);
-    
+    int end_page (void);    
+    void end_job(void);
 #endif // FL_DOXYGEN
     
   /**
@@ -259,9 +258,9 @@
   Fl_PSfile_Device(void);
   
   /**
-   @brief Begins the session where all graphics will go to a local PostScript 
file.
+   @brief Begins the session where all graphics requests will go to a local 
PostScript file.
    *
-   Opens a file dialog to select an output PostScript file.
+   Opens a file dialog entitled with Fl_PSfile_Device::file_chooser_title to 
select an output PostScript file.
    @param pagecount The total number of pages to be created.
    @param format Desired page format.
    @param layout Desired page layout.
@@ -270,20 +269,25 @@
   int start_job(int pagecount, enum Page_Format format = A4, enum Page_Layout 
layout = PORTRAIT);
   
   /**
-   @brief Begins the session where all graphics will go to named PostScript 
file.
+   @brief Begins the session where all graphics requests will go to FILE 
pointer.
    *
-   @param fname The name of the output local PostScript file.
+   @param ps_output A writable FILE pointer that will receive PostScript 
output and that will be closed
+   when end_job() will be called.
    @param pagecount The total number of pages to be created.
    @param format Desired page format.
    @param layout Desired page layout.
-   @return 0 iff OK, 1 if fopen(fname, "w") call failed.
+   @return always 0.
    */
-  int start_job(const char *fname, int pagecount, enum Page_Format format = 
A4, enum Page_Layout layout = PORTRAIT);
+  int start_job(FILE *ps_output, int pagecount, enum Page_Format format = A4, 
enum Page_Layout layout = PORTRAIT);
   
   /**
    @brief The destructor.
    */
   virtual ~Fl_PSfile_Device();
+  
+  // how to have the const value appear in Doxygen as occurs with 
Fl_File_Chooser ?
+  /** \brief "Select a .ps file" [this text may be customized at run-time] */
+  static const char *file_chooser_title; 
 };
 
 #endif // Fl_PSfile_Device_H

Modified: branches/branch-1.3/src/Fl_PS_Printer.cxx
===================================================================
--- branches/branch-1.3/src/Fl_PS_Printer.cxx   2010-03-28 06:58:39 UTC (rev 
7348)
+++ branches/branch-1.3/src/Fl_PS_Printer.cxx   2010-03-28 10:13:26 UTC (rev 
7349)
@@ -40,6 +40,8 @@
   #include "print_panel.cxx"
 #endif
 
+const char *Fl_PSfile_Device::file_chooser_title = "Select a .ps file";
+
 const Fl_PSfile_Device::page_format 
Fl_PSfile_Device::page_formats[NO_PAGE_FORMATS] = { // order of enum Page_Format
 // comes from appendix B of 5003.PPD_Spec_v4.3.pdf
 
@@ -1198,7 +1200,7 @@
 int Fl_PSfile_Device::start_job (int pagecount, enum Page_Format format, enum 
Page_Layout layout)
 {
   Fl_Native_File_Chooser fnfc;
-  fnfc.title("Create a .ps file");
+  fnfc.title(Fl_PSfile_Device::file_chooser_title);
   fnfc.type(Fl_Native_File_Chooser::BROWSE_SAVE_FILE);
   fnfc.options(Fl_Native_File_Chooser::SAVEAS_CONFIRM);
   fnfc.filter("PostScript\t*.ps\n");
@@ -1211,12 +1213,12 @@
   return 0;
 }
 
-int Fl_PSfile_Device::start_job (const char *fname, int pagecount, enum 
Page_Format format, enum Page_Layout layout)
+int Fl_PSfile_Device::start_job (FILE *ps_output, int pagecount, enum 
Page_Format format, enum Page_Layout layout)
 {
-  output = fopen(fname, "w");
-  if(output == NULL) return 1;
-  ps_filename_ = strdup(fname);
-  return start_postscript(pagecount, format, layout);
+  output = ps_output;
+  ps_filename_ = NULL;
+  start_postscript(pagecount, format, layout);
+  return 0;
 }
 
 void Fl_PSfile_Device::end_job (void)
@@ -1232,6 +1234,10 @@
     fprintf(output, "GR\n restore\n");
   fputs("%%EOF",output);
   reset();
+  fflush(output);
+  if(ferror(output)) {
+    fl_alert ("Error during PostScript data output.");
+    }
 #if ! (defined(__APPLE__) || defined(WIN32) )
   if (print_pipe)
     pclose(output);

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to