src/Builder4/MainWindow.bjs
[app.Builder.js] / src / Builder4 / MainWindow.bjs
1 {
2  "name" : "MainWindow",
3  "parent" : "",
4  "title" : "",
5  "path" : "/home/alan/gitlive/app.Builder.js/src/Builder4/MainWindow.bjs",
6  "permname" : "",
7  "modOrder" : "",
8  "build_module" : "builder",
9  "items" : [
10   {
11    "listeners" : {
12     "delete_event" : "  (   event) => {\n    return false;\n}",
13     "destroy" : "() =>  {\n Xcls_MainWindow.singleton().no_windows--;\n \n Resources.singleton().disconnect(_this.statusbar.handler_id);\n \n \n if (Xcls_MainWindow.singleton().no_windows < 1) {\n\n     Gtk.main_quit();\n }\n}",
14     "show" : "  ( ) => {\n    // hide the file editing..\n   \n    //this.hideViewEditing();\n    _this.statusbar.el.hide();\n     _this.statusbar_errors.el.hide();\n    _this.statusbar_warnings.el.hide();\n    _this.statusbar_depricated.el.hide();\n    \n  \n    Resources.singleton().checkResources();\n\n}"
15    },
16    "id" : "MainWindow",
17    "default_width" : 800,
18    "* init" : " \n\t  \n    //this.el.show_all();\n    \n     ",
19    "# Project.Project project" : "null",
20    "# string title" : "\"Application Builder\"",
21    "xtype" : "Window",
22    "# int no_windows" : 1,
23    "default_height" : 500,
24    "|        void initChildren" : " () {\n    // this needs putting in a better place..\n    this.windowstate = new WindowState(this);\n     \n\n    //w.el.show_all();\n    var tl = new Clutter.Timeline(6000);\n    tl.set_repeat_count(-1);\n    tl.start();\n    tl.ref();\n\n    \n\n\n\n}\n",
25    "$ xns" : "Gtk",
26    "|             void show" : "() {\n   \n    this.el.show_all();\n\n}",
27    "# WindowState windowstate" : "null",
28    "border_width" : 0,
29    "$ type" : "Gtk.WindowType.TOPLEVEL",
30    "|             void setTitle" : " (string str) {\n    this.headerbar.el.set_title(this.title + \" - \" + str);\n} \n",
31    "items" : [
32     {
33      "id" : "headerbar",
34      "xtype" : "HeaderBar",
35      "* pack" : "set_titlebar",
36      "bool show_close_button" : true,
37      "$ xns" : "Gtk",
38      "string title" : "Application Builder",
39      "items" : [
40       {
41        "* pack" : "pack_start",
42        "xtype" : "Box",
43        "$ xns" : "Gtk",
44        "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
45        "items" : [
46         {
47          "bool use_popover" : false,
48          "xtype" : "MenuButton",
49          "* pack" : "add",
50          "$ xns" : "Gtk",
51          "items" : [
52           {
53            "id" : "topbarmenu",
54            "* init" : "{\n    this.el.show_all();\n}\n",
55            "xtype" : "Menu",
56            "* pack" : "set_popup",
57            "$ xns" : "Gtk",
58            "items" : [
59             {
60              "listeners" : {
61               "activate" : "  ( ) => {\n        Xcls_MainWindow.singleton().no_windows++;\n        var w = new Xcls_MainWindow();\n        w.ref();\n\n        w.el.show_all();\n        w.initChildren();\n        w.windowstate.switchState(WindowState.State.FILES);\n}"
62              },
63              "string label" : "Open a new Window",
64              "* pack" : "append",
65              "xtype" : "MenuItem",
66              "$ xns" : "Gtk"
67             },
68             {
69              "* pack" : "append",
70              "xtype" : "SeparatorMenuItem",
71              "$ xns" : "Gtk"
72             },
73             {
74              "listeners" : {
75               "activate" : " ( ) => {\n         Resources.singleton().fetchStart();\n}"
76              },
77              "xtype" : "MenuItem",
78              "string label" : "Download updated Resources",
79              "* pack" : "append",
80              "$ xns" : "Gtk"
81             },
82             {
83              "listeners" : {
84               "activate" : "() => {\n    About.singleton().el.show();\n    }"
85              },
86              "* pack" : "append",
87              "xtype" : "MenuItem",
88              "string label" : "About the Builder",
89              "$ xns" : "Gtk"
90             }
91            ]
92           },
93           {
94            "utf8 icon_name" : "help-about",
95            "* pack" : "set_image",
96            "xtype" : "Image",
97            "$ xns" : "Gtk"
98           }
99          ]
100         }
101        ]
102       }
103      ]
104     },
105     {
106      "id" : "vbox",
107      "* pack" : "add",
108      "xtype" : "Box",
109      "$ xns" : "Gtk",
110      "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
111      "$ homogeneous" : false,
112      "items" : [
113       {
114        "id" : "mainpane",
115        "position" : 400,
116        "* pack" : "pack_start,true,true,0",
117        "# int lastWidth" : 0,
118        "xtype" : "Paned",
119        "$ xns" : "Gtk",
120        "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
121        "items" : [
122         {
123          "id" : "leftpane",
124          "xtype" : "Box",
125          "* pack" : "add1",
126          "$ xns" : "Gtk",
127          "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
128          "items" : [
129           {
130            "id" : "editpane",
131            "xtype" : "VPaned",
132            "* pack" : "pack_start,false,true,0",
133            "$ xns" : "Gtk",
134            "items" : [
135             {
136              "id" : "tree",
137              "xtype" : "VBox",
138              "* pack" : "add1",
139              "$ xns" : "Gtk"
140             },
141             {
142              "id" : "props",
143              "xtype" : "VBox",
144              "* pack" : "add2",
145              "$ xns" : "Gtk"
146             }
147            ]
148           }
149          ]
150         },
151         {
152          "* pack" : "add2",
153          "xtype" : "VBox",
154          "$ xns" : "Gtk",
155          "items" : [
156           {
157            "listeners" : {
158             "size_allocate" : "  (  alloc) => {\n    if (_this.windowstate == null) {\n        return;\n    }\n    _this.windowstate.resizeCanvas(); \n        \n}"
159            },
160            "id" : "clutterembed",
161            "* init" : "    var stage = this.el.get_stage();\n    stage.set_background_color(  Clutter.Color.from_string(\"#000\"));\n    \n    \n",
162            "xtype" : "Embed",
163            "* pack" : "pack_start,true,true,0",
164            "$ xns" : "GtkClutter",
165            "items" : [
166             {
167              "id" : "rooview",
168              "* init" : "{\n   \n   \n    this.el.add_constraint(\n        new Clutter.AlignConstraint(\n            _this.clutterembed.el.get_stage(), \n            Clutter.AlignAxis.X_AXIS,\n            1.0f\n        )\n    );\n        \n    //this.el.set_position(100,100);\n    this.el.set_pivot_point(1.0f,1.0f);\n    \n    this.el.set_size(_this.clutterembed.el.get_stage().width-50,\n            _this.clutterembed.el.get_stage().height);\n            \n}",
169              "xtype" : "Actor",
170              "* pack" : "get_stage().add_child",
171              "$ xns" : "GtkClutter"
172             },
173             {
174              "id" : "objectview",
175              "* init" : "{\n   \n   /*\n    this.el.add_constraint(\n        new Clutter.AlignConstraint(\n            _this.clutterembed.el.get_stage(), \n            Clutter.AlignAxis.X_AXIS,\n            0.0f\n        )\n    );\n    */\n    this.el.fixed_x = 50.0f;\n    this.el.fixed_y = 0.0f;\n    //this.el.set_position(100,100);\n    this.el.set_pivot_point(0.0f,0.0f);\n    this.el.set_scale(0.0f,1.0f);\n    this.el.set_size((_this.clutterembed.el.get_stage().width-50)/2,\n            _this.clutterembed.el.get_stage().height);\n            \n}",
176              "xtype" : "Actor",
177              "* pack" : "get_stage().add_child",
178              "$ xns" : "GtkClutter"
179             },
180             {
181              "id" : "codeeditview",
182              "* init" : "{\n   \n   /*\n    this.el.add_constraint(\n        new Clutter.AlignConstraint(\n            _this.clutterembed.el.get_stage(), \n            Clutter.AlignAxis.X_AXIS,\n            0.0f\n        )\n    );\n    */\n    this.el.fixed_x = 50.0f;\n    this.el.fixed_y = 0.0f;\n    //this.el.set_position(100,100);\n    this.el.set_pivot_point(0.0f,0.0f);\n    this.el.set_scale(0.0f,1.0f);\n    this.el.set_size((_this.clutterembed.el.get_stage().width-50)/2,\n            _this.clutterembed.el.get_stage().height);\n            \n}",
183              "xtype" : "Actor",
184              "* pack" : "get_stage().add_child",
185              "$ xns" : "GtkClutter"
186             },
187             {
188              "id" : "addpropsview",
189              "* init" : "{\n   \n   /*\n    this.el.add_constraint(\n        new Clutter.AlignConstraint(\n            _this.clutterembed.el.get_stage(), \n            Clutter.AlignAxis.X_AXIS,\n            0.0f\n        )\n    );\n    */\n    this.el.fixed_x = 50.0f;\n    this.el.fixed_y = 0.0f;\n    //this.el.set_position(100,100);\n    this.el.set_pivot_point(0.0f,0.0f);\n    this.el.set_scale(0.0f,1.0f);\n    this.el.set_size((_this.clutterembed.el.get_stage().width-50)/2,\n            _this.clutterembed.el.get_stage().height);\n            \n}",
190              "xtype" : "Actor",
191              "* pack" : "get_stage().add_child",
192              "$ xns" : "GtkClutter"
193             },
194             {
195              "id" : "projecteditview",
196              "* init" : "{\n   \n   \n    this.el.add_constraint(\n        new Clutter.AlignConstraint(\n            _this.clutterembed.el.get_stage(), \n            Clutter.AlignAxis.X_AXIS,\n            1.0f\n        )\n    );\n        \n    //this.el.set_position(100,100);\n    this.el.set_pivot_point(0.0f,0.0f);\n    this.el.set_scale(1.0f,0.0f);\n    this.el.set_size(_this.clutterembed.el.get_stage().width-50,\n            _this.clutterembed.el.get_stage().height /2);\n            \n}",
197              "xtype" : "Actor",
198              "* pack" : "get_stage().add_child",
199              "$ xns" : "GtkClutter"
200             },
201             {
202              "id" : "buttonlayout",
203              "* init" : "{\n    \n    this.el.add_constraint(\n        new Clutter.AlignConstraint(\n            _this.clutterembed.el.get_stage(), \n            Clutter.AlignAxis.X_AXIS,\n            0.0f\n        )\n    );\n     \n    \n    //this.el.set_position(100,100);\n    this.el.set_pivot_point(0.5f,0.5f);\n     this.el.set_size(50,\n           _this.clutterembed.el.get_stage().height);\n     \n}",
204              "xtype" : "Actor",
205              "* pack" : "get_stage().add_child",
206              "$ xns" : "Clutter",
207              "items" : [
208               {
209                "$ orientation" : "Clutter.Orientation.VERTICAL",
210                "xtype" : "BoxLayout",
211                "$ xns" : "Clutter",
212                "* prop" : "layout_manager"
213               },
214               {
215                "id" : "backbutton",
216                "* init" : "this.el.set_size(50,50);",
217                "xtype" : "Actor",
218                "* pack" : "add_child",
219                "$ xns" : "Clutter",
220                "items" : [
221                 {
222                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
223                  "xtype" : "Actor",
224                  "* pack" : "add_child",
225                  "$ xns" : "GtkClutter",
226                  "items" : [
227                   {
228                    "listeners" : {
229                     "clicked" : "  ( ) => {\n  \n    _this.windowstate.switchState(WindowState.State.PREVIEW);\n    \n\n}"
230                    },
231                    "utf8 tooltip_text" : "Back",
232                    "* pack" : false,
233                    "xtype" : "Button",
234                    "width_request" : 50,
235                    "$ xns" : "Gtk",
236                    "height_request" : 50,
237                    "items" : [
238                     {
239                      "xtype" : "Image",
240                      "utf8 icon_name" : "go-previous",
241                      "* pack" : "set_image",
242                      "$ xns" : "Gtk"
243                     }
244                    ]
245                   }
246                  ]
247                 }
248                ]
249               },
250               {
251                "id" : "projectbutton",
252                "* init" : "this.el.set_size(50,50);",
253                "xtype" : "Actor",
254                "* pack" : "add_child",
255                "$ xns" : "Clutter",
256                "items" : [
257                 {
258                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
259                  "* pack" : "add_child",
260                  "xtype" : "Actor",
261                  "$ xns" : "GtkClutter",
262                  "items" : [
263                   {
264                    "listeners" : {
265                     "clicked" : "  ( ) => {\n   _this.windowstate.switchState(WindowState.State.FILES);\n      \n\n}"
266                    },
267                    "* pack" : false,
268                    "xtype" : "Button",
269                    "width_request" : 50,
270                    "$ xns" : "Gtk",
271                    "height_request" : 50,
272                    "$ tooltop_text" : "\"Open File\"",
273                    "items" : [
274                     {
275                      "* pack" : "set_image",
276                      "xtype" : "Image",
277                      "utf8 icon_name" : "document-open",
278                      "$ xns" : "Gtk"
279                     }
280                    ]
281                   }
282                  ]
283                 }
284                ]
285               },
286               {
287                "id" : "editfilebutton",
288                "* init" : "this.el.set_size(50.0f,50.0f);",
289                "xtype" : "Actor",
290                "* pack" : "add_child",
291                "$ xns" : "Clutter",
292                "items" : [
293                 {
294                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
295                  "* pack" : "add_child",
296                  "xtype" : "Actor",
297                  "$ xns" : "GtkClutter",
298                  "items" : [
299                   {
300                    "listeners" : {
301                     "clicked" : "  ( ) => {\n  \n    // create a new file in project..\n    if (_this.project == null || _this.windowstate.left_tree.model.file == null) {\n        return  ;\n    }\n     _this.windowstate.file_details.show(\n        _this.windowstate.left_tree.model.file, this.el\n    );\n     \n    return  ;    \n\n\n}"
302                    },
303                    "* pack" : false,
304                    "xtype" : "Button",
305                    "width_request" : 50,
306                    "$ xns" : "Gtk",
307                    "$ tooltip_text" : "\"File Details\"",
308                    "height_request" : 50,
309                    "items" : [
310                     {
311                      "utf8 icon_name" : "document-properties",
312                      "* pack" : "set_image",
313                      "xtype" : "Image",
314                      "$ xns" : "Gtk"
315                     }
316                    ]
317                   }
318                  ]
319                 }
320                ]
321               },
322               {
323                "id" : "projecteditbutton",
324                "* init" : "this.el.set_size(50,50);",
325                "xtype" : "Actor",
326                "* pack" : "add_child",
327                "$ xns" : "Clutter",
328                "items" : [
329                 {
330                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
331                  "* pack" : "add_child",
332                  "xtype" : "Actor",
333                  "$ xns" : "GtkClutter",
334                  "items" : [
335                   {
336                    "listeners" : {
337                     "clicked" : "  ( ) => {\n     _this.windowstate.switchState(WindowState.State.PROJECT);\n   \n\n\n}"
338                    },
339                    "* pack" : false,
340                    "xtype" : "Button",
341                    "width_request" : 50,
342                    "$ xns" : "Gtk",
343                    "$ tooltip_text" : "\"Project Details\"",
344                    "height_request" : 50,
345                    "items" : [
346                     {
347                      "xtype" : "Image",
348                      "utf8 icon_name" : "emblem-system",
349                      "* pack" : "set_image",
350                      "$ xns" : "Gtk"
351                     }
352                    ]
353                   }
354                  ]
355                 }
356                ]
357               },
358               {
359                "listeners" : {
360                 "enter_event" : "(  event)  => {\n    this.el.background_color = new Clutter.Color.from_string(\"#333\");\n        return false;\n}",
361                 "leave_event" : "(  event)  => {\n    this.el.background_color = new Clutter.Color.from_string(\"#000\");\n    return false;\n}"
362                },
363                "id" : "objectshowbutton",
364                "* init" : "this.el.set_size(50,50);",
365                "xtype" : "Actor",
366                "* pack" : "add_child",
367                "$ xns" : "Clutter",
368                "items" : [
369                 {
370                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
371                  "* pack" : "add_child",
372                  "xtype" : "Actor",
373                  "$ xns" : "GtkClutter",
374                  "items" : [
375                   {
376                    "listeners" : {
377                     "clicked" : "  ( ) => {\n    \n     _this.windowstate.switchState(WindowState.State.OBJECT);\n  \n \n}"
378                    },
379                    "* pack" : false,
380                    "xtype" : "Button",
381                    "width_request" : 50,
382                    "$ xns" : "Gtk",
383                    "$ tooltip_text" : "\"Add Child Element\"",
384                    "height_request" : 50,
385                    "items" : [
386                     {
387                      "* pack" : "set_image",
388                      "xtype" : "Image",
389                      "utf8 icon_name" : "list-add",
390                      "$ xns" : "Gtk"
391                     }
392                    ]
393                   }
394                  ]
395                 }
396                ]
397               },
398               {
399                "id" : "addpropbutton",
400                "* init" : "this.el.set_size(50,50);",
401                "xtype" : "Actor",
402                "* pack" : "add_child",
403                "$ xns" : "Clutter",
404                "items" : [
405                 {
406                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
407                  "* pack" : "add_child",
408                  "xtype" : "Actor",
409                  "$ xns" : "GtkClutter",
410                  "items" : [
411                   {
412                    "listeners" : {
413                     "clicked" : "  ( ) => {\n    \n     _this.windowstate.switchState(WindowState.State.PROP);\n \n\n}"
414                    },
415                    "* pack" : false,
416                    "xtype" : "Button",
417                    "width_request" : 50,
418                    "$ xns" : "Gtk",
419                    "$ tooltip_text" : "\"Add Property\"",
420                    "height_request" : 50,
421                    "items" : [
422                     {
423                      "utf8 icon_name" : "format-justify-left",
424                      "* pack" : "set_image",
425                      "xtype" : "Image",
426                      "$ xns" : "Gtk"
427                     }
428                    ]
429                   }
430                  ]
431                 }
432                ]
433               },
434               {
435                "id" : "addlistenerbutton",
436                "* init" : "this.el.set_size(50,50);",
437                "xtype" : "Actor",
438                "* pack" : "add_child",
439                "$ xns" : "Clutter",
440                "items" : [
441                 {
442                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
443                  "* pack" : "add_child",
444                  "xtype" : "Actor",
445                  "$ xns" : "GtkClutter",
446                  "items" : [
447                   {
448                    "listeners" : {
449                     "clicked" : "  ( ) => {\n    \n    _this.windowstate.switchState(WindowState.State.LISTENER);\n  \n\n\n}"
450                    },
451                    "* pack" : false,
452                    "xtype" : "Button",
453                    "width_request" : 50,
454                    "$ xns" : "Gtk",
455                    "$ tooltip_text" : "\"Add Event Code\"",
456                    "height_request" : 50,
457                    "items" : [
458                     {
459                      "xtype" : "Image",
460                      "utf8 icon_name" : "appointment-new",
461                      "* pack" : "set_image",
462                      "$ xns" : "Gtk"
463                     }
464                    ]
465                   }
466                  ]
467                 }
468                ]
469               },
470               {
471                "id" : "addprojectbutton",
472                "* init" : "this.el.set_size(50.0f,50.0f);",
473                "xtype" : "Actor",
474                "* pack" : "add_child",
475                "$ xns" : "Clutter",
476                "items" : [
477                 {
478                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
479                  "* pack" : "add_child",
480                  "xtype" : "Actor",
481                  "$ xns" : "GtkClutter",
482                  "items" : [
483                   {
484                    "listeners" : {
485                     "clicked" : "  ( ) => {\n  \n    // create a new file in project..\n    //Xcls_DialogNewComponent.singleton().show(\n   var  pe =      EditProject.singleton();\n    pe.el.set_transient_for(_this.el);\n    pe.el.set_modal(true);   \n   \n    var p  = pe.show();\n\n    if (p == null) {\n        return;\n    }\n    \n    \n    _this.windowstate.left_projects.is_loaded = false;    \n    _this.windowstate.left_projects.load();\n    _this.windowstate.left_projects.selectProject(p);\n    return  ;    \n\n\n}"
486                    },
487                    "* pack" : false,
488                    "xtype" : "Button",
489                    "width_request" : 50,
490                    "$ xns" : "Gtk",
491                    "$ tooltip_text" : "\"New\\nProj.\"",
492                    "height_request" : 50,
493                    "items" : [
494                     {
495                      "utf8 icon_name" : "folder-new",
496                      "* pack" : "set_image",
497                      "xtype" : "Image",
498                      "$ xns" : "Gtk"
499                     }
500                    ]
501                   }
502                  ]
503                 }
504                ]
505               },
506               {
507                "id" : "addfilebutton",
508                "* init" : "this.el.set_size(50.0f,50.0f);",
509                "xtype" : "Actor",
510                "* pack" : "add_child",
511                "$ xns" : "Clutter",
512                "items" : [
513                 {
514                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
515                  "* pack" : "add_child",
516                  "xtype" : "Actor",
517                  "$ xns" : "GtkClutter",
518                  "items" : [
519                   {
520                    "listeners" : {
521                     "clicked" : " () => {\n    // create a new file in project..\n    \n    // what's the currently selected project...\n    var proj = _this.windowstate.left_projects.getSelectedProject();\n    \n    if (proj == null) {\n        return  ;\n    }\n    \n    \n    \n    var f = JsRender.JsRender.factory(proj.xtype,  proj, \"\");\n    _this.project = proj;\n    \n     _this.windowstate.file_details.show(\n       f, this.el\n    );\n    \n    \n    return  ;    \n}"
522                    },
523                    "* pack" : false,
524                    "xtype" : "Button",
525                    "width_request" : 50,
526                    "$ xns" : "Gtk",
527                    "$ tooltip_text" : "\"Add File\"",
528                    "height_request" : 50,
529                    "items" : [
530                     {
531                      "* pack" : "set_image",
532                      "xtype" : "Image",
533                      "utf8 icon_name" : "document-new",
534                      "$ xns" : "Gtk"
535                     }
536                    ]
537                   }
538                  ]
539                 }
540                ]
541               },
542               {
543                "id" : "delprojectbutton",
544                "* init" : "this.el.set_size(50,50);",
545                "xtype" : "Actor",
546                "* pack" : "add_child",
547                "$ xns" : "Clutter",
548                "items" : [
549                 {
550                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
551                  "* pack" : "add_child",
552                  "xtype" : "Actor",
553                  "$ xns" : "GtkClutter",
554                  "items" : [
555                   {
556                    "listeners" : {
557                     "clicked" : "  ( ) => {\n     \n     var cd = DialogConfirm.singleton();\n     cd.el.set_transient_for(_this.el);\n    cd.el.set_modal(true);\n\n     var project =   _this.windowstate.left_projects.getSelectedProject();\n    if (project == null) {\n        print(\"SKIP - no project\\n\");\n        return;\n    }\n    \n        \n     if (Gtk.ResponseType.YES != cd.show(\"Confirm\", \n        \"Are you sure you want to delete project %s\".printf(project.name))) {\n        return;\n    }\n     \n\n    // confirm?\n    Project.Project.remove(project);\n    _this.project = null;\n    \n    _this.windowstate.left_projects.is_loaded =  false;\n    _this.windowstate.left_projects.load();\n    _this.windowstate.clutterfiles.clearFiles();\n\n}"
558                    },
559                    "* pack" : false,
560                    "xtype" : "Button",
561                    "width_request" : 50,
562                    "$ xns" : "Gtk",
563                    "$ tooltip_text" : "\"Delete Project\"",
564                    "height_request" : 50,
565                    "items" : [
566                     {
567                      "utf8 icon_name" : "user-trash",
568                      "* pack" : "set_image",
569                      "xtype" : "Image",
570                      "$ xns" : "Gtk"
571                     }
572                    ]
573                   }
574                  ]
575                 }
576                ]
577               }
578              ]
579             }
580            ]
581           }
582          ]
583         }
584        ]
585       },
586       {
587        "bool homogeneous" : false,
588        "xtype" : "HBox",
589        "* pack" : "pack_end,false,true,0",
590        "$ xns" : "Gtk",
591        "items" : [
592         {
593          "* pack" : "pack_start,true,true,0",
594          "xtype" : "Label",
595          "string label" : "   ",
596          "$ xns" : "Gtk"
597         },
598         {
599          "bool show_text" : true,
600          "id" : "statusbar",
601          "ulong handler_id" : "-1",
602          "* init" : "{\n     this.handler_id = Resources.singleton().updateProgress.connect((pos,total) => {\n        if (pos < 1) {\n            this.el.hide();\n            _this.mainpane.el.set_sensitive(true);\n            \n            return;\n        }\n         _this.mainpane.el.set_sensitive(false);\n         this.el.show();\n         this.el.set_fraction ((1.0f * pos) / (1.0f * total));\n         this.el.set_text(\"Fetching Resource : %s/%s\".printf(pos.to_string(), total.to_string()));\n       \n     });\n}\n",
603          "xtype" : "ProgressBar",
604          "* pack" : "pack_start,true,true,0",
605          "$ xns" : "Gtk"
606         },
607         {
608          "* pack" : "pack_end,false,true,0",
609          "xtype" : "MenuBar",
610          "$ xns" : "Gtk",
611          "items" : [
612           {
613            "xtype" : "MenuItem",
614            "string label" : "Compile Status:",
615            "* pack" : "add",
616            "$ xns" : "Gtk"
617           },
618           {
619            "listeners" : {
620             "button_press_event" : "() => {\n    if (this.popup == null) {\n        this.popup = new Xcls_ValaCompileErrors();\n        this.popup.window = _this;\n    }\n   \n    \n    this.popup.show(this.notices, this.el);\n    return true;\n}"
621            },
622            "bool always_show_image" : true,
623            "id" : "statusbar_errors",
624            "| void setNotices" : "(Json.Object nots, int qty) {\n    this.el.show();\n    this.el.label = qty.to_string() + \" Errors\";\n    this.notices = nots;\n\n}\n",
625            "Xcls_ValaCompileErrors popup" : "",
626            "string label" : "Errors",
627            "* pack" : "add",
628            "xtype" : "ImageMenuItem",
629            "# Json.Object notices" : "new Json.Object() ",
630            "$ xns" : "Gtk",
631            "items" : [
632             {
633              "xtype" : "Image",
634              "utf8 icon_name" : "dialog-error",
635              "* pack" : "set_image",
636              "$ xns" : "Gtk"
637             }
638            ]
639           },
640           {
641            "listeners" : {
642             "button_press_event" : "() => {\n    if (this.popup == null) {\n        this.popup = new Xcls_ValaCompileErrors();\n        this.popup.window = _this;\n    }\n    \n    this.popup.show(this.notices, this.el);\n    return true;\n}"
643            },
644            "bool always_show_image" : true,
645            "id" : "statusbar_warnings",
646            "| void setNotices" : "(Json.Object nots, int qty) {\n    this.el.show();\n    this.el.label = qty.to_string() + \" Warnings\";\n    this.notices = nots;\n\n}\n",
647            "Xcls_ValaCompileErrors popup" : "",
648            "* pack" : "add",
649            "string label" : "Warnings",
650            "xtype" : "ImageMenuItem",
651            "# Json.Object notices" : "new Json.Object()",
652            "$ xns" : "Gtk",
653            "items" : [
654             {
655              "* pack" : "set_image",
656              "xtype" : "Image",
657              "utf8 icon_name" : "dialog-warning",
658              "$ xns" : "Gtk"
659             }
660            ]
661           },
662           {
663            "listeners" : {
664             "button_press_event" : "() => {\n    if (this.popup == null) {\n        this.popup = new Xcls_ValaCompileErrors();\n        this.popup.window = _this;\n    }\n    \n    \n    this.popup.show(this.notices, this.el);\n    return true;\n}"
665            },
666            "bool always_show_image" : true,
667            "id" : "statusbar_depricated",
668            "| void setNotices" : "(Json.Object nots, int qty) {\n    this.el.show();\n    this.el.label = qty.to_string() + \" Depricated\";\n    this.notices = nots;\n\n}\n",
669            "Xcls_ValaCompileErrors popup" : "",
670            "string label" : "Depricated",
671            "* pack" : "add",
672            "xtype" : "ImageMenuItem",
673            "# Json.Object notices" : "new Json.Object()",
674            "$ xns" : "Gtk",
675            "items" : [
676             {
677              "utf8 icon_name" : "dialog-information",
678              "* pack" : "set_image",
679              "xtype" : "Image",
680              "$ xns" : "Gtk"
681             }
682            ]
683           }
684          ]
685         }
686        ]
687       }
688      ]
689     }
690    ]
691   }
692  ]
693 }