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" : "HPaned",
119        "$ xns" : "Gtk",
120        "items" : [
121         {
122          "id" : "leftpane",
123          "xtype" : "VBox",
124          "* pack" : "add1",
125          "$ xns" : "Gtk",
126          "items" : [
127           {
128            "id" : "editpane",
129            "xtype" : "VPaned",
130            "* pack" : "pack_start,false,true,0",
131            "$ xns" : "Gtk",
132            "items" : [
133             {
134              "id" : "tree",
135              "xtype" : "VBox",
136              "* pack" : "add1",
137              "$ xns" : "Gtk"
138             },
139             {
140              "id" : "props",
141              "xtype" : "VBox",
142              "* pack" : "add2",
143              "$ xns" : "Gtk"
144             }
145            ]
146           }
147          ]
148         },
149         {
150          "* pack" : "add2",
151          "xtype" : "VBox",
152          "$ xns" : "Gtk",
153          "items" : [
154           {
155            "listeners" : {
156             "size_allocate" : "  (  alloc) => {\n    if (_this.windowstate == null) {\n        return;\n    }\n    _this.windowstate.resizeCanvas(); \n        \n}"
157            },
158            "id" : "clutterembed",
159            "* init" : "    var stage = this.el.get_stage();\n    stage.set_background_color(  Clutter.Color.from_string(\"#000\"));\n    \n    \n",
160            "xtype" : "Embed",
161            "* pack" : "pack_start,true,true,0",
162            "$ xns" : "GtkClutter",
163            "items" : [
164             {
165              "id" : "rooview",
166              "* 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}",
167              "xtype" : "Actor",
168              "* pack" : "get_stage().add_child",
169              "$ xns" : "GtkClutter"
170             },
171             {
172              "id" : "objectview",
173              "* 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}",
174              "xtype" : "Actor",
175              "* pack" : "get_stage().add_child",
176              "$ xns" : "GtkClutter"
177             },
178             {
179              "id" : "codeeditview",
180              "* 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}",
181              "xtype" : "Actor",
182              "* pack" : "get_stage().add_child",
183              "$ xns" : "GtkClutter"
184             },
185             {
186              "id" : "addpropsview",
187              "* 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}",
188              "xtype" : "Actor",
189              "* pack" : "get_stage().add_child",
190              "$ xns" : "GtkClutter"
191             },
192             {
193              "id" : "projecteditview",
194              "* 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}",
195              "xtype" : "Actor",
196              "* pack" : "get_stage().add_child",
197              "$ xns" : "GtkClutter"
198             },
199             {
200              "id" : "buttonlayout",
201              "* 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}",
202              "xtype" : "Actor",
203              "* pack" : "get_stage().add_child",
204              "$ xns" : "Clutter",
205              "items" : [
206               {
207                "$ orientation" : "Clutter.Orientation.VERTICAL",
208                "xtype" : "BoxLayout",
209                "$ xns" : "Clutter",
210                "* prop" : "layout_manager"
211               },
212               {
213                "id" : "backbutton",
214                "* init" : "this.el.set_size(50,50);",
215                "xtype" : "Actor",
216                "* pack" : "add_child",
217                "$ xns" : "Clutter",
218                "items" : [
219                 {
220                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
221                  "xtype" : "Actor",
222                  "* pack" : "add_child",
223                  "$ xns" : "GtkClutter",
224                  "items" : [
225                   {
226                    "listeners" : {
227                     "clicked" : "  ( ) => {\n  \n    _this.windowstate.switchState(WindowState.State.PREVIEW);\n    \n\n}"
228                    },
229                    "utf8 tooltip_text" : "Back",
230                    "* pack" : false,
231                    "xtype" : "Button",
232                    "width_request" : 50,
233                    "$ xns" : "Gtk",
234                    "height_request" : 50,
235                    "items" : [
236                     {
237                      "xtype" : "Image",
238                      "utf8 icon_name" : "go-previous",
239                      "* pack" : "set_image",
240                      "$ xns" : "Gtk"
241                     }
242                    ]
243                   }
244                  ]
245                 }
246                ]
247               },
248               {
249                "id" : "projectbutton",
250                "* init" : "this.el.set_size(50,50);",
251                "xtype" : "Actor",
252                "* pack" : "add_child",
253                "$ xns" : "Clutter",
254                "items" : [
255                 {
256                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
257                  "* pack" : "add_child",
258                  "xtype" : "Actor",
259                  "$ xns" : "GtkClutter",
260                  "items" : [
261                   {
262                    "listeners" : {
263                     "clicked" : "  ( ) => {\n   _this.windowstate.switchState(WindowState.State.FILES);\n      \n\n}"
264                    },
265                    "* pack" : false,
266                    "xtype" : "Button",
267                    "width_request" : 50,
268                    "$ xns" : "Gtk",
269                    "height_request" : 50,
270                    "$ tooltop_text" : "\"Open File\"",
271                    "items" : [
272                     {
273                      "* pack" : "set_image",
274                      "xtype" : "Image",
275                      "utf8 icon_name" : "document-open",
276                      "$ xns" : "Gtk"
277                     }
278                    ]
279                   }
280                  ]
281                 }
282                ]
283               },
284               {
285                "id" : "editfilebutton",
286                "* init" : "this.el.set_size(50.0f,50.0f);",
287                "xtype" : "Actor",
288                "* pack" : "add_child",
289                "$ xns" : "Clutter",
290                "items" : [
291                 {
292                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
293                  "* pack" : "add_child",
294                  "xtype" : "Actor",
295                  "$ xns" : "GtkClutter",
296                  "items" : [
297                   {
298                    "listeners" : {
299                     "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}"
300                    },
301                    "* pack" : false,
302                    "xtype" : "Button",
303                    "width_request" : 50,
304                    "$ xns" : "Gtk",
305                    "$ tooltip_text" : "\"File Details\"",
306                    "height_request" : 50,
307                    "items" : [
308                     {
309                      "utf8 icon_name" : "document-properties",
310                      "* pack" : "set_image",
311                      "xtype" : "Image",
312                      "$ xns" : "Gtk"
313                     }
314                    ]
315                   }
316                  ]
317                 }
318                ]
319               },
320               {
321                "id" : "projecteditbutton",
322                "* init" : "this.el.set_size(50,50);",
323                "xtype" : "Actor",
324                "* pack" : "add_child",
325                "$ xns" : "Clutter",
326                "items" : [
327                 {
328                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
329                  "* pack" : "add_child",
330                  "xtype" : "Actor",
331                  "$ xns" : "GtkClutter",
332                  "items" : [
333                   {
334                    "listeners" : {
335                     "clicked" : "  ( ) => {\n     _this.windowstate.switchState(WindowState.State.PROJECT);\n   \n\n\n}"
336                    },
337                    "* pack" : false,
338                    "xtype" : "Button",
339                    "width_request" : 50,
340                    "$ xns" : "Gtk",
341                    "$ tooltip_text" : "\"Project Details\"",
342                    "height_request" : 50,
343                    "items" : [
344                     {
345                      "xtype" : "Image",
346                      "utf8 icon_name" : "emblem-system",
347                      "* pack" : "set_image",
348                      "$ xns" : "Gtk"
349                     }
350                    ]
351                   }
352                  ]
353                 }
354                ]
355               },
356               {
357                "listeners" : {
358                 "enter_event" : "(  event)  => {\n    this.el.background_color = new Clutter.Color.from_string(\"#333\");\n        return false;\n}",
359                 "leave_event" : "(  event)  => {\n    this.el.background_color = new Clutter.Color.from_string(\"#000\");\n    return false;\n}"
360                },
361                "id" : "objectshowbutton",
362                "* init" : "this.el.set_size(50,50);",
363                "xtype" : "Actor",
364                "* pack" : "add_child",
365                "$ xns" : "Clutter",
366                "items" : [
367                 {
368                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
369                  "* pack" : "add_child",
370                  "xtype" : "Actor",
371                  "$ xns" : "GtkClutter",
372                  "items" : [
373                   {
374                    "listeners" : {
375                     "clicked" : "  ( ) => {\n    \n     _this.windowstate.switchState(WindowState.State.OBJECT);\n  \n \n}"
376                    },
377                    "* pack" : false,
378                    "xtype" : "Button",
379                    "width_request" : 50,
380                    "$ xns" : "Gtk",
381                    "$ tooltip_text" : "\"Add Child Element\"",
382                    "height_request" : 50,
383                    "items" : [
384                     {
385                      "* pack" : "set_image",
386                      "xtype" : "Image",
387                      "utf8 icon_name" : "list-add",
388                      "$ xns" : "Gtk"
389                     }
390                    ]
391                   }
392                  ]
393                 }
394                ]
395               },
396               {
397                "id" : "addpropbutton",
398                "* init" : "this.el.set_size(50,50);",
399                "xtype" : "Actor",
400                "* pack" : "add_child",
401                "$ xns" : "Clutter",
402                "items" : [
403                 {
404                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
405                  "* pack" : "add_child",
406                  "xtype" : "Actor",
407                  "$ xns" : "GtkClutter",
408                  "items" : [
409                   {
410                    "listeners" : {
411                     "clicked" : "  ( ) => {\n    \n     _this.windowstate.switchState(WindowState.State.PROP);\n \n\n}"
412                    },
413                    "* pack" : false,
414                    "xtype" : "Button",
415                    "width_request" : 50,
416                    "$ xns" : "Gtk",
417                    "$ tooltip_text" : "\"Add Property\"",
418                    "height_request" : 50,
419                    "items" : [
420                     {
421                      "utf8 icon_name" : "format-justify-left",
422                      "* pack" : "set_image",
423                      "xtype" : "Image",
424                      "$ xns" : "Gtk"
425                     }
426                    ]
427                   }
428                  ]
429                 }
430                ]
431               },
432               {
433                "id" : "addlistenerbutton",
434                "* init" : "this.el.set_size(50,50);",
435                "xtype" : "Actor",
436                "* pack" : "add_child",
437                "$ xns" : "Clutter",
438                "items" : [
439                 {
440                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
441                  "* pack" : "add_child",
442                  "xtype" : "Actor",
443                  "$ xns" : "GtkClutter",
444                  "items" : [
445                   {
446                    "listeners" : {
447                     "clicked" : "  ( ) => {\n    \n    _this.windowstate.switchState(WindowState.State.LISTENER);\n  \n\n\n}"
448                    },
449                    "* pack" : false,
450                    "xtype" : "Button",
451                    "width_request" : 50,
452                    "$ xns" : "Gtk",
453                    "$ tooltip_text" : "\"Add Event Code\"",
454                    "height_request" : 50,
455                    "items" : [
456                     {
457                      "xtype" : "Image",
458                      "utf8 icon_name" : "appointment-new",
459                      "* pack" : "set_image",
460                      "$ xns" : "Gtk"
461                     }
462                    ]
463                   }
464                  ]
465                 }
466                ]
467               },
468               {
469                "id" : "addprojectbutton",
470                "* init" : "this.el.set_size(50.0f,50.0f);",
471                "xtype" : "Actor",
472                "* pack" : "add_child",
473                "$ xns" : "Clutter",
474                "items" : [
475                 {
476                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
477                  "* pack" : "add_child",
478                  "xtype" : "Actor",
479                  "$ xns" : "GtkClutter",
480                  "items" : [
481                   {
482                    "listeners" : {
483                     "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}"
484                    },
485                    "* pack" : false,
486                    "xtype" : "Button",
487                    "width_request" : 50,
488                    "$ xns" : "Gtk",
489                    "$ tooltip_text" : "\"New\\nProj.\"",
490                    "height_request" : 50,
491                    "items" : [
492                     {
493                      "utf8 icon_name" : "folder-new",
494                      "* pack" : "set_image",
495                      "xtype" : "Image",
496                      "$ xns" : "Gtk"
497                     }
498                    ]
499                   }
500                  ]
501                 }
502                ]
503               },
504               {
505                "id" : "addfilebutton",
506                "* init" : "this.el.set_size(50.0f,50.0f);",
507                "xtype" : "Actor",
508                "* pack" : "add_child",
509                "$ xns" : "Clutter",
510                "items" : [
511                 {
512                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
513                  "* pack" : "add_child",
514                  "xtype" : "Actor",
515                  "$ xns" : "GtkClutter",
516                  "items" : [
517                   {
518                    "listeners" : {
519                     "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}"
520                    },
521                    "* pack" : false,
522                    "xtype" : "Button",
523                    "width_request" : 50,
524                    "$ xns" : "Gtk",
525                    "$ tooltip_text" : "\"Add File\"",
526                    "height_request" : 50,
527                    "items" : [
528                     {
529                      "* pack" : "set_image",
530                      "xtype" : "Image",
531                      "utf8 icon_name" : "document-new",
532                      "$ xns" : "Gtk"
533                     }
534                    ]
535                   }
536                  ]
537                 }
538                ]
539               },
540               {
541                "id" : "delprojectbutton",
542                "* init" : "this.el.set_size(50,50);",
543                "xtype" : "Actor",
544                "* pack" : "add_child",
545                "$ xns" : "Clutter",
546                "items" : [
547                 {
548                  "* init" : "((Gtk.Container)(this.el.get_widget())).add ( child_0.el);",
549                  "* pack" : "add_child",
550                  "xtype" : "Actor",
551                  "$ xns" : "GtkClutter",
552                  "items" : [
553                   {
554                    "listeners" : {
555                     "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}"
556                    },
557                    "* pack" : false,
558                    "xtype" : "Button",
559                    "width_request" : 50,
560                    "$ xns" : "Gtk",
561                    "$ tooltip_text" : "\"Delete Project\"",
562                    "height_request" : 50,
563                    "items" : [
564                     {
565                      "utf8 icon_name" : "user-trash",
566                      "* pack" : "set_image",
567                      "xtype" : "Image",
568                      "$ xns" : "Gtk"
569                     }
570                    ]
571                   }
572                  ]
573                 }
574                ]
575               }
576              ]
577             }
578            ]
579           }
580          ]
581         }
582        ]
583       },
584       {
585        "bool homogeneous" : false,
586        "xtype" : "HBox",
587        "* pack" : "pack_end,false,true,0",
588        "$ xns" : "Gtk",
589        "items" : [
590         {
591          "* pack" : "pack_start,true,true,0",
592          "xtype" : "Label",
593          "string label" : "   ",
594          "$ xns" : "Gtk"
595         },
596         {
597          "bool show_text" : true,
598          "id" : "statusbar",
599          "ulong handler_id" : "-1",
600          "* 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",
601          "xtype" : "ProgressBar",
602          "* pack" : "pack_start,true,true,0",
603          "$ xns" : "Gtk"
604         },
605         {
606          "* pack" : "pack_end,false,true,0",
607          "xtype" : "MenuBar",
608          "$ xns" : "Gtk",
609          "items" : [
610           {
611            "xtype" : "MenuItem",
612            "string label" : "Compile Status:",
613            "* pack" : "add",
614            "$ xns" : "Gtk"
615           },
616           {
617            "listeners" : {
618             "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}"
619            },
620            "bool always_show_image" : true,
621            "id" : "statusbar_errors",
622            "| 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",
623            "Xcls_ValaCompileErrors popup" : "",
624            "string label" : "Errors",
625            "* pack" : "add",
626            "xtype" : "ImageMenuItem",
627            "# Json.Object notices" : "new Json.Object() ",
628            "$ xns" : "Gtk",
629            "items" : [
630             {
631              "xtype" : "Image",
632              "utf8 icon_name" : "dialog-error",
633              "* pack" : "set_image",
634              "$ xns" : "Gtk"
635             }
636            ]
637           },
638           {
639            "listeners" : {
640             "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}"
641            },
642            "bool always_show_image" : true,
643            "id" : "statusbar_warnings",
644            "| 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",
645            "Xcls_ValaCompileErrors popup" : "",
646            "* pack" : "add",
647            "string label" : "Warnings",
648            "xtype" : "ImageMenuItem",
649            "# Json.Object notices" : "new Json.Object()",
650            "$ xns" : "Gtk",
651            "items" : [
652             {
653              "* pack" : "set_image",
654              "xtype" : "Image",
655              "utf8 icon_name" : "dialog-warning",
656              "$ xns" : "Gtk"
657             }
658            ]
659           },
660           {
661            "listeners" : {
662             "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}"
663            },
664            "bool always_show_image" : true,
665            "id" : "statusbar_depricated",
666            "| 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",
667            "Xcls_ValaCompileErrors popup" : "",
668            "string label" : "Depricated",
669            "* pack" : "add",
670            "xtype" : "ImageMenuItem",
671            "# Json.Object notices" : "new Json.Object()",
672            "$ xns" : "Gtk",
673            "items" : [
674             {
675              "utf8 icon_name" : "dialog-information",
676              "* pack" : "set_image",
677              "xtype" : "Image",
678              "$ xns" : "Gtk"
679             }
680            ]
681           }
682          ]
683         }
684        ]
685       }
686      ]
687     }
688    ]
689   }
690  ]
691 }