wxPlatformInfo::IsUsingUniversalWidgets() was broken by design, it couldn't work in wxBase shared by 2+ wxCores; fixed by making it non-static and moving its implementation back to wxAppTraits (where its equivalent used to be) and making small API changes implied by that

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2006-08-16 17:18:34 +00:00
parent e74f9041c4
commit b98bd6af23
5 changed files with 101 additions and 78 deletions

View File

@@ -36,6 +36,46 @@ None
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxAppTraits::CreateFontMapper}\label{wxapptraitscreatefontmapper}
\func{virtual wxFontMapper *}{CreateFontMapper}{\void}
Creates the global font mapper object used for encodings/charset mapping.
\membersection{wxAppTraits::CreateLogTarget}\label{wxapptraitscreatelogtarget}
\func{virtual wxLog *}{CreateLogTarget}{\void}
Creates the default log target for the application.
\membersection{wxAppTraits::CreateMessageOutput}\label{wxapptraitscreatemessageoutput}
\func{virtual wxMessageOutput *}{CreateMessageOutput}{\void}
Creates the global object used for printing out messages.
\membersection{wxAppTraits::CreateRenderer}\label{wxapptraitscreaterenderer}
\func{virtual wxRendererNative *}{CreateRenderer}{\void}
Returns the renderer to use for drawing the generic controls (return value may be \NULL
in which case the default renderer for the current platform is used);
this is used in GUI mode only and always returns \NULL in console.
NOTE: returned pointer will be deleted by the caller.
\membersection{wxAppTraits::GetStandardPaths}\label{wxapptraitsgetstandardpaths}
\func{virtual wxStandardPaths \&}{GetStandardPaths}{\void}
Returns the wxStandardPaths object for the application.
It's normally the same for wxBase and wxGUI except in the case of wxMac and wxCocoa.
\membersection{wxAppTraits::GetToolkitVersion}\label{wxapptraitsgettoolkitversion} \membersection{wxAppTraits::GetToolkitVersion}\label{wxapptraitsgettoolkitversion}
\func{virtual wxPortId}{GetToolkitVersion}{\param{int *}{major = NULL}, \param{int *}{minor = NULL}} \func{virtual wxPortId}{GetToolkitVersion}{\param{int *}{major = NULL}, \param{int *}{minor = NULL}}
@@ -50,7 +90,6 @@ put in given pointers the versions of the GTK library in use.
See \helpref{wxPlatformInfo}{wxplatforminfo} for more details. See \helpref{wxPlatformInfo}{wxplatforminfo} for more details.
\membersection{wxAppTraits::HasStderr}\label{wxapptraitshasstderr} \membersection{wxAppTraits::HasStderr}\label{wxapptraitshasstderr}
\func{virtual bool}{HasStderr}{\void} \func{virtual bool}{HasStderr}{\void}
@@ -58,6 +97,13 @@ See \helpref{wxPlatformInfo}{wxplatforminfo} for more details.
Returns \true if {\tt fprintf(stderr)} goes somewhere, \false otherwise. Returns \true if {\tt fprintf(stderr)} goes somewhere, \false otherwise.
\membersection{wxAppTraits::IsUsingUniversalWidgets}\label{wxapptraitsisusinguniversalwidgets}
\constfunc{bool}{IsUsingUniversalWidgets}{\void}
Returns \true if the library was built as wxUniversal. Always returns
\false for wxBase-only apps.
\membersection{wxAppTraits::ShowAssertDialog}\label{wxapptraitsshowassertdialog} \membersection{wxAppTraits::ShowAssertDialog}\label{wxapptraitsshowassertdialog}
@@ -67,50 +113,3 @@ Shows the assert dialog with the specified message in GUI mode or just prints
the string to stderr in console mode. the string to stderr in console mode.
Returns \true to suppress subsequent asserts, \false to continue as before. Returns \true to suppress subsequent asserts, \false to continue as before.
\membersection{wxAppTraits::GetStandardPaths}\label{wxapptraitsgetstandardpaths}
\func{virtual wxStandardPaths \&}{GetStandardPaths}{\void}
Returns the wxStandardPaths object for the application.
It's normally the same for wxBase and wxGUI except in the case of wxMac and wxCocoa.
\membersection{wxAppTraits::CreateRenderer}\label{wxapptraitscreaterenderer}
\func{virtual wxRendererNative *}{CreateRenderer}{\void}
Returns the renderer to use for drawing the generic controls (return value may be \NULL
in which case the default renderer for the current platform is used);
this is used in GUI mode only and always returns \NULL in console.
NOTE: returned pointer will be deleted by the caller.
\membersection{wxAppTraits::CreateLogTarget}\label{wxapptraitscreatelogtarget}
\func{virtual wxLog *}{CreateLogTarget}{\void}
Creates the default log target for the application.
\membersection{wxAppTraits::CreateMessageOutput}\label{wxapptraitscreatemessageoutput}
\func{virtual wxMessageOutput *}{CreateMessageOutput}{\void}
Creates the global object used for printing out messages.
\membersection{wxAppTraits::CreateFontMapper}\label{wxapptraitscreatefontmapper}
\func{virtual wxFontMapper *}{CreateFontMapper}{\void}
Creates the global font mapper object used for encodings/charset mapping.

