#include "wx/window.h"
#include "wx/menu.h"
#include "wx/frame.h"
+#include "wx/msgdlg.h"
+#include "wx/textdlg.h"
#endif
#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>
#endif
#endif
#include <time.h>
+#ifndef __MWERKS__
#include <sys/types.h>
#include <sys/stat.h>
+#endif
+
+#ifdef __SALFORDC__
+#include <clib.h>
+#endif
// Pattern matching code.
// Yes, this path is deliberate (for Borland compilation)
extern char *wxBuffer;
+#ifdef __WXMAC__
+int strcasecmp(const char *str_1, const char *str_2)
+{
+ register char c1, c2;
+ do {
+ c1 = tolower(*str_1++);
+ c2 = tolower(*str_2++);
+ } while ( c1 && (c1 == c2) );
+
+ return c1 - c2;
+}
+
+int strncasecmp(const char *str_1, const char *str_2, size_t maxchar)
+{
+
+ register char c1, c2;
+ while( maxchar--)
+ {
+ c1 = tolower(*str_1++);
+ c2 = tolower(*str_2++);
+
+ if ( !c1 || c1!=c2 )
+ return c1 - c2;
+
+ } ;
+
+ return 0 ;
+
+}
+#endif
#ifdef __VMS__
// we have no strI functions under VMS, therefore I have implemented
// an inefficient but portable version: convert copies of strings to lowercase
#ifdef __WINDOWS__
#ifndef __GNUWIN32__
+#ifndef __MWERKS__
#define strcasecmp stricmp
#define strncasecmp strnicmp
+#else
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#endif
#endif
#ifdef _MSC_VER
'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;
}
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)
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
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);
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);
return menuBar->FindMenuItem (menuString, itemString);
}
-/*
- * wxDebugStreamBuf
- */
-#if !defined(_WINDLL)
-
-wxDebugStreamBuf::wxDebugStreamBuf(void)
-{
- if (allocate()) setp(base(),ebuf());
-}
-
-int wxDebugStreamBuf::overflow(int WXUNUSED(i))
-{
- int len = pptr() - pbase();
- char *txt = new char[len+1];
- strncpy(txt, pbase(), len);
- txt[len] = '\0';
-#ifdef __WXMSW__
- OutputDebugString((LPCSTR)txt);
-#else
- fprintf(stderr, txt);
-#endif
- setp(pbase(), epptr());
- delete[] txt;
- return EOF;
-}
-
-int wxDebugStreamBuf::sync(void)
-{
- int len = pptr() - pbase();
- char *txt = new char[len+1];
- strncpy(txt, pbase(), len);
- txt[len] = '\0';
-#ifdef __WXMSW__
- OutputDebugString((LPCSTR)txt);
-#else
- fprintf(stderr, txt);
-#endif
- setp(pbase(), epptr());
- delete[] txt;
- return 0;
-}
-
-#endif
-
/*
On Fri, 21 Jul 1995, Paul Craven wrote:
#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("");
+}
+
+#ifdef __MWERKS__
+char *strdup(const char *s)
+{
+ return strcpy( (char*) malloc( strlen( s ) + 1 ) , s ) ;
+}
+
+int isascii( int c )
+{
+ return ( c >= 0 && c < 128 ) ;
+}
+#endif
+
+// Overloaded functions, taking a wxString
+bool wxGetHostName(wxString& name)
+{
+ bool success = wxGetHostName(wxBuffer, 500);
+ if (success)
+ {
+ name = wxBuffer;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+bool wxGetUserId(wxString& buf)
+{
+ bool success = wxGetUserId(wxBuffer, 500);
+ if (success)
+ {
+ buf = wxBuffer;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+bool wxGetUserName(wxString& buf)
+{
+ bool success = wxGetUserName(wxBuffer, 500);
+ if (success)
+ {
+ buf = wxBuffer;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+