JsRender/Gtk.vala.c
[app.Builder.js] / Builder4 / ClutterFiles.vala
index 73eefab..aa1a69f 100644 (file)
@@ -17,6 +17,7 @@ public class Xcls_ClutterFiles : Object
 
         // my vars (def)
     public Gee.ArrayList<Xcls_fileitem> fileitems;
+    public Gdk.Pixbuf missing_thumb_pixbuf;
     public signal void open (JsRender.JsRender file);
 
     // ctor 
@@ -26,6 +27,7 @@ public class Xcls_ClutterFiles : Object
         this.el = new Clutter.ScrollActor();
 
         // my vars (dec)
+        this.missing_thumb_pixbuf = null;
 
         // set gobject values
         this.el.scroll_mode = Clutter.ScrollMode.VERTICALLY;
@@ -290,7 +292,21 @@ public class Xcls_ClutterFiles : Object
             // init method 
 
             {
-                var pixbuf = new Gdk.Pixbuf.from_file(file.getIconFileName(true));
+                Gdk.Pixbuf pixbuf;
+                var fname = file.getIconFileName(false);
+            
+                if (FileUtils.test(fname, FileTest.EXISTS)) {
+                    pixbuf = new Gdk.Pixbuf.from_file(fname);
+                } else {
+                    if (_this.missing_thumb_pixbuf == null) {
+                            var     icon_theme = Gtk.IconTheme.get_default ();
+                            _this.missing_thumb_pixbuf = icon_theme.load_icon ("package-x-generic", 92, 0);
+                            _this.missing_thumb_pixbuf.ref();
+                        }
+                        pixbuf = _this.missing_thumb_pixbuf;
+            
+                }
+            
                 var img = new Clutter.Image();
                 img.set_data(pixbuf.get_pixels(),   
                                     pixbuf.has_alpha 
@@ -301,10 +317,10 @@ public class Xcls_ClutterFiles : Object
                                     pixbuf.get_rowstride ()
                 );
                 this.el.set_content(img);
+                 // should probably do smarter scaling...
                 
                 
-                
-                this.el.set_size(80, 80.0f);
+                this.el.set_size(90, 70);
             }        }
 
         // user defined functions