]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/utilscmn.cpp
CW Win32 support
[wxWidgets.git] / src / common / utilscmn.cpp
index 349d6f04a0755b47f164a4e6b9c80324b2d326ee..d590221e917a77ba274724ee7b5bc0c11ece6794 100644 (file)
 #include "wx/window.h"
 #include "wx/menu.h"
 #include "wx/frame.h"
+#include "wx/msgdlg.h"
+#include "wx/textdlg.h"
 #endif
 
-#if USE_IOSTREAMH
+#if wxUSE_IOSTREAMH
 #include <iostream.h>
+#include <fstream.h>
 #else
 #include <iostream>
+#include <fstream>
+#  ifdef _MSC_VER
+      using namespace std;
+#  endif
 #endif
 
-#include <fstream.h>
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -56,7 +62,7 @@
 #include "../common/glob.inc"
 #endif
 
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
 #include "windows.h"
 #endif
 
@@ -134,7 +140,7 @@ extern "C"
   int strncasecmp (const char *, const char *, size_t);
 }
 #endif
-#endif                         /* __WINDOWS__ */
+#endif                         /* __WXMSW__ */
 
 
 char *
@@ -172,14 +178,14 @@ void
 StringToFloat (char *s, float *number)
 {
   if (s && *s && number)
-    *number = (float) strtod (s, NULL);
+    *number = (float) strtod (s, (char **) NULL);
 }
 
 void 
 StringToDouble (char *s, double *number)
 {
   if (s && *s && number)
-    *number = strtod (s, NULL);
+    *number = strtod (s, (char **) NULL);
 }
 
 char *
@@ -205,14 +211,14 @@ void
 StringToInt (char *s, int *number)
 {
   if (s && *s && number)
-    *number = (int) strtol (s, NULL, 10);
+    *number = (int) strtol (s, (char **) NULL, 10);
 }
 
 void 
 StringToLong (char *s, long *number)
 {
   if (s && *s && number)
-    *number = strtol (s, NULL, 10);
+    *number = strtol (s, (char **) NULL, 10);
 }
 
 char *
@@ -238,19 +244,19 @@ static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A'
   'C', 'D', 'E', 'F' };
 
 // Convert 2-digit hex number to decimal
-int wxHexToDec(char *buf)
+int wxHexToDec(const wxString& buf)
 {
   int firstDigit, secondDigit;
   
-  if (buf[0] >= 'A')
-    firstDigit = buf[0] - 'A' + 10;
+  if (buf.GetChar(0) >= 'A')
+    firstDigit = buf.GetChar(0) - 'A' + 10;
   else
-    firstDigit = buf[0] - '0';
+    firstDigit = buf.GetChar(0) - '0';
 
-  if (buf[1] >= 'A')
-    secondDigit = buf[1] - 'A' + 10;
+  if (buf.GetChar(1) >= 'A')
+    secondDigit = buf.GetChar(1) - 'A' + 10;
   else
-    secondDigit = buf[1] - '0';
+    secondDigit = buf.GetChar(1) - '0';
     
   return firstDigit * 16 + secondDigit;
 }
@@ -265,6 +271,14 @@ void wxDecToHex(int dec, char *buf)
   buf[2] = 0;
 }
 
+// Convert decimal integer to 2-character hex string
+wxString wxDecToHex(int dec)
+{
+    char buf[3];
+    wxDecToHex(dec, buf);
+    return wxString(buf);
+}
+
 // Match a string INDEPENDENT OF CASE
 bool 
 StringMatch (char *str1, char *str2, bool subString, bool exact)
