Spinners can now contain text + the number; used it for the number of laps selector

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/irrlicht@3696 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2009-07-03 18:17:11 +00:00
parent c8e7c5b92b
commit c08e0eaf0a
4 changed files with 17 additions and 9 deletions

View File

@ -44,8 +44,11 @@ over values (default will be from 0 to 10). You can specify an icon; then, inclu
like %i in the name, and at runtime the current number will be inserted into the given name to find the like %i in the name, and at runtime the current number will be inserted into the given name to find the
right file for each possible value the spinner can take. It may also display arbitrary text instead of right file for each possible value the spinner can take. It may also display arbitrary text instead of
numbers, though this cannot be achieve in the XML file; use the ->addLabel(...) method in code to do this. numbers, though this cannot be achieve in the XML file; use the ->addLabel(...) method in code to do this.
It can also display arbitrary text containing the value; just define the PROP_TEXT property to contain
the text you want, including a format string %i where the value should appear.
The "gauge" variant behaves similarly, but a fill band shows how close to the max the value is. The "gauge" variant behaves similarly, but a fill band shows how close to the max the value is.
WTYPE_BUTTON "button" WTYPE_BUTTON "button"
A plain text buttons. A plain text buttons.

View File

@ -117,12 +117,6 @@ void ModalDialog::onEnterPressedInternal()
PressAKeyDialog::PressAKeyDialog(const float w, const float h) : PressAKeyDialog::PressAKeyDialog(const float w, const float h) :
ModalDialog(w, h) ModalDialog(w, h)
{ {
//core::rect< s32 > area2(0, 0, m_area.getWidth(), m_area.getHeight());
//IGUIStaticText* label = GUIEngine::getGUIEnv()->addStaticText( stringw(_("Press a key")).c_str(),
// area2, false /* border */, true /* word wrap */,
// m_irrlicht_window);
//label->setTextAlignment(EGUIA_CENTER, EGUIA_CENTER);
LabelWidget* widget = new LabelWidget(); LabelWidget* widget = new LabelWidget();
widget->m_properties[PROP_TEXT] = _("Press a key"); widget->m_properties[PROP_TEXT] = _("Press a key");
widget->m_properties[PROP_TEXT_ALIGN] = "center"; widget->m_properties[PROP_TEXT_ALIGN] = "center";
@ -300,6 +294,7 @@ TrackInfoDialog::TrackInfoDialog(const char* trackName, ITexture* screenshot, co
widget->m_properties[PROP_MIN_VALUE] = "1"; widget->m_properties[PROP_MIN_VALUE] = "1";
widget->m_properties[PROP_MAX_VALUE] = "99"; widget->m_properties[PROP_MAX_VALUE] = "99";
widget->m_properties[PROP_TEXT] = "%i laps";
m_children.push_back(widget); m_children.push_back(widget);
widget->add(); widget->add();

View File

@ -617,8 +617,6 @@ void Screen::processAction(const int action, const unsigned int value, Input::In
case PA_FIRE: case PA_FIRE:
if(type == Input::IT_STICKBUTTON) if(type == Input::IT_STICKBUTTON)
{ {
std::cout << "sending event, pressedDown=" << pressedDown << "\n";
// simulate a 'enter' key press. doesn't seem to work // simulate a 'enter' key press. doesn't seem to work
irr::SEvent::SKeyInput evt; irr::SEvent::SKeyInput evt;
evt.PressedDown = pressedDown; evt.PressedDown = pressedDown;
@ -666,7 +664,7 @@ bool Screen::OnEvent(const SEvent& event)
Widget* w = getWidget(id); Widget* w = getWidget(id);
if(w == NULL) break; if(w == NULL) break;
if(ModalDialog::isADialogActive()) if(ModalDialog::isADialogActive() && w->m_event_handler == NULL)
{ {
ModalDialog::getCurrent()->processEvent(w->m_properties[PROP_ID]); ModalDialog::getCurrent()->processEvent(w->m_properties[PROP_ID]);
return false; return false;

View File

@ -21,6 +21,8 @@
#include "gui/engine.hpp" #include "gui/engine.hpp"
#include "gui/my_button.hpp" #include "gui/my_button.hpp"
#include "io/file_manager.hpp" #include "io/file_manager.hpp"
#include "utils/translation.hpp"
#include <irrlicht.h> #include <irrlicht.h>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
@ -854,9 +856,19 @@ void SpinnerWidget::setValue(const int new_value)
((IGUIImage*)(m_children[1].m_element))->setImage(GUIEngine::getDriver()->getTexture(imagefile)); ((IGUIImage*)(m_children[1].m_element))->setImage(GUIEngine::getDriver()->getTexture(imagefile));
} }
else if(m_labels.size() > 0) else if(m_labels.size() > 0)
{
m_children[1].m_element->setText( stringw(m_labels[new_value].c_str()).c_str() ); m_children[1].m_element->setText( stringw(m_labels[new_value].c_str()).c_str() );
}
else if(m_properties[PROP_TEXT].size() > 0)
{
char text[128];
sprintf(text, _(m_properties[PROP_TEXT].c_str()), m_value );
m_children[1].m_element->setText( stringw(text).c_str() );
}
else else
{
m_children[1].m_element->setText( stringw(m_value).c_str() ); m_children[1].m_element->setText( stringw(m_value).c_str() );
}
} }
#if 0 #if 0