Builder4/ValaProjectSettings.bjs
authorAlan Knowles <alan@roojs.com>
Wed, 29 Oct 2014 09:33:26 +0000 (17:33 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 29 Oct 2014 09:33:26 +0000 (17:33 +0800)
Builder4/ValaProjectSettings.vala
Builder4/WindowLeftProps.bjs
Builder4/WindowLeftProps.vala

Builder4/ValaProjectSettings.bjs
Builder4/ValaProjectSettings.vala
Builder4/WindowLeftProps.bjs

index 99caf99..938fdfb 100644 (file)
@@ -54,6 +54,8 @@
                                                 {
                                                     "* pack" : "set_model",
                                                     "xtype" : "ListStore",
+                                                    "$ n_columns" : 2,
+                                                    "$ columns" : "    typeof(string),  // 0 key type\n     typeof(string) // ??\n     ",
                                                     "$ xns" : "Gtk"
                                                 }
                                             ]
index a22b57e..e0d9706 100644 (file)
@@ -219,7 +219,9 @@ public class ValaProjectSettings : Object
         public Xcls_ListStore9(ValaProjectSettings _owner )
         {
             _this = _owner;
-            this.el = new Gtk.ListStore( 0, null );
+            this.el = new Gtk.ListStore( 2,     typeof(string),  // 0 key type
+     typeof(string) // ??
+      );
 
             // my vars (dec)
 
index 15672cc..f1746cd 100644 (file)
@@ -8,8 +8,8 @@
     "items" : [
         {
             "# bool allow_edit" : false,
-            "|              void before_edit" : "()\n{\n\n    print(\"before edit - stop editing\\n\");\n    \n  // these do not appear to trigger save...\n    _this.keyrender.el.stop_editing(false);\n    _this.keyrender.el.editable  =false;\n\n    _this.valrender.el.stop_editing(false);\n    _this.valrender.el.editable  =false;    \n    \n    \n// technicall stop the popup editor..\n\n}\n",
             "id" : "LeftProps",
+            "|              void before_edit" : "()\n{\n\n    print(\"before edit - stop editing\\n\");\n    \n  // these do not appear to trigger save...\n    _this.keyrender.el.stop_editing(false);\n    _this.keyrender.el.editable  =false;\n\n    _this.valrender.el.stop_editing(false);\n    _this.valrender.el.editable  =false;    \n    \n    \n// technicall stop the popup editor..\n\n}\n",
             "|              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            var type_ar = key.split(\" \");\n            \n            \n            \n            mod.get_value(iter, 0 , out gval);\n            var type = (string)gval;\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            // others... - fill in options for true/false?\n           print(\"turn on editing %s \\n\" , mod.get_path(iter).to_string());\n           \n               print (type_ar[0].up());\n                if (type_ar.length > 1 && (\n                        type_ar[0].up() == \"BOOLEAN\"\n                        ||\n                        type_ar[0].up() == \"BOOL\"                        \n                    )) {\n                        print(\"start editing try/false)???\");\n                        this.valrender.el.has_entry = false;\n                        string[] opts =  { \"true\", \"false\" };\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                \n           \n             string[] 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",
                                     "$ xns" : "Gtk",
                                     "items" : [
                                         {
+                                            "xtype" : "Image",
                                             "$ stock" : "Gtk.STOCK_ADD",
                                             "* pack" : "add",
-                                            "xtype" : "Image",
                                             "$ xns" : "Gtk",
                                             "$ icon_size" : "Gtk.IconSize.MENU"
                                         },
                                         {
                                             "label" : "Other",
-                                            "* pack" : "add",
                                             "xtype" : "Label",
+                                            "* pack" : "add",
                                             "$ xns" : "Gtk"
                                         }
                                     ]
                                 },
                                 {
                                     "id" : "AddPropertyPopup",
-                                    "* pack" : false,
                                     "xtype" : "Menu",
+                                    "* pack" : false,
                                     "$ xns" : "Gtk",
                                     "items" : [
                                         {
@@ -74,8 +74,8 @@
                                                 "activate" : " ()  => {\n    _this.addProp( \"prop\", \"id\", \"\", \"string\");\n}"
                                             },
                                             "label" : "ID",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Using this.get('*someid') will find any id in an application.",
                                             "$ xns" : "Gtk"
                                         },
@@ -84,8 +84,8 @@
                                                 "activate" : "  ( ) => {\n\n    _this.addProp( \"prop\", \"pack\",\"add\", \"*\");\n}"
                                             },
                                             "label" : "PACK",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Add what type of packing is to be used",
                                             "$ xns" : "Gtk"
                                         },
@@ -94,8 +94,8 @@
                                                 "activate" : "  ( ) => {\n\n    _this.addProp( \"prop\",  \"init\", \"{\\n\\n}\\n\", \"*\" );\n}"
                                             },
                                             "label" : "INIT",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Override the init method",
                                             "$ xns" : "Gtk"
                                         },
                                                 "activate" : "  (self) => {\n\n    _this.addProp( \"prop\", \"XXXX\", \"\",\"string\");\n\n}"
                                             },
                                             "label" : "String",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Add a user defined string property",
                                             "$ xns" : "Gtk"
                                         },
                                                 "activate" : "  ( ) =>{\n\n    _this.addProp(\"prop\",  \"XXX\", \"0\", \"int\");\n}"
                                             },
                                             "label" : "Number",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Add a user defined number property",
                                             "$ xns" : "Gtk"
                                         },
                                                 "activate" : "  ( ) =>{\n\n    _this.addProp( \"prop\", \"XXX\", \"true\", \"bool\");\n}"
                                             },
                                             "label" : "Boolean",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Add a user defined boolean property",
                                             "$ xns" : "Gtk"
                                         },
                                                 "activate" : "  ( ) =>{\n\n    _this.addProp(\"prop\",  \"XXXX\", \"function() { }\", \"| function\");\n}"
                                             },
                                             "label" : "Javascript Function",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Add a user function boolean property",
                                             "$ xns" : "Gtk"
                                         },
                                                 "activate" : "  ( ) =>{\n\n    _this.addProp( \"prop\", \"XXXX\", \"() {\\n\\n}\\n\", \"| return_type\");\n}"
                                             },
                                             "label" : "Vala Method",
