1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-10-15 13:56:34 +00:00

Add whole set of button icons

This commit is contained in:
Andrew Lanzone 2025-05-17 22:32:03 -07:00
parent c0694d3c0e
commit e01291ec4a
49 changed files with 457 additions and 178 deletions

View file

@ -59,7 +59,12 @@ namespace MWGui
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &BirthDialog::onOkClicked); mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &BirthDialog::onOkClicked);
if (Settings::gui().mControllerMenus) if (Settings::gui().mControllerMenus)
{
mOkButton->setStateSelected(true); mOkButton->setStateSelected(true);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sBack}";
mControllerButtons.x = "#{sDone}";
}
updateBirths(); updateBirths();
updateSpells(); updateSpells();
@ -273,11 +278,6 @@ namespace MWGui
mSpellArea->setViewOffset(MyGUI::IntPoint(0, 0)); mSpellArea->setViewOffset(MyGUI::IntPoint(0, 0));
} }
std::string BirthDialog::getButtonStr()
{
return "(A) #{sSelect} (X) #{sDone} (B) #{sBack}";
}
bool BirthDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool BirthDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)

View file

@ -38,8 +38,6 @@ namespace MWGui
*/ */
EventHandle_WindowBase eventDone; EventHandle_WindowBase eventDone;
std::string getButtonStr() override;
protected: protected:
void onSelectBirth(MyGUI::ListBox* _sender, size_t _index); void onSelectBirth(MyGUI::ListBox* _sender, size_t _index);

View file

@ -70,6 +70,10 @@ namespace MWGui
MyGUI::IntCoord(0, 0, (64 - 7) * scale, mNextPageButton->getSize().height * scale)); MyGUI::IntCoord(0, 0, (64 - 7) * scale, mNextPageButton->getSize().height * scale));
} }
mControllerButtons.l1 = "#{sPrev}";
mControllerButtons.r1 = "#{sNext}";
mControllerButtons.b = "#{sClose}";
center(); center();
} }
@ -222,12 +226,10 @@ namespace MWGui
} }
} }
std::string BookWindow::getButtonStr() ControllerButtonStr* BookWindow::getControllerButtons()
{ {
if (mTakeButton->getVisible()) mControllerButtons.a = mTakeButton->getVisible() ? "#{sTake}" : "";
return "(A) #{sTake} (LB) #{sPrev} (RB) #{sNext} (B) #{sClose}"; return &mControllerButtons;
else
return "(LB) #{sPrev} (RB) #{sNext} (B) #{sClose}";
} }
bool BookWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool BookWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)

View file

@ -21,7 +21,7 @@ namespace MWGui
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
std::string_view getWindowIdForLua() const override { return "Book"; } std::string_view getWindowIdForLua() const override { return "Book"; }
std::string getButtonStr() override; ControllerButtonStr* getControllerButtons() override;
protected: protected:
void onNextPageButtonClicked(MyGUI::Widget* sender); void onNextPageButtonClicked(MyGUI::Widget* sender);

View file

