wxAppConsoleBase::~wxAppConsoleBase()
{
+ // we're being destroyed and using this object from now on may not work or
+ // even crash so don't leave dangling pointers to it
+ ms_appInstance = NULL;
+
delete m_traits;
}
// initialization/cleanup
// ----------------------------------------------------------------------------
-bool wxAppConsoleBase::Initialize(int& WXUNUSED(argc), wxChar **argv)
+bool wxAppConsoleBase::Initialize(int& WXUNUSED(argc), wxChar **WXUNUSED(argv))
{
#if wxUSE_INTL
GetTraits()->SetLocale();
#endif // wxUSE_INTL
+ return true;
+}
+
+wxString wxAppConsoleBase::GetAppName() const
+{
+ wxString name = m_appName;
#ifndef __WXPALMOS__
- if ( m_appName.empty() && argv && argv[0] )
+ if ( name.empty() )
{
- // the application name is, by default, the name of its executable file
- wxFileName::SplitPath(argv[0], NULL, &m_appName, NULL);
+ if ( argv )
+ {
+ // the application name is, by default, the name of its executable file
+ wxFileName::SplitPath(argv[0], NULL, &name, NULL);
+ }
}
#endif // !__WXPALMOS__
+ return name;
+}
- return true;
+wxString wxAppConsoleBase::GetAppDisplayName() const
+{
+ // use the explicitly provided display name, if any
+ if ( !m_appDisplayName.empty() )
+ return m_appDisplayName;
+
+ // if the application name was explicitly set, use it as is as capitalizing
+ // it won't always produce good results
+ if ( !m_appName.empty() )
+ return m_appName;
+
+ // if neither is set, use the capitalized version of the program file as
+ // it's the most reasonable default
+ return GetAppName().Capitalize();
}
wxEventLoopBase *wxAppConsoleBase::CreateMainLoop()
{
m_traits = CreateTraits();
- wxASSERT_MSG( m_traits, _T("wxApp::CreateTraits() failed?") );
+ wxASSERT_MSG( m_traits, wxT("wxApp::CreateTraits() failed?") );
}
return m_traits;
event.SetEventObject(this);
ProcessEvent(event);
+#if wxUSE_LOG
+ // flush the logged messages if any (do this after processing the events
+ // which could have logged new messages)
+ wxLog::FlushActive();
+#endif
+
return event.MoreRequested();
}
wxString progName = wxString::FromAscii(componentName);
wxString msg;
- msg.Printf(_T("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
+ msg.Printf(wxT("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
lib.c_str(), progName.c_str(), prog.c_str());
wxLogFatalError(msg.c_str());
const wxString stackTrace = GetAssertStackTrace();
if ( !stackTrace.empty() )
- msg << _T("\n\nCall stack:\n") << stackTrace;
+ msg << wxT("\n\nCall stack:\n") << stackTrace;
#endif // wxUSE_STACKWALKER
return DoShowAssertDialog(msg);
{
m_stackTrace << wxString::Format
(
- _T("[%02d] "),
+ wxT("[%02d] "),
wx_truncate_cast(int, frame.GetLevel())
);
wxString name = frame.GetName();
if ( !name.empty() )
{
- m_stackTrace << wxString::Format(_T("%-40s"), name.c_str());
+ m_stackTrace << wxString::Format(wxT("%-40s"), name.c_str());
}
else
{
- m_stackTrace << wxString::Format(_T("%p"), frame.GetAddress());
+ m_stackTrace << wxString::Format(wxT("%p"), frame.GetAddress());
}
if ( frame.HasSourceLocation() )
{
- m_stackTrace << _T('\t')
+ m_stackTrace << wxT('\t')
<< frame.GetFileName()
- << _T(':')
+ << wxT(':')
<< frame.GetLine();
}
- m_stackTrace << _T('\n');
+ m_stackTrace << wxT('\n');
}
private:
wxAssertHandler_t wxTheAssertHandler = wxDefaultAssertHandler;
+void wxSetDefaultAssertHandler()
+{
+ wxTheAssertHandler = wxDefaultAssertHandler;
+}
+
void wxOnAssert(const wxString& file,
int line,
const wxString& func,
wxT("You can also choose [Cancel] to suppress ")
wxT("further warnings.");
- switch ( ::MessageBox(NULL, msgDlg.wx_str(), _T("wxWidgets Debug Alert"),
+ switch ( ::MessageBox(NULL, msgDlg.wx_str(), wxT("wxWidgets Debug Alert"),
MB_YESNOCANCEL | MB_ICONSTOP ) )
{
case IDYES:
// add the function name, if any
if ( !func.empty() )
- msg << _T(" in ") << func << _T("()");
+ msg << wxT(" in ") << func << wxT("()");
// and the message itself
if ( !msgUser.empty() )
{
- msg << _T(": ") << msgUser;
+ msg << wxT(": ") << msgUser;
}
else // no message given
{
- msg << _T('.');
+ msg << wxT('.');
}
#if wxUSE_THREADS
if ( !s_bNoAsserts )
{
// send it to the normal log destination
- wxLogDebug(_T("%s"), msg.c_str());
+ wxLogDebug(wxT("%s"), msg.c_str());
if ( traits )
{