1 static Xcls_LeftProps _LeftProps;
3 public class Xcls_LeftProps : Object
6 private Xcls_LeftProps _this;
8 public static Xcls_LeftProps singleton()
10 if (_LeftProps == null) {
11 _LeftProps= new Xcls_LeftProps();
15 public Xcls_AddPropertyPopup AddPropertyPopup;
16 public Xcls_EditProps EditProps;
17 public Xcls_view view;
18 public Xcls_model model;
19 public Xcls_keycol keycol;
20 public Xcls_keyrender keyrender;
21 public Xcls_valcol valcol;
22 public Xcls_valrender valrender;
23 public Xcls_valrendermodel valrendermodel;
24 public Xcls_ContextMenu ContextMenu;
27 public bool allow_edit;
28 public JsRender.JsRender file;
29 public signal bool stop_editor ();
30 public signal void show_editor (JsRender.JsRender file, JsRender.Node node, string type, string key);
31 public signal void changed ();
32 public signal void show_add_props (string type);
33 public Xcls_MainWindow main_window;
34 public JsRender.Node node;
37 public Xcls_LeftProps()
40 this.el = new Gtk.VBox( false , 0 );
43 this.allow_edit = false;
44 this.main_window = null;
47 var child_0 = new Xcls_HBox2( _this );
49 this.el.pack_start ( child_0.el , false,true,0 );
50 var child_1 = new Xcls_EditProps( _this );
52 this.el.pack_end ( child_1.el , true,true,0 );
55 // user defined functions
56 public void before_edit ()
59 print("before edit - stop editing\n");
61 // these do not appear to trigger save...
62 _this.keyrender.el.stop_editing(false);
63 _this.keyrender.el.editable =false;
65 _this.valrender.el.stop_editing(false);
66 _this.valrender.el.editable =false;
69 // technicall stop the popup editor..
72 public string keySortFormat (string key) {
73 // listeners first - with 0
80 var bits = key.split(" ");
83 return "2 " + bits[bits.length -1];
87 return "3 " + bits[bits.length -1];
92 return "4 " + bits[bits.length -1];
95 return "5 " + bits[bits.length -1];
100 public void finish_editing () {
104 public bool startEditingValue ( Gtk.TreePath path) {
106 // ONLY return true if editing is allowed - eg. combo..
108 print("start editing?\n");
109 if (!this.stop_editor()) {
110 print("stop editor failed\n");
116 var mod = this.model.el;
117 mod.get_iter (out iter, path);
123 2, "<b>" + miter.get_key() + "</b>",
129 mod.get_value(iter, 3 , out gval);
130 var val = (string)gval;
132 mod.get_value(iter, 1 , out gval);
133 var key = (string)gval;
134 var type_ar = key.split(" ");
138 mod.get_value(iter, 0 , out gval);
139 var type = (string)gval;
143 var use_textarea = false;
145 //------------ things that require the text editor...
147 if (type == "listener") {
150 if (key.length > 0 && key[0] == '|') { // user defined method
153 if (key.length > 0 && key[0] == '$') { // raw string
156 if (key.length > 0 && key == "* init") {
159 if (val.length > 40) { // long value...
166 print("Call show editor\n");
167 GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
168 this.view.el.get_selection().select_path(path);
170 this.show_editor(file, node, type, key);
178 // others... - fill in options for true/false?
179 print("turn on editing %s \n" , mod.get_path(iter).to_string());
181 print (type_ar[0].up());
182 if (type_ar.length > 1 && (
183 type_ar[0].up() == "BOOLEAN"
185 type_ar[0].up() == "BOOL"
187 print("start editing try/false)???");
188 this.valrender.el.has_entry = false;
189 string[] opts = { "true", "false" };
190 this.valrender.setOptions(opts);
192 this.valrender.el.has_entry = false;
193 this.valrender.el.editable = true;
194 this.allow_edit = true;
195 GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {
196 this.view.el.set_cursor_on_cell(
210 this.valrender.setOptions(opts);
212 GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
214 // at this point - work out the type...
215 // if its' a combo... then show the options..
216 this.valrender.el.has_entry = true;
218 this.valrender.el.editable = true;
221 this.allow_edit = true;
227 this.view.el.set_cursor_on_cell(
237 public void load (JsRender.JsRender file, JsRender.Node? node)
239 print("load leftprops\n");
245 this.model.el.clear();
247 //this.get('/RightEditor').el.hide();
254 //var provider = this.get('/LeftTree').getPaleteProvider();
257 //typeof(string), // 0 key type
258 //typeof(string), // 1 key
259 //typeof(string), // 2 key (display)
260 //typeof(string), // 3 value
261 //typeof(string), // 4 value (display)
262 //typeof(string), // 5 both (tooltip)
267 // really need a way to sort the hashmap...
268 var m = this.model.el;
270 var miter = node.listeners.map_iterator();
273 while(miter.next()) {
275 m.append(out iter,null);
277 this.updateIter(iter, "listener", miter.get_key(), miter.get_value());
283 miter = node.props.map_iterator();
286 while(miter.next()) {
288 m.append(out iter,null);
289 this.updateIter(iter, "prop", miter.get_key(), miter.get_value());
292 print("clear selection\n");
294 this.model.el.set_sort_column_id(6,Gtk.SortType.ASCENDING); // sort by real key..
296 this.view.el.get_selection().unselect_all();
298 var pane = _this.main_window.editpane.el;
299 var try_size = (i * 25) + 60; // est. 20px per line + 40px header
303 ((try_size * 1.0f) / (pane.max_position * 1.0f)) > 0.8f ?
304 (int) (pane.max_position * 0.2f) :
305 pane.max_position-try_size);
309 public string keyFormat (string val, string type) {
311 // Glib.markup_escape_text(val);
313 if (type == "listener") {
314 return "<span font_weight=\"bold\" color=\"#660000\">" +
315 GLib.Markup.escape_text(val) +
319 if (val.length < 1) {
320 return "<span color=\"#FF0000\">--empty--</span>";
325 //# - object properties
327 // all of these... - display value is last element..
328 var ar = val.strip().split(" ");
331 var dval = GLib.Markup.escape_text(ar[ar.length-1]);
337 case '@': // signal // just bold balck?
338 if (dval[0] == '@') {
339 dval = dval.substring(1);
342 return @"<span font_weight=\"bold\">@ $dval</span>";
343 case '#': // object properties?
344 if (dval[0] == '#') {
345 dval = dval.substring(1);
347 return @"<span font_weight=\"bold\">$dval</span>";
349 if (dval[0] == '*') {
350 dval = dval.substring(1);
352 return @"<span color=\"#0000CC\" font_weight=\"bold\">$dval</span>";
354 if (dval[0] == '$') {
355 dval = dval.substring(1);
357 return @"<span style=\"italic\">$dval</span>";
358 case '|': // user defined methods
359 if (dval[0] == '|') {
360 dval = dval.substring(1);
362 return @"<span color=\"#008000\" font_weight=\"bold\">$dval</span>";
373 public void deleteSelected () {
378 var s = this.view.el.get_selection();
379 s.get_selected(out mod, out iter);
383 mod.get_value(iter, 0 , out gval);
384 var type = (string)gval;
386 mod.get_value(iter, 1 , out gval);
387 var key = (string)gval;
391 this.node.listeners.remove(key);
395 this.node.props.remove(key);
398 this.load(this.file, this.node);
402 public void startEditingKey ( Gtk.TreePath path) {
404 if (!this.stop_editor()) {
408 // others... - fill in options for true/false?
411 GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
412 this.allow_edit = true;
413 this.keyrender.el.editable = true;
415 this.view.el.set_cursor_on_cell(
427 public void addProp (string in_type, string key, string value, string value_type) {
428 // info includes key, val, skel, etype..
429 //console.dump(info);
430 //type = info.type.toLowerCase();
431 //var data = this.toJS();
433 var type = in_type == "signals" ? "listener" : in_type;
435 var fkey = (value_type.length > 0 ? value_type + " " : "") + key;
437 if (type == "listener") {
438 if (this.node.listeners.has_key(key)) {
441 this.node.listeners.set(key,value);
444 if (this.node.props.has_key(fkey)) {
447 this.node.props.set(fkey,value);
452 this.load(this.file, this.node);
456 /// need to find the row which I've just added..
459 var s = this.view.el.get_selection();
462 print("trying to find new iter");
464 this.model.el.foreach((model, path, iter) => {
467 this.model.el.get_value(iter, 0 , out gval);
468 if ((string)gval != type) {
469 print("not type: %s = %s\n", (string)gval , type);
472 this.model.el.get_value(iter, 1 , out gval);
473 if ((string)gval != fkey) {
474 print("not key: %s = %s\n", (string)gval , fkey);
478 GLib.Timeout.add_full(GLib.Priority.DEFAULT,40 , () => {
480 this.startEditingValue(this.model.el.get_path(iter));
483 //s.select_iter(iter);
491 public void updateIter (Gtk.TreeIter iter, string type, string key, string value) {
493 print("update Iter %s, %s\n", key,value);
494 //typeof(string), // 0 key type
495 //typeof(string), // 1 key
496 //typeof(string), // 2 key (display)
497 //typeof(string), // 3 value
498 //typeof(string), // 4 value (display)
499 //typeof(string), // 5 both (tooltip)
500 //typeof(string), // 6 key (sort)
502 var dl = value.strip().split("\n");
504 var dis_val = dl.length > 1 ? (dl[0].strip()+ "...") : dl[0];
506 if (type == "listener") {
510 this.model.el.set(iter,
513 2, this.keyFormat(key ,type),
516 5, "<tt>" + GLib.Markup.escape_text(key + " " +value) + "</tt>",
524 this.model.el.set(iter,
527 2, this.keyFormat(key , "prop"),
530 5, "<tt>" + GLib.Markup.escape_text(key + " " + value) + "</tt>",
531 6, this.keySortFormat(key)
534 public class Xcls_HBox2 : Object
537 private Xcls_LeftProps _this;
543 public Xcls_HBox2(Xcls_LeftProps _owner )
546 this.el = new Gtk.HBox( true, 0 );
550 // set gobject values
551 var child_0 = new Xcls_Button3( _this );
553 this.el.add ( child_0.el );
556 // user defined functions
558 public class Xcls_Button3 : Object
560 public Gtk.Button el;
561 private Xcls_LeftProps _this;
567 public Xcls_Button3(Xcls_LeftProps _owner )
570 this.el = new Gtk.Button();
574 // set gobject values
575 var child_0 = new Xcls_HBox4( _this );
577 this.el.add ( child_0.el );
578 var child_1 = new Xcls_AddPropertyPopup( _this );
582 this.el.button_press_event.connect( (self, ev) => {
586 var p = _this.AddPropertyPopup;
587 p.el.set_screen(Gdk.Screen.get_default());
589 p.el.popup(null, null, null, ev.button, ev.time);
594 // user defined functions
596 public class Xcls_HBox4 : Object
599 private Xcls_LeftProps _this;
605 public Xcls_HBox4(Xcls_LeftProps _owner )
608 this.el = new Gtk.HBox( true, 0 );
612 // set gobject values
613 var child_0 = new Xcls_Image5( _this );
615 this.el.add ( child_0.el );
616 var child_1 = new Xcls_Label6( _this );
618 this.el.add ( child_1.el );
621 // user defined functions
623 public class Xcls_Image5 : Object
626 private Xcls_LeftProps _this;
632 public Xcls_Image5(Xcls_LeftProps _owner )
635 this.el = new Gtk.Image();
639 // set gobject values
640 this.el.stock = Gtk.STOCK_ADD;
641 this.el.icon_size = Gtk.IconSize.MENU;
644 // user defined functions
646 public class Xcls_Label6 : Object
649 private Xcls_LeftProps _this;
655 public Xcls_Label6(Xcls_LeftProps _owner )
658 this.el = new Gtk.Label( "Other" );
662 // set gobject values
665 // user defined functions
667 public class Xcls_AddPropertyPopup : Object
670 private Xcls_LeftProps _this;
676 public Xcls_AddPropertyPopup(Xcls_LeftProps _owner )
679 _this.AddPropertyPopup = this;
680 this.el = new Gtk.Menu();
684 // set gobject values
685 var child_0 = new Xcls_MenuItem8( _this );
687 this.el.append ( child_0.el );
688 var child_1 = new Xcls_MenuItem9( _this );
690 this.el.append ( child_1.el );
691 var child_2 = new Xcls_MenuItem10( _this );
693 this.el.append ( child_2.el );
694 var child_3 = new Xcls_MenuItem11( _this );
696 this.el.append ( child_3.el );
697 var child_4 = new Xcls_SeparatorMenuItem12( _this );
699 this.el.add ( child_4.el );
700 var child_5 = new Xcls_MenuItem13( _this );
702 this.el.append ( child_5.el );
703 var child_6 = new Xcls_MenuItem14( _this );
705 this.el.append ( child_6.el );
706 var child_7 = new Xcls_MenuItem15( _this );
708 this.el.append ( child_7.el );
709 var child_8 = new Xcls_SeparatorMenuItem16( _this );
711 this.el.add ( child_8.el );
712 var child_9 = new Xcls_MenuItem17( _this );
714 this.el.append ( child_9.el );
715 var child_10 = new Xcls_MenuItem18( _this );
717 this.el.append ( child_10.el );
718 var child_11 = new Xcls_MenuItem19( _this );
720 this.el.append ( child_11.el );
723 // user defined functions
725 public class Xcls_MenuItem8 : Object
727 public Gtk.MenuItem el;
728 private Xcls_LeftProps _this;
734 public Xcls_MenuItem8(Xcls_LeftProps _owner )
737 this.el = new Gtk.MenuItem();
741 // set gobject values
742 this.el.tooltip_markup = "Using _this.{ID} will map to this element";
743 this.el.label = "id: _this.{ID} (Vala)";
746 this.el.activate.connect( () => {
747 _this.addProp( "prop", "id", "", "");
751 // user defined functions
753 public class Xcls_MenuItem9 : Object
755 public Gtk.MenuItem el;
756 private Xcls_LeftProps _this;
762 public Xcls_MenuItem9(Xcls_LeftProps _owner )
765 this.el = new Gtk.MenuItem();
769 // set gobject values
770 this.el.tooltip_markup = "how to pack this element onto parent, (method, 2nd arg, 3rd arg) .. the 1st argument is filled by the element";
771 this.el.label = "pack: Pack method (Vala)";
774 this.el.activate.connect( ( ) => {
776 _this.addProp( "prop", "pack","add", "*");
780 // user defined functions
782 public class Xcls_MenuItem10 : Object
784 public Gtk.MenuItem el;
785 private Xcls_LeftProps _this;
791 public Xcls_MenuItem10(Xcls_LeftProps _owner )
794 this.el = new Gtk.MenuItem();
798 // set gobject values
799 this.el.tooltip_markup = "eg. \n\nnew Clutter.Image.from_file(.....)";
800 this.el.label = "ctor: Alterative to default contructor";
803 this.el.activate.connect( ( ) => {
805 _this.addProp( "prop", "ctor","", "*");
809 // user defined functions
811 public class Xcls_MenuItem11 : Object
813 public Gtk.MenuItem el;
814 private Xcls_LeftProps _this;
820 public Xcls_MenuItem11(Xcls_LeftProps _owner )
823 this.el = new Gtk.MenuItem();
827 // set gobject values
828 this.el.tooltip_markup = "This code is called after the ctor";
829 this.el.label = "init: initialziation code (vala)";
832 this.el.activate.connect( ( ) => {
834 _this.addProp( "prop", "init", "{\n\n}\n", "*" );
838 // user defined functions
840 public class Xcls_SeparatorMenuItem12 : Object
842 public Gtk.SeparatorMenuItem el;
843 private Xcls_LeftProps _this;
849 public Xcls_SeparatorMenuItem12(Xcls_LeftProps _owner )
852 this.el = new Gtk.SeparatorMenuItem();
856 // set gobject values
859 // user defined functions
861 public class Xcls_MenuItem13 : Object
863 public Gtk.MenuItem el;
864 private Xcls_LeftProps _this;
870 public Xcls_MenuItem13(Xcls_LeftProps _owner )
873 this.el = new Gtk.MenuItem();
877 // set gobject values
878 this.el.tooltip_markup = "Add a user defined string property";
879 this.el.label = "String";
882 this.el.activate.connect( (self) => {
884 _this.addProp( "prop", "XXXX", "","string");
889 // user defined functions
891 public class Xcls_MenuItem14 : Object
893 public Gtk.MenuItem el;
894 private Xcls_LeftProps _this;
900 public Xcls_MenuItem14(Xcls_LeftProps _owner )
903 this.el = new Gtk.MenuItem();
907 // set gobject values
908 this.el.tooltip_markup = "Add a user defined number property";
909 this.el.label = "Number";
912 this.el.activate.connect( ( ) =>{
914 _this.addProp("prop", "XXX", "0", "int");
918 // user defined functions
920 public class Xcls_MenuItem15 : Object
922 public Gtk.MenuItem el;
923 private Xcls_LeftProps _this;
929 public Xcls_MenuItem15(Xcls_LeftProps _owner )
932 this.el = new Gtk.MenuItem();
936 // set gobject values
937 this.el.tooltip_markup = "Add a user defined boolean property";
938 this.el.label = "Boolean";
941 this.el.activate.connect( ( ) =>{
943 _this.addProp( "prop", "XXX", "true", "bool");
947 // user defined functions
949 public class Xcls_SeparatorMenuItem16 : Object
951 public Gtk.SeparatorMenuItem el;
952 private Xcls_LeftProps _this;
958 public Xcls_SeparatorMenuItem16(Xcls_LeftProps _owner )
961 this.el = new Gtk.SeparatorMenuItem();
965 // set gobject values
968 // user defined functions
970 public class Xcls_MenuItem17 : Object
972 public Gtk.MenuItem el;
973 private Xcls_LeftProps _this;
979 public Xcls_MenuItem17(Xcls_LeftProps _owner )
982 this.el = new Gtk.MenuItem();
986 // set gobject values
987 this.el.tooltip_markup = "Add a user function boolean property";
988 this.el.label = "Javascript Function";
991 this.el.activate.connect( ( ) =>{
993 _this.addProp("prop", "XXXX", "function() { }", "| function");
997 // user defined functions
999 public class Xcls_MenuItem18 : Object
1001 public Gtk.MenuItem el;
1002 private Xcls_LeftProps _this;
1008 public Xcls_MenuItem18(Xcls_LeftProps _owner )
1011 this.el = new Gtk.MenuItem();
1015 // set gobject values
1016 this.el.tooltip_markup = "Add a user function boolean property";
1017 this.el.label = "Vala Method";
1020 this.el.activate.connect( ( ) =>{
1022 _this.addProp( "prop", "XXXX", "() {\n\n}\n", "| return_type");
1026 // user defined functions
1028 public class Xcls_MenuItem19 : Object
1030 public Gtk.MenuItem el;
1031 private Xcls_LeftProps _this;
1037 public Xcls_MenuItem19(Xcls_LeftProps _owner )
1040 this.el = new Gtk.MenuItem();
1044 // set gobject values
1045 this.el.tooltip_markup = "Add a user function boolean property";
1046 this.el.label = "Vala Signal";
1049 this.el.activate.connect( ( ) =>{
1051 _this.addProp( "prop", "XXXX", "", "@ void");
1055 // user defined functions
1057 public class Xcls_EditProps : Object
1059 public Gtk.ScrolledWindow el;
1060 private Xcls_LeftProps _this;
1064 public bool editing;
1067 public Xcls_EditProps(Xcls_LeftProps _owner )
1070 _this.EditProps = this;
1071 this.el = new Gtk.ScrolledWindow( null, null );
1074 this.editing = false;
1076 // set gobject values
1077 this.el.shadow_type = Gtk.ShadowType.IN;
1078 var child_0 = new Xcls_view( _this );
1080 this.el.add ( child_0.el );
1086 this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
1089 // user defined functions
1091 public class Xcls_view : Object
1093 public Gtk.TreeView el;
1094 private Xcls_LeftProps _this;
1100 public Xcls_view(Xcls_LeftProps _owner )
1104 this.el = new Gtk.TreeView();
1108 // set gobject values
1109 this.el.tooltip_column = 5;
1110 this.el.enable_tree_lines = true;
1111 this.el.headers_visible = true;
1112 var child_0 = new Xcls_model( _this );
1114 this.el.set_model ( child_0.el );
1115 var child_1 = new Xcls_keycol( _this );
1117 this.el.append_column ( child_1.el );
1118 var child_2 = new Xcls_valcol( _this );
1120 this.el.append_column ( child_2.el );
1121 var child_3 = new Xcls_ContextMenu( _this );
1127 var selection = this.el.get_selection();
1128 selection.set_mode( Gtk.SelectionMode.SINGLE);
1131 var description = new Pango.FontDescription();
1132 description.set_size(8000);
1133 this.el.modify_font(description);
1136 this.el.button_press_event.connect( ( ev) => {
1138 Gtk.TreeViewColumn col;
1142 if (!this.el.get_path_at_pos((int)ev.x, (int) ev.y, out path, out col, out cell_x, out cell_y )) {
1143 print("nothing selected on click");
1144 GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
1145 this.el.get_selection().unselect_all();
1149 _this.before_edit();
1150 return false; //not on a element.
1155 if (ev.type == Gdk.EventType.2BUTTON_PRESS && ev.button == 1 && col.title == "Name") {
1159 _this.before_edit();
1161 _this.keyrender.el.stop_editing(false);
1162 _this.keyrender.el.editable =false;
1164 _this.valrender.el.stop_editing(false);
1165 _this.valrender.el.editable =false;
1167 _this.startEditingKey(path);
1176 if (ev.type == Gdk.EventType.BUTTON_PRESS && ev.button == 3) {
1178 //if (col.title == "Value") {
1179 // _this.before_edit();
1183 var p = _this.ContextMenu;
1185 p.el.set_screen(Gdk.Screen.get_default());
1187 p.el.popup(null, null, null, ev.button, ev.time);
1188 //Seed.print("click:" + res.column.title);
1190 GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
1192 this.el.get_selection().select_path(path);
1195 _this.before_edit();
1200 if (col.title != "Value") {
1201 print("col title != Value");
1203 GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => {
1204 this.el.get_selection().select_path(path);
1208 _this.before_edit();
1209 // XObject.error("column is not value?");
1210 return false; // ignore.. - key click.. ??? should we do this??
1214 // if the cell can be edited with a pulldown
1215 // then we should return true... - and let the start_editing handle it?
1222 // _this.before_edit(); <<< we really need to stop the other editor..
1223 _this.keyrender.el.stop_editing(false);
1224 _this.keyrender.el.editable =false;
1227 return _this.startEditingValue(path); // assumes selected row..
1236 // user defined functions
1238 public class Xcls_model : Object
1240 public Gtk.TreeStore el;
1241 private Xcls_LeftProps _this;
1247 public Xcls_model(Xcls_LeftProps _owner )
1251 this.el = new Gtk.TreeStore( 7, typeof(string), // 0 key type
1252 typeof(string), // 1 key
1253 typeof(string), // 2 key (display)
1254 typeof(string), // 3 value
1255 typeof(string), // 4 value (display)
1256 typeof(string), // 5 both (tooltip)
1257 typeof(string) // 6 key (for sorting)
1262 // set gobject values
1265 // user defined functions
1267 public class Xcls_keycol : Object
1269 public Gtk.TreeViewColumn el;
1270 private Xcls_LeftProps _this;
1276 public Xcls_keycol(Xcls_LeftProps _owner )
1279 _this.keycol = this;
1280 this.el = new Gtk.TreeViewColumn();
1284 // set gobject values
1285 this.el.title = "Name";
1286 this.el.resizable = true;
1287 var child_0 = new Xcls_keyrender( _this );
1289 this.el.pack_start ( child_0.el , false );
1293 this.el.add_attribute(_this.keyrender.el , "markup", 2 );
1294 this.el.add_attribute(_this.keyrender.el , "text", 1 ); }
1296 // user defined functions
1298 public class Xcls_keyrender : Object
1300 public Gtk.CellRendererText el;
1301 private Xcls_LeftProps _this;
1307 public Xcls_keyrender(Xcls_LeftProps _owner )
1310 _this.keyrender = this;
1311 this.el = new Gtk.CellRendererText();
1315 // set gobject values
1318 this.el.editing_started.connect( ( editable, path) => {
1321 _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));
1326 // this.get('/LeftPanel.model').activePath = path;
1327 _this.model.el.get_value(iter,1, out gval);
1328 var val = (string)gval;
1330 ((Gtk.Entry)editable).set_text(val);
1332 this.el.edited.connect( (path, newtext) => {
1333 print("Keyrender - signal:edited\n");
1335 this.el.editable = false;
1340 _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));
1343 _this.model.el.get_value(iter,1, out gval);
1344 var oldval = (string)gval;
1346 _this.model.el.get_value(iter,0, out gval);
1347 var ktype = (string)gval;
1349 _this.model.el.set_value(iter, 1, newtext);
1351 if (oldval == newtext) {
1356 print("ktype: %s\n",ktype);
1359 var ov = _this.node.listeners.get(oldval);
1360 _this.node.listeners.set(newtext, ov);
1361 _this.node.listeners.remove(oldval);
1363 _this.updateIter(iter, ktype, newtext, ov);
1367 var ov = _this.node.props.get(oldval);
1368 _this.node.props.set(newtext, ov);
1369 _this.node.props.remove(oldval);
1370 _this.updateIter(iter, ktype, newtext, ov);
1378 // user defined functions
1380 public class Xcls_valcol : Object
1382 public Gtk.TreeViewColumn el;
1383 private Xcls_LeftProps _this;
1389 public Xcls_valcol(Xcls_LeftProps _owner )
1392 _this.valcol = this;
1393 this.el = new Gtk.TreeViewColumn();
1397 // set gobject values
1398 this.el.title = "Value";
1399 this.el.resizable = true;
1400 var child_0 = new Xcls_valrender( _this );
1402 this.el.pack_start ( child_0.el , true );
1408 // typeof(string), // 0 key type
1409 // typeof(string), // 1 key
1410 // typeof(string), // 2 key (display)
1411 // typeof(string), // 3 value
1412 // typeof(string) // 4 value (display)
1415 this.el.add_attribute(_this.valrender.el , "text", 4 );
1416 //this.el.add_attribute(_this.valrender.el , "sensitive", 4 );
1417 //this.el.add_attribute(this.items[0].el , 'editable', 3 );
1418 // this.el.set_cell_data_func(cell, age_cell_data_func, NULL, NULL);
1420 // this.get('/LeftPanel').editableColumn= this;
1423 // user defined functions
1425 public class Xcls_valrender : Object
1427 public Gtk.CellRendererCombo el;
1428 private Xcls_LeftProps _this;
1434 public Xcls_valrender(Xcls_LeftProps _owner )
1437 _this.valrender = this;
1438 this.el = new Gtk.CellRendererCombo();
1442 // set gobject values
1443 this.el.editable = false;
1444 this.el.text_column = 0;
1445 this.el.has_entry = true;
1446 var child_0 = new Xcls_valrendermodel( _this );
1448 this.el.model = child_0.el;
1451 this.el.editing_started.connect( ( editable, path) => {
1452 //_this.editing = true;
1453 print("editing started called\n");
1454 if (!_this.allow_edit) {
1456 print("val - editing_Started\n");
1457 this.el.editable = false; // make sure it's not editor...
1462 _this.allow_edit =false;
1465 if ( this.el.has_entry ) {
1468 _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));
1473 // this.get('/LeftPanel.model').activePath = path;
1474 _this.model.el.get_value(iter,3, out gval);
1477 var val = (string)gval;
1478 var combo = (Gtk.ComboBox)editable;
1480 var entry = (Gtk.Entry) combo.get_child();
1481 entry.set_text(val);
1485 this.el.edited.connect( (path, newtext) => {
1486 print("Valrender - signal:edited\n");
1488 this.el.editable = false;
1493 2, "<b>" + miter.get_key() + "</b>",
1494 3, miter.get_value(),
1495 4, display_value(short);
1501 _this.model.el.get_iter(out iter, new Gtk.TreePath.from_string(path));
1504 _this.model.el.get_value(iter,0, out gval);
1505 var ktype = (string)gval;
1508 _this.model.el.get_value(iter,3, out gval);
1509 var oldval = (string)gval;
1511 _this.model.el.get_value(iter,1, out gval);
1512 var key = (string)gval;
1518 _this.node.listeners.set(key, newtext);
1519 _this.updateIter(iter,ktype,key,newtext);
1522 _this.node.props.set(key,newtext);
1523 _this.updateIter(iter,ktype, key,newtext);
1526 // _this.load(_this.file,_this.node);
1532 // user defined functions
1533 public void setOptions (string[] ar) {
1534 var m = _this.valrendermodel.el;
1537 for (var i =0; i < ar.length; i++) {
1539 m.set_value(iret, 0, ar[i]);
1544 public class Xcls_valrendermodel : Object
1546 public Gtk.ListStore el;
1547 private Xcls_LeftProps _this;
1553 public Xcls_valrendermodel(Xcls_LeftProps _owner )
1556 _this.valrendermodel = this;
1557 this.el = new Gtk.ListStore( 1, typeof(string) );
1561 // set gobject values
1564 // user defined functions
1566 public class Xcls_ContextMenu : Object
1569 private Xcls_LeftProps _this;
1575 public Xcls_ContextMenu(Xcls_LeftProps _owner )
1578 _this.ContextMenu = this;
1579 this.el = new Gtk.Menu();
1583 // set gobject values
1584 var child_0 = new Xcls_MenuItem29( _this );
1586 this.el.append ( child_0.el );
1587 var child_1 = new Xcls_SeparatorMenuItem30( _this );
1589 this.el.append ( child_1.el );
1590 var child_2 = new Xcls_MenuItem31( _this );
1592 this.el.append ( child_2.el );
1595 // user defined functions
1597 public class Xcls_MenuItem29 : Object
1599 public Gtk.MenuItem el;
1600 private Xcls_LeftProps _this;
1606 public Xcls_MenuItem29(Xcls_LeftProps _owner )
1609 this.el = new Gtk.MenuItem();
1613 // set gobject values
1614 this.el.label = "Edit";
1617 this.el.activate.connect( ( ) =>{
1619 var s = _this.view.el.get_selection();
1621 Gtk.TreeModel model;
1622 s.get_selected (out model, out iter);
1623 _this.startEditingKey(model.get_path(iter));
1627 // user defined functions
1629 public class Xcls_SeparatorMenuItem30 : Object
1631 public Gtk.SeparatorMenuItem el;
1632 private Xcls_LeftProps _this;
1638 public Xcls_SeparatorMenuItem30(Xcls_LeftProps _owner )
1641 this.el = new Gtk.SeparatorMenuItem();
1645 // set gobject values
1648 // user defined functions
1650 public class Xcls_MenuItem31 : Object
1652 public Gtk.MenuItem el;
1653 private Xcls_LeftProps _this;
1659 public Xcls_MenuItem31(Xcls_LeftProps _owner )
1662 this.el = new Gtk.MenuItem();
1666 // set gobject values
1667 this.el.label = "Delete";
1670 this.el.activate.connect( ( ) =>{
1671 _this.deleteSelected();
1675 // user defined functions