Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Personalizacja - menu podręczne dla dodanych warstw
12-03-2018, 10:09,
#1
Personalizacja - menu podręczne dla dodanych warstw
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 ..."?
14-03-2018, 08:33,
#2
RE: Personalizacja - menu podręczne dla dodanych warstw
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
14-03-2018, 19:47,
#3
RE: Personalizacja - menu podręczne dla dodanych warstw
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)
15-03-2018, 10:11,
#4
RE: Personalizacja - menu podręczne dla dodanych warstw
Dzięki - działa.


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Personalizacja - wykorzystanie opcji dostępnych w menu na pasku narzędzi tm261700 0 324 15-03-2018, 12:07
Ostatni post: tm261700
  Stylizacja - automatyczny zapis stylów dla wielu warstw Michau 2 3 782 10-10-2016, 20:43
Ostatni post: Italiano
  Definicja bazy danych dla warstw fcs 0 3 025 20-12-2014, 17:09
Ostatni post: fcs
  menu 'akcje' w formularzu edycji QGIS 2.6 sebaq 0 3 732 05-11-2014, 20:56
Ostatni post: sebaq
  Intersect (iloczyn) dla kilkudziesięciu warstw?? surykat 1 5 216 24-04-2013, 23:05
Ostatni post: borys
  Menu "Raster" Roland_z_Gilead 2 6 285 30-05-2012, 15:13
Ostatni post: Roland_z_Gilead

Skocz do: