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
|
# value to use the C++ driver to link with instead of the default
|
||||||
# C driver. For example:
|
# C driver. For example:
|
||||||
#MY_LDSHARED=$(CCC) -shared
|
#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
|
## 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
|
# CFLAGS
|
||||||
-I. -I$(WXWIN)/include -I/usr/local/lib/glib/include -I$(WXWIN)/src \
|
-I. -I$(WXWIN)/include -I/usr/local/lib/glib/include -I$(WXWIN)/src \
|
||||||
-I/usr/X/include -DSWIG_GLOBAL -D__WXGTK__ \
|
-I/usr/X/include -DSWIG_GLOBAL -D__WXGTK__ \
|
||||||
|
-D__WXDEBUG__ \
|
||||||
# LFLAGS
|
# LFLAGS
|
||||||
-L$(WXWIN)/lib/solaris2.6 -L/usr/X/lib \
|
-L$(WXWIN)/lib/solaris2.6 -L/usr/X/lib \
|
||||||
-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1 \
|
-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1 \
|
||||||
-lwx_gtk -lgtk -lgdk -lglib -lXext -lX11 -lstdc++ -lgcc
|
-lwx_gtk -lgtk -lgdk -lglib -lXext -lX11 -lstdc++ -lgcc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -33,9 +33,8 @@
|
|||||||
* and things like that.
|
* and things like that.
|
||||||
*
|
*
|
||||||
* $Log$
|
* $Log$
|
||||||
* Revision 1.3 1998/08/27 00:00:54 RD
|
* Revision 1.4 1998/08/27 21:59:29 RD
|
||||||
* - more tweaks
|
* Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||||
* - have discovered some problems but not yet discovered solutions...
|
|
||||||
*
|
*
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
@@ -1673,6 +1672,7 @@ SWIGEXPORT(void,initwxpc)() {
|
|||||||
SWIG_addvarlink(SWIG_globals,"wxPyDefaultSize",_wrap_wxPyDefaultSize_get, _wrap_wxPyDefaultSize_set);
|
SWIG_addvarlink(SWIG_globals,"wxPyDefaultSize",_wrap_wxPyDefaultSize_get, _wrap_wxPyDefaultSize_set);
|
||||||
|
|
||||||
|
|
||||||
|
__wxPreStart(); // initialize the GUI toolkit, if needed.
|
||||||
|
|
||||||
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
|
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
|
||||||
|
|
||||||
|
@@ -1372,9 +1372,8 @@ class wxApp(wxPyApp):
|
|||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# $Log$
|
# $Log$
|
||||||
# Revision 1.3 1998/08/27 00:00:56 RD
|
# Revision 1.4 1998/08/27 21:59:31 RD
|
||||||
# - more tweaks
|
# Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||||
# - have discovered some problems but not yet discovered solutions...
|
|
||||||
#
|
#
|
||||||
# Revision 1.2 1998/08/18 19:48:12 RD
|
# Revision 1.2 1998/08/18 19:48:12 RD
|
||||||
# more wxGTK compatibility things.
|
# more wxGTK compatibility things.
|
||||||
|
@@ -75,6 +75,8 @@ int wxPyApp::MainLoop(void) {
|
|||||||
|
|
||||||
void wxPyApp::AfterMainLoop(void) {
|
void wxPyApp::AfterMainLoop(void) {
|
||||||
// more stuff from wxEntry...
|
// more stuff from wxEntry...
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
if (wxPythonApp->GetTopWindow()) {
|
if (wxPythonApp->GetTopWindow()) {
|
||||||
// Forcibly delete the window.
|
// Forcibly delete the window.
|
||||||
if (wxPythonApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame)) ||
|
if (wxPythonApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame)) ||
|
||||||
@@ -88,6 +90,10 @@ void wxPyApp::AfterMainLoop(void) {
|
|||||||
wxPythonApp->SetTopWindow(NULL);
|
wxPythonApp->SetTopWindow(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
wxPythonApp->DeletePendingObjects();
|
||||||
|
#endif
|
||||||
|
|
||||||
wxPythonApp->OnExit();
|
wxPythonApp->OnExit();
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
@@ -105,26 +111,19 @@ void wxPyApp::AfterMainLoop(void) {
|
|||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// This is where we pick up the first part of the wxEntry functionality...
|
||||||
// Start the user application, user App's OnInit method is a parameter here
|
// The rest is in __wxStart and AfterMainLoop. Thi function is called when
|
||||||
PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
// wxpc is imported. (Before there is a wxApp object.)
|
||||||
|
void __wxPreStart()
|
||||||
{
|
{
|
||||||
PyObject* onInitFunc = NULL;
|
// Bail out if there is already windows created. This means that the
|
||||||
PyObject* arglist;
|
// toolkit has already been initialized, as in embedding wxPython in
|
||||||
PyObject* result;
|
// a C++ wxWindows app.
|
||||||
long bResult;
|
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__
|
#ifdef __WXMSW__
|
||||||
wxApp::Initialize((WXHINSTANCE)wxhInstance);
|
wxApp::Initialize((WXHINSTANCE)wxhInstance);
|
||||||
|
|
||||||
wxPythonApp->argc = 0;
|
|
||||||
wxPythonApp->argv = NULL;
|
|
||||||
wxPythonApp->OnInitGui();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
wxClassInfo::InitializeClasses();
|
wxClassInfo::InitializeClasses();
|
||||||
@@ -137,11 +136,8 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
|||||||
argv[x] = PyString_AsString(PyList_GetItem(sysargv, x));
|
argv[x] = PyString_AsString(PyList_GetItem(sysargv, x));
|
||||||
argv[argc] = NULL;
|
argv[argc] = NULL;
|
||||||
|
|
||||||
|
gtk_init( &argc, &argv );
|
||||||
wxPythonApp->argc = argc;
|
delete [] argv;
|
||||||
wxPythonApp->argv = argv;
|
|
||||||
|
|
||||||
gtk_init( &wxPythonApp->argc, &wxPythonApp->argv );
|
|
||||||
|
|
||||||
#ifdef USE_GDK_IMLIB
|
#ifdef USE_GDK_IMLIB
|
||||||
gdk_imlib_init();
|
gdk_imlib_init();
|
||||||
@@ -150,10 +146,37 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxApp::CommonInit();
|
wxApp::CommonInit();
|
||||||
wxTheApp->OnInitGui();
|
|
||||||
|
|
||||||
#endif
|
#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
|
// Call the Python App's OnInit function
|
||||||
arglist = PyTuple_New(0);
|
arglist = PyTuple_New(0);
|
||||||
@@ -628,6 +651,9 @@ wxAcceleratorEntry* wxAcceleratorEntry_LIST_helper(PyObject* source) {
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// $Log$
|
// $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
|
// Revision 1.7 1998/08/27 00:00:26 RD
|
||||||
// - more tweaks
|
// - more tweaks
|
||||||
// - have discovered some problems but not yet discovered solutions...
|
// - have discovered some problems but not yet discovered solutions...
|
||||||
|
@@ -30,6 +30,7 @@ extern wxPyApp *wxPythonApp;
|
|||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __wxPreStart();
|
||||||
PyObject* __wxStart(PyObject*, PyObject* args);
|
PyObject* __wxStart(PyObject*, PyObject* args);
|
||||||
|
|
||||||
extern PyObject* wxPython_dict;
|
extern PyObject* wxPython_dict;
|
||||||
@@ -102,6 +103,9 @@ private:
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// $Log$
|
// $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
|
// Revision 1.3 1998/08/16 04:31:09 RD
|
||||||
// More wxGTK work.
|
// More wxGTK work.
|
||||||
//
|
//
|
||||||
|
@@ -112,6 +112,7 @@ extern "C" SWIGEXPORT(void,initcmndlgsc)();
|
|||||||
|
|
||||||
%init %{
|
%init %{
|
||||||
|
|
||||||
|
__wxPreStart(); // initialize the GUI toolkit, if needed.
|
||||||
|
|
||||||
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
|
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
|
||||||
|
|
||||||
@@ -139,6 +140,9 @@ extern "C" SWIGEXPORT(void,initcmndlgsc)();
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// $Log$
|
// $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
|
// Revision 1.5 1998/08/27 00:00:28 RD
|
||||||
// - more tweaks
|
// - more tweaks
|
||||||
// - have discovered some problems but not yet discovered solutions...
|
// - have discovered some problems but not yet discovered solutions...
|
||||||
|
@@ -507,11 +507,6 @@ class MyApp(wxApp):
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
app = MyApp(0)
|
app = MyApp(0)
|
||||||
import wxPython.gdi
|
|
||||||
reload(wxPython.gdi)
|
|
||||||
print wxPython.gdi.wxBLUE
|
|
||||||
print wxPython.gdi.wxBLUE.this
|
|
||||||
|
|
||||||
app.MainLoop()
|
app.MainLoop()
|
||||||
|
|
||||||
|
|
||||||
@@ -521,16 +516,21 @@ def t():
|
|||||||
|
|
||||||
|
|
||||||
# for focused testing...
|
# for focused testing...
|
||||||
def t2():
|
def main2():
|
||||||
class T2App(wxApp):
|
class T2App(wxApp):
|
||||||
def OnInit(self):
|
def OnInit(self):
|
||||||
frame = TestLayoutConstraints(NULL)
|
frame = TestLayoutConstraints(NULL)
|
||||||
frame.Show(true)
|
frame.Show(true)
|
||||||
self.SetTopWindow(frame)
|
self.SetTopWindow(frame)
|
||||||
|
return true
|
||||||
|
|
||||||
app = T2App(0)
|
app = T2App(0)
|
||||||
app.MainLoop()
|
app.MainLoop()
|
||||||
|
|
||||||
|
def t2():
|
||||||
|
import pdb
|
||||||
|
pdb.run('main2()')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@@ -540,6 +540,9 @@ if __name__ == '__main__':
|
|||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# $Log$
|
# $Log$
|
||||||
|
# Revision 1.4 1998/08/27 21:59:51 RD
|
||||||
|
# Some chicken-and-egg problems solved for wxPython on wxGTK
|
||||||
|
#
|
||||||
# Revision 1.3 1998/08/27 00:01:17 RD
|
# Revision 1.3 1998/08/27 00:01:17 RD
|
||||||
# - more tweaks
|
# - more tweaks
|
||||||
# - have discovered some problems but not yet discovered solutions...
|
# - have discovered some problems but not yet discovered solutions...
|
||||||
|
Reference in New Issue
Block a user