resources/RooUsage.txt
[app.Builder.js] / src / Builder4 / ValaProjectSettings.bjs
index 430f4c1..a72c3d8 100644 (file)
@@ -5,15 +5,18 @@
  "path" : "/home/alan/gitlive/app.Builder.js/src/Builder4/ValaProjectSettings.bjs",
  "permname" : "",
  "modOrder" : "",
+ "build_module" : "builder",
  "items" : [
   {
    "# Project.Gtk project" : "null",
    "# Xcls_MainWindow window" : "null",
    "| void show" : "(Project.Gtk project) {\n    \n    \n    print(\"ValaProjectSettings show\\n\");\n    \n    this.project=  project;\n\n    this.compile_flags.el.text = _this.project.compilegroups.get(\"_default_\").compile_flags;\n    \n    this.default_directory_tree_store.load();    \n    this.default_packages_tree_store.load();            \n    this.targets_tree_store.load();\n    this.files_tree_store.load();\n\n}\n",
-   "xtype" : "VBox",
+   "bool hexpand" : true,
+   "xtype" : "Box",
    "string id" : "ValaProjectSettings",
    "| void save" : "()  {\n    this.project.writeConfig();\n}",
    "$ xns" : "Gtk",
+   "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
    "items" : [
     {
      "* pack" : "pack_start,true,true,0",
        "utf8 label" : "Targets"
       },
       {
-       "xtype" : "VBox",
+       "xtype" : "Box",
        "* pack" : "append_page,_this.label_global.el",
        "gboolean homogeneous" : false,
        "$ xns" : "Gtk",
+       "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
        "items" : [
         {
          "xtype" : "Label",
          "$ xns" : "Gtk",
          "utf8 placeholder_text" : "eg. -g --valasrc $BASEDIR "
         },
-        {
-         "xtype" : "Label",
-         "* pack" : "pack_start,false,false,0",
-         "$ xns" : "Gtk",
-         "utf8 label" : "packages"
-        },
         {
          "* pack" : "pack_start,true,true,0",
-         "xtype" : "ScrolledWindow",
+         "xtype" : "Paned",
          "$ xns" : "Gtk",
+         "int position" : 300,
+         "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
          "items" : [
           {
-           "gboolean headers_visible" : false,
-           "xtype" : "TreeView",
+           "bool hexpand" : true,
            "* pack" : "add",
-           "string id" : "default_packages_tree",
+           "xtype" : "ScrolledWindow",
            "$ xns" : "Gtk",
            "items" : [
             {
-             "id" : "default_packages_tree_store",
-             "xtype" : "ListStore",
-             "* pack" : "set_model",
-             "$ n_columns" : 2,
-             "| void load" : "() {\n \n    var def = _this.project.compilegroups.get(\"_default_\");\n    var items  = def.packages;\n    \n    this.el.clear();\n    var pal = (Palete.Gtk) Palete.factory(\"Gtk\");\n    var pkgs = pal.packages();\n    print(\"ValaProjectSettings:packages load %d\\n\", pkgs.size);\n\n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < pkgs.size; i++) {\n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   pkgs.get(i) ); // title \n        this.el.set_value(citer, 1,   items.contains(pkgs.get(i)) );\n    }\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n",
-             "$ columns" : "    typeof(string),  // 0 key type\n      typeof(bool)",
-             "$ xns" : "Gtk"
-            },
-            {
-             "utf8 title" : "name",
-             "* init" : " \n this.el.add_attribute(_this.packages_render.el , \"text\", 0 );\n  ",
-             "* pack" : "append_column",
-             "xtype" : "TreeViewColumn",
-             "gboolean resizable" : true,
-             "gboolean expand" : true,
+             "gboolean headers_visible" : true,
+             "xtype" : "TreeView",
+             "* pack" : "add",
+             "string id" : "default_packages_tree",
              "$ xns" : "Gtk",
              "items" : [
               {
-               "id" : "packages_render",
-               "xtype" : "CellRendererText",
-               "* pack" : "pack_start,false",
+               "id" : "default_packages_tree_store",
+               "xtype" : "ListStore",
+               "* pack" : "set_model",
+               "$ n_columns" : 2,
+               "| void load" : "() {\n \n    var def = _this.project.compilegroups.get(\"_default_\");\n    var items  = def.packages;\n    \n    this.el.clear();\n    var pal = (Palete.Gtk) Palete.factory(\"Gtk\");\n    var pkgs = pal.packages(_this.project);\n    print(\"ValaProjectSettings:packages load %d\\n\", pkgs.size);\n\n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < pkgs.size; i++) {\n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   pkgs.get(i) ); // title \n        this.el.set_value(citer, 1,   items.contains(pkgs.get(i)) );\n    }\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n",
+               "$ columns" : "    typeof(string),  // 0 key type\n      typeof(bool)",
                "$ xns" : "Gtk"
-              }
-             ]
-            },
-            {
-             "utf8 title" : "use",
-             "* init" : "{\n this.el.add_attribute(_this.packages_render_use.el , \"active\", 1 );\n }",
-             "* pack" : "append_column",
-             "xtype" : "TreeViewColumn",
-             "gboolean resizable" : false,
-             "$ xns" : "Gtk",
-             "gint fixed_width" : 50,
-             "items" : [
+              },
               {
-               "listeners" : {
-                "toggled" : "(  path_string) =>  { \n    var m = _this.default_packages_tree_store.el;\n   Gtk.TreeIter iter;\n   Gtk.TreePath path = new Gtk.TreePath.from_string (path_string);\n   m.get_iter (out iter, path);\n   GLib.Value val;\n   m.get_value(iter, 1, out val);\n   m.set_value(iter, 1,  ((bool) val) ? false :true); \n     GLib.Value fval;  \n   m.get_value(iter, 0, out fval);\n   var fn = (string)fval;\n    \n    var def = _this.project.compilegroups.get(\"_default_\");\n    var items  = def.packages;\n    if ((bool)val) {\n        // renive\n        items.remove(fn);\n    } else {\n        items.add(fn);\n    }\n    \n}"
-               },
-               "id" : "packages_render_use",
-               "* pack" : "pack_start,false",
-               "xtype" : "CellRendererToggle",
+               "utf8 title" : "package name",
+               "* init" : " \n this.el.add_attribute(_this.packages_render.el , \"text\", 0 );\n  ",
+               "* pack" : "append_column",
+               "xtype" : "TreeViewColumn",
+               "gboolean resizable" : true,
+               "gboolean expand" : true,
                "$ xns" : "Gtk",
-               "gboolean activatable" : true
-              }
-             ]
-            }
-           ]
-          }
-         ]
-        },
-        {
-         "xtype" : "Label",
-         "* pack" : "pack_start,false,false,0",
-         "$ xns" : "Gtk",
-         "utf8 label" : "Available Directories"
-        },
-        {
-         "* pack" : "pack_start,true,true,0",
-         "xtype" : "ScrolledWindow",
-         "$ xns" : "Gtk",
-         "items" : [
-          {
-           "listeners" : {
-            "button_press_event" : " ( ev) => {\n    //console.log(\"button press?\");\n   \n    \n    if (ev.type != Gdk.EventType.BUTTON_PRESS  || ev.button != 3) {\n        //print(\"click\" + ev.type);\n        return false;\n    }\n    //Gtk.TreePath res;\n    //if (!this.el.get_path_at_pos((int)ev.x,(int)ev.y, out res, null, null, null) ) {\n    //    return true;\n    //}\n     \n  //  this.el.get_selection().select_path(res);\n     \n      //if (!this.get('/LeftTreeMenu').el)  { \n      //      this.get('/LeftTreeMenu').init(); \n      //  }\n        \n     _this.default_directory_menu.el.set_screen(Gdk.Screen.get_default());\n     _this.default_directory_menu.el.show_all();\n      _this.default_directory_menu.el.popup(null, null, null,  3, ev.time);\n     //   print(\"click:\" + res.path.to_string());\n      return true;\n}"
-           },
-           "gboolean headers_visible" : false,
-           "id" : "default_directory_tree",
-           "* pack" : "add",
-           "xtype" : "TreeView",
-           "$ xns" : "Gtk",
-           "items" : [
-            {
-             "id" : "default_directory_tree_store",
-             "xtype" : "ListStore",
-             "* pack" : "set_model",
-             "$ n_columns" : 1,
-             "| void load" : "() {\n \n  this.el.clear();\n  \n    \n     var def = _this.project.compilegroups.get(\"_default_\");\n     var items  = def.sources;\n     \n \n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < items.size; i++) {\n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   items.get(i) ); // title \n        //this.el.set_value(citer, 1,   items.get(i) );\n    }\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n",
-             "$ columns" : "    typeof(string)\n     ",
-             "$ xns" : "Gtk"
-            },
-            {
-             "utf8 title" : "name",
-             "* init" : "\n this.el.add_attribute(_this.directory_render.el , \"text\", 0 );\n  ",
-             "* pack" : "append_column",
-             "xtype" : "TreeViewColumn",
-             "gboolean resizable" : true,
-             "$ xns" : "Gtk",
-             "items" : [
+               "items" : [
+                {
+                 "id" : "packages_render",
+                 "xtype" : "CellRendererText",
+                 "* pack" : "pack_start,false",
+                 "$ xns" : "Gtk"
+                }
+               ]
+              },
               {
-               "id" : "directory_render",
-               "xtype" : "CellRendererText",
-               "* pack" : "pack_start,false",
-               "$ xns" : "Gtk"
+               "utf8 title" : "use",
+               "* init" : "{\n this.el.add_attribute(_this.packages_render_use.el , \"active\", 1 );\n }",
+               "* pack" : "append_column",
+               "xtype" : "TreeViewColumn",
+               "gboolean resizable" : false,
+               "$ xns" : "Gtk",
+               "gint fixed_width" : 50,
+               "items" : [
+                {
+                 "listeners" : {
+                  "toggled" : "(  path_string) =>  { \n    var m = _this.default_packages_tree_store.el;\n   Gtk.TreeIter iter;\n   Gtk.TreePath path = new Gtk.TreePath.from_string (path_string);\n   m.get_iter (out iter, path);\n   GLib.Value val;\n   m.get_value(iter, 1, out val);\n   m.set_value(iter, 1,  ((bool) val) ? false :true); \n     GLib.Value fval;  \n   m.get_value(iter, 0, out fval);\n   var fn = (string)fval;\n    \n    var def = _this.project.compilegroups.get(\"_default_\");\n    var items  = def.packages;\n    if ((bool)val) {\n        // renive\n        items.remove(fn);\n    } else {\n        items.add(fn);\n    }\n    \n}"
+                 },
+                 "id" : "packages_render_use",
+                 "* pack" : "pack_start,false",
+                 "xtype" : "CellRendererToggle",
+                 "$ xns" : "Gtk",
+                 "gboolean activatable" : true
+                }
+               ]
               }
              ]
             }
            ]
           },
           {
-           "id" : "default_directory_menu",
-           "xtype" : "Menu",
+           "bool hexpand" : true,
+           "* pack" : "add2",
+           "xtype" : "ScrolledWindow",
            "$ xns" : "Gtk",
            "items" : [
             {
              "listeners" : {
-              "activate" : "()  => {\n    \n    var  chooser = new Gtk.FileChooserDialog (\n\t\"Add a directory\", _this.window.el, Gtk.FileChooserAction.SELECT_FOLDER ,\n\t\"_Cancel\",\n\tGtk.ResponseType.CANCEL,\n\t\"_Add\",\n\tGtk.ResponseType.ACCEPT);\n    if (chooser.run () != Gtk.ResponseType.ACCEPT) {\n        chooser.close ();\n           return;\n       }\n       chooser.close ();\n       // add the directory..\n       var fn = _this.project.relPath(chooser.get_filename());\n       _this.project.compilegroups.get(\"_default_\").sources.add(fn);\n       _this.default_directory_tree_store.load();\n}"
-             },
-             "* pack" : "add",
-             "xtype" : "MenuItem",
-             "$ xns" : "Gtk",
-             "utf8 label" : "Add Directory"
-            },
-            {
-             "listeners" : {
-              "activate" : "()  => {\n    \n    var  chooser = new Gtk.FileChooserDialog (\n\t\"Add a directory\", _this.window.el, Gtk.FileChooserAction.OPEN ,\n\t\"_Cancel\",\n\tGtk.ResponseType.CANCEL,\n\t\"_Add\",\n\tGtk.ResponseType.ACCEPT);\n    if (chooser.run () != Gtk.ResponseType.ACCEPT) {\n        chooser.close ();\n           return;\n       }\n       chooser.close ();\n       // add the directory..\n       var fn = _this.project.relPath(chooser.get_filename());\n       _this.project.compilegroups.get(\"_default_\").sources.add(fn);\n       _this.default_directory_tree_store.load();\n}"
+              "button_press_event" : " ( ev) => {\n    //console.log(\"button press?\");\n   \n    \n    if (ev.type != Gdk.EventType.BUTTON_PRESS  || ev.button != 3) {\n        //print(\"click\" + ev.type);\n        return false;\n    }\n    //Gtk.TreePath res;\n    //if (!this.el.get_path_at_pos((int)ev.x,(int)ev.y, out res, null, null, null) ) {\n    //    return true;\n    //}\n     \n  //  this.el.get_selection().select_path(res);\n     \n      //if (!this.get('/LeftTreeMenu').el)  { \n      //      this.get('/LeftTreeMenu').init(); \n      //  }\n        \n     _this.default_directory_menu.el.set_screen(Gdk.Screen.get_default());\n     _this.default_directory_menu.el.show_all();\n      _this.default_directory_menu.el.popup(null, null, null,  3, ev.time);\n     //   print(\"click:\" + res.path.to_string());\n      return true;\n}"
              },
+             "gboolean headers_visible" : true,
+             "id" : "default_directory_tree",
              "* pack" : "add",
-             "xtype" : "MenuItem",
+             "xtype" : "TreeView",
              "$ xns" : "Gtk",
-             "utf8 label" : "Add File"
-            },
-            {
-             "* pack" : "add",
-             "xtype" : "SeparatorMenuItem",
-             "$ xns" : "Gtk"
+             "items" : [
+              {
+               "id" : "default_directory_tree_store",
+               "xtype" : "ListStore",
+               "* pack" : "set_model",
+               "$ n_columns" : 1,
+               "| void load" : "() {\n \n  this.el.clear();\n  \n    \n     var def = _this.project.compilegroups.get(\"_default_\");\n     var items  = def.sources;\n     \n \n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < items.size; i++) {\n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   items.get(i) ); // title \n        //this.el.set_value(citer, 1,   items.get(i) );\n    }\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n",
+               "$ columns" : "    typeof(string)\n     ",
+               "$ xns" : "Gtk"
+              },
+              {
+               "utf8 title" : "Available Directories (right click to add)",
+               "* init" : "\n this.el.add_attribute(_this.directory_render.el , \"text\", 0 );\n   ",
+               "* pack" : "append_column",
+               "xtype" : "TreeViewColumn",
+               "gboolean resizable" : true,
+               "$ xns" : "Gtk",
+               "items" : [
+                {
+                 "id" : "directory_render",
+                 "xtype" : "CellRendererText",
+                 "* pack" : "pack_start,false",
+                 "$ xns" : "Gtk"
+                }
+               ]
+              }
+             ]
             },
             {
-             "listeners" : {
-              "activate" : "()  => {\n    \n     //\n        Gtk.TreeModel mod;\n        Gtk.TreeIter iter;\n        if (!_this.default_directory_tree.el.get_selection().get_selected(out mod, out iter)) {\n               print(\"nothing selected\\n\");\n            return;\n        }\n\n            \n       // add the directory..\n       \n       \n       GLib.Value val;\n        mod.get_value(iter,0, out val);\n       var fn =  (string) val;\n       \n       print(\"remove: %s\\n\", fn);\n       if (!_this.project.compilegroups.get(\"_default_\").sources.remove(fn)) {\n                  print(\"remove failed\");\n              }\n       _this.default_directory_tree_store.load();\n}"
-             },
-             "* pack" : "add",
-             "xtype" : "MenuItem",
+             "id" : "default_directory_menu",
+             "xtype" : "Menu",
              "$ xns" : "Gtk",
-             "utf8 label" : "Remove File/Directory"
+             "items" : [
+              {
+               "listeners" : {
+                "activate" : "()  => {\n    \n    var  chooser = new Gtk.FileChooserDialog (\n\t\"Add a directory\", _this.window.el, Gtk.FileChooserAction.SELECT_FOLDER ,\n\t\"_Cancel\",\n\tGtk.ResponseType.CANCEL,\n\t\"_Add\",\n\tGtk.ResponseType.ACCEPT);\n    if (chooser.run () != Gtk.ResponseType.ACCEPT) {\n        chooser.close ();\n           return;\n       }\n       chooser.close ();\n       // add the directory..\n       var fn = _this.project.relPath(chooser.get_filename());\n       _this.project.compilegroups.get(\"_default_\").sources.add(fn);\n       _this.default_directory_tree_store.load();\n}"
+               },
+               "* pack" : "add",
+               "xtype" : "MenuItem",
+               "$ xns" : "Gtk",
+               "utf8 label" : "Add Directory"
+              },
+              {
+               "listeners" : {
+                "activate" : "()  => {\n    \n    var  chooser = new Gtk.FileChooserDialog (\n\t\"Add a directory\", _this.window.el, Gtk.FileChooserAction.OPEN ,\n\t\"_Cancel\",\n\tGtk.ResponseType.CANCEL,\n\t\"_Add\",\n\tGtk.ResponseType.ACCEPT);\n    if (chooser.run () != Gtk.ResponseType.ACCEPT) {\n        chooser.close ();\n           return;\n       }\n       chooser.close ();\n       // add the directory..\n       var fn = _this.project.relPath(chooser.get_filename());\n       _this.project.compilegroups.get(\"_default_\").sources.add(fn);\n       _this.default_directory_tree_store.load();\n}"
+               },
+               "* pack" : "add",
+               "xtype" : "MenuItem",
+               "$ xns" : "Gtk",
+               "utf8 label" : "Add File"
+              },
+              {
+               "* pack" : "add",
+               "xtype" : "SeparatorMenuItem",
+               "$ xns" : "Gtk"
+              },
+              {
+               "listeners" : {
+                "activate" : "()  => {\n    \n     //\n        Gtk.TreeModel mod;\n        Gtk.TreeIter iter;\n        if (!_this.default_directory_tree.el.get_selection().get_selected(out mod, out iter)) {\n               print(\"nothing selected\\n\");\n            return;\n        }\n\n            \n       // add the directory..\n       \n       \n       GLib.Value val;\n        mod.get_value(iter,0, out val);\n       var fn =  (string) val;\n       \n       print(\"remove: %s\\n\", fn);\n       if (!_this.project.compilegroups.get(\"_default_\").sources.remove(fn)) {\n                  print(\"remove failed\");\n              }\n       _this.default_directory_tree_store.load();\n}"
+               },
+               "* pack" : "add",
+               "xtype" : "MenuItem",
+               "$ xns" : "Gtk",
+               "utf8 label" : "Remove File/Directory"
+              }
+             ]
             }
            ]
           }
       {
        "gint position" : 300,
        "* pack" : "append_page,_this.label_targets.el",
-       "xtype" : "HPaned",
+       "xtype" : "Paned",
        "$ xns" : "Gtk",
+       "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
        "items" : [
         {
          "* init" : "{  \nthis.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n\n}\n",
           {
            "listeners" : {
             "button_press_event" : " ( ev) => {\n    //console.log(\"button press?\");\n   \n    \n    if (ev.type != Gdk.EventType.BUTTON_PRESS  || ev.button != 3) {\n        //print(\"click\" + ev.type);\n        return false;\n    }\n    //Gtk.TreePath res;\n    //if (!this.el.get_path_at_pos((int)ev.x,(int)ev.y, out res, null, null, null) ) {\n    //    return true;\n    //}\n     \n  //  this.el.get_selection().select_path(res);\n     \n      //if (!this.get('/LeftTreeMenu').el)  { \n      //      this.get('/LeftTreeMenu').init(); \n      //  }\n        \n     _this.targets_tree_menu.el.set_screen(Gdk.Screen.get_default());\n     _this.targets_tree_menu.el.show_all();\n      _this.targets_tree_menu.el.popup(null, null, null,  3, ev.time);\n     //   print(\"click:\" + res.path.to_string());\n      return true;\n}",
-            "cursor_changed" : " ( ) => {\n\n    if (this.cursor != \"\") {\n         // save the values..\n     }\n     \n     // load the new values.\n     \n\n         Gtk.TreeModel mod;\n        Gtk.TreeIter iter;\n        if (!this.el.get_selection().get_selected(out mod, out iter)) {\n            print(\"nothing selected\\n\");\n            // should disable the right hand side..\n            _this.set_vbox.el.hide();\n            return;\n        }\n        _this.set_vbox.el.show();\n            \n       // add the directory..\n       \n       \n       GLib.Value val;\n        mod.get_value(iter,0, out val);\n       var fn =  (string) val;\n       \n       this.cursor = fn;\n       var cg = _this.project.compilegroups.get(fn);\n       \n       _this.build_pack_target.el.set_text(cg.target_bin);\n       _this.build_compile_flags.el.set_text(cg.compile_flags);\n       \n       //_this.files_tree_store.updatesel(cg);\n       // load the srouces\n       \n\n  }"
+            "cursor_changed" : " ( ) => {\n\n    if (this.cursor != \"\") {\n         // save the values..\n     }\n     \n     // load the new values.\n     \n\n         Gtk.TreeModel mod;\n        Gtk.TreeIter iter;\n        if (!this.el.get_selection().get_selected(out mod, out iter)) {\n            print(\"nothing selected\\n\");\n            // should disable the right hand side..\n            _this.set_vbox.el.hide();\n            return;\n        }\n        _this.set_vbox.el.show();\n            \n       // add the directory..\n       \n       \n       GLib.Value val;\n        mod.get_value(iter,0, out val);\n       var fn =  (string) val;\n       \n       this.cursor = fn;\n       var cg = _this.project.compilegroups.get(fn);\n       \n       _this.build_pack_target.el.set_text(cg.target_bin);\n       _this.build_compile_flags.el.set_text(cg.compile_flags);\n\t\t_this.build_execute_args.el.set_text(cg.execute_args);\n       \n       _this.set_vbox.cgroup = cg;\n       _this.files_tree_store.update();\n       \n       // load the srouces\n       \n\n  }"
            },
            "id" : "targets_tree",
            "# string cursor" : "",
              "* pack" : "set_model",
              "xtype" : "ListStore",
              "$ n_columns" : 2,
-             "| void load" : "() {\n \n  this.el.clear();\n  \n    \n     var cg = _this.project.compilegroups;\n     \n   _this.targets_tree.cursor = \"\";\n    Gtk.TreeIter citer;\n    var iter = cg.map_iterator();\n   while(iter.next()) {\n        var key = iter.get_key();\n        if (key == \"_default_\") {\n            continue;\n        }\n    \n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   key ); // title \n        //this.el.set_value(citer, 1,   items.get(i) );\n    };\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n",
+             "| void load" : "() {\n \n  this.el.clear();\n  \n    \n     var cg = _this.project.compilegroups;\n     \n   _this.targets_tree.cursor = \"\";\n    Gtk.TreeIter citer;\n    var iter = cg.map_iterator();\n   while(iter.next()) {\n        var key = iter.get_key();\n        if (key == \"_default_\") {\n            continue;\n        }\n    \n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   key ); // title \n        //this.el.set_value(citer, 1,   items.get(i) );\n    };\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    _this.set_vbox.el.hide();\n}\n",
              "$ columns" : "    typeof(string),  // 0 key type\n     typeof(string) // ??\n     ",
              "$ xns" : "Gtk"
             },
         {
          "id" : "set_vbox",
          "* pack" : "add2",
-         "xtype" : "VBox",
+         "xtype" : "Box",
          "gboolean homogeneous" : false,
          "$ xns" : "Gtk",
+         "# Project.GtkValaSettings cgroup" : "null",
+         "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
          "items" : [
           {
            "xtype" : "Label",
            "xtype" : "Entry",
            "$ xns" : "Gtk"
           },
+          {
+           "xtype" : "Label",
+           "* pack" : "pack_start,false,false,0",
+           "$ xns" : "Gtk",
+           "utf8 label" : "test argments - when run after a build"
+          },
+          {
+           "listeners" : {
+            "changed" : "() => {\n    if (_this.targets_tree.cursor.length < 1) {\n        return;\n    }\n    _this.project.compilegroups.get(_this.targets_tree.cursor).execute_args = this.el.text;\n}"
+           },
+           "id" : "build_execute_args",
+           "string placeholder_text" : "eg.  -f somefile -g ",
+           "xtype" : "Entry",
+           "* pack" : "pack_start,false,false,0",
+           "$ xns" : "Gtk"
+          },
           {
            "xtype" : "Label",
            "* pack" : "pack_start,false,false,0",
                "id" : "files_tree_store",
                "* pack" : "set_model",
                "xtype" : "ListStore",
+               "| void updateDir" : "(string dname, bool bval) {\n  \n  Gtk.TreeIter citer;\n\n    var cg =   _this.set_vbox.cgroup;\n  for(var i =0 ; i < this.el.iter_n_children(null); i++) {\n        this.el.iter_nth_child(out citer,null,i);\n\n        GLib.Value val;\n        this.el.get_value(citer,0, out val);\n        var fn = (string) val;\n        \n        if ( Path.get_dirname (fn) == dname) {\n        \n            this.el.set_value(citer, 3,   bval ); // checked \n           \n     \n     \n            if (!bval) {\n                // renive\n                if (cg.sources.contains(fn)) {\n                    cg.sources.remove(fn);\n                }\n            } else {\n                if (!cg.sources.contains(fn)) {\n                    cg.sources.add(fn);\n                }\n            }\n            \n            \n        }\n    }\n\n}\n",
                "$ n_columns" : 4,
-               "| void load" : "() {\n \n      this.el.clear();\n  \n    \n     var def = _this.project.compilegroups.get(\"_default_\");\n     var items  = def.sources;\n     \n     \n     \n     \n \n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < items.size; i++) {\n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   items.get(i) ); // title \n        this.el.set_value(citer, 1,   \"<span foreground=\\\"green\\\" font_weight=\\\"bold\\\">\" + \n                    GLib.Markup.escape_text(items.get(i)) + \"</span>\"\n            ); // title \n        print(\"ADD item %s\", items.get(i));\n        this.el.set_value(citer, 2,   \"dir\"); // type         \n        this.el.set_value(citer, 3,   false ); // checked \n\n        var files = _this.project.files(items.get(i));\n        \n         for(var j =0 ; j < files.size; j++) {\n            this.el.append(out citer);   \n                 print(\"ADD item %s\", files.get(j));\n            this.el.set_value(citer, 0,   files.get(j) ); // title \n            this.el.set_value(citer, 1,   GLib.Markup.escape_text( Path.get_basename (files.get(j))) ); // title             \n            this.el.set_value(citer, 2,   \"file\"); // type         \n            this.el.set_value(citer, 3,   false ); // checked \n\n        }\n        \n        \n        //this.el.set_value(citer, 1,   items.get(i) );\n    }\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n ",
+               "| void load" : "() {\n \n      this.el.clear();\n  \n    \n     var def = _this.project.compilegroups.get(\"_default_\");\n     var items  = def.sources;\n     \n     \n     \n     \n \n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < items.size; i++) {\n    \n         var files = _this.project.filesForCompile(items.get(i), false);\n         if (files.size < 1) {\n            continue;\n         }\n    \n         this.el.append(out citer);   \n         \n        this.el.set_value(citer, 0,   items.get(i) ); // title \n        this.el.set_value(citer, 1,   \"<span foreground=\\\"green\\\" font_weight=\\\"bold\\\">\" + \n                    GLib.Markup.escape_text(items.get(i)) + \"</span>\"\n            ); // title \n        print(\"ADD item %s\", items.get(i));\n        this.el.set_value(citer, 2,   \"dir\"); // type         \n        this.el.set_value(citer, 3,   false ); // checked \n\n       \n        \n         for(var j =0 ; j < files.size; j++) {\n            this.el.append(out citer);   \n             print(\"ADD item %s\", files.get(j));\n            this.el.set_value(citer, 0,   files.get(j) ); // title \n            this.el.set_value(citer, 1,   GLib.Markup.escape_text( Path.get_basename (files.get(j))) ); // title             \n            this.el.set_value(citer, 2,   \"file\"); // type         \n            this.el.set_value(citer, 3,   false ); // checked \n\n        }\n        \n        \n        //this.el.set_value(citer, 1,   items.get(i) );\n    }\n    this.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);\n    \n}\n ",
                "$ columns" : "    typeof(string),  // 0 file name\n        typeof(string),  // 0 basename\n     typeof(string), // type (dir orfile)\n     typeof(bool)  // is checked.\n     ",
-               "$ xns" : "Gtk"
+               "$ xns" : "Gtk",
+               "| void update" : "() {\n\n\n    Gtk.TreeIter citer;\n\n    for(var i =0 ; i < this.el.iter_n_children(null); i++) {\n        this.el.iter_nth_child(out citer,null,i);\n\n        GLib.Value val;\n        this.el.get_value(citer,0, out val);\n        var fn = (string) val;\n        \n        var active = false;\n        if (_this.set_vbox.cgroup.sources.contains(fn)) {\n            active = true;\n        }\n        \n        this.el.set_value(citer, 3,   active ); // checked \n    }\n\n\n}\n"
               },
               {
                "utf8 title" : "name",
                "items" : [
                 {
                  "listeners" : {
-                  "toggled" : "(  path_string) =>  { \n\n\n\n    var m = _this.files_tree_store.el;\n   Gtk.TreeIter iter;\n   Gtk.TreePath path = new Gtk.TreePath.from_string (path_string);\n   m.get_iter (out iter, path);\n   GLib.Value val;\n   m.get_value(iter, 3, out val);\n   m.set_value(iter, 3,  ((bool) val) ? false :true); \n   \n   // type.\n   GLib.Value ftval;  \n   m.get_value(iter, 2, out ftval);\n   var ftype = (string)ftval;   \n   \n   // full name...\n   GLib.Value fval;     \n   m.get_value(iter, 0, out fval);\n   var fn = (string)fval;\n    \n    // what's the sleected target?\n    // update the list..\n    // if ftype is a dir == then toggle all the bellow.\n    // if ftype is a file .. see if all the files in that directory are check and check the dir.\n    return;\n    var def = _this.project.compilegroups.get(\"_default_\");\n    var items  = def.packages;\n    if ((bool)val) {\n        // renive\n        items.remove(fn);\n    } else {\n        items.add(fn);\n    }\n    \n}"
+                  "toggled" : "(  path_string) =>  { \n\n\n\n    var m = _this.files_tree_store.el;\n   Gtk.TreeIter iter;\n   Gtk.TreePath path = new Gtk.TreePath.from_string (path_string);\n   m.get_iter (out iter, path);\n   GLib.Value val;\n   m.get_value(iter, 3, out val);\n   m.set_value(iter, 3,  ((bool) val) ? false :true); \n   \n   // type.\n   GLib.Value ftval;  \n   m.get_value(iter, 2, out ftval);\n   var ftype = (string)ftval;   \n   \n   // full name...  \n   GLib.Value fval;     \n   m.get_value(iter, 0, out fval);\n   var fn = (string)fval;\n    \n    \n    var cg =   _this.set_vbox.cgroup;\n    // what's the sleected target?\n    // update the list..\n    // if ftype is a dir == then toggle all the bellow.\n    \n    if (ftype == \"dir\") {\n        _this.files_tree_store.updateDir(fn,  ((bool) val) ? false :true);\n    }\n    \n    // if ftype is a file .. see if all the files in that directory are check and check the dir.\n\n     \n    if ((bool)val) {\n        // renive\n        cg.sources.remove(fn);\n    } else {\n        cg.sources.add(fn);\n    }\n    \n}"
                  },
                  "id" : "files_render_use",
                  "* pack" : "pack_start,false",