Beispiel #1
0
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();
}
Beispiel #2
0
/*--------------------------------------------------------------------------*/
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;
}
Beispiel #3
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;
}
Beispiel #4
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();
}