/[thuban]/branches/WIP-pyshapelib-bramz/Extensions/ogr/ogrdialog.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Extensions/ogr/ogrdialog.py

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

trunk/thuban/Extensions/ogr/ogrdialog.py revision 2559 by nhueffme, Tue Feb 8 09:52:56 2005 UTC branches/WIP-pyshapelib-bramz/Extensions/ogr/ogrdialog.py revision 2734 by bramz, Thu Mar 1 12:42:59 2007 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001, 2003, 2004 by Intevation GmbH  # Copyright (c) 2001, 2003, 2004 by Intevation GmbH     vim:encoding=latin-1:
2  # Authors:  # Authors:
3  # Martin Mueller <[email protected]>  # Martin Müller <[email protected]>
4  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
5  #  #
6  # This program is free software under the GPL (>=v2)  # This program is free software under the GPL (>=v2)
# Line 11  Line 11 
11    
12  import sys, traceback  import sys, traceback
13    
14  from wxPython.wx import *  import wx
15    
16  try:  try:
17      import ogr      import ogr
18  except ImportError:  except ImportError:
19      psycopg = None      ogr = None
20    
21  from Thuban import _  from Thuban import _
 from Thuban.UI.dialogs import NonModalDialog  
22  from Thuban.Model.table import FIELDTYPE_INT  from Thuban.Model.table import FIELDTYPE_INT
23  from Extensions.ogr import ogrshapes  from Extensions.ogr import ogrshapes
 from Thuban.Model.messages import DBCONN_ADDED, DBCONN_REMOVED  
 from Thuban.UI.messages import SESSION_REPLACED  
24    
25    
 ID_DB_ADD    = 9101  
 ID_DB_REMOVE = 9102  
   
