diff --git a/src/Gui/UiLoader.cpp b/src/Gui/UiLoader.cpp index cb5cac8c0e..f4d257ca4a 100644 --- a/src/Gui/UiLoader.cpp +++ b/src/Gui/UiLoader.cpp @@ -528,6 +528,19 @@ void UiLoaderPy::init_type() add_varargs_method("load",&UiLoaderPy::load,"load(string, QWidget parent=None) -> QWidget\n" "load(QIODevice, QWidget parent=None) -> QWidget"); add_varargs_method("createWidget",&UiLoaderPy::createWidget,"createWidget()"); + + add_varargs_method("availableWidgets",&UiLoaderPy::availableWidgets,"availableWidgets()"); + add_varargs_method("clearPluginPaths",&UiLoaderPy::clearPluginPaths,"clearPluginPaths()"); + add_varargs_method("pluginPaths",&UiLoaderPy::pluginPaths,"pluginPaths()"); + add_varargs_method("addPluginPath",&UiLoaderPy::addPluginPath,"addPluginPath()"); + add_varargs_method("errorString",&UiLoaderPy::errorString,"errorString()"); + add_varargs_method("isLanguageChangeEnabled",&UiLoaderPy::isLanguageChangeEnabled, + "isLanguageChangeEnabled()"); + add_varargs_method("setLanguageChangeEnabled",&UiLoaderPy::setLanguageChangeEnabled, + "setLanguageChangeEnabled()"); + add_varargs_method("setWorkingDirectory",&UiLoaderPy::setWorkingDirectory, + "setWorkingDirectory()"); + add_varargs_method("workingDirectory",&UiLoaderPy::workingDirectory,"workingDirectory()"); } UiLoaderPy::UiLoaderPy() @@ -605,6 +618,85 @@ Py::Object UiLoaderPy::createWidget(const Py::Tuple& args) std::placeholders::_3)); } +Py::Object UiLoaderPy::addPluginPath(const Py::Tuple& args) +{ + Gui::PythonWrapper wrap; + if (wrap.loadCoreModule()) { + std::string fn; + if (wrap.toCString(args[0], fn)) { + loader.addPluginPath(QString::fromStdString(fn)); + } + } + return Py::None(); +} + +Py::Object UiLoaderPy::clearPluginPaths(const Py::Tuple& /*args*/) +{ + loader.clearPluginPaths(); + return Py::None(); +} + +Py::Object UiLoaderPy::pluginPaths(const Py::Tuple& /*args*/) +{ + auto list = loader.pluginPaths(); + Py::List py; + for (const auto& it : list) { + py.append(Py::String(it.toStdString())); + } + return py; +} + +Py::Object UiLoaderPy::availableWidgets(const Py::Tuple& /*args*/) +{ + auto list = loader.availableWidgets(); + Py::List py; + for (const auto& it : list) { + py.append(Py::String(it.toStdString())); + } + + auto producer = WidgetFactory().CanProduce(); + for (const auto& it : producer) { + py.append(Py::String(it)); + } + + return py; +} + +Py::Object UiLoaderPy::errorString(const Py::Tuple& /*args*/) +{ + return Py::String(loader.errorString().toStdString()); +} + +Py::Object UiLoaderPy::isLanguageChangeEnabled(const Py::Tuple& /*args*/) +{ + return Py::Boolean(loader.isLanguageChangeEnabled()); +} + +Py::Object UiLoaderPy::setLanguageChangeEnabled(const Py::Tuple& args) +{ + loader.setLanguageChangeEnabled(Py::Boolean(args[0])); + return Py::None(); +} + +Py::Object UiLoaderPy::setWorkingDirectory(const Py::Tuple& args) +{ + Gui::PythonWrapper wrap; + if (wrap.loadCoreModule()) { + std::string fn; + if (wrap.toCString(args[0], fn)) { + loader.setWorkingDirectory(QString::fromStdString(fn)); + } + } + return Py::None(); +} + +Py::Object UiLoaderPy::workingDirectory(const Py::Tuple& /*args*/) +{ + QDir dir = loader.workingDirectory(); + QString path = dir.absolutePath(); + return Py::String(path.toStdString()); +} + #if !defined (HAVE_QT_UI_TOOLS) # include "moc_UiLoader.cpp" #endif diff --git a/src/Gui/UiLoader.h b/src/Gui/UiLoader.h index 5f8ae0e6cc..112138bd57 100644 --- a/src/Gui/UiLoader.h +++ b/src/Gui/UiLoader.h @@ -135,6 +135,16 @@ public: Py::Object createWidget(const Py::Tuple&); Py::Object load(const Py::Tuple&); + Py::Object addPluginPath(const Py::Tuple&); + Py::Object clearPluginPaths(const Py::Tuple&); + Py::Object pluginPaths(const Py::Tuple&); + Py::Object availableWidgets(const Py::Tuple&); + Py::Object errorString(const Py::Tuple&); + Py::Object isLanguageChangeEnabled(const Py::Tuple&); + Py::Object setLanguageChangeEnabled(const Py::Tuple&); + Py::Object setWorkingDirectory(const Py::Tuple&); + Py::Object workingDirectory(const Py::Tuple&); + private: static PyObject *PyMake(struct _typeobject *, PyObject *, PyObject *);