Changed src/Builder4/PopoverAddObject.bjssrc/Builder4/PopoverAddObject.vala
authorAlan <alan@roojs.com>
Mon, 6 Jun 2022 05:18:51 +0000 (13:18 +0800)
committerAlan <alan@roojs.com>
Mon, 6 Jun 2022 05:18:51 +0000 (13:18 +0800)
src/Builder4/PopoverAddObject.bjs
src/Builder4/PopoverAddObject.vala

index 1f56151..8f7296a 100644 (file)
@@ -64,7 +64,7 @@
        "* pack" : "add",
        "items" : [
         {
-         "$ columns" : "typeof(string),typeof(string)",
+         "$ columns" : "typeof(string),typeof(string),typeof(Gdk.Pixbuf)",
          "$ xns" : "Gtk",
          "* pack" : "set_model",
          "id" : "model",
         {
          "$ xns" : "Gtk",
          "* init" : [
-          " this.el.add_attribute(_this.txtrender.el , \"markup\",  1 );",
-          " ",
+          "this.el.add_attribute(_this.txtrender.el , \"markup\",  1 );",
+          "this.el.add_attribute(_this.iconrender.el , \"pixbuf\",  2 );",
           ""
          ],
          "* pack" : "append_column",
          "items" : [
+          {
+           "$ xns" : "Gtk",
+           "* pack" : "pack_start,true",
+           "id" : "iconrenderer",
+           "xtype" : "CellRendererPixbuf"
+          },
           {
            "$ xns" : "Gtk",
            "* pack" : "pack_start,true",
     "",
     "",
     "    Gtk.TreeIter citer;",
+    "    var ic = Gtk.IconTheme.get_default();",
+    "\tvar pixdef = ic.load_icon(\"emblem-new\", 32,0);",
     "",
     "    for(var i =0 ; i < tr.length; i++) {",
     "         this.model.el.append(out citer);   ",
     "         var dname = tr[i];",
+    "         var cls = dname;",
     "         if (dname.contains(\":\")) {",
     "\t\t\tvar ar = dname.split(\":\");",
     "\t\t\tdname = \"<b>\" + ar[1] +\"</b> - <i>\"+ar[0]+\"</i>\";",
+    "\t\t\tcls = ar[1]; /// possibly?",
     "\t\t}",
     "         ",
     "        this.model.el.set_value(citer, 0,   tr[i] ); // used data. ",
     "        this.model.el.set_value(citer, 1,   dname ); // displayed value.",
     "        ",
+    "        var clsb = cls.split(\".\");",
+    "        var sub = clsb.length > 1 ? clsb[1].down()  : \"\";",
+    "        ",
+    "        var pix = pixdef;",
+    "        var fn = \"/usr/share/glade/pixmaps/hicolor/22x22/actions/widget-gtk-\" + sub;",
+    "        if (FileUtils.test (fn, FileTest.IS_REGULAR)) {",
+    "\t        pix = Gdk.Pixbuf.from_file (fn)",
+    "        }",
+    "        ",
+    "        ",
+    "        this.model.el.set_value(citer, 2,   pix );",
+    "        ",
+    "        ",
     "    }",
     "    this.model.el.set_sort_column_id(1,Gtk.SortType.ASCENDING);",
     "    ",
index 9ebadf5..2ec7d57 100644 (file)
@@ -13,6 +13,7 @@ public class Xcls_PopoverAddObject : Object
         return _PopoverAddObject;
     }
     public Xcls_model model;
+    public Xcls_iconrenderer iconrenderer;
     public Xcls_txtrender txtrender;
 
         // my vars (def)
@@ -54,18 +55,35 @@ public class Xcls_PopoverAddObject : Object
     
     
         Gtk.TreeIter citer;
+        var ic = Gtk.IconTheme.get_default();
+       var pixdef = ic.load_icon("emblem-new", 32,0);
     
         for(var i =0 ; i < tr.length; i++) {
              this.model.el.append(out citer);   
              var dname = tr[i];
+             var cls = dname;
              if (dname.contains(":")) {
                        var ar = dname.split(":");
                        dname = "<b>" + ar[1] +"</b> - <i>"+ar[0]+"</i>";
+                       cls = ar[1]; /// possibly?
                }
              
             this.model.el.set_value(citer, 0,   tr[i] ); // used data. 
             this.model.el.set_value(citer, 1,   dname ); // displayed value.
             
+            var clsb = cls.split(".");
+            var sub = clsb.length > 1 ? clsb[1].down()  : "";
+            
+            var pix = pixdef;
+            var fn = "/usr/share/glade/pixmaps/hicolor/22x22/actions/widget-gtk-" + sub;
+            if (FileUtils.test (fn, FileTest.IS_REGULAR)) {
+               pix = Gdk.Pixbuf.from_file (fn)
+            }
+            
+            
+            this.model.el.set_value(citer, 2,   pix );
+            
+            
         }
         this.model.el.set_sort_column_id(1,Gtk.SortType.ASCENDING);
         
@@ -268,7 +286,7 @@ public class Xcls_PopoverAddObject : Object
         {
             _this = _owner;
             _this.model = this;
-            this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) );
+            this.el = new Gtk.ListStore( 2, typeof(string),typeof(string),typeof(Gdk.Pixbuf) );
 
             // my vars (dec)
 
@@ -302,17 +320,44 @@ public class Xcls_PopoverAddObject : Object
 
             // set gobject values
             this.el.title = "Drag to add Object";
-            var child_0 = new Xcls_txtrender( _this );
+            var child_0 = new Xcls_iconrenderer( _this );
             child_0.ref();
             this.el.pack_start (  child_0.el , true );
+            var child_1 = new Xcls_txtrender( _this );
+            child_1.ref();
+            this.el.pack_start (  child_1.el , true );
 
             // init method
 
             this.el.add_attribute(_this.txtrender.el , "markup",  1 );
+            this.el.add_attribute(_this.iconrender.el , "pixbuf",  2 );
         }
 
         // user defined functions
     }
+    public class Xcls_iconrenderer : Object
+    {
+        public Gtk.CellRendererPixbuf el;
+        private Xcls_PopoverAddObject  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_iconrenderer(Xcls_PopoverAddObject _owner )
+        {
+            _this = _owner;
+            _this.iconrenderer = this;
+            this.el = new Gtk.CellRendererPixbuf();
+
+            // my vars (dec)
+
+            // set gobject values
+        }
+
+        // user defined functions
+    }
+
     public class Xcls_txtrender : Object
     {
         public Gtk.CellRendererText el;