try {
// add our mussa module to our environment
PyImport_AppendInittab("mussa", &initmussa);
+ PyImport_AppendInittab("mussaqui", &initmussaqui);
// go ahead and finish initalizing python
Py_Initialize();
// get reference to the global namespace
// FIXME: this really should be a configuration file?
run("import __main__\n"
"import mussa\n"
- "import webbrowser\n");
+ "import mussaqui");
} catch (py::error_already_set e) {
PyErr_Print();
}
}
-void MussaPython::interpreter(FILE *fp)
+void MussaPython::interpreter()
+{
+ try {
+ run("import sys\n"
+ "sys.argv = ['Mussa']\n"
+ "banner='Welcome to Mussa'\n"
+ "try:\n"
+ " from IPython.Shell import IPShellEmbed\n"
+ " ipshell = IPShellEmbed(banner=banner)\n"
+ " ipshell()\n"
+ "except ImportError, e:\n"
+ " import code\n"
+ " code.interact(banner, local=globals())\n"
+ "print 'exiting interpreter'\n"
+ );
+ } catch (py::error_already_set e) {
+ PyErr_Print();
+ }
+}
+void MussaPython::simple_interpreter(FILE *fp)
{
try {
PyRun_InteractiveLoop(fp, "mussa");
//! return a reference to a single mussa python interpreter
MussaPython& get_py()
{
- static MussaPython py;
- return py;
+ static MussaPython *py;
+ if (!py) {
+ py = new MussaPython;
+ }
+ return *py;
}
\ No newline at end of file