View File

@@ -271,10 +271,13 @@ Returns the wxWidgets port ID associated with this wxPlatformInfo instance.
\membersection{wxPlatformInfo::GetPortIdName}\label{wxplatforminfogetportidname} \membersection{wxPlatformInfo::GetPortIdName}\label{wxplatforminfogetportidname}
\func{static wxString}{GetPortIdName}{\param{wxPortId }{port}} \func{static wxString}{GetPortIdName}{\param{wxPortId }{port}, \param{bool }{usingUniversal}}
Returns the name of the given wxWidgets port ID value. The returned string always starts with Returns the name of the given wxWidgets port ID value. The \arg{usingUniversal}
the "wx" prefix and is a mixed-case string. argument specifies whether the port is in its native or wxUniversal variant.
The returned string always starts with the "wx" prefix and is a mixed-case
string.
\constfunc{wxString}{GetPortIdName}{\void} \constfunc{wxString}{GetPortIdName}{\void}
@@ -285,10 +288,14 @@ Returns the name of the wxWidgets port ID associated with this wxPlatformInfo in
\membersection{wxPlatformInfo::GetPortIdShortName}\label{wxplatforminfogetportidshortname} \membersection{wxPlatformInfo::GetPortIdShortName}\label{wxplatforminfogetportidshortname}
\func{static wxString}{GetPortIdShortName}{\param{wxPortId }{port}} \func{static wxString}{GetPortIdShortName}{\param{wxPortId }{port}, \param{bool }{usingUniversal}}
Returns the short name of the given wxWidgets port ID value. The returned string does not start with Returns the short name of the given wxWidgets port ID value. The
the "wx" prefix and is always lower case. \arg{usingUniversal} argument specifies whether the port is in its native or
wxUniversal variant.
The returned string does not start with the "wx" prefix and is always lower
case.
\constfunc{wxString}{GetPortIdShortName}{\void} \constfunc{wxString}{GetPortIdShortName}{\void}
@@ -324,10 +331,9 @@ Returns \true if this instance is fully initialized with valid values.
\membersection{wxPlatformInfo::IsUsingUniversalWidgets}\label{wxplatforminfoisusinguniversalwidgets} \membersection{wxPlatformInfo::IsUsingUniversalWidgets}\label{wxplatforminfoisusinguniversalwidgets}
\func{bool}{IsUsingUniversalWidgets}{\void} \constfunc{bool}{IsUsingUniversalWidgets}{\void}
Returns \true if \_\_WXUNIVERSAL\_\_ symbol is defined. Note that this function always Returns \true if this wxPlatformInfo describes wxUniversal build.
returns a constant value defined at compile-time and exists just for completeness.
\membersection{wxPlatformInfo::SetArchitecture}\label{wxplatforminfosetarchitecture} \membersection{wxPlatformInfo::SetArchitecture}\label{wxplatforminfosetarchitecture}

View File

