]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/utils.cpp
sorry... forgot to commit these 2 files
[wxWidgets.git] / src / msw / utils.cpp
index 5fd182e3fa6be4e5b0b13899632917db96d7b89e..447b3be632aa552b86e5e901bf07d5a710e6c25a 100644 (file)
@@ -10,9 +10,7 @@
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
-// Note: this is done in utilscmn.cpp now.
-// #pragma implementation
-// #pragma implementation "utils.h"
+// #pragma implementation "utils.h"   // Note: this is done in utilscmn.cpp now.
 #endif
 
 // For compilers that support precompilation, includes "wx.h".
@@ -189,7 +187,7 @@ bool wxGetUserName(char *buf, int maxSize)
     return *buf ? TRUE : FALSE;
 //  }
 #else
-#if !defined(__WATCOMC__) && !defined(__GNUWIN32__) && USE_PENWINDOWS
+#if !defined(__WATCOMC__) && !defined(__GNUWIN32__) && wxUSE_PENWINDOWS
   extern HANDLE g_hPenWin; // PenWindows Running?
   if (g_hPenWin)
   {
@@ -366,7 +364,7 @@ int wxGetOsVersion(int *majorVsn, int *minorVsn)
 #  ifdef __WINDOWS_386__
   retValue = wxWIN386;
 #  else
-#    if !defined(__WATCOMC__) && !defined(GNUWIN32) && USE_PENWINDOWS
+#    if !defined(__WATCOMC__) && !defined(GNUWIN32) && wxUSE_PENWINDOWS
   extern HANDLE g_hPenWin;
   retValue = g_hPenWin ? wxPENWINDOWS : wxWINDOWS ;
 #    endif
@@ -379,7 +377,7 @@ int wxGetOsVersion(int *majorVsn, int *minorVsn)
 }
 
 // Reading and writing resources (eg WIN.INI, .Xdefaults)
-#if USE_RESOURCES
+#if wxUSE_RESOURCES
 bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file)
 {
   if (file != "")
@@ -469,7 +467,7 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c
   }
   else return FALSE;
 }
-#endif // USE_RESOURCES
+#endif // wxUSE_RESOURCES
 
 // Old cursor
 static HCURSOR wxBusyCursorOld = 0;
@@ -697,3 +695,206 @@ void wxDisplaySize(int *width, int *height)
   ReleaseDC(NULL, dc);
 }
 
