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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2587 - (hide 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 jonathan 2551 # 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 jonathan 2562 from Thuban.version import versions
21    
22 jonathan 2587 ID_RB_MASK = 4002
23    
24 jonathan 2551 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 jonathan 2562 self.old_state["mask_type"] = layer.MaskType()
31 jonathan 2551
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 jonathan 2562 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 jonathan 2551
93 jonathan 2587 self.maskRadioBox = wxRadioBox(panel, ID_RB_MASK, _("Mask Type"),
94 jonathan 2562 choices=choices)
95     #self.maskCB = wxCheckBox(panel, -1, _("Use Mask"))
96     maskBox.Add(self.maskRadioBox, 0, wxRIGHT, 10)
97    
98 jonathan 2587 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 jonathan 2551 rasterBox.Add(maskBox, 0, wxALL, 4)
109 jonathan 2587 #rasterBox.Add(opBox, 0, wxALL, 4)
110    
111 jonathan 2551 panelBox.Add(rasterBox, 1, wxGROW | wxALL, 4)
112    
113 jonathan 2562 self.maskRadioBox.SetSelection(self.old_state["mask_type"])
114 jonathan 2551
115 jonathan 2587 self.OnMaskSelect(None)
116    
117     EVT_RADIOBOX(self, ID_RB_MASK, self.OnMaskSelect)
118    
119 jonathan 2551 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 jonathan 2562 self.maskRadioBox.SetSelection(self.old_state["mask_type"])
128 jonathan 2551 self.set_state()
129    
130 jonathan 2587 def OnMaskSelect(self, event):
131     allowOpacity = self.maskRadioBox.GetSelection()==2
132     self.opSpin.Enable(allowOpacity)
133     self.opSpinLabel.Enable(allowOpacity)
134    
135 jonathan 2551 def set_state(self):
136 jonathan 2562 self.layer.SetMaskType(self.maskRadioBox.GetSelection())
137 jonathan 2587 self.layer.SetOpacity(self.opSpin.GetValue()/255.0)
138 jonathan 2551 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