@@ -114,6 +114,9 @@ public:
// returns wxPORT_BASE for console applications and one of the remaining // returns wxPORT_BASE for console applications and one of the remaining
// wxPORT_* values for GUI applications. // wxPORT_* values for GUI applications.
virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const = 0; virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const = 0;
// return true if the port is using wxUniversal for the GUI, false if not
virtual bool IsUsingUniversalWidgets() const = 0;
}; };
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -172,7 +175,7 @@ public:
virtual void RemoveFromPendingDelete(wxObject *object); virtual void RemoveFromPendingDelete(wxObject *object);
// the GetToolkitVersion for console application is always the same // the GetToolkitVersion for console application is always the same
wxPortId GetToolkitVersion(int *verMaj, int *verMin) const virtual wxPortId GetToolkitVersion(int *verMaj, int *verMin) const
{ {
// no toolkits (wxBase is for console applications without GUI support) // no toolkits (wxBase is for console applications without GUI support)
// NB: zero means "no toolkit", -1 means "not initialized yet" // NB: zero means "no toolkit", -1 means "not initialized yet"
@@ -181,6 +184,8 @@ public:
if (verMin) *verMin = 0; if (verMin) *verMin = 0;
return wxPORT_BASE; return wxPORT_BASE;
} }
virtual bool IsUsingUniversalWidgets() const { return false; }
}; };
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -211,6 +216,15 @@ public:
virtual void ScheduleForDestroy(wxObject *object); virtual void ScheduleForDestroy(wxObject *object);
virtual void RemoveFromPendingDelete(wxObject *object); virtual void RemoveFromPendingDelete(wxObject *object);
virtual bool IsUsingUniversalWidgets() const
{
#ifdef __WXUNIVERSAL__
return true;
#else
return false;
#endif
}
}; };
#endif // wxUSE_GUI #endif // wxUSE_GUI

View File

@@ -118,7 +118,8 @@ public:
wxOperatingSystemId id = wxOS_UNKNOWN, wxOperatingSystemId id = wxOS_UNKNOWN,
int osMajor = -1, int osMinor = -1, int osMajor = -1, int osMinor = -1,
wxArchitecture arch = wxARCH_INVALID, wxArchitecture arch = wxARCH_INVALID,
wxEndianness endian = wxENDIAN_INVALID); wxEndianness endian = wxENDIAN_INVALID,
bool usingUniversal = false);
// default copy ctor, assignment operator and dtor are ok // default copy ctor, assignment operator and dtor are ok
@@ -142,8 +143,8 @@ public:
static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os); static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os);
static wxString GetOperatingSystemIdName(wxOperatingSystemId os); static wxString GetOperatingSystemIdName(wxOperatingSystemId os);
static wxString GetPortIdName(wxPortId port); static wxString GetPortIdName(wxPortId port, bool usingUniversal);
static wxString GetPortIdShortName(wxPortId port); static wxString GetPortIdShortName(wxPortId port, bool usingUniversal);
static wxString GetArchName(wxArchitecture arch); static wxString GetArchName(wxArchitecture arch);
static wxString GetEndiannessName(wxEndianness end); static wxString GetEndiannessName(wxEndianness end);
@@ -161,6 +162,9 @@ public:
int GetToolkitMinorVersion() const int GetToolkitMinorVersion() const
{ return m_tkVersionMinor; } { return m_tkVersionMinor; }
bool IsUsingUniversalWidgets() const
{ return m_usingUniversal; }
wxOperatingSystemId GetOperatingSystemId() const wxOperatingSystemId GetOperatingSystemId() const
{ return m_os; } { return m_os; }
wxPortId GetPortId() const wxPortId GetPortId() const
@@ -179,9 +183,9 @@ public:
wxString GetOperatingSystemIdName() const wxString GetOperatingSystemIdName() const
{ return GetOperatingSystemIdName(m_os); } { return GetOperatingSystemIdName(m_os); }
wxString GetPortIdName() const wxString GetPortIdName() const
{ return GetPortIdName(m_port); } { return GetPortIdName(m_port, m_usingUniversal); }
wxString GetPortIdShortName() const wxString GetPortIdShortName() const
{ return GetPortIdShortName(m_port); } { return GetPortIdShortName(m_port, m_usingUniversal); }
wxString GetArchName() const wxString GetArchName() const
{ return GetArchName(m_arch); } { return GetArchName(m_arch); }
wxString GetEndiannessName() const wxString GetEndiannessName() const
@@ -216,15 +220,6 @@ public:
m_arch != wxARCH_INVALID && m_endian != wxENDIAN_INVALID; m_arch != wxARCH_INVALID && m_endian != wxENDIAN_INVALID;
} }
static bool IsUsingUniversalWidgets()
{
#ifdef __WXUNIVERSAL__
return true;
#else
return false;
#endif
}
protected: protected:
// OS stuff // OS stuff
@@ -248,6 +243,9 @@ protected:
// name of the wxWidgets port // name of the wxWidgets port
wxPortId m_port; wxPortId m_port;
// is using wxUniversal widgets?
bool m_usingUniversal;
// others // others
// ----------------- // -----------------

View File

