Use icons in general_text_field (#3944)

* Use icons in general_text_field

* Use icons for general_text_field

* Add </buttonbar>

* Use 4 spaces
This commit is contained in:
dumaosen 2019-05-29 01:14:01 +08:00 committed by Benau
parent d487a2e72e
commit dd9d5c89e1
2 changed files with 34 additions and 19 deletions

View File

@ -1,15 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<stkgui>
<div x="2%" y="10%" width="96%" height="80%" layout="vertical-row" >
<label id="title" raw_text="Text" proportion="1"/>
<div x="2%" y="6%" width="96%" height="88%" layout="vertical-row" >
<label id="title" raw_text="Text" height="36%"/>
<spacer height="7%" width="10" />
<textbox id="textfield" width="75%" align="center"/>
<spacer height="9%" width="10" />
<spacer height="7%" width="20" />
<button id="ok" I18N="In the general textfield dialog" text="OK" align="center" proportion="1"/>
<buttonbar id="buttons" height="36%" width="30%" align="center">
<spacer height="5%" width="20" />
<button id="cancel" I18N="In the general textfield dialog" text="Cancel" align="center" proportion="1"/>
<icon-button id="ok" width="128" height="128" icon="gui/icons/green_check.png"
I18N="In the general textfield dialog" text="OK" align="center"/>
<icon-button id="cancel" width="128" height="128" icon="gui/icons/remove.png"
I18N="In the general textfield dialog" text="Cancel" align="center"/>
</buttonbar>
</div>
</stkgui>

View File

@ -18,8 +18,9 @@
#include "states_screens/dialogs/general_text_field_dialog.hpp"
#include "guiengine/engine.hpp"
#include "guiengine/widgets/button_widget.hpp"
#include "guiengine/widgets/icon_button_widget.hpp"
#include "guiengine/widgets/label_widget.hpp"
#include "guiengine/widgets/ribbon_widget.hpp"
#include "guiengine/widgets/text_box_widget.hpp"
#include "states_screens/state_manager.hpp"
#include "utils/string_utils.hpp"
@ -60,18 +61,27 @@ GeneralTextFieldDialog::~GeneralTextFieldDialog()
// -----------------------------------------------------------------------------
GUIEngine::EventPropagation GeneralTextFieldDialog::processEvent(const std::string& eventSource)
{
if (eventSource == "cancel")
GUIEngine::RibbonWidget* buttons_ribbon =
getWidget<GUIEngine::RibbonWidget>("buttons");
if(eventSource == "buttons")
{
const std::string& button =
buttons_ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER);
if (button == "cancel")
{
dismiss();
return GUIEngine::EVENT_BLOCK;
}
else if (eventSource == "ok")
else if (button == "ok")
{
// If validation callback return true, dismiss the dialog
if (!m_self_destroy && m_val_cb(m_title, m_text_field))
m_self_destroy = true;
return GUIEngine::EVENT_BLOCK;
}
}
return GUIEngine::EVENT_LET;
} // processEvent
@ -79,7 +89,7 @@ GUIEngine::EventPropagation GeneralTextFieldDialog::processEvent(const std::stri
void GeneralTextFieldDialog::onEnterPressedInternal()
{
// Cancel button pressed
ButtonWidget* cancel_button = getWidget<ButtonWidget>("cancel");
IconButtonWidget* cancel_button = getWidget<IconButtonWidget>("cancel");
if (GUIEngine::isFocusedForPlayer(cancel_button, PLAYER_ID_GAME_MASTER))
{
std::string fake_event = "cancel";