QGIS for Devs: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
K (Guidelines)
K
Zeile 3: Zeile 3:
 
* [http://dev.ifs.hsr.ch/ Developer Wiki for Python Programming for (Q)GIS ('python4gis')]
 
* [http://dev.ifs.hsr.ch/ Developer Wiki for Python Programming for (Q)GIS ('python4gis')]
  
== Writing (Python) plugins ==
+
== The Python Console ==
 +
 
 +
In QGIS you can open a console using "Menu > Plugins" or "Ctrl-Alt-P". Then this window should show:
 +
 
 +
  1 Python Console
 +
  2 Use iface to access QGIS API interface or Type help(iface) for more info.
 +
  3 _
 +
 
 +
Hint: If you do the following from the Python console:
 +
  g=iface.activeLayer().selectedFeatures()[0].geometry()
 +
As soon as you do anything with QgsGeometry object, QGIS crashes!
 +
This is a long standing unresolved [http://hub.qgis.org/issues/777 issue 777] with python bindings. This works:
 +
  feat = iface.activeLayer().selectedFeatures()[0]
 +
  g = QgsGeometry(feat.geometry())
 +
 
 +
Test:
 +
* g.type(), g.length(), g.asPolyline() crashes if the line has three vertices, with only two vertices it returns an empty array.
 +
 
 +
 
 +
== Writing Python plugins ==
  
 
Es gibt eine Plugin-Schnittstelle für C++ und für [[Python]]:
 
Es gibt eine Plugin-Schnittstelle für C++ und für [[Python]]:
Zeile 11: Zeile 30:
 
This page is biased towards writing QGIS Python plugins.
 
This page is biased towards writing QGIS Python plugins.
  
== Manual installation of Python plugin ==
+
== Manual installation of a Python plugin ==
  
 
Die manuelle Installation eines Python-Plugins, das sich noch nicht in einem Repository befindet, passiert wie folgt:
 
Die manuelle Installation eines Python-Plugins, das sich noch nicht in einem Repository befindet, passiert wie folgt:

Version vom 29. Juni 2015, 14:59 Uhr

See also:

The Python Console

In QGIS you can open a console using "Menu > Plugins" or "Ctrl-Alt-P". Then this window should show:

 1 Python Console 
 2 Use iface to access QGIS API interface or Type help(iface) for more info.
 3 _

Hint: If you do the following from the Python console:

  g=iface.activeLayer().selectedFeatures()[0].geometry() 

As soon as you do anything with QgsGeometry object, QGIS crashes! This is a long standing unresolved issue 777 with python bindings. This works:

 feat = iface.activeLayer().selectedFeatures()[0]
 g = QgsGeometry(feat.geometry())

Test:

  • g.type(), g.length(), g.asPolyline() crashes if the line has three vertices, with only two vertices it returns an empty array.


Writing Python plugins

Es gibt eine Plugin-Schnittstelle für C++ und für Python:

This page is biased towards writing QGIS Python plugins.

Manual installation of a Python plugin

Die manuelle Installation eines Python-Plugins, das sich noch nicht in einem Repository befindet, passiert wie folgt:

  • Plugins befinden sich in QGIS standardmässig im Ordner .qgis2\python\plugins. Der Ordner .qgis2 wiederum befindet sich im Homeordner. Dieser ist zum Beispiel unter Windows C:\Users\Benutzername.
  • Dorthin gehören alle Programm- und Daten-Dateien.
  • Nach einem Neustart von QGIS kann man das Plugin unter Erweiterungen -> Plugins aktivieren, falls es nicht schon ist.

Guidelines

Her are some recommendations and guidelines:

  • A "File open..." dialog should open 1. in the user directory the first time it's used, 2. in the directory last used, 3. and this directory last used should be stored in the "Qt User Database".

These are the User Interface Design (UX/GUI) Guidelines for QGIS (click-based! e.g. for desktops and laptops):

  1. You can find the (rather small) HIG (Human Interface Guidelines) in chap. 5 of "Developers guide for QGIS" https://github.com/qgis/QGIS/blob/master/CODING . See also starting on line 1441 of https://github.com/qgis/QGIS/blob/master/doc/CODING.t2t . HTML version here: http://htmlpreview.github.io/?https://raw.github.com/qgis/QGIS/master/doc/CODING.html#toc60 .
  2. In addition there is this (rather large) (Graphical) User Interface (UI/GUI) Design with Qt: http://qt-project.org/doc/qt-4.8/qt-gui-concepts.html .
  3. Finally, there exist the “Windows 8 App UX Guidelines”. This is only “good to know” and can be used in cases of doubt or where the two Guidelines (QGIS+Qt) don’t apply

User Interface Design (UX/GUI) Guidelines (touch-based! e.g. for tablets):

Testing Plugins

Publication

See 'How to publish a plugin'.

Weblinks