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