Prefer UTF-8, cleanup, ryzom/ryzomcore#335

develop
kaetemi 4 years ago
parent 6ff5ddd790
commit 698bfff501

@ -64,13 +64,14 @@ namespace NLGUI
/// Accessors /// Accessors
std::string getInputString() const; std::string getInputString() const;
std::string getPrompt() const;
const u32string &getInputStringRef() const { return _InputString; } const u32string &getInputStringRef() const { return _InputString; }
const ucstring &getPrompt() const { return _Prompt; } const u32string &getPromptRef() const { return _Prompt; }
/** Set the prompt /** Set the prompt
* NB : line returns are encoded as '\n', not '\r\n' * NB : line returns are encoded as '\n', not '\r\n'
*/ */
void setPrompt(const ucstring &s) { _Prompt = s; } void setPrompt(const std::string &s);
void setInputString(const std::string &str); void setInputString(const std::string &str);
void setInputStringRef(const u32string &str) {_InputString = str; }; void setInputStringRef(const u32string &str) {_InputString = str; };
void setInputStringAsInt(sint32 val); void setInputStringAsInt(sint32 val);
@ -228,7 +229,7 @@ namespace NLGUI
NLMISC::CRGBA _BackSelectColor; NLMISC::CRGBA _BackSelectColor;
// Text info // Text info
ucstring _Prompt; u32string _Prompt;
u32string _InputString; u32string _InputString;
CViewText *_ViewText; CViewText *_ViewText;