26  ID_DBCHOOSE_RETRIEVE = 9201  ID_DBCHOOSE_RETRIEVE = 9201
27  ID_DBCHOOSE_OK       = 9202  ID_DBCHOOSE_OK       = 9202
28  ID_DBCHOOSE_CANCEL   = 9203  ID_DBCHOOSE_CANCEL   = 9203
29  ID_LB_DCLICK         = 9204  ID_LB_DCLICK         = 9204
30    
31    
32  class ChooseFileFormat(wxDialog):  class ChooseFileFormat(wx.Dialog):
33        """This dialog lists all available drivers.
34        """
35      def __init__(self, parent, session):      def __init__(self, parent, session):
36          wxDialog.__init__(self, parent, -1, _("Choose file format"),          """Initialize the dialog.
37                            style = wxDIALOG_MODAL|wxCAPTION)          """
38            wx.Dialog.__init__(self, parent, -1, _("Choose file format"),
39                              style = wx.DIALOG_MODAL|wx.CAPTION)
40          self.session = session          self.session = session
41          self.tables = []          self.tables = []
42    
# Line 48  class ChooseFileFormat(wxDialog): Line 45  class ChooseFileFormat(wxDialog):
45          #          #
46    
47          # Sizer for the entire dialog          # Sizer for the entire dialog
48          top = wxFlexGridSizer(2, 1, 0, 0)          top = wx.FlexGridSizer(2, 1, 0, 0)
49    
50          # Sizer for the main part with the list boxes          # Sizer for the main part with the list box
51          main_sizer = wxBoxSizer(wxHORIZONTAL)          main_sizer = wx.BoxSizer(wx.HORIZONTAL)
52          top.Add(main_sizer, 1, wxEXPAND, 0)          top.Add(main_sizer, 1, wx.EXPAND, 0)
53    
54          # The list box with the drivers          # The list box with the drivers
55          static_box = wxStaticBoxSizer(wxStaticBox(self, -1, _("File formats")),          static_box = wx.StaticBoxSizer(wx.StaticBox(self, -1, "File formats"),
56                                     wxHORIZONTAL)                                     wx.HORIZONTAL)
57          self.lb_drivers = wxListBox(self, -1)          self.lb_drivers = wx.ListBox(self, -1)
58          static_box.Add(self.lb_drivers, 0, wxEXPAND, 0)          static_box.Add(self.lb_drivers, 0, wx.EXPAND, 0)
59          main_sizer.Add(static_box, 1, wxEXPAND, 0)          main_sizer.Add(static_box, 1, wx.EXPAND, 0)
60    
61          for i in range(ogr.GetDriverCount()):          for i in range(ogr.GetDriverCount()):
62              self.lb_drivers.Append(ogr.GetDriver(i).GetName())              self.lb_drivers.Append(ogr.GetDriver(i).GetName())
63          if self.lb_drivers.GetCount() > 0:          if self.lb_drivers.GetCount() > 0:
64              self.lb_drivers.SetSelection(0, True)              self.lb_drivers.SetSelection(0, True)
65    
         # The button box between the connections list box and the table  
         # list box  
         buttons = wxFlexGridSizer(3, 1, 0, 0)  
         buttons.Add(20, 80, 0, wxEXPAND, 0)  
         retrieve_button = wxButton(self, ID_DBCHOOSE_RETRIEVE, _("Retrieve"))  
         EVT_BUTTON(self, ID_DBCHOOSE_RETRIEVE, self.OnRetrieve)  
         buttons.Add(retrieve_button, 0, wxALL  
                     |wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 4)  
         buttons.Add(20, 80, 0, wxEXPAND, 0)  
         main_sizer.Add(buttons, 0, wxEXPAND, 0)  
   
         # The list box with the tables  
         static_box = wxStaticBoxSizer(wxStaticBox(self, -1, _("Tables")),  
                                    wxHORIZONTAL)  
         self.lb_tables = wxListBox(self, ID_LB_DCLICK)  
         EVT_LISTBOX(self, ID_LB_DCLICK, self.OnTableSelect)  
         EVT_LISTBOX_DCLICK(self, ID_LB_DCLICK, self.OnLBDClick)  
         static_box.Add(self.lb_tables, 0, wxEXPAND, 0)  
         main_sizer.Add(static_box, 1, wxEXPAND, 0)  
   
         # id column and geometry column selection  
         box = wxBoxSizer(wxVERTICAL)  
         box.Add(wxStaticText(self, -1, _("ID Column")), 0,  
                 wxALL|wxALIGN_CENTER_VERTICAL, 4)  
         self.text_id_column = wxComboBox(self, -1, "")  
         box.Add(self.text_id_column, 0,  
                 wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 4)  
   
         box.Add(wxStaticText(self, -1, _("Geometry Column")), 0,  
                 wxALL|wxALIGN_CENTER_VERTICAL, 4)  
         self.text_geo_column = wxComboBox(self, -1, "")  
         box.Add(self.text_geo_column, 0,  
                 wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 4)  
         main_sizer.Add(box, 1, wxEXPAND, 0)  
   
66          # The standard button box at the bottom of the dialog          # The standard button box at the bottom of the dialog
67          buttons = wxFlexGridSizer(1, 2, 0, 0)          buttons = wx.FlexGridSizer(1, 2, 0, 0)
68          ok_button = wxButton(self, ID_DBCHOOSE_OK, _("OK"))          ok_button = wx.Button(self, ID_DBCHOOSE_OK, _("OK"))
69          EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)          wx.EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)
70          buttons.Add(ok_button, 0, wxALL|wxALIGN_RIGHT, 4)          buttons.Add(ok_button, 0, wx.ALL|wx.ALIGN_RIGHT, 4)
71          cancel_button = wxButton(self, ID_DBCHOOSE_CANCEL, _("Cancel"))          cancel_button = wx.Button(self, ID_DBCHOOSE_CANCEL, _("Cancel"))
72          EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)          wx.EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)
73          buttons.Add(cancel_button, 0, wxALL, 4)          buttons.Add(cancel_button, 0, wx.ALL, 4)
74          top.Add(buttons, 1, wxALL|wxALIGN_CENTER_HORIZONTAL, 4)          top.Add(buttons, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 4)
75    
76          # Autosizing          # Autosizing
77          self.SetAutoLayout(1)          self.SetAutoLayout(1)
# Line 120  class ChooseFileFormat(wxDialog): Line 82  class ChooseFileFormat(wxDialog):
82    
83    
84      def GetTable(self):      def GetTable(self):
85          i = self.lb_tables.GetSelection()          """no functionality
86          if i >= 0:          """
             return (self.selected_conn, self.tables[i],  
                     self.text_id_column.GetValue(),  
                     self.text_geo_column.GetValue())  
