//----------------------------------------------------------------------
// Name: embedded.cpp
-// Purpose: To server as an example of how to use wxPython from
+// Purpose: To serve as an example of how to use wxPython from
// within a C++ wxWindows program.
//
// Author: Robin Dunn
virtual ~MyApp();
void Init_wxPython();
private:
- PyThreadState* main_tstate;
+ PyThreadState* m_mainTState;
};
// module and sets a pointer to a function table located there.
wxPyCoreAPI_IMPORT();
+ // Ensure that the new classes defined in the wxPython wrappers are
+ // recognised by the wx RTTI system. (If you don't use wxWindows in
+ // your C++ app you won't need to do this.)
+ wxClassInfo::CleanUpClasses();
+ wxClassInfo::InitializeClasses();
+
// Save the current Python thread state and release the
// Global Interpreter Lock.
- main_tstate = wxPyBeginAllowThreads();
+ m_mainTState = wxPyBeginAllowThreads();
}
MyApp::~MyApp()
{
// Restore the thread state and tell Python to cleanup after itself.
- wxPyEndAllowThreads(main_tstate);
+ wxPyEndAllowThreads(m_mainTState);
Py_Finalize();
}
// More complex embedded situations will require passing C++ objects to
// Python and/or returning objects from Python to be used in C++. This
// sample shows one way to do it. NOTE: The above code could just have
- // easily come from a file, or the whole thing coupld be in the Python
+ // easily come from a file, or the whole thing could be in the Python
// module that is imported and manipulated directly in this C++ code. See
// the Python API for more details.
-
-
-
-// void MyFrame::OnButton(wxCommandEvent& WXUNUSED(event))
-// {
-// //Py_Initialize();
-// //PySys_SetArgv(argc, argv)
-// // // initialize thread support
-// // PyEval_InitThreads();
-// wxPyBeginBlockThreads();
-// PyRun_SimpleString(
-// "from wxPython.wx import *\n"
-// "f = wxFrame(None, -1, 'Hello from wxPython', size=(250,150))\n"
-// "f.Show()"
-// );
-// wxPyEndBlockThreads();
-// }
-
-
-
-
-
-
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
-// /// this, RedirectIOToConsole(), help came from
-// /// http://www.halcyon.com/ast/dload/guicon.htm
-
-// // #include <windows.h>
-// // #include <stdio.h>
-// #include <fcntl.h>
-// #include <io.h>
-// // #include <iostream>
-// // #include <fstream>
-// // //#ifndef _USE_OLD_IOSTREAMS
-// // using namespace std;
-// // //#endif
-
-// // maximum mumber of lines the output console should have
-// static const WORD MAX_CONSOLE_LINES = 500;
-
-// void RedirectIOToConsole()
-// {
-// int hConHandle;
-// long lStdHandle;
-// CONSOLE_SCREEN_BUFFER_INFO coninfo;
-// FILE *fp;
-
-// // allocate a console for this app
-// AllocConsole();
-
-// // set the screen buffer to be big enough to let us scroll text
-// GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
-
-// coninfo.dwSize.Y = MAX_CONSOLE_LINES;
-// SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
-
-// // redirect unbuffered STDOUT to the console
-// lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
-// hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
-
-// fp = _fdopen( hConHandle, "w" );
-// *stdout = *fp;
-
-// setvbuf( stdout, NULL, _IONBF, 0 );
-
-// // redirect unbuffered STDIN to the console
-// lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
-// hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
-
-// fp = _fdopen( hConHandle, "r" );
-// *stdin = *fp;
-
-// setvbuf( stdin, NULL, _IONBF, 0 );
-
-// // redirect unbuffered STDERR to the console
-// lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
-// hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
-
-// fp = _fdopen( hConHandle, "w" );
-// *stderr = *fp;
-// setvbuf( stderr, NULL, _IONBF, 0 );
-
-// // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
-// // point to console as well
-// //std::ios::sync_with_stdio();
-// }
-
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////