ConsoleWidget::ConsoleWidget(MainWindow *main) : QPlainTextEdit((QWidget *)main) { m_main = main; m_suppress = false; m_histIndex = -1; // a block is a line, so this is the maximum number of lines to buffer setMaximumBlockCount(CW_SCROLLHEIGHT); acceptInput(false); connect(&m_timer, SIGNAL(timeout()), this, SLOT(handleTimer())); }
void MainMenu::update(float deltaTime) { gameObject->setActive(mayUpdate); MainMenuElement::update(); if (!mayUpdate) { return; } maxIndex = MainMenuStructure::Instance().menuObjs.size(); if (InputManager::Instance().keyPressed(sf::Keyboard::Up)) { //std::cout << " up " << std::endl; if (MainMenuStructure::Instance().selectedIndex > 0) { MainMenuStructure::Instance().selectedIndex--; } } else if (InputManager::Instance().keyPressed(sf::Keyboard::Down)) { if (MainMenuStructure::Instance().selectedIndex < maxIndex - 1) { MainMenuStructure::Instance().selectedIndex++; } //std::cout << " down " << std::endl; } for (int i = 0; i < maxIndex; i++) { MainMenuStructure::Instance().menuObjs[i]->setActive(true); } if (MainMenuStructure::Instance().menuObjs.size() > 0) { MainMenuStructure::Instance().menuObjs[MainMenuStructure::Instance().selectedIndex]->setActive(false); p_mmo = MainMenuStructure::Instance().menuObjs[MainMenuStructure::Instance().selectedIndex]; } if (InputManager::Instance().keyPressed(sf::Keyboard::Return)) { if (p_mmo != NULL) { acceptInput(p_mmo); } } }
Connector* FPNode::createInputConnector( Node * startNode ) { if( (!acceptInput()) || !startNode ) return 0l; // FIXME dynamic_cast used Connector *connector = new FlowConnector( dynamic_cast<FPNode*>(startNode), dynamic_cast<FPNode*>(this), p_icnDocument ); addInputConnector(connector); return connector; }
void VideoWidget::mouseReleaseEvent(QMouseEvent *event) { int x, y, width, height; if (m_selection) { x = (m_x0-m_xOffset)/m_scale+.5; y = (m_y0-m_yOffset)/m_scale+.5; width = m_sbWidth/m_scale+.5; height = m_sbHeight/m_scale+.5; // deal with box inversion if (width<0) { x += width; width = -width; } if (height<0) { y += height; height = -height; } emit selection(x, y, width, height); acceptInput(NONE); //qDebug() << x << " " << y << " " << width << " " << height; m_selection = false; } else if (m_inputMode==POINT) { x = (event->x()-m_xOffset)/m_scale+.5; y = (event->y()-m_yOffset)/m_scale+.5; emit selection(x, y, 0, 0); acceptInput(NONE); } QWidget::mouseReleaseEvent(event); }
void GUIMainMenu::deleteWorld(const std::vector<std::string> &paths) { // Delete files bool did = fs::DeletePaths(paths); if(!did){ GUIMessageMenu *menu = new GUIMessageMenu(env, parent, -1, menumgr, wgettext("Failed to delete all world files")); menu->drop(); } // Quit menu to refresh it acceptInput(); m_data->only_refresh = true; quitMenu(); }
bool GUIFileSelectMenu::OnEvent(const SEvent &event) { if (event.EventType == irr::EET_GUI_EVENT) { switch (event.GUIEvent.EventType) { case gui::EGET_ELEMENT_CLOSED: case gui::EGET_FILE_CHOOSE_DIALOG_CANCELLED: m_accepted = false; acceptInput(); return true; case gui::EGET_DIRECTORY_SELECTED: m_accepted = !m_file_select_dialog; acceptInput(); return true; case gui::EGET_FILE_SELECTED: m_accepted = m_file_select_dialog; acceptInput(); return true; default: // ignore this event break; } } return Parent ? Parent->OnEvent(event) : false; }
/** Create main window */ MainWindow::MainWindow() { QVBoxLayout *layout = new QVBoxLayout(this); m_label = new QLabel(this); m_input = new QReadLine(this); layout->addWidget(m_label); layout->addWidget(m_input); setLayout(layout); setWindowTitle(tr("Simple QReadLine Example")); /* we accept input when RETURN or ENTER is pressed */ connect(m_input, SIGNAL(returnPressed()), SLOT(acceptInput())); }
bool GUISettingsMenu::OnEvent(const SEvent& event) { if (event.EventType == EET_KEY_INPUT_EVENT && activeKey >= 0 && event.KeyInput.PressedDown) { KeyPress kp(event.KeyInput); gui::IGUIElement *e = getElementFromId(activeKey); if (e != NULL && e->getType() == gui::EGUIET_BUTTON) { e->setEnabled(true); e->setText(kp.guiName().c_str()); keys[activeKey-GUI_ID_KEYSETTINGS_BASE] = kp; } activeKey = -1; return true; } if (event.EventType == EET_GUI_EVENT) { if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if (!canTakeFocus(event.GUIEvent.Element)) { dstream << "GUIMainMenu: Not allowing focus change." << std::endl; // Returning true disables focus change return true; } } if (event.GUIEvent.EventType==gui::EGET_CHECKBOX_CHANGED) { acceptInput(); m_accepted = false; regenerateGui(m_screensize); } if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) { s32 id = event.GUIEvent.Caller->getID(); if (id >= GUI_ID_KEYSETTINGS_BASE) { resetMenu(); activeKey = id; gui::IGUIElement *e = getElementFromId(id); if (e != NULL && e->getType() == gui::EGUIET_BUTTON) { e->setText(wgettext("press Key")); e->setEnabled(false); return true; } }else{ switch (event.GUIEvent.Caller->getID()) { case GUI_ID_TAB_SETTINGS_CONTROLS: acceptInput(); m_accepted = false; m_data.selected_tab = TAB_SETTINGS_CONTROLS; regenerateGui(m_screensize); return true; case GUI_ID_TAB_SETTINGS_GRAPHICS: acceptInput(); m_accepted = false; m_data.selected_tab = TAB_SETTINGS_GRAPHICS; regenerateGui(m_screensize); return true; case GUI_ID_TAB_SETTINGS_VIDEO: acceptInput(); m_accepted = false; m_data.selected_tab = TAB_SETTINGS_VIDEO; regenerateGui(m_screensize); return true; case GUI_ID_TAB_SETTINGS_SOUND: acceptInput(); m_accepted = false; m_data.selected_tab = TAB_SETTINGS_SOUND; regenerateGui(m_screensize); return true; case GUI_ID_TAB_MAINMENU: //back acceptInput(); save(); quitMenu(); return true; } } } if (event.GUIEvent.EventType == gui::EGET_SCROLL_BAR_CHANGED) { switch (event.GUIEvent.Caller->getID()) { case GUI_ID_VOLUME_SB: gui::IGUIElement *vsb = getElementFromId(GUI_ID_VOLUME_SB); if(vsb != NULL && vsb->getType() == gui::EGUIET_SCROLL_BAR) { m_data.volume = (float)((gui::IGUIScrollBar*)vsb)->getPos(); if (g_sound) g_sound->setListenerGain(m_data.volume/100.0); } return true; } } } return Parent ? Parent->OnEvent(event) : false; }
bool GUIMultiplayerMenu::OnEvent(const SEvent& event) { if (event.EventType==EET_KEY_INPUT_EVENT) { if ( event.KeyInput.PressedDown && ( event.KeyInput.Key == KEY_ESCAPE || event.KeyInput.Key == KEY_RETURN ) ) { acceptInput(); quitMenu(); return true; } } if (event.EventType == EET_GUI_EVENT) { if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if (!canTakeFocus(event.GUIEvent.Element)) { dstream << "GUIMainMenu: Not allowing focus change." << std::endl; // Returning true disables focus change return true; } } if (event.GUIEvent.EventType==gui::EGET_CHECKBOX_CHANGED) { acceptInput(); m_accepted = false; regenerateGui(m_screensize); } if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) { switch (event.GUIEvent.Caller->getID()) { case GUI_ID_START_BUTTON: // Start game acceptInput(); m_accepted = false; m_gamecallback->startGame(); quitMenu(); return true; case GUI_ID_CONNECT_BUTTON: acceptInput(); m_data.selected_tab = TAB_MP_CONNECT; regenerateGui(m_screensize); return true; case GUI_ID_REMFAV_BUTTON: acceptInput(); if (m_data.selected_row > -1) { if (m_data.selected_tab == TAB_MP_LIST) { ServerInfo &info = m_data.servers.at(m_data.selected_row); if (info.is_favourite) { info.is_favourite = false; for ( std::vector<ServerInfo>::iterator i = m_data.favourites.begin(); i != m_data.favourites.end(); i++ ) { if ( i->name == info.name && i->addr == info.addr && i->mode == info.mode ) { m_data.favourites.erase(i); break; } } saveFavourites(); } }else if (m_data.selected_tab == TAB_MP_FAVOURITES) { ServerInfo &info = m_data.favourites.at(m_data.selected_row); if (info.is_favourite) { m_data.favourites.erase(m_data.favourites.begin()+m_data.selected_row); for ( std::vector<ServerInfo>::iterator i = m_data.servers.begin(); i != m_data.servers.end(); i++ ) { if ( i->name == info.name && i->addr == info.addr && i->mode == info.mode ) { i->is_favourite = false; break; } } saveFavourites(); m_data.selected_row = -1; } } } regenerateGui(m_screensize); return true; case GUI_ID_ADDFAV_BUTTON: acceptInput(); if (m_data.selected_tab == TAB_MP_LIST && m_data.selected_row > -1) { ServerInfo &info = m_data.servers.at(m_data.selected_row); if (info.name != L"" && !info.is_favourite) { info.is_favourite = true; m_data.favourites.push_back(info); saveFavourites(); } }else if (m_data.selected_tab == TAB_MP_CUSTOM) { ServerInfo info; info.name = m_data.mmdata->address+L":"+m_data.mmdata->port; info.addr = m_data.mmdata->address+L":"+m_data.mmdata->port; info.mode = L"custom"; info.is_favourite = true; m_data.servers.push_back(info); m_data.favourites.push_back(info); m_data.selected_tab = TAB_MP_FAVOURITES; m_data.selected_row = m_data.favourites.size()-1; } regenerateGui(m_screensize); return true; case GUI_ID_REFRESH_BUTTON: acceptInput(); fetchServers(); if ( ( m_data.selected_tab == TAB_MP_LIST && m_data.selected_row >= (int)m_data.servers.size() ) || ( m_data.selected_tab == TAB_MP_FAVOURITES && m_data.selected_row >= (int)m_data.favourites.size() ) ) { m_data.selected_row = -1; } regenerateGui(m_screensize); return true; case GUI_ID_TAB_MP_LIST: acceptInput(); m_accepted = false; if (m_data.selected_tab != TAB_MP_LIST) { m_data.selected_tab = TAB_MP_LIST; m_data.selected_row = -1; } regenerateGui(m_screensize); return true; case GUI_ID_TAB_MP_FAVOURITES: acceptInput(); m_accepted = false; if (m_data.selected_tab != TAB_MP_FAVOURITES) { m_data.selected_tab = TAB_MP_FAVOURITES; m_data.selected_row = -1; } regenerateGui(m_screensize); return true; case GUI_ID_TAB_MP_CUSTOM: acceptInput(); m_accepted = false; m_data.selected_tab = TAB_MP_CUSTOM; regenerateGui(m_screensize); return true; case GUI_ID_TAB_MP_MAINMENU: //back acceptInput(); quitMenu(); return true; } } if (event.GUIEvent.EventType == gui::EGET_EDITBOX_ENTER) { switch (event.GUIEvent.Caller->getID()) { case GUI_ID_ADDRESS_INPUT: case GUI_ID_PORT_INPUT: case GUI_ID_NAME_INPUT: case GUI_ID_PW_INPUT: m_gamecallback->startGame(); acceptInput(); quitMenu(); return true; } } if ( event.GUIEvent.EventType == gui::EGET_LISTBOX_CHANGED || event.GUIEvent.EventType == gui::EGET_LISTBOX_SELECTED_AGAIN ) { if (event.GUIEvent.Caller->getID() == GUI_ID_SERVER_LIST) { acceptInput(); regenerateGui(m_screensize); return true; } } } return Parent ? Parent->OnEvent(event) : false; }
bool GUIMainMenu::OnEvent(const SEvent& event) { if(event.EventType==EET_KEY_INPUT_EVENT) { if(event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown) { m_gamecallback->exitToOS(); quitMenu(); return true; } if(event.KeyInput.Key==KEY_RETURN && event.KeyInput.PressedDown) { acceptInput(); quitMenu(); return true; } } if(event.EventType==EET_GUI_EVENT) { if(event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if(!canTakeFocus(event.GUIEvent.Element)) { dstream<<"GUIMainMenu: Not allowing focus change." <<std::endl; // Returning true disables focus change return true; } } if(event.GUIEvent.EventType==gui::EGET_BUTTON_CLICKED) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_JOIN_GAME_BUTTON: // Start game acceptInput(); quitMenu(); return true; case GUI_ID_CHANGE_KEYS_BUTTON: { GUIKeyChangeMenu *kmenu = new GUIKeyChangeMenu(env, parent, -1,menumgr); kmenu->drop(); return true; } case GUI_ID_DELETE_MAP_BUTTON: // Delete map // Don't accept input data, just set deletion request m_data->delete_map = true; m_accepted = true; quitMenu(); return true; } } if(event.GUIEvent.EventType==gui::EGET_EDITBOX_ENTER) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_ADDRESS_INPUT: case GUI_ID_PORT_INPUT: case GUI_ID_NAME_INPUT: case 264: acceptInput(); quitMenu(); return true; } } } return Parent ? Parent->OnEvent(event) : false; }
bool GUIMainMenu::OnEvent(const SEvent& event) { if(event.EventType==EET_KEY_INPUT_EVENT) { if(event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown) { m_gamecallback->exitToOS(); quitMenu(); return true; } if(event.KeyInput.Key==KEY_RETURN && event.KeyInput.PressedDown) { acceptInput(); quitMenu(); return true; } } if(event.EventType==EET_GUI_EVENT) { if(event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if(!canTakeFocus(event.GUIEvent.Element)) { dstream<<"GUIMainMenu: Not allowing focus change." <<std::endl; // Returning true disables focus change return true; } } if(event.GUIEvent.EventType==gui::EGET_TAB_CHANGED) { if(!m_is_regenerating) regenerateGui(m_screensize_old); return true; } if(event.GUIEvent.EventType==gui::EGET_BUTTON_CLICKED) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_JOIN_GAME_BUTTON: { MainMenuData cur; readInput(&cur); if(cur.address == L"" && getTab() == TAB_MULTIPLAYER){ (new GUIMessageMenu(env, parent, -1, menumgr, wgettext("Address required.")) )->drop(); return true; } acceptInput(); quitMenu(); return true; } case GUI_ID_CHANGE_KEYS_BUTTON: { GUIKeyChangeMenu *kmenu = new GUIKeyChangeMenu(env, parent, -1,menumgr); kmenu->drop(); return true; } case GUI_ID_DELETE_WORLD_BUTTON: { MainMenuData cur; readInput(&cur); if(cur.selected_world == -1){ (new GUIMessageMenu(env, parent, -1, menumgr, wgettext("Cannot delete world: Nothing selected")) )->drop(); } else { WorldSpec spec = m_data->worlds[cur.selected_world]; ConfirmDestDeleteWorld *dest = new ConfirmDestDeleteWorld(spec, this); (new GUIConfirmMenu(env, parent, -1, menumgr, dest, (std::wstring(wgettext("Delete world ")) +L"\""+narrow_to_wide(spec.name)+L"\"?").c_str() ))->drop(); } return true; } case GUI_ID_CREATE_WORLD_BUTTON: { std::vector<SubgameSpec> games = getAvailableGames(); if(games.size() == 0){ GUIMessageMenu *menu = new GUIMessageMenu(env, parent, -1, menumgr, wgettext("Cannot create world: No games found")); menu->drop(); } else { CreateWorldDest *dest = new CreateWorldDestMainMenu(this); GUICreateWorld *menu = new GUICreateWorld(env, parent, -1, menumgr, dest, games); menu->drop(); } return true; } case GUI_ID_CONFIGURE_WORLD_BUTTON: { GUIMessageMenu *menu = new GUIMessageMenu(env, parent, -1, menumgr, wgettext("Nothing here")); menu->drop(); return true; } } } if(event.GUIEvent.EventType==gui::EGET_EDITBOX_ENTER) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_ADDRESS_INPUT: case GUI_ID_PORT_INPUT: case GUI_ID_NAME_INPUT: case 264: acceptInput(); quitMenu(); return true; } } if(event.GUIEvent.EventType==gui::EGET_LISTBOX_SELECTED_AGAIN) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_WORLD_LISTBOX: acceptInput(); if(getTab() != TAB_SINGLEPLAYER) m_data->address = L""; // Force local game quitMenu(); return true; } } } return Parent ? Parent->OnEvent(event) : false; }
bool GUIFormSpecMenu::OnEvent(const SEvent& event) { if(event.EventType==EET_KEY_INPUT_EVENT) { KeyPress kp(event.KeyInput); if (event.KeyInput.PressedDown && (kp == EscapeKey || kp == getKeySetting("keymap_inventory"))) { quitMenu(); return true; } if(event.KeyInput.Key==KEY_RETURN && event.KeyInput.PressedDown) { acceptInput(); quitMenu(); return true; } } if(event.EventType==EET_MOUSE_INPUT_EVENT && event.MouseInput.Event == EMIE_MOUSE_MOVED) { // Mouse moved m_pointer = v2s32(event.MouseInput.X, event.MouseInput.Y); } if(event.EventType==EET_MOUSE_INPUT_EVENT && event.MouseInput.Event != EMIE_MOUSE_MOVED) { // Mouse event other than movement v2s32 p(event.MouseInput.X, event.MouseInput.Y); m_pointer = p; // Get selected item and hovered/clicked item (s) updateSelectedItem(); ItemSpec s = getItemAtPos(p); Inventory *inv_selected = NULL; Inventory *inv_s = NULL; if(m_selected_item) { inv_selected = m_invmgr->getInventory(m_selected_item->inventoryloc); assert(inv_selected); assert(inv_selected->getList(m_selected_item->listname) != NULL); } u32 s_count = 0; if(s.isValid()) do{ // breakable inv_s = m_invmgr->getInventory(s.inventoryloc); if(!inv_s){ errorstream<<"InventoryMenu: The selected inventory location " <<"\""<<s.inventoryloc.dump()<<"\" doesn't exist" <<std::endl; s.i = -1; // make it invalid again break; } InventoryList *list = inv_s->getList(s.listname); if(list == NULL){ verbosestream<<"InventoryMenu: The selected inventory list \"" <<s.listname<<"\" does not exist"<<std::endl; s.i = -1; // make it invalid again break; } if((u32)s.i >= list->getSize()){ infostream<<"InventoryMenu: The selected inventory list \"" <<s.listname<<"\" is too small (i="<<s.i<<", size=" <<list->getSize()<<")"<<std::endl; s.i = -1; // make it invalid again break; } s_count = list->getItem(s.i).count; }while(0); bool identical = (m_selected_item != NULL) && s.isValid() && (inv_selected == inv_s) && (m_selected_item->listname == s.listname) && (m_selected_item->i == s.i); // buttons: 0 = left, 1 = right, 2 = middle // up/down: 0 = down (press), 1 = up (release), 2 = unknown event int button = 0; int updown = 2; if(event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) { button = 0; updown = 0; } else if(event.MouseInput.Event == EMIE_RMOUSE_PRESSED_DOWN) { button = 1; updown = 0; } else if(event.MouseInput.Event == EMIE_MMOUSE_PRESSED_DOWN) { button = 2; updown = 0; } else if(event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP) { button = 0; updown = 1; } else if(event.MouseInput.Event == EMIE_RMOUSE_LEFT_UP) { button = 1; updown = 1; } else if(event.MouseInput.Event == EMIE_MMOUSE_LEFT_UP) { button = 2; updown = 1; } // Set this number to a positive value to generate a move action // from m_selected_item to s. u32 move_amount = 0; // Set this number to a positive value to generate a drop action // from m_selected_item. u32 drop_amount = 0; // Set this number to a positive value to generate a craft action at s. u32 craft_amount = 0; if(updown == 0) { // Some mouse button has been pressed //infostream<<"Mouse button "<<button<<" pressed at p=(" // <<p.X<<","<<p.Y<<")"<<std::endl; m_selected_dragging = false; if(s.isValid() && s.listname == "craftpreview") { // Craft preview has been clicked: craft craft_amount = (button == 2 ? 10 : 1); } else if(m_selected_item == NULL) { if(s_count != 0) { // Non-empty stack has been clicked: select it m_selected_item = new ItemSpec(s); if(button == 1) // right m_selected_amount = (s_count + 1) / 2; else if(button == 2) // middle m_selected_amount = MYMIN(s_count, 10); else // left m_selected_amount = s_count; m_selected_dragging = true; } } else // m_selected_item != NULL { assert(m_selected_amount >= 1); if(s.isValid()) { // Clicked a slot: move if(button == 1) // right move_amount = 1; else if(button == 2) // middle move_amount = MYMIN(m_selected_amount, 10); else // left move_amount = m_selected_amount; if(identical) { if(move_amount >= m_selected_amount) m_selected_amount = 0; else m_selected_amount -= move_amount; move_amount = 0; } } else if(getAbsoluteClippingRect().isPointInside(m_pointer)) { // Clicked somewhere else: deselect m_selected_amount = 0; } else { // Clicked outside of the window: drop if(button == 1) // right drop_amount = 1; else if(button == 2) // middle drop_amount = MYMIN(m_selected_amount, 10); else // left drop_amount = m_selected_amount; } } } else if(updown == 1) { // Some mouse button has been released //infostream<<"Mouse button "<<button<<" released at p=(" // <<p.X<<","<<p.Y<<")"<<std::endl; if(m_selected_item != NULL && m_selected_dragging && s.isValid()) { if(!identical) { // Dragged to different slot: move all selected move_amount = m_selected_amount; } } else if(m_selected_item != NULL && m_selected_dragging && !(getAbsoluteClippingRect().isPointInside(m_pointer))) { // Dragged outside of window: drop all selected drop_amount = m_selected_amount; } m_selected_dragging = false; } // Possibly send inventory action to server if(move_amount > 0) { // Send IACTION_MOVE assert(m_selected_item && m_selected_item->isValid()); assert(s.isValid()); assert(inv_selected && inv_s); InventoryList *list_from = inv_selected->getList(m_selected_item->listname); InventoryList *list_to = inv_s->getList(s.listname); assert(list_from && list_to); ItemStack stack_from = list_from->getItem(m_selected_item->i); ItemStack stack_to = list_to->getItem(s.i); // Check how many items can be moved move_amount = stack_from.count = MYMIN(move_amount, stack_from.count); ItemStack leftover = stack_to.addItem(stack_from, m_gamedef->idef()); // If source stack cannot be added to destination stack at all, // they are swapped if(leftover.count == stack_from.count && leftover.name == stack_from.name) { m_selected_amount = stack_to.count; // In case the server doesn't directly swap them but instead // moves stack_to somewhere else, set this m_selected_content_guess = stack_to; m_selected_content_guess_inventory = s.inventoryloc; } // Source stack goes fully into destination stack else if(leftover.empty()) { m_selected_amount -= move_amount; m_selected_content_guess = ItemStack(); // Clear } // Source stack goes partly into destination stack else { move_amount -= leftover.count; m_selected_amount -= move_amount; m_selected_content_guess = ItemStack(); // Clear } infostream<<"Handing IACTION_MOVE to manager"<<std::endl; IMoveAction *a = new IMoveAction(); a->count = move_amount; a->from_inv = m_selected_item->inventoryloc; a->from_list = m_selected_item->listname; a->from_i = m_selected_item->i; a->to_inv = s.inventoryloc; a->to_list = s.listname; a->to_i = s.i; m_invmgr->inventoryAction(a); } else if(drop_amount > 0) { m_selected_content_guess = ItemStack(); // Clear // Send IACTION_DROP assert(m_selected_item && m_selected_item->isValid()); assert(inv_selected); InventoryList *list_from = inv_selected->getList(m_selected_item->listname); assert(list_from); ItemStack stack_from = list_from->getItem(m_selected_item->i); // Check how many items can be dropped drop_amount = stack_from.count = MYMIN(drop_amount, stack_from.count); assert(drop_amount > 0 && drop_amount <= m_selected_amount); m_selected_amount -= drop_amount; infostream<<"Handing IACTION_DROP to manager"<<std::endl; IDropAction *a = new IDropAction(); a->count = drop_amount; a->from_inv = m_selected_item->inventoryloc; a->from_list = m_selected_item->listname; a->from_i = m_selected_item->i; m_invmgr->inventoryAction(a); } else if(craft_amount > 0) { m_selected_content_guess = ItemStack(); // Clear // Send IACTION_CRAFT assert(s.isValid()); assert(inv_s); infostream<<"Handing IACTION_CRAFT to manager"<<std::endl; ICraftAction *a = new ICraftAction(); a->count = craft_amount; a->craft_inv = s.inventoryloc; m_invmgr->inventoryAction(a); } // If m_selected_amount has been decreased to zero, deselect if(m_selected_amount == 0) { delete m_selected_item; m_selected_item = NULL; m_selected_amount = 0; m_selected_dragging = false; m_selected_content_guess = ItemStack(); } } if(event.EventType==EET_GUI_EVENT) { if(event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if(!canTakeFocus(event.GUIEvent.Element)) { infostream<<"GUIFormSpecMenu: Not allowing focus change." <<std::endl; // Returning true disables focus change return true; } } if(event.GUIEvent.EventType==gui::EGET_BUTTON_CLICKED) { switch(event.GUIEvent.Caller->getID()) { case 257: acceptInput(); quitMenu(); // quitMenu deallocates menu return true; } // find the element that was clicked for(u32 i=0; i<m_fields.size(); i++) { FieldSpec &s = m_fields[i]; // if its a button, set the send field so // lua knows which button was pressed if (s.is_button && s.fid == event.GUIEvent.Caller->getID()) { s.send = true; acceptInput(); if(s.is_exit){ quitMenu(); return true; }else{ s.send = false; // Restore focus to the full form Environment->setFocus(this); return true; } } } } if(event.GUIEvent.EventType==gui::EGET_EDITBOX_ENTER) { if(event.GUIEvent.Caller->getID() > 257) { acceptInput(); quitMenu(); // quitMenu deallocates menu return true; } } } return Parent ? Parent->OnEvent(event) : false; }
bool GUIKeyChangeMenu::OnEvent(const SEvent& event) { if (event.EventType == EET_KEY_INPUT_EVENT && activeKey >= 0 && event.KeyInput.PressedDown) { bool prefer_character = shift_down; KeyPress kp(event.KeyInput, prefer_character); bool shift_went_down = false; if(!shift_down && (event.KeyInput.Key == irr::KEY_SHIFT || event.KeyInput.Key == irr::KEY_LSHIFT || event.KeyInput.Key == irr::KEY_RSHIFT)) shift_went_down = true; // Remove Key already in use message if(this->key_used_text) { this->key_used_text->remove(); this->key_used_text = NULL; } // Display Key already in use message if (std::find(this->key_used.begin(), this->key_used.end(), kp) != this->key_used.end()) { core::rect < s32 > rect(0, 0, 600, 40); rect += v2s32(0, 0) + v2s32(25, 30); const wchar_t *text = wgettext("Key already in use"); this->key_used_text = Environment->addStaticText(text, rect, false, true, this, -1); delete[] text; //infostream << "Key already in use" << std::endl; } // But go on { key_setting *k = NULL; for(size_t i = 0; i < key_settings.size(); i++) { if(key_settings.at(i)->id == activeKey) { k = key_settings.at(i); break; } } FATAL_ERROR_IF(k == NULL, "Key setting not found"); k->key = kp; const wchar_t *text = wgettext(k->key.name()); k->button->setText(text); delete[] text; this->key_used.push_back(kp); // Allow characters made with shift if(shift_went_down){ shift_down = true; return false; }else{ activeKey = -1; return true; } } } if (event.EventType == EET_GUI_EVENT) { if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if (!canTakeFocus(event.GUIEvent.Element)) { dstream << "GUIMainMenu: Not allowing focus change." << std::endl; // Returning true disables focus change return true; } } if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) { switch (event.GUIEvent.Caller->getID()) { case GUI_ID_BACK_BUTTON: //back acceptInput(); quitMenu(); return true; case GUI_ID_ABORT_BUTTON: //abort quitMenu(); return true; default: key_setting *k = NULL; for(size_t i = 0; i < key_settings.size(); i++) { if(key_settings.at(i)->id == event.GUIEvent.Caller->getID()) { k = key_settings.at(i); break; } } FATAL_ERROR_IF(k == NULL, "Key setting not found"); resetMenu(); shift_down = false; activeKey = event.GUIEvent.Caller->getID(); const wchar_t *text = wgettext("press key"); k->button->setText(text); delete[] text; this->key_used.erase(std::remove(this->key_used.begin(), this->key_used.end(), k->key), this->key_used.end()); break; } Environment->setFocus(this); } } return Parent ? Parent->OnEvent(event) : false; }
bool GUICharDefMenu::OnEvent(const SEvent& event) { if (event.EventType==EET_KEY_INPUT_EVENT) { if (event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown) { acceptInput(); quitMenu(); return true; } } if (event.EventType==EET_GUI_EVENT) { if (event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if (!canTakeFocus(event.GUIEvent.Element)) { dstream<<"GUIMainMenu: Not allowing focus change."<<std::endl; // Returning true disables focus change return true; } } if (event.GUIEvent.EventType==gui::EGET_BUTTON_CLICKED) { switch (event.GUIEvent.Caller->getID()) { case GUI_ID_CD_MALE_BUTTON: { m_parts["gender"] = "M"; m_parts["Yscale"] = "10"; m_parts["XZscale"] = "10"; m_y_scale = 1.0; m_xz_scale = 1.0; m_model->setMaterialTexture(0, getPlayerTexture()); m_model->setScale(v3f(m_xz_scale,m_y_scale,m_xz_scale)); printCharDef(); return true; } case GUI_ID_CD_FEMALE_BUTTON: { m_parts["gender"] = "F"; m_parts["Yscale"] = "10"; m_parts["XZscale"] = "9"; m_y_scale = 1.0; m_xz_scale = 0.9; m_model->setMaterialTexture(0, getPlayerTexture()); m_model->setScale(v3f(m_xz_scale,m_y_scale,m_xz_scale)); printCharDef(); return true; } case GUI_ID_CD_TALLER_BUTTON: { if (m_y_scale >= 1.1) return true; m_y_scale += 0.1; m_parts["Yscale"] = ftos(m_y_scale*10.); m_model->setScale(v3f(m_xz_scale,m_y_scale,m_xz_scale)); printCharDef(); return true; } case GUI_ID_CD_SHORTER_BUTTON: { if (m_y_scale <= 0.8) return true; m_y_scale -= 0.1; m_parts["Yscale"] = ftos(m_y_scale*10.); m_model->setScale(v3f(m_xz_scale,m_y_scale,m_xz_scale)); printCharDef(); return true; } case GUI_ID_CD_WIDER_BUTTON: { if (m_xz_scale >= 1.1) return true; m_xz_scale += 0.1; m_parts["XZscale"] = ftos(m_xz_scale*10.); m_model->setScale(v3f(m_xz_scale,m_y_scale,m_xz_scale)); printCharDef(); return true; } case GUI_ID_CD_THINNER_BUTTON: { if (m_xz_scale <= 0.8) return true; m_xz_scale -= 0.1; m_parts["XZscale"] = ftos(m_xz_scale*10.); m_model->setScale(v3f(m_xz_scale,m_y_scale,m_xz_scale)); printCharDef(); return true; } case GUI_ID_CD_SKINTONE_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_skintone_types.find(m_parts["skintone"]); if (i == m_skintone_types.begin()) i = m_skintone_types.end(); --i; m_parts["skintone"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_SKINTONE_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_skintone_types.find(m_parts["skintone"]); ++i; if (i == m_skintone_types.end()) i = m_skintone_types.begin(); m_parts["skintone"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_FACE_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_face_types.find(m_parts["face"]); if (i == m_face_types.begin()) i = m_face_types.end(); --i; m_parts["face"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_FACE_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_face_types.find(m_parts["face"]); ++i; if (i == m_face_types.end()) i = m_face_types.begin(); m_parts["face"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_HAIRTONE_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_hairtone_types.find(m_parts["hairtone"]); if (i == m_hairtone_types.begin()) i = m_hairtone_types.end(); --i; m_parts["hairtone"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_HAIRTONE_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_hairtone_types.find(m_parts["hairtone"]); ++i; if (i == m_hairtone_types.end()) i = m_hairtone_types.begin(); m_parts["hairtone"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_HAIR_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_hair_types.find(m_parts["hair"]); if (i == m_hair_types.begin()) i = m_hair_types.end(); --i; m_parts["hair"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_HAIR_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_hair_types.find(m_parts["hair"]); ++i; if (i == m_hair_types.end()) i = m_hair_types.begin(); m_parts["hair"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_EYES_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_eyes_types.find(m_parts["eyes"]); if (i == m_eyes_types.begin()) i = m_eyes_types.end(); --i; m_parts["eyes"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_EYES_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_eyes_types.find(m_parts["eyes"]); ++i; if (i == m_eyes_types.end()) i = m_eyes_types.begin(); m_parts["eyes"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_SHIRT_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_shirt_types.find(m_parts["shirt"]); if (i == m_shirt_types.begin()) i = m_shirt_types.end(); --i; m_parts["shirt"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_SHIRT_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_shirt_types.find(m_parts["shirt"]); ++i; if (i == m_shirt_types.end()) i = m_shirt_types.begin(); m_parts["shirt"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_PANTS_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_pants_types.find(m_parts["pants"]); if (i == m_pants_types.begin()) i = m_pants_types.end(); --i; m_parts["pants"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_PANTS_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_pants_types.find(m_parts["pants"]); ++i; if (i == m_pants_types.end()) i = m_pants_types.begin(); m_parts["pants"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_SHOES_PREV_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_shoes_types.find(m_parts["shoes"]); if (i == m_shoes_types.begin()) i = m_shoes_types.end(); --i; m_parts["shoes"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_SHOES_NEXT_BUTTON: { std::map<std::string,std::wstring>::iterator i = m_shoes_types.find(m_parts["shoes"]); ++i; if (i == m_shoes_types.end()) i = m_shoes_types.begin(); m_parts["shoes"] = i->first; m_model->setMaterialTexture(0, getPlayerTexture()); regenerateGui(m_screensize); printCharDef(); return true; } case GUI_ID_CD_SAVE_BUTTON: { savePlayerSkin(); acceptInput(); quitMenu(); return true; } case GUI_ID_CD_QUIT_BUTTON: { acceptInput(); quitMenu(); return true; } } } } return Parent ? Parent->OnEvent(event) : false; }
void QLuaApplication::Private::ttyInput(QByteArray ba) { // are we in a pause? if (ttyPauseReceived) { ttyPauseReceived = false; theEngine->resume(false); return; } // are we quitting? if (ttyEofReceived) { ttyEofReceived = false; if ((ba[0]=='y' || ba[0]=='Y')) { if (! theApp->close()) acceptInput(true); } else if (ba.size()==0 || ba[0]=='n' || ba[0]=='N') { ttyEofCount = 0; acceptInput(true); } else ttyEndOfFile(); return; } // append to the current input if (! luaInput.size()) { luaInput = ba; if (ba.size() > 0 && ba[0] == '=') luaInput = QByteArray("return ") + (ba.constData() + 1); } else { luaInput += '\n'; luaInput += ba; } // determine if line is complete QtLuaLocker lua(theEngine, 1000); struct lua_State *L = lua; const char *data = luaInput.constData(); int status = (L) ? 0 : 1; if (! status) { status = luaL_loadbuffer(L, data, luaInput.size(), "=stdin"); if (status == LUA_ERRSYNTAX) { size_t lmsg; const char *msg = lua_tolstring(L, -1, &lmsg); const char *tp = msg + lmsg - (sizeof(LUA_QL("<eof>")) - 1); status = (strstr(msg, LUA_QL("<eof>")) == tp); } lua_pop(L, 1); } // action if (status) { theConsole->readLine(luaPrompt2.constData()); } else { QByteArray cmd = luaInput; luaInput.clear(); theConsole->addToHistory(cmd); if (cmd.simplified().isEmpty()) acceptInput(true); else runCommand(cmd, false); } }
void QLuaApplication::Private::stateChanged(int state) { // safeguard if (closingDown || !theEngine) return; // timing if (state == QtLuaEngine::Running) { if (ttyPauseReceived) { ttyPauseReceived = false; theConsole->abortReadLine(); } startTime = QDateTime::currentDateTime(); } else { QDateTime now = QDateTime::currentDateTime(); int secs = startTime.secsTo(now); int msecs = startTime.time().msecsTo(now.time()) % 1000; elapsed += secs + (msecs * 0.001); } // dealing with pauses if (state == QtLuaEngine::Paused) { if (theEngine->isPaused()) { if (! interactionStarted) { theEngine->resume(false); } else if (ttyConsole) { QByteArray prompt = "[Pause -- press enter to continue] "; ttyPauseReceived = true; theConsole->readLine(prompt); } } } // accepting new commands if (state == QtLuaEngine::Ready) { while (! savedNamedObjects.isEmpty()) { QObjectPointer ptr = savedNamedObjects.takeFirst(); if (ptr) theEngine->nameObject(ptr); } if (! argumentsDone) { argumentsDone = true; theEngine->setPrintResults(false); theApp->setQuitOnLastWindowClosed(false); int status = processArguments(savedArgc, savedArgv); if (status && !interactive) { theApp->exit(status = EXIT_FAILURE); return; } else if (!interactive) { theApp->exit(status = EXIT_SUCCESS); return; } } // go in interactive mode if (!interactionStarted) { interactionStarted = true; theApp->setupConsoleOutput(); theApp->setQuitOnLastWindowClosed(!ttyConsole); bool capture = theConsole->captureOutput(); theEngine->setPrintResults(ttyConsole || capture); if (forceVersion || theEngine->printResults()) printLuaVersion(); } // accept fresh commands if (theEngine->isReady()) acceptInput(false); } }
void startClient() { connectToServer(); sendCredentials(); acceptInput(); }
bool GUIKeyChangeMenu::OnEvent(const SEvent& event) { if (event.EventType == EET_KEY_INPUT_EVENT && activeKey >= 0 && event.KeyInput.PressedDown) { changeCtype(""); KeyPress kp(event.KeyInput); if (activeKey == GUI_ID_KEY_FORWARD_BUTTON) { this->forward->setText(wgettext(kp.name())); this->key_forward = kp; } else if (activeKey == GUI_ID_KEY_BACKWARD_BUTTON) { this->backward->setText(wgettext(kp.name())); this->key_backward = kp; } else if (activeKey == GUI_ID_KEY_LEFT_BUTTON) { this->left->setText(wgettext(kp.name())); this->key_left = kp; } else if (activeKey == GUI_ID_KEY_RIGHT_BUTTON) { this->right->setText(wgettext(kp.name())); this->key_right = kp; } else if (activeKey == GUI_ID_KEY_JUMP_BUTTON) { this->jump->setText(wgettext(kp.name())); this->key_jump = kp; } else if (activeKey == GUI_ID_KEY_SNEAK_BUTTON) { this->sneak->setText(wgettext(kp.name())); this->key_sneak = kp; } else if (activeKey == GUI_ID_KEY_DROP_BUTTON) { this->dropbtn->setText(wgettext(kp.name())); this->key_drop = kp; } else if (activeKey == GUI_ID_KEY_INVENTORY_BUTTON) { this->inventory->setText(wgettext(kp.name())); this->key_inventory = kp; } else if (activeKey == GUI_ID_KEY_CHAT_BUTTON) { this->chat->setText(wgettext(kp.name())); this->key_chat = kp; } else if (activeKey == GUI_ID_KEY_CMD_BUTTON) { this->cmd->setText(wgettext(kp.name())); this->key_cmd = kp; } else if (activeKey == GUI_ID_KEY_CONSOLE_BUTTON) { this->console->setText(wgettext(kp.name())); this->key_console = kp; } else if (activeKey == GUI_ID_KEY_RANGE_BUTTON) { this->range->setText(wgettext(kp.name())); this->key_range = kp; } else if (activeKey == GUI_ID_KEY_FLY_BUTTON) { this->fly->setText(wgettext(kp.name())); this->key_fly = kp; } else if (activeKey == GUI_ID_KEY_FAST_BUTTON) { this->fast->setText(wgettext(kp.name())); this->key_fast = kp; } else if (activeKey == GUI_ID_KEY_USE_BUTTON) { this->use->setText(wgettext(kp.name())); this->key_use = kp; } else if (activeKey == GUI_ID_KEY_DUMP_BUTTON) { this->dump->setText(wgettext(kp.name())); this->key_dump = kp; } changeCtype("C"); activeKey = -1; return true; } if (event.EventType == EET_GUI_EVENT) { if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if (!canTakeFocus(event.GUIEvent.Element)) { dstream << "GUIMainMenu: Not allowing focus change." << std::endl; // Returning true disables focus change return true; } } if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) { if(event.GUIEvent.Caller->getID() != GUI_ID_BACK_BUTTON && event.GUIEvent.Caller->getID() != GUI_ID_ABORT_BUTTON) { changeCtype(""); } switch (event.GUIEvent.Caller->getID()) { case GUI_ID_BACK_BUTTON: //back acceptInput(); quitMenu(); return true; case GUI_ID_ABORT_BUTTON: //abort quitMenu(); return true; case GUI_ID_KEY_FORWARD_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->forward->setText(wgettext("press Key")); break; case GUI_ID_KEY_BACKWARD_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->backward->setText(wgettext("press Key")); break; case GUI_ID_KEY_LEFT_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->left->setText(wgettext("press Key")); break; case GUI_ID_KEY_RIGHT_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->right->setText(wgettext("press Key")); break; case GUI_ID_KEY_USE_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->use->setText(wgettext("press Key")); break; case GUI_ID_KEY_FLY_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->fly->setText(wgettext("press Key")); break; case GUI_ID_KEY_FAST_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->fast->setText(wgettext("press Key")); break; case GUI_ID_KEY_JUMP_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->jump->setText(wgettext("press Key")); break; case GUI_ID_KEY_DROP_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->dropbtn->setText(wgettext("press Key")); break; case GUI_ID_KEY_CHAT_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->chat->setText(wgettext("press Key")); break; case GUI_ID_KEY_CMD_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->cmd->setText(wgettext("press Key")); break; case GUI_ID_KEY_CONSOLE_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->console->setText(wgettext("press Key")); break; case GUI_ID_KEY_SNEAK_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->sneak->setText(wgettext("press Key")); break; case GUI_ID_KEY_INVENTORY_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->inventory->setText(wgettext("press Key")); break; case GUI_ID_KEY_DUMP_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->dump->setText(wgettext("press Key")); break; case GUI_ID_KEY_RANGE_BUTTON: resetMenu(); activeKey = event.GUIEvent.Caller->getID(); this->range->setText(wgettext("press Key")); break; } //Buttons changeCtype("C"); } } return Parent ? Parent->OnEvent(event) : false; }
void GUIConfirmRegistration::regenerateGui(v2u32 screensize) { acceptInput(); removeChildren(); /* Calculate new sizes and positions */ core::rect<s32> rect(screensize.X / 2 - 600 / 2, screensize.Y / 2 - 360 / 2, screensize.X / 2 + 600 / 2, screensize.Y / 2 + 360 / 2); DesiredRect = rect; recalculateAbsolutePosition(false); v2s32 size = rect.getSize(); v2s32 topleft_client(0, 0); const wchar_t *text; /* Add stuff */ s32 ypos = 30; { std::string address = m_address; if (address.empty()) address = "localhost"; core::rect<s32> rect2(0, 0, 540, 180); rect2 += topleft_client + v2s32(30, ypos); static const std::string info_text_template = strgettext( "You are about to join the server at %1$s with the " "name \"%2$s\" for the first time. If you proceed, a " "new account using your credentials will be created " "on this server.\n" "Please retype your password and click Register and " "Join to confirm account creation or click Cancel to " "abort."); char info_text_buf[1024]; porting::mt_snprintf(info_text_buf, sizeof(info_text_buf), info_text_template.c_str(), address.c_str(), m_playername.c_str()); wchar_t *info_text_buf_wide = utf8_to_wide_c(info_text_buf); gui::IGUIEditBox *e = new gui::intlGUIEditBox(info_text_buf_wide, true, Environment, this, ID_message, rect2, false, true); delete[] info_text_buf_wide; e->drop(); e->setMultiLine(true); e->setWordWrap(true); e->setTextAlignment(gui::EGUIA_UPPERLEFT, gui::EGUIA_CENTER); } ypos += 210; { core::rect<s32> rect2(0, 0, 540, 30); rect2 += topleft_client + v2s32(30, ypos); gui::IGUIEditBox *e = Environment->addEditBox(m_pass_confirm.c_str(), rect2, true, this, ID_confirmPassword); e->setPasswordBox(true); } ypos += 60; { core::rect<s32> rect2(0, 0, 230, 35); rect2 = rect2 + v2s32(size.X / 2 - 220, ypos); text = wgettext("Register and Join"); Environment->addButton(rect2, this, ID_confirm, text); delete[] text; } { core::rect<s32> rect2(0, 0, 120, 35); rect2 = rect2 + v2s32(size.X / 2 + 70, ypos); text = wgettext("Cancel"); Environment->addButton(rect2, this, ID_cancel, text); delete[] text; } { core::rect<s32> rect2(0, 0, 200, 20); rect2 += topleft_client + v2s32(30, ypos - 40); text = wgettext("Passwords do not match!"); IGUIElement *e = Environment->addStaticText( text, rect2, false, true, this, ID_message); e->setVisible(false); delete[] text; } }
bool GUIMainMenu::OnEvent(const SEvent& event) { if(event.EventType==EET_KEY_INPUT_EVENT) { if(event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown) { m_gamecallback->exitToOS(); quitMenu(); return true; } if(event.KeyInput.Key==KEY_RETURN && event.KeyInput.PressedDown) { acceptInput(); quitMenu(); return true; } } if(event.EventType==EET_GUI_EVENT) { if(event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if(!canTakeFocus(event.GUIEvent.Element)) { dstream<<"GUIMainMenu: Not allowing focus change." <<std::endl; // Returning true disables focus change return true; } } if(event.GUIEvent.EventType==gui::EGET_TAB_CHANGED) { if(!m_is_regenerating) regenerateGui(m_screensize_old); return true; } if(event.GUIEvent.EventType==gui::EGET_LISTBOX_CHANGED && event.GUIEvent.Caller->getID() == GUI_ID_SERVERLIST) { serverListOnSelected(); return true; } if(event.GUIEvent.EventType==gui::EGET_BUTTON_CLICKED) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_JOIN_GAME_BUTTON: { MainMenuData cur; readInput(&cur); if (getTab() == TAB_MULTIPLAYER && cur.address == L"") { wchar_t* text = wgettext("Address required."); (new GUIMessageMenu(env, parent, -1, menumgr, text) )->drop(); delete[] text; return true; } acceptInput(); quitMenu(); return true; } case GUI_ID_CHANGE_KEYS_BUTTON: { GUIKeyChangeMenu *kmenu = new GUIKeyChangeMenu(env, parent, -1,menumgr); kmenu->drop(); return true; } case GUI_ID_DELETE_WORLD_BUTTON: { MainMenuData cur; readInput(&cur); if(cur.selected_world == -1){ wchar_t* text = wgettext("Cannot delete world: Nothing selected"); (new GUIMessageMenu(env, parent, -1, menumgr, text) )->drop(); delete[] text; } else { WorldSpec spec = m_data->worlds[cur.selected_world]; // Get files and directories involved std::vector<std::string> paths; paths.push_back(spec.path); fs::GetRecursiveSubPaths(spec.path, paths); // Launch confirmation dialog ConfirmDestDeleteWorld *dest = new ConfirmDestDeleteWorld(spec, this, paths); wchar_t* text1 = wgettext("Delete world"); wchar_t* text2 = wgettext("Files to be deleted"); std::wstring text = text1; text += L" \""; text += narrow_to_wide(spec.name); text += L"\"?\n\n"; text += text2; text += L":\n"; delete[] text1; delete[] text2; for(u32 i=0; i<paths.size(); i++){ if(i == 3){ text += L"..."; break; } text += narrow_to_wide(paths[i]) + L"\n"; } (new GUIConfirmMenu(env, parent, -1, menumgr, dest, text.c_str()))->drop(); } return true; } case GUI_ID_CREATE_WORLD_BUTTON: { const std::vector<SubgameSpec> &games = m_data->games; if(games.size() == 0){ wchar_t* text = wgettext("Cannot create world: No games found"); GUIMessageMenu *menu = new GUIMessageMenu(env, parent, -1, menumgr, text); menu->drop(); delete[] text; } else { CreateWorldDest *dest = new CreateWorldDestMainMenu(this); GUICreateWorld *menu = new GUICreateWorld(env, parent, -1, menumgr, dest, games, m_data->selected_game); menu->drop(); } return true; } case GUI_ID_CONFIGURE_WORLD_BUTTON: { MainMenuData cur; readInput(&cur); if(cur.selected_world == -1) { wchar_t* text = wgettext("Cannot configure world: Nothing selected"); (new GUIMessageMenu(env, parent, -1, menumgr, text) )->drop(); delete[] text; } else { WorldSpec wspec = m_data->worlds[cur.selected_world]; GUIConfigureWorld *menu = new GUIConfigureWorld(env, parent, -1, menumgr, wspec); menu->drop(); } return true; } case GUI_ID_SERVERLIST_DELETE: { gui::IGUIListBox *serverlist = (gui::IGUIListBox*)getElementFromId(GUI_ID_SERVERLIST); s32 selected = ((gui::IGUIListBox*)serverlist)->getSelected(); if (selected == -1) return true; ServerList::deleteEntry(m_data->servers[selected]); m_data->servers = ServerList::getLocal(); updateGuiServerList(); if (selected > 0) selected -= 1; serverlist->setSelected(selected); serverListOnSelected(); return true; } #if USE_CURL case GUI_ID_SERVERLIST_TOGGLE: { gui::IGUIElement *togglebutton = getElementFromId(GUI_ID_SERVERLIST_TOGGLE); gui::IGUIElement *deletebutton = getElementFromId(GUI_ID_SERVERLIST_DELETE); gui::IGUIListBox *serverlist = (gui::IGUIListBox*)getElementFromId(GUI_ID_SERVERLIST); gui::IGUIElement *title = getElementFromId(GUI_ID_SERVERLIST_TITLE); if (m_data->selected_serverlist == SERVERLIST_PUBLIC) // switch to favorite list { m_data->servers = ServerList::getLocal(); wchar_t* text1 = wgettext("Show Public"); wchar_t* text2 = wgettext("Favorites:"); togglebutton->setText(text1); title->setText(text2); delete[] text1; delete[] text2; deletebutton->setVisible(true); updateGuiServerList(); serverlist->setSelected(0); m_data->selected_serverlist = SERVERLIST_FAVORITES; } else // switch to online list { m_data->servers = ServerList::getOnline(); wchar_t* text1 = wgettext("Show Favorites"); wchar_t* text2 = wgettext("Public Server List:"); togglebutton->setText(text1); title->setText(text2); delete[] text1; delete[] text2; deletebutton->setVisible(false); updateGuiServerList(); serverlist->setSelected(0); m_data->selected_serverlist = SERVERLIST_PUBLIC; } serverListOnSelected(); } #endif } /* Game buttons */ int eid = event.GUIEvent.Caller->getID(); if(eid >= GUI_ID_GAME_BUTTON_FIRST && eid <= GUI_ID_GAME_BUTTON_MAX){ m_data->selected_game = m_data->games[eid - GUI_ID_GAME_BUTTON_FIRST].id; m_data->selected_game_name = m_data->games[eid - GUI_ID_GAME_BUTTON_FIRST].name; regenerateGui(m_screensize_old); } } if(event.GUIEvent.EventType==gui::EGET_EDITBOX_ENTER) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_ADDRESS_INPUT: case GUI_ID_PORT_INPUT: case GUI_ID_NAME_INPUT: case 264: MainMenuData cur; readInput(&cur); if (getTab() == TAB_MULTIPLAYER && cur.address == L"") { wchar_t* text = wgettext("Address required."); (new GUIMessageMenu(env, parent, -1, menumgr, text) )->drop(); delete[] text; return true; } acceptInput(); quitMenu(); return true; } } if(event.GUIEvent.EventType==gui::EGET_LISTBOX_CHANGED) { readInput(m_data); } if(event.GUIEvent.EventType==gui::EGET_LISTBOX_SELECTED_AGAIN) { switch(event.GUIEvent.Caller->getID()) { case GUI_ID_WORLD_LISTBOX: acceptInput(); if(getTab() != TAB_SINGLEPLAYER) m_data->address = L""; // Force local game quitMenu(); return true; case GUI_ID_SERVERLIST: gui::IGUIListBox *serverlist = (gui::IGUIListBox*)getElementFromId(GUI_ID_SERVERLIST); if (serverlist->getSelected() > -1) { acceptInput(); quitMenu(); return true; } } } } return Parent ? Parent->OnEvent(event) : false; }