index 8551b0eb29379c75c8a8f0583dd708d98eba38b9..eda8c4eb48c06295078a79c02bb869a82948fd4d 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
* @param fileTypes one of FileDialogTypes
* @param title the title of the dialog
*/
- static FileOpenDialog *create(Gtk::Window& parentWindow,
+ 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;
+ Glib::ustring getFilename();
- virtual std::vector<Glib::ustring> getFilenames () = 0;
+ 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(Gtk::Window& parentWindow,
- const Glib::ustring &path,
+ static FileSaveDialog *create(Gtk::Window& parentWindow,
+ const Glib::ustring &path,
FileDialogType fileTypes,
- const Glib::ustring &title,
- const Glib::ustring &default_key);
+ const char *title,
+ const Glib::ustring &default_key,
+ const gchar *docTitle);
/**
virtual void setSelectionType( Inkscape::Extension::Extension * key ) = 0;
- virtual Glib::ustring getFilename () =0;
+ /**
+ * Get the file name chosen by the user. Valid after an [OK]
+ */
+ Glib::ustring getFilename ();
/**
- * Change the window title.
+ * Get the document title chosen by the user. Valid after an [OK]
*/
- virtual void change_title(const Glib::ustring& title) =0;
+ Glib::ustring getDocTitle ();
+
+ virtual Glib::ustring getCurrentDirectory() = 0;
+
+protected:
+
+ /**
+ * Filename that was given
+ */
+ Glib::ustring myFilename;
+
+ /**
+ * Doc Title that was given
+ */
+ Glib::ustring myDocTitle;
/**
- * 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 title the title of the dialog
* @param key a list of file types from which the user can select
*/
- static FileExportDialog *create(Gtk::Window& parentWindow,
- 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);
* Return the selected filename, if any. If not, return ""
*/
virtual Glib::ustring getFilename () =0;
-
+
/**
* Return the scope of the export. One of the enumerated types
- * in ScopeType
+ * in ScopeType
*/
virtual ScopeType getScope() = 0;
-
+
/**
* Return left side of the exported region
*/
virtual double getSourceX() = 0;
-
+
/**
* Return the top of the exported region
*/
virtual double getSourceY() = 0;
-
+
/**
* Return the width of the exported region
*/
virtual double getSourceWidth() = 0;
-
+
/**
* Return the height of the exported region
*/
*/
virtual unsigned long getBackground() = 0;
-
+
}; //FileExportDialog