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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.374  
changed lines
  Added in v.1706

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26