aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/xuitree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/xuitree.cpp')
-rw-r--r--Src/Wasabi/api/skin/widgets/xuitree.cpp2644
1 files changed, 2644 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/xuitree.cpp b/Src/Wasabi/api/skin/widgets/xuitree.cpp
new file mode 100644
index 00000000..66483656
--- /dev/null
+++ b/Src/Wasabi/api/skin/widgets/xuitree.cpp
@@ -0,0 +1,2644 @@
+#include <precomp.h>
+#include "xuitree.h"
+
+#include <api/service/svc_enum.h>
+#include <bfc/parse/hierarchyparser.h>
+#include <api/script/scriptguid.h>
+#include <api/skin/feeds/TextFeedEnum.h>
+
+// The temporary memory buffer to hold our string returns.
+StringW GuiTreeScriptController::staticStr;
+
+class ScriptTreeItem;
+
+// -----------------------------------------------------------------------
+// class TreeItemScript -- This is the tree item type inserted into
+// the tree if a script or XML piece is inserting items into the tree.
+class TreeItemScript : public TreeItem
+{
+public:
+ TreeItemScript(const wchar_t *label = NULL, ScriptTreeItem *_scriptitem = NULL) : scriptitem(_scriptitem), TreeItem(label)
+ {}
+ virtual ~TreeItemScript()
+ {}
+ virtual void onTreeAdd()
+ {
+ if (scriptitem) TreeItemScriptController::treeitem_onTreeAdd(SCRIPT_CALL, scriptitem->getScriptObject());
+ }
+ virtual void onTreeRemove()
+ {
+ if (scriptitem) TreeItemScriptController::treeitem_onTreeRemove(SCRIPT_CALL, scriptitem->getScriptObject());
+ }
+ virtual void onSelect()
+ {
+ if (scriptitem) TreeItemScriptController::treeitem_onSelect(SCRIPT_CALL, scriptitem->getScriptObject());
+ }
+ virtual void onDeselect()
+ {
+ if (scriptitem) TreeItemScriptController::treeitem_onDeselect(SCRIPT_CALL, scriptitem->getScriptObject());
+ }
+ virtual int onLeftDoubleClick()
+ {
+ scriptVar retval;
+ if (scriptitem)
+ retval = TreeItemScriptController::treeitem_onLeftDoubleClick(SCRIPT_CALL, scriptitem->getScriptObject());
+ if ((retval.type == SCRIPT_VOID)
+ || (retval.type == SCRIPT_OBJECT)
+ || (retval.type == SCRIPT_STRING))
+ return 0;
+ return GET_SCRIPT_INT(retval);
+ }
+ virtual int onRightDoubleClick()
+ {
+ scriptVar retval;
+ if (scriptitem) retval = TreeItemScriptController::treeitem_onRightDoubleClick(SCRIPT_CALL, scriptitem->getScriptObject());
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING)) return 0;
+ return GET_SCRIPT_INT(retval);
+ }
+ // return 1 if you eat the key
+ virtual int onChar(UINT key)
+ {
+ scriptVar retval;
+ if (scriptitem) retval = TreeItemScriptController::treeitem_onChar(SCRIPT_CALL, scriptitem->getScriptObject(), MAKE_SCRIPT_INT(key));
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING)) return 0;
+ return GET_SCRIPT_INT(retval);
+ }
+ // these are called after the expand/collapse happens
+ virtual void onExpand()
+ {
+ if (scriptitem) TreeItemScriptController::treeitem_onExpand(SCRIPT_CALL, scriptitem->getScriptObject());
+ }
+ virtual void onCollapse()
+ {
+ if (scriptitem) TreeItemScriptController::treeitem_onCollapse(SCRIPT_CALL, scriptitem->getScriptObject());
+ }
+ virtual int onBeginLabelEdit()
+ {
+ scriptVar retval;
+ if (scriptitem) retval = TreeItemScriptController::treeitem_onBeginLabelEdit(SCRIPT_CALL, scriptitem->getScriptObject());
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = TreeItem::onBeginLabelEdit();
+ }
+ return retv;
+ }
+ virtual int onEndLabelEdit(const wchar_t *newlabel)
+ {
+ scriptVar retval;
+ if (scriptitem)
+ retval = TreeItemScriptController::treeitem_onEndLabelEdit(SCRIPT_CALL, scriptitem->getScriptObject(), MAKE_SCRIPT_STRING(newlabel));
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = TreeItem::onEndLabelEdit(newlabel);
+ }
+ return retv;
+ }
+ virtual int onContextMenu(int x, int y)
+ {
+ scriptVar retval;
+ if (scriptitem) retval = TreeItemScriptController::treeitem_onContextMenu(SCRIPT_CALL, scriptitem->getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = TreeItem::onContextMenu(x, y);
+ }
+ return retv;
+ }
+protected:
+ ScriptTreeItem *scriptitem;
+};
+
+
+// -----------------------------------------------------------------------
+const wchar_t ScriptTreeXuiObjectStr[] = L"Tree"; // This is the xml tag
+char ScriptTreeXuiSvcName[] = "Tree xui object";
+
+
+XMLParamPair ScriptTree::params[] = {
+ {SCRIPTTREE_CHILDTABS, L"CHILDTABS"},
+ {SCRIPTTREE_EXPANDROOT, L"EXPANDROOT"},
+ {SCRIPTTREE_FEED, L"FEED"},
+ {SCRIPTTREE_SETITEMS, L"ITEMS"},
+ {SCRIPTTREE_SORTED, L"SORTED"},
+ };
+// -----------------------------------------------------------------------
+ScriptTree::ScriptTree()
+{
+ getScriptObject()->vcpu_setInterface(guitreeGuid, (void *)static_cast<ScriptTree *>(this));
+ getScriptObject()->vcpu_setClassName(L"GuiTree"); // this is the script class name
+ getScriptObject()->vcpu_setController(guiTreeController);
+
+ myxuihandle = newXuiHandle();
+ CreateXMLParameters(myxuihandle);
+
+ feed = NULL;
+ childtabs = 1;
+ expandroot = 1;
+}
+
+void ScriptTree::CreateXMLParameters(int master_handle)
+{
+ //SCRIPTTREE_PARENT::CreateXMLParameters(master_handle);
+ int numParams = sizeof(params) / sizeof(params[0]);
+ hintNumberOfParams(myxuihandle, numParams);
+ for (int i = 0;i < numParams;i++)
+ addParam(myxuihandle, params[i], XUI_ATTRIBUTE_IMPLIED);
+}
+
+// -----------------------------------------------------------------------
+ScriptTree::~ScriptTree()
+{
+ closeFeed();
+
+ // Clean up the ScriptTreeItems owned by this guy.
+ TreeItem *item = enumRootItem(0);
+ while (item != NULL)
+ {
+ // Delete this item.
+ ScriptTreeItem *dead = NULL;
+ //if (TISC::g_scriptitems.getItem(item, &dead) && (dead != NULL))
+ //{ // true if it found something.
+ // TISC::g_scriptitems.delItem(item);
+ // delete dead;
+ // // DebugString(" === deleting tree item (%08X, %08X, %08X)\n", item, dead, this);
+ // continue;
+ //}
+ auto it = TISC::g_scriptitems.find(item);
+ if (TISC::g_scriptitems.end() != it)
+ {
+ dead = it->second;
+ delete dead;
+ TISC::g_scriptitems.erase(it);
+ continue;
+ }
+ else
+ {
+ // DebugString(" !!! ORPHAN TREE ITEM (%08X, %08X, %08X)\n", item, 0, this);
+ }
+
+ // Figure out who the next item to process should be.
+
+ // 1) Children first.
+ TreeItem *child = item->getChild();
+ if (child != NULL)
+ {
+ item = child;
+ }
+ else
+ {
+ // 2) Siblings next.
+ TreeItem *sibling = item->getSibling();
+ if (sibling != NULL)
+ {
+ item = sibling;
+ }
+ else
+ {
+ // 3) Zip up parent chain last.
+ TreeItem *item_parent, *parent_sibling;
+ item_parent = item->getParent();
+ item = NULL; // at this point if we do not assign, we are NULL.
+ while (item_parent != NULL)
+ {
+ parent_sibling = item_parent->getSibling();
+ if (parent_sibling != NULL)
+ {
+ item = parent_sibling;
+ break;
+ }
+ item_parent = item_parent->getParent();
+ }
+ // 4) Uhhh.... you're null. All done. Go home.
+ }
+ }
+ }
+
+ /*
+
+ // delete all of our script items from g_scriptitems
+ int i = 0;
+ TreeItem *next = enumRootItem(0);
+ while (next) { // go through all of our items
+ ScriptTreeItem *dead = NULL;
+ if (TISC::g_scriptitems.getItem(next, &dead) && (dead != NULL)) { // true if it found something.
+ TISC::g_scriptitems.delItem(next);
+ delete dead;
+ // DebugString(" === deleting tree item (%08X, %08X)\n", next, dead);
+ } else {
+ // DebugString(" !!! ORPHAN TREE ITEM (%08X, %08X)\n", next, i);
+ }
+ TreeItem *next = enumAllItems(i++);
+ }
+
+ */
+ // some items will wind up leaked into g_scriptitems, most likely.
+}
+
+// -----------------------------------------------------------------------
+int ScriptTree::setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value)
+{
+ if (xuihandle != myxuihandle)
+ return SCRIPTTREE_PARENT::setXuiParam(xuihandle, xmlattributeid, xmlattributename, value);
+
+ switch (xmlattributeid)
+ {
+ case SCRIPTTREE_SETITEMS:
+ items = value;
+ fillFromParams();
+#ifdef WASABI_COMPILE_CONFIG
+ if (getGuiObject()->guiobject_hasCfgAttrib())
+ selectFromConfig();
+#endif
+ break;
+ case SCRIPTTREE_FEED:
+ {
+ closeFeed();
+ openFeed(value);
+ break;
+ }
+ case SCRIPTTREE_SORTED:
+ {
+ setSorted(WTOB(value));
+ break;
+ }
+ case SCRIPTTREE_CHILDTABS:
+ {
+ childtabs = WTOI(value);
+ break;
+ }
+ case SCRIPTTREE_EXPANDROOT:
+ {
+ expandRoot(WTOI(value));
+ break;
+ }
+ default:
+ return 0;
+ }
+ return 1;
+}
+
+// -----------------------------------------------------------------------
+int ScriptTree::onInit()
+{
+ SCRIPTTREE_PARENT::onInit();
+
+ fillFromParams();
+ return 1;
+}
+
+// -----------------------------------------------------------------------
+int ScriptTree::onAction(const wchar_t *action, const wchar_t *param, int x, int y, intptr_t p1, intptr_t p2, void *data, size_t datalen, ifc_window *source)
+{
+ SCRIPTTREE_PARENT::onAction(action, param, x, y, p1, p2, data, datalen, source);
+ if (!WCSICMP(action, L"get_selection"))
+ {
+ if (source != NULL)
+ {
+ StringW res(L"");
+
+ // Hmmmmm..... multiselection trees?
+
+ sendAction(source, L"set_selection", res);
+ }
+ }
+ return 1;
+}
+
+// -----------------------------------------------------------------------
+ScriptTreeItem *ScriptTree::bindScriptTreeItem(TreeItem *item)
+{
+ ASSERT(item != NULL);
+ // find this tree item in our map of tree items.
+ ScriptTreeItem *si = NULL;
+ //TISC::g_scriptitems.getItem(item, &si);
+ auto it = TISC::g_scriptitems.find(item);
+ if (TISC::g_scriptitems.end() == it)
+ {
+ // if there was no scriptobject in our map already, make one
+ // for this tree item and place it in our map.
+ si = new ScriptTreeItem(item, this);
+ TISC::g_scriptitems.insert({ item, si });
+ }
+ else
+ {
+ si = it->second;
+ }
+ return si;
+}
+
+// -----------------------------------------------------------------------
+int ScriptTree::destroyScriptTreeItem(ScriptTreeItem *item)
+{
+ ASSERT(item != NULL);
+ // find this tree item in our map of tree items.
+ TreeItem *ti = item->getItem();
+ if (ti)
+ {
+ ScriptTreeItem *check = NULL;
+ //TISC::g_scriptitems.getItem(ti, &check); // this is a doublecheck on who owns who.
+ auto it = TISC::g_scriptitems.find(ti);
+
+ if (TISC::g_scriptitems.end() != it)
+ {
+ // remove the treeitem from the tree
+ this->removeTreeItem(ti); // (removes without deleting)
+ // remove the scripttreeitem from the map
+ TISC::g_scriptitems.erase(it);
+ // and delete.(phew! bomb disposal!)
+ delete ti;
+ delete item;
+ return 1; // yes, we deleted it.
+ }
+ }
+ return 0; // Not ours, don't wanna delete it. Someone else can Deal With It.
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::onSetVisible(int i)
+{
+ SCRIPTTREE_PARENT::onSetVisible(i);
+}
+
+#ifdef WASABI_COMPILE_CONFIG
+// -----------------------------------------------------------------------
+int ScriptTree::onReloadConfig()
+{
+ SCRIPTTREE_PARENT::onReloadConfig();
+ selectFromConfig();
+ return 1;
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::saveToConfig()
+{}
+
+// -----------------------------------------------------------------------
+void ScriptTree::selectFromConfig()
+{}
+#endif
+
+// -----------------------------------------------------------------------
+int ScriptTree::selectEntry(const wchar_t *e, int cb)
+{
+ return -1;
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::expandRoot(int val)
+{
+ if (val)
+ {
+ expandroot = 1;
+ int count;
+ TreeItem *rootitem;
+ for (count = 0, rootitem = enumRootItem(count); rootitem; rootitem = enumRootItem(++count))
+ {
+ rootitem->expand();
+ }
+ }
+ else
+ {
+ expandroot = 0;
+ }
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::fillFromHPNode(HPNode *node, TreeItem *parent)
+{
+ // Go through the given node's children and add items for them
+ // to the corresponding parent item.
+ int i, n = node->getNumChildren();
+ for (i = 0; i < n; i++)
+ {
+ // Here's a child node
+ HPNode *child_node = static_cast<HPNode *>(node->enumChild(i));
+ // Make a script-aware tree item and script item to correspond to it, labelled with the child_node's name
+ ScriptTreeItem *si = new ScriptTreeItem;
+ TreeItem *child_item = new TreeItemScript((*child_node)(), si);
+ si->setItem(child_item);
+ si->setScriptTree(this);
+ // Add the script and tree items to the scriptitems map
+ TISC::g_scriptitems.insert({ child_item, si });
+ // DebugString(StringPrintf(" === NEW NODE ITEM (%08X, %08X, %08X)\n", child_item, si, this);
+ // Add the child item to either ourselves or the given parent.
+ addTreeItem(child_item, parent, getSorted(), childtabs);
+ // And then continue to fill from that node.
+ fillFromHPNode(child_node, child_item);
+ }
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::fillFromParams()
+{
+ deleteAllItems();
+ if (!items.isempty())
+ {
+ HierarchyParser hierarchy(items);
+ fillFromHPNode(hierarchy.rootNode());
+ }
+ // If we want our roots opened, do so now.
+ expandRoot(expandroot);
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::selectEntries(const wchar_t *entries, int cb)
+{}
+
+// -----------------------------------------------------------------------
+void ScriptTree::openFeed(const wchar_t *feedid)
+{
+ if (!_wcsicmp(feedid, last_feed)) return ;
+ feed = TextFeedEnum(feedid).getFirst();
+ if (feed != NULL)
+ {
+ viewer_addViewItem(feed->getDependencyPtr());
+ setXuiParam(myxuihandle, SCRIPTTREE_SETITEMS, L"items", feed->getFeedText(feedid));
+ }
+ last_feed = feedid;
+}
+
+// -----------------------------------------------------------------------
+void ScriptTree::closeFeed()
+{
+ if (feed)
+ {
+ viewer_delViewItem(feed->getDependencyPtr());
+ SvcEnum::release(feed);
+ }
+ feed = NULL;
+ last_feed = L"";
+}
+
+// -----------------------------------------------------------------------
+int ScriptTree::viewer_onEvent(api_dependent *item, const GUID *classguid, int event, intptr_t param, void *ptr, size_t ptrlen)
+{
+ if (feed == dynamic_guid_cast<svc_textFeed>(item, classguid))
+ {
+ if (event == svc_textFeed::Event_TEXTCHANGE)
+ {
+ setXuiParam(myxuihandle, SCRIPTTREE_SETITEMS, L"items", (const wchar_t *)ptr);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+// Callback methods that send hooks into the Script system
+
+int ScriptTree::onLeftButtonDown(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onLeftButtonDown(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onLeftButtonDown(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::onLeftButtonUp(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onLeftButtonUp(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onLeftButtonUp(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::onRightButtonUp(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onRightButtonUp(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onRightButtonUp(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::onMouseMove(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onMouseMove(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onMouseMove(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::wantAutoContextMenu()
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_wantAutoContextMenu(SCRIPT_CALL, getScriptObject() );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::wantAutoContextMenu();
+ }
+ return retv;
+}
+
+int ScriptTree::onLeftButtonDblClk(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onLeftButtonDblClk(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onLeftButtonDblClk(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::onRightButtonDblClk(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onRightButtonDblClk(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onRightButtonDblClk(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::onMouseWheelUp(int clicked, int lines)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onMouseWheelUp(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(clicked), MAKE_SCRIPT_INT(lines) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onMouseWheelUp(clicked, lines);
+ }
+ return retv;
+}
+
+int ScriptTree::onMouseWheelDown(int clicked, int lines)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onMouseWheelDown(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(clicked), MAKE_SCRIPT_INT(lines) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onMouseWheelDown(clicked, lines);
+ }
+ return retv;
+}
+
+int ScriptTree::onContextMenu(int x, int y)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onContextMenu(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(x), MAKE_SCRIPT_INT(y) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onContextMenu(x, y);
+ }
+ return retv;
+}
+
+int ScriptTree::onChar(wchar_t c)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onChar(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(c));
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onChar(c);
+ }
+ return retv;
+}
+
+int ScriptTree::onKeyDown(int keycode)
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onKeyDown(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_INT(keycode) );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onKeyDown(keycode);
+ }
+ return retv;
+}
+
+void ScriptTree::onItemRecvDrop(TreeItem *item)
+{
+ ScriptTreeItem *sti_item = bindScriptTreeItem(item);
+ GuiTreeScriptController::guitree_onItemRecvDrop(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_OBJECT(sti_item->getScriptObject()) );
+}
+
+void ScriptTree::onLabelChange(TreeItem *item)
+{
+ ScriptTreeItem *sti_item = bindScriptTreeItem(item);
+ GuiTreeScriptController::guitree_onLabelChange(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_OBJECT(sti_item->getScriptObject()) );
+}
+
+void ScriptTree::onItemSelected(TreeItem *item)
+{
+ ScriptTreeItem *sti_item = bindScriptTreeItem(item);
+ GuiTreeScriptController::guitree_onItemSelected(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_OBJECT(sti_item->getScriptObject()) );
+}
+
+void ScriptTree::onItemDeselected(TreeItem *item)
+{
+ ScriptTreeItem *sti_item = bindScriptTreeItem(item);
+ GuiTreeScriptController::guitree_onItemDeselected(SCRIPT_CALL, getScriptObject(), MAKE_SCRIPT_OBJECT(sti_item->getScriptObject()) );
+}
+
+int ScriptTree::onKillFocus()
+{
+ scriptVar retval;
+ retval = GuiTreeScriptController::guitree_onKillFocus(SCRIPT_CALL, getScriptObject() );
+ int retv = 0;
+ if ((retval.type == SCRIPT_VOID) || (retval.type == SCRIPT_OBJECT) || (retval.type == SCRIPT_STRING))
+ {
+ retv = -1;
+ }
+ if (!retv)
+ {
+ retv = GET_SCRIPT_INT(retval);
+ }
+ if (retv < 1)
+ {
+ retv = SCRIPTTREE_PARENT::onKillFocus();
+ }
+ return retv;
+}
+
+
+
+
+
+// -----------------------------------------------------------------------
+// Script Object
+
+GuiTreeScriptController _guiTreeController;
+GuiTreeScriptController *guiTreeController = &_guiTreeController;
+
+// -- Functions table -------------------------------------
+function_descriptor_struct GuiTreeScriptController::exportedFunction[] = {
+ {L"getNumRootItems", 0, (void*)GuiTreeScriptController::guitree_getNumRootItems },
+ {L"enumRootItem", 1, (void*)GuiTreeScriptController::guitree_enumRootItem },
+
+ {L"onLeftButtonDown", 2, (void*)GuiTreeScriptController::guitree_onLeftButtonDown }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onLeftButtonUp", 2, (void*)GuiTreeScriptController::guitree_onLeftButtonUp }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onRightButtonUp", 2, (void*)GuiTreeScriptController::guitree_onRightButtonUp }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onMouseMove", 2, (void*)GuiTreeScriptController::guitree_onMouseMove }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onWantAutoContextMenu", 0, (void*)GuiTreeScriptController::guitree_wantAutoContextMenu }, // );
+ {L"onLeftButtonDblClk", 2, (void*)GuiTreeScriptController::guitree_onLeftButtonDblClk }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onRightButtonDblClk", 2, (void*)GuiTreeScriptController::guitree_onRightButtonDblClk }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onMouseWheelUp", 2, (void*)GuiTreeScriptController::guitree_onMouseWheelUp }, // , /*Int*/ scriptVar clicked, /*Int*/ scriptVar lines);
+ {L"onMouseWheelDown", 2, (void*)GuiTreeScriptController::guitree_onMouseWheelDown }, // , /*Int*/ scriptVar clicked, /*Int*/ scriptVar lines);
+ {L"onContextMenu", 2, (void*)GuiTreeScriptController::guitree_onContextMenu }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"onChar", 1, (void*)GuiTreeScriptController::guitree_onChar }, // , /*Int*/ scriptVar c);
+ {L"onKeyDown", 1, (void*)GuiTreeScriptController::guitree_onKeyDown }, // , /*Int*/ scriptVar keycode);
+ {L"onItemRecvDrop", 1, (void*)GuiTreeScriptController::guitree_onItemRecvDrop }, // , /*TreeItem*/ scriptVar item);
+ {L"onLabelChange", 1, (void*)GuiTreeScriptController::guitree_onLabelChange }, // , /*TreeItem*/ scriptVar item);
+ {L"onItemSelected", 1, (void*)GuiTreeScriptController::guitree_onItemSelected }, // , /*TreeItem*/ scriptVar item);
+ {L"onItemDeselected", 1, (void*)GuiTreeScriptController::guitree_onItemDeselected }, // , /*TreeItem*/ scriptVar item);
+ {L"onKillFocus", 0, (void*)GuiTreeScriptController::guitree_onKillFocus }, // );
+ {L"jumpToNext", 1, (void*)GuiTreeScriptController::guitree_jumpToNext }, // , /*Int*/ scriptVar c);
+ {L"ensureItemVisible", 1, (void*)GuiTreeScriptController::guitree_ensureItemVisible }, // , /*TreeItem*/ scriptVar item);
+ {L"getContentsWidth", 0, (void*)GuiTreeScriptController::guitree_getContentsWidth }, // );
+ {L"getContentsHeight", 0, (void*)GuiTreeScriptController::guitree_getContentsHeight }, // );
+ {L"addTreeItem", 4, (void*)GuiTreeScriptController::guitree_addTreeItem }, // , /*TreeItem*/ scriptVar item, /*TreeItem*/ scriptVar par, /*Int*/ scriptVar sorted, /*Int*/ scriptVar haschildtab);
+ {L"removeTreeItem", 1, (void*)GuiTreeScriptController::guitree_removeTreeItem }, // , /*TreeItem*/ scriptVar item);
+ {L"moveTreeItem", 2, (void*)GuiTreeScriptController::guitree_moveTreeItem }, // , /*TreeItem*/ scriptVar item, /*TreeItem*/ scriptVar newparent);
+ {L"deleteAllItems", 0, (void*)GuiTreeScriptController::guitree_deleteAllItems }, // );
+ {L"expandItem", 1, (void*)GuiTreeScriptController::guitree_expandItem }, // , /*TreeItem*/ scriptVar item);
+ {L"expandItemDeferred", 1, (void*)GuiTreeScriptController::guitree_expandItemDeferred }, // , /*TreeItem*/ scriptVar item);
+ {L"collapseItem", 1, (void*)GuiTreeScriptController::guitree_collapseItem }, // , /*TreeItem*/ scriptVar item);
+ {L"collapseItemDeferred", 1, (void*)GuiTreeScriptController::guitree_collapseItemDeferred }, // , /*TreeItem*/ scriptVar item);
+ {L"selectItem", 1, (void*)GuiTreeScriptController::guitree_selectItem }, // , /*TreeItem*/ scriptVar item);
+ {L"selectItemDeferred", 1, (void*)GuiTreeScriptController::guitree_selectItemDeferred }, // , /*TreeItem*/ scriptVar item);
+ {L"delItemDeferred", 1, (void*)GuiTreeScriptController::guitree_delItemDeferred }, // , /*TreeItem*/ scriptVar item);
+ {L"hiliteItem", 1, (void*)GuiTreeScriptController::guitree_hiliteItem }, // , /*TreeItem*/ scriptVar item);
+ {L"unhiliteItem", 1, (void*)GuiTreeScriptController::guitree_unhiliteItem }, // , /*TreeItem*/ scriptVar item);
+ {L"getCurItem", 0, (void*)GuiTreeScriptController::guitree_getCurItem }, // );
+ {L"hitTest", 2, (void*)GuiTreeScriptController::guitree_hitTest }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+ {L"editItemLabel", 1, (void*)GuiTreeScriptController::guitree_editItemLabel }, // , /*TreeItem*/ scriptVar item);
+ {L"cancelEditLabel", 1, (void*)GuiTreeScriptController::guitree_cancelEditLabel }, // , /*Int*/ scriptVar destroyit);
+ {L"setAutoEdit", 1, (void*)GuiTreeScriptController::guitree_setAutoEdit }, // , /*Int*/ scriptVar ae);
+ {L"getAutoEdit", 0, (void*)GuiTreeScriptController::guitree_getAutoEdit }, // );
+ {L"getByLabel", 2, (void*)GuiTreeScriptController::guitree_getByLabel }, // , /*TreeItem*/ scriptVar item, /*String*/ scriptVar name);
+ {L"setSorted", 1, (void*)GuiTreeScriptController::guitree_setSorted }, // , /*Int*/ scriptVar dosort);
+ {L"getSorted", 0, (void*)GuiTreeScriptController::guitree_getSorted }, // );
+ {L"sortTreeItems", 0, (void*)GuiTreeScriptController::guitree_sortTreeItems }, // );
+ {L"getSibling", 1, (void*)GuiTreeScriptController::guitree_getSibling }, // , /*TreeItem*/ scriptVar item);
+ {L"setAutoCollapse", 1, (void*)GuiTreeScriptController::guitree_setAutoCollapse }, // , /*Int*/ scriptVar doautocollapse);
+ {L"setFontSize", 1, (void*)GuiTreeScriptController::guitree_setFontSize }, // , /*Int*/ scriptVar newsize);
+ {L"getFontSize", 0, (void*)GuiTreeScriptController::guitree_getFontSize }, // );
+ {L"getNumVisibleChildItems", 1, (void*)GuiTreeScriptController::guitree_getNumVisibleChildItems }, // , /*TreeItem*/ scriptVar c);
+ {L"getNumVisibleItems", 0, (void*)GuiTreeScriptController::guitree_getNumVisibleItems }, // );
+ {L"enumVisibleItems", 1, (void*)GuiTreeScriptController::guitree_enumVisibleItems }, // , /*Int*/ scriptVar n);
+ {L"enumVisibleChildItems", 2, (void*)GuiTreeScriptController::guitree_enumVisibleChildItems }, // , /*TreeItem*/ scriptVar c, /*Int*/ scriptVar n);
+ {L"enumAllItems", 1, (void*)GuiTreeScriptController::guitree_enumAllItems }, // , /*Int*/ scriptVar n);
+ {L"getItemRectX", 1, (void*)GuiTreeScriptController::guitree_getItemRectX }, // , /*TreeItem*/ scriptVar item);
+ {L"getItemRectY", 1, (void*)GuiTreeScriptController::guitree_getItemRectY }, // , /*TreeItem*/ scriptVar item);
+ {L"getItemRectW", 1, (void*)GuiTreeScriptController::guitree_getItemRectW }, // , /*TreeItem*/ scriptVar item);
+ {L"getItemRectH", 1, (void*)GuiTreeScriptController::guitree_getItemRectH }, // , /*TreeItem*/ scriptVar item);
+ // {L"getItemFromPoint", 2, (void*)GuiTreeScriptController::guitree_getItemFromPoint }, // , /*Int*/ scriptVar x, /*Int*/ scriptVar y);
+
+ };
+
+ScriptObject *GuiTreeScriptController::instantiate()
+{
+ ScriptTree *sp = new ScriptTree;
+ ASSERT(sp != NULL);
+ return sp->getScriptObject();
+}
+
+void GuiTreeScriptController::destroy(ScriptObject *o)
+{
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ ASSERT(sp != NULL);
+ delete sp;
+}
+
+void *GuiTreeScriptController::encapsulate(ScriptObject *o)
+{
+ return NULL; // no encapsulation for guitrees yet
+}
+
+void GuiTreeScriptController::deencapsulate(void *o)
+{}
+
+int GuiTreeScriptController::getNumFunctions()
+{
+ return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
+}
+
+const function_descriptor_struct *GuiTreeScriptController::getExportedFunctions()
+{
+ return exportedFunction;
+}
+
+/*int*/ scriptVar GuiTreeScriptController::guitree_getNumRootItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree*>(o->vcpu_getInterface(guitreeGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->getNumRootItems();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_enumRootItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar which)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree*>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ int _which = GET_SCRIPT_INT(which);
+ a = sp->enumRootItem(_which);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onLeftButtonDown(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onLeftButtonUp(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onRightButtonUp(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onMouseMove(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_wantAutoContextMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onLeftButtonDblClk(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onRightButtonDblClk(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onMouseWheelUp(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar clicked, /*Int*/ scriptVar lines)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, clicked, lines);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, clicked, lines);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onMouseWheelDown(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar clicked, /*Int*/ scriptVar lines)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, clicked, lines);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, clicked, lines);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onContextMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar x, /*Int*/ scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, x, y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, x, y);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onChar(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar c)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, c);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, c);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onKeyDown(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*Int*/ scriptVar keycode)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, keycode);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, keycode);
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_onItemRecvDrop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*TreeItem*/ scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, item);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, item);
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_onLabelChange(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*TreeItem*/ scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, item);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, item);
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_onItemSelected(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*TreeItem*/ scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, item);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, item);
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_onItemDeselected(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*TreeItem*/ scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, item);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, item);
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_onKillFocus(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+// -------------------------------------------------------------------------
+/*Void*/ scriptVar GuiTreeScriptController::guitree_jumpToNext(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar c)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _c = GET_SCRIPT_INT(c);
+ if (sp != NULL)
+ {
+ sp->jumpToNext(_c);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_ensureItemVisible(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->ensureItemVisible(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getContentsWidth(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->getContentsWidth();
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getContentsHeight(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->getContentsHeight();
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_addTreeItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item, scriptVar par, scriptVar sorted, scriptVar haschildtab)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_par = NULL;
+ ScriptObject *so_par = GET_SCRIPT_OBJECT(par);
+ if (so_par)
+ {
+ ScriptTreeItem *sti_par = static_cast<ScriptTreeItem *>(so_par->vcpu_getInterface(treeitemGuid));
+ if (sti_par)
+ {
+ _par = sti_par->getItem();
+ }
+ }
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ int _haschildtab = GET_SCRIPT_INT(haschildtab);
+ int _sorted = GET_SCRIPT_INT(sorted);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->addTreeItem(_item, _par, _sorted, _haschildtab);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_removeTreeItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->removeTreeItem(_item);
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_moveTreeItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item, scriptVar newparent)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_newparent = NULL;
+ ScriptObject *so_newparent = GET_SCRIPT_OBJECT(newparent);
+ if (so_newparent)
+ {
+ ScriptTreeItem *sti_newparent = static_cast<ScriptTreeItem *>(so_newparent->vcpu_getInterface(treeitemGuid));
+ if (sti_newparent)
+ {
+ _newparent = sti_newparent->getItem();
+ }
+ }
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->moveTreeItem(_item, _newparent);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_deleteAllItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ if (sp != NULL)
+ {
+ sp->deleteAllItems();
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_expandItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->expandItem(_item);
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_expandItemDeferred(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->expandItemDeferred(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_collapseItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->collapseItem(_item);
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_collapseItemDeferred(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->collapseItemDeferred(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_selectItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->selectItem(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_selectItemDeferred(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->selectItemDeferred(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_delItemDeferred(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->delItemDeferred(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_hiliteItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->hiliteItem(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_unhiliteItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->unhiliteItem(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_getCurItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->getCurItem();
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_hitTest(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar x, scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _y = GET_SCRIPT_INT(y);
+ int _x = GET_SCRIPT_INT(x);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->hitTest(_x, _y);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_editItemLabel(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ if (sp != NULL)
+ {
+ sp->editItemLabel(_item);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_cancelEditLabel(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar destroyit)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _destroyit = GET_SCRIPT_INT(destroyit);
+ if (sp != NULL)
+ {
+ sp->cancelEditLabel(_destroyit);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_setAutoEdit(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar ae)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _ae = GET_SCRIPT_INT(ae);
+ if (sp != NULL)
+ {
+ sp->setAutoEdit(_ae);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getAutoEdit(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->getAutoEdit();
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_getByLabel(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item, /*String*/ scriptVar name)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ StringW _name = GET_SCRIPT_STRING(name);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->getByLabel(_item, _name);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_setSorted(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar dosort)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _dosort = GET_SCRIPT_INT(dosort);
+ if (sp != NULL)
+ {
+ sp->setSorted(!!_dosort);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getSorted(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ int a = NULL;
+ a = sp->getSorted();
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_sortTreeItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ if (sp != NULL)
+ {
+ sp->sortTreeItems();
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_getSibling(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->getSibling(_item);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*Void*/ scriptVar GuiTreeScriptController::guitree_setAutoCollapse(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar doautocollapse)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _doautocollapse = GET_SCRIPT_INT(doautocollapse);
+ if (sp != NULL)
+ {
+ sp->setAutoCollapse(!!_doautocollapse);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_setFontSize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar newsize)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _newsize = GET_SCRIPT_INT(newsize);
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->setFontSize(_newsize);
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getFontSize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->getFontSize();
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getNumVisibleChildItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar c)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_c = NULL;
+ ScriptObject *so_c = GET_SCRIPT_OBJECT(c);
+ if (so_c)
+ {
+ ScriptTreeItem *sti_c = static_cast<ScriptTreeItem *>(so_c->vcpu_getInterface(treeitemGuid));
+ if (sti_c)
+ {
+ _c = sti_c->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->getNumVisibleChildItems(_c);
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getNumVisibleItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ a = sp->getNumVisibleItems();
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_enumVisibleItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar n)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _n = GET_SCRIPT_INT(n);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->enumVisibleItems(_n);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_enumVisibleChildItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar c, scriptVar n)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_c = NULL;
+ ScriptObject *so_c = GET_SCRIPT_OBJECT(c);
+ if (so_c)
+ {
+ ScriptTreeItem *sti_c = static_cast<ScriptTreeItem *>(so_c->vcpu_getInterface(treeitemGuid));
+ if (sti_c)
+ {
+ _c = sti_c->getItem();
+ }
+ }
+ int _n = GET_SCRIPT_INT(n);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->enumVisibleChildItems(_c, _n);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_enumAllItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar n)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _n = GET_SCRIPT_INT(n);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ a = sp->enumAllItems(_n);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getItemRectX(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ RECT r;
+ sp->getItemRect(_item, &r);
+ a = r.left;
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getItemRectY(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ RECT r;
+ sp->getItemRect(_item, &r);
+ a = r.top;
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getItemRectW(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ RECT r;
+ sp->getItemRect(_item, &r);
+ a = r.left - r.right;
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+/*Int*/ scriptVar GuiTreeScriptController::guitree_getItemRectH(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ TreeItem *_item = NULL;
+ ScriptObject *so_item = GET_SCRIPT_OBJECT(item);
+ if (so_item)
+ {
+ ScriptTreeItem *sti_item = static_cast<ScriptTreeItem *>(so_item->vcpu_getInterface(treeitemGuid));
+ if (sti_item)
+ {
+ _item = sti_item->getItem();
+ }
+ }
+ scriptVar retval = MAKE_SCRIPT_INT(0);
+ if (sp != NULL)
+ {
+ int a = 0;
+ RECT r;
+ sp->getItemRect(_item, &r);
+ a = r.bottom - r.top;
+ retval = MAKE_SCRIPT_INT(a);
+ }
+ return retval;
+}
+
+#if 0 // Not implemented in TreeWnd, dammit.
+/*TreeItem*/ scriptVar GuiTreeScriptController::guitree_getItemFromPoint(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar x, scriptVar y)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTree *sp = static_cast<ScriptTree *>(o->vcpu_getInterface(guitreeGuid));
+ int _y = GET_SCRIPT_INT(y);
+ int _x = GET_SCRIPT_INT(x);
+ scriptVar retval = MAKE_SCRIPT_OBJECT(NULL);
+ if (sp != NULL)
+ {
+ TreeItem *a = NULL;
+ POINT p = {_x, _y};
+ a = sp->getItemFromPoint(&p);
+ if (a != NULL)
+ {
+ ScriptTreeItem *item = sp->bindScriptTreeItem(a);
+ if (item != NULL)
+ {
+ retval = MAKE_SCRIPT_OBJECT(item->getScriptObject());
+ }
+ }
+ }
+ return retval;
+}
+#endif
+
+// -----------------------------------------------------------------------
+// Script Object For The Tree Item
+
+ScriptTreeItem::ScriptTreeItem(TreeItem *_item, ScriptTree *_tree) : item(_item), tree(_tree), SCRIPTTREEITEM_SCRIPTPARENT()
+{
+ getScriptObject()->vcpu_setInterface(treeitemGuid, (void *)static_cast<ScriptTreeItem *>(this));
+ getScriptObject()->vcpu_setClassName(L"TreeItem");
+ getScriptObject()->vcpu_setController(treeItemController);
+}
+
+ScriptTreeItem::~ScriptTreeItem()
+{}
+
+int ScriptTreeItem::getNumChildren()
+{
+ ASSERT(item);
+ return item->getNumChildren();
+}
+
+void ScriptTreeItem::setLabel(const wchar_t *label)
+{
+ ASSERT(item);
+ item->setLabel(label);
+}
+
+const wchar_t *ScriptTreeItem::getLabel()
+{
+ ASSERT(item);
+ return item->getLabel();
+}
+
+void ScriptTreeItem::ensureVisible()
+{
+ ASSERT(item);
+ item->ensureVisible();
+}
+
+TreeItem *ScriptTreeItem::getNthChild(int nth)
+{
+ ASSERT(item);
+ return item->getNthChild(nth);
+}
+
+TreeItem *ScriptTreeItem::getChild()
+{
+ ASSERT(item);
+ return item->getChild();
+}
+
+TreeItem *ScriptTreeItem::getChildSibling(TreeItem *_item)
+{
+ ASSERT(item);
+ return item->getChildSibling(_item);
+}
+
+TreeItem *ScriptTreeItem::getSibling()
+{
+ ASSERT(item);
+ return item->getSibling();
+}
+
+TreeItem *ScriptTreeItem::getParent()
+{
+ ASSERT(item);
+ return item->getParent();
+}
+
+void ScriptTreeItem::editLabel()
+{
+ ASSERT(item);
+ item->editLabel();
+}
+
+bool ScriptTreeItem::hasSubItems()
+{
+ ASSERT(item);
+ return item->hasSubItems();
+}
+
+void ScriptTreeItem::setSorted(int issorted)
+{
+ ASSERT(item);
+ item->setSorted(issorted);
+}
+
+void ScriptTreeItem::setChildTab(int haschildtab)
+{
+ ASSERT(item);
+ item->setChildTab(haschildtab);
+}
+
+bool ScriptTreeItem::isSorted()
+{
+ ASSERT(item);
+ return item->isSorted();
+}
+
+bool ScriptTreeItem::isCollapsed()
+{
+ ASSERT(item);
+ return item->isCollapsed();
+}
+
+bool ScriptTreeItem::isExpanded()
+{
+ ASSERT(item);
+ return item->isExpanded();
+}
+
+void ScriptTreeItem::invalidate()
+{
+ ASSERT(item);
+ item->invalidate();
+}
+
+bool ScriptTreeItem::isSelected()
+{
+ ASSERT(item);
+ return item->isSelected();
+}
+
+bool ScriptTreeItem::isHilited()
+{
+ ASSERT(item);
+ return item->isHilited();
+}
+
+void ScriptTreeItem::setHilited(bool ishilited)
+{
+ ASSERT(item);
+ item->setHilited(ishilited);
+}
+
+int ScriptTreeItem::collapse()
+{
+ ASSERT(item);
+ return item->collapse();
+}
+
+int ScriptTreeItem::expand()
+{
+ ASSERT(item);
+ return item->expand();
+}
+
+#if 0
+// This was never implemented!
+void ScriptTreeItem::setCurrent(bool tf)
+{
+ ASSERT(item);
+ item->setCurrent(tf);
+}
+#endif
+
+TreeWnd *ScriptTreeItem::getTree()
+{
+ ASSERT(item);
+ return item->getTree();
+}
+
+// -----------------------------------------------------------------------
+// Script Controller For The Tree Item
+
+TreeItemScriptController _treeItemController;
+TreeItemScriptController *treeItemController = &_treeItemController;
+
+// -- Functions table -------------------------------------
+function_descriptor_struct TreeItemScriptController::exportedFunction[] = {
+ {L"getNumChildren", 0, (void*)TreeItemScriptController::treeitem_getNumChildren },
+ {L"setLabel", 1, (void*)TreeItemScriptController::treeitem_setLabel },
+ {L"getLabel", 0, (void*)TreeItemScriptController::treeitem_getLabel },
+ {L"ensureVisible", 0, (void*)TreeItemScriptController::treeitem_ensureVisible },
+ {L"getNthChild", 1, (void*)TreeItemScriptController::treeitem_getNthChild },
+ {L"getChild", 0, (void*)TreeItemScriptController::treeitem_getChild },
+ {L"getChildSibling", 1, (void*)TreeItemScriptController::treeitem_getChildSibling },
+ {L"getSibling", 0, (void*)TreeItemScriptController::treeitem_getSibling },
+ {L"getParent", 0, (void*)TreeItemScriptController::treeitem_getParent },
+ {L"editLabel", 0, (void*)TreeItemScriptController::treeitem_editLabel },
+ {L"hasSubItems", 0, (void*)TreeItemScriptController::treeitem_hasSubItems },
+ {L"setSorted", 1, (void*)TreeItemScriptController::treeitem_setSorted },
+ {L"setChildTab", 1, (void*)TreeItemScriptController::treeitem_setChildTab },
+ {L"isSorted", 0, (void*)TreeItemScriptController::treeitem_isSorted },
+ {L"isCollapsed", 0, (void*)TreeItemScriptController::treeitem_isCollapsed },
+ {L"isExpanded", 0, (void*)TreeItemScriptController::treeitem_isExpanded },
+ {L"invalidate", 0, (void*)TreeItemScriptController::treeitem_invalidate },
+ {L"isSelected", 0, (void*)TreeItemScriptController::treeitem_isSelected },
+ {L"isHilited", 0, (void*)TreeItemScriptController::treeitem_isHilited },
+ {L"setHilited", 1, (void*)TreeItemScriptController::treeitem_setHilited },
+ {L"collapse", 0, (void*)TreeItemScriptController::treeitem_collapse },
+ {L"expand", 0, (void*)TreeItemScriptController::treeitem_expand },
+ {L"getTree", 0, (void*)TreeItemScriptController::treeitem_getTree },
+
+ {L"onTreeAdd", 0, (void*)TreeItemScriptController::treeitem_onTreeAdd },
+ {L"onTreeRemove", 0, (void*)TreeItemScriptController::treeitem_onTreeRemove },
+ {L"onSelect", 0, (void*)TreeItemScriptController::treeitem_onSelect },
+ {L"onDeselect", 0, (void*)TreeItemScriptController::treeitem_onDeselect },
+ {L"onLeftDoubleClick", 0, (void*)TreeItemScriptController::treeitem_onLeftDoubleClick },
+ {L"onRightDoubleClick", 0, (void*)TreeItemScriptController::treeitem_onRightDoubleClick },
+ {L"onChar", 1, (void*)TreeItemScriptController::treeitem_onChar },
+ {L"onExpand", 0, (void*)TreeItemScriptController::treeitem_onExpand },
+ {L"onCollapse", 0, (void*)TreeItemScriptController::treeitem_onCollapse },
+ {L"onBeginLabelEdit", 0, (void*)TreeItemScriptController::treeitem_onBeginLabelEdit },
+ {L"onEndLabelEdit", 1, (void*)TreeItemScriptController::treeitem_onEndLabelEdit },
+ {L"onContextMenu", 2, (void*)TreeItemScriptController::treeitem_onContextMenu },
+
+ };
+
+StringW TreeItemScriptController::staticStr;
+ScriptTreeMap TreeItemScriptController::g_scriptitems;
+
+ScriptObject *TreeItemScriptController::instantiate()
+{
+ ScriptTreeItem *sp = new ScriptTreeItem;
+ ASSERT(sp != NULL);
+ TreeItem *child_item = new TreeItemScript(L"", sp);
+ ASSERT(child_item != NULL);
+ sp->setItem(child_item);
+ TISC::g_scriptitems.insert({ child_item, sp });
+ // We're not attached to a tree. that's okay!
+ return sp->getScriptObject();
+}
+
+// If the script asks to delete the item, delete the internal item as well.
+// We tell the owning ScriptTree to remove this object.
+void TreeItemScriptController::destroy(ScriptObject *o)
+{
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ ASSERT(sp != NULL);
+ if (!sp->destroyScriptTreeItem())
+ {
+ auto item = sp->getItem();
+ // Ask the owner tree to do it for us, but if not owned, we do it ourselves.
+ if (item)
+ {
+ //TISC::g_scriptitems.delItem(sp->getItem());
+ auto it = TISC::g_scriptitems.find(item);
+ if (TISC::g_scriptitems.end() != it)
+ {
+ TISC::g_scriptitems.erase(it);
+ }
+ }
+ // AND we delete our item, since we're not a part of a tree that will do it for us.
+ delete item;
+ delete sp;
+ }
+}
+
+void *TreeItemScriptController::encapsulate(ScriptObject *o)
+{
+ return NULL; // no encapsulation for guitrees yet
+}
+
+void TreeItemScriptController::deencapsulate(void *o)
+{}
+
+int TreeItemScriptController::getNumFunctions()
+{
+ return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
+}
+
+const function_descriptor_struct *TreeItemScriptController::getExportedFunctions()
+{
+ return exportedFunction;
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_getNumChildren(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->getNumChildren();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_setLabel(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*String*/ scriptVar label)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ StringW _label = GET_SCRIPT_STRING(label);
+ if (sp != NULL)
+ {
+ sp->setLabel(_label);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*String*/ scriptVar TreeItemScriptController::treeitem_getLabel(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ if (sp != NULL)
+ {
+ staticStr = sp->getLabel();
+ }
+ return MAKE_SCRIPT_STRING(staticStr);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_ensureVisible(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ if (sp != NULL)
+ {
+ sp->ensureVisible();
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*TreeItem*/ scriptVar TreeItemScriptController::treeitem_getNthChild(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar nth)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int _nth = GET_SCRIPT_INT(nth);
+ TreeItem *a = NULL;
+ if (sp != NULL)
+ {
+ a = sp->getNthChild(_nth);
+ }
+ ScriptTree *tree = sp->getScriptTree();
+ ScriptTreeItem *retval = NULL;
+ if (tree && a)
+ {
+ retval = tree->bindScriptTreeItem(a);
+ }
+ if (retval)
+ {
+ return MAKE_SCRIPT_OBJECT(retval->getScriptObject());
+ }
+ return MAKE_SCRIPT_OBJECT(NULL); // Return NULL
+}
+
+/*TreeItem*/ scriptVar TreeItemScriptController::treeitem_getChild(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ TreeItem *a = NULL;
+ if (sp != NULL)
+ {
+ a = sp->getChild();
+ }
+ ScriptTree *tree = sp->getScriptTree();
+ ScriptTreeItem *retval = NULL;
+ if (tree && a)
+ {
+ retval = tree->bindScriptTreeItem(a);
+ }
+ if (retval)
+ {
+ return MAKE_SCRIPT_OBJECT(retval->getScriptObject());
+ }
+ return MAKE_SCRIPT_OBJECT(NULL); // Return NULL
+}
+
+/*TreeItem*/ scriptVar TreeItemScriptController::treeitem_getChildSibling(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*TreeItem*/ scriptVar _item)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ TreeItem *__item = NULL;
+ ScriptObject *io = GET_SCRIPT_OBJECT(_item);
+ if (io)
+ {
+ ScriptTreeItem *sio = static_cast<ScriptTreeItem *>(io->vcpu_getInterface(treeitemGuid));
+ if (sio)
+ {
+ __item = sio->getItem();
+ }
+ }
+ TreeItem *a = NULL;
+ if (sp != NULL)
+ {
+ a = sp->getChildSibling(__item);
+ }
+ ScriptTree *tree = sp->getScriptTree();
+ ScriptTreeItem *retval = NULL;
+ if (tree && a)
+ {
+ retval = tree->bindScriptTreeItem(a);
+ }
+ if (retval)
+ {
+ return MAKE_SCRIPT_OBJECT(retval->getScriptObject());
+ }
+ return MAKE_SCRIPT_OBJECT(NULL); // Return NULL
+}
+
+/*TreeItem*/ scriptVar TreeItemScriptController::treeitem_getSibling(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ TreeItem *a = NULL;
+ if (sp != NULL)
+ {
+ a = sp->getSibling();
+ }
+ ScriptTree *tree = sp->getScriptTree();
+ ScriptTreeItem *retval = NULL;
+ if (tree && a)
+ {
+ retval = tree->bindScriptTreeItem(a);
+ }
+ if (retval)
+ {
+ return MAKE_SCRIPT_OBJECT(retval->getScriptObject());
+ }
+ return MAKE_SCRIPT_OBJECT(NULL); // Return NULL
+}
+
+/*TreeItem*/ scriptVar TreeItemScriptController::treeitem_getParent(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ TreeItem *a = NULL;
+ if (sp != NULL)
+ {
+ a = sp->getParent();
+ }
+ ScriptTree *tree = sp->getScriptTree();
+ ScriptTreeItem *retval = NULL;
+ if (tree && a)
+ {
+ retval = tree->bindScriptTreeItem(a);
+ }
+ if (retval)
+ {
+ return MAKE_SCRIPT_OBJECT(retval->getScriptObject());
+ }
+ return MAKE_SCRIPT_OBJECT(NULL); // Return NULL
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_editLabel(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ if (sp != NULL)
+ {
+ sp->editLabel();
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_hasSubItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->hasSubItems();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_setSorted(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar issorted)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int _issorted = GET_SCRIPT_INT(issorted);
+ if (sp != NULL)
+ {
+ sp->setSorted(_issorted);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_setChildTab(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar haschildtab)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int _haschildtab = GET_SCRIPT_INT(haschildtab);
+ if (sp != NULL)
+ {
+ sp->setChildTab(_haschildtab);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_isSorted(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->isSorted();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_isCollapsed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->isCollapsed();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_isExpanded(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->isExpanded();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_invalidate(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ if (sp != NULL)
+ {
+ sp->invalidate();
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_isSelected(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->isSelected();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_isHilited(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->isHilited();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_setHilited(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar ishilited)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int _ishilited = GET_SCRIPT_INT(ishilited);
+ if (sp != NULL)
+ {
+ sp->setHilited(!!_ishilited);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_collapse(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->collapse();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_expand(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int a = 0;
+ if (sp != NULL)
+ {
+ a = sp->expand();
+ }
+ return MAKE_SCRIPT_INT(a);
+}
+
+#if 0
+// This was never implemented!
+/*void*/ scriptVar TreeItemScriptController::treeitem_setCurrent(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar tf)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ int _tf = GET_SCRIPT_INT(tf);
+ if (sp != NULL)
+ {
+ sp->setCurrent(_tf);
+ }
+ RETURN_SCRIPT_VOID;
+}
+#endif
+
+/*GuiTree*/ scriptVar TreeItemScriptController::treeitem_getTree(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ ScriptTreeItem *sp = static_cast<ScriptTreeItem *>(o->vcpu_getInterface(treeitemGuid));
+ ScriptTree *a = NULL;
+ ScriptObject *retval = NULL;
+ if (sp != NULL)
+ {
+ a = sp->getScriptTree();
+ }
+ if (a)
+ {
+ retval = a->getScriptObject();
+ }
+ return MAKE_SCRIPT_OBJECT(retval);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_onTreeAdd(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_onTreeRemove(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_onSelect(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_onDeselect(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_onLeftDoubleClick(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_onRightDoubleClick(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_onChar(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar _key)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, _key);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, _key);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_onExpand(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*void*/ scriptVar TreeItemScriptController::treeitem_onCollapse(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_onBeginLabelEdit(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS0(o, guiTreeController);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT0(o);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_onEndLabelEdit(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*String*/ scriptVar _newlabel)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS1(o, guiTreeController, _newlabel);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT1(o, _newlabel);
+}
+
+/*int*/ scriptVar TreeItemScriptController::treeitem_onContextMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, /*int*/ scriptVar _x, /*int*/ scriptVar _y)
+{
+ SCRIPT_FUNCTION_INIT
+ PROCESS_HOOKS2(o, guiTreeController, _x, _y);
+ SCRIPT_FUNCTION_CHECKABORTEVENT;
+ SCRIPT_EXEC_EVENT2(o, _x, _y);
+}