]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/samples/embedded/embedded.cpp
fix text scrolling in GTK2 (patch 703988)
[wxWidgets.git] / wxPython / samples / embedded / embedded.cpp
index 73a79512c9d1e65d9ac66dc61a2dae89faf876df..50b8b1a34af103446475c6891e23272f77f2c5c6 100644 (file)
@@ -1,6 +1,6 @@
 //----------------------------------------------------------------------
 // Name:        embedded.cpp
 //----------------------------------------------------------------------
 // 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
 //              within a C++ wxWindows program.
 //
 // Author:      Robin Dunn
@@ -42,7 +42,7 @@ public:
     virtual ~MyApp();
     void Init_wxPython();
 private:
     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();
 
     // 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.
     // 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.
 }
 
 
 MyApp::~MyApp()
 {
     // Restore the thread state and tell Python to cleanup after itself.
-    wxPyEndAllowThreads(main_tstate);
+    wxPyEndAllowThreads(m_mainTState);
     Py_Finalize();
 }
 
     Py_Finalize();
 }
 
@@ -108,8 +114,8 @@ enum
 
 
 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 
 
 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()
 
 
 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
     // 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.
 
     // 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 <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();
-// }
-
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////