diff --git a/code/nel/include/nel/misc/common.h b/code/nel/include/nel/misc/common.h index 4ddc88076..0617ad560 100644 --- a/code/nel/include/nel/misc/common.h +++ b/code/nel/include/nel/misc/common.h @@ -286,6 +286,15 @@ inline sint nlstricmp(const char *lhs, const std::string &rhs) { return stricmp( #define wideToUtf8(str) (ucstring((ucchar*)str).toUtf8()) #define utf8ToWide(str) ((wchar_t*)ucstring::makeFromUtf8(str).c_str()) +// macros helper to convert UTF-8 std::string and TCHAR* +#ifdef _UNICODE +#define tStrToUtf8(str) (ucstring((ucchar*)(LPCWSTR)str).toUtf8()) +#define utf8ToTStr(str) ((wchar_t*)ucstring::makeFromUtf8(str).c_str()) +#else +#define tStrToUtf8(str) ((LPCSTR)str) +#define utf8ToTStr(str) (str.c_str()) +#endif + // wrapper for fopen to be able to open files with an UTF-8 filename FILE* nlfopen(const std::string &filename, const std::string &mode); diff --git a/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.cpp b/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.cpp index 46a9a64c3..5d205285c 100644 --- a/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.cpp +++ b/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.cpp @@ -160,22 +160,22 @@ bool CMaxToLigo::loadLigoConfigFile (CLigoConfig& config, Interface& it, bool di // *************************************************************************** -void CMaxToLigo::errorMessage (const char *msg, const char *title, Interface& it, bool dialog) +void CMaxToLigo::errorMessage(const std::string &msg, const std::string &title, Interface& it, bool dialog) { // Text or dialog ? if (dialog) { // Dialog message - MessageBox (it.GetMAXHWnd(), msg, title, MB_OK|MB_ICONEXCLAMATION); + MessageBox (it.GetMAXHWnd(), utf8ToTStr(msg), utf8ToTStr(title), MB_OK|MB_ICONEXCLAMATION); } else { // Text message - mprintf ((string(msg) + "\n").c_str()); + mprintf (utf8ToTStr(msg + "\n")); } // Output in log - nlwarning ("LIGO ERROR : %s", msg); + nlwarning ("LIGO ERROR : %s", msg.c_str()); } // *************************************************************************** diff --git a/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.h b/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.h index 23bcfd0f2..e8b19073f 100644 --- a/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.h +++ b/code/nel/tools/3d/ligo/plugin_max/max_to_ligo.h @@ -70,7 +70,7 @@ public: * \param it if a max interface * \param dialog is true to see the message in a dilog, false to see it in the script window. */ - static void errorMessage (const char *msg, const char *title, Interface& it, bool dialog); + static void errorMessage (const std::string &msg, const std::string &title, Interface& it, bool dialog); }; } diff --git a/code/nel/tools/3d/ligo/plugin_max/script.cpp b/code/nel/tools/3d/ligo/plugin_max/script.cpp index 51335d922..134646cbd 100644 --- a/code/nel/tools/3d/ligo/plugin_max/script.cpp +++ b/code/nel/tools/3d/ligo/plugin_max/script.cpp @@ -326,8 +326,8 @@ Value* export_transition_cf (Value** arg_list, int count) // The second arg string matFilename[2]; - matFilename[0] = arg_list[2]->to_string(); - matFilename[1] = arg_list[3]->to_string(); + matFilename[0] = tStrToUtf8(arg_list[2]->to_string()); + matFilename[1] = tStrToUtf8(arg_list[3]->to_string()); // The third arg bool checkOnly = (arg_list[4]->to_bool() != FALSE); @@ -700,7 +700,7 @@ Value* check_zone_with_material_cf (Value** arg_list, int count) nlassert (node); // The second arg - string fileName = arg_list[1]->to_string(); + string fileName = tStrToUtf8(arg_list[1]->to_string()); // The fourth arg bool errorInDialog = (arg_list[2]->to_bool() != FALSE); @@ -834,7 +834,7 @@ Value* check_zone_with_transition_cf (Value** arg_list, int count) nlassert (node); // The second arg - string fileName = arg_list[1]->to_string(); + string fileName = tStrToUtf8(arg_list[1]->to_string()); // The second arg int transitionNumber = arg_list[2]->to_int(); @@ -1002,7 +1002,7 @@ Value* export_zone_cf (Value** arg_list, int count) nlassert (node); // The second arg - string fileName = arg_list[1]->to_string(); + string fileName = tStrToUtf8(arg_list[1]->to_string()); // The thrid arg Array *array = (Array*)arg_list[2]; @@ -1047,8 +1047,8 @@ Value* export_zone_cf (Value** arg_list, int count) type_check (cell->get(2), String, message); // Get the strings - categories[i].first = cell->get(1)->to_string(); - categories[i].second = cell->get(2)->to_string(); + categories[i].first = tStrToUtf8(cell->get(1)->to_string()); + categories[i].second = tStrToUtf8(cell->get(2)->to_string()); } // Get a Object pointer @@ -1369,7 +1369,7 @@ Value* get_error_string_cf (Value** arg_list, int count) int errorCode = arg_list[0]->to_int()-1; // Error code - return new String ((char*)CLigoError::getStringError ((CLigoError::TError)errorCode)); + return new String (utf8ToTStr(CLigoError::getStringError ((CLigoError::TError)errorCode))); } // *************************************************************************** @@ -1384,10 +1384,10 @@ Value* set_directory_cf (Value** arg_list, int count) type_check(arg_list[0], String, message); // The first arg - const char *dir = arg_list[0]->to_string(); + const std::string dir = tStrToUtf8(arg_list[0]->to_string()); // Set the directory - return (chdir (dir)==0)?&true_value:&false_value; + return (chdir (dir.c_str())==0)?&true_value:&false_value; } // *************************************************************************** @@ -1876,7 +1876,7 @@ Value* make_snapshot_cf (Value** arg_list, int count) nlassert (node); // The second arg - string fileName = arg_list[1]->to_string(); + string fileName = tStrToUtf8(arg_list[1]->to_string()); // The thrid arg int xMin = arg_list[2]->to_int(); diff --git a/code/nel/tools/3d/object_viewer/animation_set_dlg.cpp b/code/nel/tools/3d/object_viewer/animation_set_dlg.cpp index fc95e2ded..5dd4f64eb 100644 --- a/code/nel/tools/3d/object_viewer/animation_set_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/animation_set_dlg.cpp @@ -147,7 +147,7 @@ void CAnimationSetDlg::OnAddAnimation () CString name = path + filename; // Load the animation - _ObjView->loadAnimation (name, instance); + _ObjView->loadAnimation (tStrToUtf8(name), instance); // Touch the channel mixer _ObjView->reinitChannels (); @@ -158,7 +158,7 @@ void CAnimationSetDlg::OnAddAnimation () } catch (Exception& e) { - MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } } @@ -188,7 +188,7 @@ void CAnimationSetDlg::OnAddSkelWt() CString filename=fileDlg.GetNextPathName(pos); // Load the animation - _ObjView->loadSWT (filename, instance); + _ObjView->loadSWT (tStrToUtf8(filename), instance); // Touch the channel mixer _ObjView->reinitChannels (); @@ -199,7 +199,7 @@ void CAnimationSetDlg::OnAddSkelWt() } catch (Exception& e) { - MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } } @@ -233,9 +233,8 @@ void CAnimationSetDlg::refresh (BOOL update) uint i; for (i=0; i<_ObjView->getNumInstance (); i++) { - char name[512]; - _splitpath (_ObjView->getInstance (i)->Saved.ShapeFilename.c_str(), NULL, NULL, name, NULL); - EditedObject.InsertString (-1, name); + std::string name = NLMISC::CFile::getFilenameWithoutExtension(_ObjView->getInstance(i)->Saved.ShapeFilename); + EditedObject.InsertString (-1, utf8ToTStr(name)); } // Get edited object @@ -270,7 +269,7 @@ void CAnimationSetDlg::refresh (BOOL update) CAnimation *anim = object->AnimationSet.getAnimation (object->AnimationSet.getAnimationIdByName (name)); // Insert an intem - HTREEITEM item=Tree.InsertItem (name); + HTREEITEM item=Tree.InsertItem(utf8ToTStr(name)); Tree.SetItemData (item, i); nlassert (item!=NULL); @@ -281,7 +280,7 @@ void CAnimationSetDlg::refresh (BOOL update) while (ite!=setString.end()) { // Add this string - HTREEITEM newItem = Tree.InsertItem (ite->c_str(), item); + HTREEITEM newItem = Tree.InsertItem (utf8ToTStr(*ite), item); Tree.SetItemData (newItem, 0xffffffff); // Get the track @@ -296,20 +295,17 @@ void CAnimationSetDlg::refresh (BOOL update) keyTrack->getKeysInRange (track->getBeginTime ()-1, track->getEndTime ()+1, keys); // Print track info - char name[512]; - _snprintf (name, 512, "%s (%f - %f) %d keys", typeid(*track).name(), track->getBeginTime (), track->getEndTime (), keys.size()); - HTREEITEM keyItem = Tree.InsertItem (name, newItem); - Tree.SetItemData (keyItem, 0xffffffff); + name = toString("%s (%f - %f) %u keys", typeid(*track).name(), track->getBeginTime(), track->getEndTime(), (uint32)keys.size()); } else { // Print track info - char name[512]; - _snprintf (name, 512, "%s (%f - %f)", typeid(*track).name(), track->getBeginTime (), track->getEndTime ()); - HTREEITEM keyItem = Tree.InsertItem (name, newItem); - Tree.SetItemData (keyItem, 0xffffffff); + name = toString("%s (%f - %f)", typeid(*track).name(), track->getBeginTime(), track->getEndTime()); } + HTREEITEM keyItem = Tree.InsertItem(utf8ToTStr(name), newItem); + Tree.SetItemData(keyItem, 0xffffffff); + ite++; } } @@ -325,7 +321,7 @@ void CAnimationSetDlg::refresh (BOOL update) CSkeletonWeight *swt = object->AnimationSet.getSkeletonWeight (object->AnimationSet.getSkeletonWeightIdByName (name)); // Insert an intem - HTREEITEM item=SkelTree.InsertItem (name); + HTREEITEM item=SkelTree.InsertItem(utf8ToTStr(name)); nlassert (item!=NULL); // Get number of node in this skeleton weight @@ -334,11 +330,10 @@ void CAnimationSetDlg::refresh (BOOL update) // Add the nodein the tree for (uint n=0; ngetNodeName (n).c_str(), swt->getNodeWeight(n)*100); + std::string percent = toString("%s (%f%%)", swt->getNodeName(n).c_str(), swt->getNodeWeight(n)*100); // Add this string - SkelTree.InsertItem (percent, item); + SkelTree.InsertItem (utf8ToTStr(percent), item); } } @@ -346,7 +341,7 @@ void CAnimationSetDlg::refresh (BOOL update) for (i=0; iSaved.PlayList.size(); i++) { // Insert an intem - int item=PlayList.InsertString (-1, object->Saved.PlayList[i].c_str()); + int item=PlayList.InsertString (-1, utf8ToTStr(object->Saved.PlayList[i])); nlassert (item!=LB_ERR); } } @@ -374,7 +369,7 @@ void CAnimationSetDlg::refresh (BOOL update) // Insert an intem TCHAR text[512]; PlayList.GetText( i, text); - object->Saved.PlayList[i] = text; + object->Saved.PlayList[i] = tStrToUtf8(text); } CDialog::UpdateData (update); diff --git a/code/nel/tools/3d/object_viewer/attrib_dlg.cpp b/code/nel/tools/3d/object_viewer/attrib_dlg.cpp index bfce1dd3a..674e7f307 100644 --- a/code/nel/tools/3d/object_viewer/attrib_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/attrib_dlg.cpp @@ -355,7 +355,7 @@ void CAttribDlg::init(HBITMAP bitmap, sint x, sint y, CWnd *pParent) for (uint k = 0; k < getNumScheme(); ++k) { - m_Scheme.InsertString(k, getSchemeName(k).c_str()); + m_Scheme.InsertString(k, utf8ToTStr(getSchemeName(k))); } diff --git a/code/nel/tools/3d/object_viewer/choose_name.cpp b/code/nel/tools/3d/object_viewer/choose_name.cpp index 787cf6f80..91dbf8d40 100644 --- a/code/nel/tools/3d/object_viewer/choose_name.cpp +++ b/code/nel/tools/3d/object_viewer/choose_name.cpp @@ -22,7 +22,7 @@ // CChooseName dialog -CChooseName::CChooseName(const TCHAR *initialName, CWnd* pParent /*=NULL*/) +CChooseName::CChooseName(const CString &initialName, CWnd* pParent /*=NULL*/) : CDialog(CChooseName::IDD, pParent) { //{{AFX_DATA_INIT(CChooseName) @@ -33,7 +33,7 @@ CChooseName::CChooseName(const TCHAR *initialName, CWnd* pParent /*=NULL*/) std::string CChooseName::getName() { - return std::string(m_Name); + return tStrToUtf8(m_Name); } void CChooseName::DoDataExchange(CDataExchange* pDX) diff --git a/code/nel/tools/3d/object_viewer/choose_name.h b/code/nel/tools/3d/object_viewer/choose_name.h index 5bccfdd16..a4a66e128 100644 --- a/code/nel/tools/3d/object_viewer/choose_name.h +++ b/code/nel/tools/3d/object_viewer/choose_name.h @@ -32,7 +32,7 @@ class CChooseName : public CDialog { // Construction public: - CChooseName(const TCHAR *initialName, CWnd* pParent = NULL); // standard constructor + CChooseName(const CString &initialName, CWnd* pParent = NULL); // standard constructor std::string getName(); diff --git a/code/nel/tools/3d/object_viewer/choose_pool_id.cpp b/code/nel/tools/3d/object_viewer/choose_pool_id.cpp index dcb8b325b..3653e72d1 100644 --- a/code/nel/tools/3d/object_viewer/choose_pool_id.cpp +++ b/code/nel/tools/3d/object_viewer/choose_pool_id.cpp @@ -52,10 +52,11 @@ void CChoosePoolID::OnOK() { CString val; GetDlgItem(IDC_POOL_ID)->GetWindowText(val); - if (::sscanf((LPCTSTR) val, "%d", &PoolID) == 1) + + if (NLMISC::fromString(tStrToUtf8(val), PoolID)) { GetDlgItem(IDC_POOL_NAME)->GetWindowText(val); - Name = (LPCTSTR) val; + Name = tStrToUtf8(val); CDialog::OnOK(); } else @@ -67,10 +68,12 @@ void CChoosePoolID::OnOK() BOOL CChoosePoolID::OnInitDialog() { CDialog::OnInitDialog(); - char val[128]; - sprintf(val, "%d", PoolID); - GetDlgItem(IDC_POOL_ID)->SetWindowText(val); - GetDlgItem(IDC_POOL_NAME)->SetWindowText(Name.c_str()); + + std::string val = NLMISC::toString(PoolID); + + GetDlgItem(IDC_POOL_ID)->SetWindowText(utf8ToTStr(val)); + GetDlgItem(IDC_POOL_NAME)->SetWindowText(utf8ToTStr(Name)); + if (_FreezeID) { GetDlgItem(IDC_POOL_ID)->EnableWindow(FALSE); diff --git a/code/nel/tools/3d/object_viewer/create_file_dlg.cpp b/code/nel/tools/3d/object_viewer/create_file_dlg.cpp index e42191f0b..7735eef48 100644 --- a/code/nel/tools/3d/object_viewer/create_file_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/create_file_dlg.cpp @@ -72,7 +72,7 @@ BOOL CCreateFileDlg::OnInitDialog() { CDialog::OnInitDialog(); SetWindowText((LPCTSTR) _Title); - GetDlgItem(IDC_LOCATION)->SetWindowText(_DefaultBasePath.c_str()); + GetDlgItem(IDC_LOCATION)->SetWindowText(utf8ToTStr(_DefaultBasePath)); if (!_DefaultBasePath.empty()) { GetDlgItem(IDC_FILENAME)->SetFocus(); @@ -90,10 +90,10 @@ void CCreateFileDlg::OnOK() { CString filename; GetDlgItem(IDC_FILENAME)->GetWindowText(filename); - _Filename = (LPCTSTR) filename; + _Filename = tStrToUtf8(filename); CString location; GetDlgItem(IDC_LOCATION)->GetWindowText(location); - _Path = (LPCTSTR) location; + _Path = tStrToUtf8(location); if (_Path.empty()) { localizedMessageBox(*this, IDS_EMPTY_PATH, IDS_ERROR, MB_ICONEXCLAMATION); diff --git a/code/nel/tools/3d/object_viewer/direction_attr.cpp b/code/nel/tools/3d/object_viewer/direction_attr.cpp index 666fd60e0..047457390 100644 --- a/code/nel/tools/3d/object_viewer/direction_attr.cpp +++ b/code/nel/tools/3d/object_viewer/direction_attr.cpp @@ -173,7 +173,7 @@ void CDirectionAttr::OnDestroy() void CDirectionAttr::OnGlobalDirection() { nlassert(_DirectionWrapper); - CChooseName chooseName(_DirectionWrapper->getGlobalVectorValueName().c_str()); + CChooseName chooseName(utf8ToTStr(_DirectionWrapper->getGlobalVectorValueName())); if (chooseName.DoModal() == IDOK) { diff --git a/code/nel/tools/3d/object_viewer/edit_ex.cpp b/code/nel/tools/3d/object_viewer/edit_ex.cpp index 2f77f2631..a48b4642f 100644 --- a/code/nel/tools/3d/object_viewer/edit_ex.cpp +++ b/code/nel/tools/3d/object_viewer/edit_ex.cpp @@ -76,7 +76,7 @@ std::string CEditEx::getString() const { TCHAR buf[128]; GetWindowText(buf, sizeof(buf)); - return std::string(buf); + return tStrToUtf8(buf); } void CEditEx::setSInt(sint value) @@ -130,21 +130,25 @@ void CEditEx::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) bool CEditEx::isValid() { - int iValue; - float fValue; switch(_Type) { case SIntType: - return sscanf(getString().c_str(), "%d", &iValue) == 1; - break; + { + sint value; + return NLMISC::fromString(getString(), value); + } case UIntType: - return sscanf(getString().c_str(), "%d", &iValue) == 1 && iValue >= 0; - break; + { + uint value; + return NLMISC::fromString(getString(), value); + } case FloatType: - return sscanf(getString().c_str(), "%f", &fValue) == 1; - break; - default: - return true; - break; + { + float value; + return NLMISC::fromString(getString(), value); + } + default: break; } + + return true; } diff --git a/code/nel/tools/3d/object_viewer/edit_morph_mesh_dlg.cpp b/code/nel/tools/3d/object_viewer/edit_morph_mesh_dlg.cpp index a9c461154..afcc75e34 100644 --- a/code/nel/tools/3d/object_viewer/edit_morph_mesh_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/edit_morph_mesh_dlg.cpp @@ -101,7 +101,7 @@ bool CEditMorphMeshDlg::getShapeNameFromDlg(std::string &name) NLMISC::CPath::addSearchPath (path); */ - name = fd.GetPathName(); + name = tStrToUtf8(fd.GetPathName()); return true; } @@ -135,7 +135,7 @@ void CEditMorphMeshDlg::OnAdd() _CM->setShapes(&shapeNames[0], (uint)shapeNames.size()); std::vector numVerts; _CM->getShapeNumVerts(numVerts); - m_MeshList.AddString(getShapeDescStr(index, numVerts[index]).c_str()); + m_MeshList.AddString(utf8ToTStr(getShapeDescStr(index, numVerts[index]))); GetDlgItem(IDC_REMOVE)->EnableWindow(TRUE); } touchPSState(); @@ -265,7 +265,7 @@ void CEditMorphMeshDlg::updateMeshList() m_MeshList.ResetContent(); for (uint k = 0; k < _CM->getNumShapes(); ++k) { - m_MeshList.AddString(getShapeDescStr(k, numVerts[k]).c_str()); + m_MeshList.AddString(utf8ToTStr(getShapeDescStr(k, numVerts[k]))); } m_MeshList.SetCurSel(0); updateValidFlag(); @@ -322,12 +322,12 @@ std::string CEditMorphMeshDlg::getShapeDescStr(uint shapeIndex, sint numVerts) c { CString verts; verts.LoadString(IDS_VERTICES); - std::string msg = _CM->getShape(shapeIndex) + " (" + NLMISC::toString(numVerts) + " " + (LPCTSTR) verts + ")"; + std::string msg = _CM->getShape(shapeIndex) + " (" + NLMISC::toString(numVerts) + " " + tStrToUtf8(verts) + ")"; return msg; } else { - std::string result = _CM->getShape(shapeIndex) + " (" + (LPCTSTR) CMeshDlg::getShapeErrorString(numVerts) + ")"; + std::string result = _CM->getShape(shapeIndex) + " (" + tStrToUtf8(CMeshDlg::getShapeErrorString(numVerts)) + ")"; return result; } } diff --git a/code/nel/tools/3d/object_viewer/edit_ps_sound.cpp b/code/nel/tools/3d/object_viewer/edit_ps_sound.cpp index 891818a43..40406c2fa 100644 --- a/code/nel/tools/3d/object_viewer/edit_ps_sound.cpp +++ b/code/nel/tools/3d/object_viewer/edit_ps_sound.cpp @@ -195,7 +195,7 @@ void CEditPSSound::OnChangeSoundName() { nlassert(_Sound); UpdateData(); - _Sound->setSoundName(NLMISC::CSheetId((LPCTSTR)m_SoundName, "sound")); + _Sound->setSoundName(NLMISC::CSheetId(tStrToUtf8(m_SoundName), "sound")); updateModifiedFlag(); } @@ -209,7 +209,7 @@ void CEditPSSound::OnSpawn() // play the currently selected sound void CEditPSSound::OnPlaySound() { - CSoundSystem::play(std::string((LPCTSTR)m_SoundName)); + CSoundSystem::play(tStrToUtf8(m_SoundName)); } void CEditPSSound::OnMute() diff --git a/code/nel/tools/3d/object_viewer/emitter_dlg.cpp b/code/nel/tools/3d/object_viewer/emitter_dlg.cpp index 5f81a84f0..e4864cfe6 100644 --- a/code/nel/tools/3d/object_viewer/emitter_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/emitter_dlg.cpp @@ -85,7 +85,7 @@ void CEmitterDlg::initEmittedType() NL3D::CPSLocated *loc = dynamic_cast(ps->getProcess(k)); if (loc) // is this a located { - m_EmittedTypeCtrl.AddString(loc->getName().c_str()); + m_EmittedTypeCtrl.AddString(utf8ToTStr(loc->getName())); _LocatedList.push_back(loc); if (loc == _Emitter->getEmittedType()) { diff --git a/code/nel/tools/3d/object_viewer/lb_extern_id_dlg.cpp b/code/nel/tools/3d/object_viewer/lb_extern_id_dlg.cpp index d5df57f39..9ea2d51a9 100644 --- a/code/nel/tools/3d/object_viewer/lb_extern_id_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/lb_extern_id_dlg.cpp @@ -119,7 +119,7 @@ void CLBExternIDDlg::OnChangeIdValue() TCHAR buf[6]; ::memset(buf, 0, 6); GetDlgItem(IDC_ID_VALUE)->GetWindowText(buf, 6); - _ID = StringToID(buf); + _ID = StringToID(tStrToUtf8(buf).c_str()); if (_ID) { GetDlgItem(IDOK)->EnableWindow(TRUE); diff --git a/code/nel/tools/3d/object_viewer/located_bindable_dialog.cpp b/code/nel/tools/3d/object_viewer/located_bindable_dialog.cpp index 04cc31848..73337e3a5 100644 --- a/code/nel/tools/3d/object_viewer/located_bindable_dialog.cpp +++ b/code/nel/tools/3d/object_viewer/located_bindable_dialog.cpp @@ -114,7 +114,7 @@ void CLocatedBindableDialog::init(CParticleDlg* pParent) // z-test ((CButton *) GetDlgItem(IDC_ZTEST))->SetCheck(material->isZTestEnabled() ? BST_CHECKED : BST_UNCHECKED); // z-bias - GetDlgItem(IDC_ZBIAS)->SetWindowText(NLMISC::toString("%.2f", -material->getZBias()).c_str()); + GetDlgItem(IDC_ZBIAS)->SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", -material->getZBias()))); } else { diff --git a/code/nel/tools/3d/object_viewer/located_properties.cpp b/code/nel/tools/3d/object_viewer/located_properties.cpp index 27ff466e1..b270e9d7f 100644 --- a/code/nel/tools/3d/object_viewer/located_properties.cpp +++ b/code/nel/tools/3d/object_viewer/located_properties.cpp @@ -322,7 +322,7 @@ void CLocatedProperties::goPostRender() _MaxNbParticles->update(); } // in all cases, show the current number of particles being used - GetDlgItem(IDC_CURR_NUM_PARTS)->SetWindowText(NLMISC::toString(_Located->getSize()).c_str()); + GetDlgItem(IDC_CURR_NUM_PARTS)->SetWindowText(utf8ToTStr(NLMISC::toString(_Located->getSize()))); } //**************************************************************************************************************** diff --git a/code/nel/tools/3d/object_viewer/located_target_dlg.cpp b/code/nel/tools/3d/object_viewer/located_target_dlg.cpp index 1785fe892..fb84877ad 100644 --- a/code/nel/tools/3d/object_viewer/located_target_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/located_target_dlg.cpp @@ -112,8 +112,8 @@ void CLocatedTargetDlg::OnAddTarget() nlassert(loc); _LBTarget->attachTarget(loc); m_AvailableTargets.DeleteString(indexs[k] - k); - int l = m_Targets.AddString(loc->getName().c_str()); - m_Targets.SetItemData(l, (DWORD) loc); + int l = m_Targets.AddString(utf8ToTStr(loc->getName())); + m_Targets.SetItemData(l, (DWORD_PTR) loc); } UpdateData(FALSE); // @@ -135,7 +135,7 @@ void CLocatedTargetDlg::OnRemoveTarget() nlassert(loc); _LBTarget->detachTarget(loc); m_Targets.DeleteString(indexs[k] - k); - int l = m_AvailableTargets.AddString(loc->getName().c_str()); + int l = m_AvailableTargets.AddString(utf8ToTStr(loc->getName())); m_AvailableTargets.SetItemData(l, (DWORD) loc); } diff --git a/code/nel/tools/3d/object_viewer/main_frame.cpp b/code/nel/tools/3d/object_viewer/main_frame.cpp index 696bcaab3..f862160b7 100644 --- a/code/nel/tools/3d/object_viewer/main_frame.cpp +++ b/code/nel/tools/3d/object_viewer/main_frame.cpp @@ -574,7 +574,7 @@ void CMainFrame::OnFileLoadconfig() { // Open the file CIFile file; - if (file.open ((const char*)fileDlg.GetPathName())) + if (file.open(tStrToUtf8(fileDlg.GetPathName()))) { try { @@ -592,7 +592,7 @@ void CMainFrame::OnFileLoadconfig() } catch (Exception& e) { - MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } else @@ -685,7 +685,7 @@ void CMainFrame::OnFileOpen() if (name.Find(_T(".ig")) != -1) { // Load the instance group - if (ObjView->loadInstanceGroup (name)) + if (ObjView->loadInstanceGroup (tStrToUtf8(name))) { // Reset the camera OnResetCamera(); @@ -697,7 +697,7 @@ void CMainFrame::OnFileOpen() else { // Add it in the array - meshFilename.push_back ((const char*)name); + meshFilename.push_back (tStrToUtf8(name)); } } @@ -710,7 +710,7 @@ void CMainFrame::OnFileOpen() if (fileDlg2.DoModal()==IDOK) { // Load the shape with a skeleton - if (ObjView->loadMesh (meshFilename, fileDlg2.GetPathName())) + if (ObjView->loadMesh (meshFilename, tStrToUtf8(fileDlg2.GetPathName()))) { // Reset the camera OnResetCamera(); @@ -756,7 +756,7 @@ void CMainFrame::OnFileSaveconfig() } // Open the file COFile file; - if (file.open ((const char*)fileDlg.GetPathName())) + if (file.open (tStrToUtf8(fileDlg.GetPathName()))) { try { @@ -764,7 +764,7 @@ void CMainFrame::OnFileSaveconfig() } catch (Exception& e) { - MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } else @@ -832,7 +832,7 @@ void CMainFrame::OnViewSetmovespeed() if (valueDlg.DoModal ()==IDOK) { // Get deflaut value - sscanf ((const char*)valueDlg.Value, "%f", &MoveSpeed); + NLMISC::fromString(tStrToUtf8(valueDlg.Value), MoveSpeed); } } @@ -1392,9 +1392,10 @@ void CMainFrame::OnViewSetSceneRotation() if (sceneRotDlg.DoModal() == IDOK) { // read value. - _LastSceneRotX= (float)atof(sceneRotDlg.RotX); - _LastSceneRotY= (float)atof(sceneRotDlg.RotY); - _LastSceneRotZ= (float)atof(sceneRotDlg.RotZ); + NLMISC::fromString(tStrToUtf8(sceneRotDlg.RotX), _LastSceneRotX); + NLMISC::fromString(tStrToUtf8(sceneRotDlg.RotY), _LastSceneRotY); + NLMISC::fromString(tStrToUtf8(sceneRotDlg.RotZ), _LastSceneRotZ); + float rotx= degToRad(_LastSceneRotX); float roty= degToRad(_LastSceneRotY); float rotz= degToRad(_LastSceneRotZ); @@ -1441,7 +1442,8 @@ void CMainFrame::OnUpdateSceneCamera(CCmdUI* pCmdUI) { CInstanceInfo *instance = ObjView->getInstance (ObjView->getCameraInstance (pCmdUI->m_nID - ID_SCENE_CAMERA_FIRST)); nlassert (instance->Camera); - pCmdUI->SetText (("Camera "+instance->Saved.ShapeFilename).c_str ()); + std::string text = NLMISC::toString("Camera %s", instance->Saved.ShapeFilename.c_str()); + pCmdUI->SetText(utf8ToTStr(text)); } else { diff --git a/code/nel/tools/3d/object_viewer/mesh_dlg.cpp b/code/nel/tools/3d/object_viewer/mesh_dlg.cpp index 39bb75624..935cb3373 100644 --- a/code/nel/tools/3d/object_viewer/mesh_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/mesh_dlg.cpp @@ -114,7 +114,7 @@ void CMeshDlg::OnBrowseShape() } catch (NLMISC::Exception &e) { - MessageBox(e.what(), "shape loading error"); + MessageBox(utf8ToTStr(e.what()), _T("shape loading error")); } updateMeshErrorString(); } diff --git a/code/nel/tools/3d/object_viewer/multi_tex_dlg.cpp b/code/nel/tools/3d/object_viewer/multi_tex_dlg.cpp index 118a2572b..fc0c294ca 100644 --- a/code/nel/tools/3d/object_viewer/multi_tex_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/multi_tex_dlg.cpp @@ -165,19 +165,19 @@ void CMultiTexDlg::readValues(bool alternate) char buf[128]; if (!alternate) { - sprintf(buf, "%.3f", _MTP->getScrollSpeed(0).x); GetDlgItem(IDC_U_SPEED_1)->SetWindowText(buf); - sprintf(buf, "%.3f", _MTP->getScrollSpeed(0).y); GetDlgItem(IDC_V_SPEED_1)->SetWindowText(buf); - sprintf(buf, "%.3f", _MTP->getScrollSpeed(1).x); GetDlgItem(IDC_U_SPEED_2)->SetWindowText(buf); - sprintf(buf, "%.3f", _MTP->getScrollSpeed(1).y); GetDlgItem(IDC_V_SPEED_2)->SetWindowText(buf); + GetDlgItem(IDC_U_SPEED_1)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getScrollSpeed(0).x))); + GetDlgItem(IDC_V_SPEED_1)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getScrollSpeed(0).y))); + GetDlgItem(IDC_U_SPEED_2)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getScrollSpeed(1).x))); + GetDlgItem(IDC_V_SPEED_2)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getScrollSpeed(1).y))); } else { if (_MTP->isAlternateTexEnabled()) { - sprintf(buf, "%.3f", _MTP->getAlternateScrollSpeed(0).x); GetDlgItem(IDC_U_SPEED_1_ALTERNATE)->SetWindowText(buf); - sprintf(buf, "%.3f", _MTP->getAlternateScrollSpeed(0).y); GetDlgItem(IDC_V_SPEED_1_ALTERNATE)->SetWindowText(buf); - sprintf(buf, "%.3f", _MTP->getAlternateScrollSpeed(1).x); GetDlgItem(IDC_U_SPEED_2_ALTERNATE)->SetWindowText(buf); - sprintf(buf, "%.3f", _MTP->getAlternateScrollSpeed(1).y); GetDlgItem(IDC_V_SPEED_2_ALTERNATE)->SetWindowText(buf); + GetDlgItem(IDC_U_SPEED_1_ALTERNATE)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getAlternateScrollSpeed(0).x))); + GetDlgItem(IDC_V_SPEED_1_ALTERNATE)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getAlternateScrollSpeed(0).y))); + GetDlgItem(IDC_U_SPEED_2_ALTERNATE)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getAlternateScrollSpeed(1).x))); + GetDlgItem(IDC_V_SPEED_2_ALTERNATE)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getAlternateScrollSpeed(1).y))); } else { @@ -187,7 +187,6 @@ void CMultiTexDlg::readValues(bool alternate) GetDlgItem(IDC_V_SPEED_2_ALTERNATE)->SetWindowText(_T("")); } } - sprintf(buf, "%.3f", _MTP->getBumpFactor()); GetDlgItem(IDC_BUMP_FACTOR)->SetWindowText(buf); } diff --git a/code/nel/tools/3d/object_viewer/object_viewer.cpp b/code/nel/tools/3d/object_viewer/object_viewer.cpp index 2cdba880c..0abd848c4 100644 --- a/code/nel/tools/3d/object_viewer/object_viewer.cpp +++ b/code/nel/tools/3d/object_viewer/object_viewer.cpp @@ -284,9 +284,10 @@ std::string CObjectViewer::getModulePath() const TCHAR sModulePath[256]; int res = GetModuleFileName(hModule, sModulePath, 256); nlassert(res); nldebug("Object viewer module path is '%s'", sModulePath); - _splitpath (sModulePath, SDrive, SDir, NULL, NULL); - _makepath (sModulePath, SDrive, SDir, "object_viewer", ".cfg"); - return sModulePath; + + std::string path = NLMISC::CFile::getPath(tStrToUtf8(sModulePath)); + + return NLMISC::CPath::standardizeDosPath(path) + "object_viewer.cfg"; } @@ -535,7 +536,7 @@ void CObjectViewer::loadConfigFile() } catch (Exception& e) { - ::MessageBox (NULL, e.what(), "Objectviewer.cfg", MB_OK|MB_ICONEXCLAMATION); + ::MessageBox (NULL, utf8ToTStr(e.what()), _T("Objectviewer.cfg"), MB_OK|MB_ICONEXCLAMATION); } } @@ -615,14 +616,14 @@ bool CObjectViewer::initUI (HWND parent) // The windows path uint dSize = ::GetWindowsDirectory(NULL, 0); nlverify(dSize); - char *wd = new char[dSize]; + + TCHAR *wd = new TCHAR[dSize]; nlverify(::GetWindowsDirectory(wd, dSize)); - _FontPath=wd; - _FontPath+="\\fonts\\arial.ttf"; + _FontPath = tStrToUtf8(wd) + "\\fonts\\arial.ttf"; + delete[] wd; // The font generator _FontGenerator = NL3D::newCFontGenerator ( _FontPath ); - delete[] wd; // The viewport CViewport viewport; @@ -823,7 +824,8 @@ bool CObjectViewer::initUI (HWND parent) } catch (NLMISC::EStream &e) { - ::MessageBox(NULL, ("Unable to load the default scheme bank file : " + std::string(e.what())).c_str(), "Object Viewer", MB_ICONEXCLAMATION); + std::string msg = toString("Unable to load the default scheme bank file : %s", e.what()); + ::MessageBox(NULL, utf8ToTStr(msg), _T("Object Viewer"), MB_ICONEXCLAMATION); } } iF.close(); @@ -838,7 +840,8 @@ bool CObjectViewer::initUI (HWND parent) } catch (Exception& e) { - ::MessageBox (NULL, (std::string("error while loading default.ovcgf : ") + e.what()).c_str(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string msg = toString("Error while loading default.ovcgf : %s", e.what()); + ::MessageBox (NULL, utf8ToTStr(msg), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } @@ -1286,7 +1289,6 @@ void CObjectViewer::go () sint64 timeDiff = newTime - lastTime; float fps = timeDiff > 0 ? (float)(1.0 / NLMISC::CTime::ticksToSecond (newTime-lastTime)) : 1000.0f; lastTime=newTime; - char msgBar[1024]; uint nbPlayingSources, nbSources; if (CSoundSystem::getAudioMixer()) { @@ -1299,17 +1301,19 @@ void CObjectViewer::go () } // Display std info. - sprintf (msgBar, "%s - Nb tri: %d -Texture used (Mo): %5.2f - Texture allocated (Mo): %5.2f - Distance: %5.0f - Sounds: %d/%d - Fps: %03.1f", - _Direct3d?"Direct3d":"OpenGL", - in.NLines+in.NPoints+in.NQuads*2+in.NTriangles+in.NTriangleStrips, (float)CNELU::Driver->getUsedTextureMemory () / (float)(1024*1024), - (float)CNELU::Driver->profileAllocatedTextureMemory () / (float)(1024*1024), - (_SceneCenter-CNELU::Camera->getMatrix().getPos()).norm(), - nbPlayingSources, - nbSources, - fps - ); + std::string msgBar = toString("%s - Nb tri: %u - Texture used (MiB): %5.2f - Texture allocated (MiB): %5.2f - Distance: %5.0f - Sounds: %u/%u - Fps: %03.1f", + _Direct3d ? "Direct3d":"OpenGL", + in.NLines+in.NPoints+in.NQuads*2+in.NTriangles+in.NTriangleStrips, + (float)CNELU::Driver->getUsedTextureMemory () / (float)(1024*1024), + (float)CNELU::Driver->profileAllocatedTextureMemory () / (float)(1024*1024), + (_SceneCenter-CNELU::Camera->getMatrix().getPos()).norm(), + nbPlayingSources, + nbSources, + fps + ); + // Display - _MainFrame->StatusBar.SetWindowText (msgBar); + _MainFrame->StatusBar.SetWindowText (utf8ToTStr(msgBar)); // Display Vegetable info. if(_VegetableDlg!=NULL) @@ -1790,9 +1794,8 @@ void CObjectViewer::serial (NLMISC::IStream& f) else { // Error message - char message[512]; - smprintf (message, 512, "File not found %s", readed[i].ShapeFilename.c_str()); - _MainFrame->MessageBox (message, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string message = toString("File not found %s", readed[i].ShapeFilename.c_str()); + _MainFrame->MessageBox (utf8ToTStr(message), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); // Stop loading break; @@ -1826,9 +1829,8 @@ void CObjectViewer::serial (NLMISC::IStream& f) catch (Exception &e) { // Error message - char message[512]; - smprintf (message, 512, "Error loading shape %s: %s", readed[i].ShapeFilename.c_str(), e.what()); - _MainFrame->MessageBox (message, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string message = toString("Error loading shape %s: %s", readed[i].ShapeFilename.c_str(), e.what()); + _MainFrame->MessageBox (utf8ToTStr(message), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); // Stop loading break; @@ -1872,20 +1874,12 @@ void CObjectViewer::serial (NLMISC::IStream& f) // *************************************************************************** -bool CObjectViewer::loadInstanceGroup(const char *igFilename) +bool CObjectViewer::loadInstanceGroup(const std::string &igFilename) { //AFX_MANAGE_STATE(AfxGetStaticModuleState()); - // Add to the path - char drive[256]; - char dir[256]; - char path[256]; - // Add search path for the mesh - _splitpath (igFilename, drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); - CPath::addSearchPath (path); - + CPath::addSearchPath (NLMISC::CFile::getPath(igFilename)); // Open a file CIFile file; @@ -1906,16 +1900,15 @@ bool CObjectViewer::loadInstanceGroup(const char *igFilename) { // clean delete ig; - _MainFrame->MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + _MainFrame->MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); return false; } } else { // Create a message - char msg[512]; - _snprintf (msg, 512, "Can't open the file %s for reading.", igFilename); - _MainFrame->MessageBox (msg, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string msg = toString("Can't open the file %s for reading.", igFilename.c_str()); + _MainFrame->MessageBox (utf8ToTStr(msg), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); return false; } @@ -1928,21 +1921,16 @@ bool CObjectViewer::loadInstanceGroup(const char *igFilename) // *************************************************************************** -bool CObjectViewer::loadMesh (std::vector &meshFilename, const char* skeleton) +bool CObjectViewer::loadMesh (std::vector &meshFilename, const std::string &skeleton) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // Add to the path - char drive[256]; - char dir[256]; - char path[256]; // Add search path for the skeleton - if (skeleton) + if (skeleton.empty()) { - _splitpath (skeleton, drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); - CPath::addSearchPath (path); + CPath::addSearchPath (NLMISC::CFile::getPath(skeleton)); } // Open a file @@ -1957,7 +1945,7 @@ bool CObjectViewer::loadMesh (std::vector &meshFilename, const char bool skelError=false; // Continue ? - if (skeleton&&(strcmp (skeleton, "")!=0)) + if (!skeleton.empty()) { // Open a file @@ -1975,7 +1963,7 @@ bool CObjectViewer::loadMesh (std::vector &meshFilename, const char } catch (Exception& e) { - _MainFrame->MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + _MainFrame->MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); // error skelError=true; @@ -1984,9 +1972,8 @@ bool CObjectViewer::loadMesh (std::vector &meshFilename, const char else { // Create a message - char msg[512]; - _snprintf (msg, 512, "Can't open the file %s for reading.", meshFilename); - _MainFrame->MessageBox (msg, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string msg = NLMISC::toString("Can't open the file %s for reading.", skeleton.c_str()); + _MainFrame->MessageBox (utf8ToTStr(msg), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); // error skelError=true; @@ -2007,12 +1994,10 @@ bool CObjectViewer::loadMesh (std::vector &meshFilename, const char for (uint i=0; i &meshFilename, const char } catch (Exception& e) { - _MainFrame->MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + _MainFrame->MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); continue; } } else { // Create a message - char msg[512]; - _snprintf (msg, 512, "Can't open the file %s for reading.", fileName); - _MainFrame->MessageBox (msg, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string msg = NLMISC::toString("Can't open the file %s for reading.", fileName.c_str()); + _MainFrame->MessageBox (utf8ToTStr(msg), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); continue; } @@ -2097,7 +2081,7 @@ void CObjectViewer::resetCamera () // *************************************************************************** -uint CObjectViewer::addMesh (NL3D::IShape* pMeshShape, const char* meshName, uint skelIndex, const char* bindSkelName, bool createInstance) +uint CObjectViewer::addMesh (NL3D::IShape* pMeshShape, const std::string &meshName, uint skelIndex, const char* bindSkelName, bool createInstance) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); @@ -2195,8 +2179,7 @@ uint CObjectViewer::addMesh (NL3D::IShape* pMeshShape, const char* meshName, uin listBones.push_back (transformSkel->Bones[bone].getBoneName()); // Get name of the mesh - char nameMesh[512]; - _splitpath (meshName, NULL, NULL, nameMesh, NULL); + std::string nameMesh = NLMISC::CFile::getFilenameWithoutExtension(meshName); // Select a bones std::string message = "Select a bone to stick " + string (nameMesh); @@ -2280,7 +2263,7 @@ bool CObjectViewer::isSkeletonPresent() const // *************************************************************************** -uint CObjectViewer::addCamera (const NL3D::CCameraInfo &cameraInfo, const char* cameraName) +uint CObjectViewer::addCamera (const NL3D::CCameraInfo &cameraInfo, const std::string &cameraName) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); @@ -2315,7 +2298,7 @@ uint CObjectViewer::addCamera (const NL3D::CCameraInfo &cameraInfo, const char* // *************************************************************************** -uint CObjectViewer::addSkel (NL3D::IShape* pSkelShape, const char* skelName) +uint CObjectViewer::addSkel (NL3D::IShape* pSkelShape, const std::string &skelName) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); @@ -2398,7 +2381,7 @@ void IObjectViewer::releaseInterface (IObjectViewer* view) // *************************************************************************** -void CObjectViewer::setSingleAnimation (NL3D::CAnimation* pAnim, const char* name, uint instance) +void CObjectViewer::setSingleAnimation (NL3D::CAnimation* pAnim, const std::string &name, uint instance) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); @@ -2408,7 +2391,7 @@ void CObjectViewer::setSingleAnimation (NL3D::CAnimation* pAnim, const char* nam _SelectedObject = instance; // Add the animation - addAnimation (pAnim, (name+std::string(".anim")).c_str(), name, instance); + addAnimation (pAnim, name + ".anim", name, instance); // Add the animation to the animationSet _AnimationSetDlg->UpdateData (TRUE); @@ -2866,7 +2849,7 @@ void CObjectViewer::enableDynamicObjectLightingTest(NLPACS::CGlobalRetriever *gl if (!_ObjectLightTestShape.empty()) { string str= string("Path not found for Light Test Shape: ") + _ObjectLightTestShape; - ::MessageBox(NULL, str.c_str(), "Dynamic Object Light Test", MB_OK|MB_ICONEXCLAMATION); + ::MessageBox(NULL, utf8ToTStr(str.c_str()), _T("Dynamic Object Light Test"), MB_OK|MB_ICONEXCLAMATION); } // disable. _ObjectLightTest= NULL; @@ -3241,7 +3224,7 @@ bool CObjectViewer::createVegetableLandscape() // close the progress dialog dlgProgress.DestroyWindow(); - MessageBox(_MainFrame->m_hWnd, e.what(), "Failed to Load landscape", MB_OK | MB_APPLMODAL); + MessageBox(_MainFrame->m_hWnd, utf8ToTStr(e.what()), _T("Failed to Load landscape"), MB_OK | MB_APPLMODAL); // remove first possibly created collisions objects. if(_VegetableCollisionEntity) @@ -3536,10 +3519,10 @@ void CObjectViewer::refreshAnimationListeners() } // *************************************************************************** -void CObjectViewer::addAnimation (NL3D::CAnimation* anim, const char* filename, const char* name, uint instance) +void CObjectViewer::addAnimation(NL3D::CAnimation* anim, const std::string &filename, const std::string &name, uint instance) { // Add an animation - uint id = _ListInstance[instance]->AnimationSet.addAnimation (name, anim); + uint id = _ListInstance[instance]->AnimationSet.addAnimation (name.c_str(), anim); _ListInstance[instance]->Saved.AnimationFileName.push_back (filename); // Rebuild the animationSet @@ -3553,15 +3536,14 @@ void CObjectViewer::addAnimation (NL3D::CAnimation* anim, const char* filename, } // *************************************************************************** -void CObjectViewer::loadAnimation (const char* fileName, uint instance) +void CObjectViewer::loadAnimation(const std::string &fileName, uint instance) { // Open the file CIFile file; if (file.open (fileName)) { // Get the animation name - char name[256]; - _splitpath (fileName, NULL, NULL, name, NULL); + std::string name = NLMISC::CFile::getFilenameWithoutExtension(fileName); // Make an animation CAnimation *anim=new CAnimation; @@ -3575,22 +3557,20 @@ void CObjectViewer::loadAnimation (const char* fileName, uint instance) else { // Create a message - char msg[512]; - _snprintf (msg, 512, "Can't open the file %s for reading.", fileName); - _MainFrame->MessageBox (msg, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string msg = NLMISC::toString("Can't open the file %s for reading.", fileName.c_str()); + _MainFrame->MessageBox (utf8ToTStr(msg), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } // *************************************************************************** -void CObjectViewer::loadSWT (const char* fileName, uint instance) +void CObjectViewer::loadSWT (const std::string &fileName, uint instance) { // Open the file CIFile file; if (file.open (fileName)) { // Get the animation name - char name[256]; - _splitpath (fileName, NULL, NULL, name, NULL); + std::string name = NLMISC::CFile::getFilenameWithoutExtension(fileName); // Get the skeleton pointer CSkeletonWeight* skel=new CSkeletonWeight; @@ -3599,7 +3579,7 @@ void CObjectViewer::loadSWT (const char* fileName, uint instance) skel->serial (file); // Add an animation - _ListInstance[instance]->AnimationSet.addSkeletonWeight (name, skel); + _ListInstance[instance]->AnimationSet.addSkeletonWeight (name.c_str(), skel); // Add the filename in the list _ListInstance[instance]->Saved.SWTFileName.push_back (fileName); @@ -3607,9 +3587,8 @@ void CObjectViewer::loadSWT (const char* fileName, uint instance) else { // Create a message - char msg[512]; - _snprintf (msg, 512, "Can't open the file %s for reading.", fileName); - _MainFrame->MessageBox (msg, "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string msg = NLMISC::toString("Can't open the file %s for reading.", fileName.c_str()); + _MainFrame->MessageBox (utf8ToTStr(msg), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } @@ -3712,8 +3691,8 @@ void CObjectViewer::shootScene() CNELU::Driver->setupViewport (CViewport ()); // The file name - string filename = NLMISC::CFile::getFilenameWithoutExtension ((const char*)fileDlg.GetPathName ()); - string extension = NLMISC::CFile::getExtension ((const char*)fileDlg.GetPathName ()); + string filename = NLMISC::CFile::getFilenameWithoutExtension(tStrToUtf8(fileDlg.GetPathName())); + string extension = NLMISC::CFile::getExtension (tStrToUtf8(fileDlg.GetPathName())); // The file name without extension bool jpeg = toLower (extension) == "jpg"; @@ -3792,13 +3771,15 @@ void CObjectViewer::shootScene() } else { - _MainFrame->MessageBox (("Can't open the file "+filenamefinal+" for writing.").c_str (), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string message = toString("Can't open the file %s for writing.", filenamefinal.c_str()); + _MainFrame->MessageBox (utf8ToTStr(message), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); break; } } catch (Exception &e) { - _MainFrame->MessageBox (("Error during writing of the file "+filenamefinal+" : "+(string)e.what ()).c_str (), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + std::string message = toString("Error during writing of the file %s: %s", filenamefinal.c_str(), e.what()); + _MainFrame->MessageBox (utf8ToTStr(message), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); break; } } @@ -3815,7 +3796,7 @@ void CObjectViewer::drawFXUserMatrix() { CString fxUserMatrix; fxUserMatrix.LoadString(IDS_FX_USER_MATRIX); - fxUserMatrixStr = (LPCTSTR) fxUserMatrix; + fxUserMatrixStr = tStrToUtf8(fxUserMatrix); stringRetrieved = true; } nlassert(_ParticleDlg); @@ -3830,7 +3811,7 @@ void CObjectViewer::drawFXMatrix() { CString fx; fx.LoadString(IDS_FX_MATRIX); - fxStr = (LPCTSTR) fx; + fxStr = tStrToUtf8(fx); stringRetrieved = true; } drawNamedMatrix(_ParticleDlg->getPSWorldMatrix(), fxStr, NLMISC::CRGBA::Blue, -0.2f, 10.f); @@ -3844,7 +3825,7 @@ void CObjectViewer::drawSceneMatrix() { CString sceneMatrix; sceneMatrix.LoadString(IDS_SCENE_MATRIX); - sceneMatrixStr = (LPCTSTR) sceneMatrix; + sceneMatrixStr = tStrToUtf8(sceneMatrix); stringRetrieved = true; } drawNamedMatrix(_SceneRoot->getMatrix(), sceneMatrixStr, NLMISC::CRGBA::White, 0.f, 10.f); diff --git a/code/nel/tools/3d/object_viewer/object_viewer.h b/code/nel/tools/3d/object_viewer/object_viewer.h index 75b72d252..c00c5490d 100644 --- a/code/nel/tools/3d/object_viewer/object_viewer.h +++ b/code/nel/tools/3d/object_viewer/object_viewer.h @@ -234,19 +234,19 @@ public: void releaseUI (); // Set single animtion. - void setSingleAnimation (NL3D::CAnimation* pAnim, const char* name, uint instance); + void setSingleAnimation (NL3D::CAnimation* pAnim, const std::string &name, uint instance); // Set automatic animation void setAutoAnimation (NL3D::CAnimationSet* pAnimSet); // Add a mesh - uint addMesh (NL3D::IShape* pMeshShape, const char* meshName, uint skelIndex, const char* bindSkelName = NULL, bool createInstance = true); + uint addMesh(NL3D::IShape* pMeshShape, const std::string &meshName, uint skelIndex, const char* bindSkelName = NULL, bool createInstance = true); // Add a camera - uint addCamera (const NL3D::CCameraInfo &cameraInfo, const char* cameraName); + uint addCamera (const NL3D::CCameraInfo &cameraInfo, const std::string &cameraName); // Add a skel - uint addSkel (NL3D::IShape* pSkelShape, const char* skelName); + uint addSkel (NL3D::IShape* pSkelShape, const std::string &skelName); // remove all instances from the scene void removeAllInstancesFromScene(); @@ -262,10 +262,10 @@ public: void shuffleTextureSet(); // Load a mesh - bool loadMesh (std::vector &meshFilename, const char* skeleton=""); + bool loadMesh (std::vector &meshFilename, const std::string &skeleton = ""); // Load an instance group - bool loadInstanceGroup(const char *igFilename); + bool loadInstanceGroup(const std::string &igFilename); // Set ambient color void setAmbientColor (const NLMISC::CRGBA& color); @@ -289,7 +289,7 @@ public: uint getNumInstance () const; // Add an animation - void addAnimation (NL3D::CAnimation* anim, const char* filename, const char* name, uint instance); + void addAnimation (NL3D::CAnimation* anim, const std::string &filename, const std::string &name, uint instance); // Update all objects that depend on the animation set void refreshAnimationListeners(); @@ -308,10 +308,10 @@ public: CChooseFrameDelay *getFrameDelayDlg() const { return _ChooseFrameDelayDlg; } // Load animation - void loadAnimation (const char* fileName, uint instance); + void loadAnimation(const std::string &fileName, uint instance); // Load a skeleton template - void loadSWT (const char* fileName, uint instance); + void loadSWT(const std::string &fileName, uint instance); /// Not exported @@ -387,7 +387,7 @@ public: /// inherited from CObjectViewerInterface void setWaterPoolManager(NL3D::CWaterPoolManager &wpm) { _Wpm = &wpm; } - NL3D::CWaterPoolManager &getWaterPoolManager() { return *_Wpm; } + NL3D::CWaterPoolManager &getWaterPoolManager() const { return *_Wpm; } // Reload textures void reloadTextures (); diff --git a/code/nel/tools/3d/object_viewer/object_viewer_interface.h b/code/nel/tools/3d/object_viewer/object_viewer_interface.h index a8eb696b3..e6df63394 100644 --- a/code/nel/tools/3d/object_viewer/object_viewer_interface.h +++ b/code/nel/tools/3d/object_viewer/object_viewer_interface.h @@ -69,25 +69,25 @@ public: virtual void releaseUI () = 0; // Add a mesh - virtual uint addMesh (NL3D::IShape* pMeshShape, const char* meshName, uint skelIndex, const char* bindSkelName = NULL, bool createInstance = true) = 0; + virtual uint addMesh(NL3D::IShape* pMeshShape, const std::string &meshName, uint skelIndex, const char* bindSkelName = NULL, bool createInstance = true) = 0; // Add a skel - virtual uint addSkel (NL3D::IShape* pSkelShape, const char* skelName) = 0; + virtual uint addSkel (NL3D::IShape* pSkelShape, const std::string &skelName) = 0; // Add a camera - virtual uint addCamera (const NL3D::CCameraInfo &cameraInfo, const char* cameraName) = 0; + virtual uint addCamera (const NL3D::CCameraInfo &cameraInfo, const std::string &cameraName) = 0; // remove all the instance from the scene virtual void removeAllInstancesFromScene() = 0; // Load a mesh - virtual bool loadMesh (std::vector &meshFilename, const char* skeleton) = 0; + virtual bool loadMesh (std::vector &meshFilename, const std::string &skeleton) = 0; // Load a shape virtual void resetCamera () = 0; // Set single animation - virtual void setSingleAnimation (NL3D::CAnimation* pAnim, const char* name, uint instance) = 0; + virtual void setSingleAnimation (NL3D::CAnimation* pAnim, const std::string &name, uint instance) = 0; // Set automatic animation virtual void setAutoAnimation (NL3D::CAnimationSet* pAnimSet) = 0; diff --git a/code/nel/tools/3d/object_viewer/particle_dlg.cpp b/code/nel/tools/3d/object_viewer/particle_dlg.cpp index a84f60349..86fec1fcc 100644 --- a/code/nel/tools/3d/object_viewer/particle_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/particle_dlg.cpp @@ -428,7 +428,7 @@ bool CParticleDlg::savePSAs(HWND parent, CParticleWorkspace::CNode &psNode ,cons } else { - ::MessageBox(parent, e.what(), getStrRsc(IDS_ERROR), MB_ICONEXCLAMATION); + ::MessageBox(parent, utf8ToTStr(e.what()), getStrRsc(IDS_ERROR), MB_ICONEXCLAMATION); return false; } } @@ -474,7 +474,7 @@ bool CParticleDlg::loadPS(HWND parent, CParticleWorkspace::CNode &psNode, TLoadP { case Silent: return false; // no op case ReportError: - ::MessageBox(parent, e.what(), getStrRsc(IDS_ERROR), MB_OK|MB_ICONEXCLAMATION); + ::MessageBox(parent, utf8ToTStr(e.what()), getStrRsc(IDS_ERROR), MB_OK|MB_ICONEXCLAMATION); return true; break; case ReportErrorSkippable: @@ -549,7 +549,7 @@ void CParticleDlg::OnCreateNewPsWorkspace() } catch(NLMISC::EStream &e) { - MessageBox(e.what(), getStrRsc(IDS_ERROR), MB_ICONEXCLAMATION); + MessageBox(utf8ToTStr(e.what()), getStrRsc(IDS_ERROR), MB_ICONEXCLAMATION); } closeWorkspace(); _PW = newPW; @@ -567,7 +567,7 @@ void CParticleDlg::OnLoadPSWorkspace() CFileDialog fd( TRUE, _T(".pws"), _T("*.pws"), 0, szFilter); INT_PTR result = fd.DoModal(); if (result != IDOK) return; - loadWorkspace((LPCTSTR) fd.GetPathName()); + loadWorkspace(tStrToUtf8(fd.GetPathName())); } //************************************************************************************************************************** @@ -585,7 +585,7 @@ void CParticleDlg::loadWorkspace(const std::string &fullPath) } catch(NLMISC::EStream &e) { - MessageBox(e.what(), getStrRsc(IDS_ERROR), MB_ICONEXCLAMATION); + MessageBox(utf8ToTStr(e.what()), getStrRsc(IDS_ERROR), MB_ICONEXCLAMATION); setStatusBarText(CString(e.what())); return; } @@ -635,7 +635,7 @@ void CParticleDlg::saveWorkspaceStructure() } catch(NLMISC::EStream &e) { - localizedMessageBox(*this, e.what(), IDS_ERROR, MB_ICONEXCLAMATION); + localizedMessageBox(*this, utf8ToTStr(e.what()), IDS_ERROR, MB_ICONEXCLAMATION); setStatusBarText(CString(e.what())); } } diff --git a/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp b/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp index 15c98d00b..9fb13f51c 100644 --- a/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp +++ b/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp @@ -213,7 +213,7 @@ HTREEITEM CParticleTreeCtrl::buildTreeFromPS(CParticleWorkspace::CNode &node, H if (node.isLoaded()) { // bind particle system icon - HTREEITEM psRoot = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT, computeCaption(node).c_str(), PSIconParticleSystem, PSIconParticleSystem, 0, 0, NULL, rootHandle, prevSibling); + HTREEITEM psRoot = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT, utf8ToTStr(computeCaption(node)), PSIconParticleSystem, PSIconParticleSystem, 0, 0, NULL, rootHandle, prevSibling); // set the param (doesn't seems to work during first creation) SetItemData(psRoot, (LPARAM) nt); // now, create each located @@ -228,7 +228,7 @@ HTREEITEM CParticleTreeCtrl::buildTreeFromPS(CParticleWorkspace::CNode &node, H else { // bind a bitmap that say that the PS hasn't been loaded - HTREEITEM psRoot = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT, computeCaption(node).c_str(), PSIconParticleSystemNotLoaded, PSIconParticleSystemNotLoaded, 0, 0, NULL, rootHandle, prevSibling); + HTREEITEM psRoot = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT, utf8ToTStr(computeCaption(node)), PSIconParticleSystemNotLoaded, PSIconParticleSystemNotLoaded, 0, 0, NULL, rootHandle, prevSibling); SetItemData(psRoot, (LPARAM) nt); return psRoot; } @@ -242,7 +242,7 @@ void CParticleTreeCtrl::buildTreeFromWorkSpace(CParticleWorkspace &ws) CNodeType *nt = new CNodeType(&ws); _NodeTypes.push_back(nt); // bind particle system icon - HTREEITEM rootHandle = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT, computeCaption(ws).c_str(), PSIconWorkspace, PSIconWorkspace, 0, 0, NULL, NULL, TVI_LAST); + HTREEITEM rootHandle = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT, utf8ToTStr(computeCaption(ws)), PSIconWorkspace, PSIconWorkspace, 0, 0, NULL, NULL, TVI_LAST); // set the param (doesn't seems to work during first creation) SetItemData(rootHandle, (LPARAM) nt); // now, create each particle system @@ -259,7 +259,7 @@ void CParticleTreeCtrl::createNodeFromLocated(NL3D::CPSLocated *loc, HTREEITEM CNodeType *nt = new CNodeType(loc); _NodeTypes.push_back(nt); // bind located icon - HTREEITEM nodeHandle = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM |TVIF_TEXT, loc->getName().c_str() , PSIconLocated, PSIconLocated, 0, 0, (LPARAM) nt, rootHandle, TVI_LAST); + HTREEITEM nodeHandle = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM |TVIF_TEXT, utf8ToTStr(loc->getName()) , PSIconLocated, PSIconLocated, 0, 0, (LPARAM) nt, rootHandle, TVI_LAST); // now, insert each object that is bound to the located for (uint l = 0; l < loc->getNbBoundObjects(); ++l) { @@ -273,7 +273,7 @@ void CParticleTreeCtrl::createNodeFromLocatedBindable(NL3D::CPSLocatedBindable * // we ordered the image so that they match the type for a located bindable (force, particles, collision zones...) CNodeType *nt = new CNodeType(lb); _NodeTypes.push_back(nt); - InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT , lb->getName().c_str() , lb->getType(), lb->getType(), PSIconForce, PSIconForce, (LPARAM) nt, rootHandle, TVI_LAST); + InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT , utf8ToTStr(lb->getName()) , lb->getType(), lb->getType(), PSIconForce, PSIconForce, (LPARAM) nt, rootHandle, TVI_LAST); } @@ -1002,23 +1002,19 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA { CParticleWorkspace::CNode *ownerNode = getOwnerNode(nt); nlassert(ownerNode); - // Add to the path - char drive[256]; - char dir[256]; - char path[256]; + // Add search path for the texture - _splitpath (fd.GetPathName(), drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); - NLMISC::CPath::addSearchPath (path); + NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName()))); + std::auto_ptr sb(new NL3D::CShapeBank); CParticleSystemModel *psm = NULL; try { NL3D::CShapeStream ss; NLMISC::CIFile inputFile; - inputFile.open((LPCTSTR) fd.GetPathName()); + inputFile.open(tStrToUtf8(fd.GetPathName())); ss.serial(inputFile); - std::string shapeName = NLMISC::CFile::getFilename((LPCTSTR) fd.GetPathName()); + std::string shapeName = NLMISC::CFile::getFilename(tStrToUtf8(fd.GetPathName())); sb->add(shapeName, ss.getShapePointer()); NL3D::CShapeBank *oldSB = CNELU::Scene->getShapeBank(); CNELU::Scene->setShapeBank(sb.get()); @@ -1043,7 +1039,7 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA } catch(NLMISC::EStream &e) { - MessageBox(e.what(), getStrRsc(IDS_ERROR), MB_OK|MB_ICONEXCLAMATION); + MessageBox(utf8ToTStr(e.what()), getStrRsc(IDS_ERROR), MB_OK|MB_ICONEXCLAMATION); return TRUE; } ownerNode->setResetAutoCountFlag(false); @@ -1099,11 +1095,11 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA { _ParticleDlg->StartStopDlg->stop(); std::string fileName = nt->PS->getFilename(); - static char BASED_CODE szFilter[] = "ps & shapes files(*.ps;*.shape)|*.ps; *.shape||"; - CFileDialog fd(FALSE, ".ps", fileName.c_str(), OFN_OVERWRITEPROMPT, szFilter, this); + static TCHAR BASED_CODE szFilter[] = _T("ps & shapes files(*.ps;*.shape)|*.ps; *.shape||"); + CFileDialog fd(FALSE, _T(".ps"), utf8ToTStr(fileName), OFN_OVERWRITEPROMPT, szFilter, this); if (fd.DoModal() == IDOK) { - _ParticleDlg->savePSAs(*this, *nt->PS, (LPCTSTR) fd.GetPathName(), false); + _ParticleDlg->savePSAs(*this, *nt->PS, tStrToUtf8(fd.GetPathName()), false); } } } @@ -1253,7 +1249,7 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA } getOwnerNode(nt)->setModified(true); // TODO : an enum for CPSLocatedBindable::getType would be better... - InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT, toCreate->getName().c_str(), toCreate->getType(), toCreate->getType(), 0, 0, (LPARAM) newNt, father, lastSon); + InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT, utf8ToTStr(toCreate->getName()), toCreate->getType(), toCreate->getType(), 0, 0, (LPARAM) newNt, father, lastSon); touchPSState(nt); Invalidate(); _ParticleDlg->StartStopDlg->resetAutoCount(getOwnerNode(nt)); @@ -1284,7 +1280,7 @@ std::pair CParticleTreeCtrl::createL CNodeType *newNt = new CNodeType(loc); _NodeTypes.push_back(newNt); // insert item in tree - HTREEITEM insertedItem = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT, name.c_str(), PSIconLocated, PSIconLocated, 0, 0, (LPARAM) newNt, headItem, TVI_LAST); + HTREEITEM insertedItem = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT, utf8ToTStr(name), PSIconLocated, PSIconLocated, 0, 0, (LPARAM) newNt, headItem, TVI_LAST); touchPSState(newNt); return std::make_pair(newNt, insertedItem); } @@ -1303,7 +1299,7 @@ void CParticleTreeCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) { case CNodeType::workspace: { - nt->WS->setName(std::string(info->item.pszText)); + nt->WS->setName(tStrToUtf8(info->item.pszText)); workspaceModifiedFlagChanged(*nt->WS); // change name (this may be called twice because of the modification callback, but this doesn't matter) } break; @@ -1315,10 +1311,10 @@ void CParticleTreeCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) } else { - nt->PS->getPSPointer()->setName(std::string(info->item.pszText)); + nt->PS->getPSPointer()->setName(tStrToUtf8(info->item.pszText)); nt->PS->setModified(true); } - this->SetItemText(info->item.hItem, computeCaption(*nt->PS).c_str()); + this->SetItemText(info->item.hItem, utf8ToTStr(computeCaption(*nt->PS))); } break; case CNodeType::located: @@ -1326,7 +1322,7 @@ void CParticleTreeCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) nlassert(getOwnerNode(nt)); getOwnerNode(nt)->setModified(true); this->SetItemText(info->item.hItem, info->item.pszText); - nt->Loc->setName(std::string(info->item.pszText)); + nt->Loc->setName(tStrToUtf8(info->item.pszText)); } break; case CNodeType::locatedBindable: @@ -1334,7 +1330,7 @@ void CParticleTreeCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) nlassert(getOwnerNode(nt)); getOwnerNode(nt)->setModified(true); this->SetItemText(info->item.hItem, info->item.pszText); - nt->Bind->setName(std::string(info->item.pszText)); + nt->Bind->setName(tStrToUtf8(info->item.pszText)); } break; } @@ -1470,7 +1466,7 @@ void CParticleTreeCtrl::updateCaption(CParticleWorkspace::CNode &node) HTREEITEM item = getTreeItem(&node); if (!item) return; // update name of ps to dipslay a star in front of it (this tells that the ps has been modified) - SetItemText(item, computeCaption(node).c_str()); + SetItemText(item, utf8ToTStr(computeCaption(node))); } //**************************************************************************************************************** @@ -1547,7 +1543,7 @@ void CParticleTreeCtrl::insertNewPS(CParticleWorkspace &pws) while (pos) { CString path = fd.GetNextPathName(pos); - CParticleWorkspace::CNode *node = pws.addNode((LPCTSTR) path); + CParticleWorkspace::CNode *node = pws.addNode(tStrToUtf8(path)); if (!node) { if (diplayNodeAlreadyInserted) @@ -1560,7 +1556,7 @@ void CParticleTreeCtrl::insertNewPS(CParticleWorkspace &pws) } else { - MessageBox(NLMISC::CFile::getFilename((LPCTSTR)path).c_str() + getStrRsc(IDS_PS_ALREADY_INSERTED), getStrRsc(IDS_ERROR), MB_OK|MB_ICONEXCLAMATION); + MessageBox(CString(utf8ToTStr(NLMISC::CFile::getFilename(tStrToUtf8(path)))) + getStrRsc(IDS_PS_ALREADY_INSERTED), getStrRsc(IDS_ERROR), MB_OK|MB_ICONEXCLAMATION); } } continue; @@ -1595,7 +1591,7 @@ void CParticleTreeCtrl::insertNewPS(CParticleWorkspace &pws) } } // update modified state - SetItemText(GetRootItem(), computeCaption(pws).c_str()); + SetItemText(GetRootItem(), utf8ToTStr(computeCaption(pws))); } } @@ -1738,7 +1734,7 @@ void CParticleTreeCtrl::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) switch (nt->Type) { case CNodeType::workspace: - pEdit->SetWindowText(nt->WS->getName().c_str()); + pEdit->SetWindowText(utf8ToTStr(nt->WS->getName())); break; case CNodeType::particleSystem: { @@ -1749,18 +1745,18 @@ void CParticleTreeCtrl::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) } else { - pEdit->SetWindowText(nt->PS->getPSPointer()->getName().c_str()); + pEdit->SetWindowText(utf8ToTStr(nt->PS->getPSPointer()->getName())); } } break; case CNodeType::located: { - pEdit->SetWindowText(nt->Loc->getName().c_str()); + pEdit->SetWindowText(utf8ToTStr(nt->Loc->getName())); } break; case CNodeType::locatedBindable: { - pEdit->SetWindowText(nt->Bind->getName().c_str()); + pEdit->SetWindowText(utf8ToTStr(nt->Bind->getName())); } break; } @@ -1857,10 +1853,10 @@ void CParticleTreeCtrl::updateAllCaptions() switch(nt->Type) { case CNodeType::particleSystem: - SetItemText(curr, computeCaption(*nt->PS).c_str()); + SetItemText(curr, utf8ToTStr(computeCaption(*nt->PS))); break; case CNodeType::workspace: - SetItemText(curr, computeCaption(*nt->WS).c_str()); + SetItemText(curr, utf8ToTStr(computeCaption(*nt->WS))); break; case CNodeType::located: case CNodeType::locatedBindable: diff --git a/code/nel/tools/3d/object_viewer/pick_sound.cpp b/code/nel/tools/3d/object_viewer/pick_sound.cpp index c2ecf9b9c..2f67147a8 100644 --- a/code/nel/tools/3d/object_viewer/pick_sound.cpp +++ b/code/nel/tools/3d/object_viewer/pick_sound.cpp @@ -74,7 +74,7 @@ BOOL CPickSound::OnInitDialog() for (TNameVect::iterator it = _Names.begin(); it != _Names.end(); ++it) { - m_NameList.AddString((*it).toString().c_str()); + m_NameList.AddString(utf8ToTStr((*it).toString())); } _Timer = SetTimer (1, 100, NULL); @@ -111,7 +111,7 @@ void CPickSound::OnSelchange() nlassert(m_NameList.GetTextLen(m_NameList.GetCurSel()) < 1024); m_NameList.GetText(m_NameList.GetCurSel(), str); - _CurrName = NLMISC::CSheetId(str, "sound"); + _CurrName = NLMISC::CSheetId(tStrToUtf8(str), "sound"); } @@ -123,7 +123,7 @@ void CPickSound::OnPlaySound() stopCurrSource(); CString sName; m_NameList.GetText(curSel, sName); - CSoundSystem::create(std::string( (LPCTSTR) sName)); + CSoundSystem::create(tStrToUtf8(sName)); } //======================================================================================== diff --git a/code/nel/tools/3d/object_viewer/precomputed_rotations_dlg.cpp b/code/nel/tools/3d/object_viewer/precomputed_rotations_dlg.cpp index 3e8a1ecb7..978c7e65b 100644 --- a/code/nel/tools/3d/object_viewer/precomputed_rotations_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/precomputed_rotations_dlg.cpp @@ -124,7 +124,7 @@ void CPrecomputedRotationsDlg::OnUpdateMinRotSpeed() nlassert(_RotatedParticle); UpdateData(); float newValue, valueMin, valueMax; - if (sscanf(m_RotSpeedMin, "%f", &newValue) == 1) + if (NLMISC::fromString(tStrToUtf8(m_RotSpeedMin), newValue)) { uint32 nbModels = _RotatedParticle->checkHintRotateTheSame(valueMin, valueMax); valueMin = newValue; @@ -144,7 +144,7 @@ void CPrecomputedRotationsDlg::OnUpdateMaxRotSpeed() nlassert(_RotatedParticle); UpdateData(); float newValue, valueMin, valueMax; - if (sscanf(m_RotSpeedMax, "%f", &newValue) == 1) + if (NLMISC::fromString(tStrToUtf8(m_RotSpeedMax), newValue)) { uint32 nbModels = _RotatedParticle->checkHintRotateTheSame(valueMin, valueMax); valueMax = newValue; @@ -165,7 +165,7 @@ void CPrecomputedRotationsDlg::OnUpdateNbModels() UpdateData(); float valueMin, valueMax; sint32 newNbModels; - bool valid = (sscanf(m_NbModels, "%d", &newNbModels) == 1 && newNbModels > 0); + bool valid = (NLMISC::fromString(tStrToUtf8(m_NbModels), newNbModels) && newNbModels > 0); if (dynamic_cast(_RotatedParticle)) { valid &= (newNbModels < NL3D::ConstraintMeshMaxNumPrerotatedModels); diff --git a/code/nel/tools/3d/object_viewer/ps_mover_dlg.cpp b/code/nel/tools/3d/object_viewer/ps_mover_dlg.cpp index 875af0557..a916cee6f 100644 --- a/code/nel/tools/3d/object_viewer/ps_mover_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/ps_mover_dlg.cpp @@ -120,7 +120,7 @@ void CPSMoverDlg::OnUpdateXpos() UpdateData(); NLMISC::CVector &pos = _EditedLocated->getPos()[_EditedLocatedIndex]; float x; - if (::sscanf(m_X, "%f", &x) == 1) + if (NLMISC::fromString(tStrToUtf8(m_X), x)) { pos.x = x; updateListener(); @@ -137,7 +137,7 @@ void CPSMoverDlg::OnUpdateYpos() UpdateData(); NLMISC::CVector &pos = _EditedLocated->getPos()[_EditedLocatedIndex]; float y; - if (::sscanf(m_Y, "%f", &y) == 1) + if (NLMISC::fromString(tStrToUtf8(m_Y), y)) { pos.y = y; updateListener(); @@ -154,7 +154,7 @@ void CPSMoverDlg::OnUpdateZpos() UpdateData(); NLMISC::CVector &pos = _EditedLocated->getPos()[_EditedLocatedIndex]; float z; - if (::sscanf(m_Z, "%f", &z) == 1) + if (NLMISC::fromString(tStrToUtf8(m_Z), z)) { pos.z = z; updateListener(); diff --git a/code/nel/tools/3d/object_viewer/scheme_bank_dlg.cpp b/code/nel/tools/3d/object_viewer/scheme_bank_dlg.cpp index 9d2b7594b..f46c0d7be 100644 --- a/code/nel/tools/3d/object_viewer/scheme_bank_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/scheme_bank_dlg.cpp @@ -84,8 +84,8 @@ void CSchemeBankDlg::buildList() SchemeManager.getSchemes(_Type, schemes); for (TSchemeVect::const_iterator it = schemes.begin(); it != schemes.end(); ++it) { - int index = m_SchemeList.AddString(it->first.c_str()); - m_SchemeList.SetItemData(index, (unsigned long) it->second); + int index = m_SchemeList.AddString(utf8ToTStr(it->first)); + m_SchemeList.SetItemData(index, (DWORD_PTR) it->second); } UpdateData(FALSE); @@ -98,25 +98,19 @@ void CSchemeBankDlg::OnSaveBank() if (fd.DoModal() == IDOK) { - // Add to the path - char drive[256]; - char dir[256]; - char path[256]; - // Add search path for the texture - _splitpath (fd.GetPathName(), drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); - NLMISC::CPath::addSearchPath (path); + NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName()))); try { NLMISC::COFile iF; - iF.open(std::string( (LPCTSTR) fd.GetFileName())); + iF.open(tStrToUtf8(fd.GetFileName())); iF.serial(SchemeManager); } catch (std::exception &e) { - MessageBox(("Error saving scheme bank :" + std::string(e.what())).c_str(), "Object viewer", MB_ICONEXCLAMATION | MB_OK); + std::string message = NLMISC::toString("Error saving scheme bank : %s", e.what()); + MessageBox(utf8ToTStr(message), _T("Object viewer"), MB_ICONEXCLAMATION | MB_OK); return; } } @@ -129,27 +123,21 @@ void CSchemeBankDlg::OnLoadBank() if (fd.DoModal() == IDOK) { - // Add to the path - char drive[256]; - char dir[256]; - char path[256]; - // Add search path for the texture - _splitpath (fd.GetPathName(), drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); - NLMISC::CPath::addSearchPath (path); + NLMISC::CPath::addSearchPath(NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName()))); CSchemeManager sm; try { NLMISC::CIFile iF; - iF.open(NLMISC::CPath::lookup(std::string((LPCTSTR) fd.GetFileName()))); + iF.open(NLMISC::CPath::lookup(tStrToUtf8(fd.GetFileName()))); iF.serial(sm); SchemeManager.swap(sm); } catch (std::exception &e) { - MessageBox(("Error loading scheme bank :" + std::string(e.what())).c_str(), "Object viewer", MB_ICONEXCLAMATION | MB_OK); + std::string message = NLMISC::toString("Error loading scheme bank : %s", e.what()); + MessageBox(utf8ToTStr(message), _T("Object viewer"), MB_ICONEXCLAMATION | MB_OK); return; } buildList(); @@ -179,7 +167,7 @@ void CSchemeBankDlg::OnRename() SchemeManager.rename(scheme, cn.getName()); int curSel = m_SchemeList.GetCurSel(); m_SchemeList.DeleteString(curSel); - int insertedPos = m_SchemeList.InsertString(curSel, cn.getName().c_str()); + int insertedPos = m_SchemeList.InsertString(curSel, utf8ToTStr(cn.getName())); m_SchemeList.SetCurSel(insertedPos); m_SchemeList.Invalidate(); } diff --git a/code/nel/tools/3d/object_viewer/select_string.cpp b/code/nel/tools/3d/object_viewer/select_string.cpp index 4ff61c23b..f506d905b 100644 --- a/code/nel/tools/3d/object_viewer/select_string.cpp +++ b/code/nel/tools/3d/object_viewer/select_string.cpp @@ -23,7 +23,7 @@ // CSelectString dialog -CSelectString::CSelectString(const std::vector& vectString, const char* title, CWnd* pParent, bool empty) +CSelectString::CSelectString(const std::vector& vectString, const std::string &title, CWnd* pParent, bool empty) : CDialog(CSelectString::IDD, pParent) { //{{AFX_DATA_INIT(CSelectString) @@ -77,14 +77,14 @@ BOOL CSelectString::OnInitDialog() CDialog::OnInitDialog(); // Change title - SetWindowText (Title.c_str()); + SetWindowText (utf8ToTStr(Title)); // Empty button ? EmptyCtrl.ShowWindow (Empty?SW_SHOW:SW_HIDE); // Add string for (uint s=0; s& vectString, const char* title, CWnd* pParent, bool empty); // standard constructor + CSelectString(const std::vector& vectString, const std::string &title, CWnd* pParent, bool empty); // standard constructor // Dialog Data //{{AFX_DATA(CSelectString) diff --git a/code/nel/tools/3d/object_viewer/skeleton_scale_dlg.cpp b/code/nel/tools/3d/object_viewer/skeleton_scale_dlg.cpp index d2f710136..d3debfe98 100644 --- a/code/nel/tools/3d/object_viewer/skeleton_scale_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/skeleton_scale_dlg.cpp @@ -206,7 +206,7 @@ void CSkeletonScaleDlg::setSkeletonToEdit(NL3D::CSkeletonModel *skel, const std while((boneId=_SkeletonModel->Bones[boneId].getFatherId())!=-1) name= tabStr + name; // append to the list - _BoneList.AddString(name.c_str()); + _BoneList.AddString(utf8ToTStr(name)); } } @@ -400,9 +400,8 @@ void CSkeletonScaleDlg::applyScaleSlider(sint scrollValue) refreshTextViews(); // update marker text - char str[256]; - sprintf(str, "%d%%", (sint)(factor*100)); - _StaticScaleMarkers[_SliderEdited]->SetWindowText(str); + std::string str = NLMISC::toString("%d%%", (sint)(factor*100)); + _StaticScaleMarkers[_SliderEdited]->SetWindowText(utf8ToTStr(str)); } // *************************************************************************** @@ -715,7 +714,7 @@ void CSkeletonScaleDlg::updateScalesFromText(UINT ctrlId) return; // get the scale info - std::string str= (const char*)(*_ScaleEdits[sid]); + std::string str = tStrToUtf8(*_ScaleEdits[sid]); if(str.empty()) return; float f; @@ -1225,12 +1224,14 @@ void CSkeletonScaleDlg::OnSsdButtonSaveScale() // choose the file std::string defaultFileName= _SkeletonFileName; NLMISC::strFindReplace(defaultFileName, ".skel", ".scale"); - CFileDialog fd(FALSE, "scale", defaultFileName.c_str(), OFN_OVERWRITEPROMPT, "SkelScaleFiles (*.scale)|*.scale|All Files (*.*)|*.*||", this) ; - fd.m_ofn.lpstrTitle= "Save As Skeleton Scale File"; + + CFileDialog fd(FALSE, _T("scale"), utf8ToTStr(defaultFileName), OFN_OVERWRITEPROMPT, _T("SkelScaleFiles (*.scale)|*.scale|All Files (*.*)|*.*||"), this) ; + fd.m_ofn.lpstrTitle = _T("Save As Skeleton Scale File"); + if (fd.DoModal() == IDOK) { NLMISC::COFile f; - if( f.open((const char*)fd.GetPathName()) ) + if (f.open(tStrToUtf8(fd.GetPathName()))) { saveSkelScaleInStream(f); } @@ -1251,12 +1252,14 @@ void CSkeletonScaleDlg::OnSsdButtonLoadScale() // choose the file std::string defaultFileName= _SkeletonFileName; NLMISC::strFindReplace(defaultFileName, ".skel", ".scale"); - CFileDialog fd(TRUE, "scale", defaultFileName.c_str(), 0, "SkelScaleFiles (*.scale)|*.scale|All Files (*.*)|*.*||", this) ; - fd.m_ofn.lpstrTitle= "Load a Skeleton Scale File"; + + CFileDialog fd(TRUE, _T("scale"), utf8ToTStr(defaultFileName), 0, _T("SkelScaleFiles (*.scale)|*.scale|All Files (*.*)|*.*||"), this) ; + fd.m_ofn.lpstrTitle= _T("Load a Skeleton Scale File"); + if (fd.DoModal() == IDOK) { NLMISC::CIFile f; - if( f.open((const char*)fd.GetPathName()) ) + if (f.open(tStrToUtf8(fd.GetPathName()))) { loadSkelScaleFromStream(f); } diff --git a/code/nel/tools/3d/object_viewer/slot_dlg.cpp b/code/nel/tools/3d/object_viewer/slot_dlg.cpp index d6c707125..a82a34594 100644 --- a/code/nel/tools/3d/object_viewer/slot_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/slot_dlg.cpp @@ -455,26 +455,24 @@ void CSlotDlg::OnSetSkeleton() void CSlotDlg::setWindowName () { - char tmp[512]; - _snprintf (tmp, 512, "Slot %d : ", Id); + std::string tmp = NLMISC::toString("Slot %d : ", Id); + if (isEmpty()) - strcat (tmp, "empty"); + tmp += "empty"; else - strcat (tmp, getSlotInformation ()->Animation .c_str()); + tmp += getSlotInformation ()->Animation; CSlotInfo *information = getSlotInformation (); if (information) { std::string SkeletonName = information->Skeleton; - if (SkeletonName != "") + if (!SkeletonName.empty()) { - strcat (tmp, " ("); - strcat (tmp, SkeletonName.c_str()); - strcat (tmp, ")"); + tmp += " (" + SkeletonName + ")"; } } - GetDlgItem (IDC_SLOT_NAME)->SetWindowText (tmp); + GetDlgItem (IDC_SLOT_NAME)->SetWindowText (utf8ToTStr(tmp)); } // *************************************************************************** diff --git a/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp b/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp index 4bbd58e26..6f1f0749c 100644 --- a/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp @@ -119,15 +119,17 @@ void CSnapshotToolDlg::stringFromRegistry(HKEY hKey, const TCHAR *name, CString dest = defaultStr; return; } - std::string tmpDest; - tmpDest.resize(size); - result = RegQueryValueEx(hKey, name, NULL, &type, (unsigned char *) &tmpDest[0], &size); + + std::auto_ptr tmpDest(new TCHAR[size]); + result = RegQueryValueEx(hKey, name, NULL, &type, (BYTE*)tmpDest.get(), &size); + if (result != ERROR_SUCCESS) { dest = defaultStr; return; } - dest = tmpDest.c_str(); + + dest = *tmpDest; } @@ -167,14 +169,15 @@ void CSnapshotToolDlg::fromRegistry() stringFromRegistry(hKey, _T("OutputPath"), m_OutputPath, ""); CString filters; - stringFromRegistry(hKey, "Filters", filters, "*.shape"); - std::string stdFilters((LPCTSTR) filters); + stringFromRegistry(hKey, _T("Filters"), filters, "*.shape"); + std::vector filterList; - NLMISC::splitString(stdFilters, ",", filterList); + NLMISC::splitString(tStrToUtf8(filters), ",", filterList); + m_Filters.ResetContent(); for (uint k = 0; k < filterList.size(); ++k) { - m_Filters.AddString(filterList[k].c_str()); + m_Filters.AddString(utf8ToTStr(filterList[k])); } integralTypeFromRegistry(hKey, _T("RecurseSubFolder"), (int &) m_RecurseSubFolder, FALSE); @@ -405,7 +408,7 @@ void CSnapshotToolDlg::OnGo() MessageBox(getStrRsc(IDS_SNAPSHOT_EMPTY_INPUT_PATH), getStrRsc(IDS_OBJECT_VIEWER), MB_ICONEXCLAMATION); return; } - if (!NLMISC::CFile::isDirectory(LPCTSTR(m_InputPath))) + if (!NLMISC::CFile::isDirectory(tStrToUtf8(m_InputPath))) { MessageBox(getStrRsc(IDS_SNAPSHOT_EMPTY_INPUT_PATH_NOT_FOUND), getStrRsc(IDS_OBJECT_VIEWER), MB_ICONEXCLAMATION); return; @@ -415,13 +418,13 @@ void CSnapshotToolDlg::OnGo() MessageBox(getStrRsc(IDS_SNAPSHOT_EMPTY_OUTPUT_PATH), getStrRsc(IDS_OBJECT_VIEWER), MB_ICONEXCLAMATION); return; } - if (m_OutputPathOption == OutputPath_Custom && !NLMISC::CFile::isDirectory(LPCTSTR(m_OutputPath))) + if (m_OutputPathOption == OutputPath_Custom && !NLMISC::CFile::isDirectory(tStrToUtf8(m_OutputPath))) { if (MessageBox(getStrRsc(IDS_SNAPSHOT_CREATE_OUTPUT_DIRECTORY), getStrRsc(IDS_OBJECT_VIEWER), MB_OKCANCEL) != IDOK) { return; } - if(!NLMISC::CFile::createDirectoryTree(LPCTSTR(m_OutputPath))) + if(!NLMISC::CFile::createDirectoryTree(tStrToUtf8(m_OutputPath))) { MessageBox(getStrRsc(IDS_SNAPSHOT_OUTPUT_PATH_CREATION_FAILED), getStrRsc(IDS_OBJECT_VIEWER), MB_ICONEXCLAMATION); return; @@ -442,7 +445,7 @@ void CSnapshotToolDlg::OnGo() m_Log.ResetContent(); m_Log.AddString(getStrRsc(IDS_GETTING_PATH_CONTENT)); std::vector files; - CPath::getPathContent((LPCTSTR) m_InputPath, m_RecurseSubFolder == TRUE, false, true, files); + CPath::getPathContent(tStrToUtf8(m_InputPath), m_RecurseSubFolder == TRUE, false, true, files); if (files.empty()) { m_Log.AddString(getStrRsc(IDS_SNAPSHOT_NO_FILES_FOUND)); @@ -456,7 +459,7 @@ void CSnapshotToolDlg::OnGo() CString wildCard; m_Filters.GetText(l, wildCard); wildCard.MakeLower(); - if (testWildCard(toLower(NLMISC::CFile::getFilename(files[k])).c_str(), (LPCTSTR) wildCard)) + if (testWildCard(toLower(NLMISC::CFile::getFilename(files[k])).c_str(), tStrToUtf8(wildCard).c_str())) { _FilteredFiles.push_back(files[k]); break; @@ -598,7 +601,7 @@ void CSnapshotToolDlg::OnTimer(UINT_PTR nIDEvent) try { CShapeStream ss; - m_Log.AddString(_FilteredFiles[0].c_str()); + m_Log.AddString(utf8ToTStr(_FilteredFiles[0])); CIFile stream(_FilteredFiles[0]); ss.serial(stream); nlassert(ss.getShapePointer()); @@ -706,10 +709,10 @@ void CSnapshotToolDlg::OnTimer(UINT_PTR nIDEvent) switch(m_OutputPathOption) { case OutputPath_Custom: // custom output path - outputFilename = LPCTSTR(m_OutputPath) + std::string("\\") + NLMISC::CFile::getFilename(outputFilename); + outputFilename = tStrToUtf8(m_OutputPath) + "\\" + NLMISC::CFile::getFilename(outputFilename); break; case OutputPath_SameAsInput: // Input path - outputFilename = LPCTSTR(m_InputPath) + std::string("\\") + NLMISC::CFile::getFilename(outputFilename); + outputFilename = tStrToUtf8(m_InputPath) + "\\" + NLMISC::CFile::getFilename(outputFilename); break; case OutputPath_CurrShapeDirectory: // current path // no op diff --git a/code/nel/tools/3d/object_viewer/sound_anim_dlg.cpp b/code/nel/tools/3d/object_viewer/sound_anim_dlg.cpp index 965ad3d90..893a6a011 100644 --- a/code/nel/tools/3d/object_viewer/sound_anim_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/sound_anim_dlg.cpp @@ -76,10 +76,9 @@ BOOL CSoundAnimDlg::OnInitDialog() void CSoundAnimDlg::handle() { - char text[256]; float sec = _AnimationDlg->getTime(); - _snprintf(text, 256, "time: %.3f", sec); - GetDlgItem(IDC_SOUNDANIMINFO)->SetWindowText(text); + std::string text = toString("time: %.3f", sec); + GetDlgItem(IDC_SOUNDANIMINFO)->SetWindowText(utf8ToTStr(text)); _AnimView.updateCursor(); } @@ -137,7 +136,7 @@ void CSoundAnimDlg::updateSounds() for (iter = sounds.begin(); iter != sounds.end(); iter++) { - list->AddString((*iter).toString().c_str()); + list->AddString(utf8ToTStr((*iter).toString())); } list->UpdateData(); @@ -177,14 +176,13 @@ void CSoundAnimDlg::OnRemoveSound() { if (_SelectedMarker != 0) { - char s[256]; - CListBox* list = (CListBox*) GetDlgItem(IDC_SOUND_ANIM_LIST); + TCHAR s[256]; + CListBox* list = (CListBox*) GetDlgItem(IDC_SOUND_ANIM_LIST); if (list->GetText(list->GetCurSel(), s) != LB_ERR) { - string name(s); - _SelectedMarker->removeSound(NLMISC::CSheetId(name, "sound")); - updateSounds(); + _SelectedMarker->removeSound(NLMISC::CSheetId(tStrToUtf8(s), "sound")); + updateSounds(); } } } diff --git a/code/nel/tools/3d/object_viewer/sound_anim_view.cpp b/code/nel/tools/3d/object_viewer/sound_anim_view.cpp index 5f0b6ee92..5d0d3e1ed 100644 --- a/code/nel/tools/3d/object_viewer/sound_anim_view.cpp +++ b/code/nel/tools/3d/object_viewer/sound_anim_view.cpp @@ -221,7 +221,7 @@ void CSoundAnimView::save() if (fileDlg.DoModal() == IDOK) { - filename = (const char*) fileDlg.GetPathName(); + filename = tStrToUtf8(fileDlg.GetPathName()); } else { @@ -236,7 +236,7 @@ void CSoundAnimView::save() } catch (Exception& e) { - MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); + MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION); } } } diff --git a/code/nel/tools/3d/object_viewer/start_stop_particle_system.cpp b/code/nel/tools/3d/object_viewer/start_stop_particle_system.cpp index 0dde68dab..022ee99f0 100644 --- a/code/nel/tools/3d/object_viewer/start_stop_particle_system.cpp +++ b/code/nel/tools/3d/object_viewer/start_stop_particle_system.cpp @@ -231,13 +231,13 @@ void CStartStopParticleSystem::updateUIFromState() { if (!_ActiveNode->getParentSkelName().empty()) { - GetDlgItem(IDC_STICK_BONE)->SetWindowText((_ActiveNode->getParentBoneName() + "." + _ActiveNode->getParentBoneName()).c_str()); + GetDlgItem(IDC_STICK_BONE)->SetWindowText(utf8ToTStr(_ActiveNode->getParentBoneName() + "." + _ActiveNode->getParentBoneName())); } else { GetDlgItem(IDC_STICK_BONE)->SetWindowText(_T("")); } - GetDlgItem(IDC_ACTIVE_PS)->SetWindowText(_ActiveNode->getFilename().c_str()); + GetDlgItem(IDC_ACTIVE_PS)->SetWindowText(utf8ToTStr(_ActiveNode->getFilename())); GetDlgItem(IDC_ENABLE_AUTO_COUNT)->EnableWindow(TRUE); ((CButton *) GetDlgItem(IDC_ENABLE_AUTO_COUNT))->SetCheck(getCurrPS()->getAutoCountFlag() ? 1 : 0); GetDlgItem(IDC_RESET_COUNT)->EnableWindow((_ActiveNode->getPSPointer()->getAutoCountFlag() && !_ActiveNode->getResetAutoCountFlag()) ? TRUE : FALSE); @@ -844,7 +844,7 @@ void CStartStopParticleSystem::OnLinkToSkeleton() uint boneIndex; std::string parentSkelName; std::string parentBoneName; - if (ov->chooseBone((LPCTSTR) chooseBoneForPS, skel, boneIndex, &parentSkelName, &parentBoneName)) + if (ov->chooseBone(tStrToUtf8(chooseBoneForPS), skel, boneIndex, &parentSkelName, &parentBoneName)) { _ParticleDlg->stickPSToSkeleton(_ActiveNode, skel, boneIndex, parentSkelName, parentBoneName); } @@ -1017,11 +1017,11 @@ void CStartStopParticleSystem::OnBrowseAnim() } } std::vector animList(animSet.begin(), animSet.end()); - CSelectString st(animList, (LPCTSTR) getStrRsc(IDS_SELECT_ANIMATION), this, false); + CSelectString st(animList, tStrToUtf8(getStrRsc(IDS_SELECT_ANIMATION)), this, false); if (st.DoModal() == IDOK && st.Selection != -1) { m_TriggerAnim = animList[st.Selection].c_str(); - _ActiveNode->setTriggerAnim((LPCTSTR) m_TriggerAnim); + _ActiveNode->setTriggerAnim(tStrToUtf8(m_TriggerAnim)); GetDlgItem(IDC_CLEAR_ANIM)->EnableWindow(!_ActiveNode->getTriggerAnim().empty()); } _ParticleDlg->ParticleTreeCtrl->updateCaption(*_ActiveNode); diff --git a/code/nel/tools/3d/object_viewer/texture_chooser.cpp b/code/nel/tools/3d/object_viewer/texture_chooser.cpp index 65407aca1..982ef4a97 100644 --- a/code/nel/tools/3d/object_viewer/texture_chooser.cpp +++ b/code/nel/tools/3d/object_viewer/texture_chooser.cpp @@ -179,29 +179,22 @@ void CTextureChooser::OnBrowseTexture() { texName = (static_cast(_Wrapper->get()))->getFileName(); } - CFileDialog fd(TRUE, ".tga", texName.c_str(), 0, NULL, this); + CFileDialog fd(TRUE, _T(".tga"), utf8ToTStr(texName), 0, NULL, this); if (fd.DoModal() == IDOK) { - // Add to the path - char drive[256]; - char dir[256]; - char path[256]; - // Add search path for the texture - _splitpath (fd.GetPathName(), drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); - NLMISC::CPath::addSearchPath (path); + NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName()))); try { - NL3D::CTextureFile *tf = new NL3D::CTextureFile(std::string(fd.GetFileName())); + NL3D::CTextureFile *tf = new NL3D::CTextureFile(tStrToUtf8(fd.GetFileName())); _Wrapper->setAndUpdateModifiedFlag(tf); _Texture = tf; textureToBitmap(); } catch (NLMISC::Exception &e) { - MessageBox(e.what(), "error loading texture"); + MessageBox(utf8ToTStr(e.what()), _T("error loading texture")); } } diff --git a/code/nel/tools/3d/object_viewer/vegetable_copy_dlg.cpp b/code/nel/tools/3d/object_viewer/vegetable_copy_dlg.cpp index 28fc3083c..05e0ab1fd 100644 --- a/code/nel/tools/3d/object_viewer/vegetable_copy_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/vegetable_copy_dlg.cpp @@ -249,7 +249,7 @@ BOOL CVegetableCopyDlg::OnInitDialog() uint num= _VegetableDlg->getNumVegetables(); for(uint i=0; igetVegetableName(i).c_str()); + VegetableList.AddString(utf8ToTStr(_VegetableDlg->getVegetableName(i))); } diff --git a/code/nel/tools/3d/object_viewer/vegetable_density_page.cpp b/code/nel/tools/3d/object_viewer/vegetable_density_page.cpp index f86a5bf43..9dfe95b30 100644 --- a/code/nel/tools/3d/object_viewer/vegetable_density_page.cpp +++ b/code/nel/tools/3d/object_viewer/vegetable_density_page.cpp @@ -100,7 +100,7 @@ void CVegetableDensityPage::setVegetableToEdit(NL3D::CVegetable *vegetable) { // Init ShapeName // ---------- - StaticVegetableShape.SetWindowText(_Vegetable->ShapeName.c_str()); + StaticVegetableShape.SetWindowText(utf8ToTStr(_Vegetable->ShapeName)); // init Creation Distance. // ---------- @@ -228,7 +228,7 @@ void CVegetableDensityPage::updateAngleMinFromEditText() TCHAR stmp[256]; AngleMinEdit.GetWindowText(stmp, 256); float angleMin; - NLMISC::fromString(stmp, angleMin); + NLMISC::fromString(tStrToUtf8(stmp), angleMin); NLMISC::clamp(angleMin, -90, 90); // make a sinus, because 90 => 1, and -90 =>-1 float cosAngleMin= (float)sin(angleMin*NLMISC::Pi/180.f); @@ -252,7 +252,7 @@ void CVegetableDensityPage::updateAngleMaxFromEditText() TCHAR stmp[256]; AngleMaxEdit.GetWindowText(stmp, 256); float angleMax; - NLMISC::fromString(stmp, angleMax); + NLMISC::fromString(tStrToUtf8(stmp), angleMax); NLMISC::clamp(angleMax, -90, 90); // make a sinus, because 90 => 1, and -90 =>-1 float cosAngleMax= (float)sin(angleMax*NLMISC::Pi/180.f); @@ -523,22 +523,19 @@ void CVegetableDensityPage::OnButtonVegetableBrowse() if (fd.DoModal() == IDOK) { // Add to the path - char drive[256]; - char dir[256]; - char path[256]; + std::string fileName = tStrToUtf8(fd.GetFileName()); // Add search path for the .veget - _splitpath (fd.GetPathName(), drive, dir, NULL, NULL); - _makepath (path, drive, dir, NULL, NULL); + std::string path = NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName())); NLMISC::CPath::addSearchPath (path); try { // verify the file can be opened. - NLMISC::CPath::lookup((const char*)fd.GetFileName()); + NLMISC::CPath::lookup(fileName); // update shapeName and view - _Vegetable->ShapeName= std::string(fd.GetFileName()); + _Vegetable->ShapeName = fileName; StaticVegetableShape.SetWindowText(fd.GetFileName()); // update the name in the list-box @@ -549,7 +546,7 @@ void CVegetableDensityPage::OnButtonVegetableBrowse() } catch (NLMISC::EPathNotFound &ep) { - MessageBox(ep.what(), "Can't open file"); + MessageBox(utf8ToTStr(ep.what()), _T("Can't open file")); } } } diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/DialogFlags.cpp b/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/DialogFlags.cpp index 4416a0c5d..0d1e0cbe7 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/DialogFlags.cpp +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/DialogFlags.cpp @@ -118,7 +118,7 @@ void CDialogFlags::init(CSoundPlugin *plugin) for (uint i =0; i(GetDlgItem(BG_FLAG_ID[i]))->SetCheck(flags.Flags[i] ? 1 : 0); - GetDlgItem(BG_FLAG_ID[i])->SetWindowText(_Mixer->getBackgroundFlagName(i).c_str()); + GetDlgItem(BG_FLAG_ID[i])->SetWindowText(utf8ToTStr(_Mixer->getBackgroundFlagName(i))); }