Fixing unicode in georges edit dll

This commit is contained in:
kaetemi 2019-04-30 13:07:57 +08:00
parent bb792b8307
commit 01d5edd47b
6 changed files with 58 additions and 58 deletions

View file

@ -63,7 +63,7 @@ BOOL CChildFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
} }
// Load state // Load state
theApp.loadWindowState (this, "child", true, false); theApp.loadWindowState (this, _T("child"), true, false);
return TRUE; return TRUE;
} }

View file

@ -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) 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; filter = DfnFilter;
defDir = theApp.RootSearchPath; defDir = theApp.RootSearchPath;

View file

@ -36,7 +36,7 @@ class CDfnParentEditListCtrl : public CEditListCtrl
CEditListCtrl::TItemEdit getItemEditMode (uint item, uint subItem); CEditListCtrl::TItemEdit getItemEditMode (uint item, uint subItem);
void getMemComboBoxProp (uint item, uint subItem, std::string &regAdr, bool &browse); void getMemComboBoxProp (uint item, uint subItem, std::string &regAdr, bool &browse);
void getNewItemText (uint item, uint subItem, std::string &ret); 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: public:
class CDfnDialog *Dialog; class CDfnDialog *Dialog;
}; };
@ -47,7 +47,7 @@ class CDfnEditListCtrl : public CEditListCtrl
void getComboBoxStrings (uint item, uint subItem, std::vector<std::string> &retStrings); void getComboBoxStrings (uint item, uint subItem, std::vector<std::string> &retStrings);
void getMemComboBoxProp (uint item, uint subItem, std::string &regAdr, bool &browse); void getMemComboBoxProp (uint item, uint subItem, std::string &regAdr, bool &browse);
void getNewItemText (uint item, uint subItem, std::string &ret); 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); void onItemChanged (uint item, uint subItem);
public: public:
class CDfnDialog *Dialog; class CDfnDialog *Dialog;

View file

