# 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
# 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
-
-
-
-
-
* 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
*
************************************************************************/
SWIG_addvarlink(SWIG_globals,"wxPyDefaultSize",_wrap_wxPyDefaultSize_get, _wrap_wxPyDefaultSize_set);
+ __wxPreStart(); // initialize the GUI toolkit, if needed.
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
#----------------------------------------------------------------------------
#
# $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.
void wxPyApp::AfterMainLoop(void) {
// more stuff from wxEntry...
+
+#ifdef __WXMSW__
if (wxPythonApp->GetTopWindow()) {
// Forcibly delete the window.
if (wxPythonApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame)) ||
wxPythonApp->SetTopWindow(NULL);
}
}
+#endif
+#ifdef __WXGTK__
+ wxPythonApp->DeletePendingObjects();
+#endif
wxPythonApp->OnExit();
#ifdef __WXMSW__
//----------------------------------------------------------------------
-
-// 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;
-
- if (!PyArg_ParseTuple(args, "O", &onInitFunc))
- return NULL;
+ // 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;
-// 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();
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();
#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);
/////////////////////////////////////////////////////////////////////////////
//
// $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...
//----------------------------------------------------------------------
+void __wxPreStart();
PyObject* __wxStart(PyObject*, PyObject* args);
extern PyObject* wxPython_dict;
/////////////////////////////////////////////////////////////////////////////
//
// $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.
//
%init %{
+ __wxPreStart(); // initialize the GUI toolkit, if needed.
// wxPyWindows = new wxHashTable(wxKEY_INTEGER, 100);
/////////////////////////////////////////////////////////////////////////////
//
// $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...
def main():
app = MyApp(0)
- import wxPython.gdi
- reload(wxPython.gdi)
- print wxPython.gdi.wxBLUE
- print wxPython.gdi.wxBLUE.this
-
app.MainLoop()
# for focused testing...
-def t2():
+def main2():
class T2App(wxApp):
def OnInit(self):
frame = TestLayoutConstraints(NULL)
frame.Show(true)
self.SetTopWindow(frame)
+ return true
app = T2App(0)
app.MainLoop()
+def t2():
+ import pdb
+ pdb.run('main2()')
+
if __name__ == '__main__':
#----------------------------------------------------------------------------
#
# $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
# - more tweaks
# - have discovered some problems but not yet discovered solutions...