/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/rasterlayerproperties.py
ViewVC logotype

Contents of /branches/WIP-pyshapelib-bramz/Thuban/UI/rasterlayerproperties.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2587 - (show annotations)
Wed Mar 23 15:30:27 2005 UTC (19 years, 11 months ago) by jonathan
Original Path: trunk/thuban/Thuban/UI/rasterlayerproperties.py
File MIME type: text/x-python
File size: 4350 byte(s)
Add support for adjusting the opacity of a raster layer.

1 # Copyright (c) 2005 by Intevation GmbH
2 # Authors:
3 # Jonathan Coles <[email protected]>
4 #
5 # This program is free software under the GPL (>=v2)
6 # Read the file COPYING coming with Thuban for details.
7
8 """Raster Layer Properties dialog"""
9
10 __version__ = "$Revision$"
11 # $Source$
12 # $Id$
13
14 from wxPython.wx import *
15
16 from Thuban import _
17 from Thuban.UI.layerproperties import LayerProperties
18 from Thuban.Model.resource import has_gdal_support, gdal_support_status
19
20 from Thuban.version import versions
21
22 ID_RB_MASK = 4002
23
24 class RasterLayerProperties(LayerProperties):
25
26 def __init__(self, parent, name, layer, *args, **kw):
27 LayerProperties.__init__(self, parent, name, layer)
28
29 self.old_state = {}
30 self.old_state["mask_type"] = layer.MaskType()
31
32 LayerProperties.dialog_layout(self)
33
34 def dialog_layout(self, panel, panelBox):
35
36 info = self.layer.ImageInfo()
37
38 if info is None:
39 panelBox.Add(
40 wxStaticText(panel, -1,
41 _("GDAL image information unavailable. See About box for details.")),
42 0, wxALIGN_LEFT | wxALL, 4)
43 return
44
45
46 # Bounding Box
47 bbox = self.layer.LatLongBoundingBox()
48 if bbox is None:
49 text = _("Extent (lat-lon): None")
50 else:
51 text = _("Extent (lat-lon): (%g, %g, %g, %g)") % tuple(bbox)
52
53 panelBox.Add(wxStaticText(panel, -1, text), 0, wxALIGN_LEFT|wxALL, 4)
54
55 rasterBox = wxStaticBoxSizer(wxStaticBox(panel, -1,
56 _("Image Properties")), wxVERTICAL)
57
58
59 rasterBox.Add(
60 wxStaticText(panel, -1,
61 _("Source: %s") % self.layer.GetImageFilename()),
62 0, wxALIGN_LEFT | wxALL, 4)
63
64 infoBox = wxBoxSizer(wxHORIZONTAL)
65
66 nBands = info["nBands"]
67
68 self.usePalIndex = nBands == 1
69
70 infoBox.Add(
71 wxStaticText(panel, -1, _("Driver: %s") % info["Driver"]),
72 0, wxALIGN_LEFT | wxRIGHT, 10)
73 infoBox.Add(
74 wxStaticText(panel, -1, _("Size: %ix%i") % info["Size"]),
75 0, wxALIGN_LEFT | wxRIGHT, 10)
76 infoBox.Add(
77 wxStaticText(panel, -1, _("Number of Bands: %i") % nBands),
78 0, wxALIGN_LEFT | wxRIGHT, 0)
79
80 rasterBox.Add(infoBox, 0, wxALIGN_LEFT|wxALL, 4)
81
82 # Mask
83
84 maskBox = wxBoxSizer(wxHORIZONTAL)
85
86 if versions['wxPython-tuple'] < (2,5,3):
87 choices = ["None", "Bitmap",
88 "Alpha (Not support by wxPython %s)" % \
89 versions['wxPython']]
90 else:
91 choices = ["None", "Bitmap", "Alpha"]
92
93 self.maskRadioBox = wxRadioBox(panel, ID_RB_MASK, _("Mask Type"),
94 choices=choices)
95 #self.maskCB = wxCheckBox(panel, -1, _("Use Mask"))
96 maskBox.Add(self.maskRadioBox, 0, wxRIGHT, 10)
97
98 self.opBox = wxBoxSizer(wxHORIZONTAL)
99 self.opSpinLabel = wxStaticText(panel, -1, _("Opacity:"))
100 self.opBox.Add(self.opSpinLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 4)
101 self.opSpin = wxSpinCtrl(panel, -1,
102 str(self.layer.Opacity()*255),
103 initial = self.layer.Opacity()*255,
104 min=0, max=255)
105 self.opBox.Add(self.opSpin, 0, wxALL, 4)
106 maskBox.Add(self.opBox, 0, wxALL|wxALIGN_CENTER_VERTICAL, 4)
107
108 rasterBox.Add(maskBox, 0, wxALL, 4)
109 #rasterBox.Add(opBox, 0, wxALL, 4)
110
111 panelBox.Add(rasterBox, 1, wxGROW | wxALL, 4)
112
113 self.maskRadioBox.SetSelection(self.old_state["mask_type"])
114
115 self.OnMaskSelect(None)
116
117 EVT_RADIOBOX(self, ID_RB_MASK, self.OnMaskSelect)
118
119 def OnTry(self, event):
120 self.set_state()
121
122 def OnOK(self, event):
123 if self.set_state():
124 self.Close()
125
126 def OnRevert(self, event):
127 self.maskRadioBox.SetSelection(self.old_state["mask_type"])
128 self.set_state()
129
130 def OnMaskSelect(self, event):
131 allowOpacity = self.maskRadioBox.GetSelection()==2
132 self.opSpin.Enable(allowOpacity)
133 self.opSpinLabel.Enable(allowOpacity)
134
135 def set_state(self):
136 self.layer.SetMaskType(self.maskRadioBox.GetSelection())
137 self.layer.SetOpacity(self.opSpin.GetValue()/255.0)
138 return True

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26