Forum QGIS

Pełna wersja: Personalizacja - menu podręczne dla dodanych warstw
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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 ..."?
Znalazłem rozwiązanie, które pozwoli zastąpić istniejące menu kontekstowe dla warstw na swoje.
Nie wiem tylko gdzie ten kawałek skryptu umieścić w jakim pliku programu.

Rozwiązanie: https://gis.stackexchange.com/questions/...ith-pyqgis
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)
Dzięki - działa.