@ -96,7 +96,7 @@ namespace NLGUI
_ViewTextDeltaX(0) _ViewTextDeltaX(0)
{ {
_Prompt = ">"; _Prompt = u32string(1, '>');
_BackSelectColor= CRGBA::White; _BackSelectColor= CRGBA::White;
_TextSelectColor= CRGBA::Black; _TextSelectColor= CRGBA::Black;
} }
@ -170,7 +170,7 @@ namespace NLGUI
else else
if( name == "prompt" ) if( name == "prompt" )
{ {
return _Prompt.toString(); return CUtfStringView(_Prompt).toUtf8();
} }
else else
if( name == "enter_type" ) if( name == "enter_type" )
@ -354,7 +354,7 @@ namespace NLGUI
else else
if( name == "prompt" ) if( name == "prompt" )
{ {
_Prompt = value; _Prompt = CUtfStringView(value).toUtf32();
return; return;
} }
else else
@ -477,7 +477,7 @@ namespace NLGUI
xmlSetProp( node, BAD_CAST "max_chars_size", BAD_CAST toString( _MaxCharsSize ).c_str() ); xmlSetProp( node, BAD_CAST "max_chars_size", BAD_CAST toString( _MaxCharsSize ).c_str() );
xmlSetProp( node, BAD_CAST "enter_loose_focus", BAD_CAST toString( _LooseFocusOnEnter ).c_str() ); xmlSetProp( node, BAD_CAST "enter_loose_focus", BAD_CAST toString( _LooseFocusOnEnter ).c_str() );
xmlSetProp( node, BAD_CAST "enter_recover_focus", BAD_CAST toString( _RecoverFocusOnEnter ).c_str() ); xmlSetProp( node, BAD_CAST "enter_recover_focus", BAD_CAST toString( _RecoverFocusOnEnter ).c_str() );
xmlSetProp( node, BAD_CAST "prompt", BAD_CAST _Prompt.toString().c_str() ); xmlSetProp( node, BAD_CAST "prompt", BAD_CAST CUtfStringView(_Prompt).toUtf8().c_str() );
std::string e; std::string e;
switch( _EntryType ) switch( _EntryType )
@ -606,7 +606,7 @@ namespace NLGUI
if (prop) _ResetFocusOnHide = convertBool(prop); if (prop) _ResetFocusOnHide = convertBool(prop);
prop = (char*) xmlGetProp( cur, (xmlChar*)"prompt" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"prompt" );
if (prop) _Prompt = (const char*)prop; if (prop) _Prompt = CUtfStringView((const char*)prop).toUtf32();
prop = (char*) xmlGetProp( cur, (xmlChar*)"entry_type" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"entry_type" );
_EntryType = Text; _EntryType = Text;
@ -1436,13 +1436,13 @@ namespace NLGUI
ucstring usTmp; ucstring usTmp;
if (_EntryType == Password) if (_EntryType == Password)
{ {
usTmp = _Prompt; usTmp = CUtfStringView(_Prompt).toUtf16();
for (uint32 i = 0; i < _InputString.size(); ++i) for (uint32 i = 0; i < _InputString.size(); ++i)
usTmp += "*"; usTmp += "*";
} }
else else
{ {
usTmp = _Prompt + CUtfStringView(_InputString).toUtf16(); usTmp = CUtfStringView(_Prompt + _InputString).toUtf16();
} }
_ViewText->setText (usTmp); _ViewText->setText (usTmp);
} }
@ -1624,6 +1624,12 @@ namespace NLGUI
} }
// ----------------------------------------------------------------------------
void CGroupEditBox::setPrompt(const std::string &s)
{
_Prompt = CUtfStringView(s).toUtf32();
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void CGroupEditBox::setInputString(const std::string &str) void CGroupEditBox::setInputString(const std::string &str)
@ -1742,6 +1748,12 @@ namespace NLGUI
CInterfaceGroup::setActive(active); CInterfaceGroup::setActive(active);
} }
// ***************************************************************************
std::string CGroupEditBox::getPrompt() const
{
return NLMISC::CUtfStringView(_Prompt).toUtf8();
}
// *************************************************************************** // ***************************************************************************
std::string CGroupEditBox::getInputString() const std::string CGroupEditBox::getInputString() const
{ {

@ -288,11 +288,11 @@ class CAHEditGotoLineBegin : public CAHEdit
// go to the start of line // go to the start of line
if (_GroupEdit->getViewText()) if (_GroupEdit->getViewText())
{ {
sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPrompt().length()); sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPromptRef().length());
if (line == -1) return; if (line == -1) return;
sint newPos = std::max(_GroupEdit->getViewText()->getLineStartIndex(line), (sint) _GroupEdit->getPrompt().length()); sint newPos = std::max(_GroupEdit->getViewText()->getLineStartIndex(line), (sint) _GroupEdit->getPromptRef().length());
if (newPos == -1) return; if (newPos == -1) return;
_GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPrompt().length()); _GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPromptRef().length());
_GroupEdit->setCursorAtPreviousLineEnd(false); _GroupEdit->setCursorAtPreviousLineEnd(false);
} }
} }
@ -310,20 +310,20 @@ class CAHEditGotoLineEnd : public CAHEdit
{ {
if (_GroupEdit->getViewText()->getMultiLine()) if (_GroupEdit->getViewText()->getMultiLine())
{ {
sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPrompt().length(), _GroupEdit->isCursorAtPreviousLineEnd()); sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPromptRef().length(), _GroupEdit->isCursorAtPreviousLineEnd());
if (line == -1) return; if (line == -1) return;
sint newPos; sint newPos;
bool endOfPreviousLine; bool endOfPreviousLine;
_GroupEdit->getViewText()->getLineEndIndex(line, newPos, endOfPreviousLine); _GroupEdit->getViewText()->getLineEndIndex(line, newPos, endOfPreviousLine);
if (newPos != -1) if (newPos != -1)
{ {
_GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPrompt().length()); _GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPromptRef().length());
_GroupEdit->setCursorAtPreviousLineEnd(endOfPreviousLine); _GroupEdit->setCursorAtPreviousLineEnd(endOfPreviousLine);
} }
} }
else else
{ {
_GroupEdit->setCursorPos((sint32)_GroupEdit->getPrompt().length() + (sint32)_GroupEdit->getInputString().length()); _GroupEdit->setCursorPos((sint32)_GroupEdit->getPromptRef().length() + (sint32)_GroupEdit->getInputString().length());
} }
} }
} }
@ -378,7 +378,7 @@ class CAHEditPreviousLine : public CAHEdit
} }
else if (_GroupEdit->getViewText()->getMultiLine()) else if (_GroupEdit->getViewText()->getMultiLine())
{ {
uint cursorPosInText = _GroupEdit->getCursorPos() + (uint)_GroupEdit->getPrompt().length(); uint cursorPosInText = _GroupEdit->getCursorPos() + (uint)_GroupEdit->getPromptRef().length();
if ( if (
(_GroupEdit->getCursorPos() == (sint32) _GroupEdit->getInputStringRef().length() && _GroupEdit->getViewText()->getNumLine() == 1) || (_GroupEdit->getCursorPos() == (sint32) _GroupEdit->getInputStringRef().length() && _GroupEdit->getViewText()->getNumLine() == 1) ||
_GroupEdit->getViewText()->getLineFromIndex(cursorPosInText, _GroupEdit->isCursorAtPreviousLineEnd()) == 0 _GroupEdit->getViewText()->getLineFromIndex(cursorPosInText, _GroupEdit->isCursorAtPreviousLineEnd()) == 0
@ -396,7 +396,7 @@ class CAHEditPreviousLine : public CAHEdit
_GroupEdit->getViewText()->getCharacterIndexFromPosition(cx, cy, newCharIndex, newLineEnd); _GroupEdit->getViewText()->getCharacterIndexFromPosition(cx, cy, newCharIndex, newLineEnd);
if (newLineEnd) if (newLineEnd)
{ {
_GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPrompt().length()); _GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPromptRef().length());
_GroupEdit->setCursorAtPreviousLineEnd(true); _GroupEdit->setCursorAtPreviousLineEnd(true);
sint32 newPos = _GroupEdit->getCursorPos(); sint32 newPos = _GroupEdit->getCursorPos();
clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size()); clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size());
@ -417,7 +417,7 @@ class CAHEditPreviousLine : public CAHEdit
{ {
_GroupEdit->setCursorPos(newCharIndex + 1); _GroupEdit->setCursorPos(newCharIndex + 1);
} }
_GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPrompt().length()); _GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPromptRef().length());
sint32 newpos = _GroupEdit->getCursorPos(); sint32 newpos = _GroupEdit->getCursorPos();
clamp(newpos, (sint32) 0, (sint32)_GroupEdit->getInputStringRef().size()); clamp(newpos, (sint32) 0, (sint32)_GroupEdit->getInputStringRef().size());
_GroupEdit->setCursorPos(newpos); _GroupEdit->setCursorPos(newpos);
@ -452,7 +452,7 @@ class CAHEditNextLine : public CAHEdit
{ {
float cx, cy; float cx, cy;
float height; float height;
_GroupEdit->getViewText()->getCharacterPositionFromIndex(_GroupEdit->getCursorPos() + (sint)_GroupEdit->getPrompt().length(), _GroupEdit->isCursorAtPreviousLineEnd(), cx, cy, height); _GroupEdit->getViewText()->getCharacterPositionFromIndex(_GroupEdit->getCursorPos() + (sint)_GroupEdit->getPromptRef().length(), _GroupEdit->isCursorAtPreviousLineEnd(), cx, cy, height);
if (cy != 0) if (cy != 0)
{ {
cy -= height; cy -= height;
@ -461,7 +461,7 @@ class CAHEditNextLine : public CAHEdit
_GroupEdit->getViewText()->getCharacterIndexFromPosition(cx, cy, newCharIndex, newLineEnd); _GroupEdit->getViewText()->getCharacterIndexFromPosition(cx, cy, newCharIndex, newLineEnd);
if (newLineEnd) if (newLineEnd)
{ {
_GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPrompt().length()); _GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPromptRef().length());
_GroupEdit->setCursorAtPreviousLineEnd(true); _GroupEdit->setCursorAtPreviousLineEnd(true);
sint32 newPos = _GroupEdit->getCursorPos(); sint32 newPos = _GroupEdit->getCursorPos();
clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size()); clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size());
@ -480,9 +480,9 @@ class CAHEditNextLine : public CAHEdit
} }
else else
{ {
_GroupEdit->setCursorPos(min(sint32(newCharIndex + 1), sint32(_GroupEdit->getInputStringRef().length() + _GroupEdit->getPrompt().length()))); _GroupEdit->setCursorPos(min(sint32(newCharIndex + 1), sint32(_GroupEdit->getInputStringRef().length() + _GroupEdit->getPromptRef().length())));
} }
_GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPrompt().length()); _GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPromptRef().length());
sint32 newPos = _GroupEdit->getCursorPos(); sint32 newPos = _GroupEdit->getCursorPos();
clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size()); clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size());
_GroupEdit->setCursorPos(newPos); _GroupEdit->setCursorPos(newPos);

@ -262,7 +262,7 @@ void CChatWindow::setPrompt(const ucstring &prompt)
if (!_Chat) return; if (!_Chat) return;
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(_Chat->getGroup("eb")); CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(_Chat->getGroup("eb"));
if (!eb) return; if (!eb) return;
eb->setPrompt(prompt); eb->setPrompt(prompt.toUtf8());
} }
void CChatWindow::setPromptColor(NLMISC::CRGBA col) void CChatWindow::setPromptColor(NLMISC::CRGBA col)

Loading…
Cancel
Save