+bool wxDirExists(const wxString& dir)
+{
+  /* MATTHEW: [6] Always use same code for Win32, call FindClose */
+#if defined(__WIN32__)
+  WIN32_FIND_DATA fileInfo;
+#else
+#ifdef __BORLANDC__
+  struct ffblk fileInfo;
+#else
+  struct find_t fileInfo;
+#endif
+#endif
+
+#if defined(__WIN32__)
+       HANDLE h = FindFirstFile((LPTSTR) WXSTRINGCAST dir,(LPWIN32_FIND_DATA)&fileInfo);
+
+       if (h==INVALID_HANDLE_VALUE)
+        return FALSE;
+       else {
+        FindClose(h);
+        return ((fileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY);
+       }
+#else
+  // In Borland findfirst has a different argument
+  // ordering from _dos_findfirst. But _dos_findfirst
+  // _should_ be ok in both MS and Borland... why not?
+#ifdef __BORLANDC__
+  return ((findfirst(WXSTRINGCAST dir, &fileInfo, _A_SUBDIR) == 0  && (fileInfo.ff_attrib & _A_SUBDIR) != 0));
+#else
+  return (((_dos_findfirst(WXSTRINGCAST dir, _A_SUBDIR, &fileInfo) == 0) && (fileInfo.attrib & _A_SUBDIR)) != 0);
+#endif
+#endif
+}
+
+wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd)
+{
+    wxString str;
+    int len = GetWindowTextLength((HWND)hWnd) + 1;
+    GetWindowText((HWND)hWnd, str.GetWriteBuf(len), len);
+    str.UngetWriteBuf();
+
+    return str;
+}
+
+#if 0
+//------------------------------------------------------------------------
+// wild character routines
+//------------------------------------------------------------------------
+
+bool wxIsWild( const wxString& pattern )
+{
+  wxString tmp = pattern;
+  char *pat = WXSTRINGCAST(tmp);
+    while (*pat) {
+       switch (*pat++) {
+       case '?': case '*': case '[': case '{':
+           return TRUE;
+       case '\\':
+           if (!*pat++)
+               return FALSE;
+       }
+    }
+    return FALSE;
+};
+
+
+bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special )
+{
+  wxString tmp1 = pat;
+  char *pattern = WXSTRINGCAST(tmp1);
+  wxString tmp2 = text;
+  char *str = WXSTRINGCAST(tmp2);
+    char c;
+    char *cp;
+    bool done = FALSE, ret_code, ok;
+    // Below is for vi fans
+    const char OB = '{', CB = '}';
+
+    // dot_special means '.' only matches '.'
+    if (dot_special && *str == '.' && *pattern != *str)
+       return FALSE;
+
+    while ((*pattern != '\0') && (!done)
+    && (((*str=='\0')&&((*pattern==OB)||(*pattern=='*')))||(*str!='\0'))) {
+       switch (*pattern) {
+       case '\\':
+           pattern++;
+           if (*pattern != '\0')
+               pattern++;
+           break;
+       case '*':
+           pattern++;
+           ret_code = FALSE;
+           while ((*str!='\0')
+           && (!(ret_code=wxMatchWild(pattern, str++, FALSE))))
+               /*loop*/;
+           if (ret_code) {
+               while (*str != '\0')
+                   str++;
+               while (*pattern != '\0')
+                   pattern++;
+           }
+           break;
+       case '[':
+           pattern++;
+         repeat:
+           if ((*pattern == '\0') || (*pattern == ']')) {
+               done = TRUE;
+               break;
+           }
+           if (*pattern == '\\') {
+               pattern++;
+               if (*pattern == '\0') {
+                   done = TRUE;
+                   break;
+               }
+           }
+           if (*(pattern + 1) == '-') {
+               c = *pattern;
+               pattern += 2;
+               if (*pattern == ']') {
+                   done = TRUE;
+                   break;
+               }
+               if (*pattern == '\\') {
+                   pattern++;
+                   if (*pattern == '\0') {
+                       done = TRUE;
+                       break;
+                   }
+               }
+               if ((*str < c) || (*str > *pattern)) {
+                   pattern++;
+                   goto repeat;
+               }
+           } else if (*pattern != *str) {
+               pattern++;
+               goto repeat;
+           }
+           pattern++;
+           while ((*pattern != ']') && (*pattern != '\0')) {
+               if ((*pattern == '\\') && (*(pattern + 1) != '\0'))
+                   pattern++;
+               pattern++;
+           }
+           if (*pattern != '\0') {
+               pattern++, str++;
+           }
+           break;
+       case '?':
+           pattern++;
+           str++;
+           break;
+       case OB:
+           pattern++;
+           while ((*pattern != CB) && (*pattern != '\0')) {
+               cp = str;
+               ok = TRUE;
+               while (ok && (*cp != '\0') && (*pattern != '\0')
+               &&  (*pattern != ',') && (*pattern != CB)) {
+                   if (*pattern == '\\')
+                       pattern++;
+                   ok = (*pattern++ == *cp++);
+               }
+               if (*pattern == '\0') {
+                   ok = FALSE;
+                   done = TRUE;
+                   break;
+               } else if (ok) {
+                   str = cp;
+                   while ((*pattern != CB) && (*pattern != '\0')) {
+                       if (*++pattern == '\\') {
+                           if (*++pattern == CB)
+                               pattern++;
+                       }
+                   }
+               } else {
+                   while (*pattern!=CB && *pattern!=',' && *pattern!='\0') {
+                       if (*++pattern == '\\') {
+                            if (*++pattern == CB || *pattern == ',')
+                               pattern++;
+                       }
+                   }
+               }
+               if (*pattern != '\0')
+                   pattern++;
+           }
+           break;
+       default:
+           if (*str == *pattern) {
+               str++, pattern++;
+           } else {
+               done = TRUE;
+           }
+       }
+    }
+    while (*pattern == '*')
+       pattern++;
+    return ((*str == '\0') && (*pattern == '\0'));
+};
+
+#endif
+