@ -60,6 +60,8 @@ namespace MWGui
mOkButton->setStateSelected(true); mOkButton->setStateSelected(true);
trackFocusEvents(mBackButton); trackFocusEvents(mBackButton);
trackFocusEvents(mOkButton); trackFocusEvents(mOkButton);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sBack}";
} }
center(); center();
@ -77,11 +79,6 @@ namespace MWGui
center(); center();
} }
std::string GenerateClassResultDialog::getButtonStr()
{
return "(A) #{sSelect} (B) #{sBack}";
}
bool GenerateClassResultDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool GenerateClassResultDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)
@ -155,7 +152,12 @@ namespace MWGui
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &PickClassDialog::onOkClicked); mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &PickClassDialog::onOkClicked);
if (Settings::gui().mControllerMenus) if (Settings::gui().mControllerMenus)
{
mOkButton->setStateSelected(true); mOkButton->setStateSelected(true);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sBack}";
mControllerButtons.x = "#{sDone}";
}
updateClasses(); updateClasses();
updateStats(); updateStats();
@ -317,11 +319,6 @@ namespace MWGui
setClassImage(mClassImage, mCurrentClassId); setClassImage(mClassImage, mCurrentClassId);
} }
std::string PickClassDialog::getButtonStr()
{
return "(A) #{sSelect} (X) #{sDone} (B) #{sBack}";
}
bool PickClassDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool PickClassDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)
@ -419,6 +416,8 @@ namespace MWGui
getWidget(mButtonBar, "ButtonBar"); getWidget(mButtonBar, "ButtonBar");
center(); center();
mControllerButtons.a = "#{sSelect}";
} }
void InfoBoxDialog::setText(const std::string& str) void InfoBoxDialog::setText(const std::string& str)
@ -490,11 +489,6 @@ namespace MWGui
} }
} }
std::string InfoBoxDialog::getButtonStr()
{
return "(A) #{sSelect}";
}
bool InfoBoxDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool InfoBoxDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)
@ -623,7 +617,12 @@ namespace MWGui
mButtons.push_back(okButton); mButtons.push_back(okButton);
if (Settings::gui().mControllerMenus) if (Settings::gui().mControllerMenus)
{
okButton->setStateSelected(true); okButton->setStateSelected(true);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sBack}";
mControllerButtons.x = "#{sDone}";
}
// Set default skills, attributes // Set default skills, attributes
@ -718,11 +717,6 @@ namespace MWGui
MyGUI::UString(MWBase::Environment::get().getWindowManager()->getGameSettingString("sOK", {}))); MyGUI::UString(MWBase::Environment::get().getWindowManager()->getGameSettingString("sOK", {})));
} }
std::string CreateClassDialog::getButtonStr()
{
return "(A) #{sSelect} (X) #{sDone} (B) #{sCancel}";
}
bool CreateClassDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool CreateClassDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)
@ -939,6 +933,9 @@ namespace MWGui
MyGUI::Button* cancelButton; MyGUI::Button* cancelButton;
getWidget(cancelButton, "CancelButton"); getWidget(cancelButton, "CancelButton");
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onCancelClicked); cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onCancelClicked);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sCancel}";
} }
SelectSpecializationDialog::~SelectSpecializationDialog() {} SelectSpecializationDialog::~SelectSpecializationDialog() {}
@ -970,11 +967,6 @@ namespace MWGui
return true; return true;
} }
std::string SelectSpecializationDialog::getButtonStr()
{
return "(A) #{sSelect} (B) #{sCancel}";
}
bool SelectSpecializationDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool SelectSpecializationDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_B) if (arg.button == SDL_CONTROLLER_BUTTON_B)
@ -1016,6 +1008,9 @@ namespace MWGui
MyGUI::Button* cancelButton; MyGUI::Button* cancelButton;
getWidget(cancelButton, "CancelButton"); getWidget(cancelButton, "CancelButton");
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectAttributeDialog::onCancelClicked); cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectAttributeDialog::onCancelClicked);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sCancel}";
} }
// widget controls // widget controls
@ -1037,11 +1032,6 @@ namespace MWGui
return true; return true;
} }
std::string SelectAttributeDialog::getButtonStr()
{
return "(A) #{sSelect} (B) #{sCancel}";
}
bool SelectAttributeDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool SelectAttributeDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_B) if (arg.button == SDL_CONTROLLER_BUTTON_B)
@ -1093,6 +1083,9 @@ namespace MWGui
MyGUI::Button* cancelButton; MyGUI::Button* cancelButton;
getWidget(cancelButton, "CancelButton"); getWidget(cancelButton, "CancelButton");
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSkillDialog::onCancelClicked); cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSkillDialog::onCancelClicked);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sCancel}";
} }
SelectSkillDialog::~SelectSkillDialog() {} SelectSkillDialog::~SelectSkillDialog() {}
@ -1116,11 +1109,6 @@ namespace MWGui
return true; return true;
} }
std::string SelectSkillDialog::getButtonStr()
{
return "(A) #{sSelect} (B) #{sCancel}";
}
bool SelectSkillDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool SelectSkillDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_B) if (arg.button == SDL_CONTROLLER_BUTTON_B)

View file

@ -40,8 +40,6 @@ namespace MWGui
*/ */
EventHandle_Int eventButtonSelected; EventHandle_Int eventButtonSelected;
std::string getButtonStr() override;
protected: protected:
void onButtonClicked(MyGUI::Widget* _sender); void onButtonClicked(MyGUI::Widget* _sender);
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
@ -93,8 +91,6 @@ namespace MWGui
*/ */
EventHandle_WindowBase eventDone; EventHandle_WindowBase eventDone;
std::string getButtonStr() override;
protected: protected:
void onOkClicked(MyGUI::Widget* _sender); void onOkClicked(MyGUI::Widget* _sender);
void onBackClicked(MyGUI::Widget* _sender); void onBackClicked(MyGUI::Widget* _sender);
@ -136,8 +132,6 @@ namespace MWGui
*/ */
EventHandle_WindowBase eventDone; EventHandle_WindowBase eventDone;
std::string getButtonStr() override;
protected: protected:
void onSelectClass(MyGUI::ListBox* _sender, size_t _index); void onSelectClass(MyGUI::ListBox* _sender, size_t _index);
void onAccept(MyGUI::ListBox* _sender, size_t _index); void onAccept(MyGUI::ListBox* _sender, size_t _index);
@ -189,8 +183,6 @@ namespace MWGui
*/ */
EventHandle_Void eventItemSelected; EventHandle_Void eventItemSelected;
std::string getButtonStr() override;
protected: protected:
void onSpecializationClicked(MyGUI::Widget* _sender); void onSpecializationClicked(MyGUI::Widget* _sender);
void onCancelClicked(MyGUI::Widget* _sender); void onCancelClicked(MyGUI::Widget* _sender);
@ -225,8 +217,6 @@ namespace MWGui
*/ */
EventHandle_Void eventItemSelected; EventHandle_Void eventItemSelected;
std::string getButtonStr() override;
protected: protected:
void onAttributeClicked(Widgets::MWAttributePtr _sender); void onAttributeClicked(Widgets::MWAttributePtr _sender);
void onCancelClicked(MyGUI::Widget* _sender); void onCancelClicked(MyGUI::Widget* _sender);
@ -259,8 +249,6 @@ namespace MWGui
*/ */
EventHandle_Void eventItemSelected; EventHandle_Void eventItemSelected;
std::string getButtonStr() override;
protected: protected:
void onSkillClicked(Widgets::MWSkillPtr _sender); void onSkillClicked(Widgets::MWSkillPtr _sender);
void onCancelClicked(MyGUI::Widget* _sender); void onCancelClicked(MyGUI::Widget* _sender);
@ -322,8 +310,6 @@ namespace MWGui
*/ */
EventHandle_WindowBase eventDone; EventHandle_WindowBase eventDone;
std::string getButtonStr() override;
protected: protected:
void onOkClicked(MyGUI::Widget* _sender); void onOkClicked(MyGUI::Widget* _sender);
void onBackClicked(MyGUI::Widget* _sender); void onBackClicked(MyGUI::Widget* _sender);

