index d98c37a28199cb6be7227644498173e4a0d7647f..b73955b466c0d1d4f438919ab323388fc953c4a4 100644 (file)
*
* Authors:
* Bob Jamison <rwjj@earthlink.net>
+ * Joel Holdsworth
* Inkscape Guys
*
* Copyright (C) 2006 Johan Engelen <johan@shouraizou.nl>
- * Copyright (C) 2004-2006, Inkscape Authors
+ * Copyright (C) 2007-2008 Joel Holdsworth
+ * Copyright (C) 2004-2008, Inkscape Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include <glibmm.h>
#include <vector>
+#include <set>
#include <gtkmm.h>
namespace Inkscape {
namespace Extension {
class Extension;
+class Output;
}
}
-
-
-
namespace Inkscape
{
namespace UI
namespace Dialog
{
-
-
/**
* Used for setting filters and options, and
* reading them back from user selections.
SVG_NAMESPACE_WITH_EXTENSIONS
} FileDialogSelectionType;
+
/**
- * Architecture-specific data
+ * Return true if the string ends with the given suffix
*/
-typedef struct FileOpenNativeData_def FileOpenNativeData;
-
+bool hasSuffix(const Glib::ustring &str, const Glib::ustring &ext);
+/**
+ * Return true if the image is loadable by Gdk, else false
+ */
+bool isValidImageFile(const Glib::ustring &fileName);
+
/**
* This class provides an implementation-independent API for
* file "Open" dialogs. Using a standard interface obviates the need
static FileOpenDialog *create(Gtk::Window& parentWindow,
const Glib::ustring &path,
FileDialogType fileTypes,
- const Glib::ustring &title);
+ const char *title);
/**
* Show an OpenFile file selector.
* @return the selected path if user selected one, else NULL
*/
- virtual bool show() =0;
+ virtual bool show() = 0;
/**
* Return the 'key' (filetype) of the selection, if any
*/
virtual Inkscape::Extension::Extension * getSelectionType() = 0;
- virtual Glib::ustring getFilename () =0;
-
- virtual std::vector<Glib::ustring> getFilenames () = 0;
+ Glib::ustring getFilename();
+ virtual std::vector<Glib::ustring> getFilenames() = 0;
+
+ virtual Glib::ustring getCurrentDirectory() = 0;
+
+protected:
+ /**
+ * Filename that was given
+ */
+ Glib::ustring myFilename;
+
}; //FileOpenDialog
* @param key a list of file types from which the user can select
*/
static FileSaveDialog *create(Gtk::Window& parentWindow,
- const Glib::ustring &path,
+ const Glib::ustring &path,
FileDialogType fileTypes,
- const Glib::ustring &title,
+ const char *title,
const Glib::ustring &default_key);
virtual void setSelectionType( Inkscape::Extension::Extension * key ) = 0;
- virtual Glib::ustring getFilename () =0;
-
/**
- * Change the window title.
+ * Get the file name chosen by the user. Valid after an [OK]
*/
- virtual void change_title(const Glib::ustring& title) =0;
+ Glib::ustring getFilename ();
+
+ virtual Glib::ustring getCurrentDirectory() = 0;
+protected:
+
+ /**
+ * Filename that was given
+ */
+ Glib::ustring myFilename;
+
/**
- * Change the default save path location.
+ * List of known file extensions.
*/
- virtual void change_path(const Glib::ustring& path) =0;
+ std::set<Glib::ustring> knownExtensions;
+
+
+ void appendExtension(Glib::ustring& path, Inkscape::Extension::Output* outputExtension);
}; //FileSaveDialog
* @param key a list of file types from which the user can select
*/
static FileExportDialog *create(Gtk::Window& parentWindow,
- const Glib::ustring &path,
+ const Glib::ustring &path,
FileDialogType fileTypes,
- const Glib::ustring &title,
+ const char *title,
const Glib::ustring &default_key);
}; //FileExportDialog
-/**
- * This class provides an implementation-independent API for
- * file "ExportToOCAL" dialogs.
- */
-class FileExportToOCALDialog
-{
-public:
-
- /**
- * Constructor. Do not call directly . Use the factory.
- * @param fileTypes one of FileDialogTypes
- * @param title the title of the dialog
- * @param key a list of file types from which the user can select
- */
- FileExportToOCALDialog ()
- {};
-
- /**
- * Factory.
- * @param fileTypes one of FileDialogTypes
- * @param title the title of the dialog
- * @param key a list of file types from which the user can select
- */
- static FileExportToOCALDialog *create(Gtk::Window& parentWindow,
- FileDialogType fileTypes,
- const Glib::ustring &title,
- const Glib::ustring &default_key);
-
-
- /**
- * Destructor.
- * Perform any necessary cleanups.
- */
- virtual ~FileExportToOCALDialog() {};
-
-
- /**
- * Show an SaveAs file selector.
- * @return the selected path if user selected one, else NULL
- */
- virtual bool show() =0;
-
- /**
- * Return the 'key' (filetype) of the selection, if any
- * @return a pointer to a string if successful (which must
- * be later freed with g_free(), else NULL.
- */
- virtual Inkscape::Extension::Extension * getSelectionType() = 0;
-
- virtual void setSelectionType( Inkscape::Extension::Extension * key ) = 0;
-
- virtual Glib::ustring getFilename () =0;
-
- /**
- * Change the window title.
- */
- virtual void change_title(const Glib::ustring& title) =0;
-
-
-}; //FileExportToOCAL
-
-
-/**
- * This class provides an implementation-independent API for
- * file "ImportFromOCAL" dialogs.
- */
-class FileImportFromOCALDialog
-{
-public:
-
-
- /**
- * Constructor .. do not call directly
- * @param path the directory where to start searching
- * @param fileTypes one of FileDialogTypes
- * @param title the title of the dialog
- */
- FileImportFromOCALDialog()
- {};
-
- /**
- * Factory.
- * @param path the directory where to start searching
- * @param fileTypes one of FileDialogTypes
- * @param title the title of the dialog
- */
- static FileImportFromOCALDialog *create(Gtk::Window& parentWindow,
- const Glib::ustring &path,
- FileDialogType fileTypes,
- const Glib::ustring &title);
-
-
- /**
- * Destructor.
- * Perform any necessary cleanups.
- */
- virtual ~FileImportFromOCALDialog() {};
-
- /**
- * Show an OpenFile file selector.
- * @return the selected path if user selected one, else NULL
- */
- virtual bool show() =0;
-
- /**
- * Return the 'key' (filetype) of the selection, if any
- * @return a pointer to a string if successful (which must
- * be later freed with g_free(), else NULL.
- */
- virtual Inkscape::Extension::Extension * getSelectionType() = 0;
-
- virtual Glib::ustring getFilename () =0;
-
-}; //FileImportFromOCALDialog
-
-
} //namespace Dialog
} //namespace UI
} //namespace Inkscape