Guest User

Untitled

a guest
Sep 2nd, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. from qgis.core import *
  2. from qgis.gui import *
  3.  
  4. class TestLayer(QgsPluginLayer):
  5.  
  6.     LAYER_TYPE=u'TestLayer'
  7.  
  8.     def __init__(self):
  9.         QgsPluginLayer.__init__(self, TestLayer.LAYER_TYPE)
  10.         self.setValid(True)
  11.  
  12.     def draw(self, rendererContext):
  13.         print("TestLayer::draw")
  14.         return True
  15.        
  16.     def noise(self):
  17.         print("TestLayer::noise")
  18.         return True
  19.  
  20. class TestLayerType(QgsPluginLayerType):
  21.     def __init__(self):
  22.         QgsPluginLayerType.__init__(self, TestLayer.LAYER_TYPE)
  23.  
  24.     def createLayer(self):
  25.         print("TestLayerType::createLayer")
  26.         return TestLayer()
  27.  
  28.  
  29. registry = QgsPluginLayerRegistry.instance()
  30.  
  31. print(registry.removePluginLayerType(TestLayer.LAYER_TYPE))
  32.  
  33. print(registry.addPluginLayerType(TestLayerType()))
  34. print(registry.pluginLayerType(TestLayer.LAYER_TYPE))
  35.  
  36. # A TestLayer object should be created but instead a QgsPluginLayer appears
  37. print(registry.createLayer(TestLayer.LAYER_TYPE))
  38.  
  39. # The wrong draw() function is called (from QgsPluginLayer)
  40. print(registry.createLayer(TestLayer.LAYER_TYPE).draw(QgsRenderContext()))
  41.  
  42. # The function noise() of TestLayer is not found
  43. print(registry.createLayer(TestLayer.LAYER_TYPE).noise())
  44.  
  45.  
  46.  
  47. """ Output in QGIS 2.8.1 and 2.11 Python console:
  48.  
  49. execfile(u'/home/soeren/Dokumente/.../PluginLayerTest.py'.encode('UTF-8'))
  50. False
  51. True
  52. <__console__.TestLayerType object at 0x7febfe2db770>
  53. TestLayerType::createLayer
  54. <qgis._core.QgsPluginLayer object at 0x7febfe2db6d8>
  55. TestLayerType::createLayer
  56. False
  57. TestLayerType::createLayer
  58. Traceback (most recent call last):
  59.  File "<input>", line 1, in <module>
  60.  File "/home/soeren/Dokumente.../PluginLayerTest.py", line 36, in <module>
  61.    print(registry.createLayer(TestLayer.LAYER_TYPE).noise())
  62. AttributeError: 'QgsPluginLayer' object has no attribute 'noise'
  63.  
  64. """
Advertisement
Add Comment
Please, Sign In to add comment