Przygotowuje wersję QGIS'a tak aby dostępna była dla użytkowników z minimalnymi opcjami/funkcjonalnościami.
Czy wie ktoś jak "wyłączyć/ukryć" menu podręczne, które pojawia się dla każdej dodanej warstwy bądź wyłączyć/ukryć opcję z menu podręcznego dająca możliwość eksportu warstwy "Zapisz jako ..."?
Utwórz plik startup.py w katalogu C:\Users\nazwa_uzytkownika\.qgis2\python\
Wstaw do niego kod z tego linku, który wklejałeś, uzupełniony o jeden wiersz
Kod:
(from qgis.utils import iface)
Po uruchomieniu QGis, po dodaniu nowej warstwy masz to menu jakie jest zdefiniowane w pliku.
Oczywiście musisz sobie pobudować potrzebne funkcje.
Inne rozwiązanie to dodanie tego kodu (oczywiście zmodyfikowanego) do jakiegoś pluginu służącego do czytania danych (skoro ograniczasz operacje na danych, to zapewne także automatyzujesz podczytywanie danych, a plugin to dobre rozwiązanie).
Kod:
from qgis.core import QgsVectorLayer, QgsRasterLayer
from qgis.gui import QgsLayerTreeViewMenuProvider
from PyQt4.QtGui import QMenu
from qgis.utils import iface
class MyMenuProvider(QgsLayerTreeViewMenuProvider):
def __init__(self, view):
QgsLayerTreeViewMenuProvider.__init__(self)
self.view = view
self.defaultActions = view.defaultActions()
def createContextMenu(self):
if not self.view.currentLayer():
return None
m = QMenu()
m.addAction("Open layer properties", self.openLayerProperties)
m.addSeparator()
if type(self.view.currentLayer()) == QgsVectorLayer:
m.addAction("Show Feature Count", self.featureCount)
m.addAction("Another vector-specific action", self.vectorAction)
elif type(self.view.currentLayer()) == QgsRasterLayer:
m.addAction("Zoom 100%", self.zoom100)
m.addAction("Another raster-specific action", self.rasterAction)
return m
def openLayerProperties(self):
iface.showLayerProperties(self.view.currentLayer())
def featureCount(self):
self.defaultActions.actionShowFeatureCount().trigger()
def vectorAction(self):
pass
def zoom100(self):
iface.actionZoomActualSize().trigger()
def rasterAction(self):
pass
view = iface.layerTreeView()
provider = MyMenuProvider(view)
view.setMenuProvider(provider)