void PromptWindow::AddButton(const char *text) { int size = Button.size(); if(size > 3) return; ButtonTxt.resize(size+1); ButtonImg.resize(size+1); Button.resize(size+1); ButtonTxt[size] = new GuiText(text, 20, thColor("r=0 g=0 b=0 a=255 - prompt windows button text color")); ButtonImg[size] = new GuiImage(btnOutline); if (Settings.wsprompt) { ButtonTxt[size]->SetWidescreen(Settings.widescreen); ButtonImg[size]->SetWidescreen(Settings.widescreen); } Button[size] = new GuiButton(ButtonImg[size], ButtonImg[size], 0, 3, 0, 0, trigA, btnSoundOver, btnSoundClick2, 1); Button[size]->SetLabel(ButtonTxt[size]); Button[size]->SetState(STATE_SELECTED); Button[size]->SetTrigger(1, trigB); Append(Button[size]); if(size > 0) Button[size-1]->SetTrigger(1, NULL); PositionButtons(); }
/*--------------------------------------------------------------------------*/ SIGNED PegMenu::Message(const PegMessage &Mesg) { switch(Mesg.wType) { case PM_SHOW: PositionButtons(); PegThing::Message(Mesg); break; // The following two messages, PM_CURRENT and PM_NONCURRENT, only occur // if this menu is a pop-up menu, i.e. it was not spawned by a PegMenuBar case PM_CURRENT: PegThing::Message(Mesg); { PegMenuButton *pTarget = (PegMenuButton *) First(); while(pTarget) { if (!(pTarget->Style() & BF_SEPERATOR) && (pTarget->Style() & AF_ENABLED)) { break; } pTarget = (PegMenuButton *) pTarget->Next(); } if (pTarget) { pTarget->Message(PM_POINTER_ENTER); } } break; case PM_NONCURRENT: PegThing::Message(Mesg); { PegMenuButton *pButton = (PegMenuButton *) First(); while(pButton) { pButton->CloseMenu(); pButton = (PegMenuButton *) pButton->Next(); } } Parent()->Remove(this); break; case PM_KEY: #ifdef PEG_KEYBOARD_SUPPORT MenuKeyHandler(Mesg.iData); #endif break; default: PegThing::Message(Mesg); break; } return 0; }
/*--------------------------------------------------------------------------*/ SIGNED PegMenuBar::Message(const PegMessage &Mesg) { PegThing *Child; PegMenuButton *pmb; switch(Mesg.wType) { case PM_SHOW: Child = First(); while(Child) { if (Child->Type() == TYPE_MENU_BUTTON) { pmb = (PegMenuButton *) Child; pmb->SetOwner(Parent()); } Child = Child->Next(); } // fall through to PM_PARENTSIZED: case PM_PARENTSIZED: SizeToParent(); PositionButtons(); PegThing::Message(Mesg); break; case PM_NONCURRENT: PegThing::Message(Mesg); CloseSiblings(NULL); mbFlyoverMode = 0; #ifdef PEG_KEYBOARD_SUPPORT pmb = MenuFindActiveButton((PegMenuButton *) First()); if (pmb) { pmb->Message(PM_POINTER_EXIT); } #endif break; #ifdef PEG_KEYBOARD_SUPPORT case PM_KEY: MenuKeyHandler(Mesg.iData); break; #endif default: PegThing::Message(Mesg); break; } return 0; }
void PromptWindow::RemoveButton() { Remove(Button[Button.size()-1]); delete ButtonTxt[ButtonTxt.size()-1]; delete ButtonImg[ButtonImg.size()-1]; delete Button[Button.size()-1]; ButtonTxt.pop_back(); ButtonImg.pop_back(); Button.pop_back(); if(ButtonImg.size() > 0) Button[ButtonImg.size()-1]->SetTrigger(1, trigB); PositionButtons(); }