]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/utilscmn.cpp
fix for using wxDataObjectComposite with the clipboard
[wxWidgets.git] / src / common / utilscmn.cpp
index f9f3116ca3e0ab958acea3b01aea9fdd09e105d5..a5e42a0eb1048b756a77ccd791b3b80cd32f924d 100644 (file)
@@ -36,6 +36,7 @@
     #include "wx/log.h"
 
     #if wxUSE_GUI
     #include "wx/log.h"
 
     #if wxUSE_GUI
+        #include "wx/app.h"
         #include "wx/window.h"
         #include "wx/frame.h"
         #include "wx/menu.h"
         #include "wx/window.h"
         #include "wx/frame.h"
         #include "wx/menu.h"
 // string functions
 // ----------------------------------------------------------------------------
 
 // string functions
 // ----------------------------------------------------------------------------
 
-#ifdef __WXMAC__
+#if defined(__WXMAC__) && !defined(__DARWIN__)
 int strcasecmp(const char *str_1, const char *str_2)
 {
   register char c1, c2;
 int strcasecmp(const char *str_1, const char *str_2)
 {
   register char c1, c2;
@@ -134,7 +135,7 @@ int strncasecmp(const char *str_1, const char *str_2, size_t maxchar)
   return 0 ;
 
 }
   return 0 ;
 
 }
-#endif // wxMAC
+#endif // __WXMAC__ && !__DARWIN__
 
 #if defined( __VMS__ ) && ( __VMS_VER < 70000000 )
 // we have no strI functions under VMS, therefore I have implemented
 
 #if defined( __VMS__ ) && ( __VMS_VER < 70000000 )
 // we have no strI functions under VMS, therefore I have implemented
@@ -216,6 +217,11 @@ extern "C"
 #define strncasecmp strnicmp
 #endif
 
 #define strncasecmp strnicmp
 #endif
 
+#ifdef __WATCOMC__
+#define strcasecmp stricmp
+#define strncasecmp strnicmp
+#endif
+
 wxChar *
 copystring (const wxChar *s)
 {
 wxChar *
 copystring (const wxChar *s)
 {
@@ -248,14 +254,14 @@ wxRegisterId (long id)
 }
 
 void
 }
 
 void
-StringToFloat (wxChar *s, float *number)
+StringToFloat (const wxChar *s, float *number)
 {
   if (s && *s && number)
     *number = (float) wxStrtod (s, (wxChar **) NULL);
 }
 
 void
 {
   if (s && *s && number)
     *number = (float) wxStrtod (s, (wxChar **) NULL);
 }
 
 void
-StringToDouble (wxChar *s, double *number)
+StringToDouble (const wxChar *s, double *number)
 {
   if (s && *s && number)
     *number = wxStrtod (s, (wxChar **) NULL);
 {
   if (s && *s && number)
     *number = wxStrtod (s, (wxChar **) NULL);
@@ -280,14 +286,14 @@ DoubleToString (double number, const wxChar *fmt)
 }
 
 void
 }
 
 void
-StringToInt (wxChar *s, int *number)
+StringToInt (const wxChar *s, int *number)
 {
   if (s && *s && number)
     *number = (int) wxStrtol (s, (wxChar **) NULL, 10);
 }
 
 void
 {
   if (s && *s && number)
     *number = (int) wxStrtol (s, (wxChar **) NULL, 10);
 }
 
 void
