{ "build_module" : "builder", "gen_extended" : false, "items" : [ { "# JsRender.JsRender file" : "null", "# Project.Project project" : "", "# bool new_window" : true, "$ xns" : "Gtk", "@ void success" : "(Project.Project pr, JsRender.JsRender file)", "Xcls_MainWindow mainwindow" : "null", "bool done" : false, "bool is_new" : true, "bool modal" : true, "id" : "PopoverFileDetails", "items" : [ { "$ pack" : "add", "$ xns" : "Gtk", "* pack" : "set_child", "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL", "bool hexpand" : true, "bool homogeneous" : false, "int margin_bottom" : 4, "int margin_end" : 4, "int margin_start" : 4, "int margin_top" : 4, "items" : [ { "$ xns" : "Gtk", "* columns" : 2, "* pack" : "append", "bool hexpand" : true, "id" : "grid", "int column_spacing" : 4, "int margin_end" : 4, "int margin_start" : 4, "items" : [ { "$ justify" : "Gtk.Justification.RIGHT", "$ xns" : "Gtk", "id" : "filetype_lbl", "label" : "File type", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ xns" : "Gtk", "bool hexpand" : true, "bool in_showhide" : false, "id" : "filetype", "items" : [ { "$ xns" : "Gtk", "* prop" : "model", "id" : "filetype_model", "strings" : "{}", "xtype" : "StringList", "| void load" : [ "() {", " var el = this.el;", " ", " while (el.get_n_items() > 0) {", " \tel.remove(0);", "\t}", " \tel.append(\"bjs - User Interface File\");", " ", " ", " switch(_this.project.xtype) {", " \tcase \"Roo\":", " \t \tel.append(\"js - Javascript File\");", " \t \tel.append(\"css - CSS File\");", " \t \tel.append(\"php - Javascript File\");", " \t \t", "\t\tbreak;", "", "\tcase \"Gtk\":\t\t", "\t\t\t", " \t \tel.append(\"vala - Vala File\");", " \t \tel.append(\"css - CSS File\");", " \t \tel.append(\"other - Other Type\");", " \t \tbreak;", " \t default : ", " \t \tbreak;", "\t}", "", "\t", "\t", "\t", "}" ] } ], "listeners" : { "notify[\"selected\"]" : [ "() => {", "", " \t_this.onFileTypeChange();", "", " }" ] }, "xtype" : "DropDown", "| string getValue" : [ "() {", "\t", "\tif (!_this.is_new) {", "\t\treturn _this.file.xtype != \"Plainfile\" ? \"bjs\" : _this.file.file_ext;", "\t}", "\t", "\tif (this.el.selected == Gtk.INVALID_LIST_POSITION) {", "\t\treturn \"\";", "\t}", "\t", "\treturn _this.filetype_model.el.get_string(this.el.selected).split(\" \")[0];", "}" ], "| void setValue" : [ "(string cur) {", "\tvar el = _this.filetype_model.el;", "\tfor(var i= 0; i < el.get_n_items();i++) {", "\t\tif (el.get_string(i).has_prefix(cur)) {", "\t\t\tthis.el.selected = i;", "\t\t\tbreak;", "\t\t}", "\t}", "}" ] }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "dir_dropdown_lbl", "label" : "Create File in this Directory", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ xns" : "Gtk", "id" : "dir_dropdown", "int colspan" : 1, "items" : [ { "$ xns" : "Gtk", "* prop" : "model", "id" : "dir_model", "strings" : "{}", "xtype" : "StringList" } ], "listeners" : { "notify[\"selected\"]" : [ "() => {", "", "\t _this.onDirChanged();", "\t", "\t", "\t", " } " ] }, "xtype" : "DropDown", "| string getValue" : [ "() {", "\treturn _this.dir_model.el.get_string(this.el.selected);", "}" ], "| void setValue" : [ "(string cur) {", "\tvar el = _this.dir_model.el;", "\tfor(var i= 0; i < el.get_n_items();i++) {", "\t\tif (el.get_string(i) == cur) {", "\t\t\tthis.el.selected = i;", "\t\t\tbreak;", "\t\t}", "\t}", "}" ] }, { "$ justify" : "Gtk.Justification.RIGHT", "$ xns" : "Gtk", "id" : "name_lbl", "label" : "Component Name (File name without extension)", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "bool hexpand" : true, "id" : "name", "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "title_lbl", "label" : "Title", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "* pack" : "attach,1,2,1,1", "bool hexpand" : true, "id" : "title", "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "region_lbl", "label" : "Region", "tooltip_text" : "center, north, south, east, west", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "bool hexpand" : true, "id" : "region", "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "parent_lbl", "label" : "Parent Name", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "id" : "parent", "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "permname_lbl", "label" : "Permission Name", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "id" : "permname", "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "modOrder_lbl", "label" : "Order (for tabs)", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "id" : "modOrder", "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "build_module_lbl", "label" : "Module to build", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ xns" : "Gtk", "id" : "build_module", "items" : [ { "$ xns" : "Gtk", "* prop" : "model", "id" : "build_module_model", "strings" : "{}", "xtype" : "StringList", "| void load" : [ "(Gee.HashMap? compilegroups)", "{", "\t", "\t_this.build_module.el.hide();", "\t\t_this.build_module_lbl.el.hide();", "\tvar el = _this.build_module_model.el;", "\t while (el.get_n_items() > 0) {", "\t\t\tel.remove(0);", "\t}", "\t", "\tif (compilegroups == null) {", "\t\treturn;", "\t}", "\tforeach(var k in compilegroups.keys) {", "\t\tthis.el.append(k);", "\t}", "\tif (compilegroups.keys.size > 0) {", "\t\t_this.build_module.el.selected = 0;", "\t\t_this.build_module.el.show();", "\t\t_this.build_module_lbl.el.show();", "\t} else {", "\t\t", "\t}", "\t", "}" ] } ], "xtype" : "DropDown", "| string getValue" : [ " ", "() {", "\tif (this.el.selected < 0) {", "\t\treturn \"\";", "\t}", "\t", "\treturn _this.build_module_model.el.get_string(this.el.selected);", "}", " " ], "| void setValue" : [ "(string str) {", "\tvar m = _this.build_module_model.el;", "\tfor(var i = 0; i < m.get_n_items(); i++) {", "\t\tif (m.get_string(i) == str) {", "\t\t\tthis.el.selected = i;", "\t\t\treturn;", "\t\t}", "\t}", "\t\t", "}" ] }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "path_lbl", "int colspan" : 1, "label" : "Full path", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ visible" : true, "$ xns" : "Gtk", "bool editable" : false, "bool hexpand" : true, "id" : "path", "int colspan" : 1, "xtype" : "Entry" }, { "$ justify" : "Gtk.Justification.RIGHT", "$ visible" : true, "$ xns" : "Gtk", "id" : "gen_lbl", "int colspan" : 1, "label" : "Generate as Extended (no working)", "x_options" : 4, "xalign" : 0.90000000000000002, "xtype" : "Label" }, { "$ xns" : "Gtk", "id" : "gen", "listeners" : { "toggled" : [ "( ) => {", "\t ", "\tthis.el.label = this.el.active ? \"Extended\" : \"Wrapped\";", "", "}", "" ] }, "string label" : "Wrapped", "xtype" : "CheckButton" } ], "uint row_spacing" : 2, "xtype" : "Grid", "| void xhideRow" : [ "(int row) ", "{", "\tvar el = _this.grid.el.get_child_at(0,row);", "", "\tel.hide();", "\tel = _this.grid.el.get_child_at(1,row);", "\tel.hide();", "", "}" ], "| void xshowAllRows" : [ "() {", "\tfor (var i = 2; i < 10;i++) {", "\t\tvar el = _this.grid.el.get_child_at(0,i);", "\t\tel.show();", "\t\tel = _this.grid.el.get_child_at(1,i);", "\t\tel.show();", " }", "}" ] } ], "xtype" : "Box" }, { "$ xns" : "Gtk", "* prop" : "titlebar", "bool show_title_buttons" : false, "items" : [ { "$ xns" : "Gtk", "* pack" : "pack_start", "listeners" : { "clicked" : [ "() => { ", " \t_this.done = true;", " _this.el.hide(); ", "}" ] }, "string label" : "Cancel", "xtype" : "Button" }, { "$ css_classes" : "{ \"suggested-action\" }", "$ xns" : "Gtk", "* pack" : "pack_end", "bool always_show_image" : true, "bool hexpand" : false, "id" : "save_btn", "listeners" : { "clicked" : [ "( ) => { ", "", " ", "", "", "\tif (_this.name.el.get_text().length < 1) {", "\t Xcls_StandardErrorDialog.singleton().show(", "\t _this.mainwindow.el,", "\t \"You have to set a Component name \"", "\t );", "\t ", "\t return;", "\t}", "\t ", "", "\tif (!_this.is_new) {", "\t // try {", "\t ", "\t \tvar old_target = _this.file.build_module;", " _this.updateFileFromEntry();", "\t if (_this.project.xtype == \"Gtk\" && old_target != _this.file.build_module) {", "\t \tvar gp = (JsRender.Gtk)_this.file;", "\t \tgp.updateCompileGroup(old_target, _this.file.build_module);", " \t}", "", "\t _this.done = true;", "\t _this.file.save();", "\t _this.el.hide();", "\t return;", "\t} ", "\t", "\t// ---------------- NEW FILES...", "\tvar ftype = _this.filetype.getValue();", "", "\tif (ftype == \"\") {", "\t\t// should not happen...", "\t\t// so we are jut going to return without ", "\t\tXcls_StandardErrorDialog.singleton().show(", "\t _this.mainwindow.el,", "\t \"You must select a file type. \"", "\t );", "\t return;", "\t\t ", "\t}", "\t", "\t", "\tvar fn = _this.name.el.get_text();", "\t", "\t ", "\tvar ext = ftype;", "\t//var dir = _this.project.path; ", "\t ", "\t var dir = _this.dir_dropdown.getValue();", "\t", "\t ", "\t", "\t ", "\tvar targetfile = _this.project.path;", "\tif (dir != \"\") {", "\t\ttargetfile += dir;", "\t}", "\ttargetfile += \"/\" + fn;", "\t", "\t// strip the file type off the end..", "\t", "\ttry {", "\t\tvar rx = new GLib.Regex(\"\\\\.\" + ext + \"$\",GLib.RegexCompileFlags.CASELESS);", "\t\tfn = rx.replace(targetfile, targetfile.length, 0, \"\"); ", "\t } catch (RegexError e) {} // ignore.", "\t ", "\t targetfile += \".\" + ext;", "\t ", "\t ", "\tif (GLib.FileUtils.test(targetfile, GLib.FileTest.EXISTS)) {", "\t Xcls_StandardErrorDialog.singleton().show(", "\t _this.mainwindow.el,", "\t \"That file already exists\"", "\t ); ", "\t return;", "\t}", "\tJsRender.JsRender f;", " try {", "\t f = JsRender.JsRender.factory(", "\t\t\text == \"bjs\" ? _this.file.project.xtype : \"PlainFile\", ", "\t\t\t_this.file.project, ", "\t\t\ttargetfile);", "\t} catch (JsRender.Error e) {", "\t\tXcls_StandardErrorDialog.singleton().show(", "\t _this.mainwindow.el,", "\t \"Error creating file\"", "\t ); ", "\t\treturn;", "\t}", "\t_this.file = f;", "\t", "\t", "", "\t", "\t_this.updateFileFromEntry();", "\t_this.file.loaded = true;", "\t_this.file.save();", " _this.file.project.addFile(_this.file);", " var sel = _this.filetype.getValue();", "\t if (_this.file.project.xtype == \"Gtk\" && ", "\t \t_this.file.build_module.length > 0 &&", "\t \t( sel == \"bjs\" || sel == \"vala\")) {", "\t ", "\t\tvar pr = (Project.Gtk) _this.file.project;", "\t\tif (pr.compilegroups.has_key(_this.file.build_module)) {", "\t\t\tvar cg = pr.compilegroups.get(_this.file.build_module);", "\t\t\tif (!cg.sources.contains(_this.file.relpath)) {", "\t\t\t\tcg.sources.add(_this.file.relpath);", "\t\t\t}", "\t\t}", "\t", "\t}", "\t ", " ", "\t// what about .js ?", " _this.done = true;", "\t_this.el.hide();", "", "// hopefull this will work with bjs files..", "\t", "\t_this.success(_this.project, _this.file);", " ", "}" ] }, "string icon_name" : "document-save", "string label" : "Save", "xtype" : "Button" } ], "title" : "Add / Edit File", "xtype" : "HeaderBar" } ], "listeners" : { "close_request" : [ "( ) => {", "\t_this.el.hide();", "\treturn true;", "}", "" ] }, "string title" : "Add / Edit File", "uint border_width" : 0, "xtype" : "Window", "| void hideAll" : [ "() {", "", "\t// exiting only", "\tthis.path_lbl.el.hide();", " this.path.el.hide();", " ", " // new ", " this.name_lbl.el.hide();", " this.name.el.hide();", " //new ", " this.dir_dropdown_lbl.el.hide();", " this.dir_dropdown.el.hide();", "\t// roo", "\tthis.title_lbl.el.hide();", "\tthis.title.el.hide();", "\t", "\tthis.region_lbl.el.hide();", "\tthis.region.el.hide();", "\t", "\tthis.parent_lbl.el.hide();", "\tthis.parent.el.hide();", "\t", "\tthis.permname_lbl.el.hide();", "\tthis.permname.el.hide();", "\t", "\tthis.modOrder_lbl.el.hide();", "\tthis.modOrder.el.hide();", "\t", "\tthis.build_module_lbl.el.hide();", "\tthis.build_module.el.hide();", "\t", "\tthis.gen_lbl.el.hide();", "\tthis.gen.el.hide();", "\t\tthis.filetype_lbl.el.hide();", "\t\tthis.filetype.el.hide();", "}\t" ], "| void onDirChanged" : [ "() {", "if (this.dir_dropdown.el.selected == Gtk.INVALID_LIST_POSITION) {", "\t\tthis.build_module_lbl.el.hide();", "\t\tthis.build_module.el.hide();", "\t\tthis.name_lbl.el.hide();", "\t\tthis.name.el.hide();", "\t\t ", " \tthis.gen_lbl.el.hide();", "\t\tthis.gen.el.hide();", " ", "\t\treturn;", "\t\t", "\t", "\t}", "\t// directory selected", "\tvar sel = this.filetype.getValue();", "\t", "\tif (this.file.project.xtype==\"Gtk\" && (sel == \"bjs\" || sel == \"vala\")) {", "\t\tthis.build_module_lbl.el.show();", "\t\tthis.build_module.el.show();", "\t}", "\tthis.name_lbl.el.show();", "\tthis.name.el.show();", "\t", "\tif (sel == \"bjs\") {", " _this.gen_lbl.el.show();", " _this.gen.el.show();", " }", " ", " if (this.file.project.xtype == \"Roo\" && sel == \"bjs\") {", " \tthis.title_lbl.el.show();", "\t\tthis.title.el.show();", "\t\t", "\t\tthis.region_lbl.el.show();", "\t\tthis.region.el.show();", "\t\t", "\t\tthis.parent_lbl.el.show();", "\t\tthis.parent.el.show();", "\t\t", "\t\tthis.permname_lbl.el.show();", "\t\tthis.permname.el.show();", "\t\t", "\t\tthis.modOrder_lbl.el.show();", "\t\tthis.modOrder.el.show();", "\t}", " ", " ", "}" ], "| void onFileTypeChange" : [ "() {", "\tif (this.filetype.el.selected == Gtk.INVALID_LIST_POSITION) {", "\t\tthis.dir_dropdown.el.hide();", "\t\tthis.dir_dropdown_lbl.el.hide();", "\t\tthis.build_module_lbl.el.hide();", "\t\tthis.build_module.el.hide();", "\t\tthis.name_lbl.el.hide();", "\t\tthis.name.el.hide();", "\t ", " \tthis.gen_lbl.el.hide();", "\t\tthis.gen.el.hide();", " ", " ", " \tthis.title_lbl.el.hide();", "\t\tthis.title.el.hide();", "\t\t", "\t\tthis.region_lbl.el.hide();", "\t\tthis.region.el.hide();", "\t\t", "\t\tthis.parent_lbl.el.hide();", "\t\tthis.parent.el.hide();", "\t\t", "\t\tthis.permname_lbl.el.hide();", "\t\tthis.permname.el.hide();", "\t\t", "\t\tthis.modOrder_lbl.el.hide();", "\t\tthis.modOrder.el.hide();", " ", "\t\treturn;", "\t\t ", "\t}", "\t", "\tthis.dir_dropdown.el.show();", "\tthis.dir_dropdown_lbl.el.show();", "\tvar sel = this.filetype.getValue();", "\t", "\tvar old_sel = _this.dir_dropdown.el.selected != Gtk.INVALID_LIST_POSITION;", "\tvar olddir = this.dir_dropdown.getValue();", "\tGLib.debug(\"old dir = %s\", olddir);", "\tif (this.file.project.xtype==\"Gtk\" && (sel == \"bjs\" || sel == \"vala\")) {", "\t\t_this.project.loadDirsToStringList(_this.dir_model.el, \"/src\");", "\t\tif (old_sel && olddir.has_prefix(\"/src\")) {", "\t\t \tthis.dir_dropdown.setValue(olddir);", " \t\t} else {", "\t \t _this.dir_dropdown.el.selected = Gtk.INVALID_LIST_POSITION;", " \t }", " ", "\t} else {", "", " _this.project.loadDirsToStringList(_this.dir_model.el, \"\");", "\t\tif (old_sel) {", "\t\t\tthis.dir_dropdown.setValue(olddir);", "\t\t} else {", "\t\t _this.dir_dropdown.el.selected = Gtk.INVALID_LIST_POSITION;", "\t }", " ", " }", "", " ", " // is this confusing? - should we just strip out / add if necessary..", " if (sel == \"bjs\" || sel == \"vala\" || sel == \"js\" || sel == \"css\" || sel == \"php\") {", " _this.name_lbl.el.label = \"Component Name (Filename with-out extension)\";\t\t\t\t ", " } else {", "\t _this.name_lbl.el.label = \"File Name (with extension)\";", " }", " ", "}" ], "| void show" : [ "(JsRender.JsRender c, Gtk.Window pwin, bool new_window) ", "{", " ", " this.project = c.project;", " this.done = false;", " this.new_window = new_window;", " ", " //if (!this.el) {", " //this.init();", " //} ", " ", " this.is_new = c.name == \"\";", "", " _this.name.el.set_text(c.name);", " _this.title.el.set_text(c.title);", " _this.parent.el.set_text(c.parent); ", " _this.region.el.set_text(c.region);", " _this.modOrder.el.set_text(c.modOrder);", " _this.permname.el.set_text(c.permname);", " ", " _this.gen.el.active = c.gen_extended;", " ", "", " ", " if (this.project.xtype == \"Gtk\") {", " \tvar p = (Project.Gtk) this.project;", "\t this.build_module_model.load(p.compilegroups);", "\t // it will select first if available...", "\t // only for new files.", "\t if (!this.is_new) {", "\t\t this.build_module.setValue(c.build_module);", "\t }", " }", "\t ", " ", " _this.file = c;", " ", " // this.el.set_size_request( 550, 100); // should expand height, but give a min width.", "", " this.el.set_transient_for(pwin);", " ", " // window + header?", " this.hideAll();", " this.el.show();", " // this.name.el.grab_focus();", " ", " ", " if (!this.is_new) {", "\t this.showEditFile();", " } else {", " \tthis.showNewFile();", "\t\t ", " ", "\t ", " }", " ", " ", " //this.success = c.success;", " ", " ", "}" ], "| void showEditFile" : [ "() {", " \tthis.save_btn.el.set_label(\"Save\");", "\tthis.filetype_lbl.el.hide();", "\tthis.filetype.el.hide();", "\t\t ", "\tvar sel = this.filetype.getValue();", "\tswitch(_this.project.xtype) {", "\t\tcase \"Roo\":\t ", "\t\t\t if (sel == \"bjs\") {", "\t\t\t\t_this.title_lbl.el.show();", "\t\t\t\t_this.title.el.show();", "\t\t\t\t", "\t\t\t\t_this.region_lbl.el.show();", "\t\t\t\t_this.region.el.show();", "\t\t\t\t", "\t\t\t\t_this.parent_lbl.el.show();", "\t\t\t\t_this.parent.el.show();", "\t\t\t\t", "\t\t\t\t_this.permname_lbl.el.show();", "\t\t\t\t_this.permname.el.show();", "\t\t\t\t", "\t\t\t\t_this.modOrder_lbl.el.show();", "\t\t\t\t_this.modOrder.el.show();", "\t\t\t", "\t\t\t}", "\t\t\tbreak;", "\t\tdefault:", "\t\t\t_this.build_module_lbl.el.show();", "\t\t\t_this.build_module.el.show();\t", "\t\t\t", "\t\t\tif (sel == \"bjs\") {", "\t\t\t", "\t\t\t\t _this.gen_lbl.el.show();", "\t\t\t\t_this.gen.el.show();", "\t\t\t}", "\t\t\tbreak;", "\t}", "\tthis.path.el.show();", "\tthis.path_lbl.el.show();", "\tthis.path.el.set_text(_this.file.relpath);", "}" ], "| void showNewFile" : [ "() {", " \tthis.save_btn.el.set_label(\"Create\");", " \tthis.hideAll();", " \tthis.filetype.el.show();", " this.filetype_lbl.el.show();", " this.filetype_model.load();", "\tthis.filetype.el.selected = Gtk.INVALID_LIST_POSITION;", " ", "\t ", "}" ], "| void updateFileFromEntry" : [ "() {", "", " _this.file.title = _this.title.el.get_text();", " _this.file.region = _this.region.el.get_text(); ", " _this.file.parent = _this.parent.el.get_text(); ", " _this.file.permname = _this.permname.el.get_text(); ", " _this.file.modOrder = _this.modOrder.el.get_text();", " _this.file.gen_extended = _this.gen.el.active;", " var new_name = _this.name.el.get_text();", " if (_this.file.name.length > 0 && _this.file.name != new_name) {", " try {", " \t_this.file.renameTo( new_name );", " \t} catch (JsRender.Error e) { } // do nothing?", " }", " ", " _this.file.build_module = _this.build_module.getValue();", "\t\t", " ", " ", "", " ", "} " ] } ], "name" : "PopoverFileDetails" }