mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
218 lines
5.3 KiB
C++
218 lines
5.3 KiB
C++
/***************************************************************************
|
|
qgisplugin.h
|
|
--------------------------------------
|
|
Date : Sun Sep 16 12:12:31 AKDT 2007
|
|
Copyright : (C) 2007 by Gary E. Sherman
|
|
Email : sherman at mrcc 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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
/**
|
|
* QGIS - Plugin API
|
|
*
|
|
* \section about About QGis Plugins
|
|
* Plugins provide additional functionality to QGis. Plugins must
|
|
* implement several required methods in order to be registered with
|
|
* QGis. These methods include:
|
|
* name:
|
|
* - version
|
|
* - description
|
|
*
|
|
* All QGis plugins must inherit from the abstract base class QgisPlugin.
|
|
* This list will grow as the API is expanded.
|
|
*
|
|
* In addition, a plugin must implement the classFactory and unload
|
|
* functions. Note that these functions must be declared as extern "C" in
|
|
* order to be resolved properly and prevent C++ name mangling.
|
|
*/
|
|
|
|
#ifndef QGISPLUGIN_H
|
|
#define QGISPLUGIN_H
|
|
|
|
#define SIP_NO_FILE
|
|
|
|
|
|
#include <QString>
|
|
|
|
class QgisInterface;
|
|
|
|
//#include "qgisplugingui.h"
|
|
|
|
/**
|
|
* \ingroup plugins
|
|
* \class QgisPlugin
|
|
* \brief Abstract base class from which all plugins must inherit
|
|
* \note not available in Python bindings
|
|
*/
|
|
class QgisPlugin
|
|
{
|
|
public:
|
|
|
|
//! Interface to gui element collection object
|
|
//virtual QgisPluginGui *gui()=0;
|
|
//! Element types that can be added to the interface
|
|
#if 0
|
|
enum Elements
|
|
{
|
|
MENU,
|
|
MENU_ITEM,
|
|
TOOLBAR,
|
|
TOOLBAR_BUTTON,
|
|
};
|
|
|
|
@todo XXX this may be a hint that there should be subclasses
|
|
#endif
|
|
|
|
enum PluginType
|
|
{
|
|
UI = 1, //!< User interface plug-in
|
|
MapLayer, //!< Map layer plug-in
|
|
Renderer, //!< A plugin for a new renderer class
|
|
};
|
|
|
|
|
|
/**
|
|
* Constructor for QgisPlugin
|
|
*/
|
|
QgisPlugin( QString const &name = "",
|
|
QString const &description = "",
|
|
QString const &category = "",
|
|
QString const &version = "",
|
|
PluginType type = MapLayer )
|
|
: mName( name )
|
|
, mDescription( description )
|
|
, mCategory( category )
|
|
, mVersion( version )
|
|
, mType( type )
|
|
{}
|
|
|
|
virtual ~QgisPlugin() = default;
|
|
|
|
//! Get the name of the plugin
|
|
QString const &name() const
|
|
{
|
|
return mName;
|
|
}
|
|
|
|
QString &name()
|
|
{
|
|
return mName;
|
|
}
|
|
|
|
//! Version of the plugin
|
|
QString const &version() const
|
|
{
|
|
return mVersion;
|
|
}
|
|
|
|
//! Version of the plugin
|
|
QString &version()
|
|
{
|
|
return mVersion;
|
|
}
|
|
|
|
//! A brief description of the plugin
|
|
QString const &description() const
|
|
{
|
|
return mDescription;
|
|
}
|
|
|
|
//! A brief description of the plugin
|
|
QString &description()
|
|
{
|
|
return mDescription;
|
|
}
|
|
|
|
//! Plugin category
|
|
QString const &category() const
|
|
{
|
|
return mCategory;
|
|
}
|
|
|
|
//! Plugin category
|
|
QString &category()
|
|
{
|
|
return mCategory;
|
|
}
|
|
|
|
//! Plugin type, either UI or map layer
|
|
QgisPlugin::PluginType const &type() const
|
|
{
|
|
return mType;
|
|
}
|
|
|
|
|
|
//! Plugin type, either UI or map layer
|
|
QgisPlugin::PluginType &type()
|
|
{
|
|
return mType;
|
|
}
|
|
|
|
/// function to initialize connection to GUI
|
|
virtual void initGui() = 0;
|
|
|
|
//! Unload the plugin and cleanup the GUI
|
|
virtual void unload() = 0;
|
|
|
|
private:
|
|
|
|
/// plug-in name
|
|
QString mName;
|
|
|
|
/// description
|
|
QString mDescription;
|
|
|
|
/// category
|
|
QString mCategory;
|
|
|
|
/// version
|
|
QString mVersion;
|
|
|
|
/// UI or MAPLAYER plug-in
|
|
|
|
/**
|
|
@todo Really, might be indicative that this needs to split into
|
|
maplayer vs. ui plug-in vs. other kind of plug-in
|
|
*/
|
|
PluginType mType;
|
|
|
|
}; // class QgisPlugin
|
|
|
|
|
|
// Typedefs used by qgis main app
|
|
|
|
//! Typedef for the function that returns a generic pointer to a plugin object
|
|
typedef QgisPlugin *create_t( QgisInterface * );
|
|
|
|
//! Typedef for the function to unload a plugin and free its resources
|
|
typedef void unload_t( QgisPlugin * );
|
|
|
|
//! Typedef for getting the name of the plugin without instantiating it
|
|
typedef QString name_t();
|
|
|
|
//! Typedef for getting the description without instantiating the plugin
|
|
typedef QString description_t();
|
|
|
|
//! Typedef for getting the category without instantiating the plugin
|
|
typedef QString category_t();
|
|
|
|
//! Typedef for getting the plugin type without instantiating the plugin
|
|
typedef int type_t();
|
|
|
|
//! Typedef for getting the plugin version without instantiating the plugin
|
|
typedef QString version_t();
|
|
|
|
//! Typedef for getting the plugin icon file name without instantiating the plugin
|
|
typedef QString icon_t();
|
|
|
|
//! Typedef for getting the experimental status without instantiating the plugin
|
|
typedef QString experimental_t();
|
|
|
|
#endif // QGISPLUGIN_H
|