src/Builder4/WindowLeftProps.bjs
authorAlan Knowles <alan@roojs.com>
Wed, 20 May 2015 11:17:05 +0000 (19:17 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 20 May 2015 11:17:05 +0000 (19:17 +0800)
src/Builder4/WindowLeftProps.vala

src/Builder4/WindowLeftProps.bjs
src/Builder4/WindowLeftProps.vala

index 0fea6c4..268d8e7 100644 (file)
@@ -13,7 +13,7 @@
    "id" : "LeftProps",
    "|              string keySortFormat" : "(string key) {\n    // listeners first - with 0\n    // specials\n    if (key[0] == '*') {\n        return \"1 \" + key;\n    }\n    // functions\n    \n    var bits = key.split(\" \");\n    \n    if (key[0] == '|') {\n        return \"2 \" + bits[bits.length -1];\n    }\n    // signals\n    if (key[0] == '@') {\n        return \"3 \" + bits[bits.length -1];\n    }\n        \n    // props\n    if (key[0] == '#') {\n        return \"4 \" + bits[bits.length -1];\n    }\n    // the rest..\n    return \"5 \" + bits[bits.length -1];    \n\n\n\n}",
    "|              void finish_editing" : "() {\n     // \n    this.before_edit();\n}",
-   "|              bool startEditingValue" : "( Gtk.TreePath path) {\n\n    // ONLY return true if editing is allowed - eg. combo..\n    \n            print(\"start editing?\\n\");\n            if (!this.stop_editor()) {\n                print(\"stop editor failed\\n\");\n                return false;\n            }\n            \n            Gtk.TreeIter iter;\n\n            var mod = this.model.el;\n            mod.get_iter (out iter, path);\n             \n            /*\n                m.set(iter, \n                        0, \"listener\",\n                        1, miter.get_key(),\n                        2, \"<b>\" + miter.get_key() + \"</b>\",\n                        3, miter.get_value()\n                    ); \n             \n            */\n            GLib.Value gval;\n            mod.get_value(iter, 3 , out gval);\n            var val = (string)gval;\n        \n            mod.get_value(iter, 1 , out gval);\n            var key = (string)gval;\n            \n            \n            string kname, kflag, ktype;\n            this.node.normalize_key(key, out kname, out kflag, out ktype);\n             \n            \n            mod.get_value(iter, 0 , out gval);\n            var type = (string)gval; // listerner or prop..\n            \n           \n            \n            var use_textarea = false;\n\n            //------------ things that require the text editor...\n            \n            if (type == \"listener\") {\n                use_textarea = true;\n            }\n            if (key.length > 0 && key[0] == '|') { // user defined method\n                use_textarea = true;\n            }\n            if (key.length > 0 && key[0] == '$') { // raw string\n                use_textarea = true;\n            }\n            if (key.length > 0 && key == \"* init\") {\n                use_textarea = true;\n            }\n            if (val.length > 40) { // long value...\n                use_textarea = true;\n            }\n            \n            \n            \n            if (use_textarea) {\n                print(\"Call show editor\\n\");\n                GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {\n                    this.view.el.get_selection().select_path(path);\n                    \n                    this.show_editor(file, node, type, key);\n                    \n                    return false;\n                });\n               \n                \n                return false;\n            }\n            \n             var pal = Palete.factory(this.file.project.xtype);\n            \n            string[] opts;\n            var has_opts = pal.typeOptions(this.node.fqn(), kname, ktype, out opts);\n            \n            \n            \n            // others... - fill in options for true/false?\n            print(\"turn on editing %s \\n\" , mod.get_path(iter).to_string());\n           \n               print (ktype.up());\n            if (has_opts) {\n                    print(\"start editing try/false)???\");\n                    this.valrender.el.has_entry = false;\n                  \n                    this.valrender.setOptions(opts);\n                    \n                    this.valrender.el.has_entry = false;\n                    this.valrender.el.editable = true;\n                     this.allow_edit  = true;\n                     GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {\n                         this.view.el.set_cursor_on_cell(\n                            path,\n                            this.valcol.el,\n                            this.valrender.el,\n                            true\n                        );\n                        return false;\n                    });\n                    return true;\n            }\n                                      \n               // see if type is a Enum.\n               \n               \n           \n                \n           \n             opts =  {  };\n            this.valrender.setOptions(opts);\n           \n           GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {\n                \n                // at this point - work out the type...\n                // if its' a combo... then show the options..\n                this.valrender.el.has_entry = true;\n                \n                this.valrender.el.editable = true;            \n            \n                \n                this.allow_edit  = true;\n                \n                \n                \n                \n\n                this.view.el.set_cursor_on_cell(\n                    path,\n                    this.valcol.el,\n                    this.valrender.el,\n                    true\n                );\n                return false;\n            });\n            return false;\n        }\n",
+   "|              bool startEditingValue" : "( Gtk.TreePath path) {\n\n     // ONLY return true if editing is allowed - eg. combo..\n\n    print(\"start editing?\\n\");\n    if (!this.stop_editor()) {\n        print(\"stop editor failed\\n\");\n        return false;\n    }\n    \n    Gtk.TreeIter iter;\n\n    var mod = this.model.el;\n    mod.get_iter (out iter, path);\n     \n    /*\n        m.set(iter, \n                0, \"listener\",\n                1, miter.get_key(),\n                2, \"<b>\" + miter.get_key() + \"</b>\",\n                3, miter.get_value()\n            ); \n     \n    */\n    GLib.Value gval;\n    mod.get_value(iter, 3 , out gval);\n    var val = (string)gval;\n\n    mod.get_value(iter, 1 , out gval);\n    var key = (string)gval;\n    \n    \n    string kname, kflag, ktype;\n    this.node.normalize_key(key, out kname, out kflag, out ktype);\n     \n    \n    mod.get_value(iter, 0 , out gval);\n    var type = (string)gval; // listerner or prop..\n    \n   \n    \n    var use_textarea = false;\n\n    //------------ things that require the text editor...\n    \n    if (type == \"listener\") {\n        use_textarea = true;\n    }\n    if (key.length > 0 && key[0] == '|') { // user defined method\n        use_textarea = true;\n    }\n    if (key.length > 0 && key[0] == '$') { // raw string\n        use_textarea = true;\n    }\n    if (key.length > 0 && key == \"* init\") {\n        use_textarea = true;\n    }\n    if (val.length > 40) { // long value...\n        use_textarea = true;\n    }\n    \n    \n    \n    if (use_textarea) {\n        print(\"Call show editor\\n\");\n        GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {\n            this.view.el.get_selection().select_path(path);\n            \n            this.show_editor(file, node, type, key);\n            \n            return false;\n        });\n       \n        \n        return false;\n    }\n    \n     var pal = Palete.factory(this.file.project.xtype);\n    \n    string[] opts;\n    var has_opts = pal.typeOptions(this.node.fqn(), kname, ktype, out opts);\n    \n    \n    \n    // others... - fill in options for true/false?\n    print(\"turn on editing %s \\n\" , mod.get_path(iter).to_string());\n   \n       print (ktype.up());\n    if (has_opts) {\n            print(\"start editing try/false)???\");\n            this.valrender.el.has_entry = false;\n          \n            this.valrender.setOptions(opts);\n            \n            this.valrender.el.has_entry = false;\n            this.valrender.el.editable = true;\n             this.allow_edit  = true;\n             GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {\n                 this.view.el.set_cursor_on_cell(\n                    path,\n                    this.valcol.el,\n                    this.valrender.el,\n                    true\n                );\n                return false;\n            });\n            return true;\n    }\n                              \n       // see if type is a Enum.\n       \n       \n   \n        \n   \n     opts =  {  };\n    this.valrender.setOptions(opts);\n   \n   GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {\n        \n        // at this point - work out the type...\n        // if its' a combo... then show the options..\n        this.valrender.el.has_entry = true;\n        \n        this.valrender.el.editable = true;            \n    \n        \n        this.allow_edit  = true;\n        \n        \n        \n        \n\n        this.view.el.set_cursor_on_cell(\n            path,\n            this.valcol.el,\n            this.valrender.el,\n            true\n        );\n        return false;\n    });\n    return false;\n}\n",
    "|              void load" : "(JsRender.JsRender file, JsRender.Node? node) \n{\n    print(\"load leftprops\\n\");\n    this.before_edit();\n    this.node = node;\n    this.file = file;\n    \n \n    this.model.el.clear();\n              \n    //this.get('/RightEditor').el.hide();\n    if (node ==null) {\n        return ;\n    }\n     \n    \n\n    //var provider = this.get('/LeftTree').getPaleteProvider();\n    Gtk.TreeIter iter;\n    \n    //typeof(string),  // 0 key type\n     //typeof(string),  // 1 key\n     //typeof(string),  // 2 key (display)\n     //typeof(string),  // 3 value\n     //typeof(string),  // 4 value (display)\n     //typeof(string),  // 5 both (tooltip)\n    \n    \n    \n    \n    // really need a way to sort the hashmap...\n    var m = this.model.el;\n    \n    var miter = node.listeners.map_iterator();\n    var i = 0;\n    \n    while(miter.next()) {\n        i++;\n        m.append(out iter,null);\n        \n        this.updateIter(iter,  \"listener\", miter.get_key(), miter.get_value());\n        \n         \n     }\n     \n      \n    miter = node.props.map_iterator();\n    \n    \n   while(miter.next()) {\n           i++;\n        m.append(out iter,null);\n         this.updateIter(iter,  \"prop\", miter.get_key(), miter.get_value());\n         \n   }\n   print(\"clear selection\\n\");\n   // clear selection?\n   this.model.el.set_sort_column_id(6,Gtk.SortType.ASCENDING); // sort by real key..\n   \n   this.view.el.get_selection().unselect_all();\n   \n   var pane = _this.main_window.editpane.el;\n    var try_size = (i * 25) + 60; // est. 20px per line + 40px header\n    \n    // max 80%...\n    pane.set_position( \n         ((try_size * 1.0f) /  (pane.max_position * 1.0f))  > 0.8f  ? \n        (int) (pane.max_position * 0.2f) :\n        pane.max_position-try_size);\n    \n   \n}\n",
    "xtype" : "Box",
    "|              string keyFormat" : "(string val, string type) {\n    \n    // Glib.markup_escape_text(val);\n\n    if (type == \"listener\") {\n        return \"<span font_weight=\\\"bold\\\" color=\\\"#660000\\\">\" + \n            GLib.Markup.escape_text(val) +\n             \"</span>\";\n    }\n    // property..\n    if (val.length < 1) {\n        return \"<span  color=\\\"#FF0000\\\">--empty--</span>\";\n    }\n    \n    //@ = signal\n    //$ = property with \n    //# - object properties\n    //* = special\n    // all of these... - display value is last element..\n    var ar = val.strip().split(\" \");\n    \n    \n    var dval = GLib.Markup.escape_text(ar[ar.length-1]);\n    \n    \n    \n    \n    switch(val[0]) {\n        case '@': // signal // just bold balck?\n            if (dval[0] == '@') {\n                dval = dval.substring(1);\n            }\n        \n            return @\"<span  font_weight=\\\"bold\\\">@ $dval</span>\";        \n        case '#': // object properties?\n            if (dval[0] == '#') {\n                dval = dval.substring(1);\n            }\n            return @\"<span  font_weight=\\\"bold\\\">$dval</span>\";\n        case '*': // special\n            if (dval[0] == '*') {\n                dval = dval.substring(1);\n            }\n            return @\"<span   color=\\\"#0000CC\\\" font_weight=\\\"bold\\\">$dval</span>\";            \n        case '$':\n            if (dval[0] == '$') {\n                dval = dval.substring(1);\n            }\n            return @\"<span   style=\\\"italic\\\">$dval</span>\";\n       case '|': // user defined methods\n            if (dval[0] == '|') {\n                dval = dval.substring(1);\n            }\n            return @\"<span color=\\\"#008000\\\" font_weight=\\\"bold\\\">$dval</span>\";\n            \n              \n            \n        default:\n            return dval;\n    }\n      \n    \n\n}",
index a79f91a..064924a 100644 (file)
@@ -104,138 +104,103 @@ public class Xcls_LeftProps : Object
     }
     public              bool startEditingValue ( Gtk.TreePath path) {
     
-        // ONLY return true if editing is allowed - eg. combo..
+         // ONLY return true if editing is allowed - eg. combo..
+    
+        print("start editing?\n");
+        if (!this.stop_editor()) {
+            print("stop editor failed\n");
+            return false;
+        }
         
-                print("start editing?\n");
-                if (!this.stop_editor()) {
-                    print("stop editor failed\n");
-                    return false;
-                }
-                
-                Gtk.TreeIter iter;
+        Gtk.TreeIter iter;
     
-                var mod = this.model.el;
-                mod.get_iter (out iter, path);
-                 
-                /*
-                    m.set(iter, 
-                            0, "listener",
-                            1, miter.get_key(),
-                            2, "<b>" + miter.get_key() + "</b>",
-                            3, miter.get_value()
-                        ); 
-                 
-                */
-                GLib.Value gval;
-                mod.get_value(iter, 3 , out gval);
-                var val = (string)gval;
-            
-                mod.get_value(iter, 1 , out gval);
-                var key = (string)gval;
-                
-                
-                string kname, kflag, ktype;
-                this.node.normalize_key(key, out kname, out kflag, out ktype);
-                 
-                
-                mod.get_value(iter, 0 , out gval);
-                var type = (string)gval; // listerner or prop..
-                
-               
-                
-                var use_textarea = false;
+        var mod = this.model.el;
+        mod.get_iter (out iter, path);
+         
+        /*
+            m.set(iter, 
+                    0, "listener",
+                    1, miter.get_key(),
+                    2, "<b>" + miter.get_key() + "</b>",
+                    3, miter.get_value()
+                ); 
+         
+        */
+        GLib.Value gval;
+        mod.get_value(iter, 3 , out gval);
+        var val = (string)gval;
     
-                //------------ things that require the text editor...
-                
-                if (type == "listener") {
-                    use_textarea = true;
-                }
-                if (key.length > 0 && key[0] == '|') { // user defined method
-                    use_textarea = true;
-                }
-                if (key.length > 0 && key[0] == '$') { // raw string
-                    use_textarea = true;
-                }
-                if (key.length > 0 && key == "* init") {
-                    use_textarea = true;
-                }
-                if (val.length > 40) { // long value...
-                    use_textarea = true;
-                }
-                
-                
-                
-                if (use_textarea) {
-                    print("Call show editor\n");
-                    GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
-                        this.view.el.get_selection().select_path(path);
-                        
-                        this.show_editor(file, node, type, key);
-                        
-                        return false;
-                    });
-                   
-                    
-                    return false;
-                }
-                
-                 var pal = Palete.factory(this.file.project.xtype);
-                
-                string[] opts;
-                var has_opts = pal.typeOptions(this.node.fqn(), kname, ktype, out opts);
-                
+        mod.get_value(iter, 1 , out gval);
+        var key = (string)gval;
+        
+        
+        string kname, kflag, ktype;
+        this.node.normalize_key(key, out kname, out kflag, out ktype);
+         
+        
+        mod.get_value(iter, 0 , out gval);
+        var type = (string)gval; // listerner or prop..
+        
+       
+        
+        var use_textarea = false;
+    
+        //------------ things that require the text editor...
+        
+        if (type == "listener") {
+            use_textarea = true;
+        }
+        if (key.length > 0 && key[0] == '|') { // user defined method
+            use_textarea = true;
+        }
+        if (key.length > 0 && key[0] == '$') { // raw string
+            use_textarea = true;
+        }
+        if (key.length > 0 && key == "* init") {
+            use_textarea = true;
+        }
+        if (val.length > 40) { // long value...
+            use_textarea = true;
+        }
+        
+        
+        
+        if (use_textarea) {
+            print("Call show editor\n");
+            GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
+                this.view.el.get_selection().select_path(path);
                 
+                this.show_editor(file, node, type, key);
                 
-                // others... - fill in options for true/false?
-                print("turn on editing %s \n" , mod.get_path(iter).to_string());
-               
-                   print (ktype.up());
-                if (has_opts) {
-                        print("start editing try/false)???");
-                        this.valrender.el.has_entry = false;
-                      
-                        this.valrender.setOptions(opts);
-                        
-                        this.valrender.el.has_entry = false;
-                        this.valrender.el.editable = true;
-                         this.allow_edit  = true;
-                         GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {
-                             this.view.el.set_cursor_on_cell(
-                                path,
-                                this.valcol.el,
-                                this.valrender.el,
-                                true
-                            );
-                            return false;
-                        });
-                        return true;
-                }
-                                          
-                   // see if type is a Enum.
-                   
-                   
-               
-                    
-               
-                 opts =  {  };
+                return false;
+            });
+           
+            
+            return false;
+        }
+        
+         var pal = Palete.factory(this.file.project.xtype);
+        
+        string[] opts;
+        var has_opts = pal.typeOptions(this.node.fqn(), kname, ktype, out opts);
+        
+        
+        
+        // others... - fill in options for true/false?
+        print("turn on editing %s \n" , mod.get_path(iter).to_string());
+       
+           print (ktype.up());
+        if (has_opts) {
+                print("start editing try/false)???");
+                this.valrender.el.has_entry = false;
+              
                 this.valrender.setOptions(opts);
-               
-               GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
-                    
-                    // at this point - work out the type...
-                    // if its' a combo... then show the options..
-                    this.valrender.el.has_entry = true;
-                    
-                    this.valrender.el.editable = true;            
                 
-                    
-                    this.allow_edit  = true;
-                    
-                    
-                    
-                    
-    
-                    this.view.el.set_cursor_on_cell(
+                this.valrender.el.has_entry = false;
+                this.valrender.el.editable = true;
+                 this.allow_edit  = true;
+                 GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {
+                     this.view.el.set_cursor_on_cell(
                         path,
                         this.valcol.el,
                         this.valrender.el,
@@ -243,8 +208,43 @@ public class Xcls_LeftProps : Object
                     );
                     return false;
                 });
-                return false;
-            }
+                return true;
+        }
+                                  
+           // see if type is a Enum.
+           
+           
+       
+            
+       
+         opts =  {  };
+        this.valrender.setOptions(opts);
+       
+       GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
+            
+            // at this point - work out the type...
+            // if its' a combo... then show the options..
+            this.valrender.el.has_entry = true;
+            
+            this.valrender.el.editable = true;            
+        
+            
+            this.allow_edit  = true;
+            
+            
+            
+            
+    
+            this.view.el.set_cursor_on_cell(
+                path,
+                this.valcol.el,
+                this.valrender.el,
+                true
+            );
+            return false;
+        });
+        return false;
+    }
     public              void load (JsRender.JsRender file, JsRender.Node? node) 
     {
         print("load leftprops\n");