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