|
@@ -1517,8 +1517,10 @@ class cmdPanel(wx.Panel):
|
|
event.Skip()
|
|
event.Skip()
|
|
|
|
|
|
def OnUpdateSelection(self, event):
|
|
def OnUpdateSelection(self, event):
|
|
- """Update list of available layers, tables, columns for
|
|
|
|
- vector map layer"""
|
|
|
|
|
|
+ """
|
|
|
|
+ Update dialog (layers, tables, columns, etc.)
|
|
|
|
+ """
|
|
|
|
+ # get widget id
|
|
if not event:
|
|
if not event:
|
|
id = None
|
|
id = None
|
|
for p in self.task.params:
|
|
for p in self.task.params:
|
|
@@ -1538,11 +1540,13 @@ class cmdPanel(wx.Panel):
|
|
if not p or \
|
|
if not p or \
|
|
not p.has_key('wxId-bind'):
|
|
not p.has_key('wxId-bind'):
|
|
return
|
|
return
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ # get widget prompt
|
|
pType = p.get('prompt', '')
|
|
pType = p.get('prompt', '')
|
|
if not pType:
|
|
if not pType:
|
|
return
|
|
return
|
|
|
|
|
|
|
|
+ # check for map/input parameter
|
|
pMap = self.task.get_param('map', raiseError=False)
|
|
pMap = self.task.get_param('map', raiseError=False)
|
|
if not pMap:
|
|
if not pMap:
|
|
pMap = self.task.get_param('input', raiseError=False)
|
|
pMap = self.task.get_param('input', raiseError=False)
|
|
@@ -1552,6 +1556,10 @@ class cmdPanel(wx.Panel):
|
|
else:
|
|
else:
|
|
map = None
|
|
map = None
|
|
|
|
|
|
|
|
+ # avoid multiple updating
|
|
|
|
+ columns = []
|
|
|
|
+
|
|
|
|
+ # update reference widgets
|
|
for uid in p['wxId-bind']:
|
|
for uid in p['wxId-bind']:
|
|
win = self.FindWindowById(uid)
|
|
win = self.FindWindowById(uid)
|
|
name = win.GetName()
|
|
name = win.GetName()
|
|
@@ -1571,30 +1579,34 @@ class cmdPanel(wx.Panel):
|
|
win.InsertTables(driver, db)
|
|
win.InsertTables(driver, db)
|
|
|
|
|
|
elif name == 'ColumnSelect':
|
|
elif name == 'ColumnSelect':
|
|
- pLayer = self.task.get_param('layer', element='element', raiseError=False)
|
|
|
|
- if pLayer:
|
|
|
|
- if pLayer.get('value', '') != '':
|
|
|
|
- layer = int(pLayer.get('value', 1))
|
|
|
|
|
|
+ if not columns:
|
|
|
|
+ print 'c'
|
|
|
|
+ pLayer = self.task.get_param('layer', element='element', raiseError=False)
|
|
|
|
+ if pLayer:
|
|
|
|
+ if pLayer.get('value', '') != '':
|
|
|
|
+ layer = int(pLayer.get('value', 1))
|
|
|
|
+ else:
|
|
|
|
+ layer = int(pLayer.get('default', 1))
|
|
else:
|
|
else:
|
|
- layer = int(pLayer.get('default', 1))
|
|
|
|
|
|
+ layer = 1
|
|
|
|
+
|
|
|
|
+ if map:
|
|
|
|
+ win.InsertColumns(map, layer)
|
|
|
|
+ columns = win.GetItems()
|
|
|
|
+ else: # table
|
|
|
|
+ pDriver = self.task.get_param('dbdriver', element='prompt', raiseError=False)
|
|
|
|
+ if pDriver:
|
|
|
|
+ driver = pDriver.get('value', None)
|
|
|
|
+ pDb = self.task.get_param('dbname', element='prompt', raiseError=False)
|
|
|
|
+ if pDb:
|
|
|
|
+ db = pDb.get('value', None)
|
|
|
|
+ pTable = self.task.get_param('dbtable', element='element', raiseError=False)
|
|
|
|
+ if pTable and \
|
|
|
|
+ pTable.get('value', '') != '':
|
|
|
|
+ win.InsertTableColumns(pTable.get('value'), driver, db)
|
|
|
|
+ columns = win.GetItems()
|
|
else:
|
|
else:
|
|
- layer = 1
|
|
|
|
- if map:
|
|
|
|
- win.InsertColumns(map, layer)
|
|
|
|
- else: # table
|
|
|
|
- pDriver = self.task.get_param('dbdriver', element='prompt', raiseError=False)
|
|
|
|
- if pDriver:
|
|
|
|
- driver = pDriver.get('value', None)
|
|
|
|
- pDb = self.task.get_param('dbname', element='prompt', raiseError=False)
|
|
|
|
- if pDb:
|
|
|
|
- db = pDb.get('value', None)
|
|
|
|
- pTable = self.task.get_param('dbtable', element='element', raiseError=False)
|
|
|
|
- if pTable and \
|
|
|
|
- pTable.get('value', '') != '':
|
|
|
|
- win.InsertTableColumns(pTable.get('value'), driver, db)
|
|
|
|
-
|
|
|
|
- if event:
|
|
|
|
- event.Skip()
|
|
|
|
|
|
+ win.SetItems(columns)
|
|
|
|
|
|
def createCmd( self, ignoreErrors = False ):
|
|
def createCmd( self, ignoreErrors = False ):
|
|
"""
|
|
"""
|