wxFindFirst/NextFile() now return wxString and not "char *", wxGetCwd() added

(to be used instead of wxGetWorkingDirectory)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-02-09 17:04:29 +00:00
parent 30b21f9a04
commit 7af89395ba
4 changed files with 342 additions and 310 deletions

View File

@@ -6,7 +6,7 @@
// Created: 29/01/98
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Licence: wxWindows license
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
@@ -97,7 +97,7 @@ public:
// public variable pointing to the next element in a linked list (or NULL)
wxMsgCatalog *m_pNext;
private:
// this implementation is binary compatible with GNU gettext() version 0.10
@@ -118,11 +118,11 @@ private:
ofsTransTable; // +10: start of translated string table
size_t32 nHashSize, // +14: hash table size
ofsHashTable; // +18: offset of hash table start
};
};
// all data is stored here, NULL if no data loaded
size_t8 *m_pData;
// data description
size_t32 m_numStrings, // number of strings in this domain
m_nHashSize; // number of entries in hash table
@@ -187,21 +187,21 @@ size_t32 wxMsgCatalog::GetHash(const char *sz)
// swap the 2 halves of 32 bit integer if needed
size_t32 wxMsgCatalog::Swap(size_t32 ui) const
{
return m_bSwapped ? (ui << 24) | ((ui & 0xff00) << 8) |
return m_bSwapped ? (ui << 24) | ((ui & 0xff00) << 8) |
((ui >> 8) & 0xff00) | (ui >> 24)
: ui;
}
wxMsgCatalog::wxMsgCatalog()
{
wxMsgCatalog::wxMsgCatalog()
{
m_pData = NULL;
m_pszName = NULL;
}
wxMsgCatalog::~wxMsgCatalog()
{
wxDELETEA(m_pData);
wxDELETEA(m_pszName);
wxMsgCatalog::~wxMsgCatalog()
{
wxDELETEA(m_pData);
wxDELETEA(m_pszName);
}
// small class to suppress the translation erros until exit from current scope
@@ -211,7 +211,7 @@ public:
NoTransErr() { wxSuppressTransErrors(); }
~NoTransErr() { wxRestoreTransErrors(); }
};
// return all directories to search for given prefix
static wxString GetAllMsgCatalogSubdirs(const char *prefix,
const char *lang)
@@ -220,10 +220,10 @@ static wxString GetAllMsgCatalogSubdirs(const char *prefix,
// search first in prefix/fr/LC_MESSAGES, then in prefix/fr and finally in
// prefix (assuming the language is 'fr')
searchPath << prefix << FILE_SEP_PATH << lang << FILE_SEP_PATH
<< "LC_MESSAGES" << PATH_SEP
<< prefix << FILE_SEP_PATH << lang << PATH_SEP
<< prefix << PATH_SEP;
searchPath << prefix << wxFILE_SEP_PATH << lang << wxFILE_SEP_PATH
<< "LC_MESSAGES" << wxPATH_SEP
<< prefix << wxFILE_SEP_PATH << lang << wxPATH_SEP
<< prefix << wxPATH_SEP;
return searchPath;
}
@@ -238,17 +238,17 @@ static wxString GetFullSearchPath(const char *lang)
for ( size_t n = 0; n < count; n++ )
{
searchPath << GetAllMsgCatalogSubdirs(s_searchPrefixes[n], lang)
<< PATH_SEP;
<< wxPATH_SEP;
}
// then take the current directory
// FIXME it should be the directory of the executable
searchPath << GetAllMsgCatalogSubdirs(".", lang) << PATH_SEP;
searchPath << GetAllMsgCatalogSubdirs(".", lang) << wxPATH_SEP;
// and finally add some standard ones
searchPath
<< GetAllMsgCatalogSubdirs("/usr/share/locale", lang) << PATH_SEP
<< GetAllMsgCatalogSubdirs("/usr/lib/locale", lang) << PATH_SEP
<< GetAllMsgCatalogSubdirs("/usr/share/locale", lang) << wxPATH_SEP
<< GetAllMsgCatalogSubdirs("/usr/lib/locale", lang) << wxPATH_SEP
<< GetAllMsgCatalogSubdirs("/usr/local/share/locale", lang);
return searchPath;
@@ -263,7 +263,7 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName)
if ( pszLcPath != NULL )
strPath += pszLcPath + wxString(szDirPrefix) + MSG_PATH;
#endif // 0
wxString searchPath = GetFullSearchPath(szDirPrefix);
const char *sublocale = strchr(szDirPrefix, '_');
if ( sublocale )
@@ -273,9 +273,9 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName)
// exist
searchPath << GetFullSearchPath(wxString(szDirPrefix).
Left((size_t)(sublocale - szDirPrefix)))
<< PATH_SEP;
<< wxPATH_SEP;
}
wxString strFile = szName;
strFile += MSGCATALOG_EXTENSION;
@@ -297,7 +297,7 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName)
// open file
wxLogVerbose(_("using catalog '%s' from '%s'."),
szName, strFullName.c_str());
wxFile fileMsg(strFullName);
if ( !fileMsg.IsOpened() )
return FALSE;
@@ -313,10 +313,10 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName)
wxDELETEA(m_pData);
return FALSE;
}
// examine header
bool bValid = (size_t)nSize > sizeof(wxMsgCatalogHeader);
wxMsgCatalogHeader *pHeader = (wxMsgCatalogHeader *)m_pData;
if ( bValid ) {
// we'll have to swap all the integers if it's true
@@ -325,20 +325,20 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName)
// check the magic number
bValid = m_bSwapped || pHeader->magic == MSGCATALOG_MAGIC;
}
if ( !bValid ) {
// it's either too short or has incorrect magic number
wxLogWarning(_("'%s' is not a valid message catalog."), strFullName.c_str());
wxDELETEA(m_pData);
return FALSE;
}
// initialize
m_numStrings = Swap(pHeader->numStrings);
m_pOrigTable = (wxMsgTableEntry *)(m_pData +
m_pOrigTable = (wxMsgTableEntry *)(m_pData +
Swap(pHeader->ofsOrigTable));
m_pTransTable = (wxMsgTableEntry *)(m_pData +
m_pTransTable = (wxMsgTableEntry *)(m_pData +
Swap(pHeader->ofsTransTable));
m_nHashSize = Swap(pHeader->nHashSize);
@@ -358,16 +358,16 @@ const char *wxMsgCatalog::GetString(const char *szOrig) const
return NULL;
if ( HasHashTable() ) { // use hash table for lookup if possible
size_t32 nHashVal = GetHash(szOrig);
size_t32 nHashVal = GetHash(szOrig);
size_t32 nIndex = nHashVal % m_nHashSize;
size_t32 nIncr = 1 + (nHashVal % (m_nHashSize - 2));
while ( TRUE ) {
size_t32 nStr = Swap(m_pHashTable[nIndex]);
if ( nStr == 0 )
return NULL;
if ( strcmp(szOrig, StringAtOfs(m_pOrigTable, nStr - 1)) == 0 )
return StringAtOfs(m_pTransTable, nStr - 1);
@@ -408,8 +408,8 @@ wxLocale::wxLocale()
}
// NB: this function has (desired) side effect of changing current locale
bool wxLocale::Init(const char *szName,
const char *szShort,
bool wxLocale::Init(const char *szName,
const char *szShort,
const char *szLocale,
bool bLoadDefault)
{
@@ -430,10 +430,10 @@ bool wxLocale::Init(const char *szName,
// this wild guess is surely wrong
m_strShort = wxToLower(szLocale[0]) + wxToLower(szLocale[1]);
}
// save the old locale to be able to restore it later
m_pOldLocale = wxSetLocale(this);
m_pOldLocale = wxSetLocale(this);
// load the default catalog with wxWindows standard messages
m_pMsgCat = NULL;
bool bOk = TRUE;
@@ -469,7 +469,7 @@ wxLocale::~wxLocale()
}
// get the translation of given string in current locale
const char *wxLocale::GetString(const char *szOrigString,
const char *wxLocale::GetString(const char *szOrigString,
const char *szDomain) const
{
wxASSERT( szOrigString != NULL ); // would be pretty silly
@@ -479,7 +479,7 @@ const char *wxLocale::GetString(const char *szOrigString,
wxMsgCatalog *pMsgCat;
if ( szDomain != NULL ) {
pMsgCat = FindCatalog(szDomain);
// does the catalog exist?
if ( pMsgCat != NULL )
pszTrans = pMsgCat->GetString(szOrigString);
@@ -505,7 +505,7 @@ const char *wxLocale::GetString(const char *szOrigString,
#else // !debug
wxSuppressTransErrors();
#endif // debug/!debug
if ( szDomain != NULL )
{
wxLogWarning(_("string '%s' not found in domain '%s' for locale '%s'."),
@@ -533,7 +533,7 @@ wxMsgCatalog *wxLocale::FindCatalog(const char *szDomain) const
if ( Stricmp(pMsgCat->GetName(), szDomain) == 0 )
return pMsgCat;
}
return NULL;
}
@@ -547,19 +547,19 @@ bool wxLocale::IsLoaded(const char *szDomain) const
bool wxLocale::AddCatalog(const char *szDomain)
{
wxMsgCatalog *pMsgCat = new wxMsgCatalog;
if ( pMsgCat->Load(m_strShort, szDomain) ) {
// add it to the head of the list so that in GetString it will
// be searched before the catalogs added earlier
pMsgCat->m_pNext = m_pMsgCat;
m_pMsgCat = pMsgCat;
return TRUE;
}
else {
// don't add it because it couldn't be loaded anyway
delete pMsgCat;
return FALSE;
}
}
@@ -596,12 +596,12 @@ wxLocale *g_pLocale = NULL;
wxLocale *wxGetLocale()
{
return g_pLocale;
return g_pLocale;
}
wxLocale *wxSetLocale(wxLocale *pLocale)
{
wxLocale *pOld = g_pLocale;
g_pLocale = pLocale;
return pOld;
wxLocale *pOld = g_pLocale;
g_pLocale = pLocale;
return pOld;
}