View file

@ -24,6 +24,8 @@ namespace MWGui
{ {
trackFocusEvents(mOkButton); trackFocusEvents(mOkButton);
trackFocusEvents(mCancelButton); trackFocusEvents(mCancelButton);
mControllerButtons.a = "#{sOk}";
mControllerButtons.b = "#{sCancel}";
} }
} }
@ -72,11 +74,6 @@ namespace MWGui
eventOkClicked(); eventOkClicked();
} }
std::string ConfirmationDialog::getButtonStr()
{
return "(A) #{sOk} (B) #{sCancel}";
}
bool ConfirmationDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool ConfirmationDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)

View file

@ -20,8 +20,6 @@ namespace MWGui
EventHandle_Void eventOkClicked; EventHandle_Void eventOkClicked;
EventHandle_Void eventCancelClicked; EventHandle_Void eventCancelClicked;
std::string getButtonStr() override;
private: private:
MyGUI::EditBox* mMessage; MyGUI::EditBox* mMessage;
MyGUI::Button* mOkButton; MyGUI::Button* mOkButton;

View file

@ -56,6 +56,12 @@ namespace MWGui
mTakeButton->eventMouseButtonClick += MyGUI::newDelegate(this, &ContainerWindow::onTakeAllButtonClicked); mTakeButton->eventMouseButtonClick += MyGUI::newDelegate(this, &ContainerWindow::onTakeAllButtonClicked);
setCoord(200, 0, 600, 300); setCoord(200, 0, 600, 300);
mControllerButtons.a = "#{sTake}";
mControllerButtons.b = "#{sClose}";
mControllerButtons.x = "#{sTakeAll}";
mControllerButtons.y = "#{sInfo}";
mControllerButtons.l2 = "#{sInventory}";
} }
void ContainerWindow::onItemSelected(int index) void ContainerWindow::onItemSelected(int index)
@ -352,12 +358,10 @@ namespace MWGui
MWBase::Environment::get().getWindowManager()->removeGuiMode(GM_Container); MWBase::Environment::get().getWindowManager()->removeGuiMode(GM_Container);
} }
std::string ContainerWindow::getButtonStr() ControllerButtonStr* ContainerWindow::getControllerButtons()
{ {
if (mDisposeCorpseButton->getVisible()) mControllerButtons.l1 = mDisposeCorpseButton->getVisible() ? "#{sDisposeofCorpse}" : "";
return "(A) #{sTake} (X) #{sTakeAll} (LB) #{sDisposeofCorpse} (Y) #{sInfo} [LT] #{sInventory} (B) #{sClose}"; return &mControllerButtons;
else
return "(A) #{sTake} (X) #{sTakeAll} (Y) #{sInfo} [LT] #{sInventory} (B) #{sClose}";
} }
bool ContainerWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool ContainerWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)

View file

@ -40,7 +40,7 @@ namespace MWGui
std::string_view getWindowIdForLua() const override { return "Container"; } std::string_view getWindowIdForLua() const override { return "Container"; }
std::string getButtonStr() override; ControllerButtonStr* getControllerButtons() override;
void setActiveControllerWindow(bool active) override; void setActiveControllerWindow(bool active) override;
private: private:

View file

