mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-08-18 06:55:48 +03:00
Added Translator support for the UI elements created from xml, access with "@string/key".
--HG-- branch : dev
This commit is contained in:
@@ -1050,7 +1050,7 @@ void UIListBox::loadFromXmlNode(const pugi::xml_node & node) {
|
||||
std::string data = item.text().as_string();
|
||||
|
||||
if ( data.size() ) {
|
||||
items.push_back( String( data ) );
|
||||
items.push_back( UIManager::instance()->getTranslatorString( data ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -287,35 +287,19 @@ const Uint32& UIManager::getLastPressTrigger() const {
|
||||
return mKM->getLastPressTrigger();
|
||||
}
|
||||
|
||||
void UIManager::clipPlaneEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height ) {
|
||||
GLi->getClippingMask()->clipPlaneEnable( x, y, Width, Height );
|
||||
}
|
||||
|
||||
void UIManager::clipPlaneDisable() {
|
||||
GLi->getClippingMask()->clipPlaneDisable();
|
||||
}
|
||||
|
||||
void UIManager::clipEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height ) {
|
||||
GLi->getClippingMask()->clipEnable( x, y, Width, Height );
|
||||
}
|
||||
|
||||
void UIManager::clipDisable() {
|
||||
GLi->getClippingMask()->clipDisable();
|
||||
}
|
||||
|
||||
void UIManager::clipSmartEnable(UIControl * ctrl, const Int32 & x, const Int32 & y, const Uint32 & Width, const Uint32 & Height) {
|
||||
if ( ctrl->isMeOrParentTreeScaledOrRotated() ) {
|
||||
clipPlaneEnable( x, y, Width, Height );
|
||||
GLi->getClippingMask()->clipPlaneEnable( x, y, Width, Height );
|
||||
} else {
|
||||
clipEnable( x, y, Width, Height );
|
||||
GLi->getClippingMask()->clipEnable( x, y, Width, Height );
|
||||
}
|
||||
}
|
||||
|
||||
void UIManager::clipSmartDisable(UIControl * ctrl) {
|
||||
if ( ctrl->isMeOrParentTreeScaledOrRotated() ) {
|
||||
clipPlaneDisable();
|
||||
GLi->getClippingMask()->clipPlaneDisable();
|
||||
} else {
|
||||
clipDisable();
|
||||
GLi->getClippingMask()->clipDisable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,6 +508,21 @@ void UIManager::loadLayoutNodes( pugi::xml_node node, UIControl * parent ) {
|
||||
}
|
||||
}
|
||||
|
||||
void UIManager::setTranslator( Translator translator ) {
|
||||
mTranslator = translator;
|
||||
}
|
||||
|
||||
String UIManager::getTranslatorString( const std::string & str ) {
|
||||
if ( String::startsWith( str, "@string/" ) ) {
|
||||
String tstr = mTranslator.getString( str.substr( 8 ) );
|
||||
|
||||
if ( !tstr.empty() )
|
||||
return tstr;
|
||||
}
|
||||
|
||||
return String( str );
|
||||
}
|
||||
|
||||
void UIManager::loadLayoutFromFile( const std::string& layoutPath, UIControl * parent ) {
|
||||
if ( FileSystem::fileExists( layoutPath ) ) {
|
||||
pugi::xml_document doc;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <eepp/graphics/drawablesearcher.hpp>
|
||||
#include <eepp/helper/pugixml/pugixml.hpp>
|
||||
#include <eepp/ui/uipopupmenu.hpp>
|
||||
#include <eepp/ui/uimanager.hpp>
|
||||
|
||||
namespace EE { namespace UI {
|
||||
|
||||
@@ -551,14 +552,14 @@ void UIMenu::loadFromXmlNode( const pugi::xml_node& node ) {
|
||||
if ( name == "menuitem" || name == "item" ) {
|
||||
std::string text( item.attribute("text").as_string() );
|
||||
std::string icon( item.attribute("icon").as_string() );
|
||||
add( String( text ), getIconDrawable( icon ) );
|
||||
add( UIManager::instance()->getTranslatorString( text ), getIconDrawable( icon ) );
|
||||
} else if ( name == "menuseparator" || name == "separator" ) {
|
||||
addSeparator();
|
||||
} else if ( name == "menucheckbox" || name == "checkbox" ) {
|
||||
std::string text( item.attribute("text").as_string() );
|
||||
bool active( item.attribute("active").as_bool() );
|
||||
|
||||
addCheckBox( String( text ), active );
|
||||
addCheckBox( UIManager::instance()->getTranslatorString( text ), active );
|
||||
} else if ( name == "menusubmenu" || name == "submenu" ) {
|
||||
std::string text( item.attribute("text").as_string() );
|
||||
std::string icon( item.attribute("icon").as_string() );
|
||||
@@ -567,7 +568,7 @@ void UIMenu::loadFromXmlNode( const pugi::xml_node& node ) {
|
||||
|
||||
subMenu->loadFromXmlNode( item );
|
||||
|
||||
addSubMenu( String( text ), getIconDrawable( icon ), subMenu );
|
||||
addSubMenu( UIManager::instance()->getTranslatorString( text ), getIconDrawable( icon ), subMenu );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include <eepp/graphics/text.hpp>
|
||||
#include <eepp/helper/pugixml/pugixml.hpp>
|
||||
#include <eepp/graphics/globaltextureatlas.hpp>
|
||||
#include <eepp/ui/uimanager.hpp>
|
||||
|
||||
namespace EE { namespace UI {
|
||||
|
||||
@@ -345,7 +346,7 @@ void UIPushButton::loadFromXmlNode(const pugi::xml_node & node) {
|
||||
String::toLowerInPlace( name );
|
||||
|
||||
if ( "text" == name ) {
|
||||
setText( ait->as_string() );
|
||||
setText( UIManager::instance()->getTranslatorString( ait->as_string() ) );
|
||||
} else if ( "textovercolor" == name ) {
|
||||
setFontOverColor( Color::fromString( ait->as_string() ) );
|
||||
} else if ( "icon" == name ) {
|
||||
|
||||
@@ -445,7 +445,7 @@ void UITextEdit::loadFromXmlNode(const pugi::xml_node & node) {
|
||||
String::toLowerInPlace( name );
|
||||
|
||||
if ( "text" == name ) {
|
||||
setText( ait->as_string() );
|
||||
setText( UIManager::instance()->getTranslatorString( ait->as_string() ) );
|
||||
} else if ( "allowediting" == name ) {
|
||||
setAllowEditing( ait->as_bool() );
|
||||
} else if ( "verticalscrollmode" == name || "vscrollmode" == name ) {
|
||||
|
||||
@@ -335,7 +335,7 @@ void UITextInput::loadFromXmlNode(const pugi::xml_node & node) {
|
||||
String::toLowerInPlace( name );
|
||||
|
||||
if ( "text" == name ) {
|
||||
setText( ait->as_string() );
|
||||
setText( UIManager::instance()->getTranslatorString( ait->as_string() ) );
|
||||
} else if ( "allowediting" == name ) {
|
||||
setAllowEditing( ait->as_bool() );
|
||||
} else if ( "maxlength" == name ) {
|
||||
|
||||
@@ -487,7 +487,7 @@ void UITextView::loadFromXmlNode(const pugi::xml_node & node) {
|
||||
String::toLowerInPlace( name );
|
||||
|
||||
if ( "text" == name ) {
|
||||
setText( ait->as_string() );
|
||||
setText( UIManager::instance()->getTranslatorString( ait->as_string() ) );
|
||||
} else if ( "textcolor" == name ) {
|
||||
setFontColor( Color::fromString( ait->as_string() ) );
|
||||
} else if ( "textshadowcolor" == name ) {
|
||||
|
||||
@@ -306,7 +306,7 @@ void UIWinMenu::loadFromXmlNode( const pugi::xml_node& node ) {
|
||||
|
||||
subMenu->loadFromXmlNode( item );
|
||||
|
||||
addMenuButton( String( text ), subMenu );
|
||||
addMenuButton( UIManager::instance()->getTranslatorString( text ), subMenu );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,12 +14,11 @@ void EETest::init() {
|
||||
Log::instance()->setLiveWrite( true );
|
||||
Log::instance()->setConsoleOutput( true );
|
||||
|
||||
Translator t;
|
||||
|
||||
t.loadFromString(
|
||||
mTranslator.loadFromString(
|
||||
"<resources language='en'>"
|
||||
" <string name='app_name'>eepp</string>"
|
||||
" <string name='formatted'>Test %d %s</string>"
|
||||
" <string name='test_item'>Test Item 2</string>"
|
||||
"</resources>"
|
||||
);
|
||||
|
||||
@@ -287,6 +286,7 @@ void EETest::createUI() {
|
||||
Uint32 UI_MAN_OPS = 0;
|
||||
//UI_MAN_OPS = UI_MANAGER_HIGHLIGHT_FOCUS | UI_MANAGER_HIGHLIGHT_OVER | UI_MANAGER_DRAW_DEBUG_DATA | UI_MANAGER_DRAW_BOXES;
|
||||
UIManager::instance()->init(UI_MAN_OPS);
|
||||
UIManager::instance()->setTranslator( mTranslator );
|
||||
|
||||
//mTheme = UITheme::loadFromFile( UIThemeDefault::New( mThemeName, mThemeName ), MyPath + mThemeName + "/" );
|
||||
|
||||
@@ -725,7 +725,7 @@ void EETest::createNewUI() {
|
||||
" <TextInput text='test' layout_width='match_parent' layout_height='wrap_content' />"
|
||||
" <DropDownList layout_width='match_parent' layout_height='wrap_content' selectedIndex='0'>"
|
||||
" <item>Test Item</item>"
|
||||
" <item>Test Item 2</item>"
|
||||
" <item>@string/test_item</item>"
|
||||
" </DropDownList>"
|
||||
" <ListBox layout_width='match_parent' layout_height='match_parent' layout_weight='1'>"
|
||||
" <item>Hello!</item>"
|
||||
|
||||
@@ -143,6 +143,7 @@ class EETest : private Thread {
|
||||
VertexBuffer * mVBO;
|
||||
|
||||
Clock mFTE;
|
||||
Translator mTranslator;
|
||||
|
||||
void createCommonDialog();
|
||||
void onItemClick( const UIEvent * Event );
|
||||
|
||||
Reference in New Issue
Block a user