QGIS - Tvorba zásuvného modulu krok za krokem: Porovnání verzí

Z GeoWikiCZ
m (toc)
Řádek 60: Řádek 60:


<source lang="cpp">
<source lang="cpp">
#include "qgssampleplugin.h"
#include "qgssampleplugin.h"


#ifdef WIN32
#ifdef WIN32

Verze z 7. 12. 2010, 16:32

Stránka obsahuje poznámky pro tvorbu vlastního zásuvného modulu pro aplikaci QGIS. Navržený modul má na vstupu dvě vektorové vrstvy - bodovou a polygonovou. Na výstupu vytvoří novou vektorovou vrstvu obsahující pouze body ležící uvnitř polygonů (viz příklad pro knihovnu OGR).

Minimální kód

Projekt obsahuje tři soubory:

Soubor projektu sampleplugin.pro
# cesta k adresari se zdrojovymi texty QGISu
QGIS_DIR = /home/martin/src/qgis_trunk
TEMPLATE = lib
CONFIG = qt
QT += xml \
    qt3support
unix:LIBS += -L/$$QGIS_DIR/lib \
    -lqgis_core \
    -lqgis_gui
INCLUDEPATH += $$QGIS_DIR/src/ui \
    $$QGIS_DIR/src/plugins \
    $$QGIS_DIR/src/gui \
    $$QGIS_DIR/src/raster \
    $$QGIS_DIR/src/core \
    $$QGIS_DIR
SOURCES = qgssampleplugin.cpp
HEADERS = qgssampleplugin.h
DEST = sampleplugin.so
DEFINES += GUI_EXPORT= \
    CORE_EXPORT=
Hlavičkový soubor pluginu qgssampleplugin.h
#ifndef QGSSAMPLEPLUGIN_H
#define QGSSAMPLEPLUGIN_H

#include "qgisplugin.h"

/* Testovaci plugin pro QGIS - prostorove predikaty */
class QgsSamplePlugin: public QgisPlugin
{
public:
    QgsSamplePlugin(QgisInterface *);
    ~QgsSamplePlugin();

    void initGui();
    void unload();

private:
    QgisInterface *mIface;
};

#endif // QGSSAMPLEPLUGIN_H
C++ soubor qgssampleplugin.cpp
#include "qgssampleplugin.h"

#ifdef WIN32
    #define QGISEXTERN extern "C" __declspec( dllexport )
#else
    #define QGISEXTERN extern "C"
#endif

QgsSamplePlugin::QgsSamplePlugin(QgisInterface* iface): mIface(iface)
{
}

QgsSamplePlugin::~QgsSamplePlugin()
{
}

// Zobrazit elementy GUI nastrojove listy a menu pluginu
void QgsSamplePlugin::initGui()
{
}

// Odstranit alokovane GUI elementy
void QgsSamplePlugin::unload()
{
}

// generator pluginu
QGISEXTERN QgisPlugin* classFactory(QgisInterface* iface)
{
    return new QgsSamplePlugin(iface);
}

QGISEXTERN QString name()
{
    return "Within";
}

QGISEXTERN QString description()
{
    return "Prostorovy predikat within";
}

QGISEXTERN QString version()
{
    return "0.00001";
}

// Typ pluginu (UI nebo MapLayer plugin)
QGISEXTERN int type()
{
    return QgisPlugin::UI;
}

// Odstranit plugin
QGISEXTERN void unload(QgisPlugin* theQgsSamplePluginPointer)
{
    delete theQgsSamplePluginPointer;
}