From 01d5edd47bb829b23628e1dfa05200c6cdc2cdb5 Mon Sep 17 00:00:00 2001 From: kaetemi Date: Tue, 30 Apr 2019 13:07:57 +0800 Subject: [PATCH] Fixing unicode in georges edit dll --- .../leveldesign/georges_dll/child_frm.cpp | 2 +- .../leveldesign/georges_dll/dfn_dialog.cpp | 4 +- .../leveldesign/georges_dll/dfn_dialog.h | 4 +- .../leveldesign/georges_dll/georges_edit.cpp | 66 +++++++++---------- .../leveldesign/georges_dll/georges_edit.h | 8 +-- .../georges_dll/georges_edit_doc.cpp | 32 ++++----- 6 files changed, 58 insertions(+), 58 deletions(-) diff --git a/code/ryzom/tools/leveldesign/georges_dll/child_frm.cpp b/code/ryzom/tools/leveldesign/georges_dll/child_frm.cpp index 37a85329d..9f388be4f 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/child_frm.cpp +++ b/code/ryzom/tools/leveldesign/georges_dll/child_frm.cpp @@ -63,7 +63,7 @@ BOOL CChildFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, } // Load state - theApp.loadWindowState (this, "child", true, false); + theApp.loadWindowState (this, _T("child"), true, false); return TRUE; } diff --git a/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.cpp b/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.cpp index 1ddbe46b1..72a446870 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.cpp +++ b/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.cpp @@ -385,7 +385,7 @@ void CDfnEditListCtrl::getNewItemText (uint item, uint subItem, std::string &ret // *************************************************************************** -void CDfnEditListCtrl::getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::string &filter) +void CDfnEditListCtrl::getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::tstring &filter) { if (subItem == 2) { @@ -621,7 +621,7 @@ void CDfnParentEditListCtrl::getNewItemText (uint item, uint subItem, std::strin // *************************************************************************** -void CDfnParentEditListCtrl::getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::string &filter) +void CDfnParentEditListCtrl::getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::tstring &filter) { filter = DfnFilter; defDir = theApp.RootSearchPath; diff --git a/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.h b/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.h index 174001aaa..785d64539 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.h +++ b/code/ryzom/tools/leveldesign/georges_dll/dfn_dialog.h @@ -36,7 +36,7 @@ class CDfnParentEditListCtrl : public CEditListCtrl CEditListCtrl::TItemEdit getItemEditMode (uint item, uint subItem); void getMemComboBoxProp (uint item, uint subItem, std::string ®Adr, bool &browse); void getNewItemText (uint item, uint subItem, std::string &ret); - void getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::string &filter); + void getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::tstring &filter); public: class CDfnDialog *Dialog; }; @@ -47,7 +47,7 @@ class CDfnEditListCtrl : public CEditListCtrl void getComboBoxStrings (uint item, uint subItem, std::vector &retStrings); void getMemComboBoxProp (uint item, uint subItem, std::string ®Adr, bool &browse); void getNewItemText (uint item, uint subItem, std::string &ret); - void getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::string &filter); + void getBrowseInfo (uint item, uint subItem, std::string &defExt, std::string &defFilename, std::string &defDir, std::tstring &filter); void onItemChanged (uint item, uint subItem); public: class CDfnDialog *Dialog; diff --git a/code/ryzom/tools/leveldesign/georges_dll/georges_edit.cpp b/code/ryzom/tools/leveldesign/georges_dll/georges_edit.cpp index effc20681..9b62e3a1a 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/georges_edit.cpp +++ b/code/ryzom/tools/leveldesign/georges_dll/georges_edit.cpp @@ -39,8 +39,8 @@ using namespace NLGEORGES; using namespace std; -const char* TypeFilter = "Type Files (*.typ)|*.typ|All Files (*.*)|*.*||"; -const char* DfnFilter = "Form Definition Files (*.dfn)|*.dfn|All Files (*.*)|*.*||"; +const TCHAR* TypeFilter = _T("Type Files (*.typ)|*.typ|All Files (*.*)|*.*||"); +const TCHAR* DfnFilter = _T("Form Definition Files (*.dfn)|*.dfn|All Files (*.*)|*.*||"); CSplashScreen* splashScreen=new CSplashScreen; ///////////////////////////////////////////////////////////////////////////// // CGeorgesEditApp @@ -711,9 +711,9 @@ bool CGeorgesEditApp::getColor (NLMISC::CRGBA &color) bool CGeorgesEditApp::yesNo (const char* message) { if (m_pMainWnd) - return m_pMainWnd->MessageBox (message, _T("Georges Edit"), MB_YESNO|MB_ICONQUESTION) != IDNO; + return m_pMainWnd->MessageBox (utf8ToTStr(message), _T("Georges Edit"), MB_YESNO|MB_ICONQUESTION) != IDNO; else - return MessageBox (NULL, message, _T("Georges Edit"), MB_YESNO|MB_ICONQUESTION) != IDNO; + return MessageBox (NULL, utf8ToTStr(message), _T("Georges Edit"), MB_YESNO|MB_ICONQUESTION) != IDNO; } void CGeorgesEditApp::loadPlugins () @@ -829,10 +829,10 @@ NLGEORGES::IEditDocument *CGeorgesEditApp::createDocument (const char *dfnName, // Set the filename if (strcmp (pathName, "") != 0) { - doc->SetPathName ( pathName, FALSE ); + doc->SetPathName (utf8ToTStr(pathName), FALSE ); // Create the file - doc->OnSaveDocument( pathName ); + doc->OnSaveDocument(utf8ToTStr(pathName) ); } // Init the frame @@ -908,10 +908,10 @@ LONG GetRegKey(HKEY key, LPCTSTR subkey, LPTSTR retdata) if (retval == ERROR_SUCCESS) { - long datasize = MAX_PATH; - char data[MAX_PATH]; + long datasize = MAX_PATH * sizeof(TCHAR); + TCHAR data[MAX_PATH]; RegQueryValue(hkey, NULL, data, &datasize); - lstrcpy(retdata,data); + lstrcpy(retdata, data); RegCloseKey(hkey); } @@ -936,7 +936,7 @@ void CGeorgesEditApp::OnViewRefresh() } } -void CGeorgesEditApp::saveWindowState (const CWnd *wnd, const char *name, bool controlBar) +void CGeorgesEditApp::saveWindowState (const CWnd *wnd, const TCHAR *name, bool controlBar) { HKEY hKey; nlverify (RegCreateKey (HKEY_CURRENT_USER, _T(GEORGES_EDIT_BASE_REG_KEY "\\Windows states"), &hKey) == ERROR_SUCCESS); @@ -952,7 +952,7 @@ void CGeorgesEditApp::saveWindowState (const CWnd *wnd, const char *name, bool c nlverify (RegCloseKey (hKey) == ERROR_SUCCESS); } -void CGeorgesEditApp::loadWindowState (CWnd *wnd, const char *name, bool mdiChildWnd, bool controlBar) +void CGeorgesEditApp::loadWindowState (CWnd *wnd, const TCHAR *name, bool mdiChildWnd, bool controlBar) { HKEY hKey; if (RegOpenKey (HKEY_CURRENT_USER, _T(GEORGES_EDIT_BASE_REG_KEY "\\Windows states"), &hKey) == ERROR_SUCCESS) @@ -993,20 +993,20 @@ void CGeorgesEditApp::saveState () // Save the main window state nlassert (m_pMainWnd); if (ResizeMain) - saveWindowState (m_pMainWnd, "main", false); + saveWindowState (m_pMainWnd, _T("main"), false); - saveWindowState (&((CMainFrame*)m_pMainWnd)->FileBrowser, "browser", true); - saveWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, "output", true); + saveWindowState (&((CMainFrame*)m_pMainWnd)->FileBrowser, _T("browser"), true); + saveWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, _T("output"), true); } void CGeorgesEditApp::loadState () { nlassert (m_pMainWnd); if (ResizeMain) - loadWindowState (m_pMainWnd, "main", false, false); + loadWindowState (m_pMainWnd, _T("main"), false, false); - loadWindowState (&((CMainFrame*)m_pMainWnd)->FileBrowser, "browser", false, true); - loadWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, "output", false, true); + loadWindowState (&((CMainFrame*)m_pMainWnd)->FileBrowser, _T("browser"), false, true); + loadWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, _T("output"), false, true); } void CGeorgesEditApp::OnFileSaveAll() @@ -1060,7 +1060,7 @@ bool CGeorgesEditApp::SerialIntoMemStream (const char *formName, CGeorgesEditDoc { // Get the string CString str = doc->GetPathName (); - name = str; + name = tStrToUtf8(str); uint pos = name.rfind ('.'); if (pos != string::npos) { @@ -1268,7 +1268,7 @@ bool CGeorgesEditApp::SerialFromMemStream (const char *formName, CGeorgesEditDoc { // Get the string CString str = doc->GetPathName (); - nameParent = str; + nameParent = tStrToUtf8(str); uint pos = nameParent.rfind ('.'); if (pos != string::npos) { @@ -1423,24 +1423,24 @@ bool CGeorgesEditApp::SerialFromMemStream (const char *formName, CGeorgesEditDoc BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand) { - if (strncmp (lpszCommand, "Open", 4) == 0) + if (_tcsncmp (lpszCommand, _T("Open"), 4) == 0) { - string name = lpszCommand; + tstring name = lpszCommand; name = name.substr (6, name.size ()-8); OpenDocumentFile (name.c_str ()); } - else if (strncmp (lpszCommand, "Georges Copy", 4) == 0) + else if (_tcsncmp(lpszCommand, _T("Georges Copy"), 4) == 0) { // Get ext name - string name = lpszCommand; + tstring name = lpszCommand; name = name.substr (6, name.size ()-8); // Get the extension - std::string ext = NLMISC::CFile::getExtension(name); + std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(name.c_str())); string dfnName = ext + ".dfn"; // Get the doc template - CMultiDocTemplate *docTemplate = getFormDocTemplate (dfnName.c_str ()); + CMultiDocTemplate *docTemplate = getFormDocTemplate(dfnName.c_str()); if (docTemplate) { @@ -1452,7 +1452,7 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand) // Create the frame CFrameWnd* pFrame = docTemplate->CreateNewFrame(doc, NULL); nlassert (pFrame); - if (doc->loadFormFile (name.c_str ())) + if (doc->loadFormFile(tStrToUtf8(name.c_str()).c_str())) { doc->updateDocumentStructure (); @@ -1491,21 +1491,21 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand) outputError (tmp); } } - else if (strncmp (lpszCommand, "Derive", 6) == 0) + else if (_tcsncmp(lpszCommand, _T("Derive"), 6) == 0) { // Get ext name - string name = lpszCommand; + tstring name = lpszCommand; name = name.substr (8, name.size ()-10); // Get the extension - std::string ext = NLMISC::CFile::getExtension(name); + std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(name.c_str())); string dfnName = ext + ".dfn"; // Create a document CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), ""); if (doc) { - std::string nameFile = NLMISC::CFile::getFilename(name); + std::string nameFile = NLMISC::CFile::getFilename(tStrToUtf8(name.c_str())); doc->addParent (nameFile.c_str()); doc->updateDocumentStructure (); doc->UpdateAllViews (NULL); @@ -1517,14 +1517,14 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand) outputError (tmp); } } - else if (strncmp (lpszCommand, "CreateForm", 10) == 0) + else if (_tcsncmp(lpszCommand, _T("CreateForm"), 10) == 0) { // Get ext name - string name = lpszCommand; + tstring name = lpszCommand; name = name.substr (10, name.size ()-12); // Get the extension - std::string dfnName = NLMISC::CFile::getFilename(name); + std::string dfnName = NLMISC::CFile::getFilename(tStrToUtf8(name.c_str())); // Create a document CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), ""); diff --git a/code/ryzom/tools/leveldesign/georges_dll/georges_edit.h b/code/ryzom/tools/leveldesign/georges_dll/georges_edit.h index 6b233f590..9232e688a 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/georges_edit.h +++ b/code/ryzom/tools/leveldesign/georges_dll/georges_edit.h @@ -41,8 +41,8 @@ #define GEORGES_EDIT_BASE_REG_KEY "Software\\Nevrax\\Georges Edit" #define GEORGES_EDIT_BROWSE_LABEL "--- Browse..." -extern const char* TypeFilter; -extern const char* DfnFilter; +extern const TCHAR* TypeFilter; +extern const TCHAR* DfnFilter; class CGeorgesEditDoc; @@ -155,8 +155,8 @@ public: // Get a template form CMultiDocTemplate *getFormDocTemplate (const char *dfnName); - void saveWindowState (const CWnd *wnd, const char *name, bool controlBar); - void loadWindowState (CWnd *wnd, const char *name, bool changeShowWindow, bool controlBar); + void saveWindowState (const CWnd *wnd, const TCHAR *name, bool controlBar); + void loadWindowState (CWnd *wnd, const TCHAR *name, bool changeShowWindow, bool controlBar); // Overrides // ClassWizard generated virtual function overrides diff --git a/code/ryzom/tools/leveldesign/georges_dll/georges_edit_doc.cpp b/code/ryzom/tools/leveldesign/georges_dll/georges_edit_doc.cpp index 0bc32cfc9..01f7b6f8e 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/georges_edit_doc.cpp +++ b/code/ryzom/tools/leveldesign/georges_dll/georges_edit_doc.cpp @@ -223,10 +223,10 @@ BOOL CGeorgesEditDocForm::OnNewDocument() string defFilename = theApp.RootSearchPath; defFilename += "*.dfn"; - CFileDialog dlgFile (TRUE, _T("*.dfn"), defFilename.c_str (), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, DfnFilter, theApp.m_pMainWnd); + CFileDialog dlgFile(TRUE, _T("*.dfn"), utf8ToTStr(defFilename.c_str()), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, DfnFilter, theApp.m_pMainWnd); if (dlgFile.DoModal () == IDOK) { - if (initDocument (dlgFile.GetFileName (), true)) + if (initDocument(tStrToUtf8(dlgFile.GetFileName()).c_str(), true)) return TRUE; } } @@ -491,7 +491,7 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName) try { // Read the form with the loader - Type = FormLoader.loadType (lpszPathName); + Type = FormLoader.loadType(tStrToUtf8(lpszPathName)); if (!Type) { char msg[512]; @@ -517,11 +517,11 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName) try { // Read the form with the loader - Dfn = FormLoader.loadFormDfn (lpszPathName, true); + Dfn = FormLoader.loadFormDfn (tStrToUtf8(lpszPathName), true); if (!Dfn) { char msg[512]; - smprintf (msg, 512, "Error while loading Dfn file %s", lpszPathName); + smprintf (msg, 512, "Error while loading Dfn file %s", tStrToUtf8(lpszPathName).c_str()); theApp.outputError (msg); return FALSE; } @@ -554,13 +554,13 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName) if (theApp.getFormDocTemplate (dfnName.c_str ()) == NULL) { char message[512]; - smprintf (message, 512, "Can't open the file '%s'.", lpszPathName); + smprintf (message, 512, "Can't open the file '%s'.", tStrToUtf8(lpszPathName).c_str()); theApp.outputError (message); return FALSE; } // Read the form with the loader - if (!loadFormFile (lpszPathName)) + if (!loadFormFile (tStrToUtf8(lpszPathName).c_str())) return FALSE; if (theApp.ExeStandalone) @@ -743,7 +743,7 @@ BOOL CGeorgesEditDoc::OnSaveDocument(LPCTSTR lpszPathName) // Open the filt COFile file; - if (file.open (lpszPathName)) + if (file.open(tStrToUtf8(lpszPathName))) { try { @@ -778,7 +778,7 @@ BOOL CGeorgesEditDoc::OnSaveDocument(LPCTSTR lpszPathName) Dfn->Header.MinorVersion++; flushValueChange (); } - Dfn->write (xmlStream.getDocument (), lpszPathName); + Dfn->write (xmlStream.getDocument (), tStrToUtf8(lpszPathName)); modify (NULL, NULL, false); UpdateAllViews (NULL); return TRUE; @@ -793,11 +793,11 @@ BOOL CGeorgesEditDoc::OnSaveDocument(LPCTSTR lpszPathName) ((CForm*)(UForm*)Form)->Header.MinorVersion++; flushValueChange (); } - ((CForm*)(UForm*)Form)->write (xmlStream.getDocument (), lpszPathName); - if (strcmp (xmlStream.getErrorString (), "") != 0) + ((CForm*)(UForm*)Form)->write (xmlStream.getDocument (), tStrToUtf8(lpszPathName)); + if (strcmp(xmlStream.getErrorString().c_str(), "") != 0) { char message[512]; - smprintf (message, 512, "Error while saving file: %s", xmlStream.getErrorString ()); + smprintf (message, 512, "Error while saving file: %s", xmlStream.getErrorString().c_str()); theApp.outputError (message); } modify (NULL, NULL, false); @@ -1122,7 +1122,7 @@ void CGeorgesEditDoc::getFilename (std::string &pathname) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); - pathname = (const char*)GetPathName (); + pathname = tStrToUtf8(GetPathName()); } // *************************************************************************** @@ -1131,7 +1131,7 @@ void CGeorgesEditDoc::getTitle (std::string &title) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); - title = (const char*)GetTitle (); + title = tStrToUtf8(GetTitle()); } // *************************************************************************** @@ -1327,11 +1327,11 @@ void CGeorgesEditDoc::setModifiedState (bool modified) } else { - string title = (const char*)GetTitle (); + string title = tStrToUtf8(GetTitle()); if ( (title.size ()>=2) && (title[title.size()-1] == '*') && (title[title.size()-2] == ' ') ) { title.resize (title.size () - 2); - SetTitle (title.c_str()); + SetTitle (utf8ToTStr(title)); } } }