#if defined(__WXMSW__)
#include "wx/msw/private.h"
#include "wx/msw/registry.h"
+ #include <shellapi.h> // needed for SHELLEXECUTEINFO
#endif
#if wxUSE_BASE
return dir;
}
-int wxGetOsVersion(int *verMaj, int *verMin)
+bool wxIsPlatformLittleEndian()
{
- // we want this function to work even if there is no wxApp
- wxConsoleAppTraits traitsConsole;
- wxAppTraits *traits = wxTheApp ? wxTheApp->GetTraits() : NULL;
- if ( ! traits )
- traits = &traitsConsole;
+ // Are we little or big endian? This method is from Harbison & Steele.
+ union
+ {
+ long l;
+ char c[sizeof(long)];
+ } u;
+ u.l = 1;
- wxToolkitInfo& info = traits->GetToolkitInfo();
- if ( verMaj )
- *verMaj = info.versionMajor;
- if ( verMin )
- *verMin = info.versionMinor;
- return info.os;
+ return u.c[0] == 1;
}
+
/*
* Class to make it easier to specify platform-dependent values
*/
bool wxPlatform::Is(int platform)
{
#ifdef __WXMSW__
- if (platform == wxMSW)
+ if (platform == wxOS_WINDOWS)
return true;
#endif
#ifdef __WXWINCE__
- if (platform == wxWinCE)
+ if (platform == wxOS_WINDOWS_CE)
return true;
#endif
+
+#if 0
+
+// FIXME: wxWinPocketPC and wxWinSmartPhone are unknown symbols
+
#if defined(__WXWINCE__) && defined(__POCKETPC__)
if (platform == wxWinPocketPC)
return true;
if (platform == wxWinSmartPhone)
return true;
#endif
+
+#endif
+
#ifdef __WXGTK__
- if (platform == wxGTK)
+ if (platform == wxPORT_GTK)
return true;
#endif
#ifdef __WXMAC__
- if (platform == wxMac)
+ if (platform == wxPORT_MAC)
return true;
#endif
#ifdef __WXX11__
- if (platform == wxX11)
+ if (platform == wxPORT_X11)
return true;
#endif
#ifdef __UNIX__
- if (platform == wxUnix)
+ if (platform == wxOS_UNIX)
return true;
#endif
#ifdef __WXMGL__
- if (platform == wxMGL)
+ if (platform == wxPORT_MGL)
return true;
#endif
-#ifdef __WXOS2__
- if (platform == wxOS2)
+#ifdef __OS2__
+ if (platform == wxOS_OS2)
+ return true;
+#endif
+#ifdef __WXPM__
+ if (platform == wxPORT_PM)
return true;
#endif
#ifdef __WXCOCOA__
- if (platform == wxCocoa)
+ if (platform == wxPORT_MAC)
return true;
#endif
wxCurrentId = id + 1;
}
-#if wxUSE_MENUS
-
// ----------------------------------------------------------------------------
// Menu accelerators related functions
// ----------------------------------------------------------------------------
wxChar *wxStripMenuCodes(const wxChar *in, wxChar *out)
{
+#if wxUSE_MENUS
wxString s = wxMenuItem::GetLabelFromText(in);
+#else
+ wxString str(in);
+ wxString s = wxStripMenuCodes(str);
+#endif // wxUSE_MENUS
if ( out )
{
// go smash their buffer if it's not big enough - I love char * params
return out;
}
-wxString wxStripMenuCodes(const wxString& in)
+wxString wxStripMenuCodes(const wxString& in, int flags)
{
+ wxASSERT_MSG( flags, _T("this is useless to call without any flags") );
+
wxString out;
size_t len = in.length();
for ( size_t n = 0; n < len; n++ )
{
wxChar ch = in[n];
- if ( ch == _T('&') )
+ if ( (flags & wxStrip_Mnemonics) && ch == _T('&') )
{
// skip it, it is used to introduce the accel char (or to quote
// itself in which case it should still be skipped): note that it
ch = in[n];
}
}
- else if ( ch == _T('\t') )
+ else if ( (flags & wxStrip_Accel) && ch == _T('\t') )
{
// everything after TAB is accel string, exit the loop
break;
return out;
}
-#endif // wxUSE_MENUS
-
// ----------------------------------------------------------------------------
// Window search functions
// ----------------------------------------------------------------------------
wxFindMenuItemId (wxFrame * frame, const wxString& menuString, const wxString& itemString)
{
#if wxUSE_MENUS
- wxMenuBar *menuBar = frame->GetMenuBar ();
- if ( menuBar )
- return menuBar->FindMenuItem (menuString, itemString);
+ wxMenuBar *menuBar = frame->GetMenuBar ();
+ if ( menuBar )
+ return menuBar->FindMenuItem (menuString, itemString);
#endif // wxUSE_MENUS
- return wxNOT_FOUND;
+ return wxNOT_FOUND;
}
// Try to find the deepest child that contains 'pt'.
wxPoint pos = win->GetPosition();
wxSize sz = win->GetSize();
- if ( !win->IsTopLeven() && win->GetParent() )
+ if ( !win->IsTopLevel() && win->GetParent() )
{
pos = win->GetParent()->ClientToScreen(pos);
}
wxRect rect(pos, sz);
- if (rect.Inside(pt))
+ if (rect.Contains(pt))
return win;
return NULL;