From 36c8a1b44774c296250bc5730f37513be087149b Mon Sep 17 00:00:00 2001 From: William Wedler Date: Wed, 24 Nov 2021 16:04:23 -0500 Subject: [PATCH 1/4] use qmldir to define QML module with IgnSpinBox Signed-off-by: William Wedler --- include/ignition/gui/Application.hh | 4 ++++ include/ignition/gui/qml/qmldir | 3 +++ include/ignition/gui/resources.qrc | 4 ++++ src/Application.cc | 1 + src/plugins/teleop/Teleop.qml | 2 +- 5 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 include/ignition/gui/qml/qmldir diff --git a/include/ignition/gui/Application.hh b/include/ignition/gui/Application.hh index b0813a8fc..883872a7f 100644 --- a/include/ignition/gui/Application.hh +++ b/include/ignition/gui/Application.hh @@ -46,6 +46,10 @@ namespace ignition class MainWindow; class Plugin; + + /// /brief Import path for ign-gui QML modules added to the Qt resource system + const char *const QML_QRC_IMPORT_PATH = "qrc:/ign-gui-qml/"; + /// \brief Type of window which the application will display enum class WindowType : int { 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..45556fb43 100644 --- a/include/ignition/gui/resources.qrc +++ b/include/ignition/gui/resources.qrc @@ -20,4 +20,8 @@ qml/images/menu.png qml/images/search.svg + + qml/IgnSpinBox.qml + qml/qmldir + diff --git a/src/Application.cc b/src/Application.cc index ac60ce07a..16751e70f 100644 --- a/src/Application.cc +++ b/src/Application.cc @@ -91,6 +91,7 @@ Application::Application(int &_argc, char **_argv, const WindowType _type) // QML engine this->dataPtr->engine = new QQmlApplicationEngine(); + this->dataPtr->engine->addImportPath(QML_QRC_IMPORT_PATH); // Install signal handler for graceful shutdown this->dataPtr->signalHandler.AddCallback( 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" From 26698357a3976e165f8a515afd3ce60fde1f6fbe Mon Sep 17 00:00:00 2001 From: William Wedler Date: Wed, 24 Nov 2021 16:10:35 -0500 Subject: [PATCH 2/4] exlain where to add more QML components to use in the qmldir file Signed-off-by: William Wedler --- include/ignition/gui/resources.qrc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/ignition/gui/resources.qrc b/include/ignition/gui/resources.qrc index 45556fb43..934624c10 100644 --- a/include/ignition/gui/resources.qrc +++ b/include/ignition/gui/resources.qrc @@ -21,7 +21,9 @@ qml/images/search.svg - qml/IgnSpinBox.qml + qml/qmldir + + qml/IgnSpinBox.qml From 908ae31c7e535dc0b1cb862748d17cff31b1ad9c Mon Sep 17 00:00:00 2001 From: William Wedler Date: Mon, 29 Nov 2021 08:54:40 -0500 Subject: [PATCH 3/4] change qmlQrcImportPath to a helper method Signed-off-by: William Wedler --- include/ignition/gui/Application.hh | 4 ---- include/ignition/gui/Helpers.hh | 10 ++++++++++ src/Application.cc | 3 ++- src/Helpers.cc | 6 ++++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/include/ignition/gui/Application.hh b/include/ignition/gui/Application.hh index 883872a7f..b0813a8fc 100644 --- a/include/ignition/gui/Application.hh +++ b/include/ignition/gui/Application.hh @@ -46,10 +46,6 @@ namespace ignition class MainWindow; class Plugin; - - /// /brief Import path for ign-gui QML modules added to the Qt resource system - const char *const QML_QRC_IMPORT_PATH = "qrc:/ign-gui-qml/"; - /// \brief Type of window which the application will display enum class WindowType : int { diff --git a/include/ignition/gui/Helpers.hh b/include/ignition/gui/Helpers.hh index 2a22abf0d..87d78a84a 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/src/Application.cc b/src/Application.cc index 16751e70f..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,7 +92,7 @@ Application::Application(int &_argc, char **_argv, const WindowType _type) // QML engine this->dataPtr->engine = new QQmlApplicationEngine(); - this->dataPtr->engine->addImportPath(QML_QRC_IMPORT_PATH); + 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/"; +} From 09428d0d71c90fa020363948edac1ba7994eda77 Mon Sep 17 00:00:00 2001 From: William Wedler Date: Mon, 29 Nov 2021 14:31:57 -0500 Subject: [PATCH 4/4] fix documentation formatting Signed-off-by: William Wedler --- include/ignition/gui/Helpers.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ignition/gui/Helpers.hh b/include/ignition/gui/Helpers.hh index 87d78a84a..a83e7fa51 100644 --- a/include/ignition/gui/Helpers.hh +++ b/include/ignition/gui/Helpers.hh @@ -80,7 +80,7 @@ namespace ignition QStringList worldNames(); - /// /brief Import path for ign-gui QML modules added to the Qt resource system + /// \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