| 
							- //
 - // "$Id: nativefilechooser-simple-app.cxx 8183 2011-01-04 17:31:56Z AlbrechtS $"
 - //
 - //	An example of how to use Fl_Native_File_Chooser to open & save files.
 - //
 - // Copyright 2010 Greg Ercolano.
 - // Copyright 1998-2010 by Bill Spitzak and others.
 - //
 - // This library is free software; you can redistribute it and/or
 - // modify it under the terms of the GNU Library General Public
 - // License as published by the Free Software Foundation; either
 - // version 2 of the License, or (at your option) any later version.
 - //
 - // This library is distributed in the hope that it will be useful,
 - // but WITHOUT ANY WARRANTY; without even the implied warranty of
 - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 - // Library General Public License for more details.
 - //
 - // You should have received a copy of the GNU Library General Public
 - // License along with this library; if not, write to the Free Software
 - // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 - // USA.
 - //
 - // Please report all bugs and problems on the following page:
 - //
 - //     http://www.fltk.org/str.php
 - //
 - #include <stdio.h>	// printf
 - #include <stdlib.h>	// exit,malloc
 - #include <string.h>	// strerror
 - #include <errno.h>	// errno
 - #include <FL/Fl.H>
 - #include <FL/Fl_Window.H>
 - #include <FL/Fl_Menu_Bar.H>
 - #include <FL/Fl_Native_File_Chooser.H>
 - #include <FL/Fl_Box.H>
 - #include <FL/fl_ask.H>
 - 
 - class Application : public Fl_Window {
 -   Fl_Native_File_Chooser *fc;
 -   // Does file exist?
 -   int exist(const char *filename) {
 -     FILE *fp = fopen(filename, "r");
 -     if (fp) { fclose(fp); return(1); }
 -     else    { return(0); }
 -   }
 -   // 'Open' the file
 -   void open(const char *filename) {
 -     printf("Open '%s'\n", filename);
 -   }
 -   // 'Save' the file
 -   //    Create the file if it doesn't exist
 -   //    and save something in it.
 -   //
 -   void save(const char *filename) {
 -     printf("Saving '%s'\n", filename);
 -     if ( !exist(filename) ) {
 -       FILE *fp = fopen(filename, "w");				// create file if it doesn't exist
 -       if ( fp ) {
 -         // A real app would do something useful here.
 -         fprintf(fp, "Hello world.\n");
 -         fclose(fp);
 -       } else {
 -         fl_message("Error: %s: %s", filename, strerror(errno));
 -       }
 -     } else {
 -       // A real app would do something useful here.
 -     }
 -   }
 -   // Handle an 'Open' request from the menu
 -   static void open_cb(Fl_Widget *w, void *v) {
 -     Application *app = (Application*)v;
 -     app->fc->title("Open");
 -     app->fc->type(Fl_Native_File_Chooser::BROWSE_FILE);		// only picks files that exist
 -     switch ( app->fc->show() ) {
 -       case -1: break;	// Error
 -       case  1: break; 	// Cancel
 -       default:		// Choice
 -         app->fc->preset_file(app->fc->filename());
 -         app->open(app->fc->filename());
 - 	break;
 -     }
 -   }
 -   // Handle a 'Save as' request from the menu
 -   static void saveas_cb(Fl_Widget *w, void *v) {
 -     Application *app = (Application*)v;
 -     app->fc->title("Save As");
 -     app->fc->type(Fl_Native_File_Chooser::BROWSE_SAVE_FILE);	// need this if file doesn't exist yet
 -     switch ( app->fc->show() ) {
 -       case -1: break;	// Error
 -       case  1: break; 	// Cancel
 -       default:		// Choice
 -         app->fc->preset_file(app->fc->filename());
 -         app->save(app->fc->filename());
 - 	break;
 -     }
 -   }
 -   // Handle a 'Save' request from the menu
 -   static void save_cb(Fl_Widget *w, void *v) {
 -     Application *app = (Application*)v;
 -     if ( strlen(app->fc->filename()) == 0 ) {
 -       saveas_cb(w,v);
 -     } else {
 -       app->save(app->fc->filename());
 -     }
 -   }
 -   static void quit_cb(Fl_Widget *w, void *v) {
 -     exit(0);
 -   }
 -   // Return an 'untitled' default pathname
 -   const char* untitled_default() {
 -     static char *filename = 0;
 -     if ( !filename ) {
 -       const char *home =
 -         getenv("HOME") ? getenv("HOME") :		 // unix
 - 	getenv("HOME_PATH") ? getenv("HOME_PATH") :	 // windows
 - 	".";						 // other
 -       filename = (char*)malloc(strlen(home)+20);
 -       sprintf(filename, "%s/untitled.txt", home);
 -     }
 -     return(filename);
 -   }
 - public:
 -   // CTOR
 -   Application() : Fl_Window(400,200,"Native File Chooser Example") {
 -     Fl_Menu_Bar *menu = new Fl_Menu_Bar(0,0,400,25);
 -     menu->add("&File/&Open",  FL_COMMAND+'o', open_cb, (void*)this);
 -     menu->add("&File/&Save",  FL_COMMAND+'s', save_cb, (void*)this);
 -     menu->add("&File/&Save As", 0,  saveas_cb, (void*)this);
 -     menu->add("&File/&Quit",  FL_COMMAND+'q', quit_cb);
 -     // Describe the demo..
 -     Fl_Box *box = new Fl_Box(20,25+20,w()-40,h()-40-25);
 -     box->color(45); 
 -     box->box(FL_FLAT_BOX);
 -     box->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE|FL_ALIGN_WRAP);
 -     box->label("This demo shows an example of implementing "
 -                "common 'File' menu operations like:\n"
 -                "    File/Open, File/Save, File/Save As\n"
 - 	       "..using the Fl_Native_File_Chooser widget.\n\n"
 - 	       "Note 'Save' and 'Save As' really *does* create files! "
 - 	       "This is to show how behavior differs when "
 - 	       "files exist vs. do not.");
 -     box->labelsize(12);
 -     // Initialize the file chooser
 -     fc = new Fl_Native_File_Chooser();
 -     fc->filter("Text\t*.txt\n");
 -     fc->preset_file(untitled_default());
 -     end();
 -   }
 - };
 - 
 - int main(int argc, char *argv[]) {
 -   Fl::scheme("gtk+");
 -   Application *app = new Application();
 -   app->show(argc,argv);
 -   return(Fl::run());
 - }
 - 
 - //
 - // End of "$Id: nativefilechooser-simple-app.cxx 8183 2011-01-04 17:31:56Z AlbrechtS $".
 - //
 
 
  |