ultimatepp/bazaar/PyShellTest/main.cpp
kohait 6ecf478516 bazaar: Python: some python test cases, very basic and alpha
git-svn-id: svn://ultimatepp.org/upp/trunk@3319 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2011-03-30 21:04:06 +00:00

57 lines
1.4 KiB
C++

#include "PyShellTest.h"
// When PyShell is opened write: import newmodule newmodule.test("is it working?")
PyObject* newmodule_test(PyObject* pSelf, PyObject* pArgs)
{
char* str = NULL;
if (!PyArg_ParseTuple(pArgs, "s", &str)) return NULL;
PromptOK("exported function");
Py_INCREF(Py_None);
return Py_None;
}
static PyMethodDef newmoduleMethods[] = {
{"test", newmodule_test, METH_VARARGS, "Exported function testing."},
{NULL, NULL, 0, NULL}
};
void PyShellTest::StartNew()
{
ps.Start();
// You could do whatever you want, usually your message loop will be here.
PromptOK("I am blocking, pyshell is working from the other thread");
}
PyShellTest::PyShellTest()
{
CtrlLayout(*this, "PyShell Test");
b <<= THISBACK(StartNew);
}
PyShellTest::~PyShellTest()
{
ps.Wait();
}
GUI_APP_MAIN
{
char *argv[] = {"", NULL};
PySys_SetArgv(1, argv);
PyRun_SimpleString("import sys; sys.path.pop(0)\n");
PyObject* pyRet = PyString_FromString(">>> ");
PySys_SetObject("ps1", pyRet);
Py_XDECREF(pyRet);
// ps2 is not used in PyShell, to be honset it's more comfortable, think of it
// that you want to copy/paste the code and you have "..." in every line then you have to
// remove it manually.
#if 0
// Init our newmodule.
Py_InitModule3("newmodule", newmoduleMethods, "This is a new module");
#endif
PyShellTest().Run();
}