void ResourceWindow::treeCallBack( Fl_Widget* widget, void* data ) { //LOG("Tree call back...."); Fl_Tree *tree = (Fl_Tree*)widget; Fl_Tree_Item *item = (Fl_Tree_Item*)tree->callback_item(); // get selected item ResourceWindow* window = (ResourceWindow*)data; if (tree->callback_reason() == FL_TREE_REASON_SELECTED) { std::stringstream strstr; strstr << window->getNameFromItem(item); long specialNameIndex = (long) item->user_data(); if (specialNameIndex == 0) // assume any item with a special name doesn't need an additional label strstr << "/" << item->label(); SBSelectionManager::getSelectionManager()->select(strstr.str()); } if (tree->callback_reason() == FL_TREE_REASON_DESELECTED) { std::stringstream strstr; strstr << window->getNameFromItem(item) << "/" << item->label(); //SBSelectionManager::getSelectionManager()->select(""); } }
void frmPrjTree::tree_event(Fl_Widget* w, void* v) { Fl_Tree *tree = static_cast<Fl_Tree*>(w); Fl_Tree_Item *item = tree->callback_item(); // the item changed (can be NULL if more than one item was changed!) switch ( tree->callback_reason() ) { // reason callback was invoked case FL_TREE_REASON_OPENED: printf("..item was opened..\n"); break; case FL_TREE_REASON_CLOSED: printf("..item was closed..\n"); break; case FL_TREE_REASON_SELECTED: frmmain->eventball.lastev=Q_DEL; frmmain->ehq_scene.top().Handle(&frmmain->eventball); frmmain->ehq_scene.top().clear(); printf("..item was selected..\n"); if(std::string(item->label()) == "View") frmviewctrl->select(true); else if(std::string(item->label()) == "Surface") frmsurfctrl->select(true); else if(std::string(item->label()) == "SFS Builder"){ // select ui panel frmimageplane->select(true); // add event handler to the scene queue frmmain->ehq_scene.top().ins_top(&frmmain->dv->imageplane->eh); frmmain->eventball.lastev=Q_ADD; frmmain->dv->imageplane->eh.Handle(&frmmain->eventball); } else if(std::string(item->label()) == "Matting"){ frmmatting->select(true); frmmain->ehq_scene.top().ins_top(&frmmain->dv->matting->eh); frmmain->eventball.lastev=Q_ADD; frmmain->dv->matting->eh.Handle(&frmmain->eventball); } break; //case FL_TREE_REASON_RESELECTED: // printf("..item was reselected (double-clicked, etc)..\n"); // break; case FL_TREE_REASON_DESELECTED: if(std::string(item->label()) == "View") frmviewctrl->select(false); else if(std::string(item->label()) == "Surface") frmsurfctrl->select(false); else if(std::string(item->label()) == "SFS Builder") frmimageplane->select(false); else if(std::string(item->label()) == "Matting") frmmatting->select(false); printf("..item was deselected..\n"); break; } }