@ -39,8 +39,8 @@ using namespace NLGEORGES;
using namespace std; using namespace std;
const char* TypeFilter = "Type Files (*.typ)|*.typ|All Files (*.*)|*.*||"; const TCHAR* TypeFilter = _T("Type Files (*.typ)|*.typ|All Files (*.*)|*.*||");
const char* DfnFilter = "Form Definition Files (*.dfn)|*.dfn|All Files (*.*)|*.*||"; const TCHAR* DfnFilter = _T("Form Definition Files (*.dfn)|*.dfn|All Files (*.*)|*.*||");
CSplashScreen* splashScreen=new CSplashScreen; CSplashScreen* splashScreen=new CSplashScreen;
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// CGeorgesEditApp // CGeorgesEditApp
@ -711,9 +711,9 @@ bool CGeorgesEditApp::getColor (NLMISC::CRGBA &color)
bool CGeorgesEditApp::yesNo (const char* message) bool CGeorgesEditApp::yesNo (const char* message)
{ {
if (m_pMainWnd) 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 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 () void CGeorgesEditApp::loadPlugins ()
@ -829,10 +829,10 @@ NLGEORGES::IEditDocument *CGeorgesEditApp::createDocument (const char *dfnName,
// Set the filename // Set the filename
if (strcmp (pathName, "") != 0) if (strcmp (pathName, "") != 0)
{ {
doc->SetPathName ( pathName, FALSE ); doc->SetPathName (utf8ToTStr(pathName), FALSE );
// Create the file // Create the file
doc->OnSaveDocument( pathName ); doc->OnSaveDocument(utf8ToTStr(pathName) );
} }
// Init the frame // Init the frame
@ -908,10 +908,10 @@ LONG GetRegKey(HKEY key, LPCTSTR subkey, LPTSTR retdata)
if (retval == ERROR_SUCCESS) if (retval == ERROR_SUCCESS)
{ {
long datasize = MAX_PATH; long datasize = MAX_PATH * sizeof(TCHAR);
char data[MAX_PATH]; TCHAR data[MAX_PATH];
RegQueryValue(hkey, NULL, data, &datasize); RegQueryValue(hkey, NULL, data, &datasize);
lstrcpy(retdata,data); lstrcpy(retdata, data);
RegCloseKey(hkey); 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; HKEY hKey;
nlverify (RegCreateKey (HKEY_CURRENT_USER, _T(GEORGES_EDIT_BASE_REG_KEY "\\Windows states"), &hKey) == ERROR_SUCCESS); 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); 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; HKEY hKey;
if (RegOpenKey (HKEY_CURRENT_USER, _T(GEORGES_EDIT_BASE_REG_KEY "\\Windows states"), &hKey) == ERROR_SUCCESS) 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 // Save the main window state
nlassert (m_pMainWnd); nlassert (m_pMainWnd);
if (ResizeMain) if (ResizeMain)
saveWindowState (m_pMainWnd, "main", false); saveWindowState (m_pMainWnd, _T("main"), false);
saveWindowState (&((CMainFrame*)m_pMainWnd)->FileBrowser, "browser", true); saveWindowState (&((CMainFrame*)m_pMainWnd)->FileBrowser, _T("browser"), true);
saveWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, "output", true); saveWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, _T("output"), true);
} }
void CGeorgesEditApp::loadState () void CGeorgesEditApp::loadState ()
{ {
nlassert (m_pMainWnd); nlassert (m_pMainWnd);
if (ResizeMain) 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)->FileBrowser, _T("browser"), false, true);
loadWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, "output", false, true); loadWindowState (&((CMainFrame*)m_pMainWnd)->OutputConsole, _T("output"), false, true);
} }
void CGeorgesEditApp::OnFileSaveAll() void CGeorgesEditApp::OnFileSaveAll()
@ -1060,7 +1060,7 @@ bool CGeorgesEditApp::SerialIntoMemStream (const char *formName, CGeorgesEditDoc
{ {
// Get the string // Get the string
CString str = doc->GetPathName (); CString str = doc->GetPathName ();
name = str; name = tStrToUtf8(str);
uint pos = name.rfind ('.'); uint pos = name.rfind ('.');
if (pos != string::npos) if (pos != string::npos)
{ {
@ -1268,7 +1268,7 @@ bool CGeorgesEditApp::SerialFromMemStream (const char *formName, CGeorgesEditDoc
{ {
// Get the string // Get the string
CString str = doc->GetPathName (); CString str = doc->GetPathName ();
nameParent = str; nameParent = tStrToUtf8(str);
uint pos = nameParent.rfind ('.'); uint pos = nameParent.rfind ('.');
if (pos != string::npos) if (pos != string::npos)
{ {
@ -1423,24 +1423,24 @@ bool CGeorgesEditApp::SerialFromMemStream (const char *formName, CGeorgesEditDoc
BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand) 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); name = name.substr (6, name.size ()-8);
OpenDocumentFile (name.c_str ()); OpenDocumentFile (name.c_str ());
} }
else if (strncmp (lpszCommand, "Georges Copy", 4) == 0) else if (_tcsncmp(lpszCommand, _T("Georges Copy"), 4) == 0)
{ {
// Get ext name // Get ext name
string name = lpszCommand; tstring name = lpszCommand;
name = name.substr (6, name.size ()-8); name = name.substr (6, name.size ()-8);
// Get the extension // Get the extension
std::string ext = NLMISC::CFile::getExtension(name); std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(name.c_str()));
string dfnName = ext + ".dfn"; string dfnName = ext + ".dfn";
// Get the doc template // Get the doc template
CMultiDocTemplate *docTemplate = getFormDocTemplate (dfnName.c_str ()); CMultiDocTemplate *docTemplate = getFormDocTemplate(dfnName.c_str());
if (docTemplate) if (docTemplate)
{ {
@ -1452,7 +1452,7 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand)
// Create the frame // Create the frame
CFrameWnd* pFrame = docTemplate->CreateNewFrame(doc, NULL); CFrameWnd* pFrame = docTemplate->CreateNewFrame(doc, NULL);
nlassert (pFrame); nlassert (pFrame);
if (doc->loadFormFile (name.c_str ())) if (doc->loadFormFile(tStrToUtf8(name.c_str()).c_str()))
{ {
doc->updateDocumentStructure (); doc->updateDocumentStructure ();
@ -1491,21 +1491,21 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand)
outputError (tmp); outputError (tmp);
} }
} }
else if (strncmp (lpszCommand, "Derive", 6) == 0) else if (_tcsncmp(lpszCommand, _T("Derive"), 6) == 0)
{ {
// Get ext name // Get ext name
string name = lpszCommand; tstring name = lpszCommand;
name = name.substr (8, name.size ()-10); name = name.substr (8, name.size ()-10);
// Get the extension // Get the extension
std::string ext = NLMISC::CFile::getExtension(name); std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(name.c_str()));
string dfnName = ext + ".dfn"; string dfnName = ext + ".dfn";
// Create a document // Create a document
CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), ""); CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), "");
if (doc) 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->addParent (nameFile.c_str());
doc->updateDocumentStructure (); doc->updateDocumentStructure ();
doc->UpdateAllViews (NULL); doc->UpdateAllViews (NULL);
@ -1517,14 +1517,14 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand)
outputError (tmp); outputError (tmp);
} }
} }
else if (strncmp (lpszCommand, "CreateForm", 10) == 0) else if (_tcsncmp(lpszCommand, _T("CreateForm"), 10) == 0)
{ {
// Get ext name // Get ext name
string name = lpszCommand; tstring name = lpszCommand;
name = name.substr (10, name.size ()-12); name = name.substr (10, name.size ()-12);
// Get the extension // Get the extension
std::string dfnName = NLMISC::CFile::getFilename(name); std::string dfnName = NLMISC::CFile::getFilename(tStrToUtf8(name.c_str()));
// Create a document // Create a document
CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), ""); CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), "");

