Creating a GenGIS plugin

From The GenGIS wiki
Jump to navigationJump to search

The functionality of GenGIS can be extended by writing a Python plugin. Python plugins reside in the plugins folder within your GenGIS directory. In this tutorial we will create a simple "Hello World" plugin which writes a simple greeting to the GenGIS viewport.

Specifying Plugin Details

Begin by creating the directory HelloWorld within the GenGIS plugins' directory. Within this directory create a file called __init__.py. This file contains general information about your plugin which is used by GenGIS. For our Hello World plugin, enter the following into __init__.py:

def name():
  return "Hello World"

def version():
  return "Version 1.0"

def description():
  return "Prints Hello World to the Viewport."

def authors():
  return "Donovan Parks"

def publicationDate():
  return "March 1, 2012"
	
def minimumVersionOfGenGIS(): 
  return "2.0"

def requireR():
  return False

All plugins require an __init__.py file and must contain all the functions shown above.

Writing the Plugin

The plugin must contain a Python file with the same name as the directory in which it resides. In this example, we need to have a file called HelloWorld.py and this file must contain a class called HelloWorld. Within GenGIS an object of this class is created whenever a user invokes the plugin. A plugin interacts with GenGIS through an API which is exposed through a module called GenGIS. Create the file HelloWorld.py with the following code:

import GenGIS

class HelloWorld():
  def __init__(self, parent=None):
    label = GenGIS.VisualLabel("Hello World!", GenGIS.Colour(0,0,0), 36, GenGIS.LABEL_RENDERING_STYLE.ORTHO)
    label.SetScreenPosition(GenGIS.Point3D(10,40,1))
    GenGIS.graphics.AddLabel(label)
    GenGIS.viewport.Refresh()

Further information about the GenGIS API can be found in the GenGIS manual. We also recommend consulting existing plugins in order to see how they function and make use of the GenGIS API.

Releasing a Plugin

We encourage you to make your plugins available to other GenGIS users. If you wish to have your plugin made available on the GenGIS website please contact Rob Beiko (beiko@cs.dal.ca).