X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=JsRender%2FGtk.js;fp=JsRender%2FGtk.js;h=b03b4eba5022e4848d38b0995d281b45fddb237c;hp=09452b6158443108bfcd1e81cd0e2b303c1fc393;hb=2357117f2dbfda5d1282c5cc730534781e244d7e;hpb=a8abe74a436a317a7574a85149f17ecf9f72daa1 diff --git a/JsRender/Gtk.js b/JsRender/Gtk.js index 09452b615..b03b4eba5 100644 --- a/JsRender/Gtk.js +++ b/JsRender/Gtk.js @@ -11,15 +11,21 @@ Base = imports.JsRender.Base.Base; var gid = 1; +// ctors needed for Constructing vala?? - + var ctors = { + "Gtk.Label": [ "label" ], + "Gtk.Box": [ "orientation", "spacing:0" ], "Gtk.MessageDialog" : [ "parent:null", "flags:Gtk.DialogFlags.MODAL", "message_type", "buttons", "text" ], - "Gtk.ToolButton": [ "icon_widget:null", "label:null" ], - "Gtk.ScrolledWindow": [ "hadjustment:null", "vadjustment:null" ], "Gtk.SourceBuffer": [ "table:null" ], + "Gtk.Table": [ "n_rows", "n_columns" , "homogeneous" ], + "Gtk.ToolButton": [ "icon_widget:null", "label:null" ], + "Gtk.HBox": [ "homogeneous:true", "spacing:0" ], "Gtk.VBox": [ "homogeneous:true", "spacing:0" ], - - + "Gtk.ListStore": [ "n_columns", "columns" ], + "Gtk.FileChooserWidget" : [ "action"], + //"Gtk.Entry": [ ], }; @@ -247,6 +253,10 @@ Gtk = XObject.define( //print(JSON.stringify(this.items[0],null,4));Seed.quit(); var item= XObject.xclone(this.items[0]); + if (!item.id) { + item.id = this.name; + + } print(JSON.stringify(item,null,4)); @@ -277,6 +287,8 @@ Gtk = XObject.define( ret += "*/\n"; } ret += "\n\n"; + + // print(JSON.stringify(item,null,4)); this.toValaItem(item,0, function(s) { ret+= s; @@ -291,14 +303,14 @@ Gtk = XObject.define( var ns = item['|xns'] ; if (ns == 'GtkSource') { return 'Gtk.Source' - ns = 'Gtk.Source'; + } return ns + '.'; }, toValaName : function(item) { this.vcnt++; - var cls = this.toValaNS(item) + item.xtype; + var cls = this.toValaNS(item) + item.xtype; // eg. Gtk.Window var id = item.id ? item.id : (item.xtype + this.vcnt); var props = this.palete.getPropertiesFor(cls, 'props'); @@ -368,6 +380,7 @@ Gtk = XObject.define( strbuilder("\n" + ipad + "// my vars\n"); + // Key = TYPE:name for (var k in item) { if (k[0] != '.') { @@ -378,10 +391,15 @@ Gtk = XObject.define( } var kk = k.substring(1); - var v = item[k]; - var vv = v.split(':'); - strbuilder(pad + "public " + vv[0] + " " + kk + ";\n"); - citems[k] = true; + + var vv = kk.split(':'); + if (vv[0] == 'signal') { + strbuilder(pad + "public " + vv[0] + " " + vv[1] + " " + vv[2] + item[k] + ";\n"); + } else { + + strbuilder(pad + "public " + vv[0] + " " + vv[1] + ";\n"); + } + citems[k] = true; } // .vala props.. @@ -393,6 +411,15 @@ Gtk = XObject.define( // wrapped ctor.. // this may need to look up properties to fill in the arguments.. // introspection does not workk..... - as things like gtkmessagedialog + /* + if (cls == 'Gtk.Table') { + + var methods = this.palete.getPropertiesFor(cls, 'methods'); + + print(JSON.stringify(this.palete.proplist[cls], null,4)); + Seed.quit(); + } + */ if (typeof(ctors[cls]) !== 'undefined') { @@ -446,11 +473,11 @@ Gtk = XObject.define( } var kk = k.substring(1); var v = item[k]; - var vv = v.split(':'); - if (vv.length < 2) { + var vv = kk.split(':'); + if (v.length < 1 || vv[0] == "signal") { continue; } - strbuilder(ipad + "this" + k + " = " + vv[1] +";\n"); + strbuilder(ipad + "this." + vv[1] + " = " + v +";\n"); } @@ -470,8 +497,11 @@ Gtk = XObject.define( if (typeof(item[p.name]) != 'undefined' && typeof(item[p.name]) != 'object' ) { citems[p.name] = true; - - strbuilder(ipad + "this.el." + p.name + " = " + JSON.stringify(item[p.name]) + ";\n"); + var val = JSON.stringify(item[p.name]); + if (['xalign','yalign'].indexOf(p.name) > -1) { + val +='f'; + } + strbuilder(ipad + "this.el." + p.name + " = " + val + ";\n"); return; } if (typeof(item['|' + p.name]) != 'undefined' && typeof(item['|' + p.name]) != 'object' ) { @@ -492,7 +522,11 @@ Gtk = XObject.define( if (typeof(item.items) != 'undefined') { for(var i =0;i {'); - vv = vv.replace(/^\n+/,''); - vv = vv.replace(/\n+$/,''); - vv = vv.replace(/\n/g,"\n" + ipad); - - - + var v = item.listeners[k] ; + + var vv = v.replace(/\n/g,"\n" + ipad); - //continue; - } else { - var vv = v[1].replace('*/', ""); - //print(JSON.stringify(vv));Seed.quit(); - vv = vv.replace(/^\n+/,''); - vv = vv.replace(/\n+$/,''); - vv = vv.replace(/\n/g,"\n" + ipad); - } + strbuilder(ipad + "this.el." + k + ".connect( " + vv + " );\n"); } @@ -576,24 +596,23 @@ Gtk = XObject.define( continue; } // function in the format of {type} (args) { .... } - - var v = item[k].split(/\/*--/); - if (v.length < 2) { - strbuilder("\n" + pad + "// skip " + k + " - could not find seperator\n"); - continue; - } - var vv = v[1].replace('*/', ""); + + var vv = item[k]; //print(JSON.stringify(vv));Seed.quit(); vv = vv.replace(/^\n+/,''); vv = vv.replace(/\n+$/,''); vv = vv.replace(/\n/g,"\n" + ipad); - vva = vv.split(' '); - var rtype = vva.shift(); - var body = vva.join(' '); - + var vva = k.split(':'); + if (vva.length < 2) { + strbuilder("\n" + pad + "// skip " + k + " - no return type\n"); + continue; + } + var rtype = vva.shift().substring(1); + var body = vv; + var fname = vva.shift() || '???'; - strbuilder(pad + "public " + rtype + " " + k.substring(1) +body + "\n"); + strbuilder(pad + "public " + rtype + " " + fname + body + "\n");