X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fdialog%2Ffiledialog.h;h=b73955b466c0d1d4f438919ab323388fc953c4a4;hb=2ac3daad6d54543f35505d043b98e25c540bd6e6;hp=5499603d3926a5481108a34cd907cb39a6f6606c;hpb=08be22f20985e3183bec96c9fb5e74d502f99e0b;p=inkscape.git diff --git a/src/ui/dialog/filedialog.h b/src/ui/dialog/filedialog.h index 5499603d3..b73955b46 100644 --- a/src/ui/dialog/filedialog.h +++ b/src/ui/dialog/filedialog.h @@ -6,21 +6,27 @@ * * Authors: * Bob Jamison + * Joel Holdsworth * Inkscape Guys * * Copyright (C) 2006 Johan Engelen - * 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 #include +#include +#include - - -class Inkscape::Extension::Extension; - +namespace Inkscape { +namespace Extension { +class Extension; +class Output; +} +} namespace Inkscape { @@ -29,7 +35,6 @@ namespace UI namespace Dialog { - /** * Used for setting filters and options, and * reading them back from user selections. @@ -48,12 +53,17 @@ typedef enum { 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 @@ -82,7 +92,7 @@ public: static FileOpenDialog *create(Gtk::Window& parentWindow, const Glib::ustring &path, FileDialogType fileTypes, - const Glib::ustring &title); + const char *title); /** @@ -95,7 +105,7 @@ public: * 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 @@ -104,10 +114,18 @@ public: */ virtual Inkscape::Extension::Extension * getSelectionType() = 0; - virtual Glib::ustring getFilename () =0; - - virtual std::vector getFilenames () = 0; + Glib::ustring getFilename(); + virtual std::vector getFilenames() = 0; + + virtual Glib::ustring getCurrentDirectory() = 0; + +protected: + /** + * Filename that was given + */ + Glib::ustring myFilename; + }; //FileOpenDialog @@ -141,9 +159,9 @@ public: * @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); @@ -169,17 +187,27 @@ public: 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 knownExtensions; + + + void appendExtension(Glib::ustring& path, Inkscape::Extension::Output* outputExtension); }; //FileSaveDialog @@ -221,9 +249,9 @@ public: * @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);