//----------------------------------------------- // getString // //----------------------------------------------- ucstring CClientChatManager::getString( CBitMemStream& bms, ucstring& ucstr ) { // deal with parameters uint32 dynParamIdx = 0; bool dynParamSearch = true; char chTmp[1024]; while( dynParamSearch ) { // search if a parameter exists in the string sprintf(chTmp,"$%d",dynParamIdx); ucstring ucstrTmp( chTmp ); ucstring::size_type idx = ucstr.find(ucstrTmp); // if there's a parameter in the string if( idx != ucstring::npos ) { char c = (char)ucstr[idx+ucstrTmp.size()]; switch( c ) { // parameter is an entry in the dynamic database case 'e': { bool huff; bms.serialBit(huff); const ucstring dynStr("???"); if( huff ) { nldebug("<CClientChatManager::getString> receiving huffman dynamic parameter in static string"); // #ifdef OLD_STRING_SYSTEM // _DynamicDB.decodeString( dynStr, bms ); // #endif } else { //if( (sint32)bms.length()*8 - bms.getPosInBit() >= 32 ) { uint32 nameIndex; bms.serial(nameIndex); // #ifdef OLD_STRING_SYSTEM // dynStr = _DynamicDB.getDynamicStringInfos(nameIndex)->Str; // #endif } } ucstr.replace( idx, ucstrTmp.size()+1, dynStr ); } break; // parameter is a string case 's': { string dynStr; bms.serial( dynStr ); ucstring ucDynStr(dynStr); ucstr.replace( idx, ucstrTmp.size()+1, ucDynStr ); } break; // parameter is an unsigned integer case 'u': { uint32 nb; bms.serial( nb ); ucstr.replace( idx, ucstrTmp.size()+1, ucstring(toString(nb)) ); } break; /* case 'u': { uint i = idx + strTmp.size() + 1; string bitCountStr; while( isdigit(str[i]) ) { bitCountStr += str[i]; i++; } nlassert( !bitCountStr.empty() ); uint32 bitCount; fromString(bitCountStr, bitCount); nlassert( bitCount <= 64 ); uint64 nb; bms.serial( nb, bitCount ); str.replace( idx, strTmp.size() + 1 + bitCountStr.size(), toString(nb) ); } break; */ // parameter is a signed integer case 'i': { sint32 nb; bms.serial( nb ); ucstr.replace( idx, ucstrTmp.size()+1, ucstring(toString(nb)) ); } break; /* case 'i': { uint i = idx + strTmp.size() + 1; string bitCountStr; while( isdigit(str[i]) ) { bitCountStr += str[i]; i++; } nlassert( !bitCountStr.empty() ); uint32 bitCount; fromString(bitCountStr, bitCount); nlassert( bitCount <= 64 ); uint64 nb; bms.serial( nb, bitCount ); str.replace( idx, strTmp.size() + 1 + bitCountStr.size(), toString(nb) ); } break; */ // parameter is a float case 'f': { float nb; bms.serial( nb ); ucstr.replace( idx, ucstrTmp.size()+1, ucstring(toString(nb)) ); } break; // parameter type is unknown default : { nlwarning("<CClientChatManager::getString> The dynamic type %c is unknown",c); } } dynParamIdx++; } else { dynParamSearch = false; } }; return ucstr; } // getString //
bool CI18N::parseMarkedString(ucchar openMark, ucchar closeMark, ucstring::const_iterator &it, ucstring::const_iterator &last, ucstring &result, uint32 *lineCounter, bool allowNewline) { result.erase(); // parse a string delimited by the specified opening and closing mark if (it != last && *it == openMark) { ++it; while (it != last && *it != closeMark && (allowNewline || *it != '\n')) { // ignore tab, new lines and line feed if (*it == openMark) { nlwarning("I18N: Found a non escaped openmark %c in a delimited string (Delimiters : '%c' - '%c')", char(openMark), char(openMark), char(closeMark)); return false; } if (*it == '\t' || (*it == '\n' && allowNewline) || *it == '\r') ++it; else if (*it == '\\' && it+1 != last && *(it+1) != '\\') { ++it; // this is an escape sequence ! switch(*it) { case 't': result.push_back('\t'); break; case 'n': result.push_back('\n'); break; case 'd': // insert a delete result.push_back(8); break; default: // escape the close mark ? if(*it == closeMark) result.push_back(closeMark); // escape the open mark ? else if(*it == openMark) result.push_back(openMark); else { nlwarning("I18N: Ignoring unknown escape code \\%c (char value : %u)", char(*it), *it); return false; } } ++it; } else if (*it == '\\' && it+1 != last && *(it+1) == '\\') { // escape the \ char ++it; result.push_back(*it); ++it; } else { if (*it == '\n' && lineCounter != NULL) // update line counter ++(*lineCounter); result.push_back(*it++); } } if (it == last || *it != closeMark) { nlwarning("I18N: Missing end of delimited string (Delimiters : '%c' - '%c')", char(openMark), char(closeMark)); return false; } else ++it; } else { nlwarning("I18N: Malformed or non existent delimited string (Delimiters : '%c' - '%c')", char(openMark), char(closeMark)); return false; } return true; }
void CDBStringUpdater::setStringLeaf(CCDBSynchronised *clientDB, ICDBStructNode *node, const ucstring &str, bool forceSending) { setStringLeaf(clientDB, node, str.toUtf8(), forceSending); }
void CUIDialog::windowSetText(HWND hDlg, int controlId, const ucstring &text) { sendDlgItemMessageUC(hDlg, controlId, WM_SETTEXT, 0, (LPARAM)text.c_str()); }
// Note: static method void CUIDialog::windowGetText(HWND hDlg, int controlId, ucstring &text) { text.resize(SendDlgItemMessage(hDlg, controlId, WM_GETTEXTLENGTH, 0, 0)); sendDlgItemMessageUC(hDlg, controlId, WM_GETTEXT, (WPARAM)text.size() + 1, (LPARAM)&text[0]); }
void CDynamicScenarioService::forwardIncarnChat(TChanID id,TDataSetRow senderId,ucstring sentence) { _Dms->forwardIncarnChat(id,senderId,sentence); nldebug("Forwarding dyn chat \"%s\" to dms",sentence.c_str()); }
// **************************************************************************** void CViewTextFormated::setFormatString(const ucstring &format) { _FormatString = format; if ( (_FormatString.size()>2) && (_FormatString[0] == 'u') && (_FormatString[1] == 'i')) _FormatString = NLMISC::CI18N::get (format.toString()); }
//********************************************************************************************************* void CInstanceMapDeco::CCtrlButtonEntity::getContextHelp(ucstring &help) const { //H_AUTO(R2_CCtrlButtonEntity_getContextHelp) help = _Instance.getDisplayName(); if (help == NLMISC::CI18N::get("uiR2EDNoName")) help.clear(); }