202 |
self.map = None |
self.map = None |
203 |
self.parent = parent |
self.parent = parent |
204 |
self.layer2id = {} |
self.layer2id = {} |
205 |
|
self.changing_selection = 0 |
206 |
|
|
207 |
# |
# |
208 |
# The image list used by the wxTreeCtrl causes problems when |
# The image list used by the wxTreeCtrl causes problems when |
341 |
self.SetMap(self.mainWindow.Map()) |
self.SetMap(self.mainWindow.Map()) |
342 |
|
|
343 |
def _OnSelChanged(self, event): |
def _OnSelChanged(self, event): |
344 |
|
# If we change the selection from normalize_selection do nothing. |
345 |
|
if self.changing_selection: |
346 |
|
return |
347 |
|
|
348 |
|
self.normalize_selection() |
349 |
self.__UpdateSelection() |
self.__UpdateSelection() |
350 |
|
|
351 |
|
def normalize_selection(self): |
352 |
|
"""Select the layer containing currently selected item""" |
353 |
|
# This is really a workaround for a bug in wx where deleting a |
354 |
|
# subtree with DeleteChildren does not update the selection |
355 |
|
# properly and can lead to segfaults later because the return |
356 |
|
# value of GetSelection points to invalid data. |
357 |
|
item = self.GetSelection() |
358 |
|
while item.IsOk(): |
359 |
|
object = self.GetPyData(item) |
360 |
|
if isinstance(object, BaseLayer): |
361 |
|
break |
362 |
|
item = self.GetItemParent(item) |
363 |
|
else: |
364 |
|
# No layer was found in the chain of parents, so there's |
365 |
|
# nothing we can do. |
366 |
|
return |
367 |
|
|
368 |
|
self.changing_selection = 1 |
369 |
|
try: |
370 |
|
self.SelectItem(item) |
371 |
|
finally: |
372 |
|
self.changing_selection = 0 |
373 |
|
|
374 |
|
|
375 |
def _OnItemActivated(self, event): |
def _OnItemActivated(self, event): |
376 |
self.parent.DoOnProperties() |
self.parent.DoOnProperties() |
377 |
|
|
407 |
def _OnMsgMapLayersRemoved(self, map): |
def _OnMsgMapLayersRemoved(self, map): |
408 |
assert map is self.map |
assert map is self.map |
409 |
|
|
|
layer, group = self.GetSelectedHierarchy() |
|
|
|
|
|
if layer is None: |
|
|
assert False, "Shouldn't be allowed." |
|
|
return |
|
|
|
|
410 |
layers = map.Layers() |
layers = map.Layers() |
411 |
|
|
412 |
for layer, id in self.layer2id.items(): |
for layer, id in self.layer2id.items(): |
551 |
|
|
552 |
if not root.IsOk(): |
if not root.IsOk(): |
553 |
self.image_list = wxImageList(BMP_SIZE_W, BMP_SIZE_H, False, 0) |
self.image_list = wxImageList(BMP_SIZE_W, BMP_SIZE_H, False, 0) |
554 |
|
|
555 |
bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H) |
bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H) |
556 |
dc = wxMemoryDC() |
dc = wxMemoryDC() |
557 |
dc.SelectObject(bmp) |
dc.SelectObject(bmp) |
558 |
dc.SetBrush(wxBLACK_BRUSH) |
dc.SetBrush(wxBLACK_BRUSH) |
559 |
dc.Clear() |
dc.Clear() |
560 |
dc.SelectObject(wxNullBitmap) |
dc.SelectObject(wxNullBitmap) |
561 |
|
|
562 |
self.emptyImageIndex = \ |
self.emptyImageIndex = \ |
563 |
self.image_list.AddWithColourMask(bmp, wxColour(0, 0, 0)) |
self.image_list.AddWithColourMask(bmp, wxColour(0, 0, 0)) |
564 |
|
|
565 |
bmp = resource.GetBitmapResource("legend_icon_layer", |
bmp = resource.GetBitmapResource("legend_icon_layer", |
566 |
wxBITMAP_TYPE_XPM) |
wxBITMAP_TYPE_XPM) |
567 |
self.mapImageIndex = \ |
self.mapImageIndex = \ |
568 |
self.image_list.Add(bmp) |
self.image_list.Add(bmp) |
569 |
|
|
570 |
self.AssignImageList(self.image_list) |
self.AssignImageList(self.image_list) |
571 |
|
self.availImgListIndices = [] |
572 |
|
|
573 |
root = self.AddRoot("") |
root = self.AddRoot("") |
574 |
|
|