87          return None          return None
88    
     def OnRetrieve(self, event):  
         i = self.lb_driver.GetSelection()  
         if i >= 0:  
             self.selected_conn = self.dbconns[i]  
             self.tables = self.selected_conn.GeometryTables()  
             self.lb_tables.Set(self.tables)  
   
     def OnTableSelect(self, event):  
         i = self.lb_tables.GetSelection()  
         self.text_id_column.Clear()  
         self.text_geo_column.Clear()  
         if i >= 0:  
             for name, typ in self.selected_conn.table_columns(self.tables[i]):  
                 if typ == "geometry":  
                     self.text_geo_column.Append(name)  
                 elif typ == FIELDTYPE_INT:  
                     self.text_id_column.Append(name)  
   
89      def OnLBDClick(self, event):      def OnLBDClick(self, event):
90            """Close dialog.
91            """
92          if self.lb_tables.GetSelection() >= 0:          if self.lb_tables.GetSelection() >= 0:
93              self.EndModal(wxID_OK)              self.EndModal(wx.ID_OK)
94              self.Show(False)              self.Show(False)
95    
96      def OnOK(self, event):      def OnOK(self, event):
97          self.EndModal(wxID_OK)          """Close dialog.
98            """
99            self.EndModal(wx.ID_OK)
100          self.Show(False)          self.Show(False)
101    
102      def OnCancel(self, event):      def OnCancel(self, event):
103          self.EndModal(wxID_CANCEL)          """Close dialog.
104            """
105            self.EndModal(wx.ID_CANCEL)
106          self.Show(False)          self.Show(False)
107    
108    
109  class ChooseLayer(wxDialog):  class ChooseLayer(wx.Dialog):
110        """This dialog lists all the layers contained in the given datasource.
111    
112        One layer can be chosen, which is then opened.
113        """
114    
115      def __init__(self, parent, filename):      def __init__(self, parent, filename):
116          wxDialog.__init__(self, parent, -1, _("Choose layer"),          """Initialize the dialog.
117                            style = wxDIALOG_MODAL|wxCAPTION)          """
118            wx.Dialog.__init__(self, parent, -1, _("Choose layer"),
119                              style = wx.DIALOG_MODAL|wx.CAPTION)
120          self.tables = []          self.tables = []
121    
122          #          #
# Line 171  class ChooseLayer(wxDialog): Line 124  class ChooseLayer(wxDialog):
124          #          #
125    
126          # Sizer for the entire dialog          # Sizer for the entire dialog
127          top = wxFlexGridSizer(2, 1, 0, 0)          top = wx.FlexGridSizer(2, 1, 0, 0)
128    
129          # Sizer for the main part with the list boxes          # Sizer for the main part with the list boxes
130          main_sizer = wxBoxSizer(wxHORIZONTAL)          main_sizer = wx.BoxSizer(wx.HORIZONTAL)
131          top.Add(main_sizer, 1, wxEXPAND, 0)          top.Add(main_sizer, 1, wx.EXPAND, 0)
132    
133          # The list box with the drivers          # The list box with the drivers
134          static_box = wxStaticBoxSizer(wxStaticBox(self, -1, _("Layers")),          static_box = wx.StaticBoxSizer(wx.StaticBox(self, -1, _("Layers")),
135                                     wxHORIZONTAL)                                     wx.HORIZONTAL)
136          self.lb_drivers = wxListBox(self, -1)          self.lb_drivers = wx.ListBox(self, -1)
137          static_box.Add(self.lb_drivers, 0, wxEXPAND, 0)          static_box.Add(self.lb_drivers, 0, wx.EXPAND, 0)
138          main_sizer.Add(static_box, 1, wxEXPAND, 0)          main_sizer.Add(static_box, 1, wx.EXPAND, 0)
139    
140          datasource = ogr.Open(filename)          datasource = ogr.Open(filename)
141          self.layer = []          self.layer = []
# Line 193  class ChooseLayer(wxDialog): Line 146  class ChooseLayer(wxDialog):
146              self.lb_drivers.SetSelection(0, True)              self.lb_drivers.SetSelection(0, True)
147    
148          # The standard button box at the bottom of the dialog          # The standard button box at the bottom of the dialog
149          buttons = wxFlexGridSizer(1, 2, 0, 0)          buttons = wx.FlexGridSizer(1, 2, 0, 0)
150          ok_button = wxButton(self, ID_DBCHOOSE_OK, _("OK"))          ok_button = wx.Button(self, ID_DBCHOOSE_OK, _("OK"))
151          EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)          wx.EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)
152          buttons.Add(ok_button, 0, wxALL|wxALIGN_RIGHT, 4)          buttons.Add(ok_button, 0, wx.ALL|wx.ALIGN_RIGHT, 4)
153          cancel_button = wxButton(self, ID_DBCHOOSE_CANCEL, _("Cancel"))          cancel_button = wx.Button(self, ID_DBCHOOSE_CANCEL, _("Cancel"))
154          EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)          wx.EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)
155          buttons.Add(cancel_button, 0, wxALL, 4)          buttons.Add(cancel_button, 0, wx.ALL, 4)
156          top.Add(buttons, 1, wxALL|wxALIGN_CENTER_HORIZONTAL, 4)          top.Add(buttons, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 4)
157    
158          # Autosizing          # Autosizing
159          self.SetAutoLayout(1)          self.SetAutoLayout(1)
# Line 210  class ChooseLayer(wxDialog): Line 163  class ChooseLayer(wxDialog):
163          self.Layout()          self.Layout()
164    
165      def end_dialog(self, result):      def end_dialog(self, result):
166            """If the dialog is closed with OK, set chosen layer as layer
167            to be opened.
168            """
169          self.result = result          self.result = result
170          if result is not None:          if result is not None:
171              self.EndModal(wxID_OK)              self.EndModal(wx.ID_OK)
172          else:          else:
173              self.EndModal(wxID_CANCEL)              self.EndModal(wx.ID_CANCEL)
174          self.Show(False)          self.Show(False)
175    
176      def OnOK(self, event):      def OnOK(self, event):
177            """Dialog closed with OK button.
178            """
179          self.end_dialog(self.lb_drivers.GetSelection())          self.end_dialog(self.lb_drivers.GetSelection())
180    
181      def OnCancel(self, event):      def OnCancel(self, event):
182            """Dialog closed with Cancel.
183            """
184          self.end_dialog(None)          self.end_dialog(None)
185    
186      def GetLayer(self):      def GetLayer(self):
187            """Return the selected layer."""
188          return self.layer[self.lb_drivers.GetSelection()].GetName()          return self.layer[self.lb_drivers.GetSelection()].GetName()
189    
190    
191  class ChooseOGRDBTableDialog(wxDialog):  class ChooseOGRDBTableDialog(wx.Dialog):
192        """This dialog opens a datasource from an existing database connection.
193    
194        A list of all available database connections is offered. If one connection
195        is selected and the button "Retrieve" is clicked, all layers are listed.
196        One of these layers can be chosen to be opened.
197        An ID column can be chosen, too."""
198    
199      def __init__(self, parent, session):      def __init__(self, parent, session):
200          wxDialog.__init__(self, parent, -1, _("Choose layer from database"),          """Initialize the dialog.
201                            style = wxDIALOG_MODAL|wxCAPTION)          """
202            wx.Dialog.__init__(self, parent, -1, _("Choose layer from database"),
203                              style = wx.DIALOG_MODAL|wx.CAPTION)
204          self.session = session          self.session = session
205          self.dbconns = self.session.DBConnections()          self.dbconns = self.session.DBConnections()
206          self.tables = []          self.tables = []
# Line 241  class ChooseOGRDBTableDialog(wxDialog): Line 210  class ChooseOGRDBTableDialog(wxDialog):
210          #          #
211    
212          # Sizer for the entire dialog          # Sizer for the entire dialog
213          top = wxFlexGridSizer(2, 1, 0, 0)          top = wx.FlexGridSizer(2, 1, 0, 0)
214    
215          # Sizer for the main part with the list boxes          # Sizer for the main part with the list boxes
216          main_sizer = wxBoxSizer(wxHORIZONTAL)          main_sizer = wx.BoxSizer(wx.HORIZONTAL)
217          top.Add(main_sizer, 1, wxEXPAND, 0)          top.Add(main_sizer, 1, wx.EXPAND, 0)
218    
219          # The list box with the connections          # The list box with the connections
220          static_box = wxStaticBoxSizer(wxStaticBox(self, -1, _("Databases")),          static_box = wx.StaticBoxSizer(wx.StaticBox(self, -1, _("Databases")),
221                                     wxHORIZONTAL)                                     wx.HORIZONTAL)
222          self.lb_connections = wxListBox(self, -1)          self.lb_connections = wx.ListBox(self, -1)
223          static_box.Add(self.lb_connections, 0, wxEXPAND, 0)          static_box.Add(self.lb_connections, 0, wx.EXPAND, 0)
224          main_sizer.Add(static_box, 1, wxEXPAND, 0)          main_sizer.Add(static_box, 1, wx.EXPAND, 0)
225    
226          for i in range(len(self.dbconns)):          for i in range(len(self.dbconns)):
227              self.lb_connections.Append(self.dbconns[i].BriefDescription())              self.lb_connections.Append(self.dbconns[i].BriefDescription())
# Line 261  class ChooseOGRDBTableDialog(wxDialog): Line 230  class ChooseOGRDBTableDialog(wxDialog):
230    
231          # The button box between the connections list box and the table          # The button box between the connections list box and the table
232          # list box          # list box
233          buttons = wxFlexGridSizer(3, 1, 0, 0)          buttons = wx.FlexGridSizer(3, 1, 0, 0)
234          buttons.Add(20, 80, 0, wxEXPAND, 0)          buttons.Add(20, 80, 0, wx.EXPAND, 0)
235          retrieve_button = wxButton(self, ID_DBCHOOSE_RETRIEVE, _("Retrieve"))          retrieve_button = wx.Button(self, ID_DBCHOOSE_RETRIEVE, _("Retrieve"))
236          EVT_BUTTON(self, ID_DBCHOOSE_RETRIEVE, self.OnRetrieve)          wx.EVT_BUTTON(self, ID_DBCHOOSE_RETRIEVE, self.OnRetrieve)
237          buttons.Add(retrieve_button, 0, wxALL          buttons.Add(retrieve_button, 0, wx.ALL
238                      |wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 4)                      |wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 4)
239          buttons.Add(20, 80, 0, wxEXPAND, 0)          buttons.Add(20, 80, 0, wx.EXPAND, 0)
240          main_sizer.Add(buttons, 0, wxEXPAND, 0)          main_sizer.Add(buttons, 0, wx.EXPAND, 0)
241    
242          # The list box with the tables          # The list box with the tables
243          static_box = wxStaticBoxSizer(wxStaticBox(self, -1, _("Tables")),          static_box = wx.StaticBoxSizer(wx.StaticBox(self, -1, _("Tables")),
244                                     wxHORIZONTAL)                                     wx.HORIZONTAL)
245          self.lb_tables = wxListBox(self, ID_LB_DCLICK)          self.lb_tables = wx.ListBox(self, ID_LB_DCLICK)
246          EVT_LISTBOX(self, ID_LB_DCLICK, self.OnTableSelect)          wx.EVT_LISTBOX(self, ID_LB_DCLICK, self.OnTableSelect)
247          EVT_LISTBOX_DCLICK(self, ID_LB_DCLICK, self.OnLBDClick)          wx.EVT_LISTBOX_DCLICK(self, ID_LB_DCLICK, self.OnLBDClick)
248          static_box.Add(self.lb_tables, 0, wxEXPAND, 0)          static_box.Add(self.lb_tables, 0, wx.EXPAND, 0)
249          main_sizer.Add(static_box, 1, wxEXPAND, 0)          main_sizer.Add(static_box, 1, wx.EXPAND, 0)
250    
251            # id column and geometry column selection
252            box = wx.BoxSizer(wx.VERTICAL)
253            box.Add(wx.StaticText(self, -1, _("ID Column")), 0,
254                    wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
255            self.text_id_column = wx.ComboBox(self, -1, "")
256            box.Add(self.text_id_column, 0,
257                    wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 4)
258            main_sizer.Add(box, 1, wx.EXPAND, 0)
259    
260          # The standard button box at the bottom of the dialog          # The standard button box at the bottom of the dialog
261          buttons = wxFlexGridSizer(1, 2, 0, 0)          buttons = wx.FlexGridSizer(1, 2, 0, 0)
262          ok_button = wxButton(self, ID_DBCHOOSE_OK, _("OK"))          ok_button = wx.Button(self, ID_DBCHOOSE_OK, _("OK"))
263          EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)          wx.EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)
264          buttons.Add(ok_button, 0, wxALL|wxALIGN_RIGHT, 4)          buttons.Add(ok_button, 0, wx.ALL|wx.ALIGN_RIGHT, 4)
265          cancel_button = wxButton(self, ID_DBCHOOSE_CANCEL, _("Cancel"))          cancel_button = wx.Button(self, ID_DBCHOOSE_CANCEL, _("Cancel"))
266          EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)          wx.EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)
267          buttons.Add(cancel_button, 0, wxALL, 4)          buttons.Add(cancel_button, 0, wx.ALL, 4)
268          top.Add(buttons, 1, wxALL|wxALIGN_CENTER_HORIZONTAL, 4)          top.Add(buttons, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 4)
269    
270          # Autosizing          # Autosizing
271          self.SetAutoLayout(1)          self.SetAutoLayout(1)
# Line 298  class ChooseOGRDBTableDialog(wxDialog): Line 276  class ChooseOGRDBTableDialog(wxDialog):
276    
277    
278      def GetTable(self):      def GetTable(self):
279            """Return the chosen DB connection, the table to be opened,
280            the connection string for ogr and the ID column.
281            """
282          i = self.lb_tables.GetSelection()          i = self.lb_tables.GetSelection()
283          if i >= 0:          if i >= 0:
284              return (self.selected_conn, self.tables[i])              return (self.selected_conn, self.connString, self.tables[i],
285                        self.text_id_column.GetValue())
286          return None          return None
287    
288      def OnRetrieve(self, event):      def OnRetrieve(self, event):
289            """Provide a list of all available layers in the selected datasource.
290            """
291          i = self.lb_connections.GetSelection()          i = self.lb_connections.GetSelection()
292          if i >= 0:          if i >= 0:
293              self.selected_conn = self.dbconns[i]              self.selected_conn = self.dbconns[i]
294              connString = ("PG: host=%s dbname=%s user=%s port=%s"              self.connString = "PG: dbname=%s" %self.selected_conn.dbname
295                            %(self.selected_conn.host, self.selected_conn.dbname,              if self.selected_conn.host is not "":
296                              self.selected_conn.user, self.selected_conn.port))                  self.connString = (self.connString + " host=%s"
297              ds = ogr.Open(connString)                                      %self.selected_conn.host)
298                if self.selected_conn.user is not "":
299                    self.connString = (self.connString + " user=%s"
300                                        %self.selected_conn.user)
301                if self.selected_conn.password is not "":
302                    self.connString = (self.connString + " password=%s"
303                                        %self.selected_conn.password)
304                if self.selected_conn.port is not "":
305                    self.connString = (self.connString + " port= %s"
306                                        %self.selected_conn.port)
307                ds = ogr.Open(self.connString)
308              if ds:              if ds:
309                  for i in range(ds.GetLayerCount()):                  for i in range(ds.GetLayerCount()):
310                      self.tables.append(ds.GetLayer(i).GetName())                      self.tables.append(ds.GetLayer(i).GetName())
311                  self.lb_tables.Set(self.tables)                  self.lb_tables.Set(self.tables)
312    
313      def OnTableSelect(self, event):      def OnTableSelect(self, event):
314            """If a table is selected, list all possible ID columns.
315            """
316          i = self.lb_tables.GetSelection()          i = self.lb_tables.GetSelection()
317   #       self.text_id_column.Clear()          self.text_id_column.Clear()
318    #      self.text_geo_column.Clear()          if i >= 0:
319     #     if i >= 0:              for name, typ in self.selected_conn.table_columns(self.tables[i]):
320      #        for name, typ in self.selected_conn.table_columns(self.tables[i]):                  if typ == FIELDTYPE_INT:
321       #           if typ == "geometry":                      self.text_id_column.Append(name)
       #              self.text_geo_column.Append(name)  
        #         elif typ == FIELDTYPE_INT:  
         #            self.text_id_column.Append(name)  
