Code

patch 1750206 by Bruno Dilly - bdilly
[inkscape.git] / src / ui / dialog / filedialog.cpp
index 1ab500863250a2267019703959448a3521db4df9..08c0d411615c801106332b5a31816862a84cb491 100644 (file)
@@ -34,6 +34,9 @@
 //Another hack
 #include <gtk/gtkentry.h>
 #include <gtk/gtkexpander.h>
+#ifdef WITH_GNOME_VFS
+# include <libgnomevfs/gnome-vfs-init.h>  // gnome_vfs_initialized
+#endif
 
 
 
@@ -821,12 +824,14 @@ void FileDialogBase::_updatePreviewCallback()
     Glib::ustring fileName = get_preview_filename();
 
 #ifdef WITH_GNOME_VFS
-    if (fileName.length() < 1)
+    if ( fileName.empty() && gnome_vfs_initialized() ) {
         fileName = get_preview_uri();
+    }
 #endif
 
-    if (fileName.length() < 1)
+    if (fileName.empty()) {
         return;
+    }
 
     svgPreview.set(fileName, dialogType);
 }
@@ -889,11 +894,10 @@ private:
 
 void FileOpenDialogImpl::createFilterMenu()
 {
-    //patterns added dynamically below
-    Gtk::FileFilter allImageFilter;
-    allImageFilter.set_name(_("All Images"));
-    extensionMap[Glib::ustring(_("All Images"))]=NULL;
-    add_filter(allImageFilter);
+    Gtk::FileFilter allInkscapeFilter;
+    allInkscapeFilter.set_name(_("All Inkscape Files"));
+    extensionMap[Glib::ustring(_("All Inkscape Files"))]=NULL;
+    add_filter(allInkscapeFilter);
 
     Gtk::FileFilter allFilter;
     allFilter.set_name(_("All Files"));
@@ -901,12 +905,12 @@ void FileOpenDialogImpl::createFilterMenu()
     allFilter.add_pattern("*");
     add_filter(allFilter);
 
-    //patterns added dynamically below
-    Gtk::FileFilter allInkscapeFilter;
-    allInkscapeFilter.set_name(_("All Inkscape Files"));
-    extensionMap[Glib::ustring(_("All Inkscape Files"))]=NULL;
-    add_filter(allInkscapeFilter);
+    Gtk::FileFilter allImageFilter;
+    allImageFilter.set_name(_("All Images"));
+    extensionMap[Glib::ustring(_("All Images"))]=NULL;
+    add_filter(allImageFilter);
 
+    //patterns added dynamically below
     Inkscape::Extension::DB::InputList extension_list;
     Inkscape::Extension::db.get_input_list(extension_list);
 
@@ -955,7 +959,9 @@ FileOpenDialogImpl::FileOpenDialogImpl(const Glib::ustring &dir,
     set_select_multiple(true);
 
 #ifdef WITH_GNOME_VFS
-    set_local_only(false);
+    if (gnome_vfs_initialized()) {
+        set_local_only(false);
+    }
 #endif
 
     /* Initalize to Autodetect */
@@ -1047,7 +1053,7 @@ FileOpenDialogImpl::show()
             }
         myFilename = get_filename();
 #ifdef WITH_GNOME_VFS
-        if (myFilename.length() < 1)
+        if (myFilename.empty() && gnome_vfs_initialized())
             myFilename = get_uri();
 #endif
         cleanup( true );
@@ -1090,7 +1096,7 @@ std::vector<Glib::ustring>FileOpenDialogImpl::getFilenames()
 {    
     std::vector<Glib::ustring> result = get_filenames();
 #ifdef WITH_GNOME_VFS
-    if (result.empty())
+    if (result.empty() && gnome_vfs_initialized())
         result = get_uris();
 #endif
     return result;
@@ -1311,7 +1317,9 @@ FileSaveDialogImpl::FileSaveDialogImpl(const Glib::ustring &dir,
     set_select_multiple(false);
 
 #ifdef WITH_GNOME_VFS
-    set_local_only(false);
+    if (gnome_vfs_initialized()) {
+        set_local_only(false);
+    }
 #endif
 
     /* Initalize to Autodetect */
@@ -1464,18 +1472,16 @@ FileSaveDialogImpl::getSelectionType()
 
 void FileSaveDialogImpl::setSelectionType( Inkscape::Extension::Extension * key )
 {
-    extension = key;
-
     // If no pointer to extension is passed in, look up based on filename extension.
-    if ( !extension ) {
+    if ( !key ) {
         // Not quite UTF-8 here.
         gchar *filenameLower = g_ascii_strdown(myFilename.c_str(), -1);
-        for ( int i = 0; !extension && (i < (int)fileTypes.size()); i++ ) {
+        for ( int i = 0; !key && (i < (int)fileTypes.size()); i++ ) {
             Inkscape::Extension::Output *ext = dynamic_cast<Inkscape::Extension::Output*>(fileTypes[i].extension);
             if ( ext && ext->get_extension() ) {
                 gchar *extensionLower = g_ascii_strdown( ext->get_extension(), -1 );
                 if ( g_str_has_suffix(filenameLower, extensionLower) ) {
-                    extension = fileTypes[i].extension;
+                    key = fileTypes[i].extension;
                 }
                 g_free(extensionLower);
             }
@@ -1484,7 +1490,8 @@ void FileSaveDialogImpl::setSelectionType( Inkscape::Extension::Extension * key
     }
 
     // Ensure the proper entry in the combo box is selected.
-    if ( extension ) {
+    if ( key ) {
+        extension = key;
         gchar const * extensionID = extension->get_id();
         if ( extensionID ) {
             for ( int i = 0; i < (int)fileTypes.size(); i++ ) {
@@ -1558,7 +1565,7 @@ void FileSaveDialogImpl::updateNameAndExtension()
     // Pick up any changes the user has typed in.
     Glib::ustring tmp = get_filename();
 #ifdef WITH_GNOME_VFS
-    if ( tmp.empty() ) {
+    if ( tmp.empty() && gnome_vfs_initialized() ) {
         tmp = get_uri();
     }
 #endif
@@ -1933,7 +1940,9 @@ FileExportDialogImpl::FileExportDialogImpl(const Glib::ustring &dir,
     set_select_multiple(false);
 
 #ifdef WITH_GNOME_VFS
-    set_local_only(false);
+    if (gnome_vfs_initialized()) {
+        set_local_only(false);
+    }
 #endif
 
     /* Initalize to Autodetect */
@@ -2142,8 +2151,9 @@ FileExportDialogImpl::show()
             }
         myFilename = get_filename();
 #ifdef WITH_GNOME_VFS
-        if (myFilename.length() < 1)
+        if ( myFilename.empty() && gnome_vfs_initialized() ) {
             myFilename = get_uri();
+        }
 #endif
 
         /*