class App : public TopWindow { public: typedef App CLASSNAME; App(); private: struct TreeEdit : public EditString { Callback WhenLostFocus; TreeEdit() {} virtual void LostFocus() { WhenLostFocus(); } }; bool isedit; int nodeid; TreeCtrl::Node editnode, node; TreeEdit edit; TreeCtrl tree; void EditBranch(); void CloseEdit(); };
App::App() : isedit(false), nodeid(-1) { Add(tree.SizePos()); /* ... Populate TreeCtrl here ... */ tree.WhenLeftClick = THISBACK(EditBranch); editnode.SetCtrl(edit); edit.WhenEnter = THISBACK(CloseEdit); edit.WhenLostFocus = THISBACK(CloseEdit); } void App::EditBranch() { if(isedit) { CloseEdit(); return; } if(nodeid != tree.GetCursor()) { nodeid = tree.GetCursor(); return; } isedit = true; node = tree.GetNode(nodeid); editnode.ctrl->SetData(node.value); editnode.image = node.image; groups.SetNode(nodeid, editnode); editnode.ctrl->Show(); } void App::CloseEdit() { node.value = editnode.ctrl->GetData(); tree.SetNode(nodeid, node); tree.SelectOne(nodeid); editnode.ctrl->Hide(); isedit = false; }
Report message to a moderator