X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=src%2FBuilder4%2FPopoverProperty.vala;h=e32938c92fc4f7303e5c2de04e552583ec316508;hp=e067a50107ef5c498491cda144b7241c54821b0d;hb=HEAD;hpb=9d62d5931aef136e7af54a10acfd88d73079fb30 diff --git a/src/Builder4/PopoverProperty.vala b/src/Builder4/PopoverProperty.vala index e067a5010..e32938c92 100644 --- a/src/Builder4/PopoverProperty.vala +++ b/src/Builder4/PopoverProperty.vala @@ -12,17 +12,19 @@ public class Xcls_PopoverProperty : Object } return _PopoverProperty; } + public Xcls_header header; public Xcls_kflag kflag; public Xcls_dbcellrenderer dbcellrenderer; public Xcls_dbmodel dbmodel; public Xcls_ktype ktype; public Xcls_kname kname; - public Xcls_save_btn save_btn; // my vars (def) + public string old_keyname; public signal void success (Project.Project pr, JsRender.JsRender file); public bool done; public Xcls_MainWindow mainwindow; + public string key_type; public JsRender.Node node; // ctor @@ -45,15 +47,54 @@ public class Xcls_PopoverProperty : Object //listeners this.el.closed.connect( () => { - if (!this.done) { - _this.el.show(); + + + var newtext = ""; + Gtk.TreeIter citer; + GLib.Value gval; + this.kflag.el.get_active_iter(out citer); + this.dbmodel.el.get_value(citer, 0, out gval); + + var ktype = this.ktype.el.get_text().strip(); + var kname = this.kname.el.get_text().strip(); + newtext += ((string)gval).strip(); + newtext += ktype.length > 0 && newtext.length > 0 ? " " :""; + newtext += ktype; + newtext += kname.length > 0 && newtext.length > 0 ? " " :""; + newtext += kname; + + + var lp = _this.mainwindow.windowstate.left_props; + + switch(this.key_type) { + case "listener": + var ov = _this.node.listeners.get(this.old_keyname); + _this.node.listeners.set(newtext, ov); + if (this.old_keyname != newtext) { + _this.node.listeners.unset(this.old_keyname); + } + + + lp.updateKey(this.old_keyname, this.key_type, newtext); + + break; + case "props": + var ov = _this.node.props.get(this.old_keyname); + _this.node.props.set(newtext, ov); + if (this.old_keyname != newtext) { + _this.node.props.unset(this.old_keyname); + } + lp.updateKey(this.old_keyname, this.key_type, newtext); + break; + } + + - } }); } // user defined functions - public void show (Gtk.Widget btn, JsRender.Node node, string key) + public void show (Gtk.Widget btn, JsRender.Node node, string key_type, string key) { string kname = "", kflag = "", ktype = ""; @@ -61,6 +102,16 @@ public class Xcls_PopoverProperty : Object node.normalize_key( key, out kname, out kflag, out ktype); } + if (key_type == "listener") { + this.header.el.title = "Modify Event Listener"; + } else { + this.header.el.title = "Modify Property"; + } + + this.key_type = key_type; + this.old_keyname = key; + this.node = node; + _this.kname.el.set_text(kname); _this.ktype.el.set_text(ktype); @@ -68,11 +119,7 @@ public class Xcls_PopoverProperty : Object // does node have this property... - if (key.length > 0) { - this.save_btn.el.set_label("Save"); - } else { - this.save_btn.el.set_label("Create"); - } + _this.node = node; //console.log('show all'); @@ -135,20 +182,17 @@ public class Xcls_PopoverProperty : Object // set gobject values this.el.homogeneous = false; - var child_0 = new Xcls_HeaderBar3( _this ); + var child_0 = new Xcls_header( _this ); child_0.ref(); this.el.pack_start ( child_0.el , false,true,0 ); var child_1 = new Xcls_Table4( _this ); child_1.ref(); this.el.pack_start ( child_1.el , false,false,4 ); - var child_2 = new Xcls_HButtonBox13( _this ); - child_2.ref(); - this.el.pack_end ( child_2.el , false,true,0 ); } // user defined functions } - public class Xcls_HeaderBar3 : Object + public class Xcls_header : Object { public Gtk.HeaderBar el; private Xcls_PopoverProperty _this; @@ -157,9 +201,10 @@ public class Xcls_PopoverProperty : Object // my vars (def) // ctor - public Xcls_HeaderBar3(Xcls_PopoverProperty _owner ) + public Xcls_header(Xcls_PopoverProperty _owner ) { _this = _owner; + _this.header = this; this.el = new Gtk.HeaderBar(); // my vars (dec) @@ -334,49 +379,50 @@ public class Xcls_PopoverProperty : Object // el.set_value(iter, 1, "aaa - Just add Element - aaa"); el.append(out iter); - el.set(iter, 0, " ", 1, "Normal Property", -1); + el.set(iter, 0, "", 1, "Normal Property", -1); if (_this.mainwindow.windowstate.file.xtype == "Gtk") { el.append(out iter); - el.set(iter, 0, "$", 1, "Raw Property (not escaped)", -1); + el.set(iter, 0, "$", 1, "($) Raw Property (not escaped)", -1); el.append(out iter); - el.set(iter, 0, "#", 1, "User defined property", -1); + el.set(iter, 0, "#", 1, "(#) User defined property", -1); el.append(out iter); - el.set(iter, 0, "|", 1, "User defined method", -1); + el.set(iter, 0, "|", 1, "(|) User defined method", -1); el.append(out iter); - el.set(iter, 0, "*", 1, "Special property (eg. prop | args | ctor | init )", -1); + el.set(iter, 0, "*", 1, "(*) Special property (eg. prop | args | ctor | init )", -1); el.append(out iter); - el.set(iter, 0, "@", 1, "Vala Signal", -1); + el.set(iter, 0, "@", 1, "(@) Vala Signal", -1); } else { // javascript el.append(out iter); - el.set(iter, 0, "$", 1, "Raw Property (not escaped)", -1); + el.set(iter, 0, "$", 1, "($) Raw Property (not escaped)", -1); el.append(out iter); - el.set(iter, 0, "|", 1, "User defined method", -1); + el.set(iter, 0, "|", 1, "(|) User defined method", -1); el.append(out iter); - el.set(iter, 0, "*", 1, "Special property (eg. prop )", -1); + el.set(iter, 0, "*", 1, "(*) Special property (eg. prop )", -1); } el.foreach((tm, tp, titer) => { GLib.Value val; - el.get(titer, 0, out val); - print("got type %s",val.type_name()); + el.get_value(titer, 0, out val); + print("check %s against %s\n", (string)val, kflag); if (((string)val) == kflag) { _this.kflag.el.set_active_iter(titer); + return true; } - return true; + return false; }); @@ -397,7 +443,7 @@ public class Xcls_PopoverProperty : Object public Xcls_Label9(Xcls_PopoverProperty _owner ) { _this = _owner; - this.el = new Gtk.Label( "Type" ); + this.el = new Gtk.Label( "Type or Return Type" ); // my vars (dec) @@ -485,170 +531,5 @@ public class Xcls_PopoverProperty : Object } - public class Xcls_HButtonBox13 : Object - { - public Gtk.HButtonBox el; - private Xcls_PopoverProperty _this; - - - // my vars (def) - - // ctor - public Xcls_HButtonBox13(Xcls_PopoverProperty _owner ) - { - _this = _owner; - this.el = new Gtk.HButtonBox(); - - // my vars (dec) - - // set gobject values - this.el.margin_right = 4; - this.el.margin_left = 4; - this.el.margin_bottom = 4; - var child_0 = new Xcls_Button14( _this ); - child_0.ref(); - this.el.add ( child_0.el ); - var child_1 = new Xcls_save_btn( _this ); - child_1.ref(); - this.el.add ( child_1.el ); - } - - // user defined functions - } - public class Xcls_Button14 : Object - { - public Gtk.Button el; - private Xcls_PopoverProperty _this; - - - // my vars (def) - - // ctor - public Xcls_Button14(Xcls_PopoverProperty _owner ) - { - _this = _owner; - this.el = new Gtk.Button(); - - // my vars (dec) - - // set gobject values - this.el.label = "Cancel"; - - //listeners - this.el.clicked.connect( () => { - - _this.done = true; - _this.el.hide(); - }); - } - - // user defined functions - } - - public class Xcls_save_btn : Object - { - public Gtk.Button el; - private Xcls_PopoverProperty _this; - - - // my vars (def) - - // ctor - public Xcls_save_btn(Xcls_PopoverProperty _owner ) - { - _this = _owner; - _this.save_btn = this; - this.el = new Gtk.Button(); - - // my vars (dec) - - // set gobject values - this.el.label = "Save"; - - //listeners - this.el.clicked.connect( ( ) => { - - - /* - - if (_this.name.el.get_text().length < 1) { - StandardErrorDialog.show( - _this.mainwindow.el, - "You have to set Component name " - ); - - return; - } - // what does this do? - - var isNew = _this.file.name.length > 0 ? false : true; - - - - - // FIXME - this may be more complicated... - //for (var i in this.def) { - // this.file[i] = this.get(i).el.get_text(); - //} - - if (!isNew) { - try { - _this.updateFileFromEntry(); - } catch( JsRender.Error.RENAME_FILE_EXISTS er) { - Xcls_StandardErrorDialog.singleton().show( - _this.mainwindow.el, - "The name you used already exists " - ); - return; - - } - - _this.done = true; - _this.file.save(); - _this.el.hide(); - return; - } - var fn = _this.name.el.get_text(); - var dir = _this.project.firstPath(); - - if (GLib.FileUtils.test(dir + "/" + fn + ".bjs", GLib.FileTest.EXISTS)) { - Xcls_StandardErrorDialog.singleton().show( - _this.mainwindow.el, - "That file already exists" - ); - return; - } - - var f = JsRender.JsRender.factory( - _this.file.project.xtype, - _this.file.project, - dir + "/" + fn + ".bjs"); - - _this.file = f; - - - - _this.updateFileFromEntry(); - _this.file.loaded = true; - _this.file.save(); - _this.file.project.addFile(_this.file); - - - // what about .js ? - _this.done = true; - _this.el.hide(); - - - - _this.success(_this.project, _this.file); - */ - - }); - } - - // user defined functions - } - - }