#include "qgpython.h"

static PythonQtObjectPtr qgpy_app_module;

QgPython::QgPython()
{    
    PythonQt::init(PythonQt::RedirectStdOut|PythonQt::IgnoreSiteModule);
}

void QgPython::initialize()
{
}

QgPython& QgPython::instance()
{
    static QgPython pyInstance;

    return pyInstance;
}

PythonQt& QgPython::self() const
{
    return *PythonQt::self();
}

PythonQtObjectPtr QgPython::mainContext()
{
    PythonQtObjectPtr  mainContext = PythonQt::self()->getMainModule();
    return mainContext;
}

PythonQtObjectPtr QgPython::createMainApplicationModule(const QString& module_name)
{
    if (!qgpy_app_module)
    {
        if (!module_name.isEmpty())
        {
            qgpy_app_module=QgPython::instance().self().createModuleFromScript(module_name,QString(""));
        }
        if (qgpy_app_module==0)
            qgpy_app_module=mainContext();
        else
            mainContext().evalScript(QString("import %1").arg(module_name));
    }

    return qgpy_app_module;
}

PythonQtObjectPtr QgPython::mainModule()
{
    if (!qgpy_app_module)
    {
        qgpy_app_module=mainContext();
    }
    return qgpy_app_module;
}
