Merge with develop

--HG--
branch : compatibility-develop
This commit is contained in:
kervala 2016-11-25 10:44:44 +01:00
commit 8adf092cb8
106 changed files with 1227 additions and 1277 deletions

View file

@ -77,7 +77,7 @@ MACRO(PCH_SET_COMPILE_FLAGS _target)
GET_DIRECTORY_PROPERTY(DEFINITIONS COMPILE_DEFINITIONS) GET_DIRECTORY_PROPERTY(DEFINITIONS COMPILE_DEFINITIONS)
IF(DEFINITIONS) IF(DEFINITIONS)
FOREACH(item ${DEFINITIONS}) FOREACH(item ${DEFINITIONS})
LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>") LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
@ -91,14 +91,14 @@ MACRO(PCH_SET_COMPILE_FLAGS _target)
GET_DIRECTORY_PROPERTY(DEFINITIONS DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS) GET_DIRECTORY_PROPERTY(DEFINITIONS DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS)
IF(DEFINITIONS) IF(DEFINITIONS)
FOREACH(item ${DEFINITIONS}) FOREACH(item ${DEFINITIONS})
LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>") LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
GET_DIRECTORY_PROPERTY(DEFINITIONS DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS_${_UPPER_BUILD}) GET_DIRECTORY_PROPERTY(DEFINITIONS DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS_${_UPPER_BUILD})
IF(DEFINITIONS) IF(DEFINITIONS)
FOREACH(item ${DEFINITIONS}) FOREACH(item ${DEFINITIONS})
LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>") LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
@ -122,14 +122,14 @@ MACRO(PCH_SET_COMPILE_FLAGS _target)
GET_TARGET_PROPERTY(DEFINITIONS ${_target} COMPILE_DEFINITIONS) GET_TARGET_PROPERTY(DEFINITIONS ${_target} COMPILE_DEFINITIONS)
IF(DEFINITIONS) IF(DEFINITIONS)
FOREACH(item ${DEFINITIONS}) FOREACH(item ${DEFINITIONS})
LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>") LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
GET_TARGET_PROPERTY(DEFINITIONS ${_target} COMPILE_DEFINITIONS_${_UPPER_BUILD}) GET_TARGET_PROPERTY(DEFINITIONS ${_target} COMPILE_DEFINITIONS_${_UPPER_BUILD})
IF(DEFINITIONS) IF(DEFINITIONS)
FOREACH(item ${DEFINITIONS}) FOREACH(item ${DEFINITIONS})
LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>") LIST(APPEND GLOBAL_DEFINITIONS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
@ -176,10 +176,21 @@ MACRO(PCH_SET_COMPILE_FLAGS _target)
ENDIF() ENDIF()
IF(CMAKE_VERSION VERSION_LESS "3.3.0") IF(CMAKE_VERSION VERSION_LESS "3.3.0")
GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) GET_DIRECTORY_PROPERTY(_DIRECTORY_FLAGS DEFINITIONS)
GET_DIRECTORY_PROPERTY(_directory_definitions DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS)
LIST(APPEND _FLAGS ${_directory_flags}) IF(_DIRECTORY_FLAGS)
LIST(APPEND _FLAGS ${_directory_definitions}) FOREACH(item ${_DIRECTORY_FLAGS})
LIST(APPEND _FLAGS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH()
ENDIF()
GET_DIRECTORY_PROPERTY(_DIRECTORY_DEFINITIONS DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS)
IF(_DIRECTORY_DEFINITIONS)
FOREACH(item ${_DIRECTORY_DEFINITIONS})
LIST(APPEND _FLAGS "$<$<BOOL:${item}>:-D$<JOIN:${item},-D>>")
ENDFOREACH()
ENDIF()
ENDIF() ENDIF()
# Format definitions # Format definitions

View file

@ -870,9 +870,6 @@ MACRO(NL_SETUP_BUILD)
ELSE() ELSE()
# Check wrong formats in printf-like functions # Check wrong formats in printf-like functions
ADD_PLATFORM_FLAGS("-Wformat -Werror=format-security") ADD_PLATFORM_FLAGS("-Wformat -Werror=format-security")
# Don't display invalid or unused command lines arguments by default (often too verbose)
ADD_PLATFORM_FLAGS("-Wno-invalid-command-line-argument -Wno-unused-command-line-argument")
ENDIF() ENDIF()
IF(ANDROID) IF(ANDROID)

View file

@ -72,8 +72,8 @@ namespace NLGUI
bool link( NLMISC::CCDBNodeBranch *dbNode, const std::string &leafId, NLMISC::CCDBNodeLeaf *defaultLeaf = NULL ); bool link( NLMISC::CCDBNodeBranch *dbNode, const std::string &leafId, NLMISC::CCDBNodeLeaf *defaultLeaf = NULL );
/// float operations /// float operations
void setDouble (double value) {setSInt64((sint64&) value);} void setDouble(double value);
double getDouble () const {sint64 i = getSInt64(); return (double &) i; } double getDouble() const;
void readDouble (const char* value, const std::string& id); void readDouble (const char* value, const std::string& id);
/// sint32 operations /// sint32 operations

View file

@ -40,20 +40,20 @@ public:
/// Return the value of the property. /// Return the value of the property.
inline sint64 getValue64() { return _Property; } inline sint64 getValue64() const { return _Property; }
/// Set the value of the property (set '_Changed' flag with 'true'). /// Set the value of the property (set '_Changed' flag with 'true').
void setValue64 (sint64 prop); void setValue64 (sint64 prop);
inline sint32 getValue32() { return *((sint32*)&_Property); } inline sint32 getValue32() const { return (sint32)(_Property & 0xffffffff); }
void setValue32 (sint32 prop); void setValue32 (sint32 prop);
inline sint16 getValue16() { return *((sint16*)&_Property); } inline sint16 getValue16() const { return (sint16)(_Property & 0xffff); }
void setValue16 (sint16 prop); void setValue16 (sint16 prop);
inline sint8 getValue8() { return *((sint8*)&_Property); } inline sint8 getValue8() const { return (sint8)(_Property & 0xff); }
void setValue8 (sint8 prop); void setValue8 (sint8 prop);
inline bool getValueBool() { return (_Property!=(sint64)0 ); } inline bool getValueBool() const { return (_Property!=(sint64)0 ); }
void setValueBool (bool prop); void setValueBool (bool prop);
inline CRGBA getValueRGBA() inline CRGBA getValueRGBA() const
{ {
CRGBA col; CRGBA col;
col.R = (uint8)(_Property&0xff); col.R = (uint8)(_Property&0xff);
@ -65,11 +65,11 @@ public:
void setValueRGBA (const CRGBA &color); void setValueRGBA (const CRGBA &color);
/// Return the value of the property before the database change /// Return the value of the property before the database change
inline sint64 getOldValue64() { return _oldProperty; } inline sint64 getOldValue64() const { return _oldProperty; }
inline sint32 getOldValue32() { return *((sint32*)&_oldProperty); } inline sint32 getOldValue32() const { return (sint32)(_oldProperty & 0xffffffff); }
inline sint16 getOldValue16() { return *((sint16*)&_oldProperty); } inline sint16 getOldValue16() const { return (sint16)(_oldProperty & 0xffff); }
inline sint8 getOldValue8() { return *((sint8*)&_oldProperty); } inline sint8 getOldValue8() const { return (sint8)(_oldProperty & 0xff); }
inline bool getOldValueBool() { return (_oldProperty!=(sint64)0 ); } inline bool getOldValueBool() const { return (_oldProperty!=(sint64)0 ); }
/// Return the type of the property. /// Return the type of the property.

View file

@ -478,6 +478,22 @@ template <class T> void explode (const T &src, const T &sep, std::vector<T> &res
while(pos != std::string::npos); while(pos != std::string::npos);
} }
/** Join a string (or ucstring) from a vector of strings with *sep* as separator. If sep can be more than 1 char, in this case,
* we find the entire sep to separator (it s not a set of possible separator)
*/
template <class T, class U> void join(const std::vector<T>& strings, const U& separator, T &res)
{
res.clear();
for (uint i = 0, len = strings.size(); i<len; ++i)
{
// add in separators before all but the first string
if (!res.empty()) res += separator;
// append next string
res += strings[i];
}
}
/* All the code above is used to add our types (uint8, ...) in the stringstream (used by the toString() function). /* All the code above is used to add our types (uint8, ...) in the stringstream (used by the toString() function).
* So we can use stringstream operator << and >> with all NeL simple types (except for ucchar and ucstring) * So we can use stringstream operator << and >> with all NeL simple types (except for ucchar and ucstring)

View file

@ -61,7 +61,7 @@ struct TMessageRecord
{ {
nlassert( stream.stringMode() ); nlassert( stream.stringMode() );
uint32 len; uint32 len = 0;
std::string s_event; std::string s_event;
stream.serial( UpdateCounter ); stream.serial( UpdateCounter );
if ( stream.isReading() ) if ( stream.isReading() )

View file

@ -26,6 +26,12 @@ using namespace std;
namespace NLGUI namespace NLGUI
{ {
// helper to convert double <> sint64
union C64BitsParts
{
sint64 i64;
double d;
};
bool CInterfaceProperty::link( CCDBNodeLeaf *dbNode ) bool CInterfaceProperty::link( CCDBNodeLeaf *dbNode )
{ {
@ -66,6 +72,20 @@ namespace NLGUI
} }
void CInterfaceProperty::setDouble(double value)
{
C64BitsParts parts;
parts.d = value;
setSInt64(parts.i64);
}
double CInterfaceProperty::getDouble() const
{
C64BitsParts parts;
parts.i64 = getSInt64();
return parts.d;
}
// ***************** // *****************
// sint64 operations // sint64 operations
// ***************** // *****************
@ -104,10 +124,9 @@ namespace NLGUI
if ( isdigit(*ptr) || *ptr=='-') if ( isdigit(*ptr) || *ptr=='-')
{ {
_VolatileValue = NLGUI::CDBManager::getInstance()->getDbProp(id); _VolatileValue = NLGUI::CDBManager::getInstance()->getDbProp(id);
double buf; C64BitsParts buf;
fromString(ptr, buf); fromString(ptr, buf.d);
sint64 i = *(sint64*)&buf; _VolatileValue->setValue64(buf.i64);
_VolatileValue->setValue64( i );
} }
else else
{ {

View file

@ -632,6 +632,9 @@ CEvalNumExpr::TReturnState CEvalNumExpr::evalExpression (double &finalResult, TT
TOperator resultUnaryOp[InternalOperator]; TOperator resultUnaryOp[InternalOperator];
vector<TOperator> resultUnaryOpSup; vector<TOperator> resultUnaryOpSup;
// init table
for (uint i = 0; i < (uint)InternalOperator; ++i) resultUnaryOp[i] = NotOperator;
// Current value // Current value
double value; double value;

View file

@ -1387,13 +1387,10 @@ uint64 CSystemInfo::availableHDSpace (const string &filename)
std::string path = CFile::getPath(filename); std::string path = CFile::getPath(filename);
#ifdef NL_OS_UNIX #ifdef NL_OS_UNIX
struct stat stst;
struct statfs stfs; struct statfs stfs;
if (::statfs(path.c_str(), &stfs) != 0) return 0;
if (::stat(path.c_str(), &stst) == -1) return 0; return (uint64)(stfs.f_bavail * stfs.f_bsize);
if (::statfs(path.c_str(), &stfs) == -1) return 0;
return (uint64)(stfs.f_bavail * stst.st_blksize);
#else #else
ULARGE_INTEGER freeSpace = {0}; ULARGE_INTEGER freeSpace = {0};
BOOL bRes = ::GetDiskFreeSpaceExW(utf8ToWide(path), &freeSpace, NULL, NULL); BOOL bRes = ::GetDiskFreeSpaceExW(utf8ToWide(path), &freeSpace, NULL, NULL);

View file

@ -212,8 +212,8 @@ namespace NLNET
{ {
// name is more deep, need to resurse // name is more deep, need to resurse
parts.erase(parts.begin()); parts.erase(parts.begin());
CSString subName; std::string subName;
subName.join(reinterpret_cast<CVectorSString&>(parts), "."); join(parts, ".", subName);
sub->setParam(subName, value); sub->setParam(subName, value);
} }
else else

View file

@ -53,7 +53,7 @@ bool CDatabaseConfig::init(const std::string &asset)
TPathString configPath = rootPath + "/database.cfg"; TPathString configPath = rootPath + "/database.cfg";
while (!CFile::fileExists(configPath)) while (!CFile::fileExists(configPath))
{ {
int sep = CFile::getLastSeparator(rootPath); std::string::size_type sep = CFile::getLastSeparator(rootPath);
if (sep == string::npos) if (sep == string::npos)
return false; return false;

View file

@ -65,7 +65,7 @@ bool CProjectConfig::init(const std::string &asset, Flags flags, bool partial)
TPathString configPath = rootPath + "/nel.cfg"; TPathString configPath = rootPath + "/nel.cfg";
while (!CFile::fileExists(configPath)) while (!CFile::fileExists(configPath))
{ {
int sep = CFile::getLastSeparator(rootPath); std::string::size_type sep = CFile::getLastSeparator(rootPath);
if (sep == string::npos) if (sep == string::npos)
return false; return false;
@ -82,7 +82,7 @@ bool CProjectConfig::init(const std::string &asset, Flags flags, bool partial)
std::vector<TPathString> configRootPaths; std::vector<TPathString> configRootPaths;
TPathString projectConfigPath; TPathString projectConfigPath;
uint32 projectConfigModification; uint32 projectConfigModification = 0;
std::string projectName; std::string projectName;
if (partial) if (partial)
{ {

View file

@ -139,7 +139,7 @@ bool CMaxToLigo::loadLigoConfigFile (CLigoConfig& config, Interface& it, bool di
try try
{ {
// Load the config file // Load the config file
config.readConfigFile (sModulePath, false); config.readConfigFile (tStrToUtf8(sModulePath), false);
// ok // ok
return true; return true;

View file

@ -151,7 +151,7 @@ Value* export_material_cf (Value** arg_list, int count)
nlassert (node); nlassert (node);
// The second arg // The second arg
const char *fileName = arg_list[1]->to_string(); const std::string fileName = tStrToUtf8(arg_list[1]->to_string());
// The third arg // The third arg
bool checkOnly = (arg_list[2]->to_bool() != FALSE); bool checkOnly = (arg_list[2]->to_bool() != FALSE);
@ -204,12 +204,7 @@ Value* export_material_cf (Value** arg_list, int count)
{ {
// Make a name for the zone // Make a name for the zone
char drive[512]; std::string path = CFile::getPath(fileName) + CFile::getFilenameWithoutExtension(fileName) + ".zone";
char dir[512];
char name[512];
char path[512];
_splitpath (fileName, drive, dir, name, NULL);
_makepath (path, drive, dir, name, ".zone");
// Ok ? // Ok ?
bool ok = true; bool ok = true;
@ -322,7 +317,7 @@ Value* export_transition_cf (Value** arg_list, int count)
nlassert (is_array(nodes)); nlassert (is_array(nodes));
// The second arg // The second arg
const char *fileName = arg_list[1]->to_string(); std::string fileName = tStrToUtf8(arg_list[1]->to_string());
// The second arg // The second arg
string matFilename[2]; string matFilename[2];
@ -505,10 +500,7 @@ Value* export_transition_cf (Value** arg_list, int count)
for (zone=0; zone<CTransition::TransitionZoneCount; zone++) for (zone=0; zone<CTransition::TransitionZoneCount; zone++)
{ {
// Final path // Final path
char path[512]; std::string path = CFile::getPath(fileName) + toString("%s-%u", CFile::getFilenameWithoutExtension(fileName).c_str(), zone) + ".zone";
_splitpath (fileName, drive, dir, path, NULL);
sprintf (name, "%s-%d", path, zone);
_makepath (path, drive, dir, name, ".zone");
// Another the stream // Another the stream
COFile outputfile2; COFile outputfile2;
@ -1072,30 +1064,17 @@ Value* export_zone_cf (Value** arg_list, int count)
else else
{ {
// Build a filename // Build a filename
char drive[512]; std::string path = NLMISC::CFile::getPath(fileName);
char path[512]; std::string name = NLMISC::CFile::getFilenameWithoutExtension(fileName);
char finalpath[512];
char name[512];
char ext[512];
_splitpath (fileName.c_str(), drive, path, name, ext);
// Build the zone filename // Build the zone filename
char outputFilenameZone[512]; std::string outputFilenameZone = path + "zones/" + name + ".zone";
strcpy (finalpath, path);
strcat (finalpath, "zones\\");
_makepath (outputFilenameZone, drive, finalpath, name, ".zone");
// Build the snap shot filename // Build the snap shot filename
char outputFilenameSnapShot[512]; std::string outputFilenameSnapShot = path + "zonesBitmaps/" + name + ".tga";
strcpy (finalpath, path);
strcat (finalpath, "zoneBitmaps\\");
_makepath (outputFilenameSnapShot, drive, finalpath, name, ".tga");
// Build the ligozone filename // Build the ligozone filename
char outputFilenameLigozone[512]; std::string outputFilenameLigozone = path + "zoneLigos/" + name + ".ligozone";
strcpy (finalpath, path);
strcat (finalpath, "zoneLigos\\");
_makepath (outputFilenameLigozone, drive, finalpath, name, ".ligozone");
// Build the zone // Build the zone
CZone zone; CZone zone;
@ -1179,12 +1158,12 @@ Value* export_zone_cf (Value** arg_list, int count)
if (weWantToMakeASnapshot) if (weWantToMakeASnapshot)
{ {
CIFile fileFarBank; CIFile fileFarBank;
char drive[512];
char path[512]; std::string path = NLMISC::CFile::getPath(GetBankPathName());
char name[512]; std::string name = NLMISC::CFile::getFilenameWithoutExtension(GetBankPathName());
char farBankPathName[512];
_splitpath (GetBankPathName ().c_str (), drive, path, name, NULL); std::string farBankPathName = path + name + ".farbank";
_makepath (farBankPathName, drive, path, name, "farbank");
if (fileFarBank.open (farBankPathName)) if (fileFarBank.open (farBankPathName))
{ {
// Create an xml stream // Create an xml stream
@ -1908,11 +1887,9 @@ Value* make_snapshot_cf (Value** arg_list, int count)
else else
{ {
// Build a filename // Build a filename
char drivetga[512]; std::string nametga = CFile::getFilenameWithoutExtension(fileName);
char pathtga[512]; std::string pathtga = CFile::getPath(fileName);
char nametga[512];
char exttga[512];
_splitpath (fileName.c_str(), drivetga, pathtga, nametga, exttga);
// Build the zone // Build the zone
CZone zone; CZone zone;
@ -1956,12 +1933,9 @@ Value* make_snapshot_cf (Value** arg_list, int count)
if (tileBank != NULL) if (tileBank != NULL)
{ {
CIFile fileFarBank; CIFile fileFarBank;
char drive[512]; std::string name = CFile::getFilenameWithoutExtension(GetBankPathName());
char path[512]; std::string farBankPathName = CFile::getPath(GetBankPathName()) + name + ".farbank";
char name[512];
char farBankPathName[512];
_splitpath (GetBankPathName ().c_str (), drive, path, name, NULL);
_makepath (farBankPathName, drive, path, name, "farbank");
if (fileFarBank.open (farBankPathName)) if (fileFarBank.open (farBankPathName))
{ {
// Create an xml stream // Create an xml stream
@ -1974,8 +1948,7 @@ Value* make_snapshot_cf (Value** arg_list, int count)
if (MakeSnapShot (snapshot, *tileBank, *tileFarBank, xMin, xMax, yMin, yMax, config, errorInDialog)) if (MakeSnapShot (snapshot, *tileBank, *tileFarBank, xMin, xMax, yMin, yMax, config, errorInDialog))
{ {
// Build the snap shot filename // Build the snap shot filename
char outputFilenameSnapShot[512]; std::string outputFilenameSnapShot = pathtga + nametga + ".tga";
_makepath (outputFilenameSnapShot, drivetga, pathtga, nametga, ".tga");
// Output the snap shot // Output the snap shot
COFile outputSnapShot; COFile outputSnapShot;
@ -2014,12 +1987,14 @@ Value* make_snapshot_cf (Value** arg_list, int count)
bankElm.addCategory (strlwr (categories[j].first), strlwr (categories[j].second)); bankElm.addCategory (strlwr (categories[j].first), strlwr (categories[j].second));
} }
// Catch exception
#if 0
// Write the zone // Write the zone
COFile outputLigoZone; COFile outputLigoZone;
std::string outputFilenameSnapShot = pathtga + nametga + ".tga";
_makepath (outputFilenameSnapShot, drivetga, pathtga, nametga, ".ligozone"); _makepath (outputFilenameSnapShot, drivetga, pathtga, nametga, ".ligozone");
// Catch exception try
/*try
{ {
// Open the selected zone file // Open the selected zone file
if (outputLigoZone.open (outputFilenameSnapShot)) if (outputLigoZone.open (outputFilenameSnapShot))
@ -2048,7 +2023,8 @@ Value* make_snapshot_cf (Value** arg_list, int count)
char tmp[512]; char tmp[512];
smprintf (tmp, 512, "Error while loading the file %s : %s", fileName, e.what()); smprintf (tmp, 512, "Error while loading the file %s : %s", fileName, e.what());
CMaxToLigo::errorMessage (tmp, "NeL Ligo export zone", *MAXScript_interface, errorInDialog); CMaxToLigo::errorMessage (tmp, "NeL Ligo export zone", *MAXScript_interface, errorInDialog);
}*/ }
#endif
} }
else else
{ {

View file

@ -262,8 +262,7 @@ void CAnimationSetDlg::refresh (BOOL update)
for (i=0; i<object->Saved.AnimationFileName.size(); i++) for (i=0; i<object->Saved.AnimationFileName.size(); i++)
{ {
// Get the animation name // Get the animation name
char name[512]; std::string name = NLMISC::CFile::getFilenameWithoutExtension(object->Saved.AnimationFileName[i]);
_splitpath (object->Saved.AnimationFileName[i].c_str(), NULL, NULL, name, NULL);
// Get the animation pointer // Get the animation pointer
CAnimation *anim = object->AnimationSet.getAnimation (object->AnimationSet.getAnimationIdByName (name)); CAnimation *anim = object->AnimationSet.getAnimation (object->AnimationSet.getAnimationIdByName (name));
@ -314,8 +313,7 @@ void CAnimationSetDlg::refresh (BOOL update)
for (i=0; i<object->Saved.SWTFileName.size(); i++) for (i=0; i<object->Saved.SWTFileName.size(); i++)
{ {
// Get the animation name // Get the animation name
char name[512]; std::string name = NLMISC::CFile::getFilenameWithoutExtension(object->Saved.SWTFileName[i]);
_splitpath (object->Saved.SWTFileName[i].c_str(), NULL, NULL, name, NULL);
// Get the animation pointer // Get the animation pointer
CSkeletonWeight *swt = object->AnimationSet.getSkeletonWeight (object->AnimationSet.getSkeletonWeightIdByName (name)); CSkeletonWeight *swt = object->AnimationSet.getSkeletonWeight (object->AnimationSet.getSkeletonWeightIdByName (name));

View file

@ -84,21 +84,9 @@ bool CEditMorphMeshDlg::getShapeNameFromDlg(std::string &name)
CFileDialog fd(TRUE, _T(".shape"), _T("*.shape"), 0, NULL, this); CFileDialog fd(TRUE, _T(".shape"), _T("*.shape"), 0, NULL, this);
if (fd.DoModal() == IDOK) if (fd.DoModal() == IDOK)
{ {
// Add to the path
/*
char drive[256];
char dir[256];
char path[256];
char fname[256];
char ext[256];
*/
// Add search path for the texture // Add search path for the texture
/* /*
_splitpath (fd.GetPathName(), drive, dir, fname, ext); NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName()));
_makepath (path, drive, dir, NULL, NULL);
NLMISC::CPath::addSearchPath (path);
*/ */
name = tStrToUtf8(fd.GetPathName()); name = tStrToUtf8(fd.GetPathName());

View file

@ -317,7 +317,7 @@ inline void CEditableRangeT<float>::value2CString(float value, CString &dest)
inline const TCHAR *CEditableRangeT<float>::string2value(const CString &value, float &result) inline const TCHAR *CEditableRangeT<float>::string2value(const CString &value, float &result)
{ {
if (sscanf((LPCTSTR) value, "%f", &result) == 1) if (NLMISC::fromString(tStrToUtf8(value), result))
{ {
return NULL; return NULL;
} }
@ -343,8 +343,8 @@ inline void CEditableRangeT<uint32>::value2CString(uint32 value, CString &dest)
inline const TCHAR *CEditableRangeT<uint32>::string2value(const CString &value, uint32 &result) inline const TCHAR *CEditableRangeT<uint32>::string2value(const CString &value, uint32 &result)
{ {
uint32 tmp; sint32 tmp;
if (sscanf((LPCTSTR) value, "%d", &tmp) == 1) if (NLMISC::fromString(tStrToUtf8(value), tmp))
{ {
if (strchr((LPCTSTR) value, '-')) if (strchr((LPCTSTR) value, '-'))
{ {
@ -379,8 +379,8 @@ inline void CEditableRangeT<sint32>::value2CString(sint32 value, CString &dest)
inline const TCHAR *CEditableRangeT<sint32>::string2value(const CString &value, sint32 &result) inline const TCHAR *CEditableRangeT<sint32>::string2value(const CString &value, sint32 &result)
{ {
uint32 tmp; sint32 tmp;
if (sscanf((LPCTSTR) value, "%d", &tmp) == 1) if (NLMISC::fromString(tStrToUtf8(value), tmp))
{ {
result = tmp; result = tmp;
return NULL; return NULL;

View file

@ -137,7 +137,7 @@ void CLocatedTargetDlg::OnRemoveTarget()
m_Targets.DeleteString(indexs[k] - k); m_Targets.DeleteString(indexs[k] - k);
int l = m_AvailableTargets.AddString(utf8ToTStr(loc->getName())); int l = m_AvailableTargets.AddString(utf8ToTStr(loc->getName()));
m_AvailableTargets.SetItemData(l, (DWORD) loc); m_AvailableTargets.SetItemData(l, (DWORD_PTR) loc);
} }
UpdateData(FALSE); UpdateData(FALSE);
updateModifiedFlag(); updateModifiedFlag();
@ -159,8 +159,8 @@ BOOL CLocatedTargetDlg::OnInitDialog()
// fill the box thta tells us what the target are // fill the box thta tells us what the target are
for(k = 0; k < nbTarg; ++k) for(k = 0; k < nbTarg; ++k)
{ {
m_Targets.AddString(_LBTarget->getTarget(k)->getName().c_str() ); m_Targets.AddString(utf8ToTStr(_LBTarget->getTarget(k)->getName()));
m_Targets.SetItemData(k, (DWORD) _LBTarget->getTarget(k) ); m_Targets.SetItemData(k, (DWORD_PTR) _LBTarget->getTarget(k));
targetSet.insert(_LBTarget->getTarget(k)); targetSet.insert(_LBTarget->getTarget(k));
}; };
@ -179,8 +179,8 @@ BOOL CLocatedTargetDlg::OnInitDialog()
{ {
if (targetSet.find(loc) == targetSet.end()) if (targetSet.find(loc) == targetSet.end())
{ {
int l = m_AvailableTargets.AddString(loc->getName().c_str() ); int l = m_AvailableTargets.AddString(utf8ToTStr(loc->getName()));
m_AvailableTargets.SetItemData(l, (DWORD) loc ); m_AvailableTargets.SetItemData(l, (DWORD_PTR) loc);
} }
} }
} }

View file

@ -94,22 +94,17 @@ void CMeshDlg::OnBrowseShape()
if (fd.DoModal() == IDOK) if (fd.DoModal() == IDOK)
{ {
// Add to the path // Add to the path
char drive[256]; std::string fullPath = tStrToUtf8(fd.GetPathName());
char dir[256]; std::string fname = NLMISC::CFile::getFilenameWithoutExtension(fullPath);
char path[256]; std::string ext = NLMISC::CFile::getExtension(fullPath);
char fname[256];
char ext[256];
// Add search path for the texture // Add search path for the texture
_splitpath (fd.GetPathName(), drive, dir, fname, ext); NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(fullPath));
_makepath (path, drive, dir, NULL, NULL);
NLMISC::CPath::addSearchPath (path);
try try
{ {
_ShapeParticle->setShape(std::string(fname) + ext); _ShapeParticle->setShape(fname + "." + ext);
m_ShapeName = (std::string(fname) + ext).c_str(); m_ShapeName = utf8ToTStr(fname + "." + ext);
touchPSState(); touchPSState();
} }
catch (const NLMISC::Exception &e) catch (const NLMISC::Exception &e)
@ -162,7 +157,7 @@ void CMeshDlg::updateForMorph()
GetDlgItem(IDC_SHAPE_NAME)->EnableWindow(!enable); GetDlgItem(IDC_SHAPE_NAME)->EnableWindow(!enable);
if (!enable) if (!enable)
{ {
m_ShapeName = cm->getShape().c_str(); m_ShapeName = utf8ToTStr(cm->getShape());
} }
else else
{ {

View file

@ -188,6 +188,7 @@ void CMultiTexDlg::readValues(bool alternate)
} }
} }
GetDlgItem(IDC_BUMP_FACTOR)->SetWindowText(utf8ToTStr(NLMISC::toString("%.3f", _MTP->getBumpFactor())));
} }
@ -206,7 +207,6 @@ void CMultiTexDlg::writeValues(bool alternate)
TCHAR u1[10], u2[10], v1[10], v2[10]; TCHAR u1[10], u2[10], v1[10], v2[10];
NLMISC::CVector2f vs1, vs2; NLMISC::CVector2f vs1, vs2;
if (!alternate) if (!alternate)
{ {
GetDlgItem(IDC_U_SPEED_1)->GetWindowText(u1, 10); GetDlgItem(IDC_U_SPEED_1)->GetWindowText(u1, 10);

View file

@ -852,8 +852,8 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHA
nt = new CNodeType(nt->Loc, objIndex); nt = new CNodeType(nt->Loc, objIndex);
_NodeTypes.push_back(nt); _NodeTypes.push_back(nt);
// insert the element in the tree // insert the element in the tree
HTREEITEM root = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT, "instance", PSIconLocatedInstance, PSIconLocatedInstance, 0, 0, (LPARAM) nt, GetSelectedItem(), TVI_LAST); HTREEITEM root = InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_TEXT, _T("instance"), PSIconLocatedInstance, PSIconLocatedInstance, 0, 0, (LPARAM) nt, GetSelectedItem(), TVI_LAST);
SetItemData(root, (DWORD) nt); SetItemData(root, (DWORD_PTR) nt);
Invalidate(); Invalidate();
} }
break; break;

View file

@ -159,7 +159,7 @@ void CPickSound::OnDblclkList()
stopCurrSource(); stopCurrSource();
CString sName; CString sName;
m_NameList.GetText(curSel, sName); m_NameList.GetText(curSel, sName);
_CurrSource = CSoundSystem::create(std::string( (LPCTSTR) sName)); _CurrSource = CSoundSystem::create(tStrToUtf8(sName));
} }
//======================================================================================== //========================================================================================

View file

@ -178,8 +178,8 @@ BOOL CPSMoverDlg::OnInitDialog()
{ {
if (dynamic_cast<NL3D::IPSMover *>(_EditedLocated->getBoundObject(k))) if (dynamic_cast<NL3D::IPSMover *>(_EditedLocated->getBoundObject(k)))
{ {
uint insertedLine = m_SubComponentCtrl.AddString(_EditedLocated->getBoundObject(k)->getName().c_str()); uint insertedLine = m_SubComponentCtrl.AddString(utf8ToTStr(_EditedLocated->getBoundObject(k)->getName()));
m_SubComponentCtrl.SetItemData(insertedLine, (DWORD) _EditedLocated->getBoundObject(k)); m_SubComponentCtrl.SetItemData(insertedLine, (DWORD_PTR) _EditedLocated->getBoundObject(k));
++nbCandidates; ++nbCandidates;
} }
} }

View file

@ -843,13 +843,13 @@ void CSkeletonScaleDlg::OnSsdButtonSaveas()
return; return;
// choose the file // choose the file
CFileDialog fd(FALSE, "skel", _SkeletonFileName.c_str(), OFN_OVERWRITEPROMPT, "SkelFiles (*.skel)|*.skel|All Files (*.*)|*.*||", this) ; CFileDialog fd(FALSE, _T("skel"), utf8ToTStr(_SkeletonFileName), OFN_OVERWRITEPROMPT, _T("SkelFiles (*.skel)|*.skel|All Files (*.*)|*.*||"), this) ;
fd.m_ofn.lpstrTitle= "Save As Skeleton"; fd.m_ofn.lpstrTitle = _T("Save As Skeleton");
if (fd.DoModal() == IDOK) if (fd.DoModal() == IDOK)
{ {
NLMISC::COFile f; NLMISC::COFile f;
if( f.open((const char*)fd.GetPathName()) ) if( f.open(tStrToUtf8(fd.GetPathName())) )
{ {
if(saveCurrentInStream(f)) if(saveCurrentInStream(f))
{ {
@ -859,7 +859,7 @@ void CSkeletonScaleDlg::OnSsdButtonSaveas()
} }
// bkup the valid fileName (new file edited) // bkup the valid fileName (new file edited)
_SkeletonFileName= (const char*)fd.GetPathName(); _SkeletonFileName= tStrToUtf8(fd.GetPathName());
_StaticFileName= _SkeletonFileName.c_str(); _StaticFileName= _SkeletonFileName.c_str();
UpdateData(FALSE); UpdateData(FALSE);
} }

View file

@ -196,7 +196,7 @@ void CVegetableDlg::updateCurSelVegetableName()
_Vegetables[id].updateVegetableName(); _Vegetables[id].updateVegetableName();
// replace name in the listBox: must delete, and re-insert // replace name in the listBox: must delete, and re-insert
VegetableList.DeleteString(id); VegetableList.DeleteString(id);
VegetableList.InsertString(id, _Vegetables[id].VegetableName.c_str()); VegetableList.InsertString(id, utf8ToTStr(_Vegetables[id].VegetableName));
VegetableList.SetCurSel(id); VegetableList.SetCurSel(id);
} }
} }
@ -349,14 +349,14 @@ bool CVegetableDlg::loadVegetableSet(NL3D::CTileVegetableDesc &vegetSet, const
ok= true; ok= true;
if( f.open((const char*)fd.GetPathName()) ) if( f.open(tStrToUtf8(fd.GetPathName())))
{ {
try try
{ {
// read the vegetable // read the vegetable
f.serial(vegetSet); f.serial(vegetSet);
// bkup fileName. // bkup fileName.
_LastVegetSetName= (const char*)fd.GetFileName(); _LastVegetSetName = tStrToUtf8(fd.GetFileName());
} }
catch(const NLMISC::EStream &) catch(const NLMISC::EStream &)
{ {
@ -439,7 +439,7 @@ void CVegetableDlg::appendVegetableSet(NL3D::CTileVegetableDesc &vegetSet)
_Vegetables[id].initVegetable(veget); _Vegetables[id].initVegetable(veget);
// update view // update view
VegetableList.AddString(_Vegetables[id].VegetableName.c_str()); VegetableList.AddString(utf8ToTStr(_Vegetables[id].VegetableName));
} }
} }
} }
@ -529,7 +529,7 @@ void CVegetableDlg::OnButtonVegetableAdd()
_Vegetables[id].initDefaultVegetable(); _Vegetables[id].initDefaultVegetable();
// update view // update view
VegetableList.AddString(_Vegetables[id].VegetableName.c_str()); VegetableList.AddString(utf8ToTStr(_Vegetables[id].VegetableName));
// update 3D view // update 3D view
refreshVegetableDisplay(); refreshVegetableDisplay();
@ -559,7 +559,7 @@ void CVegetableDlg::OnButtonVegetableInsert()
_Vegetables[id].initDefaultVegetable(); _Vegetables[id].initDefaultVegetable();
// update view // update view
VegetableList.InsertString(id, _Vegetables[id].VegetableName.c_str()); VegetableList.InsertString(id, utf8ToTStr(_Vegetables[id].VegetableName));
// update 3D view // update 3D view
refreshVegetableDisplay(); refreshVegetableDisplay();
@ -611,7 +611,7 @@ void CVegetableDlg::OnButtonVegetableLoadDesc()
{ {
NLMISC::CIFile f; NLMISC::CIFile f;
if( f.open((const char*)fd.GetPathName()) ) if( f.open(tStrToUtf8(fd.GetPathName())) )
{ {
NL3D::CVegetable veget; NL3D::CVegetable veget;
try try
@ -624,7 +624,7 @@ void CVegetableDlg::OnButtonVegetableLoadDesc()
_Vegetables[id].initVegetable(veget); _Vegetables[id].initVegetable(veget);
// update view // update view
VegetableList.AddString(_Vegetables[id].VegetableName.c_str()); VegetableList.AddString(utf8ToTStr(_Vegetables[id].VegetableName));
// update 3D view // update 3D view
refreshVegetableDisplay(); refreshVegetableDisplay();
@ -651,13 +651,13 @@ void CVegetableDlg::OnButtonVegetableSaveDesc()
std::string fileName= _Vegetables[id].VegetableName + ".vegetdesc"; std::string fileName= _Vegetables[id].VegetableName + ".vegetdesc";
CFileDialog fd(FALSE, "vegetdesc", fileName.c_str(), OFN_OVERWRITEPROMPT, "VegetDescFiles (*.vegetdesc)|*.vegetdesc|All Files (*.*)|*.*||", this) ; CFileDialog fd(FALSE, _T("vegetdesc"), utf8ToTStr(fileName), OFN_OVERWRITEPROMPT, _T("VegetDescFiles (*.vegetdesc)|*.vegetdesc|All Files (*.*)|*.*||"), this) ;
fd.m_ofn.lpstrTitle= "Save Vegetable Descriptor"; fd.m_ofn.lpstrTitle = _T("Save Vegetable Descriptor");
if (fd.DoModal() == IDOK) if (fd.DoModal() == IDOK)
{ {
NLMISC::COFile f; NLMISC::COFile f;
if( f.open((const char*)fd.GetPathName()) ) if( f.open(tStrToUtf8(fd.GetPathName())) )
{ {
try try
{ {
@ -722,13 +722,13 @@ void CVegetableDlg::OnButtonVegetableSaveSet()
buildVegetableSet(vegetSet); buildVegetableSet(vegetSet);
// Then try to save it. // Then try to save it.
CFileDialog fd(FALSE, "vegetset", _LastVegetSetName.c_str(), OFN_OVERWRITEPROMPT, "VegetSetFiles (*.vegetset)|*.vegetset|All Files (*.*)|*.*||", this) ; CFileDialog fd(FALSE, _T("vegetset"), utf8ToTStr(_LastVegetSetName), OFN_OVERWRITEPROMPT, _T("VegetSetFiles (*.vegetset)|*.vegetset|All Files (*.*)|*.*||"), this) ;
fd.m_ofn.lpstrTitle= "Save Vegetable Set"; fd.m_ofn.lpstrTitle = _T("Save Vegetable Set");
if (fd.DoModal() == IDOK) if (fd.DoModal() == IDOK)
{ {
NLMISC::COFile f; NLMISC::COFile f;
if( f.open((const char*)fd.GetPathName()) ) if( f.open(tStrToUtf8(fd.GetPathName())) )
{ {
try try
{ {

View file

@ -33,7 +33,7 @@ void CDirectEditableRangeFloat::init(uint32 x, uint32 y, CWnd *pParent)
CRect rect; CRect rect;
rect.SetRect(x, y+10, x+dx, y+25); rect.SetRect(x, y+10, x+dx, y+25);
_StaticText.Create(_Title.c_str(), WS_CHILD | WS_VISIBLE, rect, pParent); _StaticText.Create(utf8ToTStr(_Title), WS_CHILD | WS_VISIBLE, rect, pParent);
_StaticText.SetFont(pParent->GetFont()); _StaticText.SetFont(pParent->GetFont());
} }

View file

@ -154,7 +154,7 @@ BOOL CVegetableNoiseValueDlg::OnInitDialog()
// Set the name. // Set the name.
NoiseValueName.SetWindowText(_TitleName.c_str()); NoiseValueName.SetWindowText(utf8ToTStr(_TitleName));
// if previously setuped, setup now the noiseValue. // if previously setuped, setup now the noiseValue.
@ -264,7 +264,5 @@ void CVegetableNoiseValueDlg::applyScaleSlider(sint scrollValue)
_RandValue->updateValueFromReader(); _RandValue->updateValueFromReader();
// update marker text // update marker text
char str[256]; StaticScaleMarker.SetWindowText(utf8ToTStr(NLMISC::toString("%d%%", (sint)(factor * 100))));
sprintf(str, "%d%%", (sint)(factor*100));
StaticScaleMarker.SetWindowText(str);
} }

View file

@ -63,7 +63,7 @@ BOOL CVegetableSelectDlg::OnInitDialog()
uint num= _VegetableDlg->getNumVegetables(); uint num= _VegetableDlg->getNumVegetables();
for(uint i=0; i<num; i++) for(uint i=0; i<num; i++)
{ {
VegetableList.AddString(_VegetableDlg->getVegetableName(i).c_str()); VegetableList.AddString(utf8ToTStr(_VegetableDlg->getVegetableName(i)));
} }
return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control

View file

@ -70,26 +70,22 @@ END_MESSAGE_MAP()
void CVegetableWindDlg::updateView() void CVegetableWindDlg::updateView()
{ {
float a; float a;
char str[256];
// update Power. // update Power.
a= _ObjViewer->getVegetableWindPower(); a= _ObjViewer->getVegetableWindPower();
sprintf(str, "%.2f", a); StaticPower.SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", a)));
StaticPower.SetWindowText(str);
NLMISC::clamp(a, 0, NL_VEGETABLE_EDIT_WIND_MAX_POWER); NLMISC::clamp(a, 0, NL_VEGETABLE_EDIT_WIND_MAX_POWER);
SliderPower.SetPos((sint)(a*NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE / NL_VEGETABLE_EDIT_WIND_MAX_POWER)); SliderPower.SetPos((sint)(a*NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE / NL_VEGETABLE_EDIT_WIND_MAX_POWER));
// update BendStart. // update BendStart.
a= _ObjViewer->getVegetableWindBendStart(); a= _ObjViewer->getVegetableWindBendStart();
sprintf(str, "%.2f", a); StaticBendStart.SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", a)));
StaticBendStart.SetWindowText(str);
NLMISC::clamp(a, 0, NL_VEGETABLE_EDIT_WIND_MAX_BENDSTART); NLMISC::clamp(a, 0, NL_VEGETABLE_EDIT_WIND_MAX_BENDSTART);
SliderBendStart.SetPos((sint)(a*NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE / NL_VEGETABLE_EDIT_WIND_MAX_BENDSTART)); SliderBendStart.SetPos((sint)(a*NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE / NL_VEGETABLE_EDIT_WIND_MAX_BENDSTART));
// update Frequency. // update Frequency.
a= _ObjViewer->getVegetableWindFrequency(); a= _ObjViewer->getVegetableWindFrequency();
sprintf(str, "%.2f", a); StaticFrequency.SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", a)));
StaticFrequency.SetWindowText(str);
NLMISC::clamp(a, 0, NL_VEGETABLE_EDIT_WIND_MAX_FREQUENCY); NLMISC::clamp(a, 0, NL_VEGETABLE_EDIT_WIND_MAX_FREQUENCY);
SliderFrequency.SetPos((sint)(a*NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE / NL_VEGETABLE_EDIT_WIND_MAX_FREQUENCY)); SliderFrequency.SetPos((sint)(a*NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE / NL_VEGETABLE_EDIT_WIND_MAX_FREQUENCY));
@ -129,28 +125,24 @@ void CVegetableWindDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBa
&& nSBCode==SB_THUMBPOSITION || nSBCode==SB_THUMBTRACK) && nSBCode==SB_THUMBPOSITION || nSBCode==SB_THUMBTRACK)
{ {
float a; float a;
char str[256];
if(sliderCtrl == &SliderPower) if(sliderCtrl == &SliderPower)
{ {
a= (float)nPos * NL_VEGETABLE_EDIT_WIND_MAX_POWER / NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE; a= (float)nPos * NL_VEGETABLE_EDIT_WIND_MAX_POWER / NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE;
_ObjViewer->setVegetableWindPower(a); _ObjViewer->setVegetableWindPower(a);
sprintf(str, "%.2f", a); StaticPower.SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", a)));
StaticPower.SetWindowText(str);
} }
else if(sliderCtrl == &SliderBendStart) else if(sliderCtrl == &SliderBendStart)
{ {
a= (float)nPos * NL_VEGETABLE_EDIT_WIND_MAX_BENDSTART / NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE; a= (float)nPos * NL_VEGETABLE_EDIT_WIND_MAX_BENDSTART / NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE;
_ObjViewer->setVegetableWindBendStart(a); _ObjViewer->setVegetableWindBendStart(a);
sprintf(str, "%.2f", a); StaticBendStart.SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", a)));
StaticBendStart.SetWindowText(str);
} }
else if(sliderCtrl == &SliderFrequency) else if(sliderCtrl == &SliderFrequency)
{ {
a= (float)nPos * NL_VEGETABLE_EDIT_WIND_MAX_FREQUENCY / NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE; a= (float)nPos * NL_VEGETABLE_EDIT_WIND_MAX_FREQUENCY / NL_VEGETABLE_EDIT_WIND_SLIDER_RANGE;
_ObjViewer->setVegetableWindFrequency(a); _ObjViewer->setVegetableWindFrequency(a);
sprintf(str, "%.2f", a); StaticFrequency.SetWindowText(utf8ToTStr(NLMISC::toString("%.2f", a)));
StaticFrequency.SetWindowText(str);
} }
} }
else else

View file

@ -165,9 +165,8 @@ BOOL CWaterPoolEditor::OnInitDialog()
int CWaterPoolEditor::addPool(uint32 ID) int CWaterPoolEditor::addPool(uint32 ID)
{ {
char poolId[128]; std::string poolId = NLMISC::toString("%d (%s)", ID, _Wpm->getPoolByID(ID).getName().c_str());
sprintf(poolId, "%d (%s)", ID, _Wpm->getPoolByID(ID).getName().c_str()); int index = m_PoolList.AddString(utf8ToTStr(poolId));
int index = m_PoolList.AddString(poolId);
nlassert(index != LB_ERR); nlassert(index != LB_ERR);
m_PoolList.SetItemData(index, ID); m_PoolList.SetItemData(index, ID);
return index; return index;
@ -358,7 +357,7 @@ void CWaterPoolEditor::OnLoadPool()
{ {
NLMISC::CIXml iXml; NLMISC::CIXml iXml;
NLMISC::CIFile iF; NLMISC::CIFile iF;
if (iF.open((LPCTSTR) fileDlg.GetPathName())) if (iF.open(tStrToUtf8(fileDlg.GetPathName())))
{ {
if (iXml.init (iF)) if (iXml.init (iF))
{ {
@ -370,17 +369,17 @@ void CWaterPoolEditor::OnLoadPool()
else else
{ {
iF.close(); iF.close();
MessageBox (("Unable to init xml stream from file : " + std::string((LPCTSTR) fileDlg.GetPathName())).c_str(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); MessageBox (utf8ToTStr(NLMISC::toString("Unable to init xml stream from file: %s", tStrToUtf8(fileDlg.GetPathName()).c_str())), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
else else
{ {
MessageBox (("Unable to open file : " + std::string((LPCTSTR) fileDlg.GetPathName())).c_str(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); MessageBox (utf8ToTStr(NLMISC::toString("Unable to open file: %s", tStrToUtf8(fileDlg.GetPathName()).c_str())), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
catch (const NLMISC::Exception& e) catch (const NLMISC::Exception& e)
{ {
MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
} }
@ -396,7 +395,7 @@ void CWaterPoolEditor::OnSavePool()
{ {
NLMISC::COXml oXml; NLMISC::COXml oXml;
NLMISC::COFile oF; NLMISC::COFile oF;
if (oF.open((LPCTSTR) fileDlg.GetPathName())) if (oF.open(tStrToUtf8(fileDlg.GetPathName())))
{ {
if (oXml.init (&oF)) if (oXml.init (&oF))
{ {
@ -407,17 +406,17 @@ void CWaterPoolEditor::OnSavePool()
else else
{ {
oF.close(); oF.close();
MessageBox (("Unable to init xml stream from file : " + std::string((LPCTSTR) fileDlg.GetPathName())).c_str(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); MessageBox (utf8ToTStr(NLMISC::toString("Unable to init xml stream from file: %s", tStrToUtf8(fileDlg.GetPathName()).c_str())), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
else else
{ {
MessageBox (("Unable to open file : " + std::string((LPCTSTR) fileDlg.GetPathName())).c_str(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); MessageBox (utf8ToTStr(NLMISC::toString("Unable to open file: %s", tStrToUtf8(fileDlg.GetPathName()).c_str())), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
catch (const NLMISC::Exception& e) catch (const NLMISC::Exception& e)
{ {
MessageBox (e.what(), "NeL object viewer", MB_OK|MB_ICONEXCLAMATION); MessageBox (utf8ToTStr(e.what()), _T("NeL object viewer"), MB_OK|MB_ICONEXCLAMATION);
} }
} }

View file

@ -325,14 +325,14 @@ static INT_PTR CALLBACK CNelExportDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LP
// Name of the node // Name of the node
char sNodeMsg[256]; char sNodeMsg[256];
nlwarning (sNodeMsg, "Save %s model...", pNode->GetName()); nlwarning (sNodeMsg, "Save %s model...", tStrToUtf8(pNode->GetName()).c_str());
// It is a zone ? // It is a zone ?
if (RPO::isZone (*pNode, time)) if (RPO::isZone (*pNode, time))
{ {
// Save path // Save path
char sSavePath[256]; char sSavePath[256];
strcpy (sSavePath, pNode->GetName()); strcpy (sSavePath, tStrToUtf8(pNode->GetName()).c_str());
// Choose a file to export // Choose a file to export
if (!CExportNel::getScriptAppData (pNode, NEL3D_APPDATA_DONTEXPORT, 0)) if (!CExportNel::getScriptAppData (pNode, NEL3D_APPDATA_DONTEXPORT, 0))
@ -342,24 +342,22 @@ static INT_PTR CALLBACK CNelExportDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LP
if (!theCNelExport.exportZone (sSavePath, *pNode, time)) if (!theCNelExport.exportZone (sSavePath, *pNode, time))
{ {
// Error message // Error message
char sErrorMsg[512]; std::string sErrorMsg = toString("Error exporting the zone %s in the file\n%s", tStrToUtf8(pNode->GetName()).c_str(), sSavePath);
sprintf (sErrorMsg, "Error exporting the zone %s in the file\n%s", pNode->GetName(), sSavePath); MessageBox (hWnd, utf8ToTStr(sErrorMsg), L"NeL export", MB_OK|MB_ICONEXCLAMATION);
MessageBox (hWnd, sErrorMsg, "NeL export", MB_OK|MB_ICONEXCLAMATION);
} }
} }
} }
else if (CExportNel::isVegetable (*pNode, time)) else if (CExportNel::isVegetable (*pNode, time))
{ {
// Save path // Save path
char sSavePath[256]; std::string sSavePath = tStrToUtf8(pNode->GetName());
strcpy (sSavePath, pNode->GetName());
// Choose a file to export // Choose a file to export
if (!CExportNel::getScriptAppData (pNode, NEL3D_APPDATA_DONTEXPORT, 0)) if (!CExportNel::getScriptAppData (pNode, NEL3D_APPDATA_DONTEXPORT, 0))
if (theCNelExport.SelectFileForSave(hWnd, sNodeMsg, vegetableFilter, sSavePath)) if (theCNelExport.SelectFileForSave(hWnd, sNodeMsg, vegetableFilter, sSavePath.c_str()))
{ {
// Export the mesh // Export the mesh
if (!theCNelExport.exportVegetable (sSavePath, *pNode, time)) if (!theCNelExport.exportVegetable (sSavePath.c_str(), *pNode, time))
{ {
// Error message // Error message
char sErrorMsg[512]; char sErrorMsg[512];

View file

@ -99,7 +99,7 @@ bool CNelExport::exportMesh (const char *sPath, INode& node, TimeValue time)
{ {
// Open a file // Open a file
COFile file; COFile file;
if (file.open(tempFileName)) if (file.open(tStrToUtf8(tempFileName)))
{ {
try try
{ {

View file

@ -2338,24 +2338,24 @@ INT_PTR CALLBACK MiscDialogCallback (
currentParam->LigoSymmetry = SendMessage (GetDlgItem (hwndDlg, IDC_LIGO_SYMMETRY), BM_GETCHECK, 0, 0); currentParam->LigoSymmetry = SendMessage (GetDlgItem (hwndDlg, IDC_LIGO_SYMMETRY), BM_GETCHECK, 0, 0);
TCHAR tmp[512]; TCHAR tmp[512];
GetWindowText (GetDlgItem (hwndDlg, IDC_LIGO_ROTATE), tmp, 512); GetWindowText (GetDlgItem (hwndDlg, IDC_LIGO_ROTATE), tmp, 512);
currentParam->LigoRotate = tmp; currentParam->LigoRotate = tStrToUtf8(tmp);
// SWT // SWT
currentParam->SWT = SendMessage (GetDlgItem (hwndDlg, IDC_SWT), BM_GETCHECK, 0, 0); currentParam->SWT = SendMessage (GetDlgItem (hwndDlg, IDC_SWT), BM_GETCHECK, 0, 0);
GetWindowText (GetDlgItem (hwndDlg, IDC_SWT_WEIGHT), tmp, 512); GetWindowText (GetDlgItem (hwndDlg, IDC_SWT_WEIGHT), tmp, 512);
currentParam->SWTWeight = tmp; currentParam->SWTWeight = tStrToUtf8(tmp);
// Radial normals // Radial normals
for (uint smoothGroup=0; smoothGroup<NEL3D_RADIAL_NORMAL_COUNT; smoothGroup++) for (uint smoothGroup=0; smoothGroup<NEL3D_RADIAL_NORMAL_COUNT; smoothGroup++)
{ {
HWND edit = GetDlgItem (hwndDlg, IDC_RADIAL_NORMAL_29+smoothGroup); HWND edit = GetDlgItem (hwndDlg, IDC_RADIAL_NORMAL_29+smoothGroup);
GetWindowText (edit, tmp, 512); GetWindowText (edit, tmp, 512);
currentParam->RadialNormals[smoothGroup]=tmp; currentParam->RadialNormals[smoothGroup] = tStrToUtf8(tmp);
} }
// mesh interfaces // mesh interfaces
GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_FILE), tmp, 512); GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_FILE), tmp, 512);
currentParam->InterfaceFileName=tmp; currentParam->InterfaceFileName = tStrToUtf8(tmp);
GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_THRESHOLD), tmp, 512); GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_THRESHOLD), tmp, 512);
if (strlen(tmp) != 0) if (strlen(tmp) != 0)
currentParam->InterfaceThreshold = toFloatMax(tmp); currentParam->InterfaceThreshold = toFloatMax(tmp);
@ -2365,7 +2365,7 @@ INT_PTR CALLBACK MiscDialogCallback (
// Skeleton Scale // Skeleton Scale
currentParam->ExportBoneScale= SendMessage( GetDlgItem(hwndDlg, IDC_EXPORT_BONE_SCALE), BM_GETCHECK, 0, 0); currentParam->ExportBoneScale= SendMessage( GetDlgItem(hwndDlg, IDC_EXPORT_BONE_SCALE), BM_GETCHECK, 0, 0);
GetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_BONE_SCALE_NAME_EXT), tmp, 512); GetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_BONE_SCALE_NAME_EXT), tmp, 512);
currentParam->ExportBoneScaleNameExt = wideToUtf8(tmp); currentParam->ExportBoneScaleNameExt = tStrToUtf8(tmp);
// remanence // remanence
currentParam->UseRemanence = SendMessage (GetDlgItem (hwndDlg, IDC_USE_REMANENCE), BM_GETCHECK, 0, 0); currentParam->UseRemanence = SendMessage (GetDlgItem (hwndDlg, IDC_USE_REMANENCE), BM_GETCHECK, 0, 0);
@ -2373,7 +2373,7 @@ INT_PTR CALLBACK MiscDialogCallback (
GetWindowText (GetDlgItem (hwndDlg, IDC_REMANENCE_SLICE_NUMBER), tmp, 512); GetWindowText (GetDlgItem (hwndDlg, IDC_REMANENCE_SLICE_NUMBER), tmp, 512);
uint rsn; uint rsn;
if (sscanf(tmp, "%d", &rsn) == 1) if (NLMISC::fromString(tStrToUtf8(tmp), rsn))
{ {
currentParam->RemanenceSliceNumber = rsn; currentParam->RemanenceSliceNumber = rsn;
} }

View file

@ -111,15 +111,13 @@ void regsiterOVPath ()
if (!hModule) { ::MessageBox(NULL, "'hModule' failed at '" __FUNCTION__ "' in file '" __FILE__ " on line " NL_MACRO_TO_STR(__LINE__), "NeL Export", MB_OK | MB_ICONERROR); return; } if (!hModule) { ::MessageBox(NULL, "'hModule' failed at '" __FUNCTION__ "' in file '" __FILE__ " on line " NL_MACRO_TO_STR(__LINE__), "NeL Export", MB_OK | MB_ICONERROR); return; }
char sModulePath[256]; char sModulePath[256];
int res = GetModuleFileName(hModule, sModulePath, 256); int res = GetModuleFileName(hModule, sModulePath, 256);
if (!res) { ::MessageBox(NULL, "'res' failed at '" __FUNCTION__ "' in file '" __FILE__ " on line " NL_MACRO_TO_STR(__LINE__), "NeL Export", MB_OK | MB_ICONERROR); return; } if (!res) { ::MessageBox(NULL, _T("'res' failed at '") __FUNCTION__ _T("' in file '") __FILE__ _T(" on line ") NL_MACRO_TO_STR(__LINE__), _T("NeL Export"), MB_OK | MB_ICONERROR); return; }
char SDrive[512];
char SDir[512]; std::string modulePath = NLMISC::CFile::getPath(tStrToUtf8(sModulePath)) + "object_viewer.cfg";
_splitpath (sModulePath, SDrive, SDir, NULL, NULL);
_makepath (sModulePath, SDrive, SDir, "object_viewer", ".cfg");
// Load the config file // Load the config file
CConfigFile cf; CConfigFile cf;
cf.load (sModulePath); cf.load (modulePath);
try try
{ {
@ -367,7 +365,7 @@ void CNelExport::viewMesh (TimeValue time)
INode* pNode=_Ip->GetSelNode (nNode); INode* pNode=_Ip->GetSelNode (nNode);
string sTmp = "Object Name: "; string sTmp = "Object Name: ";
sTmp += pNode->GetName(); sTmp += tStrToUtf8(pNode->GetName());
ProgBar.setLine (0, sTmp); ProgBar.setLine (0, sTmp);
sTmp.clear(); sTmp.clear();
for (uint32 i = 1; i < 10; ++i) for (uint32 i = 1; i < 10; ++i)
@ -412,7 +410,7 @@ void CNelExport::viewMesh (TimeValue time)
if (pShape) if (pShape)
{ {
// Add the shape in the view // Add the shape in the view
uint instance = view->addMesh (pShape, pNode->GetName(), iteSkelShape->second.SkeletonInstance); uint instance = view->addMesh (pShape, tStrToUtf8(pNode->GetName()).c_str(), iteSkelShape->second.SkeletonInstance);
// Add tracks // Add tracks
CAnimation *anim=new CAnimation; CAnimation *anim=new CAnimation;

View file

@ -128,7 +128,7 @@ void SLightBuild::convertFromMaxLight (INode *node,TimeValue tvTime)
if (maxLight->EvalLightState(tvTime, valid, &ls)!=REF_SUCCEED) if (maxLight->EvalLightState(tvTime, valid, &ls)!=REF_SUCCEED)
return; return;
this->Name = node->GetName(); this->Name = tStrToUtf8(node->GetName());
// Retrieve the correct light Group Name // Retrieve the correct light Group Name
this->AnimatedLight = CExportNel::getAnimatedLight (node); this->AnimatedLight = CExportNel::getAnimatedLight (node);
@ -295,7 +295,7 @@ void SLightBuild::convertFromMaxLight (INode *node,TimeValue tvTime)
INode *exclNode = exclusionList[i]; INode *exclNode = exclusionList[i];
if (exclNode) // Crashfix // FIXME: Why is this NULL? if (exclNode) // Crashfix // FIXME: Why is this NULL?
{ {
string tmp = exclNode->GetName(); string tmp = tStrToUtf8(exclNode->GetName());
this->setExclusion.insert(tmp); this->setExclusion.insert(tmp);
} }
} }
@ -1930,7 +1930,7 @@ void supprLightNoInteractOne( vector<SLightBuild> &vLights, CMesh::CMeshBuild* p
{ {
bool bInteract = false; bool bInteract = false;
if( vLights[i].setExclusion.find( node.GetName() ) != vLights[i].setExclusion.end() ) if( vLights[i].setExclusion.find(tStrToUtf8(node.GetName()) ) != vLights[i].setExclusion.end() )
{ {
bInteract = false; bInteract = false;
} }
@ -2005,7 +2005,7 @@ void CExportNel::deleteLM(INode& ZeNode)
string sSaveName; string sSaveName;
sSaveName = _Options.sExportLighting; sSaveName = _Options.sExportLighting;
if( sSaveName[sSaveName.size()-1] != '\\' ) sSaveName += "\\"; if( sSaveName[sSaveName.size()-1] != '\\' ) sSaveName += "\\";
sSaveName += ZeNode.GetName(); sSaveName += tStrToUtf8(ZeNode.GetName());
char tmp[32]; char tmp[32];
sprintf( tmp, "%d", i ); sprintf( tmp, "%d", i );
sSaveName += tmp; sSaveName += tmp;
@ -2276,7 +2276,7 @@ bool CExportNel::calculateLM( CMesh::CMeshBuild *pZeMeshBuild, CMeshBase::CMeshB
{ {
string thetext; string thetext;
thetext = "Warning "; thetext = "Warning ";
thetext += ZeNode.GetName(); thetext += tStrToUtf8(ZeNode.GetName());
thetext = "have all faces NOT mapped (UV2)"; thetext = "have all faces NOT mapped (UV2)";
if (gOptions.FeedBack != NULL) if (gOptions.FeedBack != NULL)
{ {
@ -2325,11 +2325,11 @@ bool CExportNel::calculateLM( CMesh::CMeshBuild *pZeMeshBuild, CMeshBase::CMeshB
{ {
// Make an error message // Make an error message
string sTmp = "Warning : "; string sTmp = "Warning : ";
sTmp += ZeNode.GetName(); sTmp += tStrToUtf8(ZeNode.GetName());
sTmp += " has mapping problem"; sTmp += " has mapping problem";
// Script trace // Script trace
mprintf ((sTmp+"\n").c_str()); mprintf (utf8ToTStr((sTmp+"\n")));
// Feedback is here ? // Feedback is here ?
if (gOptions.FeedBack != NULL) if (gOptions.FeedBack != NULL)
@ -2525,12 +2525,12 @@ bool CExportNel::calculateLM( CMesh::CMeshBuild *pZeMeshBuild, CMeshBase::CMeshB
// Get the name of the max project // Get the name of the max project
char projectName[512]; char projectName[512];
_splitpath (_Ip->GetCurFileName(), NULL, NULL, projectName, NULL); _wsplitpath (_Ip->GetCurFileName(), NULL, NULL, utf8ToTStr(projectName), NULL);
// Add lightmap information in the lightmap log // Add lightmap information in the lightmap log
COFile outputLog; COFile outputLog;
if (outputLightmapLog) if (outputLightmapLog)
createLightmapLog (outputLog, gOptions.sExportLighting.c_str(), projectName, ZeNode.GetName()); createLightmapLog (outputLog, gOptions.sExportLighting.c_str(), projectName, tStrToUtf8(ZeNode.GetName()).c_str());
// Update UV coords to Texture space // Update UV coords to Texture space
PutFaceUV1InTextureCoord( LightMap.w, LightMap.h, AllFaces.begin(), AllFaces.size() ); PutFaceUV1InTextureCoord( LightMap.w, LightMap.h, AllFaces.begin(), AllFaces.size() );
@ -2559,7 +2559,7 @@ bool CExportNel::calculateLM( CMesh::CMeshBuild *pZeMeshBuild, CMeshBase::CMeshB
{ {
CTextureFile *pLightMap = new CTextureFile(); CTextureFile *pLightMap = new CTextureFile();
//string sSaveName = AllMeshBuilds[nNode].second->GetName(); //string sSaveName = AllMeshBuilds[nNode].second->GetName();
string sSaveName = ZeNode.GetName(); string sSaveName = tStrToUtf8(ZeNode.GetName());
char tmp[32]; char tmp[32];
sSaveName += "_"; sSaveName += "_";
sprintf( tmp, "%d", nLightMapNb ); sprintf( tmp, "%d", nLightMapNb );
@ -2632,9 +2632,8 @@ bool CExportNel::calculateLM( CMesh::CMeshBuild *pZeMeshBuild, CMeshBase::CMeshB
{ {
if (gOptions.FeedBack != NULL) if (gOptions.FeedBack != NULL)
{ {
char message[512]; std::string message = toString("Can't write the file %s : %s", sSaveName.c_str(), e.what());
sprintf (message, "Can't write the file %s : %s", sSaveName, e.what()); mprintf (utf8ToTStr(message));
mprintf (message);
} }
} }

View file

@ -113,7 +113,7 @@ void CRTWorld::build (vector<SLightBuild> &AllLights, CVector &trans, bool bExcl
pLAP->create( 64 ); // width of each grid in number of square pLAP->create( 64 ); // width of each grid in number of square
for( j = 0; j < vMB.size(); ++j ) for( j = 0; j < vMB.size(); ++j )
{ {
if (rLight.setExclusion.find (vINode[j]->GetName()) != rLight.setExclusion.end()) if (rLight.setExclusion.find (tStrToUtf8(vINode[j]->GetName())) != rLight.setExclusion.end())
continue; continue;
for (k = 0; k < vMB[j]->Faces.size(); ++k) for (k = 0; k < vMB[j]->Faces.size(); ++k)
@ -142,7 +142,7 @@ void CRTWorld::build (vector<SLightBuild> &AllLights, CVector &trans, bool bExcl
pLAD->create (64, rLight.rDirRadius/64.0f, rLight.Direction); pLAD->create (64, rLight.rDirRadius/64.0f, rLight.Direction);
for( j = 0; j < vMB.size(); ++j ) for( j = 0; j < vMB.size(); ++j )
{ {
if (rLight.setExclusion.find (vINode[j]->GetName()) != rLight.setExclusion.end()) if (rLight.setExclusion.find (tStrToUtf8(vINode[j]->GetName())) != rLight.setExclusion.end())
continue; continue;
for (k = 0; k < vMB[j]->Faces.size(); ++k) for (k = 0; k < vMB[j]->Faces.size(); ++k)

View file

@ -605,7 +605,7 @@ void CExportNel::addMorphTracks (NL3D::CAnimation& animation, INode& node, const
if (pNode == NULL) if (pNode == NULL)
continue; continue;
std::string name = parentName; std::string name = parentName;
name += pNode->GetName(); name += tStrToUtf8(pNode->GetName());
name += "MorphFactor"; name += "MorphFactor";
IParamBlock *pb = (IParamBlock*)(pMorphMod->SubAnim (i+1)); IParamBlock *pb = (IParamBlock*)(pMorphMod->SubAnim (i+1));

View file

@ -73,7 +73,7 @@ CCollisionMeshBuild* CExportNel::createCollisionMeshBuild(std::vector<INode *> &
{ {
// get the mesh name // get the mesh name
uint meshId = rootMeshNames.size(); uint meshId = rootMeshNames.size();
rootMeshNames.push_back(nodes[node]->GetName()); rootMeshNames.push_back(tStrToUtf8(nodes[node]->GetName()));
bool collision = getScriptAppData (nodes[node], NEL3D_APPDATA_COLLISION, 0) != 0; bool collision = getScriptAppData (nodes[node], NEL3D_APPDATA_COLLISION, 0) != 0;
bool exterior = getScriptAppData (nodes[node], NEL3D_APPDATA_COLLISION_EXTERIOR, 0) != 0; bool exterior = getScriptAppData (nodes[node], NEL3D_APPDATA_COLLISION_EXTERIOR, 0) != 0;

View file

@ -1142,22 +1142,6 @@ int CExportNel::getVertMapChannel (Texmap& texmap, Matrix3& channelMatrix, TimeV
// get the absolute or relative path from a texture filename // get the absolute or relative path from a texture filename
static std::string ConvertTexFileName(const std::string &path, bool _AbsolutePath) static std::string ConvertTexFileName(const std::string &path, bool _AbsolutePath)
{ {
/*// File name, maxlen 256 under windows
char sFileName[512];
strcpy (sFileName, src);
// Let absolute path ?
if (!_AbsolutePath)
{
// Decompose bitmap file name
char sName[256];
char sExt[256];
_splitpath (sFileName, NULL, NULL, sName, sExt);
// Make the final path
_makepath (sFileName, NULL, NULL, sName, sExt);
}
return std::string(sFileName);*/
if (_AbsolutePath) if (_AbsolutePath)
{ {
return path; return path;
@ -1271,7 +1255,7 @@ ITexture* CExportNel::buildATexture (Texmap& texmap, CMaterialDesc &remap3dsTexC
else // standard texture else // standard texture
{ {
srcTex = new CTextureFile; srcTex = new CTextureFile;
std::string mapName = pBitmap->GetMapName(); std::string mapName = tStrToUtf8(pBitmap->GetMapName());
static_cast<CTextureFile *>(srcTex)->setFileName (ConvertTexFileName(mapName, _AbsolutePath)); static_cast<CTextureFile *>(srcTex)->setFileName (ConvertTexFileName(mapName, _AbsolutePath));
} }

View file

@ -266,7 +266,7 @@ NL3D::IShape *CExportNel::buildShape (INode& node, TimeValue time, const TInodeP
std::string nodeName=getScriptAppData (&node, NEL3D_APPDATA_LOD_NAME+lod, ""); std::string nodeName=getScriptAppData (&node, NEL3D_APPDATA_LOD_NAME+lod, "");
// Get the node // Get the node
INode *lodNode=_Ip->GetINodeByName(nodeName.c_str()); INode *lodNode=_Ip->GetINodeByName(utf8ToTStr(nodeName));
if (lodNode) if (lodNode)
{ {
// Index of the lod in the build structure // Index of the lod in the build structure
@ -611,7 +611,7 @@ void CExportNel::buildBaseMeshInterface (NL3D::CMeshBase::CMeshBaseBuild& buildM
continue; continue;
// get factor here ! // get factor here !
buildMesh.DefaultBSFactors.push_back(0.0f); buildMesh.DefaultBSFactors.push_back(0.0f);
std::string sTemp = pNode->GetName(); std::string sTemp = tStrToUtf8(pNode->GetName());
buildMesh.BSNames.push_back (sTemp); buildMesh.BSNames.push_back (sTemp);
} }
@ -1063,9 +1063,8 @@ void CExportNel::buildMeshInterface (TriObject &tri, CMesh::CMeshBuild& buildMes
// Error code ? // Error code ?
if (error!=NoError) if (error!=NoError)
{ {
char msg[512]; std::string msg = toString("%s skin: %s", getName (node).c_str(), ErrorMessage[error]);
sprintf (msg, "%s skin: %s", getName (node).c_str(), ErrorMessage[error]); MessageBoxW (NULL, utf8ToTStr(msg), L"NeL export", MB_OK|MB_ICONEXCLAMATION);
MessageBox (NULL, msg, "NeL export", MB_OK|MB_ICONEXCLAMATION);
} }
else else
{ {
@ -1493,7 +1492,7 @@ void CExportNel::buildMeshMorph (CMesh::CMeshBuild& buildMesh, INode &node, Time
continue; continue;
} }
bs.Name = pNode->GetName(); bs.Name = tStrToUtf8(pNode->GetName());
bool bIsDeltaPos = false; bool bIsDeltaPos = false;
bs.deltaPos.resize (nNbVertVB, CVector::Null); bs.deltaPos.resize (nNbVertVB, CVector::Null);

View file

@ -316,7 +316,7 @@ static void AddNodeToQuadGrid(const NLMISC::CAABBox &delimiter, TNodeFaceQG &des
{ {
if (delimiter.intersect(nodeBBox)) if (delimiter.intersect(nodeBBox))
{ {
nldebug((std::string("Adding ") + node.GetName() + std::string(" to mesh interface quad grid")).c_str()); nldebug("Adding %s to mesh interface quad grid", tStrToUtf8(node.GetName()).c_str());
// add this node tris // add this node tris
ObjectState os = node.EvalWorldState(time); ObjectState os = node.EvalWorldState(time);
Object *obj = os.obj; Object *obj = os.obj;
@ -581,7 +581,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vector<CMeshInter
string newName = "NelAutoMergeRenamedTmp" + toString (i); string newName = "NelAutoMergeRenamedTmp" + toString (i);
string originalName = (*lib)[i]->GetName (); string originalName = (*lib)[i]->GetName ();
renameMap.insert (map<string, string>::value_type (newName, originalName)); renameMap.insert (map<string, string>::value_type (newName, originalName));
(*lib)[i]->SetName (newName.c_str ()); (*lib)[i]->SetName (utf8ToTStr(newName));
} }
// Merge the interface project // Merge the interface project
@ -614,7 +614,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vector<CMeshInter
string newName = "NelAutoMergeRenamed" + toString (i); string newName = "NelAutoMergeRenamed" + toString (i);
string originalName = (*lib)[i]->GetName (); string originalName = (*lib)[i]->GetName ();
renameMap.insert (map<string, string>::value_type (newName, originalName)); renameMap.insert (map<string, string>::value_type (newName, originalName));
(*lib)[i]->SetName (newName.c_str ()); (*lib)[i]->SetName (utf8ToTStr(newName));
} }
} }
@ -627,7 +627,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vector<CMeshInter
if (ite != renameMap.end ()) if (ite != renameMap.end ())
{ {
// Rename the material with its original name // Rename the material with its original name
(*lib)[i]->SetName (ite->second.c_str ()); (*lib)[i]->SetName (utf8ToTStr(ite->second));
} }
} }

View file

@ -265,7 +265,7 @@ Control* CExportNel::getControlerByName (Animatable& node, const char* sName)
ParamDef& paramDef=param->GetParamDef(id); ParamDef& paramDef=param->GetParamDef(id);
// Good name? // Good name?
if (strcmp (paramDef.int_name, sName)==0) if (strcmp (tStrToUtf8(paramDef.int_name).c_str(), sName)==0)
{ {
// ok, return this subanim // ok, return this subanim
#if MAX_VERSION_MAJOR >= 14 #if MAX_VERSION_MAJOR >= 14
@ -332,7 +332,7 @@ bool getValueByNameUsingParamBlock2Internal (Animatable& node, const char* sName
ParamDef& paramDef=param->GetParamDef(id); ParamDef& paramDef=param->GetParamDef(id);
// Good name? // Good name?
if (strcmp (paramDef.int_name, sName)==0) if (strcmp (tStrToUtf8(paramDef.int_name).c_str(), sName)==0)
{ {
// Check this value is good type // Check this value is good type
ParamType2 paramType = param->GetParameterType(id); ParamType2 paramType = param->GetParameterType(id);
@ -372,7 +372,7 @@ bool getValueByNameUsingParamBlock2Internal (Animatable& node, const char* sName
break; break;
case TYPE_FILENAME: case TYPE_FILENAME:
case TYPE_STRING: case TYPE_STRING:
*(std::string*)pValue = param->GetStr (id, tvTime); *(std::string*)pValue = tStrToUtf8(param->GetStr (id, tvTime));
bRes = TRUE; bRes = TRUE;
break; break;
case TYPE_FILENAME_TAB: case TYPE_FILENAME_TAB:
@ -382,7 +382,7 @@ bool getValueByNameUsingParamBlock2Internal (Animatable& node, const char* sName
uint total = param->Count (id); uint total = param->Count (id);
rTab.resize(total); rTab.resize(total);
for( uint i = 0; i < total; ++i ) for( uint i = 0; i < total; ++i )
rTab[i] = param->GetStr (id, tvTime, i); rTab[i] = tStrToUtf8(param->GetStr (id, tvTime, i));
bRes = TRUE; bRes = TRUE;
} }
break; break;
@ -511,8 +511,8 @@ std::string CExportNel::getName (MtlBase& mtl)
std::string CExportNel::getName(INode& node) std::string CExportNel::getName(INode& node)
{ {
// Return its name // Return its name
MCHAR* name = node.GetName(); const MCHAR* name = node.GetName();
return std::string(name); return tStrToUtf8(name);
} }
// -------------------------------------------------- // --------------------------------------------------
@ -549,7 +549,7 @@ std::string CExportNel::getNelObjectName (INode& node)
} }
else else
{ {
return node.GetName(); return tStrToUtf8(node.GetName());
} }
} }
else else
@ -561,29 +561,26 @@ std::string CExportNel::getNelObjectName (INode& node)
ad = obj->GetAppDataChunk (MAXSCRIPT_UTILITY_CLASS_ID, UTILITY_CLASS_ID, NEL3D_APPDATA_INSTANCE_SHAPE); ad = obj->GetAppDataChunk (MAXSCRIPT_UTILITY_CLASS_ID, UTILITY_CLASS_ID, NEL3D_APPDATA_INSTANCE_SHAPE);
if (ad&&ad->data) if (ad&&ad->data)
{ {
if (::strlen((const char *) ad->data) != 0) if (_tcslen((const TCHAR *) ad->data) != 0)
{ {
// get file name only // get file name only
char fName[_MAX_FNAME]; return NLMISC::CFile::getFilename(tStrToUtf8((const TCHAR*)ad->data));
char ext[_MAX_FNAME];
::_splitpath((const char*)ad->data, NULL, NULL, fName, ext) ;
return std::string(fName + std::string(ext));
} }
else else
{ {
return node.GetName(); return tStrToUtf8(node.GetName());
} }
} }
else else
{ {
// Extract the node name // Extract the node name
return node.GetName(); return tStrToUtf8(node.GetName());
} }
} }
else else
{ {
// Extract the node name // Extract the node name
return node.GetName(); return tStrToUtf8(node.GetName());
} }
} }
} }
@ -763,17 +760,17 @@ bool CExportNel::hasLightMap (INode& node, TimeValue time)
// -------------------------------------------------- // --------------------------------------------------
void CExportNel::outputErrorMessage (const char *message) void CExportNel::outputErrorMessage(const std::string &message)
{ {
if (_ErrorInDialog) if (_ErrorInDialog)
{ {
MessageBox (_Ip->GetMAXHWnd(), message, _ErrorTitle.c_str(), MB_OK|MB_ICONEXCLAMATION); MessageBoxW (_Ip->GetMAXHWnd(), utf8ToTStr(message), utf8ToTStr(_ErrorTitle), MB_OK|MB_ICONEXCLAMATION);
} }
mprintf (message); mprintf (utf8ToTStr(message));
mprintf ("\n"); mprintf (_T("\n"));
nlwarning ("Error in max file %s : ", _Ip->GetCurFilePath()); nlwarning ("Error in max file %s : ", _Ip->GetCurFilePath());
nlwarning (message); nlwarning (message.c_str());
} }
// -------------------------------------------------- // --------------------------------------------------

View file

@ -667,8 +667,8 @@ public:
static void setScriptAppData (Animatable *node, uint32 id, NLMISC::CRGBA val); static void setScriptAppData (Animatable *node, uint32 id, NLMISC::CRGBA val);
// Output error message // Output error message
void outputErrorMessage (const char *message); void outputErrorMessage (const std::string &message);
void outputWarningMessage (const char *message); void outputWarningMessage(const std::string &message);
// Get an appData VertexProgram WindTree (ensure same default values for all retrieve). // Get an appData VertexProgram WindTree (ensure same default values for all retrieve).

View file

@ -51,7 +51,7 @@ IShape* CExportNel::buildParticleSystem(INode& node, TimeValue time)
iF.serial(ss); iF.serial(ss);
if (!dynamic_cast<CParticleSystemShape *>(ss.getShapePointer())) if (!dynamic_cast<CParticleSystemShape *>(ss.getShapePointer()))
{ {
mprintf("Error : Object shape %s isn't a particle system", shapeName.c_str()); mprintf(_T("Error : Object shape %s isn't a particle system"), utf8ToTStr(shapeName));
return NULL; return NULL;
} }
@ -78,7 +78,7 @@ IShape* CExportNel::buildParticleSystem(INode& node, TimeValue time)
} }
else else
{ {
mprintf("Error : Can't find %s while exporting a particle system \n", shapeName.c_str()); mprintf(_T("Error : Can't find %s while exporting a particle system \n"), utf8ToTStr(shapeName));
return NULL; return NULL;
} }
} }

View file

@ -62,7 +62,7 @@ void CRadialVertices::init (INode *node, Mesh *mesh, TimeValue time, Interface &
_SmoothingGroupMask |= (1<<app); _SmoothingGroupMask |= (1<<app);
// Get the node by name // Get the node by name
INode *pivotNode = ip.GetINodeByName(pivotName.c_str()); INode *pivotNode = ip.GetINodeByName(utf8ToTStr(pivotName));
if (pivotNode) if (pivotNode)
{ {
// Get the world Pivot point // Get the world Pivot point

View file

@ -93,7 +93,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
resultInstanceNode[nNumIG] = pNode; resultInstanceNode[nNumIG] = pNode;
if (aIGArray[nNumIG].InstanceName == "") // no instance name was set, takes the node name instead if (aIGArray[nNumIG].InstanceName == "") // no instance name was set, takes the node name instead
{ {
aIGArray[nNumIG].InstanceName = pNode->GetName(); aIGArray[nNumIG].InstanceName = tStrToUtf8(pNode->GetName());
} }
// Visible? always true, but if special flag for camera collision // Visible? always true, but if special flag for camera collision
@ -236,10 +236,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
pMB->Vertices[pMB->Faces[j].Corner[2].Vertex]) ) pMB->Vertices[pMB->Faces[j].Corner[2].Vertex]) )
{ {
// ERROR : The volume is not convex !!! // ERROR : The volume is not convex !!!
char tam[256]; nlwarning("ERROR: The cluster %s is not convex.", tStrToUtf8(vectNode[i]->GetName()).c_str());
sprintf(tam,"ERROR: The cluster %s is not convex.",vectNode[i]->GetName());
//MessageBox(NULL,tam,"Error",MB_OK|MB_ICONERROR);
nlwarning(tam);
} }
} }
@ -247,7 +244,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
clusterTemp.VisibleFromFather = bVisibleFromFather; clusterTemp.VisibleFromFather = bVisibleFromFather;
clusterTemp.FatherAudible = bFatherAudible; clusterTemp.FatherAudible = bFatherAudible;
clusterTemp.AudibleFromFather = bAudibleFromFather; clusterTemp.AudibleFromFather = bAudibleFromFather;
clusterTemp.Name = pNode->GetName(); clusterTemp.Name = tStrToUtf8(pNode->GetName());
vClusters.push_back (clusterTemp); vClusters.push_back (clusterTemp);
delete pMB; pMB = NULL; delete pMB; pMB = NULL;
@ -336,10 +333,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
if (!portalTemp.setPoly (polyv)) if (!portalTemp.setPoly (polyv))
{ {
// ERROR : Poly not convex, or set of vertices not plane // ERROR : Poly not convex, or set of vertices not plane
char tam[256]; nlwarning("ERROR: The portal %s is not convex.", tStrToUtf8(vectNode[i]->GetName()).c_str());
sprintf(tam,"ERROR: The portal %s is not convex.",vectNode[i]->GetName());
//MessageBox(NULL,tam,"Error",MB_OK|MB_ICONERROR);
nlwarning(tam);
} }
if (nAccelType&16) // is dynamic portal ? if (nAccelType&16) // is dynamic portal ?
@ -348,7 +342,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
if (!InstanceName.empty()) if (!InstanceName.empty())
portalTemp.setName (InstanceName); portalTemp.setName (InstanceName);
else else
portalTemp.setName (string(pNode->GetName())); portalTemp.setName (tStrToUtf8(pNode->GetName()));
} }
// Check if portal has 2 cluster // Check if portal has 2 cluster
@ -368,10 +362,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
if (nNbCluster != 2) if (nNbCluster != 2)
{ {
// ERROR // ERROR
char tam[256]; nlwarning("ERROR: The portal %s has not 2 clusters but %d", tStrToUtf8(vectNode[i]->GetName()).c_str(), nNbCluster);
sprintf(tam,"ERROR: The portal %s has not 2 clusters but %d",vectNode[i]->GetName(), nNbCluster);
//MessageBox(NULL,tam,"Error",MB_OK|MB_ICONERROR);
nlwarning(tam);
} }
@ -513,10 +504,7 @@ CInstanceGroup* CExportNel::buildInstanceGroup(const vector<INode*>& vectNode, v
if (vClusters.size() > 0) if (vClusters.size() > 0)
if (aIGArray[nNumIG].Clusters.size() == 0) if (aIGArray[nNumIG].Clusters.size() == 0)
{ {
char tam[256]; nlwarning("ERROR: Object %s is not attached to any cluster\nbut his flag clusterize is set", tStrToUtf8(pNode->GetName()).c_str());
sprintf(tam,"ERROR: Object %s is not attached to any cluster\nbut his flag clusterize is set", pNode->GetName());
//MessageBox(NULL, tam, "Warning", MB_OK);
nlwarning(tam);
} }
// debug purpose : to remove // debug purpose : to remove
@ -712,7 +700,7 @@ void CExportNel::buildScene (NL3D::CScene &scene, NL3D::CShapeBank &shapeBank, I
if ( (!pNode->IsHidden () || buildHidden) && (pNode->Selected () || !onlySelected) ) if ( (!pNode->IsHidden () || buildHidden) && (pNode->Selected () || !onlySelected) )
{ {
string sTmp = "Object Name: "; string sTmp = "Object Name: ";
sTmp += pNode->GetName(); sTmp += tStrToUtf8(pNode->GetName());
if (progress) if (progress)
progress->setLine (0, sTmp); progress->setLine (0, sTmp);
sTmp.clear(); sTmp.clear();

View file

@ -36,7 +36,7 @@ bool CExportNel::scriptEvaluate (const char *script, void *out, TNelScriptValueT
four_typed_value_locals(Parser* parser,Value* code,Value* result,StringStream* source); four_typed_value_locals(Parser* parser,Value* code,Value* result,StringStream* source);
vl.parser = new Parser; vl.parser = new Parser;
vl.source = new StringStream (const_cast<char *>(script)); vl.source = new StringStream (utf8ToTStr(script));
vl.source->log_to(NULL); vl.source->log_to(NULL);
save_current_frames(); save_current_frames();
try try
@ -125,7 +125,7 @@ float CExportNel::getScriptAppData (Animatable *node, uint32 id, float def)
// String to int // String to int
float value = 0.f; float value = 0.f;
if (toFloatMax((const char*)ap->data, value)) if (toFloatMax((const TCHAR*)ap->data, value))
return value; return value;
else else
return def; return def;

View file

@ -114,7 +114,7 @@ INode *CExportNel::getNELScaleReferenceNode(INode &node)
{ {
std::string boneScaleName= getName(node) + boneScaleNameExt; std::string boneScaleName= getName(node) + boneScaleNameExt;
// Get the reference node // Get the reference node
referenceNode= _Ip->GetINodeByName(boneScaleName.c_str()); referenceNode= _Ip->GetINodeByName(utf8ToTStr(boneScaleName));
} }
} }
@ -455,7 +455,7 @@ uint CExportNel::buildSkinning (CMesh::CMeshBuild& buildMesh, const TInodePtrInt
nlassert ((uint)ite->second<buildMesh.BonesNames.size()); nlassert ((uint)ite->second<buildMesh.BonesNames.size());
// Names // Names
buildMesh.BonesNames[ite->second] = ite->first->GetName(); buildMesh.BonesNames[ite->second] = tStrToUtf8(ite->first->GetName());
// Next // Next
ite++; ite++;
@ -1306,7 +1306,7 @@ static sint getBoneSide(INode *bone, std::string &mirrorName)
{ {
sint side= 0; sint side= 0;
sint pos; sint pos;
mirrorName= bone->GetName(); mirrorName = tStrToUtf8(bone->GetName());
if((pos= mirrorName.find(" R "))!=std::string::npos) if((pos= mirrorName.find(" R "))!=std::string::npos)
{ {
@ -1335,7 +1335,7 @@ static INode *getMirrorBone(const std::vector<INode*> &skeletonNodes, INode *bon
// find // find
for(uint i=0;i<skeletonNodes.size();i++) for(uint i=0;i<skeletonNodes.size();i++)
{ {
if(mirrorName == skeletonNodes[i]->GetName()) if(mirrorName == tStrToUtf8(skeletonNodes[i]->GetName()))
return skeletonNodes[i]; return skeletonNodes[i];
} }
} }

View file

@ -450,7 +450,7 @@ public:
} }
catch (const NLMISC::EStream& excp) catch (const NLMISC::EStream& excp)
{ {
MessageBox (NULL, excp.what(), "Load error", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(excp.what()), _T("Load error"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
return _bank; return _bank;

View file

@ -193,7 +193,7 @@ bool RPatchMesh::exportZone(INode* pNode, PatchMesh* pPM, NL3D::CZone& zone, CZo
} }
catch (const EStream& e) catch (const EStream& e)
{ {
MessageBox (NULL, stream.what(), _T("Error"), MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(e.what()), _T("Error"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
} }
@ -253,25 +253,22 @@ bool RPatchMesh::exportZone(INode* pNode, PatchMesh* pPM, NL3D::CZone& zone, CZo
if (!patchError.empty()) if (!patchError.empty())
{ {
// Make an error message // Make an error message
char error[2098]; std::string error = "Error: triple edge detected in ";
smprintf (error, 2098, "Error: triple edge detected in ");
// For each error // For each error
set<uint>::iterator ite=patchError.begin(); set<uint>::iterator ite=patchError.begin();
while (ite!=patchError.end()) while (ite!=patchError.end())
{ {
// Sub error message // Sub error message
char subError[512]; error += toString("patch %d ", (*ite)+1);
smprintf (subError, 512, "patch %d ", (*ite)+1);
strcat (error, subError);
// Next error // Next error
ite++; ite++;
} }
// Show the message // Show the message
mprintf (error); mprintf (utf8ToTStr(error));
nlwarning (error); nlwarning (error.c_str());
// Error // Error
return false; return false;
@ -612,7 +609,7 @@ bool RPatchMesh::exportZone(INode* pNode, PatchMesh* pPM, NL3D::CZone& zone, CZo
uint i; uint i;
for (i=0; i<error.Errors.size (); i++) for (i=0; i<error.Errors.size (); i++)
{ {
mprintf (error.Errors[i].c_str ()); mprintf (utf8ToTStr(error.Errors[i]));
} }
return false; return false;
} }

View file

@ -3992,7 +3992,7 @@ void EPM_PaintCMode::DoPaint ()
} }
catch (const EStream& stream) catch (const EStream& stream)
{ {
MessageBox (NULL, stream.what(), "Error", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(stream.what()), _T("Error"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
} }
@ -4058,20 +4058,18 @@ bool loadLigoConfigFile (CLigoConfig& config, Interface& it)
if (hModule) if (hModule)
{ {
// Get the path // Get the path
char sModulePath[256]; TCHAR sModulePath[256];
int res=GetModuleFileName(hModule, sModulePath, 256); int res=GetModuleFileName(hModule, sModulePath, 256);
// Success ? // Success ?
if (res) if (res)
{ {
// Path // Path
char sDrive[256]; std::string modulePath = NLMISC::CFile::getPath(tStrToUtf8(sModulePath));
char sDir[256];
_splitpath (sModulePath, sDrive, sDir, NULL, NULL);
_makepath (sModulePath, sDrive, sDir, "ligoscape", ".cfg");
try try
{ {
// Load the config file // Load the config file
config.readConfigFile (sModulePath, false); config.readConfigFile (modulePath, false);
// ok // ok
return true; return true;
} }

View file

@ -242,7 +242,7 @@ void CTileSetCont::build (CTileBank& bank, uint tileSet)
if (!dmwarn) if (!dmwarn)
{ {
dmwarn = true; dmwarn = true;
MessageBox(NULL, "Tile bank not loaded, or bad tile bank. Missing a displacement tile. Use the tile bank utility to load the correct tilebank.", "NeL Patch Paint", MB_OK | MB_ICONWARNING); MessageBox(NULL, _T("Tile bank not loaded, or bad tile bank. Missing a displacement tile. Use the tile bank utility to load the correct tilebank."), _T("NeL Patch Paint"), MB_OK | MB_ICONWARNING);
} }
continue; // with next displace continue; // with next displace
} }
@ -409,24 +409,17 @@ void LoadKeyCfg ()
HMODULE hModule = hInstance; HMODULE hModule = hInstance;
if (hModule) if (hModule)
{ {
char sModulePath[256]; TCHAR sModulePath[256];
int res=GetModuleFileName(hModule, sModulePath, 256); int res=GetModuleFileName(hModule, sModulePath, 256);
if (res) if (res)
{ {
// split path
char drive[256];
char dir[256];
_splitpath (sModulePath, drive, dir, NULL, NULL);
// Make a new path // Make a new path
char cgfPath[256]; std::string cfgPath = NLMISC::CFile::getPath(tStrToUtf8(sModulePath)) + "keys.cfg";
_makepath (cgfPath, drive, dir, "keys", ".cfg");
CConfigFile cf; CConfigFile cf;
// Load and parse "test.txt" file // Load and parse "test.txt" file
cf.load (cgfPath); cf.load (cfgPath);
// For each keys // For each keys
for (uint key=0; key<KeyCounter; key++) for (uint key=0; key<KeyCounter; key++)
@ -458,23 +451,18 @@ void LoadVarCfg ()
HMODULE hModule = hInstance; HMODULE hModule = hInstance;
if (hModule) if (hModule)
{ {
char sModulePath[256]; TCHAR sModulePath[256];
int res=GetModuleFileName(hModule, sModulePath, 256); int res=GetModuleFileName(hModule, sModulePath, 256);
if (res) if (res)
{ {
// split path
char drive[256];
char dir[256];
_splitpath (sModulePath, drive, dir, NULL, NULL);
// Make a new path // Make a new path
char cgfPath[256]; char cgfPath[256];
_makepath (cgfPath, drive, dir, "keys", ".cfg"); std::string cfgPath = NLMISC::CFile::getPath(tStrToUtf8(sModulePath)) + "keys.cfg";
CConfigFile cf; CConfigFile cf;
// Load and parse "test.txt" file // Load and parse "test.txt" file
cf.load (cgfPath); cf.load (cfgPath);
// go // go
try try

View file

@ -72,7 +72,7 @@ class Tile_utilityClassDesc:public ClassDesc2
{ {
return &theTile_utility; return &theTile_utility;
} }
const TCHAR * ClassName() {return "NeL Tile Bank";} const TCHAR * ClassName() {return _T("NeL Tile Bank");}
SClass_ID SuperClassID() {return UTILITY_CLASS_ID;} SClass_ID SuperClassID() {return UTILITY_CLASS_ID;}
Class_ID ClassID() {return TILE_UTILITY_CLASS_ID;} Class_ID ClassID() {return TILE_UTILITY_CLASS_ID;}
const TCHAR* Category() {return _T("NeL Tools");} const TCHAR* Category() {return _T("NeL Tools");}
@ -96,7 +96,7 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
if (hModule) if (hModule)
{ {
// Get module file name // Get module file name
char moduldeFileName[512]; TCHAR moduldeFileName[512];
if (GetModuleFileName (hModule, moduldeFileName, 512)) if (GetModuleFileName (hModule, moduldeFileName, 512))
{ {
// Get version info size // Get version info size
@ -112,41 +112,41 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
{ {
uint *versionTab; uint *versionTab;
uint versionSize; uint versionSize;
if (VerQueryValue (buffer, "\\", (void**)&versionTab, &versionSize)) if (VerQueryValue (buffer, _T("\\"), (void**)&versionTab, &versionSize))
{ {
// Get the pointer on the structure // Get the pointer on the structure
VS_FIXEDFILEINFO *info=(VS_FIXEDFILEINFO*)versionTab; VS_FIXEDFILEINFO *info=(VS_FIXEDFILEINFO*)versionTab;
if (info) if (info)
{ {
// Setup version number // Setup version number
char version[512]; TCHAR version[512];
sprintf (version, "Version %d.%d.%d.%d", _tcprintf (version, "Version %d.%d.%d.%d",
info->dwFileVersionMS>>16, info->dwFileVersionMS>>16,
info->dwFileVersionMS&0xffff, info->dwFileVersionMS&0xffff,
info->dwFileVersionLS>>16, info->dwFileVersionLS>>16,
info->dwFileVersionLS&0xffff); info->dwFileVersionLS&0xffff);
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), version); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), version);
} }
else else
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), "VS_FIXEDFILEINFO * is NULL"); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), _T("VS_FIXEDFILEINFO * is NULL"));
} }
else else
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), "VerQueryValue failed"); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), _T("VerQueryValue failed"));
} }
else else
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), "GetFileVersionInfo failed"); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), _T("GetFileVersionInfo failed"));
// Free the buffer // Free the buffer
delete [] buffer; delete [] buffer;
} }
else else
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), "GetFileVersionInfoSize failed"); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), _T("GetFileVersionInfoSize failed"));
} }
else else
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), "GetModuleFileName failed"); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), _T("GetModuleFileName failed"));
} }
else else
SetWindowText (GetDlgItem (hWnd, IDC_VERSION), "hInstance NULL"); SetWindowText (GetDlgItem (hWnd, IDC_VERSION), _T("hInstance NULL"));
theTile_utility.Init(hWnd); theTile_utility.Init(hWnd);
@ -168,7 +168,7 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
{ {
case IDC_BANK_PATH: case IDC_BANK_PATH:
{ {
static char sPath[256]; static TCHAR sPath[256];
static bool bFirst=false; static bool bFirst=false;
if (!bFirst) if (!bFirst)
{ {
@ -178,7 +178,7 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
OPENFILENAME ofn; OPENFILENAME ofn;
ofn.lStructSize=sizeof (ofn); ofn.lStructSize=sizeof (ofn);
ofn.hwndOwner=NULL; ofn.hwndOwner=NULL;
ofn.lpstrFilter="Rykol bank files (*.bank)\0*.bank\0All Files (*.*)\0*.*\0"; ofn.lpstrFilter = _T("Rykol bank files (*.bank)\0*.bank\0All Files (*.*)\0*.*\0");
ofn.lpstrCustomFilter=NULL; ofn.lpstrCustomFilter=NULL;
ofn.nMaxCustFilter=0; ofn.nMaxCustFilter=0;
ofn.nFilterIndex=0; ofn.nFilterIndex=0;
@ -187,7 +187,7 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
ofn.lpstrFileTitle=NULL; ofn.lpstrFileTitle=NULL;
ofn.nMaxFileTitle=NULL; ofn.nMaxFileTitle=NULL;
ofn.lpstrInitialDir=NULL; ofn.lpstrInitialDir=NULL;
ofn.lpstrTitle="Choose a bank file"; ofn.lpstrTitle = _T("Choose a bank file");
ofn.Flags=OFN_ENABLESIZING|OFN_FILEMUSTEXIST; ofn.Flags=OFN_ENABLESIZING|OFN_FILEMUSTEXIST;
ofn.nFileOffset=0; ofn.nFileOffset=0;
ofn.nFileExtension=0; ofn.nFileExtension=0;
@ -197,7 +197,7 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
ofn.lpTemplateName=0; ofn.lpTemplateName=0;
if (GetOpenFileName(&ofn)) if (GetOpenFileName(&ofn))
{ {
theTile_utility.Load (sPath); theTile_utility.Load (tStrToUtf8(sPath));
theTile_utility.SetLand (theTile_utility.Land); theTile_utility.SetLand (theTile_utility.Land);
theTile_utility.SetupUI (); theTile_utility.SetupUI ();
} }
@ -223,7 +223,7 @@ static INT_PTR CALLBACK Tile_utilityDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
case IDC_SETUP: case IDC_SETUP:
{ {
if (!theTile_utility.SetupMaterial ()) if (!theTile_utility.SetupMaterial ())
MessageBox (NULL, "Select some nel patch object..", "Rykol tile", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, _T("Select some nel patch object.."), _T("Rykol tile"), MB_OK|MB_ICONEXCLAMATION);
} }
} }
} }
@ -291,9 +291,8 @@ void Tile_utility::Load (const std::string& path)
CIFile file; CIFile file;
if (!file.open (path)) if (!file.open (path))
{ {
char tmp[1024]; std::string tmp = toString("File not found: %s", path.c_str());
sprintf (tmp, "File not found: %s", path); MessageBox (NULL, utf8ToTStr(tmp), _T("Error.."), MB_OK|MB_ICONEXCLAMATION);
MessageBox (NULL, tmp, "Error..", MB_OK|MB_ICONEXCLAMATION);
} }
else else
{ {
@ -304,9 +303,8 @@ void Tile_utility::Load (const std::string& path)
} }
catch (const EStream &stream) catch (const EStream &stream)
{ {
char tmp[1024]; std::string tmp = toString("Error while loading %s:\n\n%s", path.c_str(), stream.what());
sprintf (tmp, "Error while loading %s:\n\n%s", path, stream.what()); MessageBox (NULL, utf8ToTStr(tmp), _T("Error.."), MB_OK|MB_ICONEXCLAMATION);
MessageBox (NULL, tmp, "Error..", MB_OK|MB_ICONEXCLAMATION);
} }
} }
@ -368,32 +366,29 @@ void Tile_utility::SetupUI ()
if (Bank.getLandCount()) if (Bank.getLandCount())
{ {
// Button text // Button text
char sName[256]; std::string name = toLower(NLMISC::CFile::getFilenameWithoutExtension(Path));
_splitpath (Path.c_str(), NULL, NULL, sName, NULL);
char *sName2=sName; if (!name.empty())
if (*sName2)
*sName2=toupper (*sName2);
sName2++;
while (*sName2)
{ {
*sName2=tolower (*sName2); std::string upName = toUpper(name);
sName2++; name[0] = upName[0];
} }
SetWindowText (hwnd, sName);
SetWindowText (hwnd, utf8ToTStr(name));
// Static text // Static text
char sTmp[256]; TCHAR sTmp[256];
sprintf (sTmp, "%d diffuse tiles.", Bank.getNumBitmap (CTile::diffuse)); _tcprintf (sTmp, "%d diffuse tiles.", Bank.getNumBitmap (CTile::diffuse));
SetWindowText (hwndStatic1, sTmp); SetWindowText (hwndStatic1, sTmp);
sprintf (sTmp, "%d additive tiles.", Bank.getNumBitmap (CTile::additive)); _tcprintf (sTmp, "%d additive tiles.", Bank.getNumBitmap (CTile::additive));
SetWindowText (hwndStatic2, sTmp); SetWindowText (hwndStatic2, sTmp);
} }
else else
{ {
SetWindowText (hwnd, "Click to choose a bank.."); SetWindowText (hwnd, _T("Click to choose a bank.."));
SetWindowText (hwndStatic1, ""); SetWindowText (hwndStatic1, _T(""));
SetWindowText (hwndStatic2, ""); SetWindowText (hwndStatic2, _T(""));
SetWindowText (hwndStatic3, ""); SetWindowText (hwndStatic3, _T(""));
} }
} }
} }
@ -412,7 +407,7 @@ bool Tile_utility::SetupMaterial () const
// Multi // Multi
MultiMtl* multi=NewDefaultMultiMtl(); MultiMtl* multi=NewDefaultMultiMtl();
multi->SetNumSubMtls (Bank.getTileCount()+1); multi->SetNumSubMtls (Bank.getTileCount()+1);
multi->SetName ("Rykol Bank"); multi->SetName (_T("Rykol Bank"));
// Default mtl // Default mtl
Mtl* firstMtl=multi->GetSubMtl (0); Mtl* firstMtl=multi->GetSubMtl (0);
@ -420,7 +415,7 @@ bool Tile_utility::SetupMaterial () const
// Mtl param // Mtl param
firstMtl->SetDiffuse (Color (0.5f,0.5f,0.5f), t); firstMtl->SetDiffuse (Color (0.5f,0.5f,0.5f), t);
firstMtl->SetAmbient (Color (0,0,0), t); firstMtl->SetAmbient (Color (0,0,0), t);
firstMtl->SetName ("Rykol Tile Default"); firstMtl->SetName (_T("Rykol Tile Default"));
firstMtl->SetShininess (0.0, t); firstMtl->SetShininess (0.0, t);
firstMtl->SetSpecular (Color (0,0,0), t); firstMtl->SetSpecular (Color (0,0,0), t);
@ -439,7 +434,7 @@ bool Tile_utility::SetupMaterial () const
// Mtl param // Mtl param
mtl->SetDiffuse (Color (1.f,1.f,1.f), t); mtl->SetDiffuse (Color (1.f,1.f,1.f), t);
mtl->SetAmbient (Color (0,0,0), t); mtl->SetAmbient (Color (0,0,0), t);
mtl->SetName ("Rykol Tile"); mtl->SetName (_T("Rykol Tile"));
mtl->SetShininess (0.0, t); mtl->SetShininess (0.0, t);
mtl->SetSpecular (Color (0,0,0), t); mtl->SetSpecular (Color (0,0,0), t);
@ -461,7 +456,7 @@ bool Tile_utility::SetupMaterial () const
tex->SetAlphaSource (ALPHA_NONE); tex->SetAlphaSource (ALPHA_NONE);
tex->SetAlphaAsMono (FALSE); tex->SetAlphaAsMono (FALSE);
tex->SetAlphaAsRGB (FALSE); tex->SetAlphaAsRGB (FALSE);
tex->SetMapName (const_cast<char*>((Bank.getAbsPath()+tile->getRelativeFileName(CTile::diffuse)).c_str())); tex->SetMapName (utf8ToTStr(Bank.getAbsPath() + tile->getRelativeFileName(CTile::diffuse)));
// Assign BitmapTex // Assign BitmapTex
rgb->SetSubTexmap (0, tex); rgb->SetSubTexmap (0, tex);
@ -481,7 +476,7 @@ bool Tile_utility::SetupMaterial () const
tex->SetAlphaSource (ALPHA_NONE); tex->SetAlphaSource (ALPHA_NONE);
tex->SetAlphaAsMono (FALSE); tex->SetAlphaAsMono (FALSE);
tex->SetAlphaAsRGB (FALSE); tex->SetAlphaAsRGB (FALSE);
tex->SetMapName (const_cast<char*>((Bank.getAbsPath()+tile->getRelativeFileName(CTile::additive)).c_str())); tex->SetMapName (utf8ToTStr(Bank.getAbsPath() + tile->getRelativeFileName(CTile::additive)));
// Assign BitmapTex // Assign BitmapTex
rgb->SetSubTexmap (1, tex); rgb->SetSubTexmap (1, tex);

View file

@ -889,11 +889,11 @@ void Browse::OnBatchLoad ()
if (sFile.DoModal()==IDOK) if (sFile.DoModal()==IDOK)
{ {
char sDrive[256]; std::string fullPath = tStrToUtf8(sFile.GetPathName());
char sPath[256];
char sName[256]; std::string path = NLMISC::CFile::getPath(fullPath);
char sExt[256]; std::string filename = NLMISC::CFile::getFilenameWithoutExtension(fullPath);
_splitpath (sFile.GetPathName(), sDrive, sPath, sName, sExt); std::string ext = NLMISC::CFile::getExtension(fullPath);
// look for some numbers.. // look for some numbers..
char *sNumber=sName+strlen(sName)-1; char *sNumber=sName+strlen(sName)-1;
@ -925,11 +925,9 @@ void Browse::OnBatchLoad ()
for (int rot=0; rot<4; rot++) for (int rot=0; rot<4; rot++)
{ {
// Try to load a tile with a file name like /tiletransition0.tga // Try to load a tile with a file name like /tiletransition0.tga
char sName2[256]; std::string sFinal = path + toString("%s%02d.%s", filename.c_str(), (int)transition, ext.c_str());
char sFinal[256];
sprintf (sName2, "%s%02d", sName, (int)transition); FILE *pFile = nlfopen (sFinal, "rb");
_makepath (sFinal, sDrive, sPath, sName2, sExt);
FILE *pFile=fopen (sFinal, "rb");
// Close the file and add the tile if opened // Close the file and add the tile if opened
if (pFile) if (pFile)
@ -961,11 +959,9 @@ void Browse::OnBatchLoad ()
if (tileBank2.getTile (trans->getTile())->getRelativeFileName (m_ctrl.Texture==1?CTile::diffuse:CTile::additive).empty()) if (tileBank2.getTile (trans->getTile())->getRelativeFileName (m_ctrl.Texture==1?CTile::diffuse:CTile::additive).empty())
{ {
// Try to load a tile with a file name like /tiletransition0.tga // Try to load a tile with a file name like /tiletransition0.tga
char sName2[256]; std::string sFinal = path + toString("%s%02d.%s", filename.c_str(), (int)transition, ext.c_str());
char sFinal[256];
sprintf (sName2, "%s%02d", sName, (int)transition); FILE *pFile = nlfopen (sFinal, "rb");
_makepath (sFinal, sDrive, sPath, sName2, sExt);
FILE *pFile=fopen (sFinal, "rb");
// Close the file and add the tile if opened // Close the file and add the tile if opened
if (pFile) if (pFile)

View file

@ -25,15 +25,15 @@
#include "SelectionTerritoire.h" #include "SelectionTerritoire.h"
#include "View.h" #include "View.h"
#define REGKEY_TILEDIT "Software\\Nevrax\\Nel\\Tile_Edit" #define REGKEY_TILEDIT _T("Software\\Nevrax\\Nel\\Tile_Edit")
#define REGKEY_BUTTONZOOM "Zoom button" #define REGKEY_BUTTONZOOM _T("Zoom button")
#define REGKEY_BUTTONVARIETY "Zoom variety" #define REGKEY_BUTTONVARIETY _T("Zoom variety")
#define REGKEY_BUTTONTEXTURE "Texture button" #define REGKEY_BUTTONTEXTURE _T("Texture button")
#define REGKEY_BUTTONSORT "Sort button" #define REGKEY_BUTTONSORT _T("Sort button")
#define REGKEY_BUTTONTEXTINFO "Info button" #define REGKEY_BUTTONTEXTINFO _T("Info button")
#define REGKEY_LISTCOMBOBOX "List type combo box" #define REGKEY_LISTCOMBOBOX _T("List type combo box")
#define REGKEY_WNDPL "Window placement" #define REGKEY_WNDPL _T("Window placement")
#define REGKEY_LASTPATH "Last path" #define REGKEY_LASTPATH _T("Last path")
#define SCROLL_MAX 50000 #define SCROLL_MAX 50000

View file

@ -386,12 +386,8 @@ void SelectionTerritoire::OnSelect()
list2->AddString(tileBank.getTileSet(i)->getName().c_str()); list2->AddString(tileBank.getTileSet(i)->getName().c_str());
} }
char drive[256],name[256],path[256],ext[256]; MainFileName = CString(utf8ToTStr(NLMISC::CFile::getFilename(temp)));
_splitpath(temp,drive,path,name,ext); DefautPath = CString(utf8ToTStr(NLMISC::CFile::getPath(temp)));
MainFileName = name;
MainFileName += ext;
DefautPath = drive;
DefautPath += path;
MainFileOk = 1; MainFileOk = 1;
CButton *button = (CButton*)GetDlgItem(IDC_ADD_TERRITOIRE); CButton *button = (CButton*)GetDlgItem(IDC_ADD_TERRITOIRE);
@ -468,12 +464,10 @@ void SelectionTerritoire::OnSaveAs()
button->EnableWindow(true); button->EnableWindow(true);
// Create a file name // Create a file name
char drive[256],name[256],path[256],ext[256]; std::string temp = tStrToUtf8(sFile.GetPathName());
_splitpath(sFile.GetPathName(), drive, path, name, ext);
MainFileName = name; MainFileName = CString(utf8ToTStr(NLMISC::CFile::getFilename(temp)));
MainFileName += ext; DefautPath = CString(utf8ToTStr(NLMISC::CFile::getPath(temp)));
DefautPath = drive;
DefautPath += path;
} }
} }

View file

@ -417,9 +417,8 @@ int TileList::setTileTransition (int tile, const std::string& name, NL3D::CTile:
else else
{ {
// Error: bitmap not in the absolute path.. // Error: bitmap not in the absolute path..
char msg[512]; std::string msg = NLMISC::toString("The bitmap %s is not in the absolute path %s.", name.c_str(), tileBank2.getAbsPath ().c_str());
sprintf (msg, "The bitmap %s is not in the absolute path %s.", name.c_str(), tileBank2.getAbsPath ().c_str()); MessageBox (NULL, utf8ToTStr(msg), _T("Load error"), MB_OK|MB_ICONEXCLAMATION);
MessageBox (NULL, msg, "Load error", MB_OK|MB_ICONEXCLAMATION);
} }
return 1; return 1;
@ -438,14 +437,14 @@ int TileList::setDisplacement (int tile, const std::string& name)
theListDisplacement[tile].loaded=0; theListDisplacement[tile].loaded=0;
if (!_LoadBitmap(tileBank2.getAbsPath() + troncated, &theListDisplacement[tile].BmpInfo, theListDisplacement[tile].Bits, NULL, 0)) if (!_LoadBitmap(tileBank2.getAbsPath() + troncated, &theListDisplacement[tile].BmpInfo, theListDisplacement[tile].Bits, NULL, 0))
MessageBox (NULL, (tileBank2.getAbsPath() + troncated).c_str(), "Can't load file", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, (tileBank2.getAbsPath() + troncated).c_str(), _T("Can't load file"), MB_OK|MB_ICONEXCLAMATION);
else else
{ {
// Check the size // Check the size
if ((theListDisplacement[tile].BmpInfo.bmiHeader.biWidth!=32)||(-theListDisplacement[tile].BmpInfo.bmiHeader.biHeight!=32)) if ((theListDisplacement[tile].BmpInfo.bmiHeader.biWidth!=32)||(-theListDisplacement[tile].BmpInfo.bmiHeader.biHeight!=32))
{ {
// Error message // Error message
MessageBox (NULL, "Invalid size: displacement map must be 32x32 8 bits.", troncated.c_str(), MessageBox (NULL, _T("Invalid size: displacement map must be 32x32 8 bits."), troncated.c_str(),
MB_OK|MB_ICONEXCLAMATION); MB_OK|MB_ICONEXCLAMATION);
// Free the bitmap // Free the bitmap
@ -1284,11 +1283,10 @@ void CTView::DrawTile(tilelist::iterator i,CDC *pDC,int clear, int n)
&*bits->begin(),bmpinf,DIB_RGB_COLORS,SRCCOPY); &*bits->begin(),bmpinf,DIB_RGB_COLORS,SRCCOPY);
} }
char temp[100]; std::string Name;
char Name[256]; Name[0] = 0;
if (InfoTexte==2) if (InfoTexte==2)
{ {
_splitpath(pth.c_str(),temp,temp,Name,temp); Name = NLMISC::CFile::getFilenameWithoutExtension(pth);
} }
else if (InfoTexte==3) else if (InfoTexte==3)
{ {
@ -1296,12 +1294,20 @@ void CTView::DrawTile(tilelist::iterator i,CDC *pDC,int clear, int n)
} }
else if (InfoTexte==1) else if (InfoTexte==1)
{ {
sprintf(Name,"%d",i->id); Name = NLMISC::toString("%d", i->id);
} }
rect_txt.top = pt.y + sizetile_y + spacing_tile_text; rect_txt.top = pt.y + sizetile_y + spacing_tile_text;
rect_txt.bottom += rect_txt.top + sizetext_y; rect_txt.bottom += rect_txt.top + sizetext_y;
rect_txt.left -= spacing_x; rect_txt.left -= spacing_x;
pDC->DrawText(Name,(int)strlen(Name),&rect_txt,DT_CENTER | DT_SINGLELINE);
#ifdef _UNICODE
ucstring tmp;
tmp.fromUtf8(Name);
#else
std::string tmp = Name;
#endif
pDC->DrawText((LPCTSTR)tmp.c_str(), (int)tmp.length(), &rect_txt,DT_CENTER | DT_SINGLELINE);
// Restore the device context // Restore the device context
pDC->SetBkColor( clrBk ); pDC->SetBkColor( clrBk );
@ -1538,15 +1544,12 @@ LRESULT CTView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{ {
CString str = load.GetNextPathName(p); CString str = load.GetNextPathName(p);
char sDrive[256]; LastPath = NLMISC::CFile::getPath(tStrToUtf8(str));
char sPath[256];
_splitpath (str, sDrive, sPath, NULL, NULL);
LastPath=string (sDrive)+string (sPath);
if (str!=CString("")) if (!str.IsEmpty())
{ {
int index=0; int index=0;
const char *pathname = (LPCTSTR)str; std::string pathname = tStrToUtf8(str);
// Add mode, to the end of the list // Add mode, to the end of the list
if (id==ID_MENU_ADD) if (id==ID_MENU_ADD)

View file

@ -61,15 +61,15 @@ END_MESSAGE_MAP()
void CChooseVegetSet::OnBrowse() void CChooseVegetSet::OnBrowse()
{ {
// Select a veget set // Select a veget set
static char BASED_CODE szFilter[] = "NeL VegetSet Files (*.vegetset)|*.vegetset|All Files (*.*)|*.*||"; static TCHAR BASED_CODE szFilter[] = _T("NeL VegetSet Files (*.vegetset)|*.vegetset|All Files (*.*)|*.*||");
// Create a file dialog // Create a file dialog
CFileDialog dialog ( TRUE, "*.vegetset", "*.vegetset", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, (CWnd*)Parent); CFileDialog dialog ( TRUE, _T("*.vegetset"), _T("*.vegetset"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, (CWnd*)Parent);
if (dialog.DoModal() == IDOK) if (dialog.DoModal() == IDOK)
{ {
// Get the file name // Get the file name
FileName = dialog.GetFileName (); FileName = tStrToUtf8(dialog.GetFileName ());
Name.SetWindowText (FileName.c_str()); Name.SetWindowText (utf8ToTStr(FileName));
} }
} }
@ -80,7 +80,7 @@ BOOL CChooseVegetSet::OnInitDialog()
if (!FileName.empty()) if (!FileName.empty())
Name.SetWindowText (utf8ToTStr(FileName)); Name.SetWindowText (utf8ToTStr(FileName));
else else
Name.SetWindowText ("Browse..."); Name.SetWindowText (_T("Browse..."));
return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE // EXCEPTION: OCX Property Pages should return FALSE

View file

@ -669,7 +669,7 @@ void CBranch_patcherDlg::OnButtonExtractTokens()
m_SrcDirLabel = "Enter Token 1"; m_SrcDirLabel = "Enter Token 1";
m_TargetDirLabel = "Enter Token 2"; m_TargetDirLabel = "Enter Token 2";
m_Filename = "The tokens above were extracted from the directories."; m_Filename = "The tokens above were extracted from the directories.";
((CButton*)GetDlgItem( IDC_ButtonExtractTokens ))->SetWindowText( "Store Tokens" ); ((CButton*)GetDlgItem( IDC_ButtonExtractTokens ))->SetWindowText( _T("Store Tokens") );
GetDlgItem( IDC_TopText )->ShowWindow( SW_HIDE ); GetDlgItem( IDC_TopText )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_ButtonClearTokens )->EnableWindow( FALSE ); GetDlgItem( IDC_ButtonClearTokens )->EnableWindow( FALSE );
GetDlgItem( IDC_ButtonPatch )->ShowWindow( SW_HIDE ); GetDlgItem( IDC_ButtonPatch )->ShowWindow( SW_HIDE );

View file

@ -87,7 +87,7 @@ BOOL CPlugInSelector::OnInitDialog()
} }
int getLastSeparator (const string &filename) std::string::size_type getLastSeparator (const string &filename)
{ {
string::size_type pos = filename.find_last_of ('/'); string::size_type pos = filename.find_last_of ('/');
if (pos == string::npos) if (pos == string::npos)

View file

@ -529,9 +529,9 @@ int main( int argc, char ** argv )
readFormId( outputFileName ); readFormId( outputFileName );
// output path // output path
sint lastSeparator = CFile::getLastSeparator(outputFileName); std::string::size_type lastSeparator = CFile::getLastSeparator(outputFileName);
string outputPath; string outputPath;
if( lastSeparator != -1 ) if( lastSeparator != std::string::npos )
{ {
outputPath = outputFileName.substr(0,lastSeparator+1); outputPath = outputFileName.substr(0,lastSeparator+1);
} }

View file

@ -323,7 +323,7 @@ static void ConvertFileTimeToString(const CNtfsFileTime *nt, char *s)
UIntToStr_2(s, sec); s[2] = 0; UIntToStr_2(s, sec); s[2] = 0;
} }
void PrintError(char *sz) void PrintError(const char *sz)
{ {
printf("\nERROR: %s\n", sz); printf("\nERROR: %s\n", sz);
} }

View file

@ -77,6 +77,7 @@ typedef CFastBitField<uint16, 16> T1BitField;
class I16x16Layer class I16x16Layer
{ {
public: public:
virtual ~I16x16Layer() {}
/** /**
* Get uncompressed value at i, j where i is y-like and j is x-like * Get uncompressed value at i, j where i is y-like and j is x-like

View file

@ -578,8 +578,8 @@ public:
sint16 asSint16() const { return (sint16)_Value1[0]; } sint16 asSint16() const { return (sint16)_Value1[0]; }
sint32 asSint32() const { return (sint32)_Value2[0]; } sint32 asSint32() const { return (sint32)_Value2[0]; }
sint64 asSint64() const { return (sint64)_Value3[0]; } sint64 asSint64() const { return (sint64)_Value3[0]; }
float asFloat() const { return *(float*)(&_Value2[0]); } float asFloat() const { return (float)_ValueFloat[0]; }
double asDouble() const { return *(double*)(&_Value3[0]); } double asDouble() const { return (double)_ValueDouble[0]; }
const NLMISC::CSheetId& asSheetId() const { return *(NLMISC::CSheetId*)(&_Value2[0]); } const NLMISC::CSheetId& asSheetId() const { return *(NLMISC::CSheetId*)(&_Value2[0]); }
const NLMISC::CEntityId& asEntityId() const { return *(NLMISC::CEntityId*)(&_Value3[0]); } const NLMISC::CEntityId& asEntityId() const { return *(NLMISC::CEntityId*)(&_Value3[0]); }
@ -668,6 +668,8 @@ private:
uint16 _Value1[4]; uint16 _Value1[4];
uint32 _Value2[2]; uint32 _Value2[2];
uint64 _Value3[1]; uint64 _Value3[1];
float _ValueFloat[2];
double _ValueDouble[1];
}; };
bool _ObjectIdPresent; bool _ObjectIdPresent;

View file

@ -74,7 +74,7 @@ public:
/** /**
* Destructor * Destructor
*/ */
~CDatabase(); virtual ~CDatabase();
/** /**

View file

@ -25,7 +25,8 @@
CConfigFile *CConfigFile::s_instance = NULL; CConfigFile *CConfigFile::s_instance = NULL;
CConfigFile::CConfigFile(QObject *parent):QObject(parent), m_version(-1), CConfigFile::CConfigFile(QObject *parent):QObject(parent), m_version(-1),
m_defaultServerIndex(0), m_defaultProfileIndex(0), m_installerCopied(false), m_use64BitsClient(false), m_shouldUninstallOldClient(true) m_defaultServerIndex(0), m_defaultProfileIndex(0), m_installerCopied(false), m_use64BitsClient(false),
m_shouldUninstallOldClient(true), m_ignoreFreeDiskSpaceChecks(false)
{ {
s_instance = this; s_instance = this;
@ -82,6 +83,7 @@ bool CConfigFile::load(const QString &filename)
m_installationDirectory = settings.value("installation_directory").toString(); m_installationDirectory = settings.value("installation_directory").toString();
m_use64BitsClient = settings.value("use_64bits_client", true).toBool(); m_use64BitsClient = settings.value("use_64bits_client", true).toBool();
m_shouldUninstallOldClient = settings.value("should_uninstall_old_client", true).toBool(); m_shouldUninstallOldClient = settings.value("should_uninstall_old_client", true).toBool();
m_ignoreFreeDiskSpaceChecks = settings.value("ignore_free_disk_space_checks", false).toBool();
// fix problems when src directory doesn't exist anymore // fix problems when src directory doesn't exist anymore
if (!m_srcDirectory.isEmpty() && QFile::exists(m_srcDirectory)) m_srcDirectory.clear(); if (!m_srcDirectory.isEmpty() && QFile::exists(m_srcDirectory)) m_srcDirectory.clear();
@ -175,6 +177,7 @@ bool CConfigFile::save() const
settings.setValue("installation_directory", m_installationDirectory); settings.setValue("installation_directory", m_installationDirectory);
settings.setValue("use_64bits_client", m_use64BitsClient); settings.setValue("use_64bits_client", m_use64BitsClient);
settings.setValue("should_uninstall_old_client", m_shouldUninstallOldClient); settings.setValue("should_uninstall_old_client", m_shouldUninstallOldClient);
settings.setValue("ignore_free_disk_space_checks", m_ignoreFreeDiskSpaceChecks);
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
settings.setValue("installer_filename_windows", m_installerFilename); settings.setValue("installer_filename_windows", m_installerFilename);
@ -441,6 +444,16 @@ void CConfigFile::setShouldUninstallOldClient(bool on)
m_shouldUninstallOldClient = on; m_shouldUninstallOldClient = on;
} }
bool CConfigFile::ignoreFreeDiskSpaceChecks() const
{
return m_ignoreFreeDiskSpaceChecks;
}
void CConfigFile::setIgnoreFreeDiskSpaceChecks(bool on)
{
m_ignoreFreeDiskSpaceChecks = on;
}
bool CConfigFile::uninstallingOldClient() const bool CConfigFile::uninstallingOldClient() const
{ {
return QFile::exists(getInstallationDirectory() + "/ryzom_installer_uninstalling_old_client"); return QFile::exists(getInstallationDirectory() + "/ryzom_installer_uninstalling_old_client");
@ -693,7 +706,7 @@ int CConfigFile::compareInstallersVersion() const
// if installer not found in installation directory // if installer not found in installation directory
if (!QFile::exists(installerDst)) return 1; if (!QFile::exists(installerDst)) return 1;
QString installedVersion = getVersionFromExecutable(installerDst); QString installedVersion = getVersionFromExecutable(installerDst, getInstallationDirectory());
// if unable to get version, copy it // if unable to get version, copy it
if (installedVersion.isEmpty()) return 1; if (installedVersion.isEmpty()) return 1;

View file

@ -113,6 +113,9 @@ public:
bool shouldUninstallOldClient() const; bool shouldUninstallOldClient() const;
void setShouldUninstallOldClient(bool on); void setShouldUninstallOldClient(bool on);
bool ignoreFreeDiskSpaceChecks() const;
void setIgnoreFreeDiskSpaceChecks(bool on);
bool uninstallingOldClient() const; bool uninstallingOldClient() const;
void setUninstallingOldClient(bool on) const; void setUninstallingOldClient(bool on) const;
@ -158,6 +161,7 @@ private:
QString m_srcDirectory; QString m_srcDirectory;
bool m_use64BitsClient; bool m_use64BitsClient;
bool m_shouldUninstallOldClient; bool m_shouldUninstallOldClient;
bool m_ignoreFreeDiskSpaceChecks;
QString m_installerFilename; QString m_installerFilename;
QString m_language; QString m_language;

View file

@ -18,6 +18,7 @@
#include "operation.h" #include "operation.h"
#include "downloader.h" #include "downloader.h"
#include "utils.h" #include "utils.h"
#include "configfile.h"
#include "nel/misc/system_info.h" #include "nel/misc/system_info.h"
#include "nel/misc/path.h" #include "nel/misc/path.h"
@ -179,7 +180,7 @@ void CDownloader::getFileHead()
void CDownloader::downloadFile() void CDownloader::downloadFile()
{ {
qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_fullPath.toUtf8().constData()); qint64 freeSpace = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks() ? 0:NLMISC::CSystemInfo::availableHDSpace(m_fullPath.toUtf8().constData());
if (freeSpace == 0) if (freeSpace == 0)
{ {

View file

@ -130,7 +130,7 @@ void CInstallDialog::updateDestinationText()
void CInstallDialog::accept() void CInstallDialog::accept()
{ {
// check free disk space // check free disk space
qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData()); qint64 freeSpace = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks() ? 0:NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData());
// shouldn't happen // shouldn't happen
if (freeSpace == 0) if (freeSpace == 0)

View file

@ -152,13 +152,13 @@ int main(int argc, char *argv[])
bool res = config.load(); bool res = config.load();
// init log // init log
CLogHelper logHelper(config.getInstallationDirectory()); CLogHelper logHelper(config.getInstallationDirectory().isEmpty() ? config.getNewInstallationDirectory():config.getInstallationDirectory());
nlinfo("Launched %s", Q2C(config.getInstallerCurrentFilePath())); nlinfo("Launched %s", Q2C(config.getInstallerCurrentFilePath()));
OperationStep step = res ? config.getInstallNextStep():DisplayNoServerError; OperationStep step = res ? config.getInstallNextStep():DisplayNoServerError;
if (res == DisplayNoServerError) if (step == DisplayNoServerError)
{ {
QMessageBox::critical(NULL, QApplication::tr("Error"), QApplication::tr("Unable to find ryzom_installer.ini")); QMessageBox::critical(NULL, QApplication::tr("Error"), QApplication::tr("Unable to find ryzom_installer.ini"));
return 1; return 1;

View file

@ -123,7 +123,7 @@ void CMigrateDialog::updateDestinationText()
void CMigrateDialog::accept() void CMigrateDialog::accept()
{ {
// check free disk space // check free disk space
qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData()); qint64 freeSpace = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks() ? 0:NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData());
// shouldn't happen // shouldn't happen
if (freeSpace == 0) if (freeSpace == 0)

View file

@ -226,20 +226,21 @@ void CProfilesDialog::updateExecutableVersion(int index)
if (index < 0) return; if (index < 0) return;
const CProfile &profile = m_model->getProfiles()[index]; const CProfile &profile = m_model->getProfiles()[index];
const CServer &server = CConfigFile::getInstance()->getServer(profile.server);
QString executable = profile.executable; QString executable = profile.executable;
// file empty, use default one // file empty, use default one
if (executable.isEmpty()) if (executable.isEmpty())
{ {
executable += CConfigFile::getInstance()->getServer(profile.server).getClientFullPath(); executable = server.getClientFullPath();
} }
// file doesn't exist // file doesn't exist
if (executable.isEmpty() || !QFile::exists(executable)) return; if (executable.isEmpty() || !QFile::exists(executable)) return;
// convert output to string // convert output to string
QString versionString = getVersionFromExecutable(executable); QString versionString = getVersionFromExecutable(executable, server.getDirectory());
if (!versionString.isEmpty()) if (!versionString.isEmpty())
{ {

View file

@ -406,7 +406,7 @@ QString appendShortcutExtension(const QString &shortcut)
return shortcut + extension; return shortcut + extension;
} }
QString getVersionFromExecutable(const QString &path) QString getVersionFromExecutable(const QString &path, const QString &workingDirectory)
{ {
// check if file exists // check if file exists
if (!QFile::exists(path)) if (!QFile::exists(path))
@ -426,6 +426,7 @@ QString getVersionFromExecutable(const QString &path)
// launch executable with --version argument // launch executable with --version argument
QProcess process; QProcess process;
process.setProcessChannelMode(QProcess::MergedChannels); process.setProcessChannelMode(QProcess::MergedChannels);
process.setWorkingDirectory(workingDirectory);
process.start(path, QStringList() << "--version", QIODevice::ReadOnly); process.start(path, QStringList() << "--version", QIODevice::ReadOnly);
if (!process.waitForStarted()) if (!process.waitForStarted())

View file

@ -76,7 +76,7 @@ bool resolveShortcut(const QWidget &window, const QString &shortcut, QString &pa
QString appendShortcutExtension(const QString &shortcut); QString appendShortcutExtension(const QString &shortcut);
// launch an executable with --version parameter and parse version string // launch an executable with --version parameter and parse version string
QString getVersionFromExecutable(const QString &path); QString getVersionFromExecutable(const QString &path, const QString &workingDirectory);
// write a resource in QRC to disk // write a resource in QRC to disk
bool writeResource(const QString &resource, const QString &path); bool writeResource(const QString &resource, const QString &path);

View file

@ -90,7 +90,7 @@ BOOL CDfnDialog::OnInitDialog()
// Create the type combo // Create the type combo
setStaticSize (currentPos); setStaticSize (currentPos);
LabelParents.Create ("Parents:", WS_VISIBLE, currentPos, this); LabelParents.Create (_T("Parents:"), WS_VISIBLE, currentPos, this);
initWidget (LabelParents); initWidget (LabelParents);
getNextPosLabel (currentPos); getNextPosLabel (currentPos);
@ -105,7 +105,7 @@ BOOL CDfnDialog::OnInitDialog()
// Create the type combo // Create the type combo
setStaticSize (currentPos); setStaticSize (currentPos);
LabelStruct.Create ("Structure:", WS_VISIBLE, currentPos, this); LabelStruct.Create (_T("Structure:"), WS_VISIBLE, currentPos, this);
initWidget (LabelStruct); initWidget (LabelStruct);
getNextPosLabel (currentPos); getNextPosLabel (currentPos);
@ -193,7 +193,7 @@ void CDfnDialog::getFromDocument (const NLGEORGES::CFormDfn &dfn)
for (parent=0; parent<dfn.getNumParent (); parent++) for (parent=0; parent<dfn.getNumParent (); parent++)
{ {
// Add the label and value // Add the label and value
Parents.ListCtrl.InsertItem (parent, dfn.getParentFilename (parent).c_str ()); Parents.ListCtrl.InsertItem (parent, utf8ToTStr(dfn.getParentFilename (parent)));
} }
// Add the struct element // Add the struct element
@ -202,22 +202,22 @@ void CDfnDialog::getFromDocument (const NLGEORGES::CFormDfn &dfn)
for (elm=0; elm<dfn.getNumEntry (); elm++) for (elm=0; elm<dfn.getNumEntry (); elm++)
{ {
// Add the label and value // Add the label and value
Struct.ListCtrl.InsertItem (elm, dfn.getEntry (elm).getName ().c_str()); Struct.ListCtrl.InsertItem (elm, utf8ToTStr(dfn.getEntry (elm).getName()));
switch (elm, dfn.getEntry (elm).getType ()) switch (elm, dfn.getEntry (elm).getType ())
{ {
case UFormDfn::EntryType: case UFormDfn::EntryType:
Struct.ListCtrl.SetItemText (elm, 1, dfn.getEntry (elm).getArrayFlag () ? "Type array" : "Type"); Struct.ListCtrl.SetItemText (elm, 1, dfn.getEntry (elm).getArrayFlag () ? _T("Type array") : _T("Type"));
Struct.ListCtrl.SetItemText (elm, 4, dfn.getEntry (elm).getFilenameExt ().c_str()); Struct.ListCtrl.SetItemText (elm, 4, utf8ToTStr(dfn.getEntry (elm).getFilenameExt ()));
break; break;
case UFormDfn::EntryDfn: case UFormDfn::EntryDfn:
Struct.ListCtrl.SetItemText (elm, 1, dfn.getEntry (elm).getArrayFlag () ? "Dfn array" : "Dfn"); Struct.ListCtrl.SetItemText (elm, 1, dfn.getEntry (elm).getArrayFlag () ? _T("Dfn array") : _T("Dfn"));
break; break;
case UFormDfn::EntryVirtualDfn: case UFormDfn::EntryVirtualDfn:
Struct.ListCtrl.SetItemText (elm, 1, "Virtual Dfn"); Struct.ListCtrl.SetItemText (elm, 1, _T("Virtual Dfn"));
break; break;
} }
Struct.ListCtrl.SetItemText (elm, 2, dfn.getEntry (elm).getFilename ().c_str()); Struct.ListCtrl.SetItemText (elm, 2, utf8ToTStr(dfn.getEntry (elm).getFilename()));
Struct.ListCtrl.SetItemText (elm, 3, dfn.getEntry (elm).getDefault ().c_str()); Struct.ListCtrl.SetItemText (elm, 3, utf8ToTStr(dfn.getEntry (elm).getDefault()));
} }
} }
} }
@ -238,7 +238,7 @@ void CDfnDialog::setParentsToDocument ()
{ {
// Add the label and value // Add the label and value
CString str = Parents.ListCtrl.GetItemText ( parent, 0); CString str = Parents.ListCtrl.GetItemText ( parent, 0);
vectValue[parent] = str; vectValue[parent] = tStrToUtf8(str);
} }
// Modify the document // Modify the document
@ -267,7 +267,7 @@ void CDfnDialog::setStructToDocument ()
{ {
// Get the name // Get the name
CString name= Struct.ListCtrl.GetItemText (elm, subElm); CString name= Struct.ListCtrl.GetItemText (elm, subElm);
stringVector[elm][subElm] = (const char*)name; stringVector[elm][subElm] = tStrToUtf8(name);
} }
} }
doc->modify (new CActionStringVectorVector (IAction::DfnStructure, stringVector, *doc, doc->getLeftView ()->getCurrentSelectionId (), 0)); doc->modify (new CActionStringVectorVector (IAction::DfnStructure, stringVector, *doc, doc->getLeftView ()->getCurrentSelectionId (), 0));
@ -301,19 +301,19 @@ CEditListCtrl::TItemEdit CDfnEditListCtrl::getItemEditMode (uint item, uint subI
return CEditListCtrl::EditFixedCombo; return CEditListCtrl::EditFixedCombo;
else if (subItem == 2) else if (subItem == 2)
{ {
string type = ListCtrl.GetItemText (item, 1); string type = tStrToUtf8(ListCtrl.GetItemText (item, 1));
if (type != "Virtual Dfn") if (type != "Virtual Dfn")
return CEditListCtrl::EditMemCombo; return CEditListCtrl::EditMemCombo;
} }
else if (subItem == 3) else if (subItem == 3)
{ {
string type = ListCtrl.GetItemText (item, 1); string type = tStrToUtf8(ListCtrl.GetItemText (item, 1));
if ((type == "Type") || (type == "Type array")) if ((type == "Type") || (type == "Type array"))
return CEditListCtrl::EditMemCombo; return CEditListCtrl::EditMemCombo;
} }
else if (subItem == 4) else if (subItem == 4)
{ {
string type = ListCtrl.GetItemText (item, 1); string type = tStrToUtf8(ListCtrl.GetItemText (item, 1));
if ((type == "Type") || (type == "Type array")) if ((type == "Type") || (type == "Type array"))
return CEditListCtrl::EditMemCombo; return CEditListCtrl::EditMemCombo;
} }
@ -349,7 +349,7 @@ void CDfnEditListCtrl::getMemComboBoxProp (uint item, uint subItem, std::string
browse = true; browse = true;
// Get type string // Get type string
string type = ListCtrl.GetItemText (item, 1); string type = tStrToUtf8(ListCtrl.GetItemText (item, 1));
if ((type == "Type") || (type == "Type array")) if ((type == "Type") || (type == "Type array"))
regAdr = GEORGES_EDIT_BASE_REG_KEY"\\Type MemCombo"; regAdr = GEORGES_EDIT_BASE_REG_KEY"\\Type MemCombo";
else if ((type == "Dfn") || (type == "Dfn array")) else if ((type == "Dfn") || (type == "Dfn array"))
@ -390,7 +390,7 @@ void CDfnEditListCtrl::getBrowseInfo (uint item, uint subItem, std::string &defE
if (subItem == 2) if (subItem == 2)
{ {
// Get type string // Get type string
string type = ListCtrl.GetItemText (item, 1); string type = tStrToUtf8(ListCtrl.GetItemText (item, 1));
if ((type == "Type") || (type == "Type array")) if ((type == "Type") || (type == "Type array"))
{ {
filter = TypeFilter; filter = TypeFilter;
@ -415,35 +415,33 @@ void CDfnEditListCtrl::onItemChanged (uint item, uint subItem)
if (subItem == 1) if (subItem == 1)
{ {
// Get type string // Get type string
string type = ListCtrl.GetItemText (item, 1); string type = tStrToUtf8(ListCtrl.GetItemText (item, 1));
if ((type == "Type") || (type == "Type array")) if ((type == "Type") || (type == "Type array"))
{ {
CString str; CString str;
str = Dialog->Struct.ListCtrl.GetItemText (item, 2); str = Dialog->Struct.ListCtrl.GetItemText (item, 2);
char ext[MAX_PATH]; std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(str));
_splitpath (str, NULL, NULL, NULL, ext); if (ext == "typ")
if (stricmp (ext, ".typ") != 0) Dialog->Struct.ListCtrl.SetItemText (item, 2, utf8ToTStr(theApp.DefaultType));
Dialog->Struct.ListCtrl.SetItemText (item, 2, theApp.DefaultType.c_str ());
} }
else if ((type == "Dfn") || (type == "Dfn array")) else if ((type == "Dfn") || (type == "Dfn array"))
{ {
CString str; CString str;
str = Dialog->Struct.ListCtrl.GetItemText (item, 2); str = Dialog->Struct.ListCtrl.GetItemText (item, 2);
char ext[MAX_PATH]; std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(str));
_splitpath (str, NULL, NULL, NULL, ext); if (ext == "dfn")
if (stricmp (ext, ".dfn") != 0) Dialog->Struct.ListCtrl.SetItemText (item, 2, utf8ToTStr(theApp.DefaultDfn));
Dialog->Struct.ListCtrl.SetItemText (item, 2, theApp.DefaultDfn.c_str ());
// Clear default value // Clear default value
Dialog->Struct.ListCtrl.SetItemText (item, 3, ""); Dialog->Struct.ListCtrl.SetItemText (item, 3, _T(""));
} }
else if (type == "Virtual Dfn") else if (type == "Virtual Dfn")
{ {
// Clear the value // Clear the value
Dialog->Struct.ListCtrl.SetItemText (item, 2, ""); Dialog->Struct.ListCtrl.SetItemText (item, 2, _T(""));
// Clear default value // Clear default value
Dialog->Struct.ListCtrl.SetItemText (item, 3, ""); Dialog->Struct.ListCtrl.SetItemText (item, 3, _T(""));
} }
} }
} }
@ -470,16 +468,16 @@ void CDfnDialog::onOpenSelected ()
int nItem = Parents.ListCtrl.GetNextSelectedItem(pos); int nItem = Parents.ListCtrl.GetNextSelectedItem(pos);
// Get the string // Get the string
CString str = Parents.ListCtrl.GetItemText (nItem, 0); std::string str = tStrToUtf8(Parents.ListCtrl.GetItemText (nItem, 0));
if (str != "") if (!str.empty())
{ {
// Look for the file // Look for the file
string name = CPath::lookup ((const char*)str, false, false); string name = CPath::lookup (str, false, false);
if (name.empty ()) if (name.empty ())
name = str; name = str;
// Open the file // Open the file
theApp.OpenDocumentFile (name.c_str ()); theApp.OpenDocumentFile (utf8ToTStr(name));
} }
} }
} }
@ -492,16 +490,16 @@ void CDfnDialog::onOpenSelected ()
int nItem = Struct.ListCtrl.GetNextSelectedItem(pos); int nItem = Struct.ListCtrl.GetNextSelectedItem(pos);
// Get the string // Get the string
CString str = Struct.ListCtrl.GetItemText (nItem, 2); std::string str = tStrToUtf8(Struct.ListCtrl.GetItemText (nItem, 2));
if (str != "") if (!str.empty())
{ {
// Look for the file // Look for the file
string name = CPath::lookup ((const char*)str, false, false); string name = CPath::lookup (str, false, false);
if (name.empty ()) if (name.empty ())
name = str; name = str;
// Open the file // Open the file
theApp.OpenDocumentFile (name.c_str ()); theApp.OpenDocumentFile (utf8ToTStr(name));
} }
} }
} }

View file

@ -51,7 +51,7 @@ bool CFileTreeCtrl::create( const RECT& rect, CWnd* pParentWnd, UINT nID )
LPCTSTR className = AfxRegisterWndClass( 0 ); LPCTSTR className = AfxRegisterWndClass( 0 );
// Create this window // Create this window
if (CWnd::Create (className, "empty", WS_CHILD, rect, pParentWnd, nID )) if (CWnd::Create (className, _T("empty"), WS_CHILD, rect, pParentWnd, nID ))
#if defined(NL_COMP_VC) && NL_COMP_VC_VERSION >= 80 #if defined(NL_COMP_VC) && NL_COMP_VC_VERSION >= 80
@ -403,11 +403,9 @@ int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
return stricmp (pItemInfo1->displayName.c_str(), pItemInfo2->displayName.c_str()); return stricmp (pItemInfo1->displayName.c_str(), pItemInfo2->displayName.c_str());
if (pfileTreeCtrl->_ArrangeMode == CFileTreeCtrl::ByType) if (pfileTreeCtrl->_ArrangeMode == CFileTreeCtrl::ByType)
{ {
char ext1[_MAX_EXT]; std::string ext1 = NLMISC::CFile::getExtension(pItemInfo1->displayName);
_splitpath (pItemInfo1->displayName.c_str(), NULL, NULL, NULL, ext1); std::string ext2 = NLMISC::CFile::getExtension(pItemInfo2->displayName);
char ext2[_MAX_EXT]; int res = stricmp (ext1.c_str(), ext2.c_str());
_splitpath (pItemInfo2->displayName.c_str(), NULL, NULL, NULL, ext2);
int res = stricmp (ext1, ext2);
if ( res == 0) if ( res == 0)
return stricmp (pItemInfo1->displayName.c_str(), pItemInfo2->displayName.c_str()); return stricmp (pItemInfo1->displayName.c_str(), pItemInfo2->displayName.c_str());
else else

View file

@ -1173,9 +1173,7 @@ void CFormDialog::getDfnName (string &result) const
{ {
// Get the DFN filename // Get the DFN filename
CString str = doc->GetPathName (); CString str = doc->GetPathName ();
char extension[512]; result NLMISC::CFile::getExtension(tStrToUtf8(str));
_splitpath (str, NULL, NULL, NULL, extension);
result = (*extension == '.') ? extension+1 : extension;
} }
else else
result.clear(); result.clear();

View file

@ -477,20 +477,15 @@ void CGeorgesEditApp::OnAppAbout()
void CGeorgesEditApp::outputError (const char* message) void CGeorgesEditApp::outputError (const char* message)
{ {
if (m_pMainWnd) if (m_pMainWnd)
m_pMainWnd->MessageBox (message, "Georges Edit", MB_OK|MB_ICONEXCLAMATION); m_pMainWnd->MessageBox (utf8ToTStr(message), _T("Georges Edit"), MB_OK|MB_ICONEXCLAMATION);
else else
MessageBox (NULL, message, "Georges Edit", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(message), _T("Georges Edit"), MB_OK|MB_ICONEXCLAMATION);
} }
void CGeorgesEditApp::getConfigFilePath (std::string &output) void CGeorgesEditApp::getConfigFilePath (std::string &output)
{ {
// Get the config file path // Get the config file path
char sDrive[MAX_PATH]; output = NLMISC::CFile::getPath(theApp.ExePath) + "georges.cfg";
char sDir[MAX_PATH];
char sPath[MAX_PATH];
_splitpath (theApp.ExePath.c_str (), sDrive, sDir, NULL, NULL);
_makepath (sPath, sDrive, sDir, "georges", ".cfg");
output = sPath;
} }
bool CGeorgesEditApp::loadCfg () bool CGeorgesEditApp::loadCfg ()
@ -962,12 +957,7 @@ void CGeorgesEditApp::gotoURL (LPCTSTR url)
void CGeorgesEditApp::WinHelp(DWORD dwData, UINT nCmd) void CGeorgesEditApp::WinHelp(DWORD dwData, UINT nCmd)
{ {
char drive[512]; gotoURL(utf8ToTStr(NLMISC::CFile::getPath(ExePath) + "georges_edit.html"));
char dir[512];
char path[512];
_splitpath (ExePath.c_str (), drive, dir, NULL, NULL);
_makepath (path, drive, dir, "georges_edit", ".html");
gotoURL (path);
} }
void CGeorgesEditApp::OnViewRefresh() void CGeorgesEditApp::OnViewRefresh()
@ -1478,9 +1468,8 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand)
name = name.substr (6, name.size ()-8); name = name.substr (6, name.size ()-8);
// Get the extension // Get the extension
char ext[MAX_PATH]; std::string ext = NLMISC::CFile::getExtension(name);
_splitpath (name.c_str (), NULL, NULL, NULL, ext); string dfnName = ext + ".dfn";
string dfnName = string (ext+1) + ".dfn";
// Get the doc template // Get the doc template
CMultiDocTemplate *docTemplate = getFormDocTemplate (dfnName.c_str ()); CMultiDocTemplate *docTemplate = getFormDocTemplate (dfnName.c_str ());
@ -1541,18 +1530,15 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand)
name = name.substr (8, name.size ()-10); name = name.substr (8, name.size ()-10);
// Get the extension // Get the extension
char ext[MAX_PATH]; std::string ext = NLMISC::CFile::getExtension(name);
_splitpath (name.c_str (), NULL, NULL, NULL, ext); string dfnName = ext + ".dfn";
string dfnName = string (ext+1) + ".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)
{ {
char nameFile[MAX_PATH]; std::string nameFile = NLMISC::CFile::getFilename(name);
char extFile[MAX_PATH]; doc->addParent (nameFile.c_str());
_splitpath (name.c_str (), NULL, NULL, nameFile, extFile);
doc->addParent ((string (nameFile) + extFile).c_str ());
doc->updateDocumentStructure (); doc->updateDocumentStructure ();
doc->UpdateAllViews (NULL); doc->UpdateAllViews (NULL);
} }
@ -1570,11 +1556,7 @@ BOOL CGeorgesEditApp::OnDDECommand(LPTSTR lpszCommand)
name = name.substr (10, name.size ()-12); name = name.substr (10, name.size ()-12);
// Get the extension // Get the extension
char name2[MAX_PATH]; std::string dfnName = NLMISC::CFile::getFilename(name);
char ext[MAX_PATH];
_splitpath (name.c_str (), NULL, NULL, name2, ext);
string dfnName = name2;
dfnName += ext;
// Create a document // Create a document
CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), ""); CGeorgesEditDocForm *doc = (CGeorgesEditDocForm*)createDocument (dfnName.c_str (), "");

View file

@ -181,13 +181,9 @@ bool CGeorgesEditDocForm::initDocument (const char *dfnName, bool newElement)
} }
// Set file name and title // Set file name and title
char name[512]; std::string name2 = toLower(NLMISC::CFile::getFilenameWithoutExtension(dfnName));
char ext[512]; SetPathName (utf8ToTStr("*." + name2), FALSE);
_splitpath (dfnName, NULL, NULL, name, ext); SetTitle (utf8ToTStr("New " + name2 + " form"));
string name2 = (const char*)(name);
name2 = strlwr (name2);
SetPathName ( ("*."+name2).c_str(), FALSE);
SetTitle ( ("New "+name2+" form").c_str() );
// TMp // TMp
if (newElement) if (newElement)
@ -547,9 +543,9 @@ BOOL CGeorgesEditDoc::OnOpenDocument(LPCTSTR lpszPathName)
try try
{ {
// Check form // Check form
char ext[MAX_PATH]; std::string ext = NLMISC::CFile::getExtension(tStrToUtf8(lpszPathName));
_splitpath (lpszPathName, NULL, NULL, NULL, ext); string extLower = toLower(ext);
string extLower = strlwr (string (ext));
if (!extLower.empty ()) if (!extLower.empty ())
{ {
string dfnName = extLower.substr (1, string::npos) + ".dfn"; string dfnName = extLower.substr (1, string::npos) + ".dfn";
@ -1090,10 +1086,7 @@ void CGeorgesEditDoc::getDfnFilename (std::string &dfnName)
// Get the DFN filename // Get the DFN filename
CString str = GetPathName (); CString str = GetPathName ();
char extension[512]; dfnName = NLMISC::CFile::getExtension(tStrToUtf8(str)) + ".dfn";
_splitpath (str, NULL, NULL, NULL, extension);
dfnName = extension+1;
dfnName += ".dfn";
} }
// *************************************************************************** // ***************************************************************************

View file

@ -103,10 +103,8 @@ void CImageListEx::addResourceIcon (const char *filename)
index = ImageList.Replace( index, handle); index = ImageList.Replace( index, handle);
// Add in the map // Add in the map
char name[MAX_PATH]; std::string name = NLMISC::CFile::getFilenameWithoutExtension(filename);
_splitpath (filename, NULL, NULL, name, NULL); _IconMapString.insert (std::map<string, int>::value_type (toLower(name), index));
string llwr = strlwr (string (name));
_IconMapString.insert (std::map<string, int>::value_type (llwr, index));
// Release the icon // Release the icon
DestroyIcon (handle); DestroyIcon (handle);
@ -131,10 +129,8 @@ int CImageListEx::getImage (int resource) const
int CImageListEx::getImage (const char *filename) const int CImageListEx::getImage (const char *filename) const
{ {
char name[MAX_PATH]; std::string name = toLower(NLMISC::CFile::getFilenameWithoutExtension(filename));
_splitpath (filename, NULL, NULL, name, NULL); std::map<string, int>::const_iterator ite = _IconMapString.find (name);
string llwr = strlwr (string (name));
std::map<string, int>::const_iterator ite = _IconMapString.find (llwr);
if (ite == _IconMapString.end()) if (ite == _IconMapString.end())
return -1; return -1;
else else

View file

@ -698,8 +698,8 @@ void CMissionCompilerFeDlg::OnSpecialRuncompilertest()
catch(const EParseException &e) catch(const EParseException &e)
{ {
string msg = "In primitive "; string msg = "In primitive ";
msg += buildPrimPath(e.Primitive) +" : "+e.Why; msg += buildPrimPath(e.Primitive) + ": " + e.Why;
AfxMessageBox(msg.c_str()); AfxMessageBox(utf8ToTStr(msg));
} }
} }

View file

@ -875,17 +875,26 @@ bool CMissionCompiler::publishFiles(const std::string &serverPathPrim, const std
return true; return true;
} }
bool CMissionCompiler::includeText(const std::string filename, const std::string text) bool CMissionCompiler::includeText(const std::string &filename, const std::string &text)
{ {
FILE *f = nlfopen(filename, "r+"); FILE *f = nlfopen(filename, "r+");
if (f == NULL) if (f == NULL)
{
nlwarning("Unable to open %s", filename.c_str());
return false; return false;
}
bool isIn = false; bool isIn = false;
char buffer[1024]; char buffer[1024];
// Check for UTF8 format // Check for UTF8 format
fread(buffer, 1, 3, f); if (fread(buffer, 1, 3, f) != 3)
{
fclose(f);
nlwarning("Unable to read 3 bytes from %s", filename.c_str());
return false;
}
if (buffer[0] != -17 || buffer[1] != -69 || buffer[2] != -65) if (buffer[0] != -17 || buffer[1] != -69 || buffer[2] != -65)
fseek(f, 0, SEEK_SET); fseek(f, 0, SEEK_SET);

View file

@ -447,7 +447,7 @@ public:
bool publishFiles(const std::string &serverPathPrim, const std::string &serverPathText, const std::string &localPathText); bool publishFiles(const std::string &serverPathPrim, const std::string &serverPathText, const std::string &localPathText);
/// Search for text in the file : add it if it's not in /// Search for text in the file : add it if it's not in
bool includeText(const std::string filename, const std::string text); bool includeText(const std::string &filename, const std::string &text);
/// Parse the pre requisite node of a mission. /// Parse the pre requisite node of a mission.
bool parsePreRequisite(CMissionData &md, NLLIGO::IPrimitive *preReq); bool parsePreRequisite(CMissionData &md, NLLIGO::IPrimitive *preReq);

View file

@ -1279,15 +1279,23 @@ void ItemNamesSave()
printf( "-- SAVING ITEM NAMES --\n"); printf( "-- SAVING ITEM NAMES --\n");
CSString data, output; CSString data, output;
FILE* file; FILE *file = nlfopen( ITEM_WORDS_WK, "rb" );
file = nlfopen( ITEM_WORDS_WK, "rb" );
char c; char c;
fread( &c, 1, 1, file ); if (fread(&c, 1, 1, file) != 1)
{
nlwarning("Unable to read 1 byte from %s", ITEM_WORDS_WK.c_str());
return;
}
while ( !feof( file ) ) while ( !feof( file ) )
{ {
data += toString( "%c", c ); data += toString( "%c", c );
fread( &c, 1, 1, file ); if (fread(&c, 1, 1, file) != 1)
{
nlwarning("Unable to read 1 byte from %s", ITEM_WORDS_WK.c_str());
return;
}
} }
fclose( file ); fclose( file );

View file

@ -199,7 +199,13 @@ int getNbItemFromFile(const char *filename)
while (fgets(buffer, 1024, f)) while (fgets(buffer, 1024, f))
{ {
int n; int n;
fscanf(f, "_Items#%d", &n); if (fscanf(f, "_Items#%d", &n) != 1)
{
fclose(f);
nlerror("Unable to parse 1 item from %s", filename);
return max;
}
if (n > max) if (n > max)
max = n; max = n;
} }
@ -247,7 +253,13 @@ int importCsv(const char *filename)
// read fields name // read fields name
{ {
fgets(buffer, 1024, f); if (fgets(buffer, 1024, f) != buffer)
{
fclose(f);
nlerror("Unable to read line from %s", filename);
return 1;
}
CSString s(buffer); CSString s(buffer);
s = s.strtok("\n"); s = s.strtok("\n");

View file

@ -130,7 +130,7 @@ bool CDataBase::init (const string &Path, CZoneBank &zb)
string sDirBackup = NLMISC::CPath::getCurrentPath(); string sDirBackup = NLMISC::CPath::getCurrentPath();
// "Path" can be relative to the doc path so we have to be first in the doc path // "Path" can be relative to the doc path so we have to be first in the doc path
string s2 = NLMISC::CFile::getPath ((LPCTSTR)getMainFrame()->getDocument()->GetPathName()); string s2 = NLMISC::CFile::getPath (tStrToUtf8(getMainFrame()->getDocument()->GetPathName()));
NLMISC::CPath::setCurrentPath(s2.c_str()); NLMISC::CPath::setCurrentPath(s2.c_str());
string ss = NLMISC::CPath::getFullPath(Path); string ss = NLMISC::CPath::getFullPath(Path);
NLMISC::CPath::setCurrentPath (ss.c_str()); NLMISC::CPath::setCurrentPath (ss.c_str());
@ -609,8 +609,7 @@ bool CBuilderZone::refresh ()
if ((sZone != STRING_UNUSED)&&(sZone != STRING_OUT_OF_BOUND)) if ((sZone != STRING_UNUSED)&&(sZone != STRING_OUT_OF_BOUND))
{ {
unload (_ZoneRegionSelected); unload (_ZoneRegionSelected);
MessageBox (NULL, "Cannot add this zone because it overlaps existing ones", MessageBox (NULL, _T("Cannot add this zone because it overlaps existing ones"), _T("Error"), MB_ICONERROR|MB_OK);
"Error", MB_ICONERROR|MB_OK);
return false; return false;
} }
} }
@ -623,8 +622,8 @@ bool CBuilderZone::refresh ()
if (!_ZoneRegions[_ZoneRegionSelected]->init (&_ZoneBank, this, error)) if (!_ZoneRegions[_ZoneRegionSelected]->init (&_ZoneBank, this, error))
{ {
unload (_ZoneRegionSelected); unload (_ZoneRegionSelected);
MessageBox (NULL, ("Cannot add this zone :\n"+error).c_str(), std::string msg = NLMISC::toString("Cannot add this zone :\n%s", error.c_str());
"Error", MB_ICONERROR|MB_OK); MessageBox (NULL, utf8ToTStr(msg), _T("Error"), MB_ICONERROR|MB_OK);
return false; return false;
} }
@ -1599,20 +1598,21 @@ void CBuilderZone::del (const CVector &worldPos)
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
bool CBuilderZone::initZoneBank (const string &sPathName) bool CBuilderZone::initZoneBank (const string &sPathName)
{ {
char sDirBackup[512]; // TODO: replace by NeL methods
TCHAR sDirBackup[512];
GetCurrentDirectory (512, sDirBackup); GetCurrentDirectory (512, sDirBackup);
SetCurrentDirectory (sPathName.c_str()); SetCurrentDirectory (utf8ToTStr(sPathName));
WIN32_FIND_DATA findData; WIN32_FIND_DATA findData;
HANDLE hFind; HANDLE hFind;
hFind = FindFirstFile ("*.ligozone", &findData); hFind = FindFirstFile (_T("*.ligozone"), &findData);
while (hFind != INVALID_HANDLE_VALUE) while (hFind != INVALID_HANDLE_VALUE)
{ {
// If the name of the file is not . or .. then its a valid entry in the DataBase // If the name of the file is not . or .. then its a valid entry in the DataBase
if (!((strcmp (findData.cFileName, ".") == 0) || (strcmp (findData.cFileName, "..") == 0))) if (!((_tcscmp (findData.cFileName, _T(".")) == 0) || (_tcscmp (findData.cFileName, _T("..")) == 0)))
{ {
string error; string error;
if (!_ZoneBank.addElement (findData.cFileName, error)) if (!_ZoneBank.addElement (tStrToUtf8(findData.cFileName), error))
theApp.errorMessage (error.c_str()); theApp.errorMessage (error.c_str());
} }
if (FindNextFile (hFind, &findData) == 0) if (FindNextFile (hFind, &findData) == 0)

View file

@ -49,8 +49,8 @@ using namespace NLMISC;
#define STRING_SELECT_COMBOBOX_ID 9 #define STRING_SELECT_COMBOBOX_ID 9
#define DIFFERENT_VALUE_STRING "<different values>" #define DIFFERENT_VALUE_STRING _T("<different values>")
#define DIFFERENT_VALUE_MULTI_STRING "<diff>" #define DIFFERENT_VALUE_MULTI_STRING _T("<diff>")
//CDialogProperties PropertyDialog; //CDialogProperties PropertyDialog;
std::list<CDialogProperties*> PropertiesDialogs; std::list<CDialogProperties*> PropertiesDialogs;
@ -327,12 +327,12 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
buttonRect.right = buttonRect.left + FILE_BUTTON_WIDTH; buttonRect.right = buttonRect.left + FILE_BUTTON_WIDTH;
// Create an edit box // Create an edit box
nlverify (widget.CheckBox.Create ("Select", BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id)); nlverify (widget.CheckBox.Create (_T("Select"), BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id));
widget.CheckBox.SetFont (GetFont ()); widget.CheckBox.SetFont (GetFont ());
} }
// Create the label // Create the label
widget.Static.Create ("", WS_VISIBLE, widgetPos, &m_PropertyCont); widget.Static.Create (_T(""), WS_VISIBLE, widgetPos, &m_PropertyCont);
widget.Static.SetFont (GetFont ()); widget.Static.SetFont (GetFont ());
// Next position // Next position
@ -372,11 +372,11 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
// we insert an empty string in case of a default value // we insert an empty string in case of a default value
if (!widget.Parameter.SortEntries) if (!widget.Parameter.SortEntries)
{ {
widget.ComboBox.InsertString( -1, ""); widget.ComboBox.InsertString( -1, _T(""));
} }
else else
{ {
widget.ComboBox.AddString(""); widget.ComboBox.AddString(_T(""));
} }
if (ite != widget.Parameter.ComboValues.end ()) if (ite != widget.Parameter.ComboValues.end ())
{ {
@ -431,7 +431,7 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
widgetPos.bottom = widgetPos.top + EDIT_HEIGHT; widgetPos.bottom = widgetPos.top + EDIT_HEIGHT;
// Create an edit box // Create an edit box
nlverify (widget.EditBox.CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), "", WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|(enabled?0:ES_READONLY), widgetPos, &m_PropertyCont, id)); nlverify (widget.EditBox.CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), _T(""), WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|(enabled?0:ES_READONLY), widgetPos, &m_PropertyCont, id));
widget.EditBox.SetFont (GetFont ()); widget.EditBox.SetFont (GetFont ());
if (widget.Parameter.FileExtension != "") if (widget.Parameter.FileExtension != "")
{ {
@ -440,7 +440,7 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
buttonRect.right = buttonRect.left + FILE_BUTTON_WIDTH; buttonRect.right = buttonRect.left + FILE_BUTTON_WIDTH;
// Create an edit box // Create an edit box
nlverify (widget.CheckBox.Create ("Open...", BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id)); nlverify (widget.CheckBox.Create (_T("Open..."), BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id));
widget.CheckBox.SetFont (GetFont ()); widget.CheckBox.SetFont (GetFont ());
} }
} }
@ -452,12 +452,12 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
// Create an edit box // Create an edit box
if (widget.Parameter.DisplayHS) if (widget.Parameter.DisplayHS)
{ {
nlverify (widget.MultiLineEditBox.CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), "", nlverify (widget.MultiLineEditBox.CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), _T(""),
WS_VSCROLL|WS_HSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_AUTOVSCROLL|(enabled?0:ES_READONLY), widgetPos, &m_PropertyCont, id)); WS_VSCROLL|WS_HSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_AUTOVSCROLL|(enabled?0:ES_READONLY), widgetPos, &m_PropertyCont, id));
} }
else else
{ {
nlverify (widget.MultiLineEditBox.CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), "", nlverify (widget.MultiLineEditBox.CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), _T(""),
WS_VSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_AUTOVSCROLL|(enabled?0:ES_READONLY), widgetPos, &m_PropertyCont, id)); WS_VSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_AUTOVSCROLL|(enabled?0:ES_READONLY), widgetPos, &m_PropertyCont, id));
} }
@ -478,7 +478,7 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
RECT buttonRect = widgetPos; RECT buttonRect = widgetPos;
// Create an edit box // Create an edit box
nlverify (widget.CheckBox.Create ("Edit...", BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id)); nlverify (widget.CheckBox.Create (_T("Edit..."), BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id));
widget.CheckBox.SetFont (GetFont ()); widget.CheckBox.SetFont (GetFont ());
} }
} }
@ -488,7 +488,7 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
widgetPos.bottom = widgetPos.top + widget.Parameter.WidgetHeight; widgetPos.bottom = widgetPos.top + widget.Parameter.WidgetHeight;
// Create an edit box // Create an edit box
nlverify (widget.ListEditBox.CreateEx (WS_EX_CLIENTEDGE, _T("LISTBOX"), "", WS_VSCROLL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|LBS_NOTIFY|(enabled?0:WS_DISABLED), widgetPos, &m_PropertyCont, id)); nlverify (widget.ListEditBox.CreateEx (WS_EX_CLIENTEDGE, _T("LISTBOX"), _T(""), WS_VSCROLL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|LBS_NOTIFY|(enabled?0:WS_DISABLED), widgetPos, &m_PropertyCont, id));
// Resize the column // Resize the column
RECT listRect; RECT listRect;
@ -498,7 +498,7 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
widget.ListEditBox.StringSelectComboBox.ResetContent (); widget.ListEditBox.StringSelectComboBox.ResetContent ();
std::map<std::string, CPrimitiveClass::CParameter::CConstStringValue>::iterator ite = widget.Parameter.ComboValues.find (doc->getContext ().c_str()); std::map<std::string, CPrimitiveClass::CParameter::CConstStringValue>::iterator ite = widget.Parameter.ComboValues.find (doc->getContext ().c_str());
// we insert an empty string in case of a default value // we insert an empty string in case of a default value
widget.ListEditBox.StringSelectComboBox.InsertString( -1, ""); widget.ListEditBox.StringSelectComboBox.InsertString( -1, _T(""));
if (ite != widget.Parameter.ComboValues.end ()) if (ite != widget.Parameter.ComboValues.end ())
{ {
vector<string> PathList; vector<string> PathList;
@ -565,7 +565,7 @@ void CDialogProperties::addWidget (const CPrimitiveClass::CParameter &parameter,
// Create an edit box // Create an edit box
//nlverify (widget.CheckBox.Create ("Open...", BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP, buttonRect, this, id)); //nlverify (widget.CheckBox.Create ("Open...", BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP, buttonRect, this, id));
nlverify (widget.CheckBox.Create ("View...", BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id)); nlverify (widget.CheckBox.Create (_T("View..."), BS_PUSHBUTTON|WS_VISIBLE|WS_TABSTOP|(enabled?0:WS_DISABLED), buttonRect, &m_PropertyCont, id));
widget.CheckBox.SetFont (GetFont ()); widget.CheckBox.SetFont (GetFont ());
} }
@ -661,7 +661,7 @@ BOOL CDialogProperties::OnInitDialog()
// m_PropertyFrame.ClientToScreen(&contRect); // m_PropertyFrame.ClientToScreen(&contRect);
// leave 16 px for the scroll bar // leave 16 px for the scroll bar
contRect.right-=16; contRect.right-=16;
m_PropertyCont.Create("", 0, contRect, &m_PropertyFrame); m_PropertyCont.Create(_T(""), 0, contRect, &m_PropertyFrame);
// m_PropertyCont.SetCursor() // m_PropertyCont.SetCursor()
m_PropertyCont.ShowWindow(SW_SHOW); m_PropertyCont.ShowWindow(SW_SHOW);

View file

@ -3400,7 +3400,7 @@ void CDisplay::updateCursor ()
// Moved with middle click ? // Moved with middle click ?
case DragView: case DragView:
cursor = theApp.LoadCursor (MAKEINTRESOURCE(IDC_HAND)); cursor = theApp.LoadCursor (MAKEINTRESOURCE(IDC_HAND1));
break; break;
// Moved with left click ? // Moved with left click ?

View file

@ -163,20 +163,20 @@ int CALLBACK expBrowseCallbackProc (HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData)
bool CExportDlg::callChoosePathDlg(CString &dest) const bool CExportDlg::callChoosePathDlg(CString &dest) const
{ {
BROWSEINFO bi; BROWSEINFO bi;
char str[MAX_PATH]; TCHAR str[MAX_PATH];
ITEMIDLIST* pidl; ITEMIDLIST* pidl;
char sTemp[1024]; TCHAR sTemp[1024];
bi.hwndOwner = this->m_hWnd; bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL; bi.pidlRoot = NULL;
bi.pidlRoot = NULL; bi.pidlRoot = NULL;
bi.pszDisplayName = sTemp;; bi.pszDisplayName = sTemp;;
bi.lpszTitle = "Choose the path"; bi.lpszTitle = _T("Choose the path");
bi.ulFlags = 0; bi.ulFlags = 0;
bi.lpfn = expBrowseCallbackProc; bi.lpfn = expBrowseCallbackProc;
char sDir[512]; TCHAR sDir[512];
strcpy(sDir, (LPCSTR)RefZoneDir); _tcscpy(sDir, (LPCTSTR)RefZoneDir);
bi.lParam = (LPARAM)sDir; bi.lParam = (LPARAM)sDir;
bi.iImage = 0; bi.iImage = 0;
@ -218,7 +218,7 @@ void CExportDlg::OnButtonOutIGdir()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExportDlg::OnButtonTilebankfile() void CExportDlg::OnButtonTilebankfile()
{ {
CFileDialogEx dialog (BASE_REGISTRY_KEY, "bank", true, "smallbank", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "SmallBank (*.smallbank)|*.smallbank||", this); CFileDialogEx dialog (BASE_REGISTRY_KEY, _T("bank"), true, _T("smallbank"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("SmallBank (*.smallbank)|*.smallbank||"), this);
if (dialog.DoModal() == IDOK) if (dialog.DoModal() == IDOK)
{ {
TileBankFile = dialog.GetPathName (); TileBankFile = dialog.GetPathName ();
@ -229,7 +229,7 @@ void CExportDlg::OnButtonTilebankfile()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExportDlg::OnButtonColormapfile() void CExportDlg::OnButtonColormapfile()
{ {
CFileDialogEx dialog (BASE_REGISTRY_KEY, "image", true, "tga", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "Tga Files (*.tga)|*.tga|All Files (*.*)|*.*||", this); CFileDialogEx dialog (BASE_REGISTRY_KEY, _T("image"), true, _T("tga"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("Tga Files (*.tga)|*.tga|All Files (*.*)|*.*||"), this);
if (dialog.DoModal() == IDOK) if (dialog.DoModal() == IDOK)
{ {
ColorMapFile = dialog.GetPathName (); ColorMapFile = dialog.GetPathName ();
@ -240,7 +240,7 @@ void CExportDlg::OnButtonColormapfile()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExportDlg::OnButtonHeightmapfile() void CExportDlg::OnButtonHeightmapfile()
{ {
CFileDialogEx dialog (BASE_REGISTRY_KEY, "image", true, "tga", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "Grayscale Tga (*.tga)|*.tga||", this); CFileDialogEx dialog (BASE_REGISTRY_KEY, _T("image"), true, _T("tga"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("Grayscale Tga (*.tga)|*.tga||"), this);
if (dialog.DoModal() == IDOK) if (dialog.DoModal() == IDOK)
{ {
HeightMapFile = dialog.GetPathName (); HeightMapFile = dialog.GetPathName ();
@ -251,7 +251,7 @@ void CExportDlg::OnButtonHeightmapfile()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExportDlg::OnButtonHeightmapfile2() void CExportDlg::OnButtonHeightmapfile2()
{ {
CFileDialogEx dialog (BASE_REGISTRY_KEY, "image", true, "tga", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "Grayscale Tga (*.tga)|*.tga||", this); CFileDialogEx dialog (BASE_REGISTRY_KEY, _T("image"), true, _T("tga"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("Grayscale Tga (*.tga)|*.tga||"), this);
if (dialog.DoModal() == IDOK) if (dialog.DoModal() == IDOK)
{ {
HeightMapFile2 = dialog.GetPathName (); HeightMapFile2 = dialog.GetPathName ();
@ -299,7 +299,7 @@ void CExportDlg::OnButtonContinentsDir()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExportDlg::OnButtonContinentFile() void CExportDlg::OnButtonContinentFile()
{ {
CFileDialogEx dialog (BASE_REGISTRY_KEY, "continent", true, "continent", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "Continent file (*.continent)|*.continent||", this); CFileDialogEx dialog (BASE_REGISTRY_KEY, _T("continent"), true, _T("continent"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("Continent file (*.continent)|*.continent||"), this);
if (dialog.DoModal() == IDOK) if (dialog.DoModal() == IDOK)
{ {
ContinentFile = dialog.GetPathName (); ContinentFile = dialog.GetPathName ();

View file

@ -37,9 +37,9 @@ CFileDialogEx::CFileDialogEx(LPCTSTR lpszRegistryPath, LPCTSTR lpszFileType,BOOL
LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{ {
_RegistryPath = lpszRegistryPath; _RegistryPath = tStrToUtf8(lpszRegistryPath);
_RegistryPath += "\\CFileDialogEx"; _RegistryPath += "\\CFileDialogEx";
_FileType = lpszFileType; _FileType = tStrToUtf8(lpszFileType);
} }
// *************************************************************************** // ***************************************************************************
@ -54,14 +54,14 @@ END_MESSAGE_MAP()
INT_PTR CFileDialogEx::DoModal () INT_PTR CFileDialogEx::DoModal ()
{ {
// Get the path // Get the path
char path[512]; TCHAR path[512];
path[0] = 0; path[0] = 0;
HKEY hKey; HKEY hKey;
DWORD type = REG_SZ; DWORD type = REG_SZ;
DWORD size = 512; DWORD size = 512 * sizeof(TCHAR);
if (RegCreateKey (HKEY_CURRENT_USER, _RegistryPath.c_str (), &hKey) == ERROR_SUCCESS) if (RegCreateKey (HKEY_CURRENT_USER, utf8ToTStr(_RegistryPath), &hKey) == ERROR_SUCCESS)
{ {
if (RegQueryValueEx (hKey, _FileType.c_str (), 0, &type, (LPBYTE)path, &size) == ERROR_SUCCESS) if (RegQueryValueEx (hKey, utf8ToTStr(_FileType), 0, &type, (LPBYTE)path, &size) == ERROR_SUCCESS)
m_ofn.lpstrInitialDir = path; m_ofn.lpstrInitialDir = path;
} }
@ -73,9 +73,9 @@ INT_PTR CFileDialogEx::DoModal ()
if ((result = CFileDialog::DoModal ()) == IDOK) if ((result = CFileDialog::DoModal ()) == IDOK)
{ {
// Update the path // Update the path
std::string newPath = (const char *)GetPathName (); std::string newPath = tStrToUtf8(GetPathName ());
newPath = NLMISC::CFile::getPath (newPath); newPath = NLMISC::CFile::getPath (newPath);
RegSetValueEx (hKey, _FileType.c_str (), 0, REG_SZ, (LPBYTE)newPath.c_str (), newPath.size ()+1); RegSetValueEx (hKey, utf8ToTStr(_FileType), 0, REG_SZ, (LPBYTE)newPath.c_str (), newPath.size ()+1);
// Update the path list // Update the path list
set<string> oldPath; set<string> oldPath;
@ -83,15 +83,15 @@ INT_PTR CFileDialogEx::DoModal ()
for (i=0; i<PATH_REMEBERED_SIZE; i++) for (i=0; i<PATH_REMEBERED_SIZE; i++)
{ {
size = 512; size = 512;
if (RegQueryValueEx (hKey, toString (i).c_str (), 0, &type, (LPBYTE)path, &size) == ERROR_SUCCESS) if (RegQueryValueEx (hKey, utf8ToTStr(toString(i)), 0, &type, (LPBYTE)path, &size) == ERROR_SUCCESS)
oldPath.insert (path); oldPath.insert (tStrToUtf8(path));
} }
oldPath.insert (newPath); oldPath.insert (newPath);
set<string>::const_iterator ite = oldPath.begin (); set<string>::const_iterator ite = oldPath.begin ();
uint index = 0; uint index = 0;
while (ite != oldPath.end ()) while (ite != oldPath.end ())
{ {
RegSetValueEx (hKey, toString (index).c_str (), 0, REG_SZ, (LPBYTE)ite->c_str (), ite->size ()+1); RegSetValueEx (hKey, utf8ToTStr(toString(index)), 0, REG_SZ, (LPBYTE)ite->c_str (), ite->size ()+1);
ite++; ite++;
index++; index++;
} }
@ -122,7 +122,7 @@ BOOL CFileDialogEx::OnCommand( WPARAM wParam, LPARAM lParam )
::GetDlgItemText (parent, edt1, s, MAX_PATH); ::GetDlgItemText (parent, edt1, s, MAX_PATH);
// Replace with the directory name // Replace with the directory name
::SendMessage (parent, CDM_SETCONTROLTEXT, edt1, (LPARAM)(const char*)text); ::SendMessage (parent, CDM_SETCONTROLTEXT, edt1, (LPARAM)(LPCTSTR)text);
// Click on the OK button // Click on the OK button
::SendMessage (parent, WM_COMMAND, IDOK, 0); ::SendMessage (parent, WM_COMMAND, IDOK, 0);
@ -148,18 +148,18 @@ BOOL CFileDialogEx::OnInitDialog()
combo.Attach (::GetDlgItem (*this, IDC_DIRLIST)); combo.Attach (::GetDlgItem (*this, IDC_DIRLIST));
// Insert the strings // Insert the strings
char text[512]; TCHAR text[512];
text[0] = 0; text[0] = 0;
HKEY hKey; HKEY hKey;
DWORD type = REG_SZ; DWORD type = REG_SZ;
DWORD size; DWORD size;
if (RegCreateKey (HKEY_CURRENT_USER, _RegistryPath.c_str (), &hKey) == ERROR_SUCCESS) if (RegCreateKey (HKEY_CURRENT_USER, utf8ToTStr(_RegistryPath), &hKey) == ERROR_SUCCESS)
{ {
uint i; uint i;
for (i=0; i<PATH_REMEBERED_SIZE; i++) for (i=0; i<PATH_REMEBERED_SIZE; i++)
{ {
size = 512; size = 512 * sizeof(TCHAR);
if (RegQueryValueEx (hKey, toString (i).c_str (), 0, &type, (LPBYTE)text, &size) == ERROR_SUCCESS) if (RegQueryValueEx (hKey, utf8ToTStr(toString(i)), 0, &type, (LPBYTE)text, &size) == ERROR_SUCCESS)
combo.InsertString (-1, text); combo.InsertString (-1, text);
} }
if (m_ofn.lpstrInitialDir) if (m_ofn.lpstrInitialDir)

View file

@ -175,7 +175,7 @@ void CFindPrimitiveDlg::OnFindNext()
} }
else else
{ {
MessageBox ("End of the document", "Find a primitive...", MB_OK|MB_ICONEXCLAMATION); MessageBox (_T("End of the document"), _T("Find a primitive..."), MB_OK|MB_ICONEXCLAMATION);
// Init locator // Init locator
_Locator.getRoot (0); _Locator.getRoot (0);

View file

@ -103,10 +103,8 @@ void CImageListEx::addResourceIcon (const char *filename)
index = ImageList.Replace( index, handle); index = ImageList.Replace( index, handle);
// Add in the map // Add in the map
char name[MAX_PATH]; std::string name = toLower(NLMISC::CFile::getFilenameWithoutExtension(filename));
_splitpath (filename, NULL, NULL, name, NULL); _IconMapString.insert (std::map<string, int>::value_type (name, index));
string llwr = strlwr (string (name));
_IconMapString.insert (std::map<string, int>::value_type (llwr, index));
// Release the icon // Release the icon
DestroyIcon (handle); DestroyIcon (handle);
@ -131,10 +129,8 @@ int CImageListEx::getImage (int resource) const
int CImageListEx::getImage (const char *filename) const int CImageListEx::getImage (const char *filename) const
{ {
char name[MAX_PATH]; std::string name = toLower(NLMISC::CFile::getFilenameWithoutExtension(filename));
_splitpath (filename, NULL, NULL, name, NULL); std::map<string, int>::const_iterator ite = _IconMapString.find (name);
string llwr = strlwr (string (name));
std::map<string, int>::const_iterator ite = _IconMapString.find (llwr);
if (ite == _IconMapString.end()) if (ite == _IconMapString.end())
return -1; return -1;
else else

View file

@ -248,8 +248,8 @@ void CNameDlg::OnBtnAssign()
// get strings // get strings
ucstring id; ucstring id;
std::string gn = m_assignGn; std::string gn = tStrToUtf8(m_assignGn);
std::string ig = m_assignIg; std::string ig = tStrToUtf8(m_assignIg);
for (uint i=0 ; i<sel.size() ; i++) for (uint i=0 ; i<sel.size() ; i++)
{ {
@ -265,7 +265,7 @@ void CNameDlg::OnBtnAssign()
uint n = m_idList.GetTextLen(i); uint n = m_idList.GetTextLen(i);
m_idList.GetText(i, str.GetBuffer(n)); m_idList.GetText(i, str.GetBuffer(n));
str.ReleaseBuffer(); str.ReleaseBuffer();
id = str; id.fromUtf8(tStrToUtf8(str));
} }
// assign name to selected id // assign name to selected id

View file

@ -65,7 +65,7 @@
#define IDI_LINE_HIDE 149 #define IDI_LINE_HIDE 149
#define IDC_INSERT_POINT 149 #define IDC_INSERT_POINT 149
#define IDI_ZONE_HIDE 150 #define IDI_ZONE_HIDE 150
#define IDC_HAND 150 #define IDC_HAND1 150
#define IDI_ZONE 151 #define IDI_ZONE 151
#define IDI_ZONE_OPENED 151 #define IDI_ZONE_OPENED 151
#define IDD_LOADING 152 #define IDD_LOADING 152

View file

@ -36,7 +36,7 @@
#include "nel/ligo/ligo_config.h" #include "nel/ligo/ligo_config.h"
// Base registry key // Base registry key
#define BASE_REGISTRY_KEY "Software\\Nevrax\\NeL World Editor" #define BASE_REGISTRY_KEY _T("Software\\Nevrax\\NeL World Editor")
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// CWorldEditorApp: // CWorldEditorApp:

View file

@ -934,7 +934,7 @@ IDC_COPY CURSOR DISCARDABLE "res\\copy.cur"
IDC_SELECT CURSOR DISCARDABLE "res\\select.cur" IDC_SELECT CURSOR DISCARDABLE "res\\select.cur"
IDC_SELECT_COPY CURSOR DISCARDABLE "res\\select_copy.cur" IDC_SELECT_COPY CURSOR DISCARDABLE "res\\select_copy.cur"
IDC_INSERT_POINT CURSOR DISCARDABLE "res\\insert_point.cur" IDC_INSERT_POINT CURSOR DISCARDABLE "res\\insert_point.cur"
IDC_HAND CURSOR DISCARDABLE "res\\hand.cur" IDC_HAND1 CURSOR DISCARDABLE "res\\hand.cur"
IDC_ZOOM CURSOR DISCARDABLE "res\\zoom.cur" IDC_ZOOM CURSOR DISCARDABLE "res\\zoom.cur"
IDC_RADIUS CURSOR DISCARDABLE "res\\radius.cur" IDC_RADIUS CURSOR DISCARDABLE "res\\radius.cur"

View file

@ -353,7 +353,7 @@ void CPlugin::postRender(CDisplay &display)
// TODO nico This code is duplicated with world_editor_shard_monitor // TODO nico This code is duplicated with world_editor_shard_monitor
static bool createFailed = false; static bool createFailed = false;
if (createFailed) return; if (createFailed) return;
HRSRC rsc = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_FLAG_ICONS_TGA), "TGA"); HRSRC rsc = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_FLAG_ICONS_TGA), _T("TGA"));
if (rsc == NULL) if (rsc == NULL)
{ {
DWORD lastError = GetLastError(); DWORD lastError = GetLastError();

View file

@ -172,7 +172,7 @@ void CGraphPlugin::refreshPrimitives()
{ {
string msg("Can't write script file '"); string msg("Can't write script file '");
msg += tmpPath+"/lang.dot'"; msg += tmpPath+"/lang.dot'";
AfxMessageBox(msg.c_str()); AfxMessageBox(utf8ToTStr(msg));
} }
else else
{ {
@ -186,7 +186,7 @@ void CGraphPlugin::refreshPrimitives()
//currently using output.png as the input file... //currently using output.png as the input file...
if(!createBitmap(tmpPath)) if(!createBitmap(tmpPath))
AfxMessageBox("BEWARE: the image couldn't be loaded."); AfxMessageBox(_T("BEWARE: the image couldn't be loaded."));
} }
while (missionTreeRoot->getParent()!=NULL) while (missionTreeRoot->getParent()!=NULL)
@ -207,11 +207,11 @@ void CGraphPlugin::refreshPrimitives()
err = toString("%s : %s", primName.c_str(), e.Why.c_str()); err = toString("%s : %s", primName.c_str(), e.Why.c_str());
} }
AfxMessageBox(err.c_str()); AfxMessageBox(utf8ToTStr(err));
} }
catch (const exception &e) //catch a possible exception from getRootFileName catch (const exception &e) //catch a possible exception from getRootFileName
{ {
AfxMessageBox(e.what()); AfxMessageBox(utf8ToTStr(e.what()));
} }
} }
else else
@ -254,7 +254,7 @@ void CGraphPlugin::refreshMachine()
{ {
string msg("Can't write script file '"); string msg("Can't write script file '");
msg += tmpPath+"/lang.dot'"; msg += tmpPath+"/lang.dot'";
AfxMessageBox(msg.c_str()); AfxMessageBox(utf8ToTStr(msg));
} }
else else
{ {
@ -268,7 +268,7 @@ void CGraphPlugin::refreshMachine()
//currently using output.png as the input file... //currently using output.png as the input file...
if(!createBitmap(tmpPath)) if(!createBitmap(tmpPath))
AfxMessageBox("BEWARE: the image couldn't be loaded."); AfxMessageBox(_T("BEWARE: the image couldn't be loaded."));
} }
while (missionTreeRoot->getParent()!=NULL) while (missionTreeRoot->getParent()!=NULL)
@ -298,7 +298,7 @@ void CGraphPlugin::refreshMachine()
{ {
string msg("Can't write script file '"); string msg("Can't write script file '");
msg += tmpPath+"/lang.dot'"; msg += tmpPath+"/lang.dot'";
AfxMessageBox(msg.c_str()); AfxMessageBox(utf8ToTStr(msg));
} }
else else
{ {
@ -312,8 +312,8 @@ void CGraphPlugin::refreshMachine()
//currently using output.png as the input file... //currently using output.png as the input file...
if(!createBitmap(tmpPath)) if(!createBitmap(tmpPath))
AfxMessageBox("BEWARE: the image couldn't be loaded."); AfxMessageBox(_T("BEWARE: the image couldn't be loaded."));
} }
while (missionTreeRoot->getParent()!=NULL) while (missionTreeRoot->getParent()!=NULL)
{ {
@ -323,7 +323,7 @@ void CGraphPlugin::refreshMachine()
} }
else else
{ {
AfxMessageBox("The selected node could not be processed."); AfxMessageBox(_T("The selected node could not be processed."));
} }
} }
@ -938,9 +938,10 @@ void CGraphPlugin::doSelection(const string& primPath)
selectPrimByPath(rootNode,primPath,resSet); selectPrimByPath(rootNode,primPath,resSet);
_PluginAccess->setCurrentSelection(resSet); _PluginAccess->setCurrentSelection(resSet);
}
}catch(const exception &e){ catch(const exception &e)
GraphDlg->MessageBox(e.what()); {
GraphDlg->MessageBox(utf8ToTStr(e.what()));
} }
} }
} }

View file

@ -73,18 +73,18 @@ CDialogFlags::CDialogFlags(CWnd* pParent /*=NULL*/)
{ {
CEntityDisplayInfo di[] = CEntityDisplayInfo di[] =
{ {
CEntityDisplayInfo(RYZOMID::building, "Building", NLMISC::CRGBA(192, 0, 0)), CEntityDisplayInfo(RYZOMID::building, _T("Building"), NLMISC::CRGBA(192, 0, 0)),
CEntityDisplayInfo(RYZOMID::creature, "Creature", NLMISC::CRGBA(255, 127, 0), 2, 0), CEntityDisplayInfo(RYZOMID::creature, _T("Creature"), NLMISC::CRGBA(255, 127, 0), 2, 0),
CEntityDisplayInfo(RYZOMID::deposit, "Deposit", NLMISC::CRGBA(0, 255, 0)), CEntityDisplayInfo(RYZOMID::deposit, _T("Deposit"), NLMISC::CRGBA(0, 255, 0)),
CEntityDisplayInfo(RYZOMID::flora, "Flora", NLMISC::CRGBA(255, 127, 0)), CEntityDisplayInfo(RYZOMID::flora, _T("Flora"), NLMISC::CRGBA(255, 127, 0)),
CEntityDisplayInfo(RYZOMID::forageSource, "Forage Source", NLMISC::CRGBA(0, 255, 0)), CEntityDisplayInfo(RYZOMID::forageSource, _T("Forage Source"), NLMISC::CRGBA(0, 255, 0)),
CEntityDisplayInfo(RYZOMID::mount, "Mount", NLMISC::CRGBA(127, 63, 0), 3, 0), CEntityDisplayInfo(RYZOMID::mount, _T("Mount"), NLMISC::CRGBA(127, 63, 0), 3, 0),
CEntityDisplayInfo(RYZOMID::npc, "NPC", NLMISC::CRGBA(255, 0, 0), 1, 0), CEntityDisplayInfo(RYZOMID::npc, _T("NPC"), NLMISC::CRGBA(255, 0, 0), 1, 0),
CEntityDisplayInfo(RYZOMID::object, "Object", NLMISC::CRGBA(192, 255, 255)), CEntityDisplayInfo(RYZOMID::object, _T("Object"), NLMISC::CRGBA(192, 255, 255)),
CEntityDisplayInfo(RYZOMID::pack_animal, "Pack Animal", NLMISC::CRGBA(127, 63, 0), 3, 0), CEntityDisplayInfo(RYZOMID::pack_animal, _T("Pack Animal"), NLMISC::CRGBA(127, 63, 0), 3, 0),
CEntityDisplayInfo(RYZOMID::player, "Player", NLMISC::CRGBA(127, 127, 255), 0, 0), CEntityDisplayInfo(RYZOMID::player, _T("Player"), NLMISC::CRGBA(127, 127, 255), 0, 0),
CEntityDisplayInfo(RYZOMID::fx_entity, "FX Entity", NLMISC::CRGBA(0, 255, 0)), CEntityDisplayInfo(RYZOMID::fx_entity, _T("FX Entity"), NLMISC::CRGBA(0, 255, 0)),
CEntityDisplayInfo(RYZOMID::unknown, "Unknown", NLMISC::CRGBA(127, 127, 127)), CEntityDisplayInfo(RYZOMID::unknown, _T("Unknown"), NLMISC::CRGBA(127, 127, 127)),
}; };
initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityType]); initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityType]);
} }
@ -92,10 +92,10 @@ CDialogFlags::CDialogFlags(CWnd* pParent /*=NULL*/)
{ {
CEntityDisplayInfo di[] = CEntityDisplayInfo di[] =
{ {
CEntityDisplayInfo(0, "Dead", NLMISC::CRGBA(255, 0, 0)), CEntityDisplayInfo(0, _T("Dead"), NLMISC::CRGBA(255, 0, 0)),
CEntityDisplayInfo(1, "Weak", NLMISC::CRGBA(255, 255, 0)), CEntityDisplayInfo(1, _T("Weak"), NLMISC::CRGBA(255, 255, 0)),
CEntityDisplayInfo(2, "Full shape", NLMISC::CRGBA(0, 255, 0)), CEntityDisplayInfo(2, _T("Full shape"), NLMISC::CRGBA(0, 255, 0)),
CEntityDisplayInfo(3, "No Hit Points", NLMISC::CRGBA(127, 127, 127)), CEntityDisplayInfo(3, _T("No Hit Points"), NLMISC::CRGBA(127, 127, 127)),
}; };
initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityHitPoints]); initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityHitPoints]);
} }
@ -103,9 +103,9 @@ CDialogFlags::CDialogFlags(CWnd* pParent /*=NULL*/)
{ {
CEntityDisplayInfo di[] = CEntityDisplayInfo di[] =
{ {
CEntityDisplayInfo(0, "Dead", NLMISC::CRGBA(255, 0, 0)), CEntityDisplayInfo(0, _T("Dead"), NLMISC::CRGBA(255, 0, 0)),
CEntityDisplayInfo(1, "Alive", NLMISC::CRGBA(0, 0, 255)), CEntityDisplayInfo(1, _T("Alive"), NLMISC::CRGBA(0, 0, 255)),
CEntityDisplayInfo(2, "No Hit Points", NLMISC::CRGBA(127, 127, 127)), CEntityDisplayInfo(2, _T("No Hit Points"), NLMISC::CRGBA(127, 127, 127)),
}; };
initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityAlive]); initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityAlive]);
} }
@ -113,19 +113,19 @@ CDialogFlags::CDialogFlags(CWnd* pParent /*=NULL*/)
{ {
CEntityDisplayInfo di[] = CEntityDisplayInfo di[] =
{ {
CEntityDisplayInfo(MBEHAV::UNKNOWN_MODE, "Unknown", NLMISC::CRGBA(127, 127, 127)), CEntityDisplayInfo(MBEHAV::UNKNOWN_MODE, _T("Unknown"), NLMISC::CRGBA(127, 127, 127)),
CEntityDisplayInfo(MBEHAV::NORMAL, "Normal", NLMISC::CRGBA(255, 255, 255)), CEntityDisplayInfo(MBEHAV::NORMAL, _T("Normal"), NLMISC::CRGBA(255, 255, 255)),
CEntityDisplayInfo(MBEHAV::COMBAT_FLOAT, "Combat float", NLMISC::CRGBA(255, 0, 0), 0, 1), CEntityDisplayInfo(MBEHAV::COMBAT_FLOAT, _T("Combat float"), NLMISC::CRGBA(255, 0, 0), 0, 1),
CEntityDisplayInfo(MBEHAV::COMBAT, "Combat", NLMISC::CRGBA(255, 0, 0), 0, 1), CEntityDisplayInfo(MBEHAV::COMBAT, _T("Combat"), NLMISC::CRGBA(255, 0, 0), 0, 1),
CEntityDisplayInfo(MBEHAV::SWIM, "Swim", NLMISC::CRGBA(0, 0, 255)), CEntityDisplayInfo(MBEHAV::SWIM, _T("Swim"), NLMISC::CRGBA(0, 0, 255)),
CEntityDisplayInfo(MBEHAV::SIT, "Sit", NLMISC::CRGBA(0, 255, 255)), CEntityDisplayInfo(MBEHAV::SIT, _T("Sit"), NLMISC::CRGBA(0, 255, 255)),
CEntityDisplayInfo(MBEHAV::MOUNT_NORMAL, "Mount Normal", NLMISC::CRGBA(192, 128, 0)), CEntityDisplayInfo(MBEHAV::MOUNT_NORMAL, _T("Mount Normal"), NLMISC::CRGBA(192, 128, 0)),
CEntityDisplayInfo(MBEHAV::MOUNT_SWIM, "Mount Swim", NLMISC::CRGBA(0, 0, 255)), CEntityDisplayInfo(MBEHAV::MOUNT_SWIM, _T("Mount Swim"), NLMISC::CRGBA(0, 0, 255)),
CEntityDisplayInfo(MBEHAV::EAT, "Eat", NLMISC::CRGBA(0, 255, 0)), CEntityDisplayInfo(MBEHAV::EAT, _T("Eat"), NLMISC::CRGBA(0, 255, 0)),
CEntityDisplayInfo(MBEHAV::ALERT, "Alert", NLMISC::CRGBA(255, 127, 0)), CEntityDisplayInfo(MBEHAV::ALERT, _T("Alert"), NLMISC::CRGBA(255, 127, 0)),
CEntityDisplayInfo(MBEHAV::HUNGRY, "Hungry", NLMISC::CRGBA(255, 255, 0)), CEntityDisplayInfo(MBEHAV::HUNGRY, _T("Hungry"), NLMISC::CRGBA(255, 255, 0)),
CEntityDisplayInfo(MBEHAV::DEATH, "Death", NLMISC::CRGBA(0, 0, 0)), CEntityDisplayInfo(MBEHAV::DEATH, _T("Death"), NLMISC::CRGBA(0, 0, 0)),
CEntityDisplayInfo(MBEHAV::SWIM_DEATH, "SwimDeath", NLMISC::CRGBA(0, 0, 0)) CEntityDisplayInfo(MBEHAV::SWIM_DEATH, _T("SwimDeath"), NLMISC::CRGBA(0, 0, 0))
}; };
initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityMode]); initDisplayInfo(di, sizeofarray(di), _EntityDisplayInfo[EntityMode]);
} }
@ -213,7 +213,7 @@ BOOL CDialogFlags::OnInitDialog()
{ {
CDialog::OnInitDialog(); CDialog::OnInitDialog();
HRSRC rsc = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ENTITY_ICONS_TGA), "TGA"); HRSRC rsc = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ENTITY_ICONS_TGA), _T("TGA"));
if (rsc != NULL) if (rsc != NULL)
{ {
NLMISC::CBitmap bm; NLMISC::CBitmap bm;
@ -247,7 +247,7 @@ BOOL CDialogFlags::OnInitDialog()
::CRect shardListRect; ::CRect shardListRect;
GetDlgItem(IDC_SHARD_LIST_PLACEMENT)->GetWindowRect(shardListRect); GetDlgItem(IDC_SHARD_LIST_PLACEMENT)->GetWindowRect(shardListRect);
ScreenToClient(&shardListRect); ScreenToClient(&shardListRect);
ShardCtrl.create(WS_CHILD|WS_TABSTOP, shardListRect, this, 0, REGKEY_BASE_PATH "\\shard_list", 10); ShardCtrl.create(WS_CHILD|WS_TABSTOP, shardListRect, this, 0, REGKEY_BASE_PATH _T("\\shard_list"), 10);
ShardCtrl.ShowWindow (SW_SHOW); ShardCtrl.ShowWindow (SW_SHOW);
CFont* font = GetFont (); CFont* font = GetFont ();
ShardCtrl.SetFont(font); ShardCtrl.SetFont(font);
@ -295,24 +295,24 @@ void CDialogFlags::setCurrentEntityDisplayMode(TEntityDisplayMode edm)
#define REGKEY_ENTITY_DISPLAY_INFO REGKEY_BASE_PATH "\\entity_display_info\\" #define REGKEY_ENTITY_DISPLAY_INFO REGKEY_BASE_PATH _T("\\entity_display_info\\")
//****************************************************************************************************** //******************************************************************************************************
void CDialogFlags::loadEntityDisplayInfoToRegistry(TEntityDisplayInfoVect &infos, const std::string &regId) void CDialogFlags::loadEntityDisplayInfoToRegistry(TEntityDisplayInfoVect &infos, const std::string &regId)
{ {
HKEY hKey; HKEY hKey;
if (RegOpenKeyEx(HKEY_CURRENT_USER, (REGKEY_ENTITY_DISPLAY_INFO + regId).c_str(), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) if (RegOpenKeyEx(HKEY_CURRENT_USER, utf8ToTStr(tStrToUtf8(REGKEY_ENTITY_DISPLAY_INFO) + regId), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{ {
DWORD index = 0; DWORD index = 0;
for(;;) for(;;)
{ {
char valueStr[256] = { 0 }; TCHAR valueStr[256] = { 0 };
BYTE dataStr[256] = { 0 }; BYTE dataStr[256] = { 0 };
DWORD valueSize = sizeofarray(valueStr); DWORD valueSize = sizeofarray(valueStr);
DWORD dataSize = sizeofarray(dataStr); DWORD dataSize = sizeofarray(dataStr);
LONG result = RegEnumValue(hKey, index, valueStr, &valueSize, NULL, NULL, dataStr, &dataSize); LONG result = RegEnumValue(hKey, index, valueStr, &valueSize, NULL, NULL, dataStr, &dataSize);
if (result != ERROR_SUCCESS) break; if (result != ERROR_SUCCESS) break;
uint value = (uint) atoi(valueStr); uint value = (uint) _ttoi(valueStr);
for(uint k = 0; k < infos.size(); ++k) for(uint k = 0; k < infos.size(); ++k)
{ {
if (infos[k].Value == value) if (infos[k].Value == value)
@ -338,14 +338,14 @@ void CDialogFlags::loadEntityDisplayInfoToRegistry(TEntityDisplayInfoVect &infos
void CDialogFlags::saveEntityDisplayInfoToRegistry(const TEntityDisplayInfoVect &infos, const std::string &regId) void CDialogFlags::saveEntityDisplayInfoToRegistry(const TEntityDisplayInfoVect &infos, const std::string &regId)
{ {
HKEY hKey; HKEY hKey;
if (RegCreateKeyEx(HKEY_CURRENT_USER, (REGKEY_ENTITY_DISPLAY_INFO + regId).c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) if (RegCreateKeyEx(HKEY_CURRENT_USER, utf8ToTStr(tStrToUtf8(REGKEY_ENTITY_DISPLAY_INFO) + regId), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
{ {
for(uint k = 0; k < infos.size(); ++k) for(uint k = 0; k < infos.size(); ++k)
{ {
char colorStr[128]; char colorStr[128];
CRGBA color = infos[k].Color; CRGBA color = infos[k].Color;
sprintf(colorStr, "%d, %d, %d, visible = %d", (int) color.R, (int) color.G, (int) color.B, (int) (infos[k].Visible ? 1 : 0)); sprintf(colorStr, "%d, %d, %d, visible = %d", (int) color.R, (int) color.G, (int) color.B, (int) (infos[k].Visible ? 1 : 0));
LONG result = RegSetValueEx(hKey, toString((int) infos[k].Value).c_str(), 0, REG_SZ, (const BYTE *) colorStr, strlen(colorStr)); LONG result = RegSetValueEx(hKey, utf8ToTStr(toString(infos[k].Value)), 0, REG_SZ, (const BYTE *) colorStr, strlen(colorStr));
if (result != ERROR_SUCCESS) if (result != ERROR_SUCCESS)
{ {
nlwarning("Couldn't write registry key for entity % color", infos[k].Name); nlwarning("Couldn't write registry key for entity % color", infos[k].Name);

Some files were not shown because too many files have changed in this diff Show more