mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
57 lines
1.4 KiB
C++
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();
|
|
}
|
|
|