]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/utilscmn.cpp
Added wxPaintDCEx class, to handle the case where an HDC
[wxWidgets.git] / src / common / utilscmn.cpp
index 0580ea76782059658486284d4ccf88c4bfb7bf74..3e960784076853e618de0a95188e535fe3355802 100644 (file)
 #include "wx/process.h"
 #include "wx/txtstrm.h"
 
+#if defined(__WXWINCE__) && wxUSE_DATETIME
+#include "wx/datetime.h"
+#endif
+
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
     #include "wx/statusbr.h"
 #endif // wxUSE_GUI
 
+#ifndef __WXWINCE__
 #include <time.h>
+#else
+#include "wx/msw/wince/time.h"
+#endif
 
-#ifndef __MWERKS__
+#if !defined(__MWERKS__) && !defined(__WXWINCE__)
     #include <sys/types.h>
     #include <sys/stat.h>
 #endif
 
-#ifdef __SALFORDC__
-    #include <clib.h>
-#endif
-
 #ifdef __WXMSW__
     #include "wx/msw/private.h"
 #endif
@@ -119,33 +123,14 @@ copystring (const wxChar *s)
 
 #endif // WXWIN_COMPATIBILITY_2_4
 
-// Id generation
-static long wxCurrentId = 100;
-
-long
-wxNewId (void)
-{
-  return wxCurrentId++;
-}
-
-long
-wxGetCurrentId(void) { return wxCurrentId; }
-
-void
-wxRegisterId (long id)
-{
-  if (id >= wxCurrentId)
-    wxCurrentId = id + 1;
-}
-
 // ----------------------------------------------------------------------------
 // String <-> Number conversions (deprecated)
 // ----------------------------------------------------------------------------
 
 #if WXWIN_COMPATIBILITY_2_4
 
-WXDLLEXPORT_DATA(const wxChar *) wxFloatToStringStr = wxT("%.2f");
-WXDLLEXPORT_DATA(const wxChar *) wxDoubleToStringStr = wxT("%.2f");
+WXDLLIMPEXP_DATA_BASE(const wxChar *) wxFloatToStringStr = wxT("%.2f");
+WXDLLIMPEXP_DATA_BASE(const wxChar *) wxDoubleToStringStr = wxT("%.2f");
 
 void
 StringToFloat (const wxChar *s, float *number)
@@ -259,10 +244,19 @@ wxString wxDecToHex(int dec)
 // Return the current date/time
 wxString wxNow()
 {
+#ifdef __WXWINCE__
+#if wxUSE_DATETIME
+    wxDateTime now = wxDateTime::Now();
+    return now.Format();
+#else
+    return wxEmptyString;
+#endif
+#else
     time_t now = time((time_t *) NULL);
     char *date = ctime(&now);
     date[24] = '\0';
     return wxString::FromAscii(date);
+#endif
 }
 
 const wxChar *wxGetInstallPrefix()
@@ -341,8 +335,7 @@ wxString wxGetUserId()
     static const int maxLoginLen = 256; // FIXME arbitrary number
 
     wxString buf;
-    bool ok = wxGetUserId(buf.GetWriteBuf(maxLoginLen), maxLoginLen);
-    buf.UngetWriteBuf();
+    bool ok = wxGetUserId(wxStringBuffer(buf, maxLoginLen), maxLoginLen);
 
     if ( !ok )
         buf.Empty();
@@ -355,8 +348,7 @@ wxString wxGetUserName()
     static const int maxUserNameLen = 1024; // FIXME arbitrary number
 
     wxString buf;
-    bool ok = wxGetUserName(buf.GetWriteBuf(maxUserNameLen), maxUserNameLen);
-    buf.UngetWriteBuf();
+    bool ok = wxGetUserName(wxStringBuffer(buf, maxUserNameLen), maxUserNameLen);
 
     if ( !ok )
         buf.Empty();
@@ -369,9 +361,7 @@ wxString wxGetHostName()
     static const size_t hostnameSize = 257;
 
     wxString buf;
