forked from teamnwah/openmw-tes3coop
general GUI refactoring, part 1
This commit is contained in:
parent
f5ab127a39
commit
b3dc1931a9
8 changed files with 64 additions and 76 deletions
|
@ -28,21 +28,25 @@ ReviewDialog::ReviewDialog(WindowManager& parWindowManager)
|
|||
getWidget(nameWidget, "NameText");
|
||||
getWidget(button, "NameButton");
|
||||
button->setCaption(mWindowManager.getGameSettingString("sName", ""));
|
||||
adjustButtonSize(button);
|
||||
button->eventMouseButtonClick += MyGUI::newDelegate(this, &ReviewDialog::onNameClicked);;
|
||||
|
||||
getWidget(raceWidget, "RaceText");
|
||||
getWidget(button, "RaceButton");
|
||||
button->setCaption(mWindowManager.getGameSettingString("sRace", ""));
|
||||
adjustButtonSize(button);
|
||||
button->eventMouseButtonClick += MyGUI::newDelegate(this, &ReviewDialog::onRaceClicked);;
|
||||
|
||||
getWidget(classWidget, "ClassText");
|
||||
getWidget(button, "ClassButton");
|
||||
button->setCaption(mWindowManager.getGameSettingString("sClass", ""));
|
||||
adjustButtonSize(button);
|
||||
button->eventMouseButtonClick += MyGUI::newDelegate(this, &ReviewDialog::onClassClicked);;
|
||||
|
||||
getWidget(birthSignWidget, "SignText");
|
||||
getWidget(button, "SignButton");
|
||||
button->setCaption(mWindowManager.getGameSettingString("sBirthSign", ""));
|
||||
adjustButtonSize(button);
|
||||
button->eventMouseButtonClick += MyGUI::newDelegate(this, &ReviewDialog::onBirthSignClicked);;
|
||||
|
||||
// Setup dynamic stats
|
||||
|
@ -181,13 +185,14 @@ void ReviewDialog::setSkillValue(ESM::Skill::SkillEnum skillId, const MWMechanic
|
|||
{
|
||||
float modified = value.getModified(), base = value.getBase();
|
||||
std::string text = boost::lexical_cast<std::string>(std::floor(modified));
|
||||
ColorStyle style = CS_Normal;
|
||||
std::string state = "normal";
|
||||
if (modified > base)
|
||||
style = CS_Super;
|
||||
state = "increased";
|
||||
else if (modified < base)
|
||||
style = CS_Sub;
|
||||
state = "decreased";
|
||||
|
||||
setStyledText(widget, style, text);
|
||||
widget->setCaption(text);
|
||||
widget->_setWidgetState(state);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -210,17 +215,6 @@ void ReviewDialog::configureSkills(const std::vector<int>& major, const std::vec
|
|||
}
|
||||
}
|
||||
|
||||
void ReviewDialog::setStyledText(MyGUI::TextBox* widget, ColorStyle style, const std::string &value)
|
||||
{
|
||||
widget->setCaption(value);
|
||||
if (style == CS_Super)
|
||||
widget->setTextColour(MyGUI::Colour(0, 1, 0));
|
||||
else if (style == CS_Sub)
|
||||
widget->setTextColour(MyGUI::Colour(1, 0, 0));
|
||||
else
|
||||
widget->setTextColour(MyGUI::Colour(1, 1, 1));
|
||||
}
|
||||
|
||||
void ReviewDialog::addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||
{
|
||||
MyGUI::ImageBox* separator = skillClientWidget->createWidget<MyGUI::ImageBox>("MW_HLine", MyGUI::IntCoord(10, coord1.top, coord1.width + coord2.width - 4, 18), MyGUI::Align::Default);
|
||||
|
@ -240,7 +234,7 @@ void ReviewDialog::addGroup(const std::string &label, MyGUI::IntCoord &coord1, M
|
|||
coord2.top += lineHeight;
|
||||
}
|
||||
|
||||
MyGUI::TextBox* ReviewDialog::addValueItem(const std::string text, const std::string &value, ColorStyle style, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||
MyGUI::TextBox* ReviewDialog::addValueItem(const std::string text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||
{
|
||||
MyGUI::TextBox* skillNameWidget;
|
||||
MyGUI::TextBox* skillValueWidget;
|
||||
|
@ -249,7 +243,8 @@ MyGUI::TextBox* ReviewDialog::addValueItem(const std::string text, const std::st
|
|||
skillNameWidget->setCaption(text);
|
||||
|
||||
skillValueWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandTextRight", coord2, MyGUI::Align::Default);
|
||||
setStyledText(skillValueWidget, style, value);
|
||||
skillValueWidget->setCaption(value);
|
||||
skillValueWidget->_setWidgetState(state);
|
||||
|
||||
skillWidgets.push_back(skillNameWidget);
|
||||
skillWidgets.push_back(skillValueWidget);
|
||||
|
@ -295,12 +290,12 @@ void ReviewDialog::addSkills(const SkillList &skills, const std::string &titleId
|
|||
float base = stat.getBase();
|
||||
float modified = stat.getModified();
|
||||
|
||||
ColorStyle style = CS_Normal;
|
||||
std::string state = "normal";
|
||||
if (modified > base)
|
||||
style = CS_Super;
|
||||
state = "increased";
|
||||
else if (modified < base)
|
||||
style = CS_Sub;
|
||||
MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), style, coord1, coord2);
|
||||
state = "decreased";
|
||||
MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), state, coord1, coord2);
|
||||
skillWidgetMap[skillId] = widget;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,17 +69,10 @@ namespace MWGui
|
|||
void onBirthSignClicked(MyGUI::Widget* _sender);
|
||||
|
||||
private:
|
||||
enum ColorStyle
|
||||
{
|
||||
CS_Sub,
|
||||
CS_Normal,
|
||||
CS_Super
|
||||
};
|
||||
void setStyledText(MyGUI::TextBox* widget, ColorStyle style, const std::string &value);
|
||||
void addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void addGroup(const std::string &label, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
MyGUI::TextBox* addValueItem(const std::string text, const std::string &value, ColorStyle style, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
MyGUI::TextBox* addValueItem(const std::string text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void addItem(const std::string text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void updateScroller();
|
||||
void updateSkillArea();
|
||||
|
|
|
@ -113,17 +113,6 @@ void StatsWindow::setPlayerName(const std::string& playerName)
|
|||
static_cast<MyGUI::Window*>(mMainWidget)->setCaption(playerName);
|
||||
}
|
||||
|
||||
void StatsWindow::setStyledText(MyGUI::TextBox* widget, ColorStyle style, const std::string &value)
|
||||
{
|
||||
widget->setCaption(value);
|
||||
if (style == CS_Super)
|
||||
widget->setTextColour(MyGUI::Colour(0, 1, 0));
|
||||
else if (style == CS_Sub)
|
||||
widget->setTextColour(MyGUI::Colour(1, 0, 0));
|
||||
else
|
||||
widget->setTextColour(MyGUI::Colour(1, 1, 1));
|
||||
}
|
||||
|
||||
void StatsWindow::setValue (const std::string& id, const MWMechanics::Stat<int>& value)
|
||||
{
|
||||
static const char *ids[] =
|
||||
|
@ -140,12 +129,15 @@ void StatsWindow::setValue (const std::string& id, const MWMechanics::Stat<int>&
|
|||
valueString << value.getModified();
|
||||
setText (id, valueString.str());
|
||||
|
||||
MyGUI::TextBox* box;
|
||||
getWidget(box, id);
|
||||
|
||||
if (value.getModified()>value.getBase())
|
||||
setTextColor (id, 0, 1, 0);
|
||||
box->_setWidgetState("increased");
|
||||
else if (value.getModified()<value.getBase())
|
||||
setTextColor (id, 1, 0, 0);
|
||||
box->_setWidgetState("decreased");
|
||||
else
|
||||
setTextColor (id, 1, 1, 1);
|
||||
box->_setWidgetState("normal");
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -195,13 +187,14 @@ void StatsWindow::setValue(const ESM::Skill::SkillEnum parSkill, const MWMechani
|
|||
{
|
||||
float modified = value.getModified(), base = value.getBase();
|
||||
std::string text = boost::lexical_cast<std::string>(std::floor(modified));
|
||||
ColorStyle style = CS_Normal;
|
||||
std::string state = "normal";
|
||||
if (modified > base)
|
||||
style = CS_Super;
|
||||
state = "increased";
|
||||
else if (modified < base)
|
||||
style = CS_Sub;
|
||||
state = "decreased";
|
||||
|
||||
setStyledText(widget, style, text);
|
||||
widget->setCaption(text);
|
||||
widget->_setWidgetState(state);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -253,7 +246,7 @@ void StatsWindow::addGroup(const std::string &label, MyGUI::IntCoord &coord1, My
|
|||
coord2.top += lineHeight;
|
||||
}
|
||||
|
||||
MyGUI::TextBox* StatsWindow::addValueItem(const std::string& text, const std::string& tooltip, const std::string &value, ColorStyle style, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||
MyGUI::TextBox* StatsWindow::addValueItem(const std::string& text, const std::string& tooltip, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||
{
|
||||
MyGUI::TextBox *skillNameWidget, *skillValueWidget;
|
||||
|
||||
|
@ -265,7 +258,8 @@ MyGUI::TextBox* StatsWindow::addValueItem(const std::string& text, const std::st
|
|||
skillValueWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandTextRight", coord2, MyGUI::Align::Default);
|
||||
skillValueWidget->setUserString("ToolTipType", "Text");
|
||||
skillValueWidget->setUserString("ToolTipText", tooltip);
|
||||
setStyledText(skillValueWidget, style, value);
|
||||
skillValueWidget->setCaption(value);
|
||||
skillValueWidget->_setWidgetState(state);
|
||||
|
||||
skillWidgets.push_back(skillNameWidget);
|
||||
skillWidgets.push_back(skillValueWidget);
|
||||
|
@ -311,12 +305,13 @@ void StatsWindow::addSkills(const SkillList &skills, const std::string &titleId,
|
|||
float base = stat.getBase();
|
||||
float modified = stat.getModified();
|
||||
|
||||
ColorStyle style = CS_Normal;
|
||||
std::string state = "normal";
|
||||
if (modified > base)
|
||||
style = CS_Super;
|
||||
state = "increased";
|
||||
else if (modified < base)
|
||||
style = CS_Sub;
|
||||
MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), "", boost::lexical_cast<std::string>(static_cast<int>(modified)), style, coord1, coord2);
|
||||
state = "decreased";
|
||||
MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), "",
|
||||
boost::lexical_cast<std::string>(static_cast<int>(modified)), state, coord1, coord2);
|
||||
skillWidgetMap[skillId] = widget;
|
||||
}
|
||||
}
|
||||
|
@ -377,10 +372,10 @@ void StatsWindow::updateSkillArea()
|
|||
|
||||
addValueItem(mWindowManager.getGameSettingString("sReputation", "Reputation"),
|
||||
mWindowManager.getGameSettingString("sSkillsMenuReputationHelp", ""),
|
||||
boost::lexical_cast<std::string>(static_cast<int>(reputation)), CS_Normal, coord1, coord2);
|
||||
boost::lexical_cast<std::string>(static_cast<int>(reputation)), "normal", coord1, coord2);
|
||||
addValueItem(mWindowManager.getGameSettingString("sBounty", "Bounty"),
|
||||
mWindowManager.getGameSettingString("sCrimeHelp", ""),
|
||||
boost::lexical_cast<std::string>(static_cast<int>(bounty)), CS_Normal, coord1, coord2);
|
||||
boost::lexical_cast<std::string>(static_cast<int>(bounty)), "normal", coord1, coord2);
|
||||
|
||||
clientHeight = coord1.top;
|
||||
updateScroller();
|
||||
|
|
|
@ -43,17 +43,10 @@ namespace MWGui
|
|||
void updateSkillArea();
|
||||
|
||||
private:
|
||||
enum ColorStyle
|
||||
{
|
||||
CS_Sub,
|
||||
CS_Normal,
|
||||
CS_Super
|
||||
};
|
||||
void setStyledText(MyGUI::TextBox* widget, ColorStyle style, const std::string &value);
|
||||
void addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void addGroup(const std::string &label, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
MyGUI::TextBox* addValueItem(const std::string& text, const std::string& tooltip, const std::string &value, ColorStyle style, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
MyGUI::TextBox* addValueItem(const std::string& text, const std::string& tooltip, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void addItem(const std::string text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||
void updateScroller();
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@
|
|||
<Skin name="MW_Button" size="136 24">
|
||||
<Property key="FontName" value = "Default"/>
|
||||
<Property key="TextAlign" value = "ALIGN_CENTER" />
|
||||
<Property key="TextColour" value = "0.6 0.6 0.6" />
|
||||
|
||||
<Child type="Widget" skin="BTN_Left" offset="0 4 4 16" align="ALIGN_VSTRETCH ALIGN_LEFT"/>
|
||||
<Child type="Widget" skin="BTN_Right" offset="132 4 4 16" align="ALIGN_VSTRETCH ALIGN_RIGHT"/>
|
||||
|
@ -59,11 +58,10 @@
|
|||
<Child type="Widget" skin="BTN_BottomRight" offset="132 20 4 4" align="ALIGN_BOTTOM ALIGN_RIGHT"/>
|
||||
|
||||
<BasisSkin type="SimpleText" offset="4 4 128 16" align="ALIGN_STRETCH">
|
||||
<!--State name="disable" colour="0.87 0.87 0.87"/-->
|
||||
<!--State name="normal" colour="0 0 0"/-->
|
||||
<State name="active" colour="FF0000"/>
|
||||
<State name="pressed" colour="0000FF"/>
|
||||
<State name="select" colour="00FF00"/>
|
||||
<State name="disabled" colour="0.5 0.5 0.5" shift="0"/>
|
||||
<State name="normal" colour="0.75 0.6 0.35" shift="0"/>
|
||||
<State name="highlighted" colour="0.85 0.76 0.60" shift="0"/>
|
||||
<State name="pushed" colour="1 1 1" shift="0"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
</MyGUI>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<Skin name="MW_TextEdit" size="512 20" texture="mwgui.png">
|
||||
<Property key="FontName" value = "Default"/>
|
||||
<Property key="TextAlign" value = "ALIGN_LEFT ALIGN_VCENTER" />
|
||||
<Property key="TextColour" value = "0.6 0.6 0.6" />
|
||||
<Property key="TextColour" value = "0.75 0.6 0.35" />
|
||||
|
||||
<BasisSkin type="SubSkin" offset = "0 0 512 2" align = "ALIGN_TOP ALIGN_HSTRETCH">
|
||||
<State name="normal" offset = "2 2 512 2"/>
|
||||
|
@ -34,7 +34,7 @@
|
|||
<Skin name="MW_TextBoxEdit" size="512 20" texture="mwgui.png">
|
||||
<Property key="FontName" value = "Default"/>
|
||||
<Property key="TextAlign" value = "ALIGN_LEFT ALIGN_TOP" />
|
||||
<Property key="TextColour" value = "0.6 0.6 0.6" />
|
||||
<Property key="TextColour" value = "0.75 0.6 0.35" />
|
||||
|
||||
<BasisSkin type="SubSkin" offset = "0 0 512 2" align = "ALIGN_TOP ALIGN_HSTRETCH">
|
||||
<State name="normal" offset = "2 2 512 2"/>
|
||||
|
|
|
@ -180,10 +180,10 @@
|
|||
<Property key="TextAlign" value = "ALIGN_LEFT ALIGN_VCENTER" />
|
||||
|
||||
<BasisSkin type="SimpleText" offset = "2 0 1 5" align = "ALIGN_STRETCH">
|
||||
<State name="normal" colour = "0.70 0.57 0.33"/>
|
||||
<State name="active" colour = "0.70 0.57 0.33"/>
|
||||
<State name="pressed" colour = "0.33 0.38 0.67"/>
|
||||
<State name="select" colour = "0.33 0.38 0.67"/>
|
||||
<State name="disabled" colour="0.70 0.57 0.33" shift="0"/>
|
||||
<State name="normal" colour="0.70 0.57 0.33" shift="0"/>
|
||||
<State name="highlighted" colour="0.85 0.76 0.60" shift="0"/>
|
||||
<State name="pushed" colour="0.33 0.38 0.67" shift="0"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
|
||||
|
@ -219,7 +219,7 @@
|
|||
<Child type="Widget" skin="Default" offset = "3 3 493 509" align = "ALIGN_STRETCH" name = "Client">
|
||||
</Child>
|
||||
|
||||
<_BasisSkin type="MainSkin" offset = "0 0 0 0" align = "ALIGN_LEFT ALIGN_TOP"/>
|
||||
<BasisSkin type="MainSkin" offset = "0 0 0 0" align = "ALIGN_LEFT ALIGN_TOP"/>
|
||||
|
||||
</Skin>
|
||||
|
||||
|
|
|
@ -115,6 +115,13 @@ namespace GUI
|
|||
static_cast<MyGUI::TextBox*>(pt)->setCaption(caption);
|
||||
}
|
||||
|
||||
void setState(const std::string& widget, const std::string& state)
|
||||
{
|
||||
MyGUI::Widget* pt;
|
||||
getWidget(pt, widget);
|
||||
pt->_setWidgetState(state);
|
||||
}
|
||||
|
||||
void setTextColor(const std::string& name, float r, float g, float b)
|
||||
{
|
||||
MyGUI::Widget* pt;
|
||||
|
@ -131,6 +138,13 @@ namespace GUI
|
|||
pt->setImageTexture(imgName);
|
||||
}
|
||||
|
||||
void adjustButtonSize(MyGUI::Button* button)
|
||||
{
|
||||
// adjust size of button to fit its text
|
||||
MyGUI::IntSize size = button->getTextSize();
|
||||
button->setSize(size.width + 24, button->getSize().height);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
MyGUI::Widget* mMainWidget;
|
||||
|
|
Loading…
Reference in a new issue