View file

@ -41,8 +41,8 @@
#define GEORGES_EDIT_BASE_REG_KEY "Software\\Nevrax\\Georges Edit" #define GEORGES_EDIT_BASE_REG_KEY "Software\\Nevrax\\Georges Edit"
#define GEORGES_EDIT_BROWSE_LABEL "--- Browse..." #define GEORGES_EDIT_BROWSE_LABEL "--- Browse..."
extern const char* TypeFilter; extern const TCHAR* TypeFilter;
extern const char* DfnFilter; extern const TCHAR* DfnFilter;
class CGeorgesEditDoc; class CGeorgesEditDoc;
@ -155,8 +155,8 @@ public:
// Get a template form // Get a template form
CMultiDocTemplate *getFormDocTemplate (const char *dfnName); CMultiDocTemplate *getFormDocTemplate (const char *dfnName);
void saveWindowState (const CWnd *wnd, const char *name, bool controlBar); void saveWindowState (const CWnd *wnd, const TCHAR *name, bool controlBar);
void loadWindowState (CWnd *wnd, const char *name, bool changeShowWindow, bool controlBar); void loadWindowState (CWnd *wnd, const TCHAR *name, bool changeShowWindow, bool controlBar);
// Overrides // Overrides
// ClassWizard generated virtual function overrides // ClassWizard generated virtual function overrides

View file

