Some chicken-and-egg problems solved for wxPython on wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -16,7 +16,13 @@ srcdir=$(GENCODEDIR)
|
||||
# value to use the C++ driver to link with instead of the default
|
||||
# C driver. For example:
|
||||
#MY_LDSHARED=$(CCC) -shared
|
||||
MY_LINKCC=$(CCC) --verbose
|
||||
|
||||
# Same as above, but for statically linking Python and wxPython together,
|
||||
# in other words, if you comment out the *shared* above. If this is the
|
||||
# case then you should ensure that the main() function is Python's, not
|
||||
# wxWindows'. You can rebuild $(WXWIN)/src/gtk/app.cpp with NOMAIN defined
|
||||
# to force this...
|
||||
MY_LINKCC=$(CCC)
|
||||
|
||||
|
||||
## Pick one of these, or set your own. This is where the
|
||||
@@ -31,12 +37,8 @@ wxpc wxp.cpp helpers.cpp windows.cpp events.cpp misc.cpp gdi.cpp \
|
||||
# CFLAGS
|
||||
-I. -I$(WXWIN)/include -I/usr/local/lib/glib/include -I$(WXWIN)/src \
|
||||
-I/usr/X/include -DSWIG_GLOBAL -D__WXGTK__ \
|
||||
-D__WXDEBUG__ \
|
||||
# LFLAGS
|
||||
-L$(WXWIN)/lib/solaris2.6 -L/usr/X/lib \
|
||||
-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1 \
|
||||
-lwx_gtk -lgtk -lgdk -lglib -lXext -lX11 -lstdc++ -lgcc
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -33,9 +33,8 @@
|
||||
* and things like that.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.3 1998/08/27 00:00:54 RD
|
||||
* - more tweaks
|
||||
* - have discovered some problems but not yet discovered solutions...
|
||||
* Revision 1.4 1998/08/27 21:59:29 RD
|
||||
* Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
@@ -1673,6 +1672,7 @@ SWIGEXPORT(void,initwxpc)() {
|
||||
SWIG_addvarlink(SWIG_globals,"wxPyDefaultSize",_wrap_wxPyDefaultSize_get, _wrap_wxPyDefaultSize_set);
|
||||
|
||||
|
||||
__wxPreStart(); // initialize the GUI toolkit, if needed.
|
||||
|
||||
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
|
||||
|
||||
|
@@ -1372,9 +1372,8 @@ class wxApp(wxPyApp):
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.3 1998/08/27 00:00:56 RD
|
||||
# - more tweaks
|
||||
# - have discovered some problems but not yet discovered solutions...
|
||||
# Revision 1.4 1998/08/27 21:59:31 RD
|
||||
# Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||
#
|
||||
# Revision 1.2 1998/08/18 19:48:12 RD
|
||||
# more wxGTK compatibility things.
|
||||
|
@@ -75,6 +75,8 @@ int wxPyApp::MainLoop(void) {
|
||||
|
||||
void wxPyApp::AfterMainLoop(void) {
|
||||
// more stuff from wxEntry...
|
||||
|
||||
#ifdef __WXMSW__
|
||||
if (wxPythonApp->GetTopWindow()) {
|
||||
// Forcibly delete the window.
|
||||
if (wxPythonApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame)) ||
|
||||
@@ -88,6 +90,10 @@ void wxPyApp::AfterMainLoop(void) {
|
||||
wxPythonApp->SetTopWindow(NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef __WXGTK__
|
||||
wxPythonApp->DeletePendingObjects();
|
||||
#endif
|
||||
|
||||
wxPythonApp->OnExit();
|
||||
#ifdef __WXMSW__
|
||||
@@ -105,26 +111,19 @@ void wxPyApp::AfterMainLoop(void) {
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// Start the user application, user App's OnInit method is a parameter here
|
||||
PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
||||
// This is where we pick up the first part of the wxEntry functionality...
|
||||
// The rest is in __wxStart and AfterMainLoop. Thi function is called when
|
||||
// wxpc is imported. (Before there is a wxApp object.)
|
||||
void __wxPreStart()
|
||||
{
|
||||
PyObject* onInitFunc = NULL;
|
||||
PyObject* arglist;
|
||||
PyObject* result;
|
||||
long bResult;
|
||||
// Bail out if there is already windows created. This means that the
|
||||
// toolkit has already been initialized, as in embedding wxPython in
|
||||
// a C++ wxWindows app.
|
||||
if (wxTopLevelWindows.Number() > 0)
|
||||
return;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "O", &onInitFunc))
|
||||
return NULL;
|
||||
|
||||
// This is where we pick up one part of the wxEntry functionality...
|
||||
// the rest is in AfterMainLoop.
|
||||
#ifdef __WXMSW__
|
||||
wxApp::Initialize((WXHINSTANCE)wxhInstance);
|
||||
|
||||
wxPythonApp->argc = 0;
|
||||
wxPythonApp->argv = NULL;
|
||||
wxPythonApp->OnInitGui();
|
||||
#endif
|
||||
#ifdef __WXGTK__
|
||||
wxClassInfo::InitializeClasses();
|
||||
@@ -137,11 +136,8 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
||||
argv[x] = PyString_AsString(PyList_GetItem(sysargv, x));
|
||||
argv[argc] = NULL;
|
||||
|
||||
|
||||
wxPythonApp->argc = argc;
|
||||
wxPythonApp->argv = argv;
|
||||
|
||||
gtk_init( &wxPythonApp->argc, &wxPythonApp->argv );
|
||||
gtk_init( &argc, &argv );
|
||||
delete [] argv;
|
||||
|
||||
#ifdef USE_GDK_IMLIB
|
||||
gdk_imlib_init();
|
||||
@@ -150,10 +146,37 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
||||
#endif
|
||||
|
||||
wxApp::CommonInit();
|
||||
wxTheApp->OnInitGui();
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
static char* __nullArgv[1] = { 0 };
|
||||
|
||||
// Start the user application, user App's OnInit method is a parameter here
|
||||
PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
||||
{
|
||||
PyObject* onInitFunc = NULL;
|
||||
PyObject* arglist;
|
||||
PyObject* result;
|
||||
long bResult;
|
||||
|
||||
|
||||
if (!PyArg_ParseTuple(args, "O", &onInitFunc))
|
||||
return NULL;
|
||||
|
||||
if (wxTopLevelWindows.Number() > 0) {
|
||||
PyErr_SetString(PyExc_TypeError, "Only 1 wxApp per process!");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
// This is the next part of the wxEntry functionality...
|
||||
wxPythonApp->argc = 0;
|
||||
wxPythonApp->argv = __nullArgv;
|
||||
wxPythonApp->OnInitGui();
|
||||
|
||||
|
||||
// Call the Python App's OnInit function
|
||||
arglist = PyTuple_New(0);
|
||||
@@ -628,6 +651,9 @@ wxAcceleratorEntry* wxAcceleratorEntry_LIST_helper(PyObject* source) {
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.8 1998/08/27 21:59:08 RD
|
||||
// Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||
//
|
||||
// Revision 1.7 1998/08/27 00:00:26 RD
|
||||
// - more tweaks
|
||||
// - have discovered some problems but not yet discovered solutions...
|
||||
|
@@ -30,6 +30,7 @@ extern wxPyApp *wxPythonApp;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
void __wxPreStart();
|
||||
PyObject* __wxStart(PyObject*, PyObject* args);
|
||||
|
||||
extern PyObject* wxPython_dict;
|
||||
@@ -102,6 +103,9 @@ private:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.4 1998/08/27 21:59:09 RD
|
||||
// Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||
//
|
||||
// Revision 1.3 1998/08/16 04:31:09 RD
|
||||
// More wxGTK work.
|
||||
//
|
||||
|
@@ -112,6 +112,7 @@ extern "C" SWIGEXPORT(void,initcmndlgsc)();
|
||||
|
||||
%init %{
|
||||
|
||||
__wxPreStart(); // initialize the GUI toolkit, if needed.
|
||||
|
||||
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
|
||||
|
||||
@@ -139,6 +140,9 @@ extern "C" SWIGEXPORT(void,initcmndlgsc)();
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.6 1998/08/27 21:59:10 RD
|
||||
// Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||
//
|
||||
// Revision 1.5 1998/08/27 00:00:28 RD
|
||||
// - more tweaks
|
||||
// - have discovered some problems but not yet discovered solutions...
|
||||
|
Reference in New Issue
Block a user