Merge wxQT branch into the trunk.
This merges in the latest sources from GSoC 2014 wxQt project with just a few minor corrections, mostly undoing wrong changes to common files in that branch (results of a previous bad merge?) and getting rid of whitespace-only changes. Also remove debug logging from wxGrid. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
87
src/qt/app.cpp
Normal file
87
src/qt/app.cpp
Normal file
@@ -0,0 +1,87 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/qt/app.cpp
|
||||
// Author: Peter Most
|
||||
// Copyright: (c) Peter Most
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#include "wx/app.h"
|
||||
#include "wx/apptrait.h"
|
||||
#include "wx/qt/private/utils.h"
|
||||
#include "wx/qt/private/converter.h"
|
||||
#include <QtCore/QStringList>
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxApp, wxAppBase )
|
||||
|
||||
wxApp::wxApp()
|
||||
{
|
||||
m_qtApplication = NULL;
|
||||
}
|
||||
|
||||
|
||||
wxApp::~wxApp()
|
||||
{
|
||||
// Only delete if the app was actually initialized
|
||||
if ( m_qtApplication != NULL )
|
||||
{
|
||||
m_qtApplication->deleteLater();
|
||||
delete [] m_qtArgv;
|
||||
}
|
||||
}
|
||||
|
||||
bool wxApp::Initialize( int &argc, wxChar **argv )
|
||||
{
|
||||
if ( !wxAppBase::Initialize( argc, argv ))
|
||||
return false;
|
||||
|
||||
wxConvCurrent = &wxConvUTF8;
|
||||
|
||||
// (See: http://bugreports.qt.nokia.com/browse/QTBUG-7551)
|
||||
// Need to store argc, argv. The argc, argv from wxAppBase are
|
||||
// being initialized *after* Initialize();
|
||||
|
||||
// TODO: Check whether new/strdup etc. can be replaced with std::vector<>.
|
||||
|
||||
// Clone and store arguments
|
||||
m_qtArgv = new char *[argc + 1];
|
||||
for ( int i = 0; i < argc; i++ )
|
||||
{
|
||||
m_qtArgv[i] = wxStrdupA(wxConvUTF8.cWX2MB(argv[i]));
|
||||
}
|
||||
m_qtArgv[argc] = NULL;
|
||||
m_qtArgc = argc;
|
||||
|
||||
m_qtApplication = new QApplication( m_qtArgc, m_qtArgv );
|
||||
|
||||
// Use the args returned by Qt as it may have deleted (processed) some of them
|
||||
// Using QApplication::arguments() forces argument processing
|
||||
QStringList qtArgs = m_qtApplication->arguments();
|
||||
if ( qtArgs.size() != argc )
|
||||
{
|
||||
/* As per Qt 4.6: Here, qtArgc and qtArgv have been modified and can
|
||||
* be used to replace our args (with Qt-flags removed). Also, they can be
|
||||
* deleted as they are internally kept by Qt in a list after calling arguments().
|
||||
* However, there isn't any guarantee of that in the docs, so we keep arguments
|
||||
* ourselves and only delete then after the QApplication is deleted */
|
||||
|
||||
// Qt changed the arguments
|
||||
delete [] argv;
|
||||
argv = new wxChar *[qtArgs.size() + 1];
|
||||
for ( int i = 0; i < qtArgs.size(); i++ )
|
||||
{
|
||||
#if wxUSE_UNICODE
|
||||
argv[i] = wxStrdupW( wxConvUTF8.cMB2WX( qtArgs[i].toUtf8().data() ) );
|
||||
#else // wxUSE_UNICODE
|
||||
argv[i] = wxStrdupA( wxConvUTF8.cMB2WX( qtArgs[i].toUtf8().data() ) );
|
||||
#endif // wxUSE_UNICODE
|
||||
}
|
||||
|
||||
argc = m_qtApplication->arguments().size();
|
||||
argv[argc] = NULL;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
Reference in New Issue
Block a user