-
Notifications
You must be signed in to change notification settings - Fork 2
/
bandcombo.py
70 lines (61 loc) · 2.48 KB
/
bandcombo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#-----------------------------------------------------------
#
# QGIS Combo Manager is a python module to easily manage a combo
# box with a layer list and eventually relate it with one or
# several combos with list of corresponding fields.
#
# Copyright : (C) 2013 Denis Rouzaud
# Email : [email protected]
#
#-----------------------------------------------------------
#
# licensed under the terms of GNU GPL 2
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this progsram; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#---------------------------------------------------------------------
from PyQt4.QtCore import pyqtSignal, QObject
from layercombo import RasterLayerCombo
class BandCombo(QObject):
bandChanged = pyqtSignal()
def __init__(self, widget, rasterLayerCombo, initBand=None):
QObject.__init__(self, widget)
if not isinstance(rasterLayerCombo, RasterLayerCombo):
raise NameError("You must provide a VectorLayerCombo.")
self.widget = widget
self.layerCombo = rasterLayerCombo
self.initBand = initBand
self.layerCombo.layerChanged.connect(self.__layerChanged)
self.widget.currentIndexChanged.connect(self.currentIndexChanged)
self.layer = None
self.__layerChanged()
def currentIndexChanged(self, i):
self.bandChanged.emit()
def __layerChanged(self):
if hasattr(self.initBand, '__call__'):
initBand = self.initBand()
else:
initBand = self.initBand
self.widget.clear()
self.layer = self.layerCombo.getLayer()
if self.layer is None:
return
for b in range(self.layer.bandCount()):
bandName = self.layer.bandName(b)
self.widget.addItem(bandName)
if b == initBand:
self.widget.setCurrentIndex(b)
def getBand(self):
return self.widget.currentIndex()+1