void PlayerEditName::onTextAreaKeyDown(Event::Keyboard* event) { auto sender = dynamic_cast<UI::TextArea*>(event->emitter()); std::string text = sender->text(); if (event->keyCode() == SDLK_BACKSPACE) //backspace { if (text.length() > 0) { text = text.substr(0, text.length() - 1); sender->setText(text.c_str()); return; } return; } if (event->keyCode() == SDLK_RETURN) //enter { doDone(); return; } if (event->keyCode() == SDLK_ESCAPE) { doBack(); return; } if (event->keyCode() == SDLK_LSHIFT || event->keyCode() == SDLK_RSHIFT) return; if (event->keyCode() == SDLK_LCTRL || event->keyCode() == SDLK_RCTRL) return; if (event->keyCode() == SDLK_LALT || event->keyCode() == SDLK_RALT) return; if (text.length() == 11) return; if (_keyCodes.find(event->keyCode()) != _keyCodes.end()) { char chr = _keyCodes.at(event->keyCode()); if (event->shiftPressed()) { text += toupper(chr); } else { text += chr; } sender->setText(text.c_str()); } }
void PlayerEditAge::onKeyDown(Event::Keyboard* event) { switch (event->keyCode()) { case SDLK_RIGHT: doInc(); break; case SDLK_LEFT: doDec(); break; case SDLK_ESCAPE: doBack(); break; case SDLK_RETURN: doDone(); break; } }
void Thread::run() { while (!done_) { MessageWithInPort messageWithInPort = eventQueue->wait_and_pop(); //SymbolicEvent ev = eventHandling->popEvent(); //if (Symbol::create("done") == NULL) { //message.getName()) { if (Sym::done == messageWithInPort.getMessage().getMessageName()) { doDone(); break; } InPort inPort = messageWithInPort.getInPort(); const Symbol* stateMachineName = inPort.stateMachine; std::vector<MessageWithOutPort> result; stateMachineMap[stateMachineName]->processMessage(messageWithInPort.getMessage(), result); // sendMessage LOGFUNC; if (result.size() == 1) { LOGVALUE("result = ", result[0].getMessage().getMessageName()->getName()); } for (MessageWithOutPort messageWithOutPort : result) { Message message = messageWithOutPort.getMessage(); OutPort outPort = messageWithOutPort.getOutPort(); InPort inPort = this->process->portMap.getConnectedPort(outPort); // accessing process without concurrency control LOGFUNC; LOGVALUE("outSM", outPort.stateMachine->getName()); LOGVALUE("inSM", inPort.stateMachine->getName()); LOGVALUE("messageName", message.getMessageName()->getName()); Thread* peerThread = this->process->getThread(inPort.thread); MessageWithInPort messageWithInPort(message, inPort); // sequence chart log comes from here Log::sequence->message(outPort.stateMachine, inPort.stateMachine, message.getMessageName()); peerThread->push(messageWithInPort); //usleep(1000); // for clean sequence diagram } } }
void PlayerEditName::onDoneButtonClick(Event::Mouse* event) { doDone(); }