@ -1,8 +1,5 @@
#include "controllerbuttonsoverlay.hpp" #include "controllerbuttonsoverlay.hpp"
#include <MyGUI_Button.h>
#include <MyGUI_EditBox.h>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
@ -11,16 +8,94 @@ namespace MWGui
ControllerButtonsOverlay::ControllerButtonsOverlay() ControllerButtonsOverlay::ControllerButtonsOverlay()
: WindowBase("openmw_controllerbuttons.layout") : WindowBase("openmw_controllerbuttons.layout")
{ {
getWidget(mButtonStr, "ButtonStr"); getWidget(mImageA, "BtnAImage");
getWidget(mTextA, "BtnAText");
getWidget(mImageB, "BtnBImage");
getWidget(mTextB, "BtnBText");
getWidget(mImageL1, "BtnL1Image");
getWidget(mTextL1, "BtnL1Text");
getWidget(mImageL2, "BtnL2Image");
getWidget(mTextL2, "BtnL2Text");
getWidget(mImageL3, "BtnL3Image");
getWidget(mTextL3, "BtnL3Text");
getWidget(mImageLStick, "BtnLStickImage");
getWidget(mTextLStick, "BtnLStickText");
getWidget(mImageMenu, "BtnMenuImage");
getWidget(mTextMenu, "BtnMenuText");
getWidget(mImageR1, "BtnR1Image");
getWidget(mTextR1, "BtnR1Text");
getWidget(mImageR2, "BtnR2Image");
getWidget(mTextR2, "BtnR2Text");
getWidget(mImageR3, "BtnR3Image");
getWidget(mTextR3, "BtnR3Text");
getWidget(mImageRStick, "BtnRStickImage");
getWidget(mTextRStick, "BtnRStickText");
getWidget(mImageView, "BtnViewImage");
getWidget(mTextView, "BtnViewText");
getWidget(mImageX, "BtnXImage");
getWidget(mTextX, "BtnXText");
getWidget(mImageY, "BtnYImage");
getWidget(mTextY, "BtnYText");
getWidget(mHBox, "ButtonBox");
} }
void ControllerButtonsOverlay::setButtonStr(const std::string& buttonStr) void ControllerButtonsOverlay::setButtons(ControllerButtonStr* buttons)
{ {
mButtonStr->setCaptionWithReplacing(buttonStr); int buttonCount = 0;
buttonCount += updateButton(mTextA, mImageA, buttons->a);
buttonCount += updateButton(mTextB, mImageB, buttons->b);
buttonCount += updateButton(mTextL1, mImageL1, buttons->l1);
buttonCount += updateButton(mTextL2, mImageL2, buttons->l2);
buttonCount += updateButton(mTextL3, mImageL3, buttons->l3);
buttonCount += updateButton(mTextLStick, mImageLStick, buttons->lStick);
buttonCount += updateButton(mTextMenu, mImageMenu, buttons->menu);
buttonCount += updateButton(mTextR1, mImageR1, buttons->r1);
buttonCount += updateButton(mTextR2, mImageR2, buttons->r2);
buttonCount += updateButton(mTextR3, mImageR3, buttons->r3);
buttonCount += updateButton(mTextRStick, mImageRStick, buttons->rStick);
buttonCount += updateButton(mTextView, mImageView, buttons->view);
buttonCount += updateButton(mTextX, mImageX, buttons->x);
buttonCount += updateButton(mTextY, mImageY, buttons->y);
mHBox->notifyChildrenSizeChanged();
// int height = mMessage->getTextSize().height + 60; setVisible(buttonCount > 0);
// int width = mMessage->getTextSize().width + 24; }
// mMainWidget->setSize(width, height);
// mMessage->setSize(mMessage->getWidth(), mMessage->getTextSize().height + 24); int ControllerButtonsOverlay::updateButton(MyGUI::TextBox* text, MyGUI::ImageBox* image, const std::string& buttonStr)
{
if (buttonStr.length() > 0)
{
image->setVisible(true);
image->setUserString("Hidden", "false");
text->setCaptionWithReplacing(buttonStr);
text->setVisible(true);
text->setUserString("Hidden", "false");
text->setSize(text->getTextSize().width + 16, 48);
return 1;
}
else
{
image->setVisible(false);
image->setUserString("Hidden", "true");
text->setVisible(false);
text->setUserString("Hidden", "true");
return 0;
}
} }
} }

View file

@ -1,6 +1,11 @@
#ifndef MWGUI_CONTROLLERBUTTONSOVERLAY_H #ifndef MWGUI_CONTROLLERBUTTONSOVERLAY_H
#define MWGUI_CONTROLLERBUTTONSOVERLAY_H #define MWGUI_CONTROLLERBUTTONSOVERLAY_H
#include <MyGUI_ImageBox.h>
#include <MyGUI_TextBox.h>
#include <components/widgets/box.hpp>
#include "windowbase.hpp" #include "windowbase.hpp"
namespace MWGui namespace MWGui
@ -10,10 +15,54 @@ namespace MWGui
public: public:
ControllerButtonsOverlay(); ControllerButtonsOverlay();
void setButtonStr(const std::string& buttonStr); void setButtons(ControllerButtonStr* buttons);
private: private:
MyGUI::TextBox* mButtonStr; MyGUI::ImageBox* mImageA;
MyGUI::TextBox* mTextA;
MyGUI::ImageBox* mImageB;
MyGUI::TextBox* mTextB;
MyGUI::ImageBox* mImageL1;
MyGUI::TextBox* mTextL1;
MyGUI::ImageBox* mImageL2;
MyGUI::TextBox* mTextL2;
MyGUI::ImageBox* mImageL3;
MyGUI::TextBox* mTextL3;
MyGUI::ImageBox* mImageLStick;
MyGUI::TextBox* mTextLStick;
MyGUI::ImageBox* mImageMenu;
MyGUI::TextBox* mTextMenu;
MyGUI::ImageBox* mImageR1;
MyGUI::TextBox* mTextR1;
MyGUI::ImageBox* mImageR2;
MyGUI::TextBox* mTextR2;
MyGUI::ImageBox* mImageR3;
MyGUI::TextBox* mTextR3;
MyGUI::ImageBox* mImageRStick;
MyGUI::TextBox* mTextRStick;
MyGUI::ImageBox* mImageView;
MyGUI::TextBox* mTextView;
MyGUI::ImageBox* mImageX;
MyGUI::TextBox* mTextX;
MyGUI::ImageBox* mImageY;
MyGUI::TextBox* mTextY;
Gui::HBox* mHBox;
int updateButton(MyGUI::TextBox* text, MyGUI::ImageBox* image, const std::string& buttonStr);
}; };
} }