-                                            "* pack" : "append",
                                             "xtype" : "MenuItem",
+                                            "* pack" : "append",
                                             "tooltip_markup" : "Add a user function boolean property",
                                             "$ xns" : "Gtk"
                                         }
                                                 "edited" : "  (path, newtext) => {\n        print(\"Keyrender  - signal:edited\\n\");\n    \n    this.el.editable = false;\n  \n \n\n        Gtk.TreeIter  iter;\n        _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));\n        GLib.Value gval;\n        \n         _this.model.el.get_value(iter,1, out gval);\n        var oldval = (string)gval;\n        \n         _this.model.el.get_value(iter,0, out gval);\n        var ktype = (string)gval;\n       \n        _this.model.el.set_value(iter, 1, newtext);\n        \n        if (oldval == newtext) {\n            return;\n        }\n        \n        \n        print(\"ktype: %s\\n\",ktype);\n        switch(ktype) {\n            case \"listener\":\n                var ov = _this.node.listeners.get(oldval);\n                _this.node.listeners.set(newtext, ov);\n                _this.node.listeners.remove(oldval);\n                \n                _this.updateIter(iter,  ktype, newtext, ov);\n                \n                break;\n            case \"props\":\n                var ov = _this.node.props.get(oldval);\n                _this.node.props.set(newtext, ov);\n                _this.node.props.remove(oldval);\n                _this.updateIter(iter,  ktype, newtext, ov);\n                break;\n         }\n         _this.changed();\n          \n}"
                                             },
                                             "id" : "keyrender",
-                                            "xtype" : "CellRendererText",
                                             "* pack" : "pack_start,false",
+                                            "xtype" : "CellRendererText",
                                             "$ xns" : "Gtk"
                                         }
                                     ]
                                                 "edited" : "  (path, newtext) => {\n    print(\"Valrender  - signal:edited\\n\");\n  \n        this.el.editable = false;\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                4, display_value(short);\n            ); \n\n  */      \n\n        Gtk.TreeIter  iter;\n        _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));\n        GLib.Value gval;\n        \n         _this.model.el.get_value(iter,0, out gval);\n        var ktype = (string)gval;\n        \n        \n         _this.model.el.get_value(iter,3, out gval);\n        var oldval = (string)gval;\n        \n         _this.model.el.get_value(iter,1, out gval);\n        var key = (string)gval;\n        \n         \n        \n        switch(ktype) {\n            case \"listener\":\n                _this.node.listeners.set(key, newtext);\n                _this.updateIter(iter,ktype,key,newtext);\n                break;\n            case \"props\":\n                _this.node.props.set(key,newtext);\n                _this.updateIter(iter,ktype, key,newtext);                \n                break;\n         }\n//         _this.load(_this.file,_this.node);\n         _this.changed();\n          \n}"
                                             },
                                             "id" : "valrender",
-                                            "* pack" : "pack_start,true",
                                             "xtype" : "CellRendererCombo",
+                                            "* pack" : "pack_start,true",
                                             "$ editable" : false,
                                             "$ has_entry" : true,
                                             "$ xns" : "Gtk",
                                             "items" : [
                                                 {
                                                     "id" : "valrendermodel",
-                                                    "* pack" : false,
                                                     "xtype" : "ListStore",
+                                                    "* pack" : false,
                                                     "$ columns" : "typeof(string)",
                                                     "n_columns" : 1,
                                                     "$ xns" : "Gtk",
                                 },
                                 {
                                     "id" : "ContextMenu",
-                                    "xtype" : "Menu",
                                     "* pack" : false,
+                                    "xtype" : "Menu",
                                     "$ xns" : "Gtk",
                                     "items" : [
                                         {
                                                 "activate" : "  ( )  =>{\n  \n    var s = _this.view.el.get_selection();\n    Gtk.TreeIter iter;\n    Gtk.TreeModel model;\n    s.get_selected (out  model, out  iter);\n    _this.startEditingKey(model.get_path(iter));\n}"
                                             },
                                             "label" : "Edit",
-                                            "xtype" : "MenuItem",
                                             "* pack" : "append",
+                                            "xtype" : "MenuItem",
                                             "$ xns" : "Gtk"
                                         },
                                         {
                                                 "activate" : "  ( )  =>{\n\t_this.deleteSelected();\n}"
                                             },
                                             "label" : "Delete",
-                                            "xtype" : "MenuItem",
                                             "* pack" : "append",
+                                            "xtype" : "MenuItem",
                                             "$ xns" : "Gtk"
                                         }
                                     ]