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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1194 - (show annotations)
Fri Jun 13 13:02:30 2003 UTC (21 years, 8 months ago) by bh
Original Path: trunk/thuban/Thuban/UI/identifyview.py
File MIME type: text/x-python
File size: 2422 byte(s)
(IdentifyView.__init__): Call
self.selected_shape with the current selection to make sure the
contents of the dialog are up to date when it's shown for the
first time.
The dialog used to work without this by luck. The recent fix to
the connector module 'broke' a 'feature' the identify view was
relying on, i.e that subscribing to a message in response to
receiving a message of that type would mean that the new
subscriber would also be called for the same message.

1 # Copyright (c) 2001, 2002, 2003 by Intevation GmbH
2 # Authors:
3 # Bernhard Herzog <[email protected]>
4 # Frank Koormann <[email protected]>
5 #
6 # This program is free software under the GPL (>=v2)
7 # Read the file COPYING coming with Thuban for details.
8
9 __version__ = "$Revision$"
10
11 from wxPython.wx import *
12 from wxPython.grid import *
13
14 from Thuban import _
15
16 from dialogs import NonModalDialog
17 from controls import RecordListCtrl, RecordGridCtrl
18 from messages import SHAPES_SELECTED
19
20 class IdentifyListCtrl(RecordListCtrl):
21
22 def selected_shape(self, layer, shape):
23 if layer is not None:
24 table = layer.table
25 else:
26 table = None
27 self.fill_list(table, shape)
28
29 class IdentifyGridCtrl(RecordGridCtrl):
30
31 def selected_shape(self, layer, shape):
32 if layer is not None:
33 table = layer.table
34 else:
35 table = None
36 self.SetTableRecord(table, shape)
37
38 class IdentifyView(NonModalDialog):
39
40 def __init__(self, parent, name):
41 NonModalDialog.__init__(self, parent, name, _("Identify Shape"))
42 parent.Subscribe(SHAPES_SELECTED, self.selected_shape)
43
44 top_box = wxBoxSizer(wxVERTICAL)
45 #self.list = IdentifyGridCtrl(panel)
46 self.list = IdentifyListCtrl(self, -1)
47 self.list.SetSize(wxSize(305,200))
48 top_box.Add(self.list, 1, wxEXPAND|wxALL, 4)
49
50 box = wxBoxSizer(wxHORIZONTAL)
51 box.Add(wxButton(self, wxID_CLOSE, _("Close")), 0, wxALL, 4)
52 top_box.Add(box, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 4)
53
54 EVT_BUTTON(self, wxID_CLOSE, self.OnClose)
55
56 self.SetAutoLayout(True)
57 self.SetSizer(top_box)
58 top_box.Fit(self)
59 top_box.SetSizeHints(self)
60
61 # Make sure to reflect the current selection.
62 self.selected_shape(parent.SelectedLayer(), parent.SelectedShapes())
63
64 def OnClose(self, event):
65 self.parent.Unsubscribe(SHAPES_SELECTED, self.selected_shape)
66 NonModalDialog.OnClose(self, event)
67
68 def selected_shape(self, layer, shapes):
69 """Subscribed to the SHAPES_SELECTED messages.
70
71 If exatly one shape is selected, pass that shape id to the
72 list's selected_shape method. Otherwise pass None as the shape
73 id.
74 """
75 if len(shapes) == 1:
76 shape = shapes[0]
77 else:
78 shape = None
79 self.list.selected_shape(layer, shape)

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26