X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a24268437fd8f5cf62e11ea3d386b14d38e6d981..71aba8333cc915afff9e740c944f7fa7247abacb:/wxPython/samples/embedded/embedded.cpp diff --git a/wxPython/samples/embedded/embedded.cpp b/wxPython/samples/embedded/embedded.cpp index 73a79512c9..50b8b1a34a 100644 --- a/wxPython/samples/embedded/embedded.cpp +++ b/wxPython/samples/embedded/embedded.cpp @@ -1,6 +1,6 @@ //---------------------------------------------------------------------- // 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 @@ -42,7 +42,7 @@ public: virtual ~MyApp(); void Init_wxPython(); private: - PyThreadState* main_tstate; + PyThreadState* m_mainTState; }; @@ -83,16 +83,22 @@ void MyApp::Init_wxPython() // 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 wxWindow 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(); } @@ -108,8 +114,8 @@ enum BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(ID_EXIT, OnExit) - EVT_MENU(ID_PYFRAME, OnPyFrame) + EVT_MENU(ID_EXIT, MyFrame::OnExit) + EVT_MENU(ID_PYFRAME, MyFrame::OnPyFrame) END_EVENT_TABLE() @@ -212,7 +218,7 @@ wxWindow* MyFrame::DoPythonStuff(wxWindow* parent) // 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. @@ -284,95 +290,3 @@ wxWindow* MyFrame::DoPythonStuff(wxWindow* parent) - - - -// 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 -// // #include -// #include -// #include -// // #include -// // #include -// // //#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(); -// } - -// //////////////////////////////////////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////////////