@ -223,10 +223,10 @@ BOOL CGeorgesEditDocForm::OnNewDocument()
string defFilename = theApp.RootSearchPath; string defFilename = theApp.RootSearchPath;
defFilename += "*.dfn"; 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 (dlgFile.DoModal () == IDOK)
{ {
if (initDocument (dlgFile.GetFileName (), true)) if (initDocument(tStrToUtf8(dlgFile.GetFileName()).c_str(), true))
return TRUE; return TRUE;
} }
} }
@ -491,7 +491,7 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName)
try try
{ {
// Read the form with the loader // Read the form with the loader
Type = FormLoader.loadType (lpszPathName); Type = FormLoader.loadType(tStrToUtf8(lpszPathName));
if (!Type) if (!Type)
{ {
char msg[512]; char msg[512];
@ -517,11 +517,11 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName)
try try
{ {
// Read the form with the loader // Read the form with the loader
Dfn = FormLoader.loadFormDfn (lpszPathName, true); Dfn = FormLoader.loadFormDfn (tStrToUtf8(lpszPathName), true);
if (!Dfn) if (!Dfn)
{ {
char msg[512]; 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); theApp.outputError (msg);
return FALSE; return FALSE;
} }
@ -554,13 +554,13 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName)
if (theApp.getFormDocTemplate (dfnName.c_str ()) == NULL) if (theApp.getFormDocTemplate (dfnName.c_str ()) == NULL)
{ {
char message[512]; 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); theApp.outputError (message);
return FALSE; return FALSE;
} }
// Read the form with the loader // Read the form with the loader
if (!loadFormFile (lpszPathName)) if (!loadFormFile (tStrToUtf8(lpszPathName).c_str()))
return FALSE; return FALSE;
if (theApp.ExeStandalone) if (theApp.ExeStandalone)
@ -743,7 +743,7 @@ BOOL CGeorgesEditDoc::OnSaveDocument(LPCTSTR lpszPathName)
// Open the filt // Open the filt
COFile file; COFile file;
if (file.open (lpszPathName)) if (file.open(tStrToUtf8(lpszPathName)))
{ {
try try
{ {
@ -778,7 +778,7 @@ BOOL CGeorgesEditDoc::OnSaveDocument(LPCTSTR lpszPathName)
Dfn->Header.MinorVersion++; Dfn->Header.MinorVersion++;
flushValueChange (); flushValueChange ();
} }
Dfn->write (xmlStream.getDocument (), lpszPathName); Dfn->write (xmlStream.getDocument (), tStrToUtf8(lpszPathName));
modify (NULL, NULL, false); modify (NULL, NULL, false);
UpdateAllViews (NULL); UpdateAllViews (NULL);
return TRUE; return TRUE;
@ -793,11 +793,11 @@ BOOL CGeorgesEditDoc::OnSaveDocument(LPCTSTR lpszPathName)
((CForm*)(UForm*)Form)->Header.MinorVersion++; ((CForm*)(UForm*)Form)->Header.MinorVersion++;
flushValueChange (); flushValueChange ();
} }
((CForm*)(UForm*)Form)->write (xmlStream.getDocument (), lpszPathName); ((CForm*)(UForm*)Form)->write (xmlStream.getDocument (), tStrToUtf8(lpszPathName));
if (strcmp (xmlStream.getErrorString (), "") != 0) if (strcmp(xmlStream.getErrorString().c_str(), "") != 0)
{ {
char message[512]; 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); theApp.outputError (message);
} }
modify (NULL, NULL, false); modify (NULL, NULL, false);
@ -1122,7 +1122,7 @@ void CGeorgesEditDoc::getFilename (std::string &pathname)
{ {
AFX_MANAGE_STATE(AfxGetStaticModuleState()); 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()); AFX_MANAGE_STATE(AfxGetStaticModuleState());
title = (const char*)GetTitle (); title = tStrToUtf8(GetTitle());
} }
// *************************************************************************** // ***************************************************************************
@ -1327,11 +1327,11 @@ void CGeorgesEditDoc::setModifiedState (bool modified)
} }
else else
{ {
string title = (const char*)GetTitle (); string title = tStrToUtf8(GetTitle());
if ( (title.size ()>=2) && (title[title.size()-1] == '*') && (title[title.size()-2] == ' ') ) if ( (title.size ()>=2) && (title[title.size()-1] == '*') && (title[title.size()-2] == ' ') )
{ {
title.resize (title.size () - 2); title.resize (title.size () - 2);
SetTitle (title.c_str()); SetTitle (utf8ToTStr(title));
} }
} }
} }