View file

@ -218,6 +218,10 @@ namespace
} }
} }
mControllerButtons.a = "#{sSelect}";
mControllerButtons.x = "Quests";
mControllerButtons.y = "#{sTopics}";
mQuestMode = false; mQuestMode = false;
mAllQuests = false; mAllQuests = false;
mOptionsMode = false; mOptionsMode = false;
@ -669,14 +673,12 @@ namespace
} }
} }
std::string getButtonStr() override MWGui::ControllerButtonStr* getControllerButtons() override
{ {
if (mOptionsMode) mControllerButtons.b = mOptionsMode || mStates.size() > 1 ? "#{sBack}" : "#{sClose}";
return "(A) #{sSelect} (X) Quests (Y) #{sTopics} (B) #{sBack}"; mControllerButtons.l1 = mOptionsMode ? "" : "#{sPrev}";
else if (mStates.size() > 1) mControllerButtons.r1 = mOptionsMode ? "" : "#{sNext}";
return "(A) #{sSelect} (LB) #{sPrev} (RB) #{sNext} (X) Quests (Y) #{sTopics} (B) #{sBack}"; return &mControllerButtons;
else
return "(A) #{sSelect} (LB) #{sPrev} (RB) #{sNext} (X) Quests (Y) #{sTopics} (B) #{sClose}";
} }
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override

View file

@ -207,11 +207,6 @@ namespace MWGui
} }
} }
std::string MainMenu::getButtonStr()
{
return "";
}
bool MainMenu::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool MainMenu::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
// REMOVEME // REMOVEME

View file

@ -55,8 +55,6 @@ namespace MWGui
bool exit() override; bool exit() override;
std::string getButtonStr() override;
private: private:
const VFS::Manager* mVFS; const VFS::Manager* mVFS;

View file

@ -282,10 +282,13 @@ namespace MWGui
} }
} }
if (Settings::gui().mControllerMenus && mButtons.size() > 1) if (Settings::gui().mControllerMenus)
{ {
mControllerButtons.a = "#{sOk}";
// If we have more than one button, we need to set the focus to the first one. // If we have more than one button, we need to set the focus to the first one.
mButtons[0]->setStateSelected(true); if (mButtons.size() > 1)
mButtons[0]->setStateSelected(true);
} }
MyGUI::IntSize mainWidgetSize; MyGUI::IntSize mainWidgetSize;
@ -439,11 +442,6 @@ namespace MWGui
return mButtonPressed; return mButtonPressed;
} }
std::string InteractiveMessageBox::getButtonStr()
{
return "InteractiveMessageBox (A) #{sOk}";
}
bool InteractiveMessageBox::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool InteractiveMessageBox::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)

View file

@ -103,7 +103,6 @@ namespace MWGui
bool mMarkedToDelete; bool mMarkedToDelete;
std::string getButtonStr() override;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
private: private:

View file

@ -117,7 +117,15 @@ namespace MWGui
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onOkClicked); mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onOkClicked);
if (Settings::gui().mControllerMenus) if (Settings::gui().mControllerMenus)
{
mOkButton->setStateSelected(true); mOkButton->setStateSelected(true);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sBack}";
mControllerButtons.x = "#{sDone}";
mControllerButtons.y = "#{sSex}";
mControllerButtons.l1 = "#{sHair}";
mControllerButtons.r1 = "#{sFace}";
}
updateRaces(); updateRaces();
updateSkills(); updateSkills();
@ -463,11 +471,6 @@ namespace MWGui
} }
} }
std::string RaceDialog::getButtonStr()
{
return "(A) #{sSelect} (Y) #{sSex} (LB) #{sHair} (RB) #{sFace} (X) #{sDone} (B) #{sBack}";
}
bool RaceDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool RaceDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)

View file

@ -65,8 +65,6 @@ namespace MWGui
*/ */
EventHandle_WindowBase eventDone; EventHandle_WindowBase eventDone;
std::string getButtonStr() override;
protected: protected:
void onPreviewScroll(MyGUI::Widget* _sender, int _delta); void onPreviewScroll(MyGUI::Widget* _sender, int _delta);
void onHeadRotate(MyGUI::ScrollBar* _sender, size_t _position); void onHeadRotate(MyGUI::ScrollBar* _sender, size_t _position);

View file