322    
323      def OnLBDClick(self, event):      def OnLBDClick(self, event):
324            """Close dialog.
325            """
326          if self.lb_tables.GetSelection() >= 0:          if self.lb_tables.GetSelection() >= 0:
327              self.EndModal(wxID_OK)              self.EndModal(wx.ID_OK)
328              self.Show(False)              self.Show(False)
329    
330      def OnOK(self, event):      def OnOK(self, event):
331          self.EndModal(wxID_OK)          """Dialog closed with OK button.
332            """
333            self.EndModal(wx.ID_OK)
334          self.Show(False)          self.Show(False)
335    
336      def OnCancel(self, event):      def OnCancel(self, event):
337          self.EndModal(wxID_CANCEL)          """Dialog closed with Cancel.
338            """
339            self.EndModal(wx.ID_CANCEL)
340          self.Show(False)          self.Show(False)
341    
342    
343    class OGRConnectionDialog(wx.Dialog):
344        """A string can be enteres, which is directly passed to ogr to open a
345        datasource.
346        """
347        def __init__(self, parent, session):
348            """Initialize the dialog.
349            """
350            wx.Dialog.__init__(self, parent, -1, "Enter string for OGRConnection",
351                              style = wx.DIALOG_MODAL|wx.CAPTION)
352            self.session = session
353    
354            # Sizer for the entire dialog
355            top = wx.BoxSizer(wx.VERTICAL)
356    
357            # The list box with the drivers
358            box = wx.BoxSizer(wx.HORIZONTAL)#wx.Box(self, -1, _("OGRConnection")),
359                                #       wx.HORIZONTAL)
360            box.Add(wx.StaticText(self, -1, _("URL:")), 0,
361                    wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
362            self.text_string = wx.TextCtrl(self, -1, "")
363            box.Add(self.text_string, 0, wx.EXPAND, 0)
364            top.Add(box, 0, wx.EXPAND)
365    
366            # The standard button box at the bottom of the dialog
367            buttons = wx.FlexGridSizer(1, 2, 0, 0)
368            ok_button = wx.Button(self, ID_DBCHOOSE_OK, _("OK"))
369            wx.EVT_BUTTON(self, ID_DBCHOOSE_OK, self.OnOK)
370            buttons.Add(ok_button, 0, wx.ALL|wx.ALIGN_RIGHT, 4)
371            cancel_button = wx.Button(self, ID_DBCHOOSE_CANCEL, _("Cancel"))
372            wx.EVT_BUTTON(self, ID_DBCHOOSE_CANCEL, self.OnCancel)
373            buttons.Add(cancel_button, 0, wx.ALL, 4)
374            top.Add(buttons, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 4)
375    
376            # Autosizing
377            self.SetAutoLayout(1)
378            self.SetSizer(top)
379            top.Fit(self)
380            top.SetSizeHints(self)
381            self.Layout()
382    
383        def RunDialog(self):
384            """Run dialog
385            """
386            self.ShowModal()
387            self.Destroy()
388            return self.result
389    
390        def end_dialog(self, result):
391            """Close dialog
392            """
393            self.result = result
394            if result is not None:
395                self.EndModal(wx.ID_OK)
396            else:
397                self.EndModal(wx.ID_CANCEL)
398            self.Show(False)
399    
400        def OnOK(self, event):
401            """Dialog closed with OK
402            """
403            result = {}
404            result["string"] = getattr(self, "text_string").GetValue()
405            self.end_dialog(result)
406    
407        def OnCancel(self, event):
408            """Dialog closed with Cancel.
409            """
410            self.end_dialog(None)
411    
412        def GetDatasourceName(self):
413            """Return the string to be used for opening the database
414            """
415            return self.result["string"]
416    

Legend:
Removed from v.2559  
changed lines
  Added in v.2734

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26