index 2f0bdfb8c8a4dae20cd142cd16112d981ad06bff..b73955b466c0d1d4f438919ab323388fc953c4a4 100644 (file)
*
* Authors:
* Bob Jamison <rwjj@earthlink.net>
+ * Joel Holdsworth
* Inkscape Guys
*
- * Copyright (C) 2004-2006, Inkscape Authors
+ * Copyright (C) 2006 Johan Engelen <johan@shouraizou.nl>
+ * 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>
-
-
-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;
+ /**
+ * Get the file name chosen by the user. Valid after an [OK]
+ */
+ 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
{
public:
+ typedef enum
+ {
+ SCOPE_DOCUMENT,
+ SCOPE_PAGE,
+ SCOPE_SELECTION,
+ SCOPE_CUSTOM
+ } ScopeType;
+
/**
* Constructor. Do not call directly . Use the factory.
* @param path the directory where to start searching
* @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);
*/
virtual Inkscape::Extension::Extension * getSelectionType() = 0;
+ /**
+ * 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
+ */
+ 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 double getSourceHeight() = 0;
+ /**
+ * Return the units of the coordinates of exported region
+ */
+ virtual Glib::ustring getSourceUnits() = 0;
-}; //FileSaveDialog
+ /**
+ * Return the width of the destination document
+ */
+ virtual double getDestinationWidth() = 0;
+
+ /**
+ * Return the height of the destination document
+ */
+ virtual double getDestinationHeight() = 0;
+
+ /**
+ * Return the height of the exported region
+ */
+ virtual Glib::ustring getDestinationUnits() = 0;
+
+ /**
+ * Return the destination DPI image resulution, if bitmap
+ */
+ virtual double getDestinationDPI() = 0;
+
+ /**
+ * Return whether we should use Cairo for rendering
+ */
+ virtual bool getUseCairo() = 0;
+
+ /**
+ * Return whether we should use antialiasing
+ */
+ virtual bool getUseAntialias() = 0;
+
+ /**
+ * Return the background color for exporting
+ */
+ virtual unsigned long getBackground() = 0;
+
+
+
+}; //FileExportDialog
} //namespace Dialog