@ -126,7 +126,12 @@ namespace MWGui
mButtons.push_back(okButton); mButtons.push_back(okButton);
if (Settings::gui().mControllerMenus) if (Settings::gui().mControllerMenus)
{
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sBack}";
mControllerButtons.x = "#{sDone}";
}
} }
void ReviewDialog::onOpen() void ReviewDialog::onOpen()
@ -537,11 +542,6 @@ namespace MWGui
MyGUI::IntPoint(0, static_cast<int>(mSkillView->getViewOffset().top + _rel * 0.3))); MyGUI::IntPoint(0, static_cast<int>(mSkillView->getViewOffset().top + _rel * 0.3)));
} }
std::string ReviewDialog::getButtonStr()
{
return "(A) #{sSelect} (X) #{sDone} (B) #{sBack}";
}
bool ReviewDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool ReviewDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)

View file

@ -62,8 +62,6 @@ namespace MWGui
EventHandle_Int eventActivateDialog; EventHandle_Int eventActivateDialog;
std::string getButtonStr() override;
protected: protected:
void onOkClicked(MyGUI::Widget* _sender); void onOkClicked(MyGUI::Widget* _sender);
void onBackClicked(MyGUI::Widget* _sender); void onBackClicked(MyGUI::Widget* _sender);

View file

@ -66,6 +66,8 @@ namespace MWGui
trackFocusEvents(mCancelButton); trackFocusEvents(mCancelButton);
trackFocusEvents(mDeleteButton); trackFocusEvents(mDeleteButton);
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sClose}";
} }
void SaveGameDialog::onSlotActivated(MyGUI::ListBox* sender, size_t pos) void SaveGameDialog::onSlotActivated(MyGUI::ListBox* sender, size_t pos)
@ -504,12 +506,10 @@ namespace MWGui
mScreenshot->setRenderItemTexture(mScreenshotTexture.get()); mScreenshot->setRenderItemTexture(mScreenshotTexture.get());
} }
std::string SaveGameDialog::getButtonStr() ControllerButtonStr* SaveGameDialog::getControllerButtons()
{ {
if (mSaving) mControllerButtons.y = mSaving ? "" : "Select Character";
return "(A) #{sSelect} (B) #{sClose}"; return &mControllerButtons;
else
return "(A) #{sSelect} (Y) Select Character (B) #{sClose}";
} }
bool SaveGameDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool SaveGameDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)

View file

@ -24,7 +24,7 @@ namespace MWGui
void setLoadOrSave(bool load); void setLoadOrSave(bool load);
std::string getButtonStr() override; ControllerButtonStr* getControllerButtons() override;
private: private:
void confirmDeleteSave(); void confirmDeleteSave();

View file

@ -41,6 +41,9 @@ namespace MWGui
mCloseButton->eventKeyButtonPressed += MyGUI::newDelegate(this, &ScrollWindow::onKeyButtonPressed); mCloseButton->eventKeyButtonPressed += MyGUI::newDelegate(this, &ScrollWindow::onKeyButtonPressed);
mTakeButton->eventKeyButtonPressed += MyGUI::newDelegate(this, &ScrollWindow::onKeyButtonPressed); mTakeButton->eventKeyButtonPressed += MyGUI::newDelegate(this, &ScrollWindow::onKeyButtonPressed);
mControllerButtons.b = "#{sClose}";
mControllerButtons.rStick = "#{sScrolldown}";
center(); center();
} }
@ -126,12 +129,10 @@ namespace MWGui
BookWindowBase::onClose(); BookWindowBase::onClose();
} }
std::string ScrollWindow::getButtonStr() ControllerButtonStr* ScrollWindow::getControllerButtons()
{ {
if (mTakeButton->getVisible()) mControllerButtons.a = mTakeButton->getVisible() ? "#{sTake}" : "";
return "(A) #{sTake} (RS) #{sScrolldown} (B) #{sClose}"; return &mControllerButtons;
else
return "(A) #{sTake} (RS) #{sScrolldown} (B) #{sClose}";
} }
bool ScrollWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool ScrollWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)

View file

@ -25,7 +25,7 @@ namespace MWGui
std::string_view getWindowIdForLua() const override { return "Scroll"; } std::string_view getWindowIdForLua() const override { return "Scroll"; }
std::string getButtonStr() override; ControllerButtonStr* getControllerButtons() override;
protected: protected:
void onCloseButtonClicked(MyGUI::Widget* _sender); void onCloseButtonClicked(MyGUI::Widget* _sender);

View file

@ -459,6 +459,11 @@ namespace MWGui
i++; i++;
} }
mControllerButtons.a = "#{sSelect}";
mControllerButtons.b = "#{sOk}";
mControllerButtons.l1 = "#{sPrev} Tab";
mControllerButtons.r1 = "#{sNext} Tab";
} }
void SettingsWindow::onTabChanged(MyGUI::TabControl* /*_sender*/, size_t /*index*/) void SettingsWindow::onTabChanged(MyGUI::TabControl* /*_sender*/, size_t /*index*/)
@ -1129,11 +1134,6 @@ namespace MWGui
mControlsBox->setViewOffset(MyGUI::IntPoint(0, 0)); mControlsBox->setViewOffset(MyGUI::IntPoint(0, 0));
} }
std::string SettingsWindow::getButtonStr()
{
return "(A) #{sSelect} (LB) #{sPrev} Tab (RB) #{sNext} Tab (B) #{sOk}";
}
bool SettingsWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool SettingsWindow::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_B) if (arg.button == SDL_CONTROLLER_BUTTON_B)

