var rnode = pa.get_root();
- new_node.loadFromJson(rnode, 2);
+ new_node.loadFromJson(rnode.get_object(), 2);
this.node = new_node;
- } catch (Exception e) {
- print("%s", e.toString());
+ } catch (Palete.JavascriptError e) {
+ print("Error: %s\n", e.message);
}
print("SKIP - gtype is invalid\n");
return null;
}
- // if it's a window...
+ // if it's a window... -- things we can not render....
if (cls_gtype.is_a(typeof(global::Gtk.Window))) {
// what if it has none...
}
return this.mungeChild(this.node.items.get(0));
}
+ if (cls_gtype.is_a(typeof(global::Gtk.Popover))) {
+ // what if it has none...
+ if (this.node.items.size < 1) {
+ return null;
+ }
+ return this.mungeChild(this.node.items.get(0));
+ }
var ret = Object.new(cls_gtype);
ret.ref(); //??? problematic?
// print("Check: " +cls + "::(" + pviter.get_value().propertyof + ")" + pviter.get_key() + " " );
var k = pviter.get_key();
// skip items we have already handled..
- if (!this.node.has(k)) {
+ if (!this.node.has(k)) {
continue;
}
// find out the type of the property...
var type = pviter.get_value().type;
type = Palete.Gir.fqtypeLookup(type, ns);
+ var ocl = (ObjectClass) cls_gtype.class_ref ();
+ var ps = ocl.find_property(k);
+
+ // attempt to read property type and enum...
+
+ if (ps != null) {
+ var vt = ps.value_type;
+ if (vt.is_enum()) {
+
+ var raw_val = this.node.get(k).strip();
+ var rv_s = raw_val.split(".");
+ if (rv_s.length > 0) {
+ raw_val = rv_s[rv_s.length-1];
+ EnumClass ec = (EnumClass) vt.class_ref ();
+ var foundit = false;
+ for (var i =0;i< ec.n_values; i++) {
+ var ev = ec.values[i].value_name;
+ var ev_s= ev.split("_");
+ if (raw_val == ev_s[ev_s.length-1]) {
+ var sval = GLib.Value(typeof(int));
+ sval.set_int(ec.values[i].value);
+ ret.set_property(k, sval);
+ foundit = true;
+ break;
+ }
+ }
+ if (foundit) {
+ continue;
+ }
+
+ }
+ }
+ }
+
+
+
+
var val = this.toValue(this.node.get(k).strip(), type);
if (val == null) {
print("skip (failed to transform value %s type = %s from %s\n",
}
labels.add(this.children.get(i));
}
- for (var i = 0; i < bodies.size; i++) {
+ for (var i = 0; i < bodies.size; i++) {
+ var lbl = (i > (labels.size -1)) ? null : labels.get(i);
+
((global::Gtk.Notebook)this.wrapped_object).append_page(
(global::Gtk.Notebook) bodies.get(i).wrapped_object,
- (labels.size > i - 1) ?
- (global::Gtk.Notebook) labels.get(i).wrapped_object :
- null
-
+ lbl != null ? (global::Gtk.Notebook) lbl.wrapped_object : null
);
var ns = this.parentObj.node.fqn().split(".")[0];
var pack = this.node.props.get("* pack").split(",");
-
-
+
+ // this tries to use the parameter names from the '*pack' function as properties in child_set_property.
+ // for a grid it's trying to do left/top/width/height.
+
+
if (cls_methods.has_key(pack[0])) {
var mparams = cls_methods.get(pack[0]).paramset.params;
for (var i = 1; i < mparams.size; i++ ) {
if (i > (pack.length -1)) {
continue;
}
-
+ Palete.Gir.checkParamOverride(mparams.get(i));
var k = mparams.get(i).name;
Value cur_val;
public GLib.Value? toValue(string val, string type) {
- var gtkbuilder = new global::Gtk.Builder();
-
- if (type == "utf8") {
+
+ /*
+ if (type == "string") {
var qret = GLib.Value(typeof(string));
qret.set_string(val);
return qret;
}
-
+ * */
+ /*
+ *
+ * var gtkbuilder = new global::Gtk.Builder();
var prop_gtype = gtkbuilder.get_type_from_name(type);
return null;
}
+ */
-
- var ret = GLib.Value(prop_gtype);
+
switch(type) {
- case "gboolean":
+ case "bool":
+ var ret = GLib.Value(typeof(bool));
ret.set_boolean(val.down() == "false" ? false : true);
return ret;
- case "guint":
+
+ case "uint":
+ var ret = GLib.Value(typeof(uint));
ret.set_uint(int.parse(val));
return ret;
- case "gint":
+ case "int":
+ var ret = GLib.Value(typeof(int));
ret.set_int(int.parse(val));
return ret;
- case "gfloat":
- ret.set_float(long.parse(val));
+ // uint64 ...??
+
+ case "long":
+ var ret = GLib.Value(typeof(long));
+ ret.set_long((long)int64.parse(val));
+ return ret;
+
+ case "ulong":
+ var ret = GLib.Value(typeof(ulong));
+ ret.set_ulong((ulong) uint64.parse(val));
+ return ret;
+
+ case "float":
+ var ret = GLib.Value(typeof(float));
+ ret.set_float((float)double.parse(val));
return ret;
- case "utf8":
+ case "string":
+ var ret = GLib.Value(typeof(string));
ret.set_string(val);
return ret;
default:
-
+ return null;
+ /*
var sval = GLib.Value(typeof(string));
sval.set_string(val);
return null;
}
return ret;
+ */
}
+ // should not get here..
+ return null;
}