mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-04 00:30:59 -05:00
[feature] [ios] allow static build of postgres provider
This commit is contained in:
parent
679e75e13c
commit
5672f0d24c
@ -1504,10 +1504,12 @@ TARGET_LINK_LIBRARIES(qgis_core
|
||||
IF (FORCE_STATIC_PROVIDERS)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/src/providers/wms
|
||||
${CMAKE_SOURCE_DIR}/src/providers/postgres
|
||||
)
|
||||
|
||||
TARGET_LINK_LIBRARIES(qgis_core
|
||||
wmsprovider_a
|
||||
postgresprovider_a
|
||||
)
|
||||
ENDIF (FORCE_STATIC_PROVIDERS)
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "providers/meshmemory/qgsmeshmemorydataprovider.h"
|
||||
#ifdef HAVE_STATIC_PROVIDERS
|
||||
#include "qgswmsprovider.h"
|
||||
#include "qgspostgresprovider.h"
|
||||
#endif
|
||||
|
||||
static QgsProviderRegistry *sInstance = nullptr;
|
||||
@ -109,6 +110,7 @@ void QgsProviderRegistry::init()
|
||||
mProviders[ QgsOgrProvider::providerKey() ] = new QgsOgrProviderMetadata();
|
||||
#ifdef HAVE_STATIC_PROVIDERS
|
||||
mProviders[ QgsWmsProvider::providerKey() ] = new QgsWmsProviderMetadata();
|
||||
mProviders[ QgsPostgresProvider::providerKey() ] = new QgsPostgresProviderMetadata();
|
||||
#endif
|
||||
|
||||
// add dynamic providers
|
||||
|
@ -1130,9 +1130,11 @@ TARGET_LINK_LIBRARIES(qgis_gui
|
||||
IF (FORCE_STATIC_PROVIDERS)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/src/providers/wms
|
||||
${CMAKE_SOURCE_DIR}/src/providers/postgres
|
||||
)
|
||||
TARGET_LINK_LIBRARIES(qgis_gui
|
||||
wmsprovider_gui_a
|
||||
postgresprovider_gui_a
|
||||
)
|
||||
ENDIF (FORCE_STATIC_PROVIDERS)
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
|
||||
#ifdef HAVE_STATIC_PROVIDERS
|
||||
#include "qgswmsprovidergui.h"
|
||||
#include "qgspostgresprovidergui.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -68,6 +69,9 @@ void QgsProviderGuiRegistry::loadStaticProviders( )
|
||||
#ifdef HAVE_STATIC_PROVIDERS
|
||||
QgsProviderGuiMetadata *wms = new QgsWmsProviderGuiMetadata();
|
||||
mProviders[ wms->key() ] = wms;
|
||||
|
||||
QgsProviderGuiMetadata *postgres = new QgsPostgresProviderGuiMetadata();
|
||||
mProviders[ postgres->key() ] = postgres;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,9 @@ SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/${QGIS_PLUGIN_SUBDI
|
||||
|
||||
# providers with implemented both static and dynamic building
|
||||
ADD_SUBDIRECTORY(wms)
|
||||
IF (POSTGRES_FOUND)
|
||||
ADD_SUBDIRECTORY(postgres)
|
||||
ENDIF (POSTGRES_FOUND)
|
||||
|
||||
IF (NOT FORCE_STATIC_PROVIDERS)
|
||||
ADD_SUBDIRECTORY(arcgisrest)
|
||||
@ -23,10 +26,6 @@ IF (NOT FORCE_STATIC_PROVIDERS)
|
||||
ADD_SUBDIRECTORY(oracle)
|
||||
ENDIF(WITH_ORACLE)
|
||||
|
||||
IF (POSTGRES_FOUND)
|
||||
ADD_SUBDIRECTORY(postgres)
|
||||
ENDIF (POSTGRES_FOUND)
|
||||
|
||||
IF (WITH_GRASS OR WITH_GRASS7)
|
||||
ADD_SUBDIRECTORY(grass)
|
||||
ENDIF (WITH_GRASS OR WITH_GRASS7)
|
||||
|
@ -28,14 +28,14 @@ SET(PG_MOC_HDRS
|
||||
)
|
||||
|
||||
IF (WITH_GUI)
|
||||
SET(PG_SRCS ${PG_SRCS}
|
||||
SET(PG_GUI_SRCS
|
||||
qgspostgresprovidergui.cpp
|
||||
qgspostgresdataitemguiprovider.cpp
|
||||
qgspgsourceselect.cpp
|
||||
qgspgnewconnection.cpp
|
||||
qgspostgresprojectstoragedialog.cpp
|
||||
)
|
||||
SET(PG_MOC_HDRS ${PG_MOC_HDRS}
|
||||
SET(PG_GUI_MOC_HDRS
|
||||
qgspostgresdataitemguiprovider.h
|
||||
qgspgnewconnection.h
|
||||
qgspgsourceselect.h
|
||||
@ -52,6 +52,7 @@ SET(PG_HDRS
|
||||
# Build
|
||||
|
||||
QT5_WRAP_CPP(PG_MOC_SRCS ${PG_MOC_HDRS})
|
||||
QT5_WRAP_CPP (PG_GUI_MOC_SRCS ${PG_GUI_MOC_HDRS})
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/src/core
|
||||
@ -81,41 +82,66 @@ IF (WITH_GUI)
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
# static library
|
||||
ADD_LIBRARY (postgresprovider_a STATIC ${PG_SRCS} ${PG_HDRS} ${PG_MOC_SRCS})
|
||||
ADD_LIBRARY (postgresprovider MODULE ${PG_SRCS} ${PG_HDRS} ${PG_MOC_SRCS})
|
||||
|
||||
TARGET_LINK_LIBRARIES (postgresprovider_a
|
||||
${POSTGRES_LIBRARY}
|
||||
qgis_core
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (postgresprovider
|
||||
${POSTGRES_LIBRARY}
|
||||
qgis_core
|
||||
${Qt5Xml_LIBRARIES}
|
||||
${Qt5Core_LIBRARIES}
|
||||
${Qt5Svg_LIBRARIES}
|
||||
${Qt5Network_LIBRARIES}
|
||||
${Qt5Sql_LIBRARIES}
|
||||
${Qt5Concurrent_LIBRARIES}
|
||||
)
|
||||
|
||||
IF (WITH_GUI)
|
||||
TARGET_LINK_LIBRARIES (postgresprovider_a
|
||||
qgis_gui
|
||||
ADD_LIBRARY(postgresprovider_gui_a STATIC ${PG_GUI_SRCS} ${PG_GUI_MOC_SRCS})
|
||||
TARGET_LINK_LIBRARIES(postgresprovider_gui_a
|
||||
${POSTGRES_LIBRARY}
|
||||
${Qt5Xml_LIBRARIES}
|
||||
${Qt5Core_LIBRARIES}
|
||||
${Qt5Svg_LIBRARIES}
|
||||
${Qt5Network_LIBRARIES}
|
||||
${Qt5Sql_LIBRARIES}
|
||||
${Qt5Concurrent_LIBRARIES}
|
||||
${Qt5Gui_LIBRARIES}
|
||||
${Qt5Widgets_LIBRARIES}
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (postgresprovider
|
||||
qgis_gui
|
||||
ADD_DEPENDENCIES(postgresprovider_gui_a ui)
|
||||
ENDIF (WITH_GUI)
|
||||
|
||||
IF (FORCE_STATIC_PROVIDERS)
|
||||
# for (external) mobile apps to be able to pick up provider for linking
|
||||
INSTALL (TARGETS postgresprovider_a ARCHIVE DESTINATION ${QGIS_PLUGIN_DIR})
|
||||
IF (WITH_GUI)
|
||||
INSTALL (TARGETS postgresprovider_gui_a ARCHIVE DESTINATION ${QGIS_PLUGIN_DIR})
|
||||
ENDIF (WITH_GUI)
|
||||
ELSE (FORCE_STATIC_PROVIDERS)
|
||||
# dynamically loaded module
|
||||
ADD_LIBRARY(postgresprovider MODULE ${PG_SRCS} ${PG_GUI_SRCS} ${PG_MOC_SRCS} ${PG_GUI_MOC_SRCS} ${PG_HDRS})
|
||||
|
||||
TARGET_LINK_LIBRARIES(postgresprovider
|
||||
${POSTGRES_LIBRARY}
|
||||
qgis_core
|
||||
)
|
||||
ADD_DEPENDENCIES(postgresprovider_a ui)
|
||||
ADD_DEPENDENCIES(postgresprovider ui)
|
||||
ENDIF ()
|
||||
|
||||
IF (WITH_GUI)
|
||||
TARGET_LINK_LIBRARIES (postgresprovider
|
||||
qgis_gui
|
||||
)
|
||||
ADD_DEPENDENCIES(postgresprovider ui)
|
||||
ENDIF (WITH_GUI)
|
||||
|
||||
# clang-tidy
|
||||
IF(CLANG_TIDY_EXE)
|
||||
SET_TARGET_PROPERTIES(
|
||||
postgresprovider PROPERTIES
|
||||
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
|
||||
)
|
||||
ENDIF(CLANG_TIDY_EXE)
|
||||
# clang-tidy
|
||||
IF(CLANG_TIDY_EXE)
|
||||
SET_TARGET_PROPERTIES(
|
||||
postgresprovider PROPERTIES
|
||||
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
|
||||
)
|
||||
ENDIF(CLANG_TIDY_EXE)
|
||||
|
||||
########################################################
|
||||
# Install
|
||||
INSTALL(TARGETS postgresprovider
|
||||
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
|
||||
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
|
||||
|
||||
INSTALL(TARGETS postgresprovider
|
||||
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
|
||||
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
|
||||
ENDIF (FORCE_STATIC_PROVIDERS)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "qgspostgresprovider.h"
|
||||
#include "qgspgnewconnection.h"
|
||||
#include "qgsnewnamedialog.h"
|
||||
#include "qgspgsourceselect.h"
|
||||
|
||||
#include <QInputDialog>
|
||||
#include <QMessageBox>
|
||||
@ -156,6 +157,21 @@ bool QgsPostgresDataItemGuiProvider::handleDrop( QgsDataItem *item, QgsDataItemG
|
||||
return false;
|
||||
}
|
||||
|
||||
QWidget *QgsPostgresDataItemGuiProvider::createParamWidget( QgsDataItem *root, QgsDataItemGuiContext )
|
||||
{
|
||||
QgsPGRootItem *pgRootItem = qobject_cast<QgsPGRootItem *>( root );
|
||||
if ( pgRootItem != nullptr )
|
||||
{
|
||||
QgsPgSourceSelect *select = new QgsPgSourceSelect( nullptr, nullptr, QgsProviderRegistry::WidgetMode::Manager );
|
||||
connect( select, &QgsPgSourceSelect::connectionsChanged, pgRootItem, &QgsPGRootItem::onConnectionsChanged );
|
||||
return select;
|
||||
}
|
||||
else
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void QgsPostgresDataItemGuiProvider::newConnection( QgsDataItem *item )
|
||||
{
|
||||
|
@ -36,6 +36,8 @@ class QgsPostgresDataItemGuiProvider : public QObject, public QgsDataItemGuiProv
|
||||
bool acceptDrop( QgsDataItem *item, QgsDataItemGuiContext context ) override;
|
||||
bool handleDrop( QgsDataItem *item, QgsDataItemGuiContext context, const QMimeData *data, Qt::DropAction action ) override;
|
||||
|
||||
QWidget *createParamWidget( QgsDataItem *root, QgsDataItemGuiContext ) override;
|
||||
|
||||
private:
|
||||
static void newConnection( QgsDataItem *item );
|
||||
static void editConnection( QgsDataItem *item );
|
||||
|
@ -27,11 +27,6 @@
|
||||
#include "qgsvectorlayer.h"
|
||||
#include "qgssettings.h"
|
||||
#include "providers/gdal/qgsgdaldataitems.h"
|
||||
|
||||
#ifdef HAVE_GUI
|
||||
#include "qgspgsourceselect.h"
|
||||
#endif
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <climits>
|
||||
|
||||
@ -548,19 +543,10 @@ QVector<QgsDataItem *> QgsPGRootItem::createChildren()
|
||||
return connections;
|
||||
}
|
||||
|
||||
#ifdef HAVE_GUI
|
||||
QWidget *QgsPGRootItem::paramWidget()
|
||||
{
|
||||
QgsPgSourceSelect *select = new QgsPgSourceSelect( nullptr, nullptr, QgsProviderRegistry::WidgetMode::Manager );
|
||||
connect( select, &QgsPgSourceSelect::connectionsChanged, this, &QgsPGRootItem::onConnectionsChanged );
|
||||
return select;
|
||||
}
|
||||
|
||||
void QgsPGRootItem::onConnectionsChanged()
|
||||
{
|
||||
refresh();
|
||||
}
|
||||
#endif
|
||||
|
||||
QMainWindow *QgsPGRootItem::sMainWindow = nullptr;
|
||||
|
||||
|
@ -40,16 +40,10 @@ class QgsPGRootItem : public QgsDataCollectionItem
|
||||
|
||||
QVariant sortKey() const override { return 3; }
|
||||
|
||||
#ifdef HAVE_GUI
|
||||
QWidget *paramWidget() override;
|
||||
#endif
|
||||
|
||||
static QMainWindow *sMainWindow;
|
||||
|
||||
public slots:
|
||||
#ifdef HAVE_GUI
|
||||
void onConnectionsChanged();
|
||||
#endif
|
||||
};
|
||||
|
||||
class QgsPGConnectionItem : public QgsDataCollectionItem
|
||||
|
@ -361,6 +361,11 @@ QgsTransaction *QgsPostgresProvider::transaction() const
|
||||
return mTransaction;
|
||||
}
|
||||
|
||||
QString QgsPostgresProvider::providerKey()
|
||||
{
|
||||
return POSTGRES_KEY;
|
||||
}
|
||||
|
||||
void QgsPostgresProvider::setTransaction( QgsTransaction *transaction )
|
||||
{
|
||||
// static_cast since layers cannot be added to a transaction of a non-matching provider
|
||||
@ -5221,7 +5226,9 @@ QgsPostgresProviderMetadata::QgsPostgresProviderMetadata()
|
||||
{
|
||||
}
|
||||
|
||||
#ifndef HAVE_STATIC_PROVIDERS
|
||||
QGISEXTERN QgsProviderMetadata *providerMetadataFactory()
|
||||
{
|
||||
return new QgsPostgresProviderMetadata();
|
||||
}
|
||||
#endif
|
||||
|
@ -206,6 +206,7 @@ class QgsPostgresProvider : public QgsVectorDataProvider
|
||||
QString name() const override;
|
||||
QString description() const override;
|
||||
QgsTransaction *transaction() const override;
|
||||
static QString providerKey();
|
||||
|
||||
/**
|
||||
* Convert the postgres string representation into the given QVariant type.
|
||||
|
@ -13,6 +13,7 @@
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgspostgresprovidergui.h"
|
||||
#include "qgsapplication.h"
|
||||
#include "qgsproviderguimetadata.h"
|
||||
#include "qgspgsourceselect.h"
|
||||
@ -70,43 +71,39 @@ class QgsPostgresProjectStorageGuiProvider : public QgsProjectStorageGuiProvider
|
||||
};
|
||||
|
||||
|
||||
|
||||
class QgsPostgresProviderGuiMetadata: public QgsProviderGuiMetadata
|
||||
QgsPostgresProviderGuiMetadata::QgsPostgresProviderGuiMetadata():
|
||||
QgsProviderGuiMetadata( QgsPostgresProvider::POSTGRES_KEY )
|
||||
{
|
||||
public:
|
||||
QgsPostgresProviderGuiMetadata():
|
||||
QgsProviderGuiMetadata( QgsPostgresProvider::POSTGRES_KEY )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
QList<QgsSourceSelectProvider *> sourceSelectProviders() override
|
||||
{
|
||||
QList<QgsSourceSelectProvider *> providers;
|
||||
providers << new QgsPostgresSourceSelectProvider; //#spellok
|
||||
return providers;
|
||||
}
|
||||
QList<QgsSourceSelectProvider *> QgsPostgresProviderGuiMetadata::sourceSelectProviders()
|
||||
{
|
||||
QList<QgsSourceSelectProvider *> providers;
|
||||
providers << new QgsPostgresSourceSelectProvider; //#spellok
|
||||
return providers;
|
||||
}
|
||||
|
||||
QList<QgsDataItemGuiProvider *> dataItemGuiProviders() override
|
||||
{
|
||||
return QList<QgsDataItemGuiProvider *>()
|
||||
<< new QgsPostgresDataItemGuiProvider;
|
||||
}
|
||||
QList<QgsDataItemGuiProvider *> QgsPostgresProviderGuiMetadata::dataItemGuiProviders()
|
||||
{
|
||||
return QList<QgsDataItemGuiProvider *>()
|
||||
<< new QgsPostgresDataItemGuiProvider;
|
||||
}
|
||||
|
||||
QList<QgsProjectStorageGuiProvider *> projectStorageGuiProviders() override
|
||||
{
|
||||
QList<QgsProjectStorageGuiProvider *> providers;
|
||||
providers << new QgsPostgresProjectStorageGuiProvider;
|
||||
return providers;
|
||||
}
|
||||
|
||||
void registerGui( QMainWindow *mainWindow ) override
|
||||
{
|
||||
QgsPGRootItem::sMainWindow = mainWindow;
|
||||
}
|
||||
};
|
||||
QList<QgsProjectStorageGuiProvider *> QgsPostgresProviderGuiMetadata::projectStorageGuiProviders()
|
||||
{
|
||||
QList<QgsProjectStorageGuiProvider *> providers;
|
||||
providers << new QgsPostgresProjectStorageGuiProvider;
|
||||
return providers;
|
||||
}
|
||||
|
||||
void QgsPostgresProviderGuiMetadata::registerGui( QMainWindow *mainWindow )
|
||||
{
|
||||
QgsPGRootItem::sMainWindow = mainWindow;
|
||||
}
|
||||
|
||||
#ifndef HAVE_STATIC_PROVIDERS
|
||||
QGISEXTERN QgsProviderGuiMetadata *providerGuiMetadataFactory()
|
||||
{
|
||||
return new QgsPostgresProviderGuiMetadata();
|
||||
}
|
||||
#endif
|
||||
|
35
src/providers/postgres/qgspostgresprovidergui.h
Normal file
35
src/providers/postgres/qgspostgresprovidergui.h
Normal file
@ -0,0 +1,35 @@
|
||||
/***************************************************************************
|
||||
qgspostgresprovidergui.h
|
||||
------------------------
|
||||
Date : October 2019
|
||||
Copyright : (C) 2019 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSPOSTGRESPROVIDERGUI_H
|
||||
#define QGSPOSTGRESPROVIDERGUI_H
|
||||
|
||||
#include <QList>
|
||||
#include <QMainWindow>
|
||||
|
||||
#include "qgsproviderguimetadata.h"
|
||||
|
||||
class QgsPostgresProviderGuiMetadata: public QgsProviderGuiMetadata
|
||||
{
|
||||
public:
|
||||
QgsPostgresProviderGuiMetadata();
|
||||
|
||||
QList<QgsSourceSelectProvider *> sourceSelectProviders() override;
|
||||
QList<QgsDataItemGuiProvider *> dataItemGuiProviders() override;
|
||||
QList<QgsProjectStorageGuiProvider *> projectStorageGuiProviders() override;
|
||||
void registerGui( QMainWindow *mainWindow ) override;
|
||||
};
|
||||
|
||||
#endif // QGSPOSTGRESPROVIDERGUI_H
|
@ -91,7 +91,7 @@ IF (FORCE_STATIC_PROVIDERS)
|
||||
INSTALL (TARGETS wmsprovider_gui_a ARCHIVE DESTINATION ${QGIS_PLUGIN_DIR})
|
||||
ENDIF (WITH_GUI)
|
||||
ELSE (FORCE_STATIC_PROVIDERS)
|
||||
# dynimally loaded module
|
||||
# dynamically loaded module
|
||||
ADD_LIBRARY(wmsprovider MODULE ${WMS_SRCS} ${WMS_GUI_SRCS} ${WMS_MOC_SRCS} ${WMS_GUI_MOC_SRCS})
|
||||
|
||||
TARGET_LINK_LIBRARIES(wmsprovider
|
||||
|
@ -94,13 +94,13 @@ ADD_QGIS_TEST(wmsprovidertest
|
||||
testqgswmsprovider.cpp)
|
||||
TARGET_LINK_LIBRARIES(qgis_wmsprovidertest wmsprovider_a qgis_core)
|
||||
|
||||
ADD_QGIS_TEST(postgresprovidertest testqgspostgresprovider.cpp)
|
||||
TARGET_LINK_LIBRARIES(qgis_postgresprovidertest postgresprovider_a qgis_core)
|
||||
|
||||
ADD_QGIS_TEST(postgresconntest testqgspostgresconn.cpp)
|
||||
TARGET_LINK_LIBRARIES(qgis_postgresconntest postgresprovider_a qgis_core)
|
||||
|
||||
IF (NOT FORCE_STATIC_PROVIDERS)
|
||||
ADD_QGIS_TEST(postgresprovidertest testqgspostgresprovider.cpp)
|
||||
TARGET_LINK_LIBRARIES(qgis_postgresprovidertest postgresprovider_a)
|
||||
|
||||
ADD_QGIS_TEST(postgresconntest testqgspostgresconn.cpp)
|
||||
TARGET_LINK_LIBRARIES(qgis_postgresconntest postgresprovider_a)
|
||||
|
||||
ADD_QGIS_TEST(mdalprovidertest testqgsmdalprovider.cpp)
|
||||
ENDIF (NOT FORCE_STATIC_PROVIDERS)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user