index daefc9387c9c9ac74dca442a5be9fb6f4c3ec410..a3d5c0ea9133a59f45017878abd459373d7b3fdc 100644 (file)
#include <glibmm.h>
#include <vector>
+#include <set>
+#include <gtkmm.h>
-
-
-class Inkscape::Extension::Extension;
-
+namespace Inkscape {
+namespace Extension {
+class Extension;
+class Output;
+}
+}
namespace Inkscape
{
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
* @param fileTypes one of FileDialogTypes
* @param title the title of the dialog
*/
- static FileOpenDialog *create(const Glib::ustring &path,
+ 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 title the title of the dialog
* @param key a list of file types from which the user can select
*/
- static FileSaveDialog *create(const Glib::ustring &path,
+ static FileSaveDialog *create(Gtk::Window& parentWindow,
+ const Glib::ustring &path,
FileDialogType fileTypes,
- const Glib::ustring &title,
+ const char *title,
const Glib::ustring &default_key);
*/
virtual Inkscape::Extension::Extension * getSelectionType() = 0;
- virtual Glib::ustring getFilename () =0;
+ virtual void setSelectionType( Inkscape::Extension::Extension * key ) = 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;
+
+ /**
+ * List of known file extensions.
+ */
+ std::set<Glib::ustring> knownExtensions;
+
+ void appendExtension(Glib::ustring& path, Inkscape::Extension::Output* outputExtension);
}; //FileSaveDialog
* @param title the title of the dialog
* @param key a list of file types from which the user can select
*/
- static FileExportDialog *create(const Glib::ustring &path,
+ static FileExportDialog *create(Gtk::Window& parentWindow,
+ const Glib::ustring &path,
FileDialogType fileTypes,
- const Glib::ustring &title,
+ const char *title,
const Glib::ustring &default_key);