]> git.saurik.com Git - wxWidgets.git/commitdiff
More WinCE mods.
authorJulian Smart <julian@anthemion.co.uk>
Fri, 11 Jul 2003 11:21:47 +0000 (11:21 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 11 Jul 2003 11:21:47 +0000 (11:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

34 files changed:
include/wx/msw/wince/setup.h
include/wx/msw/wince/time.h [new file with mode: 0644]
src/common/appbase.cpp
src/common/appcmn.cpp
src/common/cmndata.cpp
src/common/config.cpp
src/common/datetime.cpp
src/common/dynlib.cpp
src/common/encconv.cpp
src/common/file.cpp
src/common/fileconf.cpp
src/common/filefn.cpp
src/common/filename.cpp
src/common/fmapbase.cpp
src/common/fontcmn.cpp
src/common/fontmap.cpp
src/common/gdicmn.cpp
src/common/init.cpp
src/common/intl.cpp
src/common/list.cpp
src/common/log.cpp
src/common/menucmn.cpp
src/common/quantize.cpp
src/common/regex.cpp
src/common/stopwatch.cpp
src/common/strconv.cpp
src/common/string.cpp
src/common/utilscmn.cpp
src/common/valtext.cpp
src/common/wxchar.cpp
src/common/xpmdecod.cpp
src/generic/dirctrlg.cpp
src/generic/grid.cpp
src/msw/wince/time.cpp [new file with mode: 0644]

index 8f6f478237fb8ff6cc02516292a648fbb44882aa..a06174ec179fed0d8dfcbb7300683767d5866bbe 100644 (file)
 // Recommended setting: 1
 #define wxUSE_CONFIG_NATIVE   1
 
+// Use wxFileConfig.
+// Recommended setting: 1
+#define wxUSE_FILECONFIG       0
+
 // If wxUSE_DIALUP_MANAGER is 1, compile in wxDialUpManager class which allows
 // to connect/disconnect from the network and be notified whenever the dial-up
 // network connection is established/terminated. Requires wxUSE_DYNAMIC_LOADER.
 // Default is 1.
 //
 // Recommended setting: 1
-#define wxUSE_DIALUP_MANAGER   1
+#define wxUSE_DIALUP_MANAGER   0
 
 // Compile in classes for run-time DLL loading and function calling.
 // Required by wxUSE_DIALUP_MANAGER.
 #define wxUSE_DYNLIB_CLASS    1
 
 // experimental, don't use for now
-#define wxUSE_DYNAMIC_LOADER  1
+#define wxUSE_DYNAMIC_LOADER  0
 
 // Set to 1 to use socket classes
-#define wxUSE_SOCKETS       1
+#define wxUSE_SOCKETS       0
 
 // Set to 1 to enable virtual file systems (required by wxHTML)
-#define wxUSE_FILESYSTEM    1
+#define wxUSE_FILESYSTEM    0
 
 // Set to 1 to enable virtual ZIP filesystem (requires wxUSE_FILESYSTEM)
-#define wxUSE_FS_ZIP        1
+#define wxUSE_FS_ZIP        0
 
 // Set to 1 to enable virtual Internet filesystem (requires wxUSE_FILESYSTEM)
-#define wxUSE_FS_INET       1
+#define wxUSE_FS_INET       0
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
-#define wxUSE_ZIPSTREAM     1
+#define wxUSE_ZIPSTREAM     0
 
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG.
 // Default is 1.
 //
 // Recommended setting: 1
-#define wxUSE_PROTOCOL 1
+#define wxUSE_PROTOCOL 0
 
 // The settings for the individual URL schemes
 #define wxUSE_PROTOCOL_FILE 1
 #define wxUSE_PROTOCOL_HTTP 1
 
 // Define this to use wxURL class.
-#define wxUSE_URL 1
+#define wxUSE_URL 0
 
 // Support for regular expression matching via wxRegEx class: enable this to
 // use POSIX regular expressions in your code. You need to compile regex
 //
 // Recommended setting: 1 if your compiler supports it, if it doesn't please
 // contribute us a makefile for src/regex for it
-#define wxUSE_REGEX       1
+#define wxUSE_REGEX       0
 
 // wxSystemOptions class
 #define wxUSE_SYSTEM_OPTIONS 1
 // Default is 1
 //
 // Recommended setting: 1 (unless it really doesn't work)
-#define wxUSE_COMMON_DIALOGS 1
+#define wxUSE_COMMON_DIALOGS 0
 
 // wxBusyInfo displays window with message when app is busy. Works in same way
 // as wxBusyCursor
 #define wxUSE_MDI_ARCHITECTURE    1
 
 // Set to 0 to disable print/preview architecture code
-#define wxUSE_PRINTING_ARCHITECTURE  1
+#define wxUSE_PRINTING_ARCHITECTURE  0
 
 // wxHTML sublibrary allows to display HTML in wxWindow programs and much,
 // much more.
 //
 // Recommended setting: 1 (wxHTML is great!), set to 0 if you want compile a
 // smaller library.
-#define wxUSE_HTML          1
+#define wxUSE_HTML          0
 
 // Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
 // headers and libraries to be able to compile the library with wxUSE_GLCANVAS
                                 // 0 for no interprocess comms
 #define wxUSE_HELP        0
                                 // 0 for no help facility
-#define wxUSE_MS_HTML_HELP 1
+#define wxUSE_MS_HTML_HELP 0
                                 // 0 for no MS HTML Help
 
 // Use wxHTML-based help controller?
 #define wxUSE_WXHTML_HELP 0
 
-#define wxUSE_RESOURCES   1
+#define wxUSE_RESOURCES   0
                                 // 0 for no wxGetResource/wxWriteResource
 #define wxUSE_CONSTRAINTS 1
                                 // 0 for no window layout constraint system
 
 // Set to 0 to disable PostScript print/preview architecture code under Windows
 // (just use Windows printing).
-#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1
+#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0
 
 // ----------------------------------------------------------------------------
 // database classes
 #define wxUSE_IMAGE         1
 
 // Set to 1 for PNG format support (requires libpng). Also requires wxUSE_ZLIB.
-#define wxUSE_LIBPNG        1
+#define wxUSE_LIBPNG        0
 
 // Set to 1 for JPEG format support (requires libjpeg)
-#define wxUSE_LIBJPEG       1
+#define wxUSE_LIBJPEG       0
 
 // Set to 1 for TIFF format support (requires libtiff)
-#define wxUSE_LIBTIFF       1
+#define wxUSE_LIBTIFF       0
 
 // Set to 1 for GIF format support
-#define wxUSE_GIF           1
+#define wxUSE_GIF           0
 
 // Set to 1 for PNM format support
-#define wxUSE_PNM           1
+#define wxUSE_PNM           0
 
 // Set to 1 for PCX format support
-#define wxUSE_PCX           1
+#define wxUSE_PCX           0
 
 // Set to 1 for IFF format support (Amiga format)
 #define wxUSE_IFF           0
 #define wxUSE_XPM           1
 
 // Set to 1 for MS Icons and Cursors format support
-#define wxUSE_ICO_CUR       1
+#define wxUSE_ICO_CUR       0
 
 // Set to 1 to compile in wxPalette class
 #define wxUSE_PALETTE       1
 #define wxUSE_OWNER_DRAWN 1
 
 // Set to 1 to compile MS Windows XP theme engine support
-#define wxUSE_UXTHEME           1
+#define wxUSE_UXTHEME           0
 
 // Set to 1 to auto-adapt to MS Windows XP themes where possible
 // (notably, wxNotebook pages)
-#define wxUSE_UXTHEME_AUTO      1
+#define wxUSE_UXTHEME_AUTO      0
 
 // ----------------------------------------------------------------------------
 // obsolete settings
diff --git a/include/wx/msw/wince/time.h b/include/wx/msw/wince/time.h
new file mode 100644 (file)
index 0000000..f56f31b
--- /dev/null
@@ -0,0 +1,38 @@
+
+/*
+ * time.h
+ * Missing time functions and structures for use under WinCE
+ */
+
+#ifndef __WINCE_TIME_
+#define __WINCE_TIME_
+
+struct tm {
+        int tm_sec;     /* seconds after the minute - [0,59] */
+        int tm_min;     /* minutes after the hour - [0,59] */
+        int tm_hour;    /* hours since midnight - [0,23] */
+        int tm_mday;    /* day of the month - [1,31] */
+        int tm_mon;     /* months since January - [0,11] */
+        int tm_year;    /* years since 1900 */
+        int tm_wday;    /* days since Sunday - [0,6] */
+        int tm_yday;    /* days since January 1 - [0,365] */
+        int tm_isdst;   /* daylight savings time flag */
+        };
+
+struct tm * __cdecl localtime(const time_t *);
+
+time_t __cdecl time(time_t *);
+
+time_t __cdecl mktime(struct tm *);
+
+struct tm * __cdecl gmtime(const time_t *);
+
+#define _tcsftime   wcsftime
+
+size_t __cdecl wcsftime(wchar_t *, size_t, const wchar_t *,
+        const struct tm *);
+
+extern long timezone;
+
+#endif
+
index 04304f3672b72fa59f1d1a39046f8fdc4d6ada8b..216d9b86473b74cd393fa97ef90cc16408d7e247 100644 (file)
@@ -40,9 +40,6 @@
 #if wxUSE_FILENAME
     #include "wx/filename.h"
 #endif // wxUSE_FILENAME
-#if wxUSE_FONTMAP
-    #include "wx/fontmap.h"
-#endif // wxUSE_FONTMAP
 #include "wx/msgout.h"
 #include "wx/tokenzr.h"
 
   #include  "wx/msw/private.h"  // includes windows.h for MessageBox()
 #endif
 
+#if wxUSE_FONTMAP
+    #include "wx/fontmap.h"
+#endif // wxUSE_FONTMAP
+
 #if defined(__WXMAC__)
     // VZ: MacTypes.h is enough under Mac OS X (where I could test it) but
     //     I don't know which headers are needed under earlier systems so
index 97c2f5eb2d2e5c49919557d09d0ff7c0afc6d3e8..abc9545e04a70e6cfdc34074b448a5a1b66f5944 100644 (file)
 #endif
 
 #include "wx/apptrait.h"
-#if wxUSE_FONTMAP
-    #include "wx/fontmap.h"
-#endif // wxUSE_FONTMAP
 #include "wx/msgout.h"
 #include "wx/thread.h"
 #include "wx/utils.h"
 
+#if defined(__WXMSW__)
+  #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
+#endif
+
+#if wxUSE_FONTMAP
+    #include "wx/fontmap.h"
+#endif // wxUSE_FONTMAP
+
 // ============================================================================
 // wxAppBase implementation
 // ============================================================================
@@ -85,9 +90,6 @@ bool wxAppBase::Initialize(int& argc, wxChar **argv)
     wxPendingEventsLocker = new wxCriticalSection;
 #endif
 
-    wxTheColourDatabase = new wxColourDatabase;
-    wxTheColourDatabase->Initialize();
-
     wxInitializeStockLists();
     wxInitializeStockObjects();
 
index 08e3e0cf090da7938781d7af2f342b0bba1d405d..6e09c357b50f09da02a82dda181ca7809b4d120d 100644 (file)
 #endif // wxUSE_PRINTING_ARCHITECTURE
 
 #ifdef __WXMSW__
-    #include <windows.h>
+    #include <windowsx.h>
     #include "wx/msw/private.h"
 
-    #if !defined(__WIN32__)
-        #include <print.h>
+    #ifdef __WXWINCE__
         #include <commdlg.h>
-    #endif // Win16
+    #endif
 
     #if defined(__WATCOMC__) || defined(__SYMANTEC__) || defined(__SALFORDC__)
         #include <windowsx.h>
@@ -327,7 +326,11 @@ void wxPrintData::ConvertToNative()
         pd.lStructSize    = 66;
 #else
         memset(&pd, 0, sizeof(PRINTDLG));
+#ifdef __WXWINCE__
+        pd.cbStruct    = sizeof(PRINTDLG);
+#else
         pd.lStructSize    = sizeof(PRINTDLG);
+#endif
 #endif
 
         pd.hwndOwner      = (HWND)NULL;
index 24c66d9e901e00ea4570d6c5c6cf3e7c1644be41..f9e071fee32826d2f19cf42981fa9a853ba673b7 100644 (file)
@@ -335,7 +335,11 @@ wxString wxExpandEnvVars(const wxString& str)
 
           wxString strVarName(str.c_str() + n + 1, m - n - 1);
 
+#ifdef __WXWINCE__
+          const wxChar *pszValue = NULL;
+#else
           const wxChar *pszValue = wxGetenv(strVarName);
+#endif
           if ( pszValue != NULL ) {
             strResult += pszValue;
           }
index 6c87ccc2368bcd26bbe23989e9afca0d9930d582..ac737d6322f9f85c2327859c94d1bd5c647c4c93 100644 (file)
@@ -2668,7 +2668,7 @@ const wxChar *wxDateTime::ParseFormat(const wxChar *date,
 
         // parse the optional width
         size_t width = 0;
-        while ( isdigit(*++fmt) )
+        while ( wxIsdigit(*++fmt) )
         {
             width *= 10;
             width += *fmt - _T('0');
index 90945e8caed7fbf106088b6577e73064cec2245f..a452cb2c82cb38fd01ce0de48e6ea16207595cfb 100644 (file)
@@ -99,7 +99,11 @@ const char *dlerror(void);
     // using LoadLibraryEx under Win32 to avoid name clash with LoadLibrary
 #   ifdef __WIN32__
 #ifdef _UNICODE
+#ifdef __WXWINCE__
+#      define wxDllOpen(lib)                  ::LoadLibrary(lib)
+#else
 #      define wxDllOpen(lib)                  ::LoadLibraryExW(lib, 0, 0)
+#endif
 #else
 #      define wxDllOpen(lib)                  ::LoadLibraryExA(lib, 0, 0)
 #endif
@@ -323,7 +327,11 @@ void *wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name, bool *su
     // mb_str() is necessary in Unicode build
     //
     // "void *" cast is needed by gcc 3.1 + w32api 1.4, don't ask me why
-    symbol = (void *)wxDllGetSymbol(dllHandle, name.mb_str());
+#ifdef __WXWINCE__
+    symbol = (void *) wxDllGetSymbol(dllHandle, name.c_str());
+#else
+    symbol = (void *) wxDllGetSymbol(dllHandle, name.mb_str());
+#endif
 
 #endif // OS
 
index 759dd58fa5549b8ebd9e58c45f7dd90a89cb8c36..5ad61864642eca6e5238292ef6dbc447c3335b12 100644 (file)
@@ -37,6 +37,11 @@ typedef wchar_t tchar;
 typedef char tchar;
 #endif
 
+#ifdef __WXWINCE__
+#undef LINKAGEMODE
+#define LINKAGEMODE __cdecl
+#endif
+
 static wxUint16* LINKAGEMODE GetEncTable(wxFontEncoding enc)
 {
     for (int i = 0; encodings_list[i].table != NULL; i++)
@@ -52,8 +57,6 @@ typedef struct {
     wxUint8  c;
 } CharsetItem;
 
-
-
 extern "C" int LINKAGEMODE CompareCharsetItems(const void *i1, const void *i2)
 {
     return ( ((CharsetItem*)i1) -> u - ((CharsetItem*)i2) -> u );
@@ -137,6 +140,8 @@ bool wxEncodingConverter::Init(wxFontEncoding input_enc, wxFontEncoding output_e
             for (i = 0; i < 128; i++)  m_Table[128 + i] = (tchar)in_tbl[i];
             return TRUE;
         }
+        // FIXME: write a substitute for bsearch
+#ifndef __WXWINCE__
         else
         {
             CharsetItem *rev = BuildReverseTable(out_tbl);
@@ -163,6 +168,8 @@ bool wxEncodingConverter::Init(wxFontEncoding input_enc, wxFontEncoding output_e
             delete[] rev;
             return TRUE;
         }
+#endif
+        return TRUE;
     }
 }
 
index 04fd887a9383cef8849c980e3653b9134ba739e2..aca1dc4d26a1f2760ce0ac0169247746bcf65194 100644 (file)
@@ -28,7 +28,7 @@
 #if wxUSE_FILE
 
 // standard
-#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
   #include  <io.h>
 
 #ifndef __SALFORDC__
@@ -54,6 +54,8 @@
     #define   NOMCX
 #endif
 
+#elif defined(__WXMSW__) && defined(__WXWINCE__)
+    // TODO: what to include?
 #elif (defined(__UNIX__) || defined(__GNUWIN32__))
     #include  <unistd.h>
     #include  <sys/stat.h>
 #endif  //Win/UNIX
 
 #include  <stdio.h>       // SEEK_xxx constants
+
+#ifndef __WXWINCE__
 #include  <fcntl.h>       // O_RDONLY &c
+#endif
 
-#ifndef __MWERKS__
+#ifdef __WXWINCE__
+// Nothing
+#elif !defined(__MWERKS__)
     #include  <sys/types.h>   // needed for stat
     #include  <sys/stat.h>    // stat
 #elif defined(__MWERKS__) && ( defined(__WXMSW__) || defined(__MACH__) )
     #include "wx/msw/mslu.h"
 #endif
 
+#ifdef __WXWINCE__
+    #include "wx/msw/private.h"
+#endif
+
 // ============================================================================
 // implementation of wxFile
 // ============================================================================
@@ -183,7 +194,12 @@ bool wxFile::Access(const wxChar *name, OpenMode mode)
             break;
     }
 
+#ifdef __WXWINCE__
+    // FIXME: use CreateFile with 0 access to query the file
+    return TRUE;
+#else
     return wxAccess(name, how) == 0;
+#endif
 }
 
 // ----------------------------------------------------------------------------
@@ -208,11 +224,22 @@ bool wxFile::Create(const wxChar *szFileName, bool bOverwrite, int accessMode)
     // Dominic Mazzoni [dmazzoni+@cs.cmu.edu] reports that open is still broken on the mac, so we replace
     // int fd = open(wxUnix2MacFilename( szFileName ), O_CREAT | (bOverwrite ? O_TRUNC : O_EXCL), access);
     int fd = creat( szFileName , accessMode);
+#else
+#ifdef __WXWINCE__
+    HANDLE fileHandle = ::CreateFile(szFileName, GENERIC_WRITE, 0, NULL,
+        bOverwrite ? CREATE_ALWAYS : CREATE_NEW, FILE_ATTRIBUTE_NORMAL,
+        0);
+    int fd = 0;
+    if (fileHandle == INVALID_HANDLE_VALUE)
+        fd = (int) fileHandle;
+    else
+        fd = -1;
 #else
     int fd = wxOpen( szFileName,
                      O_BINARY | O_WRONLY | O_CREAT |
                      (bOverwrite ? O_TRUNC : O_EXCL)
                      ACCESS(accessMode) );
+#endif
 #endif
     if ( fd == -1 )
     {
@@ -229,6 +256,59 @@ bool wxFile::Create(const wxChar *szFileName, bool bOverwrite, int accessMode)
 // open the file
 bool wxFile::Open(const wxChar *szFileName, OpenMode mode, int accessMode)
 {
+#ifdef __WXWINCE__
+    DWORD access = 0;
+    DWORD shareMode = 0;
+    DWORD disposition = 0;
+
+    int flags = O_BINARY;
+
+    switch ( mode )
+    {
+        case read:
+            access = GENERIC_READ;
+            shareMode = FILE_SHARE_READ|FILE_SHARE_WRITE;
+            disposition = OPEN_EXISTING;
+            break;
+
+        case write_append:
+            if ( wxFile::Exists(szFileName) )
+            {
+                access = GENERIC_READ|GENERIC_WRITE;
+                shareMode = FILE_SHARE_READ;
+                disposition = 0;
+                break;
+            }
+            //else: fall through as write_append is the same as write if the
+            //      file doesn't exist
+
+        case write:
+            access = GENERIC_WRITE;
+            shareMode = 0;
+            disposition = TRUNCATE_EXISTING;
+            break;
+
+        case write_excl:
+            access = GENERIC_WRITE;
+            shareMode = 0;
+            disposition = TRUNCATE_EXISTING;
+            break;
+
+        case read_write:
+            access = GENERIC_READ|GENERIC_WRITE;
+            shareMode = 0;
+            disposition = 0;
+            break;
+    }
+
+    int fd = 0;
+    HANDLE fileHandle = ::CreateFile(szFileName, access, shareMode, NULL,
+        disposition, FILE_ATTRIBUTE_NORMAL, 0);
+    if (fileHandle == INVALID_HANDLE_VALUE)
+        fd = -1;
+    else
+        fd = (int) fileHandle;
+#else
     int flags = O_BINARY;
 
     switch ( mode )
@@ -260,6 +340,7 @@ bool wxFile::Open(const wxChar *szFileName, OpenMode mode, int accessMode)
     }
 
     int fd = wxOpen( szFileName, flags ACCESS(accessMode));
+#endif
     if ( fd == -1 )
     {
         wxLogSysError(_("can't open file '%s'"), szFileName);
@@ -275,7 +356,12 @@ bool wxFile::Open(const wxChar *szFileName, OpenMode mode, int accessMode)
 bool wxFile::Close()
 {
     if ( IsOpened() ) {
-        if ( close(m_fd) == -1 ) {
+#ifdef __WXWINCE__
+        if (!CloseHandle((HANDLE) m_fd))
+#else
+        if ( close(m_fd) == -1 )
+#endif
+        {
             wxLogSysError(_("can't close file descriptor %d"), m_fd);
             m_fd = fd_invalid;
             return FALSE;
@@ -296,7 +382,14 @@ off_t wxFile::Read(void *pBuf, off_t nCount)
 {
     wxCHECK( (pBuf != NULL) && IsOpened(), 0 );
 
-#ifdef __MWERKS__
+#ifdef __WXWINCE__
+    DWORD bytesRead = 0;
+    int iRc = 0;
+    if (ReadFile((HANDLE) m_fd, pBuf, (DWORD) nCount, & bytesRead, NULL))
+        iRc = bytesRead;
+    else
+        iRc = -1;
+#elif defined(__MWERKS__)
     int iRc = ::read(m_fd, (char*) pBuf, nCount);
 #else
     int iRc = ::read(m_fd, pBuf, nCount);
@@ -314,7 +407,14 @@ size_t wxFile::Write(const void *pBuf, size_t nCount)
 {
     wxCHECK( (pBuf != NULL) && IsOpened(), 0 );
 
-#ifdef __MWERKS__
+#ifdef __WXWINCE__
+    DWORD bytesRead = 0;
+    int iRc = 0;
+    if (WriteFile((HANDLE) m_fd, pBuf, (DWORD) nCount, & bytesRead, NULL))
+        iRc = bytesRead;
+    else
+        iRc = -1;
+#elif defined(__MWERKS__)
 #if __MSL__ >= 0x6000
     int iRc = ::write(m_fd, (void*) pBuf, nCount);
 #else
@@ -336,7 +436,9 @@ size_t wxFile::Write(const void *pBuf, size_t nCount)
 bool wxFile::Flush()
 {
     if ( IsOpened() ) {
-#if defined(__VISUALC__) || wxHAVE_FSYNC
+#ifdef __WXWINCE__
+        // Do nothing
+#elif defined(__VISUALC__) || wxHAVE_FSYNC
         if ( wxFsync(m_fd) == -1 )
         {
             wxLogSysError(_("can't flush file descriptor %d"), m_fd);
@@ -359,6 +461,34 @@ off_t wxFile::Seek(off_t ofs, wxSeekMode mode)
 {
     wxASSERT( IsOpened() );
 
+#ifdef __WXWINCE__
+    int origin;
+    switch ( mode ) {
+        default:
+            wxFAIL_MSG(_("unknown seek origin"));
+
+        case wxFromStart:
+            origin = FILE_BEGIN;
+            break;
+
+        case wxFromCurrent:
+            origin = FILE_CURRENT;
+            break;
+
+        case wxFromEnd:
+            origin = FILE_END;
+            break;
+    }
+
+    DWORD res = SetFilePointer((HANDLE) m_fd, ofs, 0, origin) ;
+    if (res == 0xFFFFFFFF && GetLastError() != NO_ERROR)
+    {
+        wxLogSysError(_("can't seek on file descriptor %d"), m_fd);
+        return wxInvalidOffset;
+    }
+    else
+        return (off_t)res;
+#else
     int origin;
     switch ( mode ) {
         default:
@@ -384,6 +514,7 @@ off_t wxFile::Seek(off_t ofs, wxSeekMode mode)
     }
     else
         return (off_t)iRc;
+#endif
 }
 
 // get current off_t
@@ -391,6 +522,16 @@ off_t wxFile::Tell() const
 {
     wxASSERT( IsOpened() );
 
+#ifdef __WXWINCE__
+    DWORD res = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_CURRENT) ;
+    if (res == 0xFFFFFFFF && GetLastError() != NO_ERROR)
+    {
+        wxLogSysError(_("can't get seek position on file descriptor %d"), m_fd);
+        return wxInvalidOffset;
+    }
+    else
+        return (off_t)res;
+#else
     int iRc = wxTell(m_fd);
     if ( iRc == -1 ) {
         wxLogSysError(_("can't get seek position on file descriptor %d"), m_fd);
@@ -398,6 +539,7 @@ off_t wxFile::Tell() const
     }
     else
         return (off_t)iRc;
+#endif
 }
 
 // get current file length
@@ -405,6 +547,15 @@ off_t wxFile::Length() const
 {
     wxASSERT( IsOpened() );
 
+#ifdef __WXWINCE__
+    DWORD off0 = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_CURRENT);
+    DWORD off1 = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_END);
+    off_t len = off1;
+
+    // Restore position
+    SetFilePointer((HANDLE) m_fd, off0, 0, FILE_BEGIN);
+    return len;
+#else
 #ifdef __VISUALC__
     int iRc = _filelength(m_fd);
 #else // !VC++
@@ -430,6 +581,7 @@ off_t wxFile::Length() const
     }
     else
         return (off_t)iRc;
+#endif
 }
 
 // is end of file reached?
@@ -437,6 +589,17 @@ bool wxFile::Eof() const
 {
     wxASSERT( IsOpened() );
 
+#ifdef __WXWINCE__
+    DWORD off0 = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_CURRENT);
+    DWORD off1 = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_END);
+    if (off0 == off1)
+        return TRUE;
+    else
+    {
+        SetFilePointer((HANDLE) m_fd, off0, 0, FILE_BEGIN);
+        return FALSE;
+    }
+#else
     int iRc;
 
 #if defined(__DOS__) || defined(__UNIX__) || defined(__GNUWIN32__) || defined( __MWERKS__ ) || defined(__SALFORDC__)
@@ -467,6 +630,7 @@ bool wxFile::Eof() const
     }
 
     return TRUE;
+#endif
 }
 
 // ============================================================================
@@ -553,7 +717,7 @@ bool wxTempFile::Commit()
         return FALSE;
     }
 
-    if ( wxRename(m_strTemp, m_strName) != 0 ) {
+    if ( wxRenameFile(m_strTemp, m_strName) != 0 ) {
         wxLogSysError(_("can't commit changes to file '%s'"), m_strName.c_str());
         return FALSE;
     }
index 3e39151adec4ecc637ae0dbc100ced1e7e55fe89..6babd6ea78410bf756579239faef7f9c9a72421b 100644 (file)
@@ -24,7 +24,7 @@
   #pragma hdrstop
 #endif  //__BORLANDC__
 
-#if wxUSE_CONFIG
+#if wxUSE_CONFIG && wxUSE_FILECONFIG
 
 #ifndef   WX_PRECOMP
   #include  "wx/string.h"
index 40af10e79ab2cc5e263758e997e6e03313af4480..3ccac13183f3116f5c8a6d57d8161943a225b963 100644 (file)
   #include  "wx/mac/private.h"  // includes mac headers
 #endif
 
+#ifdef __WXWINCE__
+#include "wx/msw/wince/time.h"
+#include "wx/msw/private.h"
+#else
 #include <time.h>
+#endif
 
-#ifndef __MWERKS__
+#ifdef __WXWINCE__
+// Nothing
+#elif !defined(__MWERKS__)
     #include <sys/types.h>
     #include <sys/stat.h>
 #else
@@ -84,7 +91,7 @@
     #include "wx/os2/private.h"
 #endif
 #if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
-#if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__)
+#if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) && !defined(__WXWINCE__)
     #include <direct.h>
     #include <dos.h>
     #include <io.h>
@@ -254,6 +261,8 @@ void wxPathList::Add (const wxString& path)
 // Add paths e.g. from the PATH environment variable
 void wxPathList::AddEnvList (const wxString& envVariable)
 {
+    // No environment variables on WinCE
+#ifndef __WXWINCE__
     static const wxChar PATH_TOKS[] =
 #ifdef __WINDOWS__
         /*
@@ -292,6 +301,7 @@ void wxPathList::AddEnvList (const wxString& envVariable)
 
         delete [] s;
     }
+#endif
 }
 
 // Given a full filename (with path), ensure that that file can
@@ -632,6 +642,8 @@ wxChar *wxExpandPath(wxChar *buf, const wxChar *name)
         } else
 #  endif
 #endif
+            // No env variables on WinCE
+#ifndef __WXWINCE__
 #ifdef __WXMSW__
         if (*s++ == wxT('$') && (*s == wxT('{') || *s == wxT(')')))
 #else
@@ -659,6 +671,8 @@ wxChar *wxExpandPath(wxChar *buf, const wxChar *name)
                     s++;
             }
         }
+#endif
+        // __WXWINCE__
     }
 
     /* Expand ~ and ~user */
@@ -738,6 +752,7 @@ wxContractPath (const wxString& filename, const wxString& envname, const wxStrin
 
   // Handle environment
   const wxChar *val = (const wxChar *) NULL;
+#ifndef __WXWINCE__
   wxChar *tcp = (wxChar *) NULL;
   if (envname != WXSTRINGCAST NULL && (val = wxGetenv (WXSTRINGCAST envname)) != NULL &&
      (tcp = wxStrstr (dest, val)) != NULL)
@@ -749,6 +764,7 @@ wxContractPath (const wxString& filename, const wxString& envname, const wxStrin
         wxStrcat (tcp, wxT("}"));
         wxStrcat (tcp, wxFileFunctionsBuffer);
     }
+#endif
 
   // Handle User's home (ignore root homes!)
   size_t len = 0;
@@ -1283,9 +1299,11 @@ wxCopyFile (const wxString& file1, const wxString& file2, bool overwrite)
 bool
 wxRenameFile (const wxString& file1, const wxString& file2)
 {
-  // Normal system call
+#ifndef __WXWINCE__
+    // Normal system call
   if ( wxRename (file1, file2) == 0 )
     return TRUE;
+#endif
 
   // Try to copy
   if (wxCopyFile(file1, file2)) {
@@ -1340,7 +1358,11 @@ bool wxMkdir(const wxString& dir, int perm)
   #endif
 #else  // !MSW, !DOS and !OS/2 VAC++
     (void)perm;
+#ifdef __WXWINCE__
+    if ( !CreateDirectory(dirname, NULL) )
+#else
     if ( wxMkDir(wxFNSTRINGCAST wxFNCONV(dirname)) != 0 )
+#endif
 #endif // !MSW/MSW
     {
         wxLogSysError(_("Directory '%s' couldn't be created"), dirname);
@@ -1355,15 +1377,15 @@ bool wxMkdir(const wxString& dir, int perm)
 bool wxRmdir(const wxString& dir, int WXUNUSED(flags))
 {
 #ifdef __VMS__
-  return FALSE; //to be changed since rmdir exists in VMS7.x
+    return FALSE; //to be changed since rmdir exists in VMS7.x
 #elif defined(__WXPM__)
-  return (::DosDeleteDir((PSZ)dir.c_str()) == 0);
+    return (::DosDeleteDir((PSZ)dir.c_str()) == 0);
 #else
 
-#ifdef __SALFORDC__
-  return FALSE; // What to do?
+#ifdef __WXWINCE__
+    return (CreateDirectory(dir, NULL) != 0);
 #else
-  return (wxRmDir(OS_FILENAME(dir)) == 0);
+    return (wxRmDir(OS_FILENAME(dir)) == 0);
 #endif
 
 #endif
@@ -1492,6 +1514,9 @@ wxString wxFindNextFile()
 // copies into buf.
 wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
 {
+#ifdef __WXWINCE__
+    return NULL;
+#else
     if ( !buf )
     {
         buf = new wxChar[sz + 1];
@@ -1607,6 +1632,9 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
 #if !wxUSE_UNICODE
     #undef cbuf
 #endif
+
+#endif
+    // __WXWINCE__
 }
 
 wxString wxGetCwd()
@@ -1622,37 +1650,42 @@ wxString wxGetCwd()
 bool wxSetWorkingDirectory(const wxString& d)
 {
 #if defined(__UNIX__) || defined(__WXMAC__) || defined(__DOS__)
-  return (chdir(wxFNSTRINGCAST d.fn_str()) == 0);
+    return (chdir(wxFNSTRINGCAST d.fn_str()) == 0);
 #elif defined(__WXPM__)
-  return (::DosSetCurrentDir((PSZ)d.c_str()) == 0);
+    return (::DosSetCurrentDir((PSZ)d.c_str()) == 0);
 #elif defined(__WINDOWS__)
-
+    
 #ifdef __WIN32__
-  return (bool)(SetCurrentDirectory(d) != 0);
+#ifdef __WXWINCE__
+    // No equivalent in WinCE
+    return FALSE;
 #else
-  // Must change drive, too.
-  bool isDriveSpec = ((strlen(d) > 1) && (d[1] == ':'));
-  if (isDriveSpec)
-  {
-    wxChar firstChar = d[0];
-
-    // To upper case
-    if (firstChar > 90)
-      firstChar = firstChar - 32;
-
-    // To a drive number
-    unsigned int driveNo = firstChar - 64;
-    if (driveNo > 0)
+    return (bool)(SetCurrentDirectory(d) != 0);
+#endif
+#else
+    // Must change drive, too.
+    bool isDriveSpec = ((strlen(d) > 1) && (d[1] == ':'));
+    if (isDriveSpec)
     {
-       unsigned int noDrives;
-       _dos_setdrive(driveNo, &noDrives);
+        wxChar firstChar = d[0];
+        
+        // To upper case
+        if (firstChar > 90)
+            firstChar = firstChar - 32;
+        
+        // To a drive number
+        unsigned int driveNo = firstChar - 64;
+        if (driveNo > 0)
+        {
+            unsigned int noDrives;
+            _dos_setdrive(driveNo, &noDrives);
+        }
     }
-  }
-  bool success = (chdir(WXSTRINGCAST d) == 0);
-
-  return success;
+    bool success = (chdir(WXSTRINGCAST d) == 0);
+    
+    return success;
 #endif
-
+    
 #endif
 }
 
@@ -1660,7 +1693,9 @@ bool wxSetWorkingDirectory(const wxString& d)
 // On non-Windows platform, probably just return the empty string.
 wxString wxGetOSDirectory()
 {
-#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
+#ifdef __WXWINCE__
+    return wxString(wxT("\\Windows"));
+#elif defined(__WINDOWS__) && !defined(__WXMICROWIN__)
     wxChar buf[256];
     GetWindowsDirectory(buf, 256);
     return wxString(buf);
@@ -1733,10 +1768,44 @@ void WXDLLEXPORT wxSplitPath(const wxChar *pszFileName,
 
 time_t WXDLLEXPORT wxFileModificationTime(const wxString& filename)
 {
+#ifdef __WXWINCE__
+    FILETIME creationTime, lastAccessTime, lastWriteTime;
+    HANDLE fileHandle = ::CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL,
+        0, FILE_ATTRIBUTE_NORMAL, 0);
+    if (fileHandle == INVALID_HANDLE_VALUE)
+        return 0;
+    else
+    {
+        if (GetFileTime(fileHandle, & creationTime, & lastAccessTime, & lastWriteTime))
+        {
+            CloseHandle(fileHandle);
+
+            wxDateTime dateTime;
+            FILETIME ftLocal;
+            if ( !::FileTimeToLocalFileTime(&lastWriteTime, &ftLocal) )
+            {
+                wxLogLastError(_T("FileTimeToLocalFileTime"));
+            }
+            
+            SYSTEMTIME st;
+            if ( !::FileTimeToSystemTime(&ftLocal, &st) )
+            {
+                wxLogLastError(_T("FileTimeToSystemTime"));
+            }
+            
+            dateTime.Set(st.wDay, wxDateTime::Month(st.wMonth - 1), st.wYear,
+                st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
+            return dateTime.GetTicks();
+        }
+        else
+            return 0;
+    }
+#else
     wxStructStat buf;
     wxStat( filename, &buf);
 
     return buf.st_mtime;
+#endif
 }
 
 
index e53a24eafe35fc42f11e99695ba411d21a1678e6..181b06705efdf7bd43e695253d62d89025ed73c5 100644 (file)
 #include "wx/msw/winundef.h"
 #endif
 
+#ifdef __WXWINCE__
+#include "wx/msw/private.h"
+#endif
+
 #if defined(__WXMAC__)
   #include  "wx/mac/private.h"  // includes mac headers
 #endif
@@ -564,8 +568,22 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp)
     // use the directory specified by the prefix
     SplitPath(prefix, &dir, &name, NULL /* extension */);
 
-#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
+#if defined(__WXWINCE__)
+    if (dir.empty())
+    {
+        // FIXME. Create \temp dir?
+        dir = wxT("\\");
+    }
+    path = dir + wxT("\\") + prefix;
+    int i = 1;
+    while (wxFileExists(path))
+    {
+        path = dir + wxT("\\") + prefix ;
+        path << i;
+        i ++;
+    }
 
+#elif defined(__WINDOWS__) && !defined(__WXMICROWIN__)
 #ifdef __WIN32__
     if ( dir.empty() )
     {
@@ -1284,7 +1302,7 @@ wxString wxFileName::GetFullPath( wxPathFormat format ) const
 // Return the short form of the path (returns identity on non-Windows platforms)
 wxString wxFileName::GetShortPath() const
 {
-#if defined(__WXMSW__) && defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WXMSW__) && defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
     wxString path(GetFullPath());
     wxString pathOut;
     DWORD sz = ::GetShortPathName(path, NULL, 0);
index 7d6cb2f11eaa9dfacd6a619baae0154225a8e104..fa6dcd0d65eb693774c2c590cea1f6861060ee82 100644 (file)
     #include "wx/intl.h"
 #endif //WX_PRECOMP
 
+#if defined(__WXMSW__)
+  #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
+  #include  "wx/msw/winundef.h"
+#endif
+
 #include "wx/fontmap.h"
 #include "wx/fmappriv.h"
 
index d448cd623833a3865705efae2e7f27719f95fb39..764a4ed47e783d7a93c9ef7be8f433b1322afa23 100644 (file)
 #endif // WX_PRECOMP
 
 #include "wx/gdicmn.h"
+
+#if defined(__WXMSW__)
+  #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
+  #include  "wx/msw/winundef.h"
+#endif
+
 #include "wx/fontutil.h" // for wxNativeFontInfo
 #include "wx/fontmap.h"
 
index d858e43dd0c44ef957e534c226aff33f352eaaa9..171639e6e38555ce9d6d2a8fe624042e4c8d5a42 100644 (file)
     #include "wx/intl.h"
 #endif // PCH
 
-#include "wx/fontmap.h"
-#include "wx/fmappriv.h"
-
 #if wxUSE_CONFIG
     #include "wx/config.h"
 #endif // wxUSE_CONFIG
 
+#if defined(__WXMSW__)
+  #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
+  #include  "wx/msw/winundef.h"
+#endif
+
+#include "wx/fontmap.h"
+#include "wx/fmappriv.h"
 #include "wx/fontutil.h"
 #include "wx/msgdlg.h"
 #include "wx/fontdlg.h"
index 7bf932f207d0664789196739cccb6e0d563d255e..445f18f4c541a290e7b17e32d31ddac6adc54af4 100644 (file)
@@ -436,10 +436,13 @@ wxString wxColourDatabase::FindName (const wxColour& colour) const
 
 void wxInitializeStockLists()
 {
-  wxTheBrushList = new wxBrushList;
-  wxThePenList = new wxPenList;
-  wxTheFontList = new wxFontList;
-  wxTheBitmapList = new wxBitmapList;
+    wxTheColourDatabase = new wxColourDatabase;
+    wxTheColourDatabase->Initialize();
+
+    wxTheBrushList = new wxBrushList;
+    wxThePenList = new wxPenList;
+    wxTheFontList = new wxFontList;
+    wxTheBitmapList = new wxBitmapList;
 }
 
 void wxInitializeStockObjects ()
index c25c12cd866653d23ffe38d4378390e24f76515a..fe406b7be92f1289a74f76eb32490bbdc4314d66 100644 (file)
@@ -426,6 +426,11 @@ int wxEntryReal(int& argc, wxChar **argv)
 // OnFatalException() if necessary
 #if defined(__WXMSW__) && wxUSE_ON_FATAL_EXCEPTION
 
+#ifdef __WXWINCE__
+// For ExitThread
+#include "wx/msw/private.h"
+#endif
+
 extern unsigned long wxGlobalSEHandler();
 
 int wxEntry(int& argc, wxChar **argv)
@@ -436,7 +441,11 @@ int wxEntry(int& argc, wxChar **argv)
     }
     __except ( wxGlobalSEHandler() )
     {
+#ifdef __WXWINCE__
+        ::ExitThread(3); // the same exit code as abort()
+#else
         ::ExitProcess(3); // the same exit code as abort()
+#endif
 
 #if !defined(_MSC_VER) || _MSC_VER < 1300
         // this code is unreachable but put it here to suppress warnings
index b8d28fdb0d4ccbc223659cbbb7c307869ecd59fd..aef903c92b6b1562096842fa75e2e75d20a3e4d6 100644 (file)
 #if wxUSE_INTL
 
 // standard headers
+
+#ifndef __WXWINCE__
 #include <locale.h>
+#endif
+
 #include <ctype.h>
 #include <stdlib.h>
 #ifdef HAVE_LANGINFO_H
     #include "wx/dynarray.h"
 #endif // WX_PRECOMP
 
+#ifdef __WIN32__
+    #include "wx/msw/private.h"
+#elif defined(__UNIX_LIKE__)
+    #include "wx/fontmap.h"         // for CharsetToEncoding()
+#endif
+
 #include "wx/file.h"
 #include "wx/tokenzr.h"
 #include "wx/module.h"
 #include "wx/encconv.h"
 #include "wx/hashmap.h"
 
-#ifdef __WIN32__
-    #include "wx/msw/private.h"
-#elif defined(__UNIX_LIKE__)
-    #include "wx/fontmap.h"         // for CharsetToEncoding()
-#endif
-
 #if defined(__WXMAC__)
   #include  "wx/mac/private.h"  // includes mac headers
 #endif
@@ -308,9 +312,11 @@ static wxString GetFullSearchPath(const wxChar *lang)
 
     // LC_PATH is a standard env var containing the search path for the .mo
     // files
+#ifndef __WXWINCE__
     const wxChar *pszLcPath = wxGetenv(wxT("LC_PATH"));
     if ( pszLcPath != NULL )
         searchPath << GetAllMsgCatalogSubdirs(pszLcPath, lang);
+#endif
 
 #ifdef __UNIX__
     // add some standard ones and the one in the tree where wxWin was installed:
@@ -626,7 +632,24 @@ bool wxLocale::Init(const wxChar *szName,
     wxCHECK_MSG( szLocale, FALSE, _T("no locale to set in wxLocale::Init()") );
   }
 
+#ifdef __WXWINCE__
+  // FIXME: I'm guessing here
+  wxChar localeName[256];
+  int ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLANGUAGE, localeName,
+      256);
+  if (ret != 0)
+  {
+    m_pszOldLocale = wxStrdup(localeName);      
+  }
+  else
+    m_pszOldLocale = NULL;
+
+  // TODO: how to find languageId
+  // SetLocaleInfo(languageId, SORT_DEFAULT, localeName);
+#else
   m_pszOldLocale = wxStrdup(wxSetlocale(LC_ALL, szLocale));
+#endif
+
   if ( m_pszOldLocale == NULL )
     wxLogError(_("locale '%s' can not be set."), szLocale);
 
@@ -768,7 +791,10 @@ bool wxLocale::Init(int language, int flags)
             int codepage = -1;
             wxUint32 lcid = MAKELCID(MAKELANGID(info->WinLang, info->WinSublang),
                                      SORT_DEFAULT);
+            // FIXME
+#ifndef __WXWINCE__
             SetThreadLocale(lcid);
+#endif
             // NB: we must translate LCID to CRT's setlocale string ourselves,
             //     because SetThreadLocale does not modify change the
             //     interpretation of setlocale(LC_ALL, "") call:
@@ -792,7 +818,10 @@ bool wxLocale::Init(int language, int flags)
             }
             else
             {
+            // FIXME
+#ifndef __WXWINCE__
                 retloc = wxSetlocale(LC_ALL, locale);
+#endif
 #ifdef SETLOCALE_FAILS_ON_UNICODE_LANGS
                 if (codepage == 0 && (const wxChar*)retloc == NULL)
                 {
@@ -804,7 +833,12 @@ bool wxLocale::Init(int language, int flags)
     }
     else
     {
+            // FIXME
+#ifndef __WXWINCE__
         retloc = wxSetlocale(LC_ALL, wxEmptyString);
+#else
+        retloc = NULL;
+#endif
 #ifdef SETLOCALE_FAILS_ON_UNICODE_LANGS
         if ((const wxChar*)retloc == NULL)
         {
@@ -1524,7 +1558,12 @@ const wxLanguageInfo *wxLocale::FindLanguageInfo(const wxString& locale)
 
 wxString wxLocale::GetSysName() const
 {
+            // FIXME
+#ifndef __WXWINCE__
     return wxSetlocale(LC_ALL, NULL);
+#else
+    return wxEmptyString;
+#endif
 }
 
 // clean up
@@ -1540,7 +1579,10 @@ wxLocale::~wxLocale()
 
     // restore old locale
     wxSetLocale(m_pOldLocale);
+    // FIXME
+#ifndef __WXWINCE__
     wxSetlocale(LC_ALL, m_pszOldLocale);
+#endif
     free((wxChar *)m_pszOldLocale);     // const_cast
 }
 
index 62200c7e5efdc1700cbe8bd0f0f78e06467b39b3..8c6d14fdba637dc1127dfa774ee85dbff31824bc 100644 (file)
@@ -519,7 +519,11 @@ void wxListBase::Sort(const wxSortCompareFunction compfunc)
     }
 
     // sort the array
-    qsort((void *)objArray,num,sizeof(wxObject *),compfunc);
+    qsort((void *)objArray,num,sizeof(wxObject *),
+#ifdef __WXWINCE__
+        (int (__cdecl *)(const void *,const void *))
+#endif
+        compfunc);
 
     // put the sorted pointers back into the list
     objPtr = objArray;
@@ -722,7 +726,12 @@ bool wxStringList::Member(const wxChar *s) const
     return FALSE;
 }
 
+#ifdef __WXWINCE__
+extern "C" int __cdecl
+#else
 extern "C" int LINKAGEMODE
+#endif
+
 wx_comparestrings(const void *arg1, const void *arg2)
 {
   wxChar **s1 = (wxChar **) arg1;
index 897ee542a51cd7bb287f37f0ca43c1804344e079..0b2c63a2053367ced14c83a7d23f840e4c07cf9d 100644 (file)
 #include "wx/wxchar.h"
 
 // other standard headers
+#ifndef __WXWINCE__
 #include <errno.h>
+#endif
+
 #include <stdlib.h>
+
+#ifndef __WXWINCE__
 #include <time.h>
+#else
+#include "wx/msw/wince/time.h"
+#endif
 
 #if defined(__WINDOWS__)
     #include "wx/msw/private.h" // includes windows.h
@@ -179,7 +187,11 @@ void wxVLogFatalError(const wxChar *szFormat, va_list argptr)
 
     wxSafeShowMessage(_T("Fatal Error"), s_szBuf);
 
+#ifdef __WXWINCE__
+    ExitThread(3);
+#else
     abort();
+#endif
 }
 
 void wxLogFatalError(const wxChar *szFormat, ...)
@@ -455,7 +467,11 @@ void wxLog::DoLog(wxLogLevel level, const wxChar *szString, time_t t)
             DoLogString(wxString(_("Fatal error: ")) + szString, t);
             DoLogString(_("Program aborted."), t);
             Flush();
+#ifdef __WXWINCE__
+            ExitThread(3);
+#else
             abort();
+#endif
             break;
 
         case wxLOG_Error:
index 221de1a5b2e9f99957bd97e4672071e4a3729a6d..0a00187d3b033a3a65635deb14f6766d0eabb6d1 100644 (file)
@@ -151,9 +151,9 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
             }
             else {
                 // is it a function key?
-                if ( current[0U] == 'f' && isdigit(current[1U]) &&
+                if ( current[0U] == 'f' && wxIsdigit(current[1U]) &&
                      (current.Len() == 2 ||
-                     (current.Len() == 3 && isdigit(current[2U]))) ) {
+                     (current.Len() == 3 && wxIsdigit(current[2U]))) ) {
                     int n;
                     wxSscanf(current.c_str() + 1, wxT("%d"), &n);
 
index d3d894f41a5cc16b03c367ce663d836892e65b8b..3b2f3dc9a11fcfea95a77942cf0d7d530edafd1d 100644 (file)
@@ -50,6 +50,7 @@
 
 #ifdef __WXMSW__
 #include <windows.h>
+#include "wx/msw/private.h"
 #endif
 
 #include <stdlib.h>
index e96257c8b6898816d905566c336c034f85b595b2..62ffa7c7816b51818e749aa6f19f622d7632e528 100644 (file)
@@ -43,7 +43,9 @@
     #include <sys/types.h>
 #endif
 
+#ifndef __WXWINCE__
 #include <regex.h>
+#endif
 
 #include "wx/regex.h"
 
index 21cd1616796a37d5bf854bd05e9b365f000718c5..f11495333211ad3a537ec6e7959e361597030993 100644 (file)
@@ -44,7 +44,7 @@
     #include <windows.h>
 #endif
 
-#if defined(__WIN32__) && !defined(HAVE_FTIME) && !defined(__MWERKS__)
+#if defined(__WIN32__) && !defined(HAVE_FTIME) && !defined(__MWERKS__) && !defined(__WXWINCE__)
     #define HAVE_FTIME
 #endif
 
 #   undef HAVE_GETTIMEOFDAY
 #endif
 
+#ifndef __WXWINCE__
 #include <time.h>
-#ifndef __WXMAC__
+#else
+#include "wx/msw/private.h"
+#include "wx/msw/wince/time.h"
+#endif
+
+#if !defined(__WXMAC__) && !defined(__WXWINCE__)
     #include <sys/types.h>      // for time_t
 #endif
 
@@ -313,11 +319,16 @@ wxLongLong wxGetLocalTimeMillis()
     val *= wxGetLocalTime();
 
 // GRG: This will go soon as all WIN32 seem to have ftime
+// JACS: unfortunately not. WinCE doesn't have it.
 #if defined (__WIN32__)
     // If your platform/compiler needs to use two different functions
     // to get ms resolution, please do NOT just shut off these warnings,
     // drop me a line instead at <guille@iies.es>
+
+    // FIXME
+#ifndef __WXWINCE__
     #warning "Possible clock skew bug in wxGetLocalTimeMillis()!"
+#endif
 
     SYSTEMTIME st;
     ::GetLocalTime(&st);
index 7e7b6efff5a4af91f0e8e3f210dcd08500954784..68c41c71483002570de3616bcd19aca68c1d4c80 100644 (file)
     #include "wx/msw/private.h"
 #endif
 
+#ifndef __WXWINCE__
 #include <errno.h>
+#endif
+
 #include <ctype.h>
 #include <string.h>
 #include <stdlib.h>
index 29d51e71b88755766e1644c39355683ac6fd656c..7ac3f254a2fd960f5c32a4910c20b8277d4c25e6 100644 (file)
@@ -1017,7 +1017,7 @@ bool wxString::IsAscii() const
 {
   const wxChar *s = (const wxChar*) *this;
   while(*s){
-    if(!isascii(*s)) return(FALSE);
+    if(!wxIsascii(*s)) return(FALSE);
     s++;
   }
   return(TRUE);
index eefe29c5c971788a5c5a625f21b68e588eaeb2c7..3a131a372fd6c2b688bfa4c24d6a1aeede5da984 100644 (file)
     #include "wx/statusbr.h"
 #endif // wxUSE_GUI
 
+#ifndef __WXWINCE__
 #include <time.h>
+#else
+#include "wx/msw/wince/time.h"
+#endif
 
 #ifndef __MWERKS__
     #include <sys/types.h>
index 35b661342152f1fbe8368d0d28e78f1c63db8a44..7ca1758c3d9b9110773173df04edbd11d372df20 100644 (file)
@@ -246,7 +246,7 @@ void wxTextValidator::OnChar(wxKeyEvent& event)
              (
               ((m_validatorStyle & wxFILTER_INCLUDE_CHAR_LIST) && !IsInCharIncludeList(wxString((char) keyCode, 1))) ||
               ((m_validatorStyle & wxFILTER_EXCLUDE_CHAR_LIST) && !IsNotInCharExcludeList(wxString((char) keyCode, 1))) ||
-              ((m_validatorStyle & wxFILTER_ASCII) && !isascii(keyCode)) ||
+              ((m_validatorStyle & wxFILTER_ASCII) && !wxIsascii(keyCode)) ||
               ((m_validatorStyle & wxFILTER_ALPHA) && !wxIsalpha(keyCode)) ||
               ((m_validatorStyle & wxFILTER_ALPHANUMERIC) && !wxIsalnum(keyCode)) ||
               ((m_validatorStyle & wxFILTER_NUMERIC) && !wxIsdigit(keyCode)
@@ -272,7 +272,7 @@ static bool wxIsNumeric(const wxString& val)
     {
         // Allow for "," (French) as well as "." -- in future we should
         // use wxSystemSettings or other to do better localisation
-        if ((!isdigit(val[i])) && (val[i] != '.') && (val[i] != ',') && (val[i] != wxT('e')) && (val[i] != wxT('E')) && (val[i] != wxT('+')) && (val[i] != wxT('-')))
+        if ((!wxIsdigit(val[i])) && (val[i] != '.') && (val[i] != ',') && (val[i] != wxT('e')) && (val[i] != wxT('E')) && (val[i] != wxT('+')) && (val[i] != wxT('-')))
             return FALSE;
     }
     return TRUE;
index 6b2a005483c7cd0af6cc137d6627d79212cf19b1..571d165d3d6c3b0ad445d53f23c48cec9915e2ef 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <locale.h>
+
+#ifndef __WXWINCE__
 #include <time.h>
+#include <locale.h>
+#else
+#include "wx/msw/wince/time.h"
+#endif
 
 #ifndef WX_PRECOMP
   #include "wx/defs.h"
index 4b4e47e045eb2abf31da476a0fcfd802427a97ee..f3cd26aa0be35fbbc85e4f8400a2d3da69b10a6a 100644 (file)
@@ -551,7 +551,7 @@ static bool GetRGBFromName(const char *inname, bool *isNone,
         return TRUE;
     }
 
-    name = strdup(inname);
+    name = wxStrdup(inname);
 
     // theRGBRecords[] has no names with spaces, and no grey, but a
     // lot of gray...
@@ -638,7 +638,7 @@ static const char *ParseColor(const char *data)
         {
             if ( *r != *q )
                 continue;
-            if ( !isspace((int) (*(r - 1))) )
+            if ( !wxIsspace((int) (*(r - 1))) )
                 continue;
             p = r;
             for (;;)
index 045fa1b2b9d50a2c4fe2e7b2e012be061f9a2cab..08e424f7d78dbf2c35c611381763dbca1b06a00a 100644 (file)
@@ -63,7 +63,9 @@
 //         older releases don't, but it should be verified and the checks modified
 //         accordingly.
 #if !defined(__GNUWIN32__) || (defined(__MINGW32_MAJOR_VERSION) && __MINGW32_MAJOR_VERSION >= 1)
+#if !defined(__WXWINCE__)
   #include <direct.h>
+#endif
   #include <stdlib.h>
   #include <ctype.h>
 #endif
index 068d735b617fa0188c905625fc73e07bdbb5cccb..4b9fbf995852ddbd8ed7703f405e859035a22dac 100644 (file)
@@ -717,7 +717,7 @@ bool wxGridCellTextEditor::IsAcceptedKey(wxKeyEvent& event)
 
             default:
                 // accept 8 bit chars too if isprint() agrees
-                if ( (keycode < 255) && (isprint(keycode)) )
+                if ( (keycode < 255) && (wxIsprint(keycode)) )
                     return TRUE;
         }
     }
diff --git a/src/msw/wince/time.cpp b/src/msw/wince/time.cpp
new file mode 100644 (file)
index 0000000..afd4aa4
--- /dev/null
@@ -0,0 +1,132 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/msw/wince/time.cpp
+// Purpose:     Implements missing time functionality for WinCE
+// Author:      
+// Modified by: 
+// Created:     2003-07-10
+// RCS-ID:      $Id$
+// Copyright:   
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ===========================================================================
+// declarations
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// headers
+// ---------------------------------------------------------------------------
+
+#ifdef __GNUG__
+    #pragma implementation "window.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include <windows.h>
+    #include "wx/msw/winundef.h"
+#endif
+
+#include "wx/msw/wince/time.h"
+
+long timezone = 0;
+
+// Hint: use GetSystemTime()
+
+struct tm * localtime(const time_t *)
+{
+    // TODO
+    return NULL;
+
+    // Possible implementation
+#if 0
+  // Localtime for WinCE
+  // By martin brown (mpatalberta@yahoo.com)
+  // This is really stupid, converting FILETIME to timeval back and
+  // forth.  It assumes FILETIME and DWORDLONG are the same structure
+  // internally.
+ TIME_ZONE_INFORMATION pTz;
+ const unsigned short int __mon_yday[2][13] =
+  {
+     /* Normal years.  */
+     { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
+    /* Leap years.  */
+     { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
+   };
+
+
+  ULARGE_INTEGER _100ns;
+  ::GetTimeZoneInformation(&pTz);
+
+  // FIXME
+  _100ns.QuadPart = (DWORDLONG) *t * 10000 * 1000 /* + ACE_Time_Value::FILETIME_to_timval_skew */;
+  FILETIME file_time;
+  file_time.dwLowDateTime = _100ns.LowPart;
+  file_time.dwHighDateTime = _100ns.HighPart;
+  
+  FILETIME localtime;
+  SYSTEMTIME systime;
+  FileTimeToLocalFileTime (&file_time, &localtime);
+  FileTimeToSystemTime (&localtime, &systime);
+
+  res->tm_hour = systime.wHour;
+
+  if(pTz.DaylightBias!=0)
+  {
+ res->tm_isdst = 1;
+  }
+  else
+  {
+ res->tm_isdst = 1;
+  }
+
+  int iLeap;
+  iLeap = (res->tm_year % 4 == 0 && (res->tm_year% 100 != 0 || res->tm_year % 400 == 0));
+  // based on leap select which group to use
+  
+  res->tm_mday = systime.wDay;
+  res->tm_min = systime.wMinute;
+  res->tm_mon = systime.wMonth;
+  res->tm_sec = systime.wSecond;
+  res->tm_wday = systime.wDayOfWeek;
+  res->tm_yday = __mon_yday[iLeap][systime.wMonth] + systime.wDay;
+  res->tm_year = systime.wYear;// this the correct year but bias the value to start at the 1900
+  res->tm_year = res->tm_year - 1900;
+
+  return res;
+#endif
+}
+
+time_t time(time_t *)
+{
+    // TODO
+    return 0;
+}
+
+size_t wcsftime(wchar_t *, size_t, const wchar_t *,
+        const struct tm *)
+{
+    // TODO
+    return 0;
+}
+
+time_t mktime(struct tm *)
+{
+    // TODO
+    return 0;
+}
+
+struct tm * gmtime(const time_t *)
+{
+    // TODO
+    return NULL;
+}
+