View file

@ -26,7 +26,6 @@ namespace MWGui
void onResChange(int, int) override; void onResChange(int, int) override;
std::string getButtonStr() override;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
protected: protected:

View file

@ -25,6 +25,8 @@ namespace MWGui
// Make sure the edit box has focus // Make sure the edit box has focus
MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit); MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit);
mControllerButtons.a = "#{sOk}";
} }
void TextInputDialog::setNextButtonShow(bool shown) void TextInputDialog::setNextButtonShow(bool shown)
@ -83,11 +85,6 @@ namespace MWGui
mTextEdit->setCaption(text); mTextEdit->setCaption(text);
} }
std::string TextInputDialog::getButtonStr()
{
return "(A) #{sOk}";
}
bool TextInputDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool TextInputDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
{ {
if (arg.button == SDL_CONTROLLER_BUTTON_A) if (arg.button == SDL_CONTROLLER_BUTTON_A)

View file

@ -24,8 +24,6 @@ namespace MWGui
*/ */
EventHandle_WindowBase eventDone; EventHandle_WindowBase eventDone;
std::string getButtonStr() override;
protected: protected:
void onOkClicked(MyGUI::Widget* _sender); void onOkClicked(MyGUI::Widget* _sender);
void onTextAccepted(MyGUI::EditBox* _sender); void onTextAccepted(MyGUI::EditBox* _sender);

View file

@ -86,6 +86,8 @@ namespace MWGui
trackFocusEvents(mCancelButton); trackFocusEvents(mCancelButton);
for (MyGUI::Widget* widget : mHourSlider->getAllWidgets()) for (MyGUI::Widget* widget : mHourSlider->getAllWidgets())
trackFocusEvents(widget); trackFocusEvents(widget);
mControllerButtons.b = "#{sCancel}";
} }
void WaitDialog::setPtr(const MWWorld::Ptr& ptr) void WaitDialog::setPtr(const MWWorld::Ptr& ptr)
@ -332,17 +334,11 @@ namespace MWGui
} }
} }
std::string WaitDialog::getButtonStr() ControllerButtonStr* WaitDialog::getControllerButtons()
{ {
if (mSleeping) mControllerButtons.a = mSleeping ? "#{sRest}" : "#{sWait}";
{ mControllerButtons.x = mSleeping && mUntilHealedButton->getVisible() ? "#{sUntilHealed}" : "";
if (mUntilHealedButton->getVisible()) return &mControllerButtons;
return "(X) #{sUntilHealed} (A) #{sRest} (B) #{sCancel}";
else
return "(A) #{sRest} (B) #{sCancel}";
}
else
return "(A) #{sWait} (B) #{sCancel}";
} }
bool WaitDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) bool WaitDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)

View file

@ -47,7 +47,7 @@ namespace MWGui
std::string_view getWindowIdForLua() const override { return "WaitDialog"; } std::string_view getWindowIdForLua() const override { return "WaitDialog"; }
std::string getButtonStr() override; ControllerButtonStr* getControllerButtons() override;
protected: protected:
MyGUI::TextBox* mDateTimeText; MyGUI::TextBox* mDateTimeText;

View file

@ -14,6 +14,24 @@ namespace MWGui
{ {
class DragAndDrop; class DragAndDrop;
struct ControllerButtonStr
{
std::string a;
std::string b;
std::string l1;
std::string l2;
std::string l3;
std::string lStick;
std::string menu;
std::string r1;
std::string r2;
std::string r3;
std::string rStick;
std::string view;
std::string x;
std::string y;
};
class WindowBase : public Layout class WindowBase : public Layout
{ {
public: public:
@ -62,12 +80,13 @@ namespace MWGui
// REMOVEME // REMOVEME
// virtual bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) = 0; // virtual bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) = 0;
// virtual bool onControllerThumbstickEvent(const SDL_ControllerAxisEvent& arg) = 0; // virtual bool onControllerThumbstickEvent(const SDL_ControllerAxisEvent& arg) = 0;
virtual std::string getButtonStr() { return ""; } virtual ControllerButtonStr* getControllerButtons() { return &mControllerButtons; }
virtual void setActiveControllerWindow(bool active) { mActiveControllerWindow = active; } virtual void setActiveControllerWindow(bool active) { mActiveControllerWindow = active; }
protected: protected:
virtual void onTitleDoubleClicked(); virtual void onTitleDoubleClicked();
ControllerButtonStr mControllerButtons;
MyGUI::Widget* mMouseFocus = nullptr; MyGUI::Widget* mMouseFocus = nullptr;
bool mActiveControllerWindow = false; bool mActiveControllerWindow = false;
void trackFocusEvents(MyGUI::Widget* widget); void trackFocusEvents(MyGUI::Widget* widget);

View file

@ -2561,19 +2561,7 @@ namespace MWGui
return; return;
} }
std::string buttonStr = topWin->getButtonStr(); // setButtons will handle setting visibility based on if any buttons are defined.
// REMOVEME mControllerButtonsOverlay->setButtons(topWin->getControllerButtons());
Log(Debug::Error) << "WindowManager::updateControllerButtonsOverlay: showing overlay: " << buttonStr;
if (buttonStr.length() > 0)
{
mControllerButtonsOverlay->setButtonStr(buttonStr);
mControllerButtonsOverlay->setVisible(true);
}
else
{
// REMOVEME
Log(Debug::Error) << "WindowManager::updateControllerButtonsOverlay: ...psych, hiding it";
mControllerButtonsOverlay->setVisible(false);
}
} }
} }

