X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=Palete%2FPalete.vala;fp=Palete%2FPalete.vala;h=eae57126921e343b2c07b0cde96961c29105106b;hp=4b7677111535d411ae340817e40dff4a61f1d3dd;hb=2357117f2dbfda5d1282c5cc730534781e244d7e;hpb=0d1fa455e0b79452e0d74c1a280b3a23e3432f74 diff --git a/Palete/Palete.vala b/Palete/Palete.vala index 4b7677111..eae571269 100644 --- a/Palete/Palete.vala +++ b/Palete/Palete.vala @@ -163,55 +163,76 @@ namespace Palete getDefaultPack: function(pname, cname) { return 'add'; }, - saveTemplate: function(name, data) + */ + public void saveTemplate (string name, JsRender.Node data) { - var gn = this.guessName(JSON.parse(data)); + + var gn = data.fqn(); // store it in user's directory.. - var appdir = GLib.get_home_dir() + '/.Builder'; - - if (!File.isDirectory(appdir+ '/' + gn)) { - File.mkdir(appdir+ '/' + gn); + var appdir = GLib.Environment.get_home_dir() + "/.Builder"; + + + if (!GLib.FileUtils.test(appdir+ "/" + gn, GLib.FileTest.IS_DIR)) { + GLib.File.new_for_path (appdir+ "/" + gn).make_directory (); + } - File.write(appdir+ '/' + gn + '/' + name + '.json', data); + GLib.FileUtils.set_contents(appdir+ "/" + gn + "/" + name + ".json", data.toJsonString()); - }, + } + /** * list templates - in home directory (and app dir in future...) * @param {String} name - eg. Gtk.Window.. * @return {Array} list of templates available.. - * / - listTemplates : function(name) + */ + + public GLib.List listTemplates (JsRender.Node node) { - var gn = name; - if (typeof(gn) != 'string') { - gn = this.guessName(gn); - } - + var gn = node.fqn(); - var dir= GLib.get_home_dir() + '/.Builder/' + gn; - if (!File.isDirectory(dir)) { - return []; + var ret = new GLib.List(); + var dir= GLib.Environment.get_home_dir() + "/.Builder/" + gn; + if (!GLib.FileUtils.test(dir, GLib.FileTest.IS_DIR)) { + return ret; + } + + + + + var f = File.new_for_path(dir); + + var file_enum = f.enumerate_children(GLib.FileAttribute.STANDARD_DISPLAY_NAME, GLib.FileQueryInfoFlags.NONE, null); + + FileInfo next_file; + while ((next_file = file_enum.next_file(null)) != null) { + var n = next_file.get_display_name(); + if (!Regex.match_simple ("\\.json$", n)) { + continue; + } + ret.append( dir + "/" + n); } - var ret = []; - File.list(dir).forEach(function(n) { - if (!n.match(/\.json$/)) { - return; - } - - ret.push({ - path : dir + '/' + n, - name: n.replace(/\.json$/,'') - }); - }); return ret; - }, - loadTemplate : function(path) + } + + public JsRender.Node? loadTemplate(string path) { - return JSON.parse(File.read(path)); + + var pa = new Json.Parser(); + pa.load_from_file(path); + var node = pa.get_root(); + + if (node.get_node_type () != Json.NodeType.OBJECT) { + return null; + } + var obj = node.get_object (); + + var ret = new JsRender.Node(); + ret.loadFromJson(obj); + return ret; } - */ + }