func init // adds using namespace sys.add_use('System.Windows.Forms') // initialize instance sys.add_widget('TreeView') // initialize properties sys.set_undef_field_const('BorderStyle', this.props('BorderStyle'), 'System.Windows.Forms.BorderStyle') sys.set_typed_field(104, 'CheckBoxes') sys.set_undef_field_const('DrawMode', this.props('DrawMode'), 'System.Windows.Forms.TreeViewDrawMode') sys.set_typed_field(8, 'ForeColor') sys.set_typed_field(104, 'FullRowSelect') sys.set_typed_field(104, 'HideSelection') sys.set_typed_field(104, 'HotTracking') sys.set_undef_field('ImageIndex') sys.set_undef_field('ImageKey') sys.set_typed_field(20, 'ImageList') sys.set_undef_field('Indent') sys.set_undef_field('ItemHeight') sys.set_typed_field(104, 'LabelEdit') sys.set_typed_field(8, 'LineColor') sys.set_undef_field('PathSeparator') sys.set_typed_field(104, 'RightToLeftLayout') sys.set_typed_field(104, 'Scrollable') sys.set_undef_field('SelectedImageIndex') sys.set_undef_field('SelectedImageKey') sys.set_typed_field(104, 'ShowLines') sys.set_typed_field(104, 'ShowNodeToolTips') sys.set_typed_field(104, 'ShowPlusMinus') sys.set_typed_field(104, 'ShowRootLines') sys.set_typed_field(20, 'StateImageList') if(not isdef("Nodes")) lvl = 0 s = replace(this.props('Nodes').value, "\\\"", "\"") arr = split(unescape(s), '\r\n') if(arr.size()) idx = 0 nodes = '' blk_init.println(this.codename, '.BeginUpdate();') for(i = 0; i < arr.size(); i++) s = arr.get(i) if(s == '(') sys.stack_push(idx) sys.stack_push(nodes) nodes = code(nodes) + '.Nodes['+ (idx - 1) + ']' idx = 0 lvl++ elseif(s == ')') lvl-- nodes = sys.stack_pop() idx = sys.stack_pop() else if(lvl > 0) blk_init.println(this.codename, nodes, '.Nodes.Add(', s, ');') else blk_init.println(this.codename, '.Nodes.Add(', s, ');') end idx++ end end blk_init.println(this.codename, '.EndUpdate();') end end // makes implementation methods for properties sys._prop_init('BorderStyle', 1, 1, 0) sys._prop_init('CheckBoxes', 1, 1, 104) sys._prop_init('DrawMode', 1, 1, 0) sys._prop_init('ForeColor', 1, 1, 0) sys._prop_init('FullRowSelect', 1, 1, 104) sys._prop_init('HideSelection', 1, 1, 104) sys._prop_init('HotTracking', 1, 1, 104) sys._prop_init('ImageIndex', 1, 1, 1) sys._prop_init('ImageKey', 1, 1, 2) sys._prop_init('ImageList', 1, 1, 0) sys._prop_init('Indent', 1, 1, 1) sys._prop_init('ItemHeight', 1, 1, 1) sys._prop_init('LabelEdit', 1, 1, 104) sys._prop_init('LineColor', 1, 1, 0) sys._prop_init('Nodes', 1, 0, 0) sys._prop_init('PathSeparator', 1, 1, 2) sys._prop_init('RightToLeftLayout', 1, 1, 104) sys._prop_init('Scrollable', 1, 1, 104) sys._prop_init('SelectedImageIndex', 1, 1, 1) sys._prop_init('SelectedImageKey', 1, 1, 2) sys._prop_init('SelectedNode', 1, 1, 0) sys._prop_init('ShowLines', 1, 1, 104) sys._prop_init('ShowNodeToolTips', 1, 1, 104) sys._prop_init('ShowPlusMinus', 1, 1, 104) sys._prop_init('ShowRootLines', 1, 1, 104) sys._prop_init('Sorted', 1, 1, 104) sys._prop_init('StateImageList', 1, 1, 0) sys._prop_init('TopNode', 1, 1, 0) sys._prop_init('TreeViewNodeSorter', 1, 1, 0) sys._prop_init('VisibleCount', 1, 0, 1) // makes implementation of methods as properties sys._mtd_as_prop_init('TreeView') // makes implementation of simple methods sys._method_init('BeginUpdate') sys._method_init('CollapseAll') sys._method_init('EndUpdate') sys._method_init('ExpandAll') sys._method_init('Sort') // initialize events sys.add_event_type('onAfterCheck', 'AfterCheck', 'TreeViewEvent', 'args') sys.add_event_type('onAfterCollapse', 'AfterCollapse', 'TreeViewEvent', 'args') sys.add_event_type('onAfterExpand', 'AfterExpand', 'TreeViewEvent', 'args') sys.add_event_type('onAfterLabelEdit', 'AfterLabelEdit', 'NodeLabelEditEvent', 'args') sys.add_event_type('onAfterSelect', 'AfterSelect', 'TreeViewEvent', 'args') sys.add_event_type('onBeforeCheck', 'BeforeCheck', 'TreeViewCancelEvent', 'args') sys.add_event_type('onBeforeCollapse', 'BeforeCollapse', 'TreeViewCancelEvent', 'args') sys.add_event_type('onBeforeExpand', 'BeforeExpand', 'TreeViewCancelEvent', 'args') sys.add_event_type('onBeforeLabelEdit', 'BeforeLabelEdit', 'NodeLabelEditEvent', 'args') sys.add_event_type('onBeforeSelect', 'BeforeSelect', 'TreeViewCancelEvent', 'args') sys.add_event_type('onDrawNode', 'DrawNode', 'DrawTreeNodeEvent', 'args') sys.add_event_type('onItemDrag', 'ItemDrag', 'ItemDragEvent', 'args') sys.add_event_type('onNodeMouseClick', 'NodeMouseClick', 'TreeNodeMouseClickEvent', 'args') sys.add_event_type('onNodeMouseDoubleClick', 'NodeMouseDoubleClick', 'TreeNodeMouseClickEvent', 'args') sys.add_event_type('onNodeMouseHover', 'NodeMouseHover', 'TreeNodeMouseHoverEvent', 'args') sys.add_event_type('onRightToLeftLayoutChanged', 'RightToLeftLayoutChanged', 'Event', 'args') // initialize common events and properties include("Control-init") end func doGetNodeAt(pt) if(linked("onGetNodeAt")) event("onGetNodeAt", this.codename + '.GetNodeAt(' + d("pt") + ')') else blk.println(this.codename, '.GetNodeAt(', d("pt"), ');') end end func doGetNodeAt2(x, y) if(linked("onGetNodeAt")) event("onGetNodeAt", this.codename + '.GetNodeAt(' + d("x") + ', ' + d("y") + ')') else blk.println(this.codename, '.GetNodeAt(', d("x"), ', ', d("y"), ');') end end func doGetNodeCount(includeSubTrees) if(linked("onGetNodeCount")) event("onGetNodeCount", this.codename + '.GetNodeCount(' + d("includeSubTrees") + ')') else blk.println(this.codename, '.GetNodeCount(', d("includeSubTrees"), ');') end end func doHitTest(pt) if(linked("onHitTest")) event("onHitTest", this.codename + '.HitTest(' + d("pt") + ')') else blk.println(this.codename, '.HitTest(', d("pt"), ');') end end func doHitTest2(x, y) if(linked("onHitTest")) event("onHitTest", this.codename + '.HitTest(' + d("x") + ', ' + d("y") + ')') else blk.println(this.codename, '.HitTest(', d("x"), ', ', d("y"), ');') end end include("Control")