From 993a9219d55b0e3d595baee5c1cafeeea7a5283c Mon Sep 17 00:00:00 2001 From: peri4 Date: Sun, 29 Jan 2023 20:29:15 +0300 Subject: [PATCH] rename libs/piqt_widgtes to libs/piqt_utils add PIVariantEdit for PIGeoPosition --- icons/location.png | Bin 0 -> 13475 bytes libs/map/CMakeLists.txt | 2 +- libs/map/mapitembase.h | 4 +- libs/map/mapview.cpp | 5 +- libs/map/mapview.h | 3 + libs/map/pivariant_geoposition.cpp | 63 ++++++++ libs/map/pivariant_geoposition.h | 48 ++++++ libs/map/pivariant_geoposition.ui | 113 ++++++++++++++ libs/map/pivariant_geoposition_map.ui | 143 ++++++++++++++++++ libs/map/qad_map.qrc | 1 + .../CMakeLists.txt | 0 .../piqt_connection_edit.cpp | 0 .../piqt_connection_edit.h | 0 .../piqt_connection_edit.ui | 0 .../piqt_connection_view.cpp | 0 .../piqt_connection_view.h | 0 .../piqt_highlighter.cpp | 0 .../piqt_highlighter.h | 0 .../piqt_iodevice_edit.cpp | 0 .../piqt_iodevice_edit.h | 0 .../piqt_iodevice_edit_dialog.cpp | 0 .../piqt_iodevice_edit_dialog.h | 0 .../piqt_iodevice_edit_dialog.ui | 0 .../pivaluetree_edit.cpp | 0 .../pivaluetree_edit.h | 0 .../pivaluetree_edit_array.ui | 0 .../pivaluetree_edit_parameters.cpp | 0 .../pivaluetree_edit_parameters.h | 0 .../pivaluetree_edit_parameters.ui | 0 .../pivaluetree_edit_reorder.cpp | 0 .../pivaluetree_edit_reorder.h | 0 .../pivaluetree_edit_reorder.ui | 0 .../pivariant_edit.cpp | 0 .../pivariant_edit.h | 0 .../pivariant_edit_enum.cpp | 0 .../pivariant_edit_enum.h | 0 .../pivariant_edit_enum.ui | 0 .../pivariant_edit_widgets.cpp | 0 .../pivariant_edit_widgets.h | 0 .../qad_piqt_widgets.qrc | 0 utils/valuetreeeditor/CMakeLists.txt | 2 +- .../valuetreeeditor/valuetreeeditor_main.cpp | 6 + 42 files changed, 386 insertions(+), 4 deletions(-) create mode 100644 icons/location.png create mode 100644 libs/map/pivariant_geoposition.cpp create mode 100644 libs/map/pivariant_geoposition.h create mode 100644 libs/map/pivariant_geoposition.ui create mode 100644 libs/map/pivariant_geoposition_map.ui rename libs/{piqt_widgets => piqt_utils}/CMakeLists.txt (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_connection_edit.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_connection_edit.h (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_connection_edit.ui (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_connection_view.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_connection_view.h (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_highlighter.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_highlighter.h (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_iodevice_edit.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_iodevice_edit.h (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_iodevice_edit_dialog.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_iodevice_edit_dialog.h (100%) rename libs/{piqt_widgets => piqt_utils}/piqt_iodevice_edit_dialog.ui (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit.h (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_array.ui (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_parameters.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_parameters.h (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_parameters.ui (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_reorder.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_reorder.h (100%) rename libs/{piqt_widgets => piqt_utils}/pivaluetree_edit_reorder.ui (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit.h (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit_enum.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit_enum.h (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit_enum.ui (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit_widgets.cpp (100%) rename libs/{piqt_widgets => piqt_utils}/pivariant_edit_widgets.h (100%) rename libs/{piqt_widgets => piqt_utils}/qad_piqt_widgets.qrc (100%) diff --git a/icons/location.png b/icons/location.png new file mode 100644 index 0000000000000000000000000000000000000000..daa5f4f7fd5bd6e65a92beda4ee1d7dd6885f943 GIT binary patch literal 13475 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 +#include #include #include #include @@ -58,7 +59,8 @@ public: QPointF position() const { return m_position; } void setPosition(QPointF geo); - void setPosition(double lat, double lng) { setPosition({lat, lng}); } + void setPosition(double lat, double lng) { setPosition(QPointF(lat, lng)); } + void setPosition(QGeoCoordinate c) { setPosition(QPointF(c.latitude(), c.longitude())); } QPointF offset() const { return m_offset; } void setOffset(QPointF pixels); diff --git a/libs/map/mapview.cpp b/libs/map/mapview.cpp index 2e0bcb2..a1247ed 100644 --- a/libs/map/mapview.cpp +++ b/libs/map/mapview.cpp @@ -86,7 +86,10 @@ void MapView::mousePressEvent(QMouseEvent * e) { void MapView::mouseReleaseEvent(QMouseEvent * e) { if (!is_pan) { - if (hover) emit itemClicked(hover); + if (hover) + emit itemClicked(hover); + else + emit mapClicked(last_click_coord); } is_pan = false; } diff --git a/libs/map/mapview.h b/libs/map/mapview.h index bd2eaf5..4c9558c 100644 --- a/libs/map/mapview.h +++ b/libs/map/mapview.h @@ -23,6 +23,7 @@ #include "mapitembase.h" #include "qad_map_export.h" +#include #include #include @@ -48,6 +49,7 @@ public: QPointF center() const; void setCenter(QPointF c); + void setCenter(QGeoCoordinate c) { setCenter(QPointF(c.latitude(), c.longitude())); } double getZoom() const { return zoom_; } void setZoom(double z); @@ -101,6 +103,7 @@ public slots: private slots: signals: + void mapClicked(QPointF); void itemClicked(MapItemBase * item); void itemEntered(MapItemBase * item); void itemLeaved(MapItemBase * item); diff --git a/libs/map/pivariant_geoposition.cpp b/libs/map/pivariant_geoposition.cpp new file mode 100644 index 0000000..90e9597 --- /dev/null +++ b/libs/map/pivariant_geoposition.cpp @@ -0,0 +1,63 @@ +#include "pivariant_geoposition.h" + +#include "mapitemimage.h" +#include "piqt.h" +#include "pivaluetree.h" +#include "ui_pivariant_geoposition.h" +#include "ui_pivariant_geoposition_map.h" + +#include + + +REGISTER_PIVARIANTEDITOR(PIGeoPosition, PIVariantEditors::GeoPosition); + +#define GeoUI reinterpret_cast(ui) + +using Attribute = PIValueTree::Attribute; + + +PIVariantEditors::GeoPosition::GeoPosition() { + QWidget * w = new QWidget(); + ui = new Ui::GeoPosition(); + GeoUI->setupUi(w); + layout()->addWidget(w); + connect(GeoUI->buttonMap, &QToolButton::clicked, this, [this]() { + QDialog dlg; + Ui::GeoPositionMap ui; + ui.setupUi(&dlg); + ui.map->setCenter(PI2QGeoPosition(value().value())); + auto * item = new MapItemImage(QPixmap(":/icons/location.png")); + item->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); + item->setScale(0.333 * appScale(this)); + item->setPosition(ui.map->center()); + ui.map->addItem(item); + connect(ui.map, &MapView::mapClicked, this, [item](QPointF c) { item->setPosition(c); }); + if (dlg.exec() != QDialog::Accepted) return; + PIGeoPosition gp({item->position().x(), item->position().y(), 0.}, PIGeoPosition::Geodetic); + setValue(PIVariant::fromValue(gp)); + }); +} + + +PIVariantEditors::GeoPosition::~GeoPosition() { + delete GeoUI; +} + + +void PIVariantEditors::GeoPosition::setValue(const PIVariant & v) { + val = v.value(); + GeoUI->line->setText(PI2QString(v.toString())); +} + + +PIVariant PIVariantEditors::GeoPosition::value() const { + PIGeoPosition g = __PIVariantFunctions__::castVariant(Q2PIString(GeoUI->line->text())); + return PIVariant::fromValue(g); +} + + +void PIVariantEditors::GeoPosition::applyAttributes(const PIVariantMap & a) { + bool ro = a.value(Attribute::readOnly, GeoUI->line->isReadOnly()).toBool(); + GeoUI->line->setReadOnly(ro); + GeoUI->buttonMap->setHidden(ro); +} diff --git a/libs/map/pivariant_geoposition.h b/libs/map/pivariant_geoposition.h new file mode 100644 index 0000000..b7eb087 --- /dev/null +++ b/libs/map/pivariant_geoposition.h @@ -0,0 +1,48 @@ +/* + QAD - Qt ADvanced + + Ivan Pelipenko peri4ko@yandex.ru + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef pivariant_geoposition_H +#define pivariant_geoposition_H + +#include "mapview.h" +#include "pigeoposition.h" +#include "pivariant_edit.h" + +namespace PIVariantEditors { + +class QAD_MAP_EXPORT GeoPosition: public PIVariantEditorBase { + Q_OBJECT + +public: + GeoPosition(); + ~GeoPosition(); + void setValue(const PIVariant & v) override; + PIVariant value() const override; + +protected: + void applyAttributes(const PIVariantMap & a) override; + void * ui = nullptr; + PIGeoPosition val; +}; + + +}; // namespace PIVariantEditors + + +#endif diff --git a/libs/map/pivariant_geoposition.ui b/libs/map/pivariant_geoposition.ui new file mode 100644 index 0000000..2f450a8 --- /dev/null +++ b/libs/map/pivariant_geoposition.ui @@ -0,0 +1,113 @@ + + + GeoPosition + + + + 0 + 0 + 435 + 57 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Select on map ... + + + + :/icons/maps.png:/icons/maps.png + + + + + + + + :/icons/edit-delete.png:/icons/edit-delete.png + + + Remove + + + + + + :/icons/configure.png:/icons/configure.png + + + Change ... + + + + + + :/icons/border-line.png:/icons/border-line.png + + + Rename ... + + + + + + :/icons/code-variable.png:/icons/code-variable.png + + + Value + + + + + + :/icons/code-struct.png:/icons/code-struct.png + + + Group + + + + + + :/icons/code-union.png:/icons/code-union.png + + + Array + + + + + + :/icons/legend.png:/icons/legend.png + + + Reorder ... + + + + + + + + + + + + diff --git a/libs/map/pivariant_geoposition_map.ui b/libs/map/pivariant_geoposition_map.ui new file mode 100644 index 0000000..72d4218 --- /dev/null +++ b/libs/map/pivariant_geoposition_map.ui @@ -0,0 +1,143 @@ + + + GeoPositionMap + + + + 0 + 0 + 683 + 634 + + + + Select on map + + + + + + 15.000000000000000 + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + :/icons/edit-delete.png:/icons/edit-delete.png + + + Remove + + + + + + :/icons/configure.png:/icons/configure.png + + + Change ... + + + + + + :/icons/border-line.png:/icons/border-line.png + + + Rename ... + + + + + + :/icons/code-variable.png:/icons/code-variable.png + + + Value + + + + + + :/icons/code-struct.png:/icons/code-struct.png + + + Group + + + + + + :/icons/code-union.png:/icons/code-union.png + + + Array + + + + + + :/icons/legend.png:/icons/legend.png + + + Reorder ... + + + + + + MapView + QWidget +
mapview.h
+
+
+ + + + + + + + + buttonBox + accepted() + GeoPositionMap + accept() + + + 342 + 607 + + + 289 + 646 + + + + + buttonBox + rejected() + GeoPositionMap + reject() + + + 561 + 611 + + + 525 + 649 + + + + +
diff --git a/libs/map/qad_map.qrc b/libs/map/qad_map.qrc index 6546225..3a986a6 100644 --- a/libs/map/qad_map.qrc +++ b/libs/map/qad_map.qrc @@ -1,5 +1,6 @@ ../../icons/maps.png + ../../icons/location.png diff --git a/libs/piqt_widgets/CMakeLists.txt b/libs/piqt_utils/CMakeLists.txt similarity index 100% rename from libs/piqt_widgets/CMakeLists.txt rename to libs/piqt_utils/CMakeLists.txt diff --git a/libs/piqt_widgets/piqt_connection_edit.cpp b/libs/piqt_utils/piqt_connection_edit.cpp similarity index 100% rename from libs/piqt_widgets/piqt_connection_edit.cpp rename to libs/piqt_utils/piqt_connection_edit.cpp diff --git a/libs/piqt_widgets/piqt_connection_edit.h b/libs/piqt_utils/piqt_connection_edit.h similarity index 100% rename from libs/piqt_widgets/piqt_connection_edit.h rename to libs/piqt_utils/piqt_connection_edit.h diff --git a/libs/piqt_widgets/piqt_connection_edit.ui b/libs/piqt_utils/piqt_connection_edit.ui similarity index 100% rename from libs/piqt_widgets/piqt_connection_edit.ui rename to libs/piqt_utils/piqt_connection_edit.ui diff --git a/libs/piqt_widgets/piqt_connection_view.cpp b/libs/piqt_utils/piqt_connection_view.cpp similarity index 100% rename from libs/piqt_widgets/piqt_connection_view.cpp rename to libs/piqt_utils/piqt_connection_view.cpp diff --git a/libs/piqt_widgets/piqt_connection_view.h b/libs/piqt_utils/piqt_connection_view.h similarity index 100% rename from libs/piqt_widgets/piqt_connection_view.h rename to libs/piqt_utils/piqt_connection_view.h diff --git a/libs/piqt_widgets/piqt_highlighter.cpp b/libs/piqt_utils/piqt_highlighter.cpp similarity index 100% rename from libs/piqt_widgets/piqt_highlighter.cpp rename to libs/piqt_utils/piqt_highlighter.cpp diff --git a/libs/piqt_widgets/piqt_highlighter.h b/libs/piqt_utils/piqt_highlighter.h similarity index 100% rename from libs/piqt_widgets/piqt_highlighter.h rename to libs/piqt_utils/piqt_highlighter.h diff --git a/libs/piqt_widgets/piqt_iodevice_edit.cpp b/libs/piqt_utils/piqt_iodevice_edit.cpp similarity index 100% rename from libs/piqt_widgets/piqt_iodevice_edit.cpp rename to libs/piqt_utils/piqt_iodevice_edit.cpp diff --git a/libs/piqt_widgets/piqt_iodevice_edit.h b/libs/piqt_utils/piqt_iodevice_edit.h similarity index 100% rename from libs/piqt_widgets/piqt_iodevice_edit.h rename to libs/piqt_utils/piqt_iodevice_edit.h diff --git a/libs/piqt_widgets/piqt_iodevice_edit_dialog.cpp b/libs/piqt_utils/piqt_iodevice_edit_dialog.cpp similarity index 100% rename from libs/piqt_widgets/piqt_iodevice_edit_dialog.cpp rename to libs/piqt_utils/piqt_iodevice_edit_dialog.cpp diff --git a/libs/piqt_widgets/piqt_iodevice_edit_dialog.h b/libs/piqt_utils/piqt_iodevice_edit_dialog.h similarity index 100% rename from libs/piqt_widgets/piqt_iodevice_edit_dialog.h rename to libs/piqt_utils/piqt_iodevice_edit_dialog.h diff --git a/libs/piqt_widgets/piqt_iodevice_edit_dialog.ui b/libs/piqt_utils/piqt_iodevice_edit_dialog.ui similarity index 100% rename from libs/piqt_widgets/piqt_iodevice_edit_dialog.ui rename to libs/piqt_utils/piqt_iodevice_edit_dialog.ui diff --git a/libs/piqt_widgets/pivaluetree_edit.cpp b/libs/piqt_utils/pivaluetree_edit.cpp similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit.cpp rename to libs/piqt_utils/pivaluetree_edit.cpp diff --git a/libs/piqt_widgets/pivaluetree_edit.h b/libs/piqt_utils/pivaluetree_edit.h similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit.h rename to libs/piqt_utils/pivaluetree_edit.h diff --git a/libs/piqt_widgets/pivaluetree_edit_array.ui b/libs/piqt_utils/pivaluetree_edit_array.ui similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_array.ui rename to libs/piqt_utils/pivaluetree_edit_array.ui diff --git a/libs/piqt_widgets/pivaluetree_edit_parameters.cpp b/libs/piqt_utils/pivaluetree_edit_parameters.cpp similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_parameters.cpp rename to libs/piqt_utils/pivaluetree_edit_parameters.cpp diff --git a/libs/piqt_widgets/pivaluetree_edit_parameters.h b/libs/piqt_utils/pivaluetree_edit_parameters.h similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_parameters.h rename to libs/piqt_utils/pivaluetree_edit_parameters.h diff --git a/libs/piqt_widgets/pivaluetree_edit_parameters.ui b/libs/piqt_utils/pivaluetree_edit_parameters.ui similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_parameters.ui rename to libs/piqt_utils/pivaluetree_edit_parameters.ui diff --git a/libs/piqt_widgets/pivaluetree_edit_reorder.cpp b/libs/piqt_utils/pivaluetree_edit_reorder.cpp similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_reorder.cpp rename to libs/piqt_utils/pivaluetree_edit_reorder.cpp diff --git a/libs/piqt_widgets/pivaluetree_edit_reorder.h b/libs/piqt_utils/pivaluetree_edit_reorder.h similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_reorder.h rename to libs/piqt_utils/pivaluetree_edit_reorder.h diff --git a/libs/piqt_widgets/pivaluetree_edit_reorder.ui b/libs/piqt_utils/pivaluetree_edit_reorder.ui similarity index 100% rename from libs/piqt_widgets/pivaluetree_edit_reorder.ui rename to libs/piqt_utils/pivaluetree_edit_reorder.ui diff --git a/libs/piqt_widgets/pivariant_edit.cpp b/libs/piqt_utils/pivariant_edit.cpp similarity index 100% rename from libs/piqt_widgets/pivariant_edit.cpp rename to libs/piqt_utils/pivariant_edit.cpp diff --git a/libs/piqt_widgets/pivariant_edit.h b/libs/piqt_utils/pivariant_edit.h similarity index 100% rename from libs/piqt_widgets/pivariant_edit.h rename to libs/piqt_utils/pivariant_edit.h diff --git a/libs/piqt_widgets/pivariant_edit_enum.cpp b/libs/piqt_utils/pivariant_edit_enum.cpp similarity index 100% rename from libs/piqt_widgets/pivariant_edit_enum.cpp rename to libs/piqt_utils/pivariant_edit_enum.cpp diff --git a/libs/piqt_widgets/pivariant_edit_enum.h b/libs/piqt_utils/pivariant_edit_enum.h similarity index 100% rename from libs/piqt_widgets/pivariant_edit_enum.h rename to libs/piqt_utils/pivariant_edit_enum.h diff --git a/libs/piqt_widgets/pivariant_edit_enum.ui b/libs/piqt_utils/pivariant_edit_enum.ui similarity index 100% rename from libs/piqt_widgets/pivariant_edit_enum.ui rename to libs/piqt_utils/pivariant_edit_enum.ui diff --git a/libs/piqt_widgets/pivariant_edit_widgets.cpp b/libs/piqt_utils/pivariant_edit_widgets.cpp similarity index 100% rename from libs/piqt_widgets/pivariant_edit_widgets.cpp rename to libs/piqt_utils/pivariant_edit_widgets.cpp diff --git a/libs/piqt_widgets/pivariant_edit_widgets.h b/libs/piqt_utils/pivariant_edit_widgets.h similarity index 100% rename from libs/piqt_widgets/pivariant_edit_widgets.h rename to libs/piqt_utils/pivariant_edit_widgets.h diff --git a/libs/piqt_widgets/qad_piqt_widgets.qrc b/libs/piqt_utils/qad_piqt_widgets.qrc similarity index 100% rename from libs/piqt_widgets/qad_piqt_widgets.qrc rename to libs/piqt_utils/qad_piqt_widgets.qrc diff --git a/utils/valuetreeeditor/CMakeLists.txt b/utils/valuetreeeditor/CMakeLists.txt index d51de14..9b24b01 100644 --- a/utils/valuetreeeditor/CMakeLists.txt +++ b/utils/valuetreeeditor/CMakeLists.txt @@ -7,7 +7,7 @@ else() set(APP_ICON "icons/valuetreeeditor.png") endif() set(APP_INFO "Editor for PIValueTree") -qad_application(${PROJECT_NAME} "Gui;Widgets" "qad_utils;qad_widgets;qad_application;qad_piqt_utils") +qad_application(${PROJECT_NAME} "Gui;Widgets" "qad_utils;qad_widgets;qad_application;qad_piqt_utils;qad_map") if (NOT DEFINED ANDROID_PLATFORM) foreach (_qv_ IN ITEMS 5 6) if (${LOCAL_FOUND${_qv_}}) diff --git a/utils/valuetreeeditor/valuetreeeditor_main.cpp b/utils/valuetreeeditor/valuetreeeditor_main.cpp index aa682b1..53a51f9 100644 --- a/utils/valuetreeeditor/valuetreeeditor_main.cpp +++ b/utils/valuetreeeditor/valuetreeeditor_main.cpp @@ -1,4 +1,6 @@ #include "mainwindow.h" +#include "pivariant.h" +#include "pivariant_geoposition.h" #include "qad_locations.h" #include "qad_types.h" @@ -10,6 +12,10 @@ int main(int argc, char * argv[]) { a.setWindowIcon(QIcon(":/icons/valuetreeeditor.png")); enableHighDPI(); QAD::loadTranslations(); + + auto * www = new PIVariantEditors::GeoPosition(); + delete www; + MainWindow w; if (a.arguments().size() > 1) w.load(a.arguments().back()); w.show();