1 //<Script type="text/javascript">
3 GLib = imports.gi.GLib;
6 console = imports.console;
7 XObject = imports.XObject.XObject;
9 Observable = imports.Observable.Observable;
13 * /home/alan/.BuilderConfig/*
18 ProjectManager = new Observable({
26 'changed' : function() {
36 loadConfig : function ()
38 // we can not do this async....
39 this.dirname = GLib.get_home_dir() + '/.Builder';
41 var dir = Gio.file_new_for_path(this.dirname);
42 if (!dir.query_exists()) {
50 var gdir = GLib.dir_open(this.dirname,0);
53 var fn = GLib.dir_read_name(gdir);
58 if (!fn.match(/.json$/)) {
61 var file = Gio.file_new_for_path(this.dirname + '/' + fn);
62 Seed.print(this.dirname + '/' + fn);
63 var stream = file.read();
64 var dstream = new Gio.DataInputStream.c_new(stream);
67 str = dstream.read_until("");
68 if (!str || !str.length) {
69 continue; // empty file.
73 var ar = JSON.parse(str);
77 var cls = imports.Builder.Provider.Project[ar.xtype][ar.xtype];
78 this.projects.push( new cls(ar));
97 saveConfig : function()
100 this.projects.forEach( function(p) {
103 // make the filename..
104 var t = new GLib.TimeVal();
105 GLib.get_current_time(t);
106 var str = '' + t.tv_sec + ':' + t.tv_usec;
108 p.fn = GLib.compute_checksum_for_string(GLib.ChecksumType.MD5, str, str.length);
114 var file = Gio.file_new_for_path(_this.dirname + '/' + p.fn + '.json');
116 var stream = file.replace(null,false,0);
119 stream.write(s, s.length);
129 update : function(proj) {
131 Seed.print(JSON.stringify(proj));
133 this.projects.forEach( function(p) {
140 this.fireEvent('changed', this);
144 var cls = imports.Builder.Provider.Project[proj.xtype][proj.xtype];
145 var pr = new cls(proj);
146 this.projects.push(pr );
147 this.fireEvent('changed', this);
152 getByFn : function (fn) {
154 this.projects.forEach(function(p) {
163 getPalete: function(type) {
164 if (typeof(ProjectManager.palete[type]) != 'undefined') {
165 return ProjectManager.palete[type];
167 var cls = imports.Builder.Provider.Palete[type][type];
169 ProjectManager.palete[type] = new cls();
170 print (typeof(ProjectManager.palete[type]));
171 return ProjectManager.palete[type];