{
"build_module" : "builder",
+ "gen_extended" : false,
"items" : [
{
"# JsRender.JsRender file" : "",
"@ void show_add_props" : "(string type)",
"@ void show_editor" : "(JsRender.JsRender file, JsRender.Node node, JsRender.NodeProp prop)",
"Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
+ "bool hexpand" : true,
+ "bool loading" : false,
+ "bool vexpand" : true,
"id" : "LeftProps",
+ "int last_error_counter" : "-1",
"items" : [
{
"$ xns" : "Gtk",
- "* pack" : "pack_start,false,true,0",
"Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
+ "bool hexpand" : true,
"items" : [
{
"$ xns" : "Gtk",
- "* pack" : "add",
"int margin_end" : 5,
"int margin_start" : 5,
"string label" : "Add:",
{
"$ tooltip_text" : "\"Add Property\"",
"$ xns" : "Gtk",
- "* pack" : "add",
"bool always_show_image" : true,
"bool hexpand" : true,
- "items" : [
- {
- "$ xns" : "Gtk",
- "* pack" : "set_image",
- "utf8 icon_name" : "format-justify-left",
- "xtype" : "Image"
- }
- ],
"listeners" : {
"clicked" : [
" ( ) => {",
"}"
]
},
+ "string icon_name" : "format-justify-left",
"string label" : "Property",
"xtype" : "Button"
},
{
"$ tooltip_text" : "\"Add Event Code\"",
"$ xns" : "Gtk",
- "* pack" : "add",
"bool always_show_image" : true,
"bool hexpand" : true,
- "items" : [
- {
- "$ xns" : "Gtk",
- "* pack" : "set_image",
- "utf8 icon_name" : "appointment-new",
- "xtype" : "Image"
- }
- ],
"listeners" : {
"clicked" : [
" ( ) => {",
"}"
]
},
+ "string icon_name" : "appointment-new",
"string label" : "Event",
"xtype" : "Button"
},
{
"$ xns" : "Gtk",
- "* pack" : "add",
"bool always_show_image" : true,
"bool hexpand" : true,
"items" : [
{
"$ xns" : "Gtk",
"* pack" : false,
+ "bool autohide" : true,
"id" : "AddPropertyPopup",
"items" : [
{
"$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "id: _this.{ID} (Vala)",
- "listeners" : {
- "activate" : [
- " () => {",
- " \t// is this userdef or special??",
- " _this.addProp( new JsRender.NodeProp.prop(\"id\") );",
- "}"
- ]
- },
- "tooltip_markup" : "Using _this.{ID} will map to this element",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "pack: Pack method (Vala)",
- "listeners" : {
- "activate" : [
- " ( ) => {",
- "// is this userdef?",
- " _this.addProp( new JsRender.NodeProp.special(\"pack\", \"add\") );",
- "}"
- ]
- },
- "tooltip_markup" : "how to pack this element onto parent, (method, 2nd arg, 3rd arg) .. the 1st argument is filled by the element",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "ctor: Alterative to default contructor (Vala)",
- "listeners" : {
- "activate" : [
- " ( ) => {",
- "",
- " _this.addProp( new JsRender.NodeProp.special(\"ctor\") );",
- "}"
- ]
- },
- "tooltip_markup" : [
- "eg. ",
- "",
- "new Clutter.Image.from_file(.....)"
- ],
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "init: initialziation code (vala)",
- "listeners" : {
- "activate" : [
- " ( ) => {",
- " _this.addProp( new JsRender.NodeProp.special(\"init\",\"{\\n\\n}\\n\" ) );",
- "",
- "}"
- ]
- },
- "tooltip_markup" : "This code is called after the ctor",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "cms-id: (Roo JS/Pman library)",
- "listeners" : {
- "activate" : [
- " () => {",
- " ",
- " _this.addProp( new JsRender.NodeProp.prop(\"cms-id\",\"string\", \"\" ) );",
- "",
- " ",
- " ",
- "}"
- ]
- },
- "tooltip_markup" : [
- "set the cms-id for this element, when converted to javascript, the html value will be wrapped with Pman.Cms.content({cms-id},{original-html})",
- ""
+ "* prop" : "child",
+ "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
+ "int spacing" : 0,
+ "items" : [
+ {
+ "$ xns" : "Gtk",
+ "label" : "id: _this.{ID} (Vala)",
+ "listeners" : {
+ "clicked" : [
+ " () => {",
+ " \t_this.AddPropertyPopup.el.hide();",
+ " \t// is this userdef or special??",
+ " \tvar add = new JsRender.NodeProp.prop(\"id\");",
+ " \tif (_this.node.has_prop_key(add)) {",
+ "\t \treturn;",
+ " \t}",
+ " \t",
+ " \t_this.node.add_prop( add );",
+ " \t",
+ " \t_this.view.editProp( add );",
+ " \t",
+ "\t",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Using _this.{ID} will map to this element",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "pack: Pack method (Vala)",
+ "listeners" : {
+ "clicked" : [
+ " ( ) => {",
+ " ",
+ "",
+ "\t_this.AddPropertyPopup.el.hide();",
+ " \t// is this userdef or special??",
+ " \tvar add = new JsRender.NodeProp.special(\"pack\", \"add\");",
+ " \tif (_this.node.has_prop_key(add)) {",
+ "\t \treturn;",
+ " \t}",
+ " \t",
+ " \t_this.node.add_prop( add );",
+ " \t",
+ " \t_this.view.editProp( add );",
+ " \t",
+ "",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "how to pack this element onto parent, (method, 2nd arg, 3rd arg) .. the 1st argument is filled by the element",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "ctor: Alterative to default contructor (Vala)",
+ "listeners" : {
+ "clicked" : [
+ " ( ) => {",
+ " ",
+ " _this.AddPropertyPopup.el.hide();",
+ " \t// is this userdef or special??",
+ " \tvar add = new JsRender.NodeProp.special(\"ctor\");",
+ " \tif (_this.node.has_prop_key(add)) {",
+ "\t \treturn;",
+ " \t}",
+ " \t",
+ " \t_this.node.add_prop( add );",
+ " \t",
+ " \t_this.view.editProp( add );",
+ " \t",
+ "}"
+ ]
+ },
+ "tooltip_markup" : [
+ "eg. ",
+ "",
+ "new Clutter.Image.from_file(.....)"
+ ],
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "init: initialziation code (vala)",
+ "listeners" : {
+ "clicked" : [
+ " ( ) => {",
+ " ",
+ " _this.AddPropertyPopup.el.hide();",
+ " \t// is this userdef or special??",
+ " \tvar add = new JsRender.NodeProp.special(\"init\",\"{\\n\\n}\\n\" ) ;",
+ " \tif (_this.node.has_prop_key(add)) {",
+ "\t \treturn;",
+ " \t}",
+ " \t",
+ " \t_this.node.add_prop( add );",
+ " \t",
+ " \t_this.view.editProp( add );",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "This code is called after the ctor",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "cms-id: (Roo JS/Pman library)",
+ "listeners" : {
+ "clicked" : [
+ " () => {",
+ " ",
+ " _this.AddPropertyPopup.el.hide();",
+ " \t// is this userdef or special??",
+ " \tvar add = new JsRender.NodeProp.prop(\"cms-id\",\"string\", \"\" ) ;",
+ " \tif (_this.node.has_prop_key(add)) {",
+ "\t \treturn;",
+ " \t}",
+ " \t",
+ " \t_this.node.add_prop( add );",
+ " \t",
+ " \t_this.view.editProp( add );",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : [
+ "set the cms-id for this element, when converted to javascript, the html value will be wrapped with Pman.Cms.content({cms-id},{original-html})",
+ ""
+ ],
+ "xtype" : "Button"
+ },
+ {
+ "$ Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
+ "$ xns" : "Gtk",
+ "xtype" : "Separator"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "String",
+ "listeners" : {
+ "clicked" : [
+ "(self) => {",
+ " _this.AddPropertyPopup.el.hide();",
+ "\t_this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.prop(\"\", \"string\", \"\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t);",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a user defined string property",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Number",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " _this.AddPropertyPopup.el.hide();",
+ " ",
+ " _this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.prop(\"\", \"int\", \"0\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t);",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a user defined number property",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Boolean",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " ",
+ " \t _this.AddPropertyPopup.el.hide();",
+ " _this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.prop(\"\", \"bool\", \"true\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t); ",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a user defined boolean property",
+ "xtype" : "Button"
+ },
+ {
+ "$ Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
+ "$ xns" : "Gtk",
+ "xtype" : "Separator"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Javascript Function",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " _this.AddPropertyPopup.el.hide(); ",
+ " _this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.jsmethod(\"\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t);",
+ "",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a user function boolean property",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Vala Method",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ "_this.AddPropertyPopup.el.hide();",
+ " _this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.valamethod(\"\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t); ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a user function boolean property",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Vala Signal",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " _this.AddPropertyPopup.el.hide();",
+ " _this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.sig(\"\" ) ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t); ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a vala signal",
+ "xtype" : "Button"
+ },
+ {
+ "$ Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
+ "$ xns" : "Gtk",
+ "xtype" : "Separator"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Flexy - If",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " \t_this.AddPropertyPopup.el.hide();",
+ " \t_this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.prop(\"flexy:if\", \"string\", \"value_or_condition\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t);",
+ "",
+ "",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a flexy if (for HTML templates)",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Flexy - Include",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " \t_this.AddPropertyPopup.el.hide();",
+ " \t_this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.prop(\"flexy:include\", \"string\", \"name_of_file.html\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t);",
+ "",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a flexy include (for HTML templates)",
+ "xtype" : "Button"
+ },
+ {
+ "$ xns" : "Gtk",
+ "label" : "Flexy - Foreach",
+ "listeners" : {
+ "clicked" : [
+ " ( ) =>{",
+ " \t_this.AddPropertyPopup.el.hide();",
+ " \t_this.view.popover.show(",
+ "\t\t_this.view.el, ",
+ "\t\t_this.node, ",
+ "\t\t new JsRender.NodeProp.prop(\"flexy:if\", \"string\", \"value_or_condition\") ,",
+ "\t\t-1, ",
+ "\t\ttrue",
+ "\t);",
+ " ",
+ "}"
+ ]
+ },
+ "tooltip_markup" : "Add a flexy include (for HTML templates)",
+ "xtype" : "Button"
+ }
],
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "add",
- "xtype" : "SeparatorMenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "String",
- "listeners" : {
- "activate" : [
- "(self) => {",
- "",
- "\t_this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.prop(\"\", \"string\", \"\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t);",
- "",
- "}"
- ]
- },
- "tooltip_markup" : "Add a user defined string property",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Number",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " _this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.prop(\"\", \"int\", \"0\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t);",
- " ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a user defined number property",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Boolean",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " ",
- " \t",
- " _this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.prop(\"\", \"bool\", \"true\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t); ",
- " ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a user defined boolean property",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "add",
- "xtype" : "SeparatorMenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Javascript Function",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " ",
- " _this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.jsmethod(\"\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t);",
- " ",
- " ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a user function boolean property",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Vala Method",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- "",
- " _this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.valamethod(\"\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t); ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a user function boolean property",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Vala Signal",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " _this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.sig(\"\" ) ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t); ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a vala signal",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "add",
- "xtype" : "SeparatorMenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Flexy - If",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " \t_this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.prop(\"flexy:if\", \"string\", \"value_or_condition\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t);",
- "",
- "",
- "}"
- ]
- },
- "tooltip_markup" : "Add a flexy if (for HTML templates)",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Flexy - Include",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " \t_this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.prop(\"flexy:include\", \"string\", \"name_of_file.html\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t);",
- "",
- " ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a flexy include (for HTML templates)",
- "xtype" : "MenuItem"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Flexy - Foreach",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- " ",
- " \t_this.view.popover.show(",
- "\t\t_this.view.el, ",
- "\t\t_this.node, ",
- "\t\t new JsRender.NodeProp.prop(\"flexy:foreach\", \"string\", \"array,key,value\") ,",
- "\t\t-1, ",
- "\t\ttrue",
- "\t);",
- "",
- " ",
- "}"
- ]
- },
- "tooltip_markup" : "Add a flexy foreach (for HTML templates)",
- "xtype" : "MenuItem"
+ "xtype" : "Box"
}
],
- "xtype" : "Menu"
- },
- {
- "$ Gtk.Stock stock" : "Gtk.Stock.ADD",
- "$ icon_size" : "Gtk.IconSize.MENU",
- "$ xns" : "Gtk",
- "* pack" : "set_image",
- "xtype" : "Image"
+ "xtype" : "Popover"
}
],
"listeners" : {
- "button_press_event" : [
- " (self, ev) => {",
- " _this.before_edit();",
- " ",
+ "clicked" : [
+ "( ) => {",
+ " //_this.before_edit();",
+ " ",
" ",
" var p = _this.AddPropertyPopup;",
- " p.el.set_screen(Gdk.Screen.get_default());",
- " p.el.show_all();",
- " p.el.popup(null, null, null, ev.button, ev.time);",
- " return true;",
- "}"
+ " ",
+ " //\tGtk.Allocation rect;",
+ "\t//this.el.get_allocation(out rect);",
+ "\tif (p.el.parent == null) {",
+ "\t\t p.el.set_parent(this.el);",
+ "\t }",
+ " //p.el.set_pointing_to(rect);",
+ "\tp.el.show();",
+ "\tp.el.set_position(Gtk.PositionType.BOTTOM);",
+ "\tp.el.autohide = true;",
+ " return;",
+ "",
+ "}",
+ ""
]
},
+ "string icon_name" : "list-add",
"string label" : "Other",
"xtype" : "Button"
}
"}",
""
],
- "* pack" : "pack_end,true,true,0",
+ "bool hexpand" : true,
+ "bool vexpand" : true,
"id" : "EditProps",
"items" : [
{
"$ xns" : "Gtk",
"* init" : [
"{",
- " var selection = this.el.get_selection();",
- " selection.set_mode( Gtk.SelectionMode.SINGLE);",
- "",
- "",
- " var description = new Pango.FontDescription();",
- " description.set_size(10000);",
- " this.el.override_font(description);",
- " ",
+ " ",
+ " \tthis.css = new Gtk.CssProvider();",
+ "\t ",
+ "\t\tthis.css.load_from_string(\"",
+ "#leftprops-view { font-size: 12px;}",
+ "\t ",
+ "#leftprops-view dropdown button { ",
+ "\t\t\tmin-height: 16px;\t\t\t ",
+ "\t\t\toutline-offset : 0;",
+ "\t\t}",
+ "#leftprops-view cell dropdown label {",
+ " \t\tpadding-top:0px;",
+ "\t\tpadding-bottom:0px;",
+ "}",
+ "#leftprops-view cell { ",
+ " \t\tpadding-top:2px;",
+ "\t\tpadding-bottom:2px;",
+ "\t\t}",
+ "#leftprops-view cell label, #leftprops-view cell editablelable {",
+ " \t\tpadding-top:4px;",
+ "\t\tpadding-bottom:4px;",
+ "}\");",
+ " ",
+ "\t\tGtk.StyleContext.add_provider_for_display(",
+ "\t\tthis.el.get_display(),",
+ "\t\tthis.css,",
+ "\t\tGtk.STYLE_PROVIDER_PRIORITY_APPLICATION",
+ "\t);",
+ "\t\t",
+ " ",
"}",
""
],
- "* pack" : "add",
+ "* pack" : "set_child",
+ "Gtk.CssProvider css" : "",
"Xcls_PopoverProperty popover" : "null",
+ "bool hexpand" : true,
+ "bool show_row_separators" : true,
+ "bool single_click_activate" : false,
+ "bool vexpand" : true,
"id" : "view",
"items" : [
{
- "$ changed" : [
- "function(str, doRefresh) {",
- " if (!this.activePath) {",
- " return;",
- " }",
- " var iter = new Gtk.TreeIter();",
- " ",
- " _this.setTreeIter(prop);",
- " this.el.get_iter(iter, new Gtk.TreePath.from_string(this.activePath));",
- " ",
- " this.el.set_value(iter, 1, '' +str);",
- " this.el.set_value(iter, 3, '' + this.toShort(str));",
- " var type = this.getIterValue(iter, 4);",
+ "$ xns" : "Gtk",
+ "* pack" : false,
+ "id" : "deletemenu",
+ "items" : [
+ {
+ "$ xns" : "Gtk",
+ "* prop" : "child",
+ "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
+ "int spacing" : 0,
+ "items" : [
+ {
+ "$ xns" : "Gtk",
+ "listeners" : {
+ "clicked" : [
+ "( ) => {",
+ "\t",
+ "",
+ "\tvar n = (JsRender.NodeProp) _this.selmodel.el.selected_item;",
+ "",
+ "\t_this.deletemenu.el.hide();",
+ "\t_this.node.remove_prop(n);",
+ "}",
+ ""
+ ]
+ },
+ "string label" : "Delete",
+ "xtype" : "Button"
+ }
+ ],
+ "xtype" : "Box"
+ }
+ ],
+ "xtype" : "Popover"
+ },
+ {
+ "$ xns" : "Gtk",
+ "listeners" : {
+ "pressed" : [
+ "(n_press, in_x, in_y) => {",
+ "",
+ "\tGLib.debug(\"Prssed %d\", (int) this.el.get_current_button());",
+ "\t",
+ "\tvar col = _this.view.getColAt(in_x, in_y);",
+ "\tif (col != 0) {",
+ "\t\treturn;",
+ "\t}",
+ "\tstring pos;",
+ "\tvar row = _this.view.getRowAt(in_x, in_y, out pos);",
+ "\t",
+ "\tif (row < 0) {",
+ "\t\treturn;",
+ "",
+ "\t}",
+ "\tGLib.debug(\"hit row %d\", row);",
+ "\tvar prop = _this.selmodel.getPropAt(row);",
+ "\t_this.selmodel.selectProp(prop);",
+ "",
+ "\t//var point_at = _this.view.getWidgetAtRow(row);",
+ "\t",
+ "\t \t// need to shift down, as ev.y does not inclucde header apparently..",
+ " \t// or popover might be trying to do a central?",
+ "//\t _this.view.editPropertyDetails(prop, (int) in_y + 12); ",
+ " \t _this.stop_editor();",
+ " _this.view.popover.show(",
+ " \t\t\t_this.view.el, ",
+ " \t\t\t_this.node, prop, ",
+ "\t\t (int)in_y);",
+ " ",
+ " ",
+ " ",
+ "}",
+ ""
+ ]
+ },
+ "xtype" : "GestureClick"
+ },
+ {
+ "$ xns" : "Gtk",
+ "listeners" : {
+ "pressed" : [
+ "(n_press, in_x, in_y) => {",
+ "",
+ "\t",
+ "\t ",
+ "\tstring pos;",
+ "\tvar row = _this.view.getRowAt(in_x, in_y, out pos);",
+ "\t",
+ "\tif (row < 0) {",
+ "\t\treturn;",
+ "",
+ "\t}",
+ "\t",
+ "\t_this.stop_editor();",
+ "\tGLib.debug(\"hit row %d\", row);",
+ "\tvar prop = _this.selmodel.getPropAt(row);",
+ "\t_this.selmodel.selectProp(prop);",
+ "\t",
+ "\t",
+ "\t",
+ "\tGLib.debug(\"Prssed %d\", (int) this.el.get_current_button());",
+ "\t//_this.deletemenu.el.set_parent(_this.view.el);",
+ "\tif (_this.deletemenu.el.parent == null) {",
+ "\t\t_this.deletemenu.el.set_parent(_this.main_window.el);",
+ "\t}",
+ "\t",
+ "\t",
+ "\t ",
+ "\t_this.deletemenu.el.set_offset(",
+ "\t\t\t(int)in_x - _this.view.el.get_width() ,",
+ "\t\t\t(int)in_y - _this.view.el.get_height()",
+ "\t\t);",
+ "\t_this.deletemenu.el.set_position(Gtk.PositionType.BOTTOM); ",
+ " _this.deletemenu.el.popup();",
+ " ",
+ "}",
+ ""
+ ]
+ },
+ "uint button" : 3,
+ "xtype" : "GestureClick"
+ },
+ {
+ "$ xns" : "Gtk",
+ "* prop" : "model",
+ "bool can_unselect" : true,
+ "id" : "selmodel",
+ "items" : [
+ {
+ "$ xns" : "GLib",
+ "* ctor" : "new GLib.ListStore(typeof(JsRender.NodeProp))",
+ "* prop" : "model",
+ "id" : "model",
+ "xtype" : "ListStore"
+ }
+ ],
+ "xtype" : "SingleSelection",
+ "| JsRender.NodeProp getPropAt" : [
+ "(uint row) {",
"",
- " this.el.set_value(iter, 5, type + ' : ' + str);",
- " // update the tree... ",
+ "\treturn (JsRender.NodeProp) this.el.get_item(row);",
"",
- " this.get('/LeftTree.model').changed(this.toJS(), doRefresh); ",
- "}",
- ""
+ "\t ",
+ "}"
],
- "$ columns" : [
- " typeof(JsRender.NodeProp), // 0 key type",
- " typeof(string), // 1 display_key",
- " typeof(string), // 2 display_value",
- " typeof(string), // 3 display_tooltip",
- " \t\ttypeof(string) // 4 sortable value",
- "/*",
- " \t0, prop,",
- " \t1, prop.to_display_name(),",
- " \t2, dis_val.",
- " 3, \"<tt>\" + GLib.Markup.escape_text(key + \" \" +kvalue) + \"</tt>\",",
- " 4, \"0 \" + prop.name",
- " ",
- " ); ",
- " */"
+ "| int propToRow" : [
+ "(JsRender.NodeProp prop) {",
+ "\tfor (var i = 0 ; i < this.el.n_items; i++) {",
+ "\t\tvar r = (JsRender.NodeProp)this.el.get_item(i);",
+ "\t\tif (r.equals(prop)) {",
+ "\t\t\treturn i;",
+ "\t\t\t",
+ "\t\t}",
+ "\t}",
+ "\treturn -1;",
+ "\t ",
+ "}"
],
- "$ xns" : "Gtk",
- "* pack" : "set_model",
- "id" : "model",
- "n_columns" : 5,
- "xtype" : "TreeStore"
+ "| void selectProp" : [
+ "(JsRender.NodeProp prop) {",
+ "\tfor (var i = 0 ; i < this.el.n_items; i++) {",
+ "\t\tvar r = (JsRender.NodeProp)this.el.get_item(i);",
+ "\t\tif (r.equals(prop)) {",
+ "\t\t\tthis.el.selected = i;",
+ "\t\t\treturn;",
+ "\t\t}",
+ "\t}",
+ "\t ",
+ "}"
+ ],
+ "| void startEditing" : [
+ "(JsRender.NodeProp prop) {",
+ "\t// should we call select?? - caller does int (from windowstate)",
+ "\t",
+ "}"
+ ]
},
{
- "$ resizable" : true,
"$ xns" : "Gtk",
- "* init" : [
- " this.el.add_attribute(_this.keyrender.el , \"markup\", 1 ); // 1 is the key.",
- " //this.el.add_attribute(_this.keyrender.el , \"text\", 1 );",
- " "
- ],
"* pack" : "append_column",
+ "bool expand" : true,
+ "bool resizable" : true,
"id" : "keycol",
"items" : [
{
"$ xns" : "Gtk",
- "* pack" : "pack_start,false",
- "id" : "keyrender",
- "xtype" : "CellRendererText"
+ "* prop" : "factory",
+ "listeners" : {
+ "bind" : [
+ "(listitem) => {",
+ " var lb = (Gtk.Label) ((Gtk.ListItem)listitem).get_child();",
+ " var item = (JsRender.NodeProp) ((Gtk.ListItem)listitem).get_item();",
+ "",
+ "",
+ "item.bind_property(\"to_display_name_prop\",",
+ " lb, \"label\",",
+ " GLib.BindingFlags.SYNC_CREATE);",
+ "item.bind_property(\"to_tooltip_name_prop\",",
+ " lb, \"tooltip_markup\",",
+ " GLib.BindingFlags.SYNC_CREATE);",
+ "// was item (1) in old layout",
+ " ",
+ "",
+ "}",
+ ""
+ ],
+ "setup" : [
+ "(listitem) => {",
+ "\tvar lbl = new Gtk.Label(\"\");",
+ " \t((Gtk.ListItem)listitem).set_child(lbl);",
+ " \tlbl.justify = Gtk.Justification.LEFT;",
+ " \tlbl.xalign = 1;",
+ " \tlbl.use_markup = true;",
+ "\tlbl.ellipsize = Pango.EllipsizeMode.START;",
+ " \t/*lbl.changed.connect(() => {",
+ "\t\t// notify and save the changed value...",
+ "\t \t//var prop = (JsRender.NodeProp) ((Gtk.ListItem)listitem.get_item());",
+ " ",
+ " //prop.val = lbl.text;",
+ " //_this.updateIter(iter,prop);",
+ " _this.changed();",
+ "\t});",
+ "\t*/",
+ "\t((Gtk.ListItem)listitem).activatable = true;",
+ "}",
+ ""
+ ]
+ },
+ "xtype" : "SignalListItemFactory"
}
],
"title" : "Property",
- "xtype" : "TreeViewColumn"
+ "xtype" : "ColumnViewColumn"
},
{
- "$ resizable" : true,
"$ xns" : "Gtk",
- "* init" : [
- "{",
- "\t",
- " ",
- "",
- "\t",
- "\tthis.el.add_attribute(_this.valrender.el , \"text\", 2 );",
- " ",
- "}",
- ""
- ],
"* pack" : "append_column",
+ "bool expand" : true,
+ "bool resizable" : true,
"id" : "valcol",
"items" : [
{
- "$ editable" : false,
- "$ has_entry" : true,
"$ xns" : "Gtk",
- "* pack" : "pack_start,true",
- "id" : "valrender",
- "items" : [
- {
- "$ columns" : "typeof(string)",
- "$ xns" : "Gtk",
- "* pack" : false,
- "* prop" : "model",
- "id" : "valrendermodel",
- "n_columns" : 1,
- "xtype" : "ListStore"
- }
- ],
+ "* prop" : "factory",
+ "bool is_setting" : false,
"listeners" : {
- "edited" : [
- " (path, newtext) => {",
- " GLib.debug(\"Valrender - signal:edited\\n\");",
- " ",
- " this.el.editable = false;",
- " ",
+ "bind" : [
+ "(listitem) => {",
+ "\t this.is_setting = true;",
"",
- " Gtk.TreeIter iter;",
- " _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));",
- " GLib.Value gval;",
+ "",
+ "\tvar bx = (Gtk.Box) ((Gtk.ListItem)listitem).get_child();",
+ " ",
+ "\t",
+ "\t",
+ "\t",
+ "\tvar elbl = (Gtk.EditableLabel)bx.get_first_child();",
+ "\tvar lbl = (Gtk.Label) elbl.get_next_sibling();",
+ "\tvar cb = (Gtk.DropDown) lbl.get_next_sibling();",
+ "\t// decide if it's a combo or editable text..",
+ "\tvar model = (Gtk.StringList) cb.model;",
+ " ",
+ "\telbl.hide();",
+ "\tlbl.hide();",
+ "\tcb.hide();",
+ "\t",
+ "\tvar prop = (JsRender.NodeProp) ((Gtk.ListItem)listitem).get_item();",
+ "\t//GLib.debug(\"prop = %s\", prop.get_type().name());",
+ "\t//GLib.debug(\"prop.val = %s\", prop.val);",
+ "\t//GLib.debug(\"prop.key = %s\", prop.to_display_name());",
+ "\t ",
+ " var use_textarea = prop.useTextArea();",
+ " ",
+ " ",
+ " var pal = _this.file.project.palete;",
" ",
- " _this.model.el.get_value(iter,0, out gval);",
- " var prop = (JsRender.NodeProp)gval;",
- " prop.val = newtext;",
- " _this.updateIter(iter,prop);",
- " _this.changed();",
- " ",
- "}"
- ],
- "editing_started" : [
- "( editable, path) => {",
- " //_this.editing = true;",
- " GLib.debug(\"editing started called\\n\");",
- " if (!_this.allow_edit) {",
- " ",
- " GLib.debug(\"val - editing_Started\\n\");",
- " this.el.editable = false; // make sure it's not editor...",
- " ",
- " ",
- " return;",
+ " string[] opts;",
+ " var has_opts = pal.typeOptions(_this.node.fqn(), prop.name, prop.rtype, out opts);",
+ " ",
+ " if (!has_opts && prop.ptype == JsRender.NodePropType.RAW) {",
+ " \tuse_textarea = true;",
" }",
- " _this.allow_edit =false;",
" ",
- " ",
- " if ( this.el.has_entry ) {",
- " ",
- " Gtk.TreeIter iter;",
- " _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));",
- " GLib.Value gval;",
- " ",
- "",
- " ",
- " // this.get('/LeftPanel.model').activePath = path;",
- " _this.model.el.get_value(iter,0, out gval);",
" ",
- "",
- " var prop = (JsRender.NodeProp)gval;",
- " var combo = (Gtk.ComboBox)editable;",
- "",
- " var entry = (Gtk.Entry) combo.get_child(); ",
- " entry.set_text(prop.val);",
+ " if (use_textarea) {",
+ " \tprop.bind_property(\"val_short\",",
+ " lbl, \"label\",",
+ " GLib.BindingFlags.SYNC_CREATE);",
+ " prop.bind_property(\"val_tooltip\",",
+ " lbl, \"tooltip_markup\",",
+ " GLib.BindingFlags.SYNC_CREATE);",
+ " lbl.show();",
+ "\t\tthis.is_setting = false; ",
+ " return;",
+ " \t",
+ " }",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " // others... - fill in options for true/false?",
+ " // GLib.debug (ktype.up());",
+ " if (has_opts) {",
+ "\t",
+ "\t\twhile(model.get_n_items() > 0) {",
+ "\t\t\tmodel.remove(0);",
+ "\t\t}",
+ "\t\tcb.show();",
+ " \t\t// can not remove - hopefully always empty.",
+ "\t\tvar sel = -1;",
+ "\t\tfor(var i = 0; i < opts.length; i ++) {",
+ "\t\t\tmodel.append( opts[i]);",
+ "\t\t\t// not sure this is a great idea... ",
+ "\t\t\tif (opts[i].down() == prop.val.down()) {",
+ "\t\t\t\tsel = i;",
+ "\t\t\t}",
+ "\t\t}",
+ "\t\tGLib.debug(\"Set selected item to %d\", sel);",
+ "\t\tcb.set_selected(sel > -1 ? sel : Gtk.INVALID_LIST_POSITION); ",
+ "\t\tthis.is_setting = false; ",
+ "\t\treturn ;",
" }",
- " ",
- "}"
+ " ",
+ "\t// see if type is a Enum.",
+ "\t// triggers a changed event",
+ " ",
+ "\telbl.set_text(prop.val);",
+ " ",
+ "\telbl.show();",
+ "\tthis.is_setting = false; \t\t ",
+ "\t",
+ "\t",
+ "\t",
+ " ",
+ "",
+ "}",
+ ""
+ ],
+ "setup" : [
+ "(listitem) => {",
+ "\tvar hb = new Gtk.Box(Gtk.Orientation.HORIZONTAL,0);",
+ "\tvar elbl = new Gtk.EditableLabel(\"\");",
+ "\telbl.hexpand = true;",
+ "\thb.append(elbl);",
+ "\tvar lbl = new Gtk.Label(\"\");",
+ "\thb.append(lbl);",
+ "\tlbl.hexpand = true;",
+ "\tlbl.use_markup = true;",
+ "\tlbl.xalign =0;",
+ "\tlbl.ellipsize = Pango.EllipsizeMode.END;",
+ "\tvar cb = new Gtk.DropDown(new Gtk.StringList({}), null);",
+ "\tcb.hexpand = true;",
+ " ",
+ "\thb.append(cb);",
+ "\t((Gtk.ListItem)listitem).set_child(hb);",
+ "\t ",
+ "\t var ef = new Gtk.EventControllerFocus();",
+ "\t ef.enter.connect(() => {",
+ " \t\t _this.stop_editor();",
+ " \t\t var prop = (JsRender.NodeProp)((Gtk.ListItem)listitem).get_item();",
+ "\t\t _this.selmodel.selectProp(prop);\t\t",
+ "\t });",
+ "\t elbl.add_controller(ef);",
+ "\t ",
+ "\t ",
+ "\t // dropdown??? - stop editing, and highliht node",
+ "\t var tb = (Gtk.ToggleButton) cb.get_first_child();",
+ "\t tb.clicked.connect(() => {",
+ "\t\t var prop = (JsRender.NodeProp)((Gtk.ListItem)listitem).get_item();",
+ "\t\t\t",
+ "\t \t _this.stop_editor();",
+ "\t \t _this.selmodel.selectProp(prop);",
+ "\t \t ",
+ "\t });",
+ " \telbl.changed.connect(() => {",
+ "\t\t// notify and save the changed value...",
+ "\t \t",
+ " //_this.updateIter(iter,prop);",
+ " // this should happen automatically",
+ " ",
+ " if (!_this.loading && !this.is_setting) {",
+ "\t\t var prop = (JsRender.NodeProp)((Gtk.ListItem)listitem).get_item();",
+ "\t\t\t ",
+ "\t\t ",
+ "\t\t prop.val = elbl.text;",
+ " \t GLib.debug(\"calling changed\");",
+ "\t _this.changed();",
+ "\t ",
+ " }",
+ " ",
+ "\t});",
+ "\t",
+ "\t",
+ "\tcb.notify[\"selected\"].connect(() => {",
+ "\t\t// dropdown selection changed.",
+ "\t\t",
+ "\t\t",
+ "\t\t",
+ " //_this.updateIter(iter,prop);",
+ " if (!_this.loading && !this.is_setting) {",
+ "\t\t var prop = (JsRender.NodeProp)((Gtk.ListItem)listitem).get_item();",
+ "\t\t var model = (Gtk.StringList)cb.model;",
+ "\t\t prop.val = model.get_string(cb.selected);",
+ "\t\t GLib.debug(\"property set to %s\", prop.val);",
+ " \tGLib.debug(\"calling changed\");",
+ "\t _this.changed();",
+ "\t ",
+ " }",
+ " ",
+ "\t\t",
+ "\t});",
+ "\tvar gc = new Gtk.GestureClick();",
+ "\tlbl.add_controller(gc);",
+ "\tgc.pressed.connect(() => {",
+ "\t \tvar prop = (JsRender.NodeProp)((Gtk.ListItem)listitem).get_item();",
+ "\t\t _this.stop_editor();",
+ "\t _this.show_editor(_this.file, prop.parent, prop);",
+ "\t});",
+ "\t ",
+ "\t",
+ "\t",
+ "}",
+ ""
]
},
- "text_column" : 0,
- "xtype" : "CellRendererCombo",
- "| void setOptions" : [
- "(string[] ar) {",
- "\tvar m = _this.valrendermodel.el;",
- "\tm.clear();",
- "\tGtk.TreeIter iret;",
- " for (var i =0; i < ar.length; i++) {",
- " m.append(out iret);",
- " m.set_value(iret, 0, ar[i]);",
- " }",
- "",
- "}"
- ]
+ "xtype" : "SignalListItemFactory"
}
],
"title" : "Value",
- "xtype" : "TreeViewColumn"
+ "xtype" : "ColumnViewColumn"
},
{
"$ xns" : "Gtk",
"items" : [
{
"$ xns" : "Gtk",
- "* pack" : "append",
- "label" : "Delete",
- "listeners" : {
- "activate" : [
- " ( ) =>{",
- "\t_this.deleteSelected();",
- "}"
- ]
- },
- "xtype" : "MenuItem"
+ "* prop" : "child",
+ "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
+ "int spacing" : 0,
+ "items" : [
+ {
+ "$ xns" : "Gtk",
+ "label" : "Delete",
+ "listeners" : {
+ "activate" : [
+ " ( ) =>{",
+ "\t_this.deleteSelected();",
+ "\t",
+ "}"
+ ]
+ },
+ "xtype" : "Button"
+ }
+ ],
+ "xtype" : "Box"
}
],
- "xtype" : "Menu"
+ "xtype" : "Popover"
}
],
- "listeners" : {
- "button_press_event" : [
- " ( ev) => {",
- " ",
- " Gtk.TreeViewColumn col;",
- " int cell_x;",
- " int cell_y;",
- " Gtk.TreePath path;",
- " ",
- " // event x /y are relative to the widget..",
- " if (!this.el.get_path_at_pos((int)ev.x, (int) ev.y, out path, out col, out cell_x, out cell_y )) {",
- " GLib.debug(\"nothing selected on click\");",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {",
- " this.el.get_selection().unselect_all();",
- "",
- " return false;",
- " });",
- " _this.before_edit();",
- " return false; //not on a element.",
- " }",
- " ",
- " ",
- " // single click on name..",
- " //if (ev.type == Gdk.EventType.2BUTTON_PRESS && ev.button == 1 && col.title == \"Name\") { ",
- " if (ev.button == 1 && col.title == \"Property\") { ",
- " \t// need to shift down, as ev.y does not inclucde header apparently..",
- " \t// or popover might be trying to do a central?",
- " this.editPropertyDetails(path, (int) ev.y + 12); ",
- " ",
- " return false;",
- " }",
- " ",
- " ",
- " ",
- " ",
- " // right click.",
- " if (ev.type == Gdk.EventType.BUTTON_PRESS && ev.button == 3) { ",
- " // show popup!. ",
- " //if (col.title == \"Value\") {",
- " // _this.before_edit();",
- " // return false;",
- " //}",
- "",
- " var p = _this.ContextMenu;",
- "",
- " p.el.set_screen(Gdk.Screen.get_default());",
- " p.el.show_all();",
- " p.el.popup(null, null, null, ev.button, ev.time);",
- " //Seed.print(\"click:\" + res.column.title);",
- " // select the ",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {",
- " ",
- " this.el.get_selection().select_path(path);",
- " return false;",
- " });",
- " _this.before_edit();",
- " return false;",
- " }",
- " ",
- " ",
- " if (col.title != \"Value\") {",
- " GLib.debug(\"col title != Value\");",
- " ",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {",
- " this.el.get_selection().select_path(path);",
- " return false;",
- " });",
- " ",
- " _this.before_edit();",
- " // XObject.error(\"column is not value?\");",
- " return false; // ignore.. - key click.. ??? should we do this??",
- " }",
- " ",
- " ",
- " // if the cell can be edited with a pulldown",
- " // then we should return true... - and let the start_editing handle it?",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " // _this.before_edit(); <<< we really need to stop the other editor..",
- " _this.keyrender.el.stop_editing(false);",
- " _this.keyrender.el.editable =false;",
- " ",
- " ",
- " return _this.startEditingValue(path); // assumes selected row..",
- " ",
- " ",
- "",
- " ",
- " ",
- "}"
- ]
- },
- "tooltip_column" : 3,
- "xtype" : "TreeView",
- "| void editPropertyDetails" : [
- "(Gtk.TreePath path, int y) {",
+ "string name" : "leftprops-view",
+ "xtype" : "ColumnView",
+ "| Gtk.Widget? getWidgetAtRow" : [
+ "(uint row) {",
+ "/*",
+ " \t",
+ "from \thttps://discourse.gnome.org/t/gtk4-finding-a-row-data-on-gtkcolumnview/8465",
+ " \tvar colview = gesture.widget;",
+ " \tvar line_no = check_list_widget(colview, x,y);",
+ " if (line_no > -1) {",
+ " \t\tvar item = colview.model.get_item(line_no);",
+ " \t\t ",
+ " \t}",
+ " \t*/",
+ "\t\tGLib.debug(\"Get Widget At Row %d\", (int)row);",
+ " var child = this.el.get_first_child(); ",
+ " \tvar line_no = -1; ",
+ " \tvar reading_header = true;",
"",
- " ",
- "\t",
+ " \twhile (child != null) {",
+ "\t\t\tGLib.debug(\"Got %s\", child.get_type().name());",
+ " \t if (reading_header) {",
+ "\t\t\t ",
+ "\t\t\t ",
+ "\t\t\t\tif (child.get_type().name() != \"GtkColumnListView\") {",
+ "\t\t\t\t\tchild = child.get_next_sibling();",
+ "\t\t\t\t\tcontinue;",
+ "\t\t\t\t}",
+ "\t\t\t\tchild = child.get_first_child(); ",
+ "\t\t\t\treading_header = false;",
+ "\t\t\t\tcontinue;",
+ "\t }",
+ "\t\t if (child.get_type().name() != \"GtkColumnViewRowWidget\") {",
+ " \t\t child = child.get_next_sibling();",
+ " \t\t continue;",
+ "\t\t }",
+ "\t\t line_no++;",
+ "\t\t\tif (line_no == row) {",
+ "\t\t\t\tGLib.debug(\"Returning widget %s\", child.get_type().name());",
+ "\t\t\t return (Gtk.Widget)child;",
+ "\t\t }",
+ "\t child = child.get_next_sibling(); ",
+ " \t}",
+ "\t\tGLib.debug(\"Rturning null\");",
+ " return null;",
"",
- " _this.before_edit();",
- " _this.stop_editor();",
- "\t ",
- " _this.keyrender.el.stop_editing(false);",
- " _this.keyrender.el.editable =false;",
+ " }"
+ ],
+ "| int getColAt" : [
+ "(double x, double y) {",
+ "/*",
+ " \t",
+ "from \thttps://discourse.gnome.org/t/gtk4-finding-a-row-data-on-gtkcolumnview/8465",
+ " \t ",
+ " \t*/",
+ "\t\t//Gtk.Allocation alloc = { 0, 0, 0, 0 };",
+ " var child = this.el.get_first_child(); ",
+ " \t ",
+ " \tvar col = 0;",
+ " \tvar offx = 0;",
+ " \twhile (child != null) {",
+ "\t\t\tGLib.debug(\"Got %s\", child.get_type().name());",
+ "\t\t\t",
+ "\t\t\tif (child.get_type().name() == \"GtkColumnViewRowWidget\") {",
+ "\t\t\t\tchild = child.get_first_child();",
+ "\t\t\t\tcontinue;",
+ "\t\t\t}",
+ "\t\t\t",
+ "\t\t\t//child.get_allocation(out alloc);",
+ "\t\t\tif (x < (child.get_width() + offx)) {",
+ "\t\t\t\treturn col;",
+ "\t\t\t}",
+ "\t\t\toffx += child.get_width();",
+ "\t\t\tcol++;",
+ "\t\t\tchild = child.get_next_sibling();",
+ "\t\t}",
+ " \t ",
+ "\t\t\t ",
+ " return -1;",
"",
- " _this.valrender.el.stop_editing(false);",
- " _this.valrender.el.editable =false;",
- " Gtk.TreeIter iter;",
- " var mod = this.el.get_model();",
- "\t mod.get_iter (out iter, path);",
- "\t ",
- " ",
- "\tGLib.Value gval;",
+ " }"
+ ],
+ "| int getRowAt" : [
+ "(double x, double in_y, out string pos) {",
"",
- " mod.get_value(iter,0, out gval);",
"",
- " this.popover.show(_this.view.el, _this.node, (JsRender.NodeProp)gval, y);",
- " ",
- " ",
- "}",
- ""
+ "\t ",
+ "",
+ "/*",
+ " \t",
+ "from \thttps://discourse.gnome.org/t/gtk4-finding-a-row-data-on-gtkcolumnview/8465",
+ " \tvar colview = gesture.widget;",
+ " \tvar line_no = check_list_widget(colview, x,y);",
+ " if (line_no > -1) {",
+ " \t\tvar item = colview.model.get_item(line_no);",
+ " \t\t ",
+ " \t}",
+ " \t*/",
+ " \t\t ",
+ " \t\t",
+ " \t\t//GLib.debug(\"offset = %d y = %d\", (int) voff, (int) in_y);",
+ " \tvar y = in_y + _this.EditProps.el.vadjustment.value; ",
+ " var child = this.el.get_first_child(); ",
+ " \t//Gtk.Allocation alloc = { 0, 0, 0, 0 };",
+ " \tvar line_no = -1; ",
+ " \tvar reading_header = true;",
+ " \tvar real_y = 0;",
+ " \tvar header_height = 0;",
+ " \tpos = \"none\";",
+ " \tvar h = 0;",
+ " \twhile (child != null) {",
+ "\t\t\t//GLib.debug(\"Got %s\", child.get_type().name());",
+ " \t if (reading_header) {",
+ "\t\t\t\t",
+ "",
+ "\t\t\t\tif (child.get_type().name() != \"GtkColumnListView\") {",
+ "\t\t\t h += child.get_height();",
+ "\t\t\t\t\tchild = child.get_next_sibling();",
+ "\t\t\t\t\tcontinue;",
+ "\t\t\t\t}",
+ "\t\t\t\t// should be columnlistview",
+ "\t\t\t\tchild = child.get_first_child(); ",
+ "\t\t\t GLib.debug(\"header height=%d\", h);",
+ "\t\t\t\theader_height = h;",
+ "\t\t\t\t",
+ "\t\t\t\treading_header = false;",
+ "\t\t\t\t",
+ "\t }",
+ "\t ",
+ "\t\t if (child.get_type().name() != \"GtkColumnViewRowWidget\") {",
+ " \t\t child = child.get_next_sibling();",
+ " \t\t continue;",
+ "\t\t }",
+ "\t\t ",
+ "\t\t \tif (y < header_height) {",
+ "\t\t \treturn -1;",
+ "\t \t}",
+ "\t\t ",
+ "\t\t line_no++;",
+ "\t\t\tvar hh = child.get_height();",
+ "\t\t\t//child.get_allocation(out alloc);",
+ "\t\t\t//GLib.debug(\"got cell xy = %d,%d w,h= %d,%d\", alloc.x, alloc.y, alloc.width, alloc.height);",
+ "\t\t\t//GLib.debug(\"row %d y= %d %s\", line_no, (int) (header_height + alloc.y),",
+ "\t\t\t",
+ "\t\t\t//\tchild.visible ? \"VIS\" : \"hidden\");",
+ "",
+ "\t\t if (y > (header_height + real_y) && y <= (header_height + real_y + hh) ) {",
+ "\t\t \tif (y > ( header_height + real_y + (hh * 0.8))) {",
+ "\t\t \t\tpos = \"below\";",
+ "\t \t\t} else if (y > ( header_height + real_y + (hh * 0.2))) {",
+ "\t \t\t\tpos = \"over\";",
+ " \t\t\t} else {",
+ " \t\t\t\tpos = \"above\";",
+ "\t\t\t\t}",
+ "\t\t \t GLib.debug(\"getRowAt return : %d, %s\", line_no, pos);",
+ "\t\t\t return line_no;",
+ "\t\t }",
+ " ",
+ "",
+ "\t\t if (real_y + hh > y) {",
+ "\t\t return -1;",
+ "\t }",
+ "\t real_y += hh;",
+ "\t child = child.get_next_sibling(); ",
+ " \t}",
+ " return -1;",
+ "",
+ " }"
+ ],
+ "| void editProp" : [
+ "(JsRender.NodeProp prop) ",
+ "{",
+ "\tvar sm = _this.selmodel.el;",
+ " ",
+ "\t\tvar sr = -1;",
+ "\t\tGLib.debug(\"finding node\");",
+ "\t\t_this.selmodel.selectProp(prop);",
+ "\t\t",
+ "\t\tfor (var i = 0 ; i < sm.n_items; i++) {",
+ "\t\t\tvar r = (JsRender.NodeProp)sm.get_item(i);",
+ "\t\t\tif (r.equals(prop)) {",
+ "\t\t\t\tsr = i;",
+ "\t\t\t\tbreak;",
+ "\t\t\t}",
+ "\t\t}",
+ "\t\tif (sr < 0) {",
+ "\t\t\tGLib.debug(\"finding node - cant find it\");",
+ "\t\t\t \t\t",
+ "\t\t\treturn;",
+ "\t\t}",
+ "\t\tvar r = this.getWidgetAtRow(sr);",
+ "\t\tGLib.debug(\"r = %s\", r.get_type().name());",
+ "\t\tvar ca = r.get_first_child();",
+ "\t\tvar ll = (Gtk.Label)ca.get_first_child();",
+ "\t\tvar cb = ca.get_next_sibling();",
+ "\t\tvar b = cb.get_first_child();",
+ "\t\tvar e = (Gtk.EditableLabel) b.get_first_child();",
+ "\t\tvar l = (Gtk.Label) e.get_next_sibling();",
+ "\t\tvar d = (Gtk.DropDown) l.get_next_sibling();",
+ "\t\t",
+ "\t\tGLib.debug(\"row key = %s\", ll.label);",
+ "\t\tif (e.get_visible()) {",
+ "\t\t\t_this.stop_editor();",
+ "\t\t\te.start_editing();",
+ "\t\t\t//GLib.Timeout.add_once(500, () => {",
+ "\t\t\t//\tvar st = (Gtk.Stack) e.get_first_child();",
+ "\t\t\t//\tvar ed = (Gtk.Entry) st.get_visible_child();",
+ "\t\t\t//\ted.grab_focus_without_selecting();",
+ "\t\t\t//});",
+ "\t\t\treturn;",
+ "\t\t}",
+ "\t\tif (d.get_visible()) {",
+ "\t\t\t_this.stop_editor();",
+ "\t\t\td.activate();",
+ "\t\t\treturn;",
+ "\t\t}",
+ "\t\tif (l.get_visible()) {",
+ "\t\t \t_this.stop_editor();",
+ "\t \t_this.show_editor(_this.file, prop.parent, prop);",
+ "\t\t",
+ "\t\t}",
+ "\t\t",
+ "\t\t",
+ "\t\t",
+ "\t\t//gtkcolumnviewrowwidget",
+ "\t\t // cell widet",
+ "\t\t // cell widget",
+ "\t\t \t// box",
+ "\t\t \t\t// entry / label / dropdown",
+ "\t\t \t\t",
+ "\t\t ",
+ "}"
]
}
],
}
],
"xtype" : "Box",
- "| string keyFormat" : [
+ "| string keyFormat" : [
"(string val, string type) {",
" ",
" // Glib.markup_escape_text(val);",
"",
"}"
],
- "| string keySortFormat" : [
+ "| string keySortFormat" : [
"(string key) {",
" // listeners first - with 0",
" // specials",
"",
"}"
],
- "| void addProp" : [
+ "| void a_addProp" : [
" (JsRender.NodeProp prop) {",
" // info includes key, val, skel, etype..",
" //console.dump(info);",
" //type = info.type.toLowerCase();",
" //var data = this.toJS();",
" ",
- " ",
- " ",
" ",
" if (prop.ptype == JsRender.NodePropType.LISTENER) {",
" if (this.node.listeners.has_key(prop.name)) {",
" this.load(this.file, this.node);",
" ",
" ",
- " ",
- " /// need to find the row which I've just added..",
- " ",
- " ",
- " var s = this.view.el.get_selection();",
- " s.unselect_all();",
+ " ",
" ",
" GLib.debug(\"trying to find new iter\");",
- " ",
- " this.model.el.foreach((model, path, iter) => {",
- " GLib.Value gval;",
- " this.model.el.get_value(iter, 0 , out gval);",
- " ",
- " var iprop = (JsRender.NodeProp)gval;",
- " if (iprop.to_index_key() != prop.to_index_key()) {",
- " \treturn false; // continue?",
- " }",
- " ",
- " // delay this?",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,40 , () => {",
- " \t/*",
- " \t\tif (prop.name == \"\") { // empty string for key name.",
- " \t\t_this.view.editPropertyDetails(this.model.el.get_path(iter));",
- " \t\treturn false;",
- " \t}",
- " \t*/",
- " \t",
- " this.startEditingValue(this.model.el.get_path(iter));",
- " return false;",
- " });",
- " //s.select_iter(iter);",
- " return true; ",
- " });",
- " ",
- " ",
+ " ",
" ",
" ",
"}",
""
],
- "| void deleteSelected" : [
+ "| void deleteSelected" : [
" () {",
" ",
- " this.stop_editor();",
+ "\t\treturn;",
+ "\t\t/*",
" ",
" Gtk.TreeIter iter;",
" Gtk.TreeModel mod;",
" GLib.Value gval;",
" mod.get_value(iter, 0 , out gval);",
" var prop = (JsRender.NodeProp)gval;",
+ " if (prop == null) {",
+ "\t this.load(this.file, this.node); ",
+ " \treturn;",
+ " \t}",
+ " \t// stop editor after fetching property - otherwise prop is null.",
+ " this.stop_editor();",
" ",
+ " \t",
" switch(prop.ptype) {",
" case JsRender.NodePropType.LISTENER:",
" this.node.listeners.unset(prop.to_index_key());",
" this.load(this.file, this.node);",
" ",
" _this.changed();",
+ " */",
"}"
],
- "| void finish_editing" : [
- "() {",
- " // ",
- " this.before_edit();",
- "}"
- ],
- "| void load" : [
+ "| void load" : [
"(JsRender.JsRender file, JsRender.Node? node) ",
"{",
"\t// not sure when to initialize this - we should do it on setting main window really. ",
+ "\t",
+ "\tthis.loading = true;",
" if (this.view.popover == null) {",
" \t\t this.view.popover = new Xcls_PopoverProperty();",
" \t\t this.view.popover.mainwindow = _this.main_window;",
"\t}",
" ",
" ",
- " ",
+ " if (this.node != null) {",
+ " \tthis.node.dupeProps(); // ensures removeall will not do somethign silly",
+ " \t",
+ " }",
" ",
" GLib.debug(\"load leftprops\\n\");",
- " this.before_edit();",
+ "",
" this.node = node;",
" this.file = file;",
" ",
" ",
- " this.model.el.clear();",
+ " this.model.el.remove_all();",
" ",
" //this.get('/RightEditor').el.hide();",
" if (node ==null) {",
" return ;",
" }",
- " ",
+ " node.loadProps(this.model.el); ",
" ",
- "",
- " //var provider = this.get('/LeftTree').getPaleteProvider();",
- " Gtk.TreeIter iter;",
" ",
+ " //GLib.debug(\"clear selection\\n\");",
" ",
- " ",
- " ",
- " ",
- " // really need a way to sort the hashmap...",
- " var m = this.model.el;",
- " ",
- " var miter = node.listeners.map_iterator();",
- " var i = 0;",
- " ",
- " while(miter.next()) {",
- " i++;",
- " m.append(out iter,null);",
- " ",
- " this.updateIter(iter, miter.get_value());",
- " ",
- " ",
- " }",
- " ",
- " ",
- " miter = node.props.map_iterator();",
- " ",
- " ",
- " while(miter.next()) {",
- " i++;",
- " m.append(out iter,null);",
- " this.updateIter(iter, miter.get_value());",
- " ",
- " }",
- " GLib.debug(\"clear selection\\n\");",
+ " \tthis.loading = false;",
+ " this.selmodel.el.set_selected(Gtk.INVALID_LIST_POSITION);",
+ " this.updateErrors();",
" // clear selection?",
- " this.model.el.set_sort_column_id(4,Gtk.SortType.ASCENDING); // sort by real key..",
- " ",
- " this.view.el.get_selection().unselect_all();",
- " ",
+ " //this.model.el.set_sort_column_id(4,Gtk.SortType.ASCENDING); // sort by real key..",
" ",
+ " // this.view.el.get_selection().unselect_all();",
" ",
+ " // _this.keycol.el.set_max_width(_this.EditProps.el.get_allocated_width()/ 2);",
+ " // _this.valcol.el.set_max_width(_this.EditProps.el.get_allocated_width()/ 2);",
" ",
"}",
""
],
- "| void startEditingKey" : [
- "( Gtk.TreePath path) {",
- " ",
- " if (!this.stop_editor()) {",
- " return;",
- " }",
- " ",
- " // others... - fill in options for true/false?",
- " ",
- " ",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {",
- " this.allow_edit = true;",
- " this.keyrender.el.editable = true;",
- " ",
- " this.view.el.set_cursor_on_cell(",
- " path,",
- " this.keycol.el,",
- " this.keyrender.el,",
- " true",
- " );",
- " ",
- " return false;",
- " });",
- " ",
- " ",
- "}",
- ""
- ],
- "| void updateIter" : [
- "(Gtk.TreeIter iter, JsRender.NodeProp prop) {",
- "",
- " //print(\"update Iter %s, %s\\n\", key,kvalue);",
- " ",
- " var dl = prop.val.strip().split(\"\\n\");",
+ "| void removeErrors" : [
+ "() {",
+ "\tvar child = this.view.el.get_first_child(); ",
+ " ",
+ "\tvar reading_header = true;",
+ " ",
+ "\twhile (child != null) {",
+ "\t\tGLib.debug(\"Got %s\", child.get_type().name());",
+ "\t ",
+ "\t if (reading_header) {",
+ "\t\t\t",
"",
- " var dis_val = dl.length > 1 ? (dl[0].strip()+ \"...\") : dl[0];",
- " ",
- " if (prop.ptype == JsRender.NodePropType.LISTENER) {",
+ "\t\t\tif (child.get_type().name() != \"GtkColumnListView\") {",
+ "\t\t\t ",
+ "\t\t\t\tchild = child.get_next_sibling();",
+ "\t\t\t\tcontinue;",
+ "\t\t\t}",
+ "\t\t\t// should be columnlistview",
+ "\t\t\tchild = child.get_first_child(); ",
+ "\t\t ",
+ "\t\t ",
+ "\t\t\t",
+ "\t\t\treading_header = false;",
+ "\t\t\t ",
+ "\t }",
+ "\t ",
+ "\t \tif (child.has_css_class(\"node-err\")) {",
+ "\t\t\tchild.remove_css_class(\"node-err\");",
+ "\t\t}",
+ "\t\tif (child.has_css_class(\"node-warn\")) {",
+ "\t\t\tchild.remove_css_class(\"node-warn\");",
+ "\t\t}",
+ "\t\t",
+ "\t\tif (child.has_css_class(\"node-depr\")) {",
+ "\t\t\tchild.remove_css_class(\"node-depr\");",
+ "\t\t}",
+ "\t\t",
+ " child = child.get_next_sibling(); ",
+ "\t}",
+ "\t//GLib.debug(\"Rturning null\");",
" ",
- " ",
- " ",
- " this.model.el.set(iter, ",
- " \t0, prop,",
- " \t1, prop.to_display_name(),",
- " \t2, dis_val,",
- " 3, \"<tt>\" + GLib.Markup.escape_text(prop.to_tooltip()) + \"</tt>\",",
- " 4, prop.to_sort_key(),",
- " -1",
- " ); ",
- " return;",
- " }",
- " ",
- "",
- "",
- " this.model.el.set(iter, ",
- " 0, prop,",
- " \t1, prop.to_display_name(),",
- " \t2, dis_val,",
- " 3, \"<tt>\" + GLib.Markup.escape_text(prop.to_tooltip()) + \"</tt>\",",
- " 4, prop.to_sort_key(),",
- " -1",
- " ",
- " ); ",
"}"
],
- "| bool startEditingValue" : [
- "( Gtk.TreePath path) {",
- "",
- " // ONLY return true if editing is allowed - eg. combo..",
- "",
- " GLib.debug(\"start editing?\\n\");",
- " if (!this.stop_editor()) {",
- " GLib.debug(\"stop editor failed\\n\");",
- " return false;",
- " }",
- " ",
- " Gtk.TreeIter iter;",
- "",
- " var mod = this.model.el;",
- " mod.get_iter (out iter, path);",
- " ",
- " GLib.Value gval;",
- " mod.get_value(iter, 0 , out gval);",
- " var prop = (JsRender.NodeProp)gval;",
- "",
- "",
- " ",
- " var use_textarea = false;",
- "",
- " //------------ things that require the text editor...",
- " ",
- " if (prop.ptype == JsRender.NodePropType.LISTENER) {",
- " use_textarea = true;",
- " }",
- " if (prop.ptype == JsRender.NodePropType.METHOD) { ",
- " use_textarea = true;",
- " }",
- " if (prop.ptype == JsRender.NodePropType.RAW) { // raw string",
- " use_textarea = true;",
- " }",
- " if ( prop.name == \"init\" && prop.ptype == JsRender.NodePropType.SPECIAL) {",
- " use_textarea = true;",
- " }",
- " if (prop.val.length > 40) { // long value...",
- " use_textarea = true;",
- " }",
- " ",
- " ",
- " ",
- " if (use_textarea) {",
- " GLib.debug(\"Call show editor\\n\");",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {",
- " this.view.el.get_selection().select_path(path);",
- " ",
- " this.show_editor(file, node, prop);",
- " ",
- " return false;",
- " });",
- " ",
- " ",
- " return false;",
- " }",
- " ",
- " var pal = this.file.project.palete;",
- " ",
- " string[] opts;",
- " var has_opts = pal.typeOptions(this.node.fqn(), prop.name, prop.rtype, out opts);",
- " ",
- " ",
- " ",
- " // others... - fill in options for true/false?",
- " GLib.debug(\"turn on editing %s \\n\" , mod.get_path(iter).to_string());",
- " ",
- " // GLib.debug (ktype.up());",
- " if (has_opts) {",
- " GLib.debug(\"start editing try/false)???\");",
- " this.valrender.el.has_entry = false;",
- " ",
- " this.valrender.setOptions(opts);",
- " ",
- " this.valrender.el.has_entry = false;",
- " this.valrender.el.editable = true;",
- " this.allow_edit = true;",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {",
- " this.view.el.set_cursor_on_cell(",
- "\t path,",
- "\t this.valcol.el,",
- "\t this.valrender.el,",
- "\t true",
- " );",
- " return false;",
- " });",
- " return true;",
- " }",
- " ",
- " // see if type is a Enum.",
- " ",
- " ",
- " ",
- " ",
- " ",
- " opts = { };",
- " this.valrender.setOptions(opts);",
- " ",
- " GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {",
- " ",
- " // at this point - work out the type...",
- " // if its' a combo... then show the options..",
- " this.valrender.el.has_entry = true;",
- " ",
- " this.valrender.el.editable = true; ",
- " ",
- " ",
- " this.allow_edit = true;",
- " ",
- " ",
- " ",
- " ",
- "",
- " this.view.el.set_cursor_on_cell(",
- " path,",
- " this.valcol.el,",
- " this.valrender.el,",
- " true",
- " );",
- " return false;",
- " });",
- " return false;",
- "}",
- ""
- ],
- "| void before_edit" : [
- "()",
- "{",
- "",
- " GLib.debug(\"before edit - stop editing\\n\");",
- " ",
- " // these do not appear to trigger save...",
- " _this.keyrender.el.stop_editing(false);",
- " _this.keyrender.el.editable =false;",
- "",
- " _this.valrender.el.stop_editing(false);",
- " _this.valrender.el.editable =false; ",
- " ",
- " ",
- "// technicall stop the popup editor..",
- "",
- "}",
- ""
- ],
- "| void reload" : [
+ "| void updateErrors" : [
"() {",
- "\tthis.load(this.file, this.node);",
- "}",
- ""
+ "\tvar file = this.file;",
+ "\tvar ar = file.getErrors();",
+ "\tif (ar.size < 1) {",
+ "\t\tthis.removeErrors();",
+ "\t\tthis.last_error_counter = file.error_counter ;",
+ "",
+ "\t\treturn;",
+ "\t}",
+ " \tif (this.last_error_counter == file.error_counter) {",
+ "\t\treturn;",
+ "\t}",
+ "\tthis.removeErrors();",
+ "\t",
+ "\tforeach(var diag in ar) { ",
+ "\t",
+ "\t\t ",
+ "// print(\"get inter\\n\");",
+ "\t var node= file.lineToNode( (int)diag.range.start.line) ;",
+ "\t if (node == null || node.oid != this.node.oid) {",
+ "\t \tcontinue;",
+ " \t}",
+ " \tvar prop = node.lineToProp( (int)diag.range.start.line) ;",
+ " \t",
+ " \tvar row = _this.selmodel.propToRow(prop);",
+ " \tif (row < 0) {",
+ " \t\tcontinue;",
+ "\t\t}",
+ " \tvar w = this.view.getWidgetAtRow(row);",
+ " \tif (w == null) {",
+ " \t\treturn;",
+ "\t\t}",
+ "\t \t\tvar ed = diag.category.down();",
+ "\t\tif (ed != \"err\" && w.has_css_class(\"node-err\")) {",
+ "\t\t\tcontinue;",
+ "\t\t}",
+ "\t\tif (ed == \"err\" && w.has_css_class(\"node-warn\")) {",
+ "\t\t\tw.remove_css_class(\"node-warn\");",
+ "\t\t}",
+ "\t\tif (ed == \"err\" && w.has_css_class(\"node-depr\")) {",
+ "\t\t\tw.remove_css_class(\"node-depr\");",
+ "\t\t}",
+ "\t\tif (!w.has_css_class(\"node-\"+ ed)) {",
+ "\t\t\tw.add_css_class(\"node-\" + ed);",
+ "\t\t}",
+ "\t\t",
+ "\t}",
+ "\t",
+ "}"
]
}
],
- "modOrder" : "",
- "name" : "WindowLeftProps",
- "parent" : "",
- "path" : "/home/alan/gitlive/roobuilder/src/Builder4/WindowLeftProps.bjs",
- "permname" : "",
- "title" : ""
+ "name" : "WindowLeftProps"
}
\ No newline at end of file