diff --git a/README.md b/README.md index 3382834..cb34b59 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ With RoniaKit, you can create visually engaging and highly customizable interfac - **Cross-Platform Support** – Works on Linux, macOS, and Windows. ## How to Use -To add RoniaKit to your project, you can use it as a Git submodule and include it in your CMake configuration. +RoniaKit can be included in your project using **CMake** or **QMake**. Instructions for both build systems are provided below. ### Adding as a Git Submodule ```sh @@ -41,6 +41,12 @@ add_subdirectory(external/RoniaKit) # <- target_link_libraries(appTarget PRIVATE RoniaKit RoniaKitGauges) # <- ``` +### Integrating with QMake +If you are using QMake, follow these steps described in `include/qmake includes/QMake Setup.md` + + +--- + ## Usage To use a gauge component, simply import the library in your QML file and set its properties as needed: @@ -98,4 +104,4 @@ If you use RoniaKit in your project, please cite it as follows: ## Contributors Thanks to all our contributors! 💖 -[![Contributors](https://contrib.rocks/image?repo=Roniasoft/RoniaKit)](https://github.com/Roniasoft/RoniaKit/graphs/contributors) +[![Contributors](https://contrib.rocks/image?repo=Roniasoft/RoniaKit)](https://github.com/Roniasoft/RoniaKit/graphs/contributors) \ No newline at end of file diff --git a/include/qmake includes/QMake Setup.md b/include/qmake includes/QMake Setup.md new file mode 100644 index 0000000..6a7d9ea --- /dev/null +++ b/include/qmake includes/QMake Setup.md @@ -0,0 +1,141 @@ +# Integrating RoniaKit into a QMake Project + +Follow these steps to include the **RoniaKit** module in your QMake project. The steps ensure the module is properly set up and recognized by Qt. + +--- + +## **Step 1: Create a Subfolder** +- Create a subfolder in your project directory to hold the RoniaKit resources. For example: + - **Directory name**: `RoniaKit` +- Copy the `assets` and `modules/Gauges/` folder into this new subfolder. + +--- + +## **Step 2: Copy the `qmldir` File** +- Copy the `qmldir` file into the newly created `RoniaKit` directory. + +--- + +## **Step 3: Update Your Resource File (`qml.qrc`)** +1. Open your resource file (`qml.qrc`). +2. Add a new prefix for the resource entries: + - **Prefix name**: `/RoniaKit` + - Add all the files from the `RoniaKit` subfolder to the new prefix in the `qml.qrc` file. + - Include: + - `.qml` files + - `qmldir` file + - Any assets, such as images or fonts + - If you named the subfolder something other than `RoniaKit`, ensure the prefix matches the folder name. + - **Important**: The prefix name must match the subfolder name; otherwise, QMake will not recognize the module. + +### Example `qml.qrc` Entry +```xml + + + RoniaKit/Gauges/CircularBasicGauge.qml + RoniaKit/Gauges/CircularGauge.qml + RoniaKit/Gauges/FuelGauge.qml + RoniaKit/Gauges/HalfDial.qml + RoniaKit/Gauges/LevelGauge.qml + RoniaKit/Gauges/RangeControl.qml + RoniaKit/Gauges/RoniaControl.qml + RoniaKit/Gauges/Thermometer.qml + RoniaKit/Gauges/Extra/CircularAnalogGauge.qml + RoniaKit/Gauges/Extra/CircularModernGauge1.qml + RoniaKit/Gauges/Extra/CircularModernGauge2.qml + RoniaKit/Gauges/Extra/CircularSpeedGauge.qml + RoniaKit/Gauges/Extra/Style/CircularAnalogGaugeStyle.qml + RoniaKit/Gauges/Extra/Style/CircularModernGauge1Style.qml + RoniaKit/Gauges/Extra/Style/CircularModernGauge2Style.qml + RoniaKit/Gauges/Extra/Style/CircularSpeedGaugeStyle.qml + RoniaKit/Gauges/Style/CircularBasicGaugeStyle.qml + RoniaKit/Gauges/Style/CircularGaugeStyle.qml + RoniaKit/Gauges/Style/FuelGaugeStyle.qml + RoniaKit/Gauges/Style/LevelGaugeStyle.qml + RoniaKit/Gauges/Style/RoniaControlStyle.qml + RoniaKit/assetes/fonts/Font Awesome 6 Pro-Light-300.otf + RoniaKit/assetes/fonts/Font Awesome 6 Pro-Regular-400.otf + RoniaKit/assetes/fonts/Font Awesome 6 Pro-Solid-900.otf + RoniaKit/assetes/fonts/Font Awesome 6 Pro-Thin-100.otf + RoniaKit/assetes/fonts/FontsFree-Net-DS-DIGI-1.ttf + RoniaKit/Gauges/assets/images/gauge/glass.png + RoniaKit/Gauges/assets/images/gauge/knob.png + RoniaKit/Gauges/assets/images/gauge/needle.png + RoniaKit/Gauges/assets/images/gauge/needle-light.png + RoniaKit/Gauges/assets/images/gauge/needle-top.png + RoniaKit/Gauges/assets/images/gauge/numbers-Layer1.png + RoniaKit/Gauges/assets/images/gauge/redNeedle2.png + RoniaKit/Gauges/assets/images/gauge/redNeedle3.png + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/backScreen.svg + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/innerRing.svg + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/middleRing.svg + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/outerRing.svg + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/preview.png + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/topScreen.svg + RoniaKit/Gauges/assets/images/gauge/AnalougeGauge/VoltageGauge.rar + RoniaKit/Gauges/assets/images/gauge/Fuel/back.png + RoniaKit/Gauges/assets/images/gauge/Fuel/fuel-station-green.png + RoniaKit/Gauges/assets/images/gauge/Fuel/fuel-station-red.png + RoniaKit/Gauges/assets/images/gauge/Fuel/fuel-station-yellow.png + RoniaKit/Gauges/assets/images/gauge/Modern/back.png + RoniaKit/Gauges/assets/images/gauge/Modern/blueLight.png + RoniaKit/Gauges/assets/images/gauge/Modern/blueNeedle.png + RoniaKit/Gauges/assets/images/gauge/Modern/knob.png + RoniaKit/Gauges/assets/images/gauge/Modern/redLight.png + RoniaKit/Gauges/assets/images/gauge/Modern/redNeedle.png + RoniaKit/Gauges/assets/images/gauge/Modern/yellowLight.png + RoniaKit/Gauges/assets/images/gauge/Modern/yellowNeedle.png + RoniaKit/Gauges/assets/images/gauge/Speed/backOff.png + RoniaKit/Gauges/assets/images/gauge/Speed/backOn.png + RoniaKit/Gauges/assets/images/gauge/Speed/needle-off.png + RoniaKit/Gauges/assets/images/gauge/Speed/needle-on.png + RoniaKit/qmldir + + +``` + +--- + +## **Step 5: Register the Module in `main.cpp`** +- Add the module to your Qt engine to ensure it can locate the resources. +- Use the following code snippet in your `main.cpp` file (or wherever the engine is initialized): + +```cpp +#include +#include + +int main(int argc, char *argv[]) { + QGuiApplication app(argc, argv); + QQmlApplicationEngine engine; + + // Register the RoniaKit module + engine.addImportPath("qrc:/RoniaKit"); + + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + if (engine.rootObjects().isEmpty()) + return -1; + + return app.exec(); +} +``` + +--- + +## **Step 6: Add the `RoniaKit.pri` to Your `.pro` File** +1. Open your `.pro` project file. +2. Add the following line to include the `RoniaKit.pri` file: + ```pro + include(RoniaKit/RoniaKit.pri) + ``` + +--- + +## **Final Checklist** +- [ ] Subfolder `RoniaKit` created and contains the required files. +- [ ] `qmldir` copied to the `RoniaKit` directory. +- [ ] Resource file (`qml.qrc`) updated with a new prefix `/RoniaKit`. +- [ ] All files from the `RoniaKit` subfolder added to the resource file. +- [ ] `main.cpp` updated to register the module with `engine.addImportPath()`. +- [ ] `.pro` file updated to include the `RoniaKit.pri`. + +Once all these steps are completed, the **RoniaKit** module will be successfully integrated into your QMake project. \ No newline at end of file diff --git a/include/qmake includes/RoniaKit.pri b/include/qmake includes/RoniaKit.pri new file mode 100644 index 0000000..4900bc3 --- /dev/null +++ b/include/qmake includes/RoniaKit.pri @@ -0,0 +1 @@ +QML_IMPORT_PATH += $$PWD/RoniaKit \ No newline at end of file diff --git a/include/qmake includes/qmldir b/include/qmake includes/qmldir new file mode 100644 index 0000000..e9fc8d4 --- /dev/null +++ b/include/qmake includes/qmldir @@ -0,0 +1,22 @@ +module RoniaKit +HalfDial 1.0 Gauges/HalfDial.qml +Thermometer 1.0 Gauges/Thermometer.qml +RoniaControl 1.0 Gauges/RoniaControl.qml +CircularGauge 1.0 Gauges/CircularGauge.qml +RangeControl 1.0 Gauges/RangeControl.qml +FuelGauge 1.0 Gauges/FuelGauge.qml +LevelGauge 1.0 Gauges/LevelGauge.qml +CircularBasicGauge 1.0 Gauges/CircularBasicGauge.qml +CircularGaugeStyle 1.0 Gauges/Style/CircularGaugeStyle.qml +RoniaControlStyle 1.0 Gauges/Style/RoniaControlStyle.qml +FuelGaugeStyle 1.0 Gauges/Style/FuelGaugeStyle.qml +LevelGaugeStyle 1.0 Gauges/Style/LevelGaugeStyle.qml +CircularBasicGaugeStyle 1.0 Gauges/Style/CircularBasicGaugeStyle.qml +CircularModernGauge1 1.0 Gauges/Extra/CircularModernGauge1.qml +CircularModernGauge1Style 1.0 Gauges/Extra/Style/CircularModernGauge1Style.qml +CircularSpeedGauge 1.0 Gauges/Extra/CircularSpeedGauge.qml +CircularSpeedGaugeStyle 1.0 Gauges/Extra/Style/CircularSpeedGaugeStyle.qml +CircularAnalogGauge 1.0 Gauges/Extra/CircularAnalogGauge.qml +CircularAnalogGaugeStyle 1.0 Gauges/Extra/Style/CircularAnalogGaugeStyle.qml +CircularModernGauge2 1.0 Gauges/Extra/CircularModernGauge2.qml +CircularModernGauge2Style 1.0 Gauges/Extra/Style/CircularModernGauge2Style.qml