fix line numbering issues with vala generator - hopefully fixes completion in node...
[roobuilder] / src / Builder4 / ValaProjectSettingsPopover.bjs
1 {
2  "build_module" : "builder",
3  "gen_extended" : false,
4  "items" : [
5   {
6    "$ Project.Callback doneObj" : "null",
7    "$ xns" : "Gtk",
8    "Project.Gtk project" : "null",
9    "Project.GtkValaSettings? selected_target" : "null",
10    "Xcls_MainWindow window" : "null",
11    "bool done" : false,
12    "bool modal" : true,
13    "items" : [
14     {
15      "$ xns" : "Gtk",
16      "* prop" : "titlebar",
17      "* title" : "Edit Project Details",
18      "items" : [
19       {
20        "$ xns" : "Gtk",
21        "* prop" : "title_widget",
22        "string label" : "Change Vala  Compile settings",
23        "xtype" : "Label"
24       }
25      ],
26      "xtype" : "HeaderBar"
27     },
28     {
29      "$ xns" : "Gtk",
30      "* pack" : "set_child",
31      "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
32      "bool hexpand" : true,
33      "bool vexpand" : true,
34      "items" : [
35       {
36        "$ xns" : "Gtk",
37        "bool vexpand" : true,
38        "id" : "notebook",
39        "items" : [
40         {
41          "$ xns" : "Gtk",
42          "* pack" : false,
43          "id" : "label_global",
44          "utf8 label" : "Global",
45          "xtype" : "Label"
46         },
47         {
48          "$ xns" : "Gtk",
49          "* pack" : false,
50          "id" : "label_targets",
51          "utf8 label" : "Targets",
52          "xtype" : "Label"
53         },
54         {
55          "$ xns" : "Gtk",
56          "* pack" : "append_page,_this.label_global.el",
57          "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
58          "gboolean homogeneous" : false,
59          "items" : [
60           {
61            "$ xns" : "Gtk",
62            "Gtk.Align halign" : "Gtk.Align.START",
63            "bool hexpand" : true,
64            "utf8 label" : "compile flags",
65            "xtype" : "Label"
66           },
67           {
68            "$ xns" : "Gtk",
69            "id" : "compile_flags",
70            "listeners" : {
71             "changed" : [
72              "() => {",
73              "    ",
74              "   _this.project.compile_flags = this.el.buffer.text;",
75              "   _this.project.save();",
76              "//    _this.project.save();",
77              "",
78              "}"
79             ]
80            },
81            "utf8 placeholder_text" : "eg. -g --valasrc $BASEDIR ",
82            "xtype" : "Entry"
83           },
84           {
85            "$ xns" : "Gtk",
86            "Gtk.PolicyType hscrollbar_policy" : "Gtk.PolicyType.AUTOMATIC",
87            "Gtk.PolicyType vscrollbar_policy" : "Gtk.PolicyType.AUTOMATIC",
88            "bool has_frame" : true,
89            "bool hexpand" : true,
90            "bool vexpand" : true,
91            "id" : "vapi_scroll",
92            "items" : [
93             {
94              "$ xns" : "Gtk",
95              "* prop" : "child",
96              "items" : [
97               {
98                "$ xns" : "Gtk",
99                "* prop" : "model",
100                "items" : [
101                 {
102                  "$ xns" : "Gtk",
103                  "* prop" : "model",
104                  "items" : [
105                   {
106                    "$ xns" : "Gtk",
107                    "* prop" : "model",
108                    "items" : [
109                     {
110                      "$ xns" : "GLib",
111                      "* prop" : "model",
112                      "GLib.Type item_type" : "typeof(Project.VapiSelection)",
113                      "id" : "vapimodel",
114                      "xtype" : "ListStore"
115                     },
116                     {
117                      "$ xns" : "Gtk",
118                      "* prop" : "sorter",
119                      "items" : [
120                       {
121                        "$ xns" : "Gtk",
122                        "* prop" : "expression",
123                        "GLib.Type this_type" : "typeof(Project.VapiSelection)",
124                        "string property_name" : "sortkey",
125                        "xtype" : "PropertyExpression"
126                       }
127                      ],
128                      "xtype" : "StringSorter"
129                     }
130                    ],
131                    "xtype" : "SortListModel"
132                   },
133                   {
134                    "$ xns" : "Gtk",
135                    "* prop" : "filter",
136                    "id" : "vapi_filter",
137                    "items" : [
138                     {
139                      "$ xns" : "Gtk",
140                      "* prop" : "expression",
141                      "GLib.Type this_type" : "typeof(Project.VapiSelection)",
142                      "string property_name" : "sortkey",
143                      "xtype" : "PropertyExpression"
144                     }
145                    ],
146                    "xtype" : "StringFilter"
147                   }
148                  ],
149                  "xtype" : "FilterListModel"
150                 }
151                ],
152                "xtype" : "NoSelection"
153               },
154               {
155                "$ xns" : "Gtk",
156                "* pack" : "append_column",
157                "bool expand" : true,
158                "items" : [
159                 {
160                  "$ xns" : "Gtk",
161                  "* prop" : "factory",
162                  "listeners" : {
163                   "bind" : [
164                    "(listitem) => {",
165                    " ",
166                    "\tvar lbl = (Gtk.Box)  ((Gtk.ListItem)listitem).get_child();",
167                    "\t   ",
168                    "\tvar item = (Project.VapiSelection)  ((Gtk.ListItem)listitem).get_item();",
169                    "",
170                    "\titem.bind_property(\"name\",",
171                    "                lbl, \"label\",",
172                    "           GLib.BindingFlags.SYNC_CREATE);",
173                    "",
174                    "\t  ",
175                    "}",
176                    ""
177                   ],
178                   "setup" : [
179                    "(item) => {",
180                    "\t//var j = (JsRender.JsRender) item;",
181                    "\tvar gi = (Gtk.ListItem)item;",
182                    "\t ",
183                    "\tvar lbl = new Gtk.Label(\"\");",
184                    "\tlbl.halign = Gtk.Align.START;",
185                    "\tgi.set_child(lbl);",
186                    "",
187                    "",
188                    "",
189                    "}",
190                    ""
191                   ]
192                  },
193                  "xtype" : "SignalListItemFactory"
194                 }
195                ],
196                "string title" : "Vapi Package",
197                "xtype" : "ColumnViewColumn"
198               },
199               {
200                "$ xns" : "Gtk",
201                "* pack" : "append_column",
202                "items" : [
203                 {
204                  "$ xns" : "Gtk",
205                  "* prop" : "factory",
206                  "listeners" : {
207                   "bind" : [
208                    "(listitem) => {",
209                    "\t //GLib.debug(\"listitme is is %s\", ((Gtk.ListItem)listitem).get_type().name());",
210                    "\t",
211                    "\t",
212                    "\t",
213                    "\t//var expand = (Gtk.TreeExpander) ((Gtk.ListItem)listitem).get_child();",
214                    "\tvar btn = (Gtk.CheckButton)  ((Gtk.ListItem)listitem).get_child();",
215                    "\t  ",
216                    " ",
217                    "\tvar vs = (Project.VapiSelection)((Gtk.ListItem)listitem).get_item();",
218                    "",
219                    "\t//GLib.debug(\"change  %s to %s\", lbl.label, np.name);",
220                    "",
221                    "\tbtn.active = vs.selected; ",
222                    "\t",
223                    "\tvs.btn = btn;",
224                    " \t// bind image...",
225                    " \t",
226                    "}"
227                   ],
228                   "setup" : [
229                    "",
230                    "(listitem) => {",
231                    "",
232                    "\tvar btn = new Gtk.CheckButton();",
233                    " ",
234                    "\t((Gtk.ListItem)listitem).set_child(btn);",
235                    "\t",
236                    "\tbtn.toggled.connect(() =>  {",
237                    "\t ",
238                    "\t\tvar jr = (Project.VapiSelection) ((Gtk.ListItem)listitem).get_item();",
239                    "\t\tjr.selected = btn.active;",
240                    "\t});",
241                    "}",
242                    ""
243                   ]
244                  },
245                  "xtype" : "SignalListItemFactory"
246                 }
247                ],
248                "string title" : "use",
249                "xtype" : "ColumnViewColumn"
250               }
251              ],
252              "xtype" : "ColumnView"
253             }
254            ],
255            "xtype" : "ScrolledWindow"
256           },
257           {
258            "$ xns" : "Gtk",
259            "id" : "vapi_search",
260            "listeners" : {
261             "search_changed" : [
262              "( ) => {",
263              "",
264              " _this.vapi_filter.el.set_search(this.el.get_text());",
265              " ",
266              "}",
267              ""
268             ]
269            },
270            "string placeholder_text" : "Search Libraries (Vapi)",
271            "uint search_delay" : 500,
272            "xtype" : "SearchEntry"
273           }
274          ],
275          "xtype" : "Box"
276         },
277         {
278          "$ xns" : "Gtk",
279          "* pack" : "append_page,_this.label_targets.el",
280          "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
281          "bool vexpand" : true,
282          "gint position" : 300,
283          "items" : [
284           {
285            "$ xns" : "Gtk",
286            "* pack" : "set_end_child",
287            "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
288            "gboolean homogeneous" : false,
289            "id" : "set_vbox",
290            "items" : [
291             {
292              "$ xns" : "Gtk",
293              "bool vexpand" : true,
294              "items" : [
295               {
296                "$ xns" : "Gtk",
297                "* prop" : "child",
298                "id" : "treeview",
299                "items" : [
300                 {
301                  "$ xns" : "Gtk",
302                  "* prop" : "model",
303                  "id" : "treeselmodel",
304                  "items" : [
305                   {
306                    "$ xns" : "Gtk",
307                    "* prop" : "model",
308                    "items" : [
309                     {
310                      "$ xns" : "Gtk",
311                      "* init" : [
312                       "{",
313                       "\t//this.el.set_sorter(new Gtk.TreeListRowSorter(_this.treeview.el.sorter));",
314                       "}",
315                       ""
316                      ],
317                      "* prop" : "model",
318                      "id" : "treelistsort",
319                      "items" : [
320                       {
321                        "$ xns" : "Gtk",
322                        "* prop" : "model",
323                        "Gtk.TreeListModelCreateModelFunc create_func" : [
324                         "(item) => {",
325                         "\t//GLib.debug(\"liststore got %s\", item.get_type().name());",
326                         "\treturn ((JsRender.JsRender)item).childfiles;",
327                         "} "
328                        ],
329                        "bool autoexpand" : true,
330                        "bool passthrough" : false,
331                        "id" : "treelistmodel",
332                        "items" : [
333                         {
334                          "$ xns" : "GLib",
335                          "* prop" : "root",
336                          "GLib.Type item_type" : "typeof(JsRender.JsRender)",
337                          "id" : "treemodel",
338                          "xtype" : "ListStore"
339                         }
340                        ],
341                        "xtype" : "TreeListModel"
342                       },
343                       {
344                        "$ xns" : "Gtk",
345                        "* prop" : "sorter",
346                        "items" : [
347                         {
348                          "$ xns" : "Gtk",
349                          "* prop" : "sorter",
350                          "items" : [
351                           {
352                            "$ xns" : "Gtk",
353                            "* prop" : "expression",
354                            "GLib.Type this_type" : "typeof(JsRender.JsRender)",
355                            "string property_name" : "name",
356                            "xtype" : "PropertyExpression"
357                           }
358                          ],
359                          "xtype" : "StringSorter"
360                         }
361                        ],
362                        "xtype" : "TreeListRowSorter"
363                       }
364                      ],
365                      "xtype" : "SortListModel"
366                     },
367                     {
368                      "$ xns" : "Gtk",
369                      "* prop" : "filter",
370                      "Gtk.CustomFilterFunc match_func" : [
371                       "(item) => { ",
372                       "\t",
373                       "\tvar tr = ((Gtk.TreeListRow)item).get_item();",
374                       "\t//GLib.debug(\"filter %s\", tr.get_type().name());",
375                       "\tvar j =  (JsRender.JsRender) tr;",
376                       "\tif (j.xtype == \"Gtk\") {",
377                       "\t\treturn true;",
378                       "\t}",
379                       "\tif (j.xtype != \"Dir\") {",
380                       "\t\treturn j.path.has_suffix(\".vala\") ||  j.path.has_suffix(\".c\");",
381                       "\t}",
382                       "\t// dirs..",
383                       "\t ",
384                       "\tfor (var i =0 ; i < j.childfiles.n_items; i++) {",
385                       "\t\tvar f = (JsRender.JsRender) j.childfiles.get_item(i);",
386                       "\t\tif (f.xtype == \"Gtk\") {",
387                       "\t\t\treturn true;",
388                       "\t\t}",
389                       "\t\tif (f.path.has_suffix(\".vala\") ||  f.path.has_suffix(\".c\")) {",
390                       "\t\t\treturn true;",
391                       "\t\t}",
392                       "\t}",
393                       "\treturn false;",
394                       "",
395                       "}"
396                      ],
397                      "xtype" : "CustomFilter"
398                     }
399                    ],
400                    "xtype" : "FilterListModel"
401                   }
402                  ],
403                  "xtype" : "SingleSelection"
404                 },
405                 {
406                  "$ xns" : "Gtk",
407                  "* init" : [
408                   "{",
409                   "\t this.el.set_sorter(  new Gtk.StringSorter(",
410                   "\t \tnew Gtk.PropertyExpression(typeof(JsRender.JsRender), null, \"name\")",
411                   " \t));",
412                   "\t\t;",
413                   "\t\t",
414                   "}",
415                   ""
416                  ],
417                  "* pack" : "append_column",
418                  "bool expand" : true,
419                  "bool resizable" : true,
420                  "id" : "name",
421                  "items" : [
422                   {
423                    "$ xns" : "Gtk",
424                    "* prop" : "factory",
425                    "listeners" : {
426                     "bind" : [
427                      "(listitem) => {",
428                      "\t //GLib.debug(\"listitme is is %s\", ((Gtk.ListItem)listitem).get_type().name());",
429                      "\t",
430                      "\t",
431                      "\t",
432                      "\t//var expand = (Gtk.TreeExpander) ((Gtk.ListItem)listitem).get_child();",
433                      "\tvar expand = (Gtk.TreeExpander)  ((Gtk.ListItem)listitem).get_child();",
434                      "\t  ",
435                      " ",
436                      "\tvar lbl = (Gtk.Label) expand.child;",
437                      "\t",
438                      "\t if (lbl.label != \"\") { // do not update",
439                      "\t \treturn;",
440                      " \t}",
441                      "\t",
442                      "",
443                      "\tvar lr = (Gtk.TreeListRow)((Gtk.ListItem)listitem).get_item();",
444                      "\tvar jr = (JsRender.JsRender) lr.get_item();",
445                      "\t//GLib.debug(\"change  %s to %s\", lbl.label, np.name);",
446                      "\tlbl.label = jr.name; // for dir's we could hsow the sub path..",
447                      "\tlbl.tooltip_markup = jr.path;",
448                      "\t ",
449                      "    expand.set_hide_expander(  jr.childfiles.n_items < 1);",
450                      " \texpand.set_list_row(lr);",
451                      " ",
452                      "   expand.set_hide_expander(  jr.xtype != \"Dir\" );",
453                      " \t expand.set_list_row(lr);",
454                      " ",
455                      " \t// bind image...",
456                      " \t",
457                      "}",
458                      ""
459                     ],
460                     "setup" : [
461                      "(listitem) => {",
462                      "\t",
463                      "\tvar expand = new Gtk.TreeExpander();",
464                      "\t ",
465                      "\texpand.set_indent_for_depth(true);",
466                      "\texpand.set_indent_for_icon(true);",
467                      "\t ",
468                      "\tvar lbl = new Gtk.Label(\"\");",
469                      "\tlbl.use_markup = true;",
470                      "\t",
471                      "\t",
472                      " \tlbl.justify = Gtk.Justification.LEFT;",
473                      " \tlbl.xalign = 0;",
474                      "",
475                      " ",
476                      "\texpand.set_child(lbl);",
477                      "\t((Gtk.ListItem)listitem).set_child(expand);",
478                      "\t((Gtk.ListItem)listitem).activatable = false;",
479                      "}",
480                      ""
481                     ]
482                    },
483                    "xtype" : "SignalListItemFactory"
484                   }
485                  ],
486                  "string title" : "Other Files",
487                  "xtype" : "ColumnViewColumn"
488                 },
489                 {
490                  "$ xns" : "Gtk",
491                  "* pack" : "append_column",
492                  "items" : [
493                   {
494                    "$ xns" : "Gtk",
495                    "* prop" : "factory",
496                    "listeners" : {
497                     "bind" : [
498                      "(listitem) => {",
499                      "\t //GLib.debug(\"listitme is is %s\", ((Gtk.ListItem)listitem).get_type().name());",
500                      "\t",
501                      "\t",
502                      "\t",
503                      "\t//var expand = (Gtk.TreeExpander) ((Gtk.ListItem)listitem).get_child();",
504                      "\tvar btn = (Gtk.CheckButton)  ((Gtk.ListItem)listitem).get_child();",
505                      "\t  ",
506                      " ",
507                      "\tvar lr = (Gtk.TreeListRow)((Gtk.ListItem)listitem).get_item();",
508                      "\tvar jr = (JsRender.JsRender) lr.get_item();",
509                      "\t//GLib.debug(\"change  %s to %s\", lbl.label, np.name);",
510                      "",
511                      "\t",
512                      "\t ",
513                      " \tjr.bind_property(\"compile_group_selected\",",
514                      "                    btn, \"active\",",
515                      "                   GLib.BindingFlags.SYNC_CREATE); ",
516                      " \t// bind image...",
517                      " \t",
518                      "}"
519                     ],
520                     "setup" : [
521                      "",
522                      "(listitem) => {",
523                      "",
524                      "\tvar btn = new Gtk.CheckButton();",
525                      " ",
526                      "\t((Gtk.ListItem)listitem).set_child(btn);",
527                      "\t",
528                      "\tbtn.toggled.connect(() =>  {",
529                      "\t ",
530                      "\t\tvar lr = (Gtk.TreeListRow)((Gtk.ListItem)listitem).get_item();",
531                      "\t\tvar jr = (JsRender.JsRender) lr.get_item();",
532                      "\t\tjr.compile_group_selected = btn.active;",
533                      "\t\t",
534                      "\t\t",
535                      "\t});",
536                      "}",
537                      ""
538                     ]
539                    },
540                    "xtype" : "SignalListItemFactory"
541                   }
542                  ],
543                  "string title" : "use",
544                  "xtype" : "ColumnViewColumn"
545                 }
546                ],
547                "xtype" : "ColumnView"
548               }
549              ],
550              "xtype" : "ScrolledWindow"
551             }
552            ],
553            "xtype" : "Box"
554           },
555           {
556            "$ xns" : "Gtk",
557            "* prop" : "start_child",
558            "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
559            "int spacing" : 0,
560            "items" : [
561             {
562              "$ xns" : "Gtk",
563              "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
564              "bool hexpand" : true,
565              "int spacing" : 0,
566              "items" : [
567               {
568                "$ xns" : "Gtk",
569                "bool hexpand" : true,
570                "listeners" : {
571                 "clicked" : [
572                  "()  => {",
573                  "    ",
574                  "       if (_this.project.compilegroups.has_key(\"NEW GROUP\")) {",
575                  "        return;",
576                  "    }",
577                  "    var cg = new Project.GtkValaSettings(_this.project, \"NEW GROUP\");",
578                  "    _this.project.compilegroups.set(cg.name, cg);",
579                  "     _this.project.loadTargetsIntoStore(_this.target_model.el);",
580                  "     //  select it.. ?? should load it??",
581                  "     for(var i =0;i < _this.target_model.el.n_items; i++) {",
582                  "     \tvar ncg = (Project.GtkValaSettings) _this.target_model.el.get_item(i);",
583                  "     \tif (ncg.name == cg.name) {",
584                  "     \t\t_this.target_sel.el.selected = i;",
585                  "     \t\t_this.target_sel.selectTarget(cg);",
586                  "     \t\tbreak;",
587                  " \t\t}",
588                  "\t} ",
589                  "\t",
590                  "\t",
591                  "\t ",
592                  "}"
593                 ]
594                },
595                "utf8 label" : "Add Compile Target",
596                "xtype" : "Button"
597               },
598               {
599                "$ xns" : "Gtk",
600                "bool hexpand" : true,
601                "listeners" : {
602                 "clicked" : [
603                  "()  => {",
604                  "    // load the new values.",
605                  "\tif (_this.target_sel.el.selected == Gtk.INVALID_LIST_POSITION) {",
606                  "\t\tGLib.debug(\"nothing selected\");",
607                  "\t\treturn;",
608                  "\t}",
609                  "\t",
610                  "\t ",
611                  "\t// add the directory..",
612                  "\tvar cg = (Project.GtkValaSettings) _this.target_model.el.get_item(_this.target_sel.el.selected);",
613                  "\t ",
614                  "\t ",
615                  "\tGLib.debug(\"remove: %s\\n\", cg.name);",
616                  "\tif (!_this.project.compilegroups.unset(cg.name)) {",
617                  "\t\tGLib.debug(\"remove failed\");",
618                  "\t}",
619                  " \t_this.project.loadTargetsIntoStore(_this.target_model.el);",
620                  "}"
621                 ]
622                },
623                "utf8 label" : "Remove Target",
624                "xtype" : "Button"
625               }
626              ],
627              "xtype" : "Box"
628             },
629             {
630              "$ xns" : "Gtk",
631              "* init" : [
632               "{  ",
633               "this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);",
634               "",
635               "}",
636               ""
637              ],
638              "bool vexpand" : true,
639              "items" : [
640               {
641                "$ xns" : "Gtk",
642                "* prop" : "child",
643                "items" : [
644                 {
645                  "$ xns" : "Gtk",
646                  "* prop" : "model",
647                  "id" : "target_sel",
648                  "items" : [
649                   {
650                    "$ xns" : "GLib",
651                    "* prop" : "model",
652                    "GLib.Type item_type" : "typeof(Project.GtkValaSettings)",
653                    "id" : "target_model",
654                    "xtype" : "ListStore"
655                   }
656                  ],
657                  "listeners" : {
658                   "selection_changed" : [
659                    "(position, n_items) => {",
660                    "",
661                    "\t ",
662                    "\t// load the new values.",
663                    "\tif (this.el.selected == Gtk.INVALID_LIST_POSITION) {",
664                    "\t\tthis.selectTarget(null);",
665                    "\t\treturn;",
666                    "\t}",
667                    "\tthis.selectTarget(null);",
668                    "\t",
669                    " ",
670                    "",
671                    "\t// add the directory..",
672                    "\tvar cg = (Project.GtkValaSettings) _this.target_model.el.get_item(this.el.selected);",
673                    "\t",
674                    "\tthis.selectTarget(cg);",
675                    "   ",
676                    "}",
677                    ""
678                   ]
679                  },
680                  "xtype" : "SingleSelection",
681                  "| void selectTarget" : [
682                   "(Project.GtkValaSettings? cg) {",
683                   "// load the new values",
684                   "\t _this.selected_target = cg;  ",
685                   "\t _this.project.active_cg = cg;",
686                   "\t ",
687                   "",
688                   "\tif (cg == null) {",
689                   "\t\t ",
690                   "\t\t_this.set_vbox.el.hide();\t",
691                   "\t\t_this.set_vboxb.el.hide();\t",
692                   "\t\treturn;",
693                   "\t}",
694                   "\t",
695                   "\t",
696                   "\t_this.set_vbox.el.show();",
697                   "\t_this.set_vboxb.el.show();",
698                   "\t// add the directory..",
699                   " ",
700                   "\t ",
701                   "\t GLib.debug(\"loading dirs into project list\");",
702                   "\t cg.loading_ui = true;",
703                   "\t ",
704                   "",
705                   "\t  _this.treeview.el.set_model(new Gtk.SingleSelection(null));",
706                   "\t  _this.project.loadDirsIntoStore(_this.treemodel.el);",
707                   " \t  _this.treeview.el.set_model(_this.treeselmodel.el);",
708                   "\t  ",
709                   "\t cg.loading_ui = false;",
710                   "\t GLib.debug(\"Set name to %s\", cg.name);",
711                   "\t ",
712                   " \t_this.build_name.el.buffer.set_text(cg.name.data);",
713                   " ",
714                   " ",
715                   "\t_this.build_execute_args.el.buffer.set_text(  cg.execute_args.data );",
716                   "",
717                   " ",
718                   "}",
719                   ""
720                  ]
721                 },
722                 {
723                  "$ xns" : "Gtk",
724                  "* pack" : "append_column",
725                  "bool expand" : true,
726                  "items" : [
727                   {
728                    "$ xns" : "Gtk",
729                    "* prop" : "factory",
730                    "listeners" : {
731                     "bind" : [
732                      "(listitem) => {",
733                      " ",
734                      "\tvar lbl = (Gtk.Box)  ((Gtk.ListItem)listitem).get_child();",
735                      "\t   ",
736                      "\tvar item = (Project.GtkValaSettings)  ((Gtk.ListItem)listitem).get_item();",
737                      "",
738                      "\titem.bind_property(\"name\",",
739                      "                lbl, \"label\",",
740                      "           GLib.BindingFlags.SYNC_CREATE);",
741                      "",
742                      "\t  ",
743                      "}",
744                      ""
745                     ],
746                     "setup" : [
747                      "(item) => {",
748                      "\t//var j = (JsRender.JsRender) item;",
749                      "\tvar gi = (Gtk.ListItem)item;",
750                      "\t ",
751                      "\tvar lbl = new Gtk.Label(\"\");",
752                      "\tlbl.halign = Gtk.Align.START;",
753                      "\tgi.set_child(lbl);",
754                      "",
755                      "",
756                      "",
757                      "}",
758                      ""
759                     ]
760                    },
761                    "xtype" : "SignalListItemFactory"
762                   }
763                  ],
764                  "string title" : "Build Target",
765                  "xtype" : "ColumnViewColumn"
766                 }
767                ],
768                "xtype" : "ColumnView"
769               }
770              ],
771              "xtype" : "ScrolledWindow"
772             },
773             {
774              "$ xns" : "Gtk",
775              "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
776              "id" : "set_vboxb",
777              "int spacing" : 0,
778              "items" : [
779               {
780                "$ xns" : "Gtk",
781                "utf8 label" : "Build Name (executable name)",
782                "xtype" : "Label"
783               },
784               {
785                "$ xns" : "Gtk",
786                "id" : "build_name",
787                "listeners" : {
788                 "changed" : [
789                  "()  => {",
790                  "\tif (_this.selected_target == null) {",
791                  "\t\treturn;",
792                  "\t}",
793                  "\tvar name = this.el.text;",
794                  "\t// name ischanging.. probably always..",
795                  "\tif (_this.selected_target.name != name) {",
796                  "\t\t_this.project.compilegroups.unset(_this.selected_target.name);",
797                  "\t\t_this.project.compilegroups.set(name, _this.selected_target);",
798                  "\t}",
799                  "",
800                  "\t_this.selected_target.name = this.el.buffer.text;",
801                  "}"
802                 ]
803                },
804                "xtype" : "Entry"
805               },
806               {
807                "$ xns" : "Gtk",
808                "utf8 label" : "test argments - when run after a build",
809                "xtype" : "Label"
810               },
811               {
812                "$ xns" : "Gtk",
813                "id" : "build_execute_args",
814                "listeners" : {
815                 "changed" : [
816                  "() => {",
817                  "    if (_this.selected_target == null) {",
818                  "        return;",
819                  "    }",
820                  "    _this.selected_target.execute_args = this.el.buffer.text;",
821                  "    ",
822                  "}"
823                 ]
824                },
825                "string placeholder_text" : "eg.  -f somefile -g ",
826                "xtype" : "Entry"
827               }
828              ],
829              "xtype" : "Box"
830             }
831            ],
832            "xtype" : "Box"
833           }
834          ],
835          "xtype" : "Paned"
836         }
837        ],
838        "xtype" : "Notebook"
839       },
840       {
841        "$ Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
842        "$ xns" : "Gtk",
843        "bool hexpand" : true,
844        "int margin_bottom" : 4,
845        "int margin_end" : 4,
846        "int margin_start" : 4,
847        "int margin_top" : 4,
848        "items" : [
849         {
850          "$ xns" : "Gtk",
851          "listeners" : {
852           "clicked" : [
853            "() => { ",
854            "",
855            "  _this.done = true;",
856            "    _this.el.hide(); ",
857            "}"
858           ]
859          },
860          "string label" : "Cancel",
861          "xtype" : "Button"
862         },
863         {
864          "$ xns" : "Gtk",
865          "bool hexpand" : true,
866          "string label" : "",
867          "xtype" : "Label"
868         },
869         {
870          "$ xns" : "Gtk",
871          "css_classes" : "{ \"suggested-action\" }",
872          "id" : "save_btn",
873          "listeners" : {
874           "clicked" : [
875            "( ) =>  { ",
876            "",
877            " ",
878            "_this.project.save(); ",
879            " ",
880            "\t// what about .js ?",
881            "_this.done = true;",
882            "_this.el.hide();",
883            "if (_this.doneObj != null) {",
884            "\t_this.doneObj.call(_this.project);",
885            "}",
886            " ",
887            "   ",
888            "}"
889           ]
890          },
891          "string label" : "Save",
892          "xtype" : "Button"
893         }
894        ],
895        "xtype" : "Box"
896       }
897      ],
898      "xtype" : "Box"
899     }
900    ],
901    "listeners" : {
902     "close_request" : [
903      "( ) => {",
904      "\tif (!this.done) {",
905      "\t\treturn true;",
906      "\t}",
907      "\treturn false;",
908      "}",
909      ""
910     ],
911     "hide" : [
912      "() => {",
913      "\t  if (!this.done) {",
914      "    _this.el.show();",
915      "  ",
916      "  }",
917      "}"
918     ]
919    },
920    "uint border_width" : 0,
921    "xtype" : "Window",
922    "| void save" : [
923     "()  {",
924     "    this.project.save(); ",
925     "}"
926    ],
927    "| void show" : [
928     "(Gtk.Window pwin, Project.Gtk project, Project.Callback? doneObj) {",
929     "     ",
930     "    //print(\"ValaProjectSettings show\\n\");",
931     "    this.doneObj = doneObj;",
932     "    this.project=  project;",
933     "\t ",
934     "    this.compile_flags.el.buffer.set_text(",
935     "    \tproject.compile_flags.data",
936     "\t);",
937     "\t   ",
938     "    project.loadVapiIntoStore(_this.vapimodel.el);",
939     "     GLib.Timeout.add(500, () => {",
940     " \t\t this.vapi_scroll.el.vadjustment.value  = 0;\t ",
941     "\t     return false;",
942     "     });",
943     "    ",
944     "   ",
945     " \t",
946     " \tproject.loadTargetsIntoStore(this.target_model.el);",
947     "\t",
948     " \t_this.target_sel.el.selected = Gtk.INVALID_LIST_POSITION;",
949     "\t_this.target_sel.selectTarget(null);",
950     "//\tGtk.Allocation rect;",
951     "\t//btn.get_allocation(out rect);",
952     " //   this.el.set_pointing_to(rect);",
953     " this.el.application = pwin.application; // ??? make it modal?",
954     "\t this.el.set_transient_for(pwin);",
955     "\t ",
956     "\t// window + header?",
957     "\t// print(\"SHOWALL - POPIP\\n\");",
958     "\tthis.el.set_size_request(800,800);",
959     "\tthis.el.show();",
960     "\tthis.notebook.el.page = 0; // first page.",
961     "\t",
962     "\t//this.view.el.grab_focus();",
963     "",
964     "}",
965     ""
966    ]
967   }
968  ],
969  "name" : "ValaProjectSettingsPopover"
970 }