From 21ff02a69331fbcd53dc93a1af9a93618225b4bf Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Wed, 18 Feb 2015 14:35:00 -0600 Subject: GUI: Support styles in xml to reduce xml file size Also allow sliders to have their own text label instead of requiring a whole separate text object for the label in the xml. Change-Id: I6e314efb4bb454d496555ff7e003d743063a1308 --- gui/input.cpp | 58 ++++++++++++++++++---------------------------------------- 1 file changed, 18 insertions(+), 40 deletions(-) (limited to 'gui/input.cpp') diff --git a/gui/input.cpp b/gui/input.cpp index 299034a2c..ca27ea812 100644 --- a/gui/input.cpp +++ b/gui/input.cpp @@ -85,7 +85,7 @@ GUIInput::GUIInput(xml_node<>* node) } // Load the background - child = node->first_node("background"); + child = FindNode(node, "background"); if (child) { mBackground = LoadAttrImage(child, "resource"); @@ -98,7 +98,7 @@ GUIInput::GUIInput(xml_node<>* node) } // Load the cursor color - child = node->first_node("cursor"); + child = FindNode(node, "cursor"); if (child) { mCursor = LoadAttrImage(child, "resource"); @@ -106,31 +106,26 @@ GUIInput::GUIInput(xml_node<>* node) attr = child->first_attribute("hasfocus"); if (attr) { - std::string color = attr->value(); - SetInputFocus(atoi(color.c_str())); - } - attr = child->first_attribute("width"); - if (attr) - { - std::string cwidth = gui_parse_text(attr->value()); - CursorWidth = scale_theme_x(atoi(cwidth.c_str())); + std::string focus = attr->value(); + SetInputFocus(atoi(focus.c_str())); } + CursorWidth = LoadAttrIntScaleX(child, "width", CursorWidth); } DrawCursor = HasInputFocus; // Load the font - child = node->first_node("font"); + child = FindNode(node, "font"); if (child) { mFont = LoadAttrFont(child, "resource"); mFontHeight = mFont->GetHeight(); } - child = node->first_node("text"); + child = FindNode(node, "text"); if (child) mText = child->value(); mLastValue = gui_parse_text(mText); - child = node->first_node("data"); + child = FindNode(node, "data"); if (child) { attr = child->first_attribute("name"); @@ -139,11 +134,8 @@ GUIInput::GUIInput(xml_node<>* node) attr = child->first_attribute("default"); if (attr) DataManager::SetValue(mVariable, attr->value()); - attr = child->first_attribute("mask"); - if (attr) { - mMask = attr->value(); - HasMask = true; - } + mMask = LoadAttrString(child, "mask"); + HasMask = !mMask.empty(); attr = child->first_attribute("maskvariable"); if (attr) mMaskVariable = attr->value(); @@ -152,33 +144,19 @@ GUIInput::GUIInput(xml_node<>* node) } // Load input restrictions - child = node->first_node("restrict"); + child = FindNode(node, "restrict"); if (child) { - attr = child->first_attribute("minlen"); - if (attr) { - std::string attrib = attr->value(); - MinLen = atoi(attrib.c_str()); - } - attr = child->first_attribute("maxlen"); - if (attr) { - std::string attrib = attr->value(); - MaxLen = atoi(attrib.c_str()); - } - attr = child->first_attribute("allow"); - if (attr) { - HasAllowed = true; - AllowedList = attr->value(); - } - attr = child->first_attribute("disable"); - if (attr) { - HasDisabled = true; - DisabledList = attr->value(); - } + MinLen = LoadAttrInt(child, "minlen", MinLen); + MaxLen = LoadAttrInt(child, "maxlen", MaxLen); + AllowedList = LoadAttrString(child, "allow"); + HasAllowed = !AllowedList.empty(); + DisabledList = LoadAttrString(child, "disable"); + HasDisabled = !DisabledList.empty(); } // Load the placement - LoadPlacement(node->first_node("placement"), &mRenderX, &mRenderY, &mRenderW, &mRenderH); + LoadPlacement(FindNode(node, "placement"), &mRenderX, &mRenderY, &mRenderW, &mRenderH); SetActionPos(mRenderX, mRenderY, mRenderW, mRenderH); if (mInputText && mFontHeight && mFontHeight < (unsigned)mRenderH) { -- cgit v1.2.3