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": [ ],
};
//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));
ret += "*/\n";
}
ret += "\n\n";
+
+
// print(JSON.stringify(item,null,4));
this.toValaItem(item,0, function(s) {
ret+= s;
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');
strbuilder("\n" + ipad + "// my vars\n");
+ // Key = TYPE:name
for (var k in item) {
if (k[0] != '.') {
}
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..
// 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') {
}
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");
}
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' ) {
if (typeof(item.items) != 'undefined') {
for(var i =0;i<item.items.length;i++) {
var ci = item.items[i];
+
var packing = ci.pack ? ci.pack.split(',') : [ 'add' ];
+ if (typeof(ci['|pack']) != 'undefined') {
+ packing =ci['|pack'].split(',');
+ }
var pack = packing.shift();
strbuilder(ipad + "var child_" + i + " = new " + ci.xvala_xcls + "();\n" )
for (var k in item.listeners) {
- var v = item.listeners[k].split(/\/*--/);
- if (v.length < 2) {
- var vv = v[0].replace(/^function/, '');
- vv = vv.replace(/\) \{/, ') => {');
- 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");
}
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");