1 static Xcls_PopoverAddProp _PopoverAddProp;
3 public class Xcls_PopoverAddProp : Object
6 private Xcls_PopoverAddProp _this;
8 public static Xcls_PopoverAddProp singleton()
10 if (_PopoverAddProp == null) {
11 _PopoverAddProp= new Xcls_PopoverAddProp();
13 return _PopoverAddProp;
15 public Xcls_model model;
16 public Xcls_namecol namecol;
17 public Xcls_namerender namerender;
21 public signal void select (string key, string type, string skel, string prop_or_listener);
22 public Xcls_MainWindow mainwindow;
23 public string prop_or_listener;
26 public Xcls_PopoverAddProp()
29 this.el = new Gtk.Popover( null );
33 this.prop_or_listener = "";
36 this.el.width_request = 900;
37 this.el.height_request = 800;
38 this.el.hexpand = false;
40 this.el.position = Gtk.PositionType.RIGHT;
41 var child_0 = new Xcls_ScrolledWindow2( _this );
43 this.el.add ( child_0.el );
46 // user defined functions
47 public void show (Palete.Palete pal, string prop_or_listener, string xtype, Gtk.Widget onbtn) {
50 if (this.prop_or_listener != "" && this.prop_or_listener == prop_or_listener) {
51 this.prop_or_listener = "";
55 this.prop_or_listener = prop_or_listener;
57 this.model.el.clear();
60 var elementList = pal.getPropertiesFor( xtype,prop_or_listener);
62 //print ("GOT " + elementList.length + " items for " + fullpath + "|" + type);
63 // console.dump(elementList);
65 var miter = elementList.map_iterator();
66 while (miter.next()) {
67 var p = miter.get_value();
69 this.model.el.append(out iter);
75 this.model.el.set(iter,
78 2, "<b>" + p.name +"</b> <i>"+p.type+"</i>\n" +
79 GLib.Markup.escape_text(p.doctxt),
81 4, "<b>" + dname +"</b> <span size=\"small\"><i>"+dtype+"</i></span>",
86 this.model.el.set_sort_column_id(0,Gtk.SortType.ASCENDING);
92 this.mainwindow.el.get_size(out w, out h);
94 // left tree = 250, editor area = 500?
98 this.el.set_size_request( 250, h);
102 if (this.el.relative_to == null) {
103 this.el.set_relative_to(onbtn);
107 while(Gtk.events_pending()) {
108 Gtk.main_iteration(); // why?
110 // this.hpane.el.set_position( 0);
112 public void hide () {
113 this.prop_or_listener = "";
116 public void clear () {
117 this.model.el.clear();
119 public class Xcls_ScrolledWindow2 : Object
121 public Gtk.ScrolledWindow el;
122 private Xcls_PopoverAddProp _this;
128 public Xcls_ScrolledWindow2(Xcls_PopoverAddProp _owner )
131 this.el = new Gtk.ScrolledWindow( null, null );
135 // set gobject values
136 this.el.shadow_type = Gtk.ShadowType.IN;
137 var child_0 = new Xcls_TreeView3( _this );
139 this.el.add ( child_0.el );
143 this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
146 // user defined functions
148 public class Xcls_TreeView3 : Object
150 public Gtk.TreeView el;
151 private Xcls_PopoverAddProp _this;
157 public Xcls_TreeView3(Xcls_PopoverAddProp _owner )
160 this.el = new Gtk.TreeView();
164 // set gobject values
165 this.el.tooltip_column = 2;
166 this.el.enable_tree_lines = true;
167 this.el.headers_visible = true;
168 var child_0 = new Xcls_model( _this );
170 this.el.set_model ( child_0.el );
171 var child_1 = new Xcls_namecol( _this );
173 this.el.append_column ( child_1.el );
178 var description = new Pango.FontDescription();
179 description.set_size(10000);
180 this.el.override_font(description);
182 this.el.get_selection().set_mode( Gtk.SelectionMode.SINGLE);
191 this.el.row_activated.connect( (path, column) => {
198 m.el.get_iter(out iter,path);
204 var key = m.getValue(iter, 0);
206 var type = m.getValue(iter, 1);
207 var skel = m.getValue(iter, 3);
208 var etype = m.getValue(iter, 5);
212 _this.prop_or_listener = "";
215 _this.select(key,etype == "signals" ? "" : type,skel, etype);
220 // user defined functions
222 public class Xcls_model : Object
224 public Gtk.ListStore el;
225 private Xcls_PopoverAddProp _this;
231 public Xcls_model(Xcls_PopoverAddProp _owner )
235 this.el = new Gtk.ListStore( 6, typeof(string), // 0 real key
236 typeof(string), // 1 real type
237 typeof(string), // 2 docs ?
238 typeof(string), // 3 visable desc
239 typeof(string), // 4 function desc
240 typeof(string) // 5 element type (event|prop)
245 // set gobject values
248 // user defined functions
249 public string getValue (Gtk.TreeIter iter, int col)
253 this.el.get_value(iter, col, out value);
255 return (string)value;
260 public class Xcls_namecol : Object
262 public Gtk.TreeViewColumn el;
263 private Xcls_PopoverAddProp _this;
269 public Xcls_namecol(Xcls_PopoverAddProp _owner )
272 _this.namecol = this;
273 this.el = new Gtk.TreeViewColumn();
277 // set gobject values
278 this.el.title = "Double click to add";
279 var child_0 = new Xcls_namerender( _this );
281 this.el.pack_start ( child_0.el , true );
285 this.el.add_attribute(_this.namerender.el , "markup", 4 );
288 // user defined functions
290 public class Xcls_namerender : Object
292 public Gtk.CellRendererText el;
293 private Xcls_PopoverAddProp _this;
299 public Xcls_namerender(Xcls_PopoverAddProp _owner )
302 _this.namerender = this;
303 this.el = new Gtk.CellRendererText();
307 // set gobject values
310 // user defined functions