-    bool ok = wxGetHostName(buf.GetWriteBuf(hostnameSize), hostnameSize);
-
-    buf.UngetWriteBuf();
+    bool ok = wxGetHostName(wxStringBuffer(buf, hostnameSize), hostnameSize);
 
     if ( !ok )
         buf.Empty();
@@ -384,9 +374,7 @@ wxString wxGetFullHostName()
     static const size_t hostnameSize = 257;
 
     wxString buf;
-    bool ok = wxGetFullHostName(buf.GetWriteBuf(hostnameSize), hostnameSize);
-
-    buf.UngetWriteBuf();
+    bool ok = wxGetFullHostName(wxStringBuffer(buf, hostnameSize), hostnameSize);
 
     if ( !ok )
         buf.Empty();
@@ -541,6 +529,25 @@ bool wxYieldIfNeeded()
 
 #if wxUSE_GUI
 
+// Id generation
+static long wxCurrentId = 100;
+
+long
+wxNewId (void)
+{
+  return wxCurrentId++;
+}
+
+long
+wxGetCurrentId(void) { return wxCurrentId; }
+
+void
+wxRegisterId (long id)
+{
+  if (id >= wxCurrentId)
+    wxCurrentId = id + 1;
+}
+
 #if wxUSE_MENUS
 
 // ----------------------------------------------------------------------------
@@ -557,7 +564,9 @@ wxChar *wxStripMenuCodes(const wxChar *in, wxChar *out)
     }
     else
     {
-        out = copystring(s);
+        // MYcopystring - for easier search...
+        out = new wxChar[s.length() + 1];
+        wxStrcpy(out, s.c_str());
     }
 
     return out;
@@ -671,7 +680,7 @@ wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt)
     }
 #endif
 
-    wxWindowList::Node  *node = win->GetChildren().GetLast();
+    wxWindowList::compatibility_iterator node = win->GetChildren().GetLast();
     while (node)
     {
         wxWindow* child = node->GetData();
@@ -700,7 +709,7 @@ wxWindow* wxGenericFindWindowAtPoint(const wxPoint& pt)
     // Go backwards through the list since windows
     // on top are likely to have been appended most
     // recently.
-    wxWindowList::Node  *node = wxTopLevelWindows.GetLast();
+    wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetLast();
     while (node)
     {
         wxWindow* win = node->GetData();
@@ -828,20 +837,6 @@ wxFont wxGetFontFromUser(wxWindow *parent, const wxFont& fontInit)
 }
 
 #endif // wxUSE_FONTDLG
-// ----------------------------------------------------------------------------
-// missing C RTL functions (FIXME shouldn't be here at all)
-// ----------------------------------------------------------------------------
-
-#if defined( __MWERKS__ ) && !defined(__MACH__)
-char *strdup(const char *s)
-{
-        return strcpy( (char*) malloc( strlen( s ) + 1 ) , s ) ;
-}
-int isascii( int c )
-{
-        return ( c >= 0 && c < 128 ) ;
-}
-#endif // __MWERKS__
 
 // ----------------------------------------------------------------------------
 // wxSafeYield and supporting functions
@@ -849,7 +844,7 @@ int isascii( int c )
 
 void wxEnableTopLevelWindows(bool enable)
 {
-    wxWindowList::Node *node;
+    wxWindowList::compatibility_iterator node;
     for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() )
         node->GetData()->Enable(enable);
 }
@@ -860,7 +855,7 @@ wxWindowDisabler::wxWindowDisabler(wxWindow *winToSkip)
     // don't reenable them later
     m_winDisabled = NULL;
 
-    wxWindowList::Node *node;
+    wxWindowList::compatibility_iterator node;
     for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() )
     {
         wxWindow *winTop = node->GetData();
@@ -886,7 +881,7 @@ wxWindowDisabler::wxWindowDisabler(wxWindow *winToSkip)
 
 wxWindowDisabler::~wxWindowDisabler()
 {
-    wxWindowList::Node *node;
+    wxWindowList::compatibility_iterator node;
     for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() )
     {
         wxWindow *winTop = node->GetData();