resources/RooUsage.txt
[app.Builder.js] / src / JsRender / Gtk.vala
1 /**
2  * 
3  *  this is the code represents a File when using the Gtk view..
4  *   
5  *  It ues NodeToGtk
6  * 
7  * 
8  */
9
10 namespace JsRender {
11
12
13  
14         int gid = 1;
15
16   
17         public  class Gtk : JsRender
18         {
19            
20
21             public Gtk(Project.Project project, string path) {
22             
23                 base( project, path);
24                 this.xtype = "Gtk";
25                 this.language = "vala";
26                 
27                 
28                 //this.items = false;
29                 //if (cfg.json) {
30                 //    var jstr =  JSON.parse(cfg.json);
31                 //    this.items = [ jstr ];
32                 //    //console.log(cfg.items.length);
33                 //    delete cfg.json; // not needed!
34                 // }
35                  
36                 
37                 
38                 // super?!?!
39                 this.id = "file-gtk-%d".printf(gid++);
40                 //console.dump(this);
41                 // various loader methods..
42
43                 // Class = list of arguments ... and which property to use as a value.
44            
45
46                 
47                 
48             }
49               
50
51             /*
52             setNSID : function(id)
53             {
54                 
55                 this.items[0]['*class'] = id;
56                 
57                 
58             },
59             getType: function() {
60                 return 'Gtk';
61             },
62             */
63
64                 public   override void   removeFiles() {
65                         var js = GLib.Path.get_dirname(this.path) +"/" +  name + ".js";
66                         if (FileUtils.test(js, FileTest.EXISTS)) {
67                                 GLib.FileUtils.remove(js);
68                         }
69                         var vala = GLib.Path.get_dirname(this.path) +"/" + name + ".vala";
70                         if (FileUtils.test(vala, FileTest.EXISTS)) {
71                                 GLib.FileUtils.remove(vala);
72                         }
73                 }
74             
75                 public   override void  loadItems() throws GLib.Error // : function(cb, sync) == original was async.
76                 {
77                   
78                         print("load Items!\n");
79                         if (this.tree != null) {
80                                 this.loaded = true;
81                         
82                                 return;
83                         }
84                         /*
85                         print("load: %s\n" , this.path);
86                         if (!GLib.FileUtils.test(this.path, GLib.FileTest.EXISTS)) {
87                                 // new file?!?
88                                 this.tree = null;
89                                 this.loaded = true;
90                                 return;
91                         }
92                         */
93
94                         var pa = new Json.Parser();
95                         pa.load_from_file(this.path);
96                         var node = pa.get_root();
97                 
98                         if (node.get_node_type () != Json.NodeType.OBJECT) {
99                                 throw new Error.INVALID_FORMAT ("Unexpected element type %s", node.type_name ());
100                         }
101                         var obj = node.get_object ();
102                 
103                         this.name = obj.get_string_member("name");
104                         this.parent = obj.get_string_member("parent");
105                         this.title = obj.get_string_member("title");
106                 
107                         if (obj.has_member("build_module")) { // should check type really..
108                                 this.build_module = obj.get_string_member("build_module");
109                         }
110                          
111                         // load items[0] ??? into tree...
112                         var bjs_version_str = this.jsonHasOrEmpty(obj, "bjs-version");
113                         bjs_version_str = bjs_version_str == "" ? "1" : bjs_version_str;
114
115                         if (obj.has_member("items") 
116                                 && 
117                                 obj.get_member("items").get_node_type() == Json.NodeType.ARRAY
118                                 &&
119                                 obj.get_array_member("items").get_length() > 0
120                         ) {
121                                 var ar = obj.get_array_member("items");
122                                 var tree_base = ar.get_object_element(0);
123                                 this.tree = new Node();
124                                 this.tree.loadFromJson(tree_base, int.parse(bjs_version_str));
125
126                         }
127                         NodeToVala.mungeFile(this); // force line numbering..
128                         this.loaded = true;
129                 
130                 }
131              
132             
133         
134             public override string toSourcePreview()
135             {
136                         return "";
137                 }
138             public override void setSource(string str) {}
139             
140             public override string toSourceCode() // no seed support currently.
141             {
142                     return  NodeToVala.mungeFile(this);
143             }
144             
145             // this is only used by dumping code...
146             public override string toSource() // no seed support currently.
147             {
148                  
149                         
150                 /*
151                 if (this.tree == null) {
152                     return "";
153                 }
154                 
155                 // var data = JSON.parse(JSON.stringify(this.items[0]));
156                 // we should base this on the objects in the tree really..
157                 string[]  inc = { "Gtk", "Gdk", "Pango", "GLib", "Gio", "GObject", 
158                     "GtkSource", "WebKit", "Vte" }; //, "GtkClutter" , "Gdl"];
159                 var src = "";
160                          
161                 for (var i=0; i< inc.length; i++) {
162                                 var e = inc[i];
163                     src += e+" = imports.gi." + e +";\n";
164                 }
165                 
166                 src += "console = imports.console;\n"; // path?!!?
167                 src += "XObject = imports.XObject.XObject;\n"; // path?!!?
168                 
169                 
170                 src += this.name + "=new XObject("+ this.mungeToString("    ") + ");\n";
171                 src += this.name + ".init();\n";
172                 // register it in the cache
173                 src += "XObject.cache['/" + this.name + "'] = " + this.name + ";\n";
174                 return src;
175                 */
176                 return "";
177                 
178                 
179             }
180         
181             public override void save() {
182                 this.saveBJS();
183                 // this.saveJS(); - disabled at present.. project settings will probably enable this later..
184         
185                 this.saveVala();
186             }
187                 // ignore these calls.
188             public override void saveHTML ( string html ) {}
189                 
190                         
191             /** 
192              *  saveJS
193              * 
194              * save as a javascript file. - not used currently
195              * why is this not save...???
196              * 
197              
198               
199             void saveJS()
200             {
201                  
202                 var fn = GLib.Path.get_dirname(this.path) + "/" + this.name + ".js";
203                 print("WRITE :%s\n " , fn);
204                 this.writeFile(fn, this.toSource());
205                 
206             }
207             */
208            void  saveVala()
209             {
210                         if (this.tree == null) {
211                                 return;
212                         }
213                         var fn = GLib.Path.get_dirname(this.path) + "/" + this.name + ".vala";
214                         print("WRITE :%s\n " , fn);
215                         this.writeFile(fn,  NodeToVala.mungeFile(this));
216                 
217                 
218             }
219                 /*
220             valaCompileCmd : function()
221             {
222                 
223                 var fn = '/tmp/' + this.name + '.vala';
224                 print("WRITE : " + fn);
225                 File.write(fn, this.toVala(true));
226                 
227                 
228                 
229                 return ["valac",
230                        "--pkg",  "gio-2.0",
231                        "--pkg" , "posix" ,
232                        "--pkg" , "gtk+-3.0",
233                        "--pkg",  "libnotify",
234                        "--pkg",  "gtksourceview-3.0",
235                        "--pkg", "libwnck-3.0",
236                        fn ,   "-o", "/tmp/" + this.name];
237                 
238                
239                  
240                 
241             },
242             */
243             
244    
245             string getHelpUrl(string cls)
246             {
247                 return "http://devel.akbkhome.com/seed/" + cls + ".html";
248             }
249             public override void  findTransStrings(Node? node )
250                 {
251                         // not yet..
252                 }
253
254             
255           
256
257         
258
259         }
260 }
261
262
263