Expose getMainWindow() to Python
This commit is contained in:
parent
8a5d32892f
commit
112b25f9fc
|
@ -211,6 +211,7 @@ public:
|
|||
|
||||
PYFUNCDEF_S(sSendActiveView);
|
||||
|
||||
PYFUNCDEF_S(sGetMainWindow);
|
||||
PYFUNCDEF_S(sUpdateGui);
|
||||
PYFUNCDEF_S(sUpdateLocale);
|
||||
PYFUNCDEF_S(sGetLocale);
|
||||
|
|
|
@ -83,6 +83,9 @@ PyMethodDef Application::Methods[] = {
|
|||
{"addIcon", (PyCFunction) Application::sAddIcon, 1,
|
||||
"addIcon(string, string or list) -> None\n\n"
|
||||
"Add an icon as file name or in XPM format to the system"},
|
||||
{"getMainWindow", (PyCFunction) Application::sGetMainWindow, 1,
|
||||
"getMainWindow() -> QMainWindow\n\n"
|
||||
"Return the main window instance"},
|
||||
{"updateGui", (PyCFunction) Application::sUpdateGui, 1,
|
||||
"updateGui() -> None\n\n"
|
||||
"Update the main window and all its windows"},
|
||||
|
@ -418,6 +421,22 @@ PyObject* Application::sSendActiveView(PyObject * /*self*/, PyObject *args,PyObj
|
|||
return Py_None;
|
||||
}
|
||||
|
||||
PyObject* Application::sGetMainWindow(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args, ""))
|
||||
return NULL;
|
||||
|
||||
PythonWrapper wrap;
|
||||
wrap.loadCoreModule();
|
||||
wrap.loadGuiModule();
|
||||
try {
|
||||
return Py::new_reference_to(wrap.fromQWidget(Gui::getMainWindow(), "QMainWindow"));
|
||||
}
|
||||
catch (const Py::Exception&) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
PyObject* Application::sUpdateGui(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args, "")) // convert args: Python->C
|
||||
|
|
|
@ -84,15 +84,19 @@ QObject* PythonWrapper::toQObject(const Py::Object& pyobject)
|
|||
return 0;
|
||||
}
|
||||
|
||||
Py::Object PythonWrapper::toPython(QWidget* widget)
|
||||
Py::Object PythonWrapper::fromQWidget(QWidget* widget, const char* className)
|
||||
{
|
||||
#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE)
|
||||
PyTypeObject * type = Shiboken::SbkType<QWidget>();
|
||||
if (type) {
|
||||
SbkObjectType* sbk_type = reinterpret_cast<SbkObjectType*>(type);
|
||||
std::string typeName = widget->metaObject()->className();
|
||||
std::string typeName;
|
||||
if (className)
|
||||
typeName = className;
|
||||
else
|
||||
typeName = widget->metaObject()->className();
|
||||
PyObject* pyobj = Shiboken::Object::newObject(sbk_type, widget, false, false, typeName.c_str());
|
||||
return Py::Object(pyobj);
|
||||
return Py::asObject(pyobj);
|
||||
}
|
||||
throw Py::RuntimeError("Failed to wrap widget");
|
||||
#else
|
||||
|
@ -353,7 +357,7 @@ Py::Object UiLoaderPy::createWidget(const Py::Tuple& args)
|
|||
QWidget* widget = loader.createWidget(QString::fromAscii(className.c_str()), parent,
|
||||
QString::fromAscii(objectName.c_str()));
|
||||
wrap.loadGuiModule();
|
||||
return wrap.toPython(widget);
|
||||
return wrap.fromQWidget(widget);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
|
|
@ -47,7 +47,7 @@ public:
|
|||
bool loadGuiModule();
|
||||
|
||||
QObject* toQObject(const Py::Object&);
|
||||
Py::Object toPython(QWidget*);
|
||||
Py::Object fromQWidget(QWidget*, const char* className=0);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user