-StringToLong (wxChar *s, long *number)
+StringToLong (const wxChar *s, long *number)
 {
   if (s && *s && number)
     *number = wxStrtol (s, (wxChar **) NULL, 10);
 {
   if (s && *s && number)
     *number = wxStrtol (s, (wxChar **) NULL, 10);
@@ -352,7 +358,7 @@ wxString wxDecToHex(int dec)
 
 // Match a string INDEPENDENT OF CASE
 bool
 
 // Match a string INDEPENDENT OF CASE
 bool
-StringMatch (char *str1, char *str2, bool subString, bool exact)
+StringMatch (const char *str1, const char *str2, bool subString, bool exact)
 {
   if (str1 == NULL || str2 == NULL)
     return FALSE;
 {
   if (str1 == NULL || str2 == NULL)
     return FALSE;
@@ -408,7 +414,7 @@ wxString wxNow()
 // Menu accelerators related functions
 // ----------------------------------------------------------------------------
 
 // Menu accelerators related functions
 // ----------------------------------------------------------------------------
 
-wxChar *wxStripMenuCodes(wxChar *in, wxChar *out)
+wxChar *wxStripMenuCodes(const wxChar *in, wxChar *out)
 {
     wxString s = wxMenuItem::GetLabelFromText(in);
     if ( out )
 {
     wxString s = wxMenuItem::GetLabelFromText(in);
     if ( out )
@@ -605,6 +611,7 @@ wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt)
 
     // Hack for wxNotebook case: at least in wxGTK, all pages
     // claim to be shown, so we must only deal with the selected one.
 
     // Hack for wxNotebook case: at least in wxGTK, all pages
     // claim to be shown, so we must only deal with the selected one.
+#if wxUSE_NOTEBOOK
     if (win->IsKindOf(CLASSINFO(wxNotebook)))
     {
       wxNotebook* nb = (wxNotebook*) win;
     if (win->IsKindOf(CLASSINFO(wxNotebook)))
     {
       wxNotebook* nb = (wxNotebook*) win;
@@ -617,6 +624,8 @@ wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt)
            return foundWin;
       }
     }
            return foundWin;
       }
     }
+#endif
+
     /* Doesn't work
     // Frame case
     else if (win->IsKindOf(CLASSINFO(wxFrame)))
     /* Doesn't work
     // Frame case
     else if (win->IsKindOf(CLASSINFO(wxFrame)))
@@ -738,7 +747,7 @@ whereami(name)
 
         t = imagedir;
         if (!absolute_pathname(name)) {
 
         t = imagedir;
         if (!absolute_pathname(name)) {
-#if defined(DOS) || defined(__WIN32__)
+#if defined(__DOS__) || defined(__WIN32__)
             int   drive;
             char *newrbuf;
 
             int   drive;
             char *newrbuf;
 
@@ -1072,6 +1081,33 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) )
 
 #endif // wxUSE_GUI
 
 
 #endif // wxUSE_GUI
 
+const wxChar *wxGetInstallPrefix()
+{
+    wxString prefix;
+    
+    if ( wxGetEnv(wxT("WX_PREFIX"), &prefix) )
+        return prefix.c_str();
+    
+#ifdef wxINSTALL_PREFIX
+    return wxT(wxINSTALL_PREFIX);
+#else 
+    return wxT("");
+#endif
+}
+
+wxString wxGetDataDir()
+{
+    wxString format = wxGetInstallPrefix();
+    format <<  wxFILE_SEP_PATH
+           << wxT("share") << wxFILE_SEP_PATH
+           << wxT("wx") << wxFILE_SEP_PATH
+           << wxT("%i.%i");
+    wxString dir;
+    dir.Printf(format.c_str(), wxMAJOR_VERSION, wxMINOR_VERSION);
+    return dir;
+}
+
+
 // ----------------------------------------------------------------------------
 // network and user id functions
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // network and user id functions
 // ----------------------------------------------------------------------------
@@ -1297,4 +1333,25 @@ long wxExecute(const wxString& command,
     return wxDoExecuteWithCapture(command, output, &error);
 }
 
     return wxDoExecuteWithCapture(command, output, &error);
 }
 
+// ----------------------------------------------------------------------------
+// wxApp::Yield() wrappers for backwards compatibility
+// ----------------------------------------------------------------------------
+
+bool wxYield()
+{
+#if wxUSE_GUI
+    return wxTheApp && wxTheApp->Yield();
+#else
+    return FALSE;
+#endif
+}
+
+bool wxYieldIfNeeded()
+{
+#if wxUSE_GUI
+    return wxTheApp && wxTheApp->Yield(TRUE);
+#else
+    return FALSE;
+#endif
+}