[glom] ImageGlom: Use G_FILE_ATTRIBUTE_STANDARD_ICON



commit 7e5226bd5c2efa3a730a0acb2d173e13a0fb993d
Author: Murray Cumming <murrayc murrayc com>
Date:   Thu Jul 14 12:51:50 2011 +0200

    ImageGlom: Use G_FILE_ATTRIBUTE_STANDARD_ICON
    
    * glom/utility_widgets/imageglom.cc: If G_FILE_ATTRIBUTE_THUMBNAIL_PATH
    doesn't work, use the standard icon. This does seem to work.

 ChangeLog                         |    7 +++++++
 glom/utility_widgets/imageglom.cc |   28 +++++++++++++++++++++-------
 2 files changed, 28 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 93edbdc..0a6bd88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2011-07-14  Murray Cumming  <murrayc murrayc com>
 
+	ImageGlom: Use G_FILE_ATTRIBUTE_STANDARD_ICON
+
+	* glom/utility_widgets/imageglom.cc: If G_FILE_ATTRIBUTE_THUMBNAIL_PATH 
+	doesn't work, use the standard icon. This does seem to work. 
+
+2011-07-14  Murray Cumming  <murrayc murrayc com>
+
 	ImageGlom: Try to use G_FILE_ATTRIBUTE_THUMBNAIL_PATH for other file types.
 
 	* glom/utility_widgets/imageglom.[h|cc]: show_image_data():
diff --git a/glom/utility_widgets/imageglom.cc b/glom/utility_widgets/imageglom.cc
index 625e76a..36a5e12 100644
--- a/glom/utility_widgets/imageglom.cc
+++ b/glom/utility_widgets/imageglom.cc
@@ -354,6 +354,8 @@ void ImageGlom::show_image_data()
     gtk_widget_hide(GTK_WIDGET(m_ev_view));  
     m_image.show();
     m_frame.add(m_image);
+    
+    Glib::RefPtr<const Gio::Icon> icon;
       
     bool use_gdkpixbuf = false;
     fill_gdkpixbuf_supported_mime_types();
@@ -389,7 +391,8 @@ void ImageGlom::show_image_data()
         {
           file_info = file->query_info(
             G_FILE_ATTRIBUTE_THUMBNAIL_PATH ","
-            G_FILE_ATTRIBUTE_THUMBNAILING_FAILED);
+            G_FILE_ATTRIBUTE_THUMBNAILING_FAILED ","
+            G_FILE_ATTRIBUTE_STANDARD_ICON);
         }
         catch(const Glib::Error& ex)
         {
@@ -402,14 +405,19 @@ void ImageGlom::show_image_data()
             file_info->get_attribute_byte_string(G_FILE_ATTRIBUTE_THUMBNAIL_PATH);
           const bool failed = 
             file_info->get_attribute_boolean(G_FILE_ATTRIBUTE_THUMBNAILING_FAILED);
-          if(filepath.empty())
-          {
-            std::cerr << G_STRFUNC << ": Could not get attribute G_FILE_ATTRIBUTE_THUMBNAIL_PATH. failed=" << failed << std::endl;
-          }
+          if(!filepath.empty())
+            m_pixbuf_original = Gdk::Pixbuf::create_from_file(filepath);
           else
           {
-            //std::cout << "DEBUGDEBUG: filepath=" << filepath << std::endl;
-            m_pixbuf_original = Gdk::Pixbuf::create_from_file(filepath);
+            std::cerr << G_STRFUNC << ": Could not get attribute G_FILE_ATTRIBUTE_THUMBNAIL_PATH. failed=" << failed << std::endl;
+            
+            //Use the standard icon instead:
+            icon = file_info->get_icon();
+            if(!icon)
+            {
+               std::cerr << G_STRFUNC << ": Could not get G_FILE_ATTRIBUTE_STANDARD_ICON" << std::endl;
+            }
+            
           }
         }
       }
@@ -420,8 +428,14 @@ void ImageGlom::show_image_data()
       Glib::RefPtr<Gdk::Pixbuf> pixbuf_scaled = get_scaled_image();
       m_image.set(pixbuf_scaled);
     }
+    else if(icon)
+    {
+      m_image.set(icon, Gtk::ICON_SIZE_DIALOG);
+    }
     else
+    {
       m_image.set(Gtk::Stock::MISSING_IMAGE, Gtk::ICON_SIZE_DIALOG);
+    }
   }
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]