#include <stdlib.h>
#include <string.h>
-#if !defined(__WATCOMC__)
+#if !wxONLY_WATCOM_EARLIER_THAN(1,4)
#if !(defined(_MSC_VER) && (_MSC_VER > 800))
#include <errno.h>
#endif
#include "wx/msw/wince/time.h"
#endif
+#ifdef __WXMAC__
+#include "wx/mac/private.h"
+#ifndef __DARWIN__
+#include "InternetConfig.h"
+#endif
+#endif
+
#if !defined(__MWERKS__) && !defined(__WXWINCE__)
#include <sys/types.h>
#include <sys/stat.h>
// common data
// ----------------------------------------------------------------------------
-#if WXWIN_COMPATIBILITY_2_2
- const wxChar *wxInternalErrorStr = wxT("wxWidgets Internal Error");
- const wxChar *wxFatalErrorStr = wxT("wxWidgets Fatal Error");
-#endif // WXWIN_COMPATIBILITY_2_2
-
// ============================================================================
// implementation
// ============================================================================
return info.os;
}
+/*
+ * Class to make it easier to specify platform-dependent values
+ */
+
+wxArrayInt* wxPlatform::sm_customPlatforms = NULL;
+
+void wxPlatform::Copy(const wxPlatform& platform)
+{
+ m_longValue = platform.m_longValue;
+ m_doubleValue = platform.m_doubleValue;
+ m_stringValue = platform.m_stringValue;
+}
+
+wxPlatform wxPlatform::If(int platform, long value)
+{
+ if (Is(platform))
+ return wxPlatform(value);
+ else
+ return wxPlatform();
+}
+
+wxPlatform wxPlatform::IfNot(int platform, long value)
+{
+ if (!Is(platform))
+ return wxPlatform(value);
+ else
+ return wxPlatform();
+}
+
+wxPlatform& wxPlatform::ElseIf(int platform, long value)
+{
+ if (Is(platform))
+ m_longValue = value;
+ return *this;
+}
+
+wxPlatform& wxPlatform::ElseIfNot(int platform, long value)
+{
+ if (!Is(platform))
+ m_longValue = value;
+ return *this;
+}
+
+wxPlatform wxPlatform::If(int platform, double value)
+{
+ if (Is(platform))
+ return wxPlatform(value);
+ else
+ return wxPlatform();
+}
+
+wxPlatform wxPlatform::IfNot(int platform, double value)
+{
+ if (!Is(platform))
+ return wxPlatform(value);
+ else
+ return wxPlatform();
+}
+
+wxPlatform& wxPlatform::ElseIf(int platform, double value)
+{
+ if (Is(platform))
+ m_doubleValue = value;
+ return *this;
+}
+
+wxPlatform& wxPlatform::ElseIfNot(int platform, double value)
+{
+ if (!Is(platform))
+ m_doubleValue = value;
+ return *this;
+}
+
+wxPlatform wxPlatform::If(int platform, const wxString& value)
+{
+ if (Is(platform))
+ return wxPlatform(value);
+ else
+ return wxPlatform();
+}
+
+wxPlatform wxPlatform::IfNot(int platform, const wxString& value)
+{
+ if (!Is(platform))
+ return wxPlatform(value);
+ else
+ return wxPlatform();
+}
+
+wxPlatform& wxPlatform::ElseIf(int platform, const wxString& value)
+{
+ if (Is(platform))
+ m_stringValue = value;
+ return *this;
+}
+
+wxPlatform& wxPlatform::ElseIfNot(int platform, const wxString& value)
+{
+ if (!Is(platform))
+ m_stringValue = value;
+ return *this;
+}
+
+wxPlatform& wxPlatform::Else(long value)
+{
+ m_longValue = value;
+ return *this;
+}
+
+wxPlatform& wxPlatform::Else(double value)
+{
+ m_doubleValue = value;
+ return *this;
+}
+
+wxPlatform& wxPlatform::Else(const wxString& value)
+{
+ m_stringValue = value;
+ return *this;
+}
+
+void wxPlatform::AddPlatform(int platform)
+{
+ if (!sm_customPlatforms)
+ sm_customPlatforms = new wxArrayInt;
+ sm_customPlatforms->Add(platform);
+}
+
+void wxPlatform::ClearPlatforms()
+{
+ delete sm_customPlatforms;
+ sm_customPlatforms = NULL;
+}
+
+/// Function for testing current platform
+
+bool wxPlatform::Is(int platform)
+{
+#ifdef __WXMSW__
+ if (platform == wxMSW)
+ return true;
+#endif
+#ifdef __WXWINCE__
+ if (platform == wxWinCE)
+ return true;
+#endif
+#if defined(__WXWINCE__) && defined(__POCKETPC__)
+ if (platform == wxWinPocketPC)
+ return true;
+#endif
+#if defined(__WXWINCE__) && defined(__SMARTPHONE__)
+ if (platform == wxWinSmartPhone)
+ return true;
+#endif
+#ifdef __WXGTK__
+ if (platform == wxGTK)
+ return true;
+#endif
+#ifdef __WXMAC__
+ if (platform == wxMac)
+ return true;
+#endif
+#ifdef __WXX11__
+ if (platform == wxX11)
+ return true;
+#endif
+#ifdef __UNIX__
+ if (platform == wxUnix)
+ return true;
+#endif
+#ifdef __WXMGL__
+ if (platform == wxMGL)
+ return true;
+#endif
+#ifdef __WXOS2__
+ if (platform == wxOS2)
+ return true;
+#endif
+#ifdef __WXCOCOA__
+ if (platform == wxCocoa)
+ return true;
+#endif
+
+ if (sm_customPlatforms && sm_customPlatforms->Index(platform) != wxNOT_FOUND)
+ return true;
+
+ return false;
+}
+
// ----------------------------------------------------------------------------
// network and user id functions
// ----------------------------------------------------------------------------
url.Prepend(wxT("http://"));
#if defined(__WXMSW__)
+
+#if wxUSE_IPC
if ( flags & wxBROWSER_NEW_WINDOW )
{
// ShellExecuteEx() opens the URL in an existing window by default so
}
}
}
+#endif // wxUSE_IPC
WinStruct<SHELLEXECUTEINFO> sei;
sei.lpFile = url.c_str();
#endif // __WXDEBUG__
return true;
}
+#elif defined(__WXMAC__)
+ OSStatus err;
+ ICInstance inst;
+ SInt32 startSel;
+ SInt32 endSel;
+
+ err = ICStart(&inst, 'STKA'); // put your app creator code here
+ if (err == noErr)
+ {
+#if !TARGET_CARBON
+ err = ICFindConfigFile(inst, 0, NULL);
+#endif
+ if (err == noErr)
+ {
+ ConstStr255Param hint = 0;
+ startSel = 0;
+ endSel = url.Length();
+ err = ICLaunchURL(inst, hint, url.fn_str(), endSel, &startSel, &endSel);
+ if (err != noErr)
+ wxLogDebug(wxT("ICLaunchURL error %d"), (int) err);
+ }
+ ICStop(inst);
+ return true;
+ }
+ else
+ {
+ wxLogDebug(wxT("ICStart error %d"), (int) err);
+ return false;
+ }
#elif wxUSE_MIMETYPE
// Non-windows way
- wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension (_T("html"));
+ bool ok = false;
+ wxString cmd;
+
+ wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(_T("html"));
if ( ft )
{
wxString mt;
ft->GetMimeType(&mt);
- wxString cmd;
- bool ok = ft->GetOpenCommand(&cmd, wxFileType::MessageParameters(url));
+ ok = ft->GetOpenCommand(&cmd, wxFileType::MessageParameters(url));
delete ft;
-
- if ( !ok || cmd.empty() )
- {
- // fallback to checking for the BROWSER environment variable
- cmd = wxGetenv(wxT("BROWSER"));
- if ( !cmd.empty() )
- cmd << _T(' ') << url;
- }
-
- if ( !cmd.empty() && wxExecute(cmd) )
- return true;
}
- else // no file type for html extension
+
+ if ( !ok || cmd.empty() )
{
- wxLogError(_T("No default application configured for HTML files."));
+ // fallback to checking for the BROWSER environment variable
+ cmd = wxGetenv(wxT("BROWSER"));
+ if ( !cmd.empty() )
+ cmd << _T(' ') << url;
}
+
+ ok = ( !cmd.empty() && wxExecute(cmd) );
+ if (ok)
+ return ok;
+
+ // no file type for HTML extension
+ wxLogError(_T("No default application configured for HTML files."));
+
#endif // !wxUSE_MIMETYPE && !__WXMSW__
wxLogSysError(_T("Failed to open URL \"%s\" in default browser."),
#if wxUSE_COLOURDLG
-wxColour wxGetColourFromUser(wxWindow *parent, const wxColour& colInit)
+wxColour wxGetColourFromUser(wxWindow *parent, const wxColour& colInit, const wxString& caption)
{
wxColourData data;
data.SetChooseFull(true);
wxColour colRet;
wxColourDialog dialog(parent, &data);
+ if (!caption.IsEmpty())
+ dialog.SetTitle(caption);
if ( dialog.ShowModal() == wxID_OK )
{
colRet = dialog.GetColourData().GetColour();
#if wxUSE_FONTDLG
-wxFont wxGetFontFromUser(wxWindow *parent, const wxFont& fontInit)
+wxFont wxGetFontFromUser(wxWindow *parent, const wxFont& fontInit, const wxString& caption)
{
wxFontData data;
if ( fontInit.Ok() )
wxFont fontRet;
wxFontDialog dialog(parent, data);
+ if (!caption.IsEmpty())
+ dialog.SetTitle(caption);
if ( dialog.ShowModal() == wxID_OK )
{
fontRet = dialog.GetFontData().GetChosenFont();