View file

@ -10,6 +10,20 @@ set(BUILTIN_DATA_FILES
textures/omw_menu_scroll_center_h.dds textures/omw_menu_scroll_center_h.dds
textures/omw_menu_scroll_center_v.dds textures/omw_menu_scroll_center_v.dds
textures/omw_menu_icon_active.dds textures/omw_menu_icon_active.dds
textures/omw_steam_button_a.dds
textures/omw_steam_button_b.dds
textures/omw_steam_button_l1.dds
textures/omw_steam_button_l2.dds
textures/omw_steam_button_l3.dds
textures/omw_steam_button_lstick.dds
textures/omw_steam_button_menu.dds
textures/omw_steam_button_r1.dds
textures/omw_steam_button_r2.dds
textures/omw_steam_button_r3.dds
textures/omw_steam_button_rstick.dds
textures/omw_steam_button_view.dds
textures/omw_steam_button_x.dds
textures/omw_steam_button_y.dds
textures/omw/water_nm.png textures/omw/water_nm.png
fonts/DejaVuFontLicense.txt fonts/DejaVuFontLicense.txt

View file

@ -4,15 +4,194 @@
<Widget type="Window" skin="BlackBG" layer="ControllerButtons" position="0 0 800 48" align="HStretch Bottom" name="_Main"> <Widget type="Window" skin="BlackBG" layer="ControllerButtons" position="0 0 800 48" align="HStretch Bottom" name="_Main">
<Property key="Visible" value="false"/> <Property key="Visible" value="false"/>
<Widget type="HBox" position="0 0 800 48" align="Center Bottom"> <Widget type="HBox" position="0 0 800 48" align="Center Bottom" name="ButtonBox">
<Property key="Padding" value="0"/>
<Property key="Spacing" value="0"/>
<Widget type="Spacer"/> <Widget type="Spacer"/>
<Widget type="TextBox" skin="HeaderText" position="0 0 800 48" name="ButtonStr" align="HStretch">
<Property key="Caption" value="[LT] #{sMenuPrevXbox} (LB) #{sPrev} (A) #{sSelect} (B) #{sBack} (RB) #{sNext} [RT] #{sMenuNextXbox}"/> <Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnLStickImage">
<Property key="TextAlign" value="Center"/> <Property key="ImageTexture" value="textures\omw_steam_button_lstick.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnLStickText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/> <Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/> <Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/> <Property key="ReadOnly" value="true"/>
</Widget> </Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnRStickImage">
<Property key="ImageTexture" value="textures\omw_steam_button_rstick.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnRStickText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnAImage">
<Property key="ImageTexture" value="textures\omw_steam_button_a.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnAText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnMenuImage">
<Property key="ImageTexture" value="textures\omw_steam_button_menu.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnMenuText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnViewImage">
<Property key="ImageTexture" value="textures\omw_steam_button_view.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnViewText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnL1Image">
<Property key="ImageTexture" value="textures\omw_steam_button_l1.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnL1Text">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnR1Image">
<Property key="ImageTexture" value="textures\omw_steam_button_r1.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnR1Text">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnXImage">
<Property key="ImageTexture" value="textures\omw_steam_button_x.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnXText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnYImage">
<Property key="ImageTexture" value="textures\omw_steam_button_y.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnYText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnL3Image">
<Property key="ImageTexture" value="textures\omw_steam_button_l3.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnL3Text">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnR3Image">
<Property key="ImageTexture" value="textures\omw_steam_button_r3.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnR3Text">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnL2Image">
<Property key="ImageTexture" value="textures\omw_steam_button_l2.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnL2Text">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnR2Image">
<Property key="ImageTexture" value="textures\omw_steam_button_r2.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnR2Text">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="ImageBox" skin="ImageBox" align="Stretch" position="0 0 24 24" name="BtnBImage">
<Property key="ImageTexture" value="textures\omw_steam_button_b.dds"/>
<Property key="Colour" value="#ccb589"/>
<Property key="Alpha" value="0.7"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" align="Center" position="0 0 0 48" name="BtnBText">
<Property key="Caption" value=""/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
<Property key="ReadOnly" value="true"/>
</Widget>
<Widget type="Spacer"/> <Widget type="Spacer"/>
</Widget> </Widget>
</Widget> </Widget>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.