3 <?xml version="1.0" encoding="UTF-8"?>
4 <!-- Generated with glade 3.18.3 -->
6 <requires lib="gtk+" version="3.12"/>
7 <object class="GtkBox" id="box1">
8 <property name="visible">True</property>
9 <property name="can_focus">False</property>
10 <property name="orientation">vertical</property>
12 <object class="GtkButton" id="button1">
13 <property name="label" translatable="yes">button</property>
14 <property name="visible">True</property>
15 <property name="can_focus">True</property>
16 <property name="receives_default">True</property>
19 <property name="expand">False</property>
20 <property name="fill">True</property>
21 <property name="position">0</property>
28 <object class="GtkToggleButton" id="togglebutton1">
29 <property name="label" translatable="yes">togglebutton</property>
30 <property name="visible">True</property>
31 <property name="can_focus">True</property>
32 <property name="receives_default">True</property>
35 <property name="expand">False</property>
36 <property name="fill">True</property>
37 <property name="position">2</property>
43 public class JsRender.NodeToGlade : Object {
47 Gee.ArrayList<string> els;
48 //Gee.ArrayList<string> skip;
49 Gee.HashMap<string,string> ar_props;
50 public static int vcnt = 0;
52 public NodeToGlade( Node node, string pad)
56 this.els = new Gee.ArrayList<string>();
57 //this.skip = new Gee.ArrayList<string>();
58 this.ar_props = new Gee.HashMap<string,string>();
62 public string munge ( )
65 this.fillValaName(this.node);
67 return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
68 "<!-- Generated with glade 3.18.3 -->\n" +
70 " <requires lib=\"gtk+\" version=\"3.12\"/>\n" +
76 public string mungeChild(string pad , Node cnode)
78 var x = new NodeToGlade(cnode, pad);
82 public string mungeNode()
85 var cls = this.node.xvala_cls.replace(".", "");
88 // things we can not do yet...
89 case "GtkTreeStore": // top level.. - named and referenced
90 case "GtkListStore": // top level.. - named and referenced
91 case "GtkTreeViewColumn": // part of liststore?!?!
92 case "GtkMenu": // top level..
97 var id = this.node.uid();
98 var ret = @"$pad<object class=\"$cls\" id=\"$id\">\n";
100 var props = Palete.factory("Gtk").getPropertiesFor(this.node.xvala_cls, "props");
102 var pviter = props.map_iterator();
103 while (pviter.next()) {
105 // print("Check: " +cls + "::(" + pviter.get_value().propertyof + ")" + pviter.get_key() + " " );
107 // skip items we have already handled..
108 if (this.node.props.get(pviter.get_key()) == null) {
111 var k = pviter.get_key();
112 var val = GLib.Markup.escape_text(this.node.props.get(pviter.get_key()));
113 ret += @"$pad <property name=\"$k\">$val</property>\n"; // es
119 if (this.node.props.get("* pack") != null) {
122 pack = this.packString();
128 if (this.node.items.size < 1) {
129 return ret + @"$pad</object>\n" + pack;
132 for (var i = 0; i < this.node.items.size; i++ ) {
134 var add = this.mungeChild(pad + " " , this.node.items.get(i) );
135 if (add.length < 1) {
139 ret += @"$pad <child>\n";
140 ret += this.mungeChild(pad + " " , this.node.items.get(i) );
141 ret += @"$pad </child>\n";
144 return ret + @"$pad</object>\n" + pack;
150 string toValaNS(Node node)
152 var ns = this.node.get("$ xns") ;
158 public void fillValaName(Node node)
160 if (node.xvala_cls.length < 1) {
163 var cls = this.toValaNS(node) + node.get("xtype");
165 string id = node.get("id").length > 0 ?
166 node.get("id") : "%s%d".printf(node.get("xtype"), vcnt);
168 var props = Palete.factory("Gtk").getPropertiesFor(cls, "props");
170 node.xvala_cls = cls;
171 node.xvala_xcls = "Xcls_" + id;
172 node.xvala_id = node.get("id").length > 0 ? node.get("id") : "";
174 //this.vitems.append(item);
177 if (node.items.size < 1) {
180 for(var i =0;i<node.items.size;i++) {
181 this.fillValaName(node.items.get(i));
185 public string packString()
188 var pk = this.node.get("* pack").split(",");
189 // pack is part of the parent element..
200 var p_parts =pfqn.split(".");
202 var gir = Palete.Gir.factory(ns);
203 var cls = gir.classes.get(p_parts[1]);
204 var mdef = cls.methods.get(pk[0]);
206 print("could not find method : %s\n", pk[0]);
210 var generator = new Json.Generator ();
211 var n = new Json.Node(Json.NodeType.OBJECT);
212 n.set_object(mdef.toJSON());
213 generator.set_root(n);
214 generator.indent = 4;
215 generator.pretty = true;
217 print(generator.to_data(null));
223 pbody += @"$pad <property name=\"pack_type\">start</property>\n";
227 pbody += @"$pad <property name=\"pack_type\">start</property>\n";
231 //pbody += @"$pad <property name=\"pack_type\">start</property>\n";
232 pbody += @"$pad <property name=\"expand\">False</property>\n";
233 pbody += @"$pad <property name=\"fill\">True</property>\n";
234 pbody += @"$pad <property name=\"position\">1</property>\n";
235 var pack = @"$pad<packing>\n" +
236 string.joinv("", pbody) +
241 print ("set_model not handled yet..");
245 print ("unknown pack type: %s", pk[0]);
252 for (var i = 2; i < mdef.paramset.params.size; i++) {
254 if (poff > (pk.length-1)) {
258 var key = mdef.paramset.params.get(i).name;
260 pbody += @"$pad <property name=\"$key\">$val</property>\n";
263 if (pbody.length < 1) {
264 var generator = new Json.Generator ();
265 var n = new Json.Node(Json.NodeType.OBJECT);
266 n.set_object(mdef.toJSON());
267 generator.set_root(n);
268 generator.indent = 4;
269 generator.pretty = true;
271 print(generator.to_data(null));
275 var pack = @"$pad<packing>\n" +
276 string.joinv("", pbody) +