@@ -309,7 +323,7 @@ StringMatch (char *str1, char *str2, bool subString, bool exact)
 // [volatile]
 wxString wxNow( void )
 {
-  time_t now = time(NULL);
+  time_t now = time((time_t *) NULL);
   char *date = ctime(&now); 
   date[24] = '\0';
   return wxString(date);
@@ -344,7 +358,7 @@ wxGetEmailAddress (char *address, int maxSize)
 char *wxStripMenuCodes (char *in, char *out)
 {
   if (!in)
-    return NULL;
+    return (char *) NULL;
     
   if (!out)
     out = copystring(in);
@@ -376,6 +390,14 @@ char *wxStripMenuCodes (char *in, char *out)
   return tmpOut;
 }
 
+wxString wxStripMenuCodes(const wxString& str)
+{
+    char *buf = new char[str.Length() + 1];
+    wxStripMenuCodes((char*) (const char*) str, buf);
+    wxString str1(buf);
+    delete[] buf;
+    return str1;
+}
 
 /*
  * Window search functions
@@ -408,7 +430,7 @@ wxFindWindowByLabel (const wxString& title, wxWindow * parent)
        }                       // for()
 
     }
-  return NULL;
+  return (wxWindow *) NULL;
 }
 
 // Recursive
@@ -423,7 +445,7 @@ wxFindWindowByLabel1 (const wxString& title, wxWindow * parent)
 
   if (parent)
     {
-      for (wxNode * node = parent->GetChildren()->First (); node; node = node->Next ())
+      for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ())
        {
          wxWindow *win = (wxWindow *) node->Data ();
          wxWindow *retwin = wxFindWindowByLabel1 (title, win);
@@ -433,7 +455,7 @@ wxFindWindowByLabel1 (const wxString& title, wxWindow * parent)
 
     }
 
-  return NULL;                 // Not found
+  return (wxWindow *) NULL;                    // Not found
 
 }
 
@@ -479,7 +501,7 @@ wxFindWindowByName1 (const wxString& title, wxWindow * parent)
 
   if (parent)
     {
-      for (wxNode * node = parent->GetChildren()->First (); node; node = node->Next ())
+      for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ())
        {
          wxWindow *win = (wxWindow *) node->Data ();
          wxWindow *retwin = wxFindWindowByName1 (title, win);
@@ -489,7 +511,7 @@ wxFindWindowByName1 (const wxString& title, wxWindow * parent)
 
     }
 
-  return NULL;                 // Not found
+  return (wxWindow *) NULL;                    // Not found
 
 }
 
@@ -510,7 +532,11 @@ wxFindMenuItemId (wxFrame * frame, const wxString& menuString, const wxString& i
  
 wxDebugStreamBuf::wxDebugStreamBuf(void)
 {
-  if (allocate()) setp(base(),ebuf());
+       // <iostream> usage doesn't need this, and i have no idea how to simulate it.
+#if wxUSE_IOSTREAMH
+       if (allocate())
+         setp(base(),ebuf());
+#endif
 }
 
 int wxDebugStreamBuf::overflow(int WXUNUSED(i))
@@ -519,7 +545,7 @@ int wxDebugStreamBuf::overflow(int WXUNUSED(i))
   char *txt = new char[len+1];
   strncpy(txt, pbase(), len);
   txt[len] = '\0';
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
   OutputDebugString((LPCSTR)txt);
 #else
   fprintf(stderr, txt);
@@ -535,7 +561,7 @@ int wxDebugStreamBuf::sync(void)
   char *txt = new char[len+1];
   strncpy(txt, pbase(), len);
   txt[len] = '\0';
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
   OutputDebugString((LPCSTR)txt);
 #else
   fprintf(stderr, txt);
@@ -740,3 +766,44 @@ whereami(name)
 
 #endif
 
+/*
+ * N.B. these convenience functions must be separate from msgdlgg.cpp, textdlgg.cpp
+ * since otherwise the generic code may be pulled in unnecessarily.
+ */
+
+int wxMessageBox(const wxString& message, const wxString& caption, long style,
+                 wxWindow *parent, int WXUNUSED(x), int WXUNUSED(y) )
+{
+    wxMessageDialog dialog(parent, message, caption, style);
+
+    int ans = dialog.ShowModal();
+    switch ( ans )
+    {
+        case wxID_OK:
+            return wxOK;
+            break;
+        case wxID_YES:
+            return wxYES;
+            break;
+        case wxID_NO:
+            return wxNO;
+            break;
+        default:
+        case wxID_CANCEL:
+            return wxCANCEL;
+            break;
+    }
+    return ans;
+}
+
+wxString wxGetTextFromUser(const wxString& message, const wxString& caption,
+                        const wxString& defaultValue, wxWindow *parent,
+                        int x, int y, bool WXUNUSED(centre) )
+{
+    wxTextEntryDialog dialog(parent, message, caption, defaultValue, wxOK|wxCANCEL, wxPoint(x, y));
+    if (dialog.ShowModal() == wxID_OK)
+        return dialog.GetValue();
+    else
+        return wxString("");
+}
+