@@ -123,12 +123,14 @@ wxPlatformInfo::wxPlatformInfo()
wxFAIL_MSG( _T("failed to initialize wxPlatformInfo") ); wxFAIL_MSG( _T("failed to initialize wxPlatformInfo") );
m_port = wxPORT_UNKNOWN; m_port = wxPORT_UNKNOWN;
m_usingUniversal = false;
m_tkVersionMajor = m_tkVersionMajor =
m_tkVersionMinor = 0; m_tkVersionMinor = 0;
} }
else else
{ {
m_port = traits->GetToolkitVersion(&m_tkVersionMajor, &m_tkVersionMinor); m_port = traits->GetToolkitVersion(&m_tkVersionMajor, &m_tkVersionMinor);
m_usingUniversal = traits->IsUsingUniversalWidgets();
} }
m_os = wxGetOsVersion(&m_osVersionMajor, &m_osVersionMinor); m_os = wxGetOsVersion(&m_osVersionMajor, &m_osVersionMinor);
@@ -139,11 +141,13 @@ wxPlatformInfo::wxPlatformInfo()
wxPlatformInfo::wxPlatformInfo(wxPortId pid, int tkMajor, int tkMinor, wxPlatformInfo::wxPlatformInfo(wxPortId pid, int tkMajor, int tkMinor,
wxOperatingSystemId id, int osMajor, int osMinor, wxOperatingSystemId id, int osMajor, int osMinor,
wxArchitecture arch, wxArchitecture arch,
wxEndianness endian) wxEndianness endian,
bool usingUniversal)
{ {
m_tkVersionMajor = tkMajor; m_tkVersionMajor = tkMajor;
m_tkVersionMinor = tkMinor; m_tkVersionMinor = tkMinor;
m_port = pid; m_port = pid;
m_usingUniversal = usingUniversal;
m_os = id; m_os = id;
m_osVersionMajor = osMajor; m_osVersionMajor = osMajor;
@@ -161,6 +165,7 @@ bool wxPlatformInfo::operator==(const wxPlatformInfo &t) const
m_osVersionMinor == t.m_osVersionMinor && m_osVersionMinor == t.m_osVersionMinor &&
m_os == t.m_os && m_os == t.m_os &&
m_port == t.m_port && m_port == t.m_port &&
m_usingUniversal == t.m_usingUniversal &&
m_arch == t.m_arch && m_arch == t.m_arch &&
m_endian == t.m_endian; m_endian == t.m_endian;
} }
@@ -195,7 +200,7 @@ wxString wxPlatformInfo::GetOperatingSystemIdName(wxOperatingSystemId os)
return wxOperatingSystemIdNames[idx]; return wxOperatingSystemIdNames[idx];
} }
wxString wxPlatformInfo::GetPortIdName(wxPortId port) wxString wxPlatformInfo::GetPortIdName(wxPortId port, bool usingUniversal)
{ {
const unsigned idx = wxGetIndexFromEnumValue(port); const unsigned idx = wxGetIndexFromEnumValue(port);
@@ -204,13 +209,13 @@ wxString wxPlatformInfo::GetPortIdName(wxPortId port)
wxString ret = wxPortIdNames[idx]; wxString ret = wxPortIdNames[idx];
if ( IsUsingUniversalWidgets() ) if ( usingUniversal )
ret += wxT("/wxUniversal"); ret += wxT("/wxUniversal");
return ret; return ret;
} }
wxString wxPlatformInfo::GetPortIdShortName(wxPortId port) wxString wxPlatformInfo::GetPortIdShortName(wxPortId port, bool usingUniversal)
{ {
const unsigned idx = wxGetIndexFromEnumValue(port); const unsigned idx = wxGetIndexFromEnumValue(port);
@@ -220,7 +225,7 @@ wxString wxPlatformInfo::GetPortIdShortName(wxPortId port)
wxString ret = wxPortIdNames[idx]; wxString ret = wxPortIdNames[idx];
ret = ret.Mid(2).Lower(); // remove 'wx' prefix ret = ret.Mid(2).Lower(); // remove 'wx' prefix
if ( IsUsingUniversalWidgets() ) if ( usingUniversal )
ret += wxT("univ"); ret += wxT("univ");
return ret; return ret;
@@ -267,7 +272,8 @@ wxPortId wxPlatformInfo::GetPortId(const wxString &str)
if ( wxPortIdNames[i].CmpNoCase(str) == 0 ) if ( wxPortIdNames[i].CmpNoCase(str) == 0 )
return current; return current;
if ( GetPortIdShortName(current).CmpNoCase(str) == 0 ) if ( GetPortIdShortName(current, true).CmpNoCase(str) == 0 ||
GetPortIdShortName(current, false).CmpNoCase(str) == 0 )
return current; return current;
} }