Add resizing code for spinner widget
This commit is contained in:
parent
0dffd116a9
commit
5adbb3f16b
@ -96,6 +96,7 @@ SpinnerWidget::SpinnerWidget(const bool gauge) : Widget(WTYPE_SPINNER)
|
|||||||
m_check_inside_me = true; //FIXME: not sure this is necessary
|
m_check_inside_me = true; //FIXME: not sure this is necessary
|
||||||
m_supports_multiplayer = true;
|
m_supports_multiplayer = true;
|
||||||
m_value = -1;
|
m_value = -1;
|
||||||
|
m_badge_x_shift = 0;
|
||||||
m_use_background_color=false;
|
m_use_background_color=false;
|
||||||
m_spinner_widget_player_id=-1;
|
m_spinner_widget_player_id=-1;
|
||||||
m_min = 0;
|
m_min = 0;
|
||||||
@ -169,34 +170,28 @@ void SpinnerWidget::add()
|
|||||||
widgetID = getNewID();
|
widgetID = getNewID();
|
||||||
}
|
}
|
||||||
|
|
||||||
rect<s32> widget_size = rect<s32>(m_x, m_y, m_x + m_w, m_y + m_h);
|
// To be resized later
|
||||||
|
rect<s32> widget_size = rect<s32>(0, 0, 1, 1);
|
||||||
IGUIButton * btn = new SpinnerIrrElement(widget_size, m_parent, widgetID, this);
|
IGUIButton * btn = new SpinnerIrrElement(widget_size, m_parent, widgetID, this);
|
||||||
m_element = btn;
|
m_element = btn;
|
||||||
|
|
||||||
m_element->setTabOrder( m_element->getID() );
|
m_element->setTabOrder( m_element->getID() );
|
||||||
|
|
||||||
// left arrow
|
// left arrow
|
||||||
rect<s32> subsize_left_arrow = rect<s32>(0 ,0, m_h, m_h);
|
IGUIButton * left_arrow = GUIEngine::getGUIEnv()->addButton(widget_size, btn, getNewNoFocusID(), L" ");
|
||||||
IGUIButton * left_arrow = GUIEngine::getGUIEnv()->addButton(subsize_left_arrow, btn, getNewNoFocusID(), L" ");
|
|
||||||
m_children[0].m_element = left_arrow;
|
m_children[0].m_element = left_arrow;
|
||||||
left_arrow->setTabStop(false);
|
left_arrow->setTabStop(false);
|
||||||
m_children[0].m_event_handler = this;
|
m_children[0].m_event_handler = this;
|
||||||
m_children[0].m_properties[PROP_ID] = "left";
|
m_children[0].m_properties[PROP_ID] = "left";
|
||||||
m_children[0].m_id = m_children[0].m_element->getID();
|
m_children[0].m_id = m_children[0].m_element->getID();
|
||||||
|
|
||||||
m_badge_x_shift = subsize_left_arrow.getWidth();
|
|
||||||
|
|
||||||
// label
|
// label
|
||||||
if (m_graphical)
|
if (m_graphical)
|
||||||
{
|
{
|
||||||
ITexture* texture = getTexture();
|
ITexture* texture = getTexture();
|
||||||
assert(texture != NULL);
|
assert(texture != NULL);
|
||||||
|
|
||||||
const int texture_width = texture->getSize().Width;
|
IGUIImage * subbtn = GUIEngine::getGUIEnv()->addImage(widget_size, btn, getNewNoFocusID());
|
||||||
const int free_h_space = m_w - m_h*2 - texture_width; // to center image
|
|
||||||
|
|
||||||
rect<s32> subsize_label = rect<s32>(m_h + free_h_space/2, 0, m_w - m_h+ free_h_space/2, m_h);
|
|
||||||
IGUIImage * subbtn = GUIEngine::getGUIEnv()->addImage(subsize_label, btn, getNewNoFocusID());
|
|
||||||
m_children[1].m_element = subbtn;
|
m_children[1].m_element = subbtn;
|
||||||
m_children[1].m_id = subbtn->getID();
|
m_children[1].m_id = subbtn->getID();
|
||||||
m_children[1].m_event_handler = this;
|
m_children[1].m_event_handler = this;
|
||||||
@ -208,9 +203,8 @@ void SpinnerWidget::add()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rect<s32> subsize_label = rect<s32>(m_h, 0, m_w - m_h, m_h);
|
|
||||||
stringw text = stringw(m_value);
|
stringw text = stringw(m_value);
|
||||||
IGUIStaticText* label = GUIEngine::getGUIEnv()->addStaticText(text.c_str(), subsize_label,
|
IGUIStaticText* label = GUIEngine::getGUIEnv()->addStaticText(text.c_str(), widget_size,
|
||||||
false /* border */, true /* word wrap */,
|
false /* border */, true /* word wrap */,
|
||||||
btn, getNewNoFocusID());
|
btn, getNewNoFocusID());
|
||||||
m_children[1].m_element = label;
|
m_children[1].m_element = label;
|
||||||
@ -225,17 +219,11 @@ void SpinnerWidget::add()
|
|||||||
{
|
{
|
||||||
label->setText(m_labels[m_value].c_str() );
|
label->setText(m_labels[m_value].c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (widget_size.getHeight() < GUIEngine::getFontHeight())
|
|
||||||
{
|
|
||||||
label->setOverrideFont(GUIEngine::getSmallFont());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// right arrow
|
// right arrow
|
||||||
rect<s32> subsize_right_arrow = rect<s32>(m_w - m_h, 0, m_w, m_h);
|
IGUIButton * right_arrow = GUIEngine::getGUIEnv()->addButton(widget_size, btn, getNewNoFocusID(), L" ");
|
||||||
IGUIButton * right_arrow = GUIEngine::getGUIEnv()->addButton(subsize_right_arrow, btn, getNewNoFocusID(), L" ");
|
|
||||||
right_arrow->setTabStop(false);
|
right_arrow->setTabStop(false);
|
||||||
m_children[2].m_element = right_arrow;
|
m_children[2].m_element = right_arrow;
|
||||||
m_children[2].m_event_handler = this;
|
m_children[2].m_event_handler = this;
|
||||||
@ -243,8 +231,7 @@ void SpinnerWidget::add()
|
|||||||
m_children[2].m_id = m_children[2].m_element->getID();
|
m_children[2].m_id = m_children[2].m_element->getID();
|
||||||
|
|
||||||
// refresh display
|
// refresh display
|
||||||
|
resize();
|
||||||
|
|
||||||
setValue(m_value);
|
setValue(m_value);
|
||||||
}
|
}
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@ -260,12 +247,13 @@ ITexture* SpinnerWidget::getTexture()
|
|||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SpinnerWidget::move(const int x, const int y, const int w, const int h)
|
void SpinnerWidget::resize()
|
||||||
{
|
{
|
||||||
Widget::move(x, y, w, h);
|
Widget::resize();
|
||||||
|
|
||||||
rect<s32> subsize_left_arrow = rect<s32>(0 ,0, h, h);
|
rect<s32> subsize_left_arrow = rect<s32>(0 ,0, m_h, m_h);
|
||||||
m_children[0].m_element->setRelativePosition(subsize_left_arrow);
|
m_children[0].m_element->setRelativePosition(subsize_left_arrow);
|
||||||
|
m_badge_x_shift = subsize_left_arrow.getWidth();
|
||||||
|
|
||||||
if (m_graphical)
|
if (m_graphical)
|
||||||
{
|
{
|
||||||
@ -273,18 +261,27 @@ void SpinnerWidget::move(const int x, const int y, const int w, const int h)
|
|||||||
assert(texture != NULL);
|
assert(texture != NULL);
|
||||||
|
|
||||||
const int texture_width = texture->getSize().Width;
|
const int texture_width = texture->getSize().Width;
|
||||||
const int free_h_space = w-h*2-texture_width; // to center image
|
const int free_h_space = m_w-m_h*2-texture_width; // to center image
|
||||||
|
|
||||||
rect<s32> subsize_label = rect<s32>(h+free_h_space/2, 0, w-h+free_h_space/2, h);
|
rect<s32> subsize_label = rect<s32>(m_h+free_h_space/2, 0, m_w-m_h+free_h_space/2, m_h);
|
||||||
m_children[1].m_element->setRelativePosition(subsize_label);
|
m_children[1].m_element->setRelativePosition(subsize_label);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rect<s32> subsize_label = rect<s32>(h, 0, w-h, h);
|
rect<s32> subsize_label = rect<s32>(m_h, 0, m_w-m_h, m_h);
|
||||||
m_children[1].m_element->setRelativePosition(subsize_label);
|
IGUIStaticText* label = static_cast<IGUIStaticText*>(m_children[1].m_element);
|
||||||
|
label->setRelativePosition(subsize_label);
|
||||||
|
if (m_h < GUIEngine::getFontHeight())
|
||||||
|
{
|
||||||
|
label->setOverrideFont(GUIEngine::getSmallFont());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label->setOverrideFont(NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rect<s32> subsize_right_arrow = rect<s32>(w-h, 0, w, h);
|
rect<s32> subsize_right_arrow = rect<s32>(m_w-m_h, 0, m_w, m_h);
|
||||||
m_children[2].m_element->setRelativePosition(subsize_right_arrow);
|
m_children[2].m_element->setRelativePosition(subsize_right_arrow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ namespace GUIEngine
|
|||||||
|
|
||||||
SpinnerWidget(const bool gauge=false);
|
SpinnerWidget(const bool gauge=false);
|
||||||
virtual ~SpinnerWidget() {}
|
virtual ~SpinnerWidget() {}
|
||||||
virtual void move(const int x, const int y, const int w, const int h);
|
virtual void resize();
|
||||||
|
|
||||||
void addLabel(irr::core::stringw label);
|
void addLabel(irr::core::stringw label);
|
||||||
void clearLabels();
|
void clearLabels();
|
||||||
|
Loading…
Reference in New Issue
Block a user