void NBEditor::load_ui() { IGUIStaticText *sidebar = state->menu->sidebar; if (!sidebar) { return; } IGUIEnvironment *guienv = state->device->getGUIEnvironment(); Node *node = state->project->GetCurrentNode(); if (!node) { sidebar->getElementFromId(ENB_GUI_MAIN_MSG)->setVisible(true); sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX)->setVisible(false); sidebar->getElementFromId(ENB_GUI_PROP)->setVisible(false); } else { IGUIListBox *lb = (IGUIListBox *) sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX); sidebar->getElementFromId(ENB_GUI_MAIN_MSG)->setVisible(false); sidebar->getElementFromId(ENB_GUI_PROP)->setVisible(false); if (lb) { lb->clear(); lb->setVisible(true); std::vector<NodeBox*> & boxes = node->boxes; for (std::vector<NodeBox*>::const_iterator it = boxes.begin(); it != boxes.end(); ++it) { lb->addItem(narrow_to_wide((*it)->name).c_str()); } lb->setSelected(lb->getListItem(node->GetId())); } fillProperties(); } }
GUIAnchorEffector::GUIAnchorEffector(EPosAnchor anch,const math::vector2d& offset): m_anchor(anch), Anchor(this,&GUIAnchorEffector::setAnchor,&GUIAnchorEffector::getAnchor,mT("EPosAnchor"),mT("Anchor")), Offset(this,&GUIAnchorEffector::setOffset,&GUIAnchorEffector::getOffset,EPT_VECTOR2Df,mT("Offset")) { m_offset=offset; fillProperties(); }
GUITranslateEffector::GUITranslateEffector(math::vector2d startP,math::vector2d endP,float speed): StartPos(this,&GUITranslateEffector::setStartPos,&GUITranslateEffector::getStartPos,EPT_VECTOR2Df,mT("StartPos")), EndPos(this,&GUITranslateEffector::setEndPos,&GUITranslateEffector::getEndPos,EPT_VECTOR2Df,mT("EndPos")), Speed(this,&GUITranslateEffector::setSpeed,&GUITranslateEffector::getSpeed,EPT_FLOAT,mT("Speed")), AutoReverse(this,&GUITranslateEffector::setAutoReverse,&GUITranslateEffector::getAutoReverse,EPT_BOOLEAN,mT("AutoReverse")) { m_startPos=startP; m_endPos=endP; m_t=0; m_speed=speed; m_dirSgn=1; m_autoReverse=1; fillProperties(); }
bool NBEditor::OnEvent(const irr::SEvent &event) { if (event.EventType == EET_GUI_EVENT) { if (event.GUIEvent.EventType == EGET_BUTTON_CLICKED) { switch (event.GUIEvent.Caller->getID()) { case GUI_PROJ_NEW_BOX: { Node* node = state->project->GetCurrentNode(); if (node) { node->addNodeBox(); load_ui(); } break; } case GUI_PROJ_DELETE_BOX: { Node* node = state->project->GetCurrentNode(); IGUIListBox* lb = (IGUIListBox*) state->menu->sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX); if (node && node->GetNodeBox(lb->getSelected())){ node->deleteNodebox(lb->getSelected()); load_ui(); } break; } case ENB_GUI_PROP_REVERT: fillProperties(); break; case ENB_GUI_PROP_UPDATE: updateProperties(); break; } } else if (event.GUIEvent.EventType == EGET_LISTBOX_CHANGED) { Node* node = state->project->GetCurrentNode(); IGUIListBox* lb = (IGUIListBox*) state->menu->sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX); if (node && lb && node->GetNodeBox(lb->getSelected())){ node->select(lb->getSelected()); } load_ui(); } } else if (event.EventType == EET_KEY_INPUT_EVENT && !event.KeyInput.PressedDown) { if (event.KeyInput.Key == KEY_RETURN) { updateProperties(); return false; } if ( state->device->getGUIEnvironment()->getFocus() && state->device->getGUIEnvironment()->getFocus()->getType() == EGUIET_EDIT_BOX) { return false; } if (event.KeyInput.Key == KEY_INSERT) { Node *node = state->project->GetCurrentNode(); if (node) { node->addNodeBox(); load_ui(); } } else if (event.KeyInput.Key == KEY_DELETE) { Node* node = state->project->GetCurrentNode(); IGUIListBox* lb = (IGUIListBox*) state->menu->sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX); if (node && node->GetNodeBox(lb->getSelected())) { node->deleteNodebox(lb->getSelected()); } load_ui(); } else if (event.KeyInput.Key == KEY_DOWN) { IGUIListBox* lb = (IGUIListBox*) state->menu->sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX); Node* node = state->project->GetCurrentNode(); if (node) { int idx = node->GetId(); if (lb && idx < node->boxes.size() - 1){ node->select(idx + 1); } } load_ui(); } else if (event.KeyInput.Key == KEY_UP) { IGUIListBox* lb = (IGUIListBox*) state->menu->sidebar->getElementFromId(ENB_GUI_MAIN_LISTBOX); Node* node = state->project->GetCurrentNode(); if (node) { int idx = node->GetId(); if (lb && idx > 0) { node->select(idx - 1); } } load_ui(); } } return false; }