From 182789999441f7c812a7b15ddb7660a3966fb4f1 Mon Sep 17 00:00:00 2001 From: Will <1305536+zflat@users.noreply.github.com> Date: Thu, 2 Dec 2021 02:19:36 -0500 Subject: [PATCH] Use qmldir to define QML module with IgnSpinBox (#319) Signed-off-by: William Wedler Co-authored-by: Louise Poubel --- include/ignition/gui/Helpers.hh | 10 ++++++++++ include/ignition/gui/qml/qmldir | 3 +++ include/ignition/gui/resources.qrc | 6 ++++++ src/Application.cc | 2 ++ src/Helpers.cc | 6 ++++++ src/plugins/teleop/Teleop.qml | 2 +- 6 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 include/ignition/gui/qml/qmldir diff --git a/include/ignition/gui/Helpers.hh b/include/ignition/gui/Helpers.hh index 2a22abf0d..a83e7fa51 100644 --- a/include/ignition/gui/Helpers.hh +++ b/include/ignition/gui/Helpers.hh @@ -79,6 +79,16 @@ namespace ignition IGNITION_GUI_VISIBLE QStringList worldNames(); + + /// \brief Import path for ign-gui QML modules added to the Qt resource system + /// This helper function returns the QRC resource path where custom ignition QML + /// modules can be imported from. To import an ignition QML module, add this path + /// to the QML engine's import path list before attempting to load a QML file + /// that imports ignition QML modules. + /// \return Resousrce path prefix as a string + IGNITION_GUI_VISIBLE + const QString qmlQrcImportPath(); + /// \brief Returns the first element on a QList which matches the given /// property. /// \param[in] _list The list to search through. diff --git a/include/ignition/gui/qml/qmldir b/include/ignition/gui/qml/qmldir new file mode 100644 index 000000000..f4f66ebc1 --- /dev/null +++ b/include/ignition/gui/qml/qmldir @@ -0,0 +1,3 @@ +module ignition.gui + +IgnSpinBox 1.0 IgnSpinBox.qml \ No newline at end of file diff --git a/include/ignition/gui/resources.qrc b/include/ignition/gui/resources.qrc index fd0cb74ce..934624c10 100644 --- a/include/ignition/gui/resources.qrc +++ b/include/ignition/gui/resources.qrc @@ -20,4 +20,10 @@ qml/images/menu.png qml/images/search.svg + + + qml/qmldir + + qml/IgnSpinBox.qml + diff --git a/src/Application.cc b/src/Application.cc index ac60ce07a..6ca02efd8 100644 --- a/src/Application.cc +++ b/src/Application.cc @@ -28,6 +28,7 @@ #include "ignition/gui/Application.hh" #include "ignition/gui/config.hh" #include "ignition/gui/Dialog.hh" +#include "ignition/gui/Helpers.hh" #include "ignition/gui/MainWindow.hh" #include "ignition/gui/Plugin.hh" @@ -91,6 +92,7 @@ Application::Application(int &_argc, char **_argv, const WindowType _type) // QML engine this->dataPtr->engine = new QQmlApplicationEngine(); + this->dataPtr->engine->addImportPath(qmlQrcImportPath()); // Install signal handler for graceful shutdown this->dataPtr->signalHandler.AddCallback( diff --git a/src/Helpers.cc b/src/Helpers.cc index 4c6a51329..0fc89d7cc 100644 --- a/src/Helpers.cc +++ b/src/Helpers.cc @@ -180,3 +180,9 @@ QStringList ignition::gui::worldNames() return worldNamesVariant.toStringList(); } + +///////////////////////////////////////////////// +const QString ignition::gui::qmlQrcImportPath() +{ + return "qrc:/ign-gui-qml/"; +} diff --git a/src/plugins/teleop/Teleop.qml b/src/plugins/teleop/Teleop.qml index 74f9eed9d..f4001a578 100644 --- a/src/plugins/teleop/Teleop.qml +++ b/src/plugins/teleop/Teleop.qml @@ -20,7 +20,7 @@ import QtQuick.Controls 2.2 import QtQuick.Controls.Material 2.1 import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.3 -import "qrc:/qml" +import ignition.gui 1.0 Rectangle { color:"transparent"