JsRender/Gtk.vala.c
[app.Builder.js] / Builder4 / ClutterFiles.vala
index aa77a54..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;
@@ -264,7 +266,7 @@ public class Xcls_ClutterFiles : Object
     }
     public class Xcls_image : Object 
     {
-        public Clutter.Image el;
+        public Clutter.Actor el;
         private Xcls_ClutterFiles  _this;
 
 
@@ -274,24 +276,51 @@ public class Xcls_ClutterFiles : Object
         public Xcls_image(Xcls_ClutterFiles _owner , JsRender.JsRender file)
         {
             _this = _owner;
-            this.el = new Clutter.Image();
+            this.el = new Clutter.Actor();
 
             // my vars (dec)
 
             // set gobject values
+            this.el.margin_right = 5f;
+            this.el.margin_left = 5f;
+            this.el.x_align = Clutter.ActorAlign.START;
+            this.el.x_expand = true;
+            this.el.y_align = Clutter.ActorAlign.START;
+            this.el.margin_top = 5f;
+            this.el.y_expand = true;
 
             // init method 
 
             {
-                var pixbuf = new Gdk.Pixbuf.from_file(file.getIconFileName(true));
-                this.el.set_data(pixbuf.get_pixels(),   
-                                    pixbuf.has_alpha ()
+                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 
                                       ? Cogl.PixelFormat.RGBA_8888
                                       : Cogl.PixelFormat.RGB_888,
                                     pixbuf.get_width (),
                         pixbuf.get_height (),
                                     pixbuf.get_rowstride ()
                 );
+                this.el.set_content(img);
+                 // should probably do smarter scaling...
+                
+                
+                this.el.set_size(90, 70);
             }        }
 
         // user defined functions