X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e146b8c8bf449e2264ac3edc6a0228585c619dd1..abe2606b703f615dbe96d2d7a54345c0b27b9843:/src/common/utilscmn.cpp?ds=sidebyside diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 52b8878187..1dffad113c 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -71,7 +71,7 @@ #define _MAXPATHLEN 500 -extern char *wxBuffer; +extern wxChar *wxBuffer; // ---------------------------------------------------------------------------- // private functions @@ -168,6 +168,12 @@ int strncasecmp(const char *str_1, const char *str_2, size_t maxchar) #endif #else + +#ifdef __EMX__ +#define strcasecmp stricmp +#define strncasecmp strnicmp +#endif + // This declaration is missing in SunOS! // (Yes, I know it is NOT ANSI-C but its in BSD libc) #if defined(__xlC) || defined(__AIX__) || defined(__GNUG__) @@ -180,14 +186,14 @@ extern "C" #endif /* __WXMSW__ */ -char * -copystring (const char *s) +wxChar * +copystring (const wxChar *s) { - if (s == NULL) s = ""; - size_t len = strlen (s) + 1; + if (s == NULL) s = _T(""); + size_t len = wxStrlen (s) + 1; - char *news = new char[len]; - memcpy (news, s, len); // Should be the fastest + wxChar *news = new wxChar[len]; + memcpy (news, s, len * sizeof(wxChar)); // Should be the fastest return news; } @@ -212,94 +218,93 @@ wxRegisterId (long id) } void -StringToFloat (char *s, float *number) +StringToFloat (wxChar *s, float *number) { if (s && *s && number) - *number = (float) strtod (s, (char **) NULL); + *number = (float) wxStrtod (s, (wxChar **) NULL); } void -StringToDouble (char *s, double *number) +StringToDouble (wxChar *s, double *number) { if (s && *s && number) - *number = strtod (s, (char **) NULL); + *number = wxStrtod (s, (wxChar **) NULL); } -char * -FloatToString (float number, const char *fmt) +wxChar * +FloatToString (float number, const wxChar *fmt) { - static char buf[256]; + static wxChar buf[256]; // sprintf (buf, "%.2f", number); - sprintf (buf, fmt, number); + wxSprintf (buf, fmt, number); return buf; } -char * -DoubleToString (double number, const char *fmt) +wxChar * +DoubleToString (double number, const wxChar *fmt) { - static char buf[256]; + static wxChar buf[256]; - sprintf (buf, fmt, number); + wxSprintf (buf, fmt, number); return buf; } void -StringToInt (char *s, int *number) +StringToInt (wxChar *s, int *number) { if (s && *s && number) - *number = (int) strtol (s, (char **) NULL, 10); + *number = (int) wxStrtol (s, (wxChar **) NULL, 10); } void -StringToLong (char *s, long *number) +StringToLong (wxChar *s, long *number) { if (s && *s && number) - *number = strtol (s, (char **) NULL, 10); + *number = wxStrtol (s, (wxChar **) NULL, 10); } -char * +wxChar * IntToString (int number) { - static char buf[20]; + static wxChar buf[20]; - sprintf (buf, "%d", number); + wxSprintf (buf, _T("%d"), number); return buf; } -char * +wxChar * LongToString (long number) { - static char buf[20]; + static wxChar buf[20]; - sprintf (buf, "%ld", number); + wxSprintf (buf, _T("%ld"), number); return buf; } // Array used in DecToHex conversion routine. -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; +static wxChar hexArray[] = _T("0123456789ABCDEF"); // Convert 2-digit hex number to decimal int wxHexToDec(const wxString& buf) { int firstDigit, secondDigit; - if (buf.GetChar(0) >= 'A') - firstDigit = buf.GetChar(0) - 'A' + 10; + if (buf.GetChar(0) >= _T('A')) + firstDigit = buf.GetChar(0) - _T('A') + 10; else - firstDigit = buf.GetChar(0) - '0'; + firstDigit = buf.GetChar(0) - _T('0'); - if (buf.GetChar(1) >= 'A') - secondDigit = buf.GetChar(1) - 'A' + 10; + if (buf.GetChar(1) >= _T('A')) + secondDigit = buf.GetChar(1) - _T('A') + 10; else - secondDigit = buf.GetChar(1) - '0'; + secondDigit = buf.GetChar(1) - _T('0'); return firstDigit * 16 + secondDigit; } // Convert decimal integer to 2-character hex string -void wxDecToHex(int dec, char *buf) +void wxDecToHex(int dec, wxChar *buf) { int firstDigit = (int)(dec/16.0); int secondDigit = (int)(dec - (firstDigit*16.0)); @@ -311,7 +316,7 @@ void wxDecToHex(int dec, char *buf) // Convert decimal integer to 2-character hex string wxString wxDecToHex(int dec) { - char buf[3]; + wxChar buf[3]; wxDecToHex(dec, buf); return wxString(buf); } @@ -356,6 +361,16 @@ StringMatch (char *str1, char *str2, bool subString, bool exact) return FALSE; } +// Don't synthesize KeyUp events holding down a key and producing +// KeyDown events with autorepeat. On by default and always on +// on in wxMSW. wxGTK version in utilsgtk.cpp. +#ifndef __WXGTK__ +bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) ) +{ + return TRUE; // detectable auto-repeat is the only mode MSW supports +} +#endif + // Return the current date/time // [volatile] wxString wxNow( void ) @@ -370,25 +385,25 @@ wxString wxNow( void ) * Strip out any menu codes */ -char *wxStripMenuCodes (char *in, char *out) +wxChar *wxStripMenuCodes (wxChar *in, wxChar *out) { if (!in) - return (char *) NULL; + return (wxChar *) NULL; if (!out) out = copystring(in); - char *tmpOut = out; + wxChar *tmpOut = out; while (*in) { - if (*in == '&') + if (*in == _T('&')) { // Check && -> &, &x -> x - if (*++in == '&') + if (*++in == _T('&')) *out++ = *in++; } - else if (*in == '\t') + else if (*in == _T('\t')) { // Remove all stuff after \t in X mode, and let the stuff as is // in Windows mode. @@ -400,15 +415,15 @@ char *wxStripMenuCodes (char *in, char *out) *out++ = *in++; } // while - *out = '\0'; + *out = _T('\0'); return tmpOut; } wxString wxStripMenuCodes(const wxString& str) { - char *buf = new char[str.Length() + 1]; - wxStripMenuCodes((char*) (const char*) str, buf); + wxChar *buf = new wxChar[str.Length() + 1]; + wxStripMenuCodes(WXSTRINGCAST str, buf); wxString str1(buf); delete[] buf; return str1; @@ -460,7 +475,7 @@ wxFindWindowByLabel1 (const wxString& title, wxWindow * parent) if (parent) { - for ( wxNode * node = parent->GetChildren().GetFirst(); + for ( wxWindowList::Node * node = parent->GetChildren().GetFirst(); node; node = node->GetNext() ) { @@ -734,28 +749,23 @@ whereami(name) } #endif - +void wxEnableTopLevelWindows(bool enable) +{ + wxWindowList::Node *node; + for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) + node->GetData()->Enable(enable); +} // Yield to other apps/messages and disable user input bool wxSafeYield(wxWindow *win) { - wxWindowList::Node *node; - for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) - { - node->GetData()->Enable(FALSE); - } - - // always enable ourselves - if ( win ) - win->Enable(TRUE); - bool rc = wxYield(); - - for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) - { - node->GetData()->Enable(TRUE); - } - - return rc; + wxEnableTopLevelWindows(FALSE); + // always enable ourselves + if ( win ) + win->Enable(TRUE); + bool rc = wxYield(); + wxEnableTopLevelWindows(TRUE); + return rc; } /* @@ -788,6 +798,7 @@ int wxMessageBox(const wxString& message, const wxString& caption, long style, return ans; } +#if wxUSE_TEXTDLG wxString wxGetTextFromUser(const wxString& message, const wxString& caption, const wxString& defaultValue, wxWindow *parent, int x, int y, bool WXUNUSED(centre) ) @@ -798,6 +809,7 @@ wxString wxGetTextFromUser(const wxString& message, const wxString& caption, else return wxString(""); } +#endif // wxUSE_TEXTDLG #ifdef __MWERKS__ char *strdup(const char *s) @@ -816,14 +828,14 @@ int isascii( int c ) // ---------------------------------------------------------------------------- // Get Full RFC822 style email address -bool wxGetEmailAddress(char *address, int maxSize) +bool wxGetEmailAddress(wxChar *address, int maxSize) { wxString email = wxGetEmailAddress(); if ( !email ) return FALSE; - strncpy(address, email, maxSize - 1); - address[maxSize - 1] = '\0'; + wxStrncpy(address, email, maxSize - 1); + address[maxSize - 1] = _T('\0'); return TRUE; } @@ -839,7 +851,7 @@ wxString wxGetEmailAddress() if ( !!user ) { wxString email(user); - email << '@' << host; + email << _T('@') << host; } } @@ -889,3 +901,18 @@ wxString wxGetHostName() return buf; } +wxString wxGetFullHostName() +{ + static const size_t hostnameSize = 257; + + wxString buf; + bool ok = wxGetFullHostName(buf.GetWriteBuf(hostnameSize), hostnameSize); + + buf.UngetWriteBuf(); + + if ( !ok ) + buf.Empty(); + + return buf; +} +