/** @file * @brief Implementation of the file dialog interfaces defined in filedialog.h */ /* Authors: * Bob Jamison * Joel Holdsworth * Other dudes from The Inkscape Organization * * Copyright (C) 2004-2007 Bob Jamison * Copyright (C) 2006 Johan Engelen * Copyright (C) 2007-2008 Joel Holdsworth * Copyright (C) 2004-2008 The Inkscape Organization * * Released under GNU GPL, read the file 'COPYING' for more information */ #include "filedialog.h" #include "filedialogimpl-gtkmm.h" #include "filedialogimpl-win32.h" #include "gc-core.h" #include namespace Inkscape { namespace UI { namespace Dialog { /*######################################################################### ### U T I L I T Y #########################################################################*/ bool hasSuffix(const Glib::ustring &str, const Glib::ustring &ext) { int strLen = str.length(); int extLen = ext.length(); if (extLen > strLen) return false; int strpos = strLen-1; for (int extpos = extLen-1 ; extpos>=0 ; extpos--, strpos--) { Glib::ustring::value_type ch = str[strpos]; if (ch != ext[extpos]) { if ( ((ch & 0xff80) != 0) || static_cast( g_ascii_tolower( static_cast(0x07f & ch) ) ) != ext[extpos] ) { return false; } } } return true; } bool isValidImageFile(const Glib::ustring &fileName) { std::vectorformats = Gdk::Pixbuf::get_formats(); for (unsigned int i=0; iextensions = format.get_extensions(); for (unsigned int j=0; jget_extension() ).casefold() && ( knownExtensions.find(foldedTrail) != knownExtensions.end() ) ) ) { utf8Name = utf8Name.erase( pos ); } else { appendExtension = false; } } if (appendExtension) { utf8Name = utf8Name + outputExtension->get_extension(); myFilename = Glib::filename_from_utf8( utf8Name ); } } catch ( Glib::ConvertError& e ) { // ignore } } //######################################################################## //# F I L E E X P O R T //######################################################################## #ifdef NEW_EXPORT_DIALOG /** * Public factory method. Used in file.cpp */ FileExportDialog *FileExportDialog::create(Gtk::Window& parentWindow, const Glib::ustring &path, FileDialogType fileTypes, const char *title, const Glib::ustring &default_key) { FileExportDialog *dialog = new FileExportDialogImpl(parentWindow, path, fileTypes, title, default_key); return dialog; } #endif // NEW_EXPORT_DIALOG } //namespace Dialog } //namespace UI } //namespace Inkscape /* Local Variables: mode:c++ c-file-style:"stroustrup" c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) indent-tabs-mode:nil fill-column:99 End: */ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :