Просмотр исходного кода

wxGUI: dxf-dialog cosmetics, import only checked layers from the list, optionally add imported layers into layer tree

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@32451 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 16 лет назад
Родитель
Сommit
3d9842e7b9
2 измененных файлов с 28 добавлено и 7 удалено
  1. 26 5
      gui/wxpython/gui_modules/gdialogs.py
  2. 2 2
      gui/wxpython/gui_modules/goutput.py

+ 26 - 5
gui/wxpython/gui_modules/gdialogs.py

@@ -734,7 +734,11 @@ class ImportDxfDialog(wx.Dialog):
         #
         self.list = LayersList(self)
         self.list.LoadData()
-        
+
+        self.add = wx.CheckBox(parent=self.panel, id=wx.ID_ANY,
+                               label=_("Add imported layers into layer tree"))
+        self.add.SetValue(True)
+
         #
         # buttons
         #
@@ -789,6 +793,9 @@ class ImportDxfDialog(wx.Dialog):
         dialogSizer.Add(item=layerSizer, proportion=1,
                         flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border=5)
 
+        dialogSizer.Add(item=self.add, proportion=0,
+                        flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border=5)
+
         #
         # buttons
         #
@@ -842,10 +849,23 @@ class ImportDxfDialog(wx.Dialog):
             # run in Layer Manager
             self.parent.goutput.RunCmd(cmd)
 
+        if self.add.IsChecked():
+            maptree = self.parent.curr_page.maptree
+            for layer, output in data:
+                # add imported layers into layer tree
+                maptree.AddLayer(ltype='vector',
+                                 lname=output,
+                                 lcmd=['d.vect', 'map=%s' % output])
+
+        self.parent.notebook.SetSelection(0)
+        
         self.OnCancel()
         
     def OnAbort(self, event):
-        """Abort running import"""
+        """Abort running import
+
+        @todo not yet implemented
+        """
         pass
         
     def OnSetInput(self, event):
@@ -916,8 +936,9 @@ class LayersList(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin,
             item = self.GetNextItem(item)
             if item == -1:
                 break
-            # layer / output name
-            data.append((self.GetItem(item, 1).GetText(),
-                         self.GetItem(item, 2).GetText()))
+            if self.IsChecked(item):
+                # layer / output name
+                data.append((self.GetItem(item, 1).GetText(),
+                             self.GetItem(item, 2).GetText()))
 
         return data

+ 2 - 2
gui/wxpython/gui_modules/goutput.py

@@ -75,11 +75,11 @@ class CmdThread(threading.Thread):
             event = wxCmdRun(cmd=args[0],
                              pid=requestId)
             wx.PostEvent(self.parent, event)
-            
-            self.requestCmd = callable(*args, **kwds)
 
             time.sleep(.1)
             
+            self.requestCmd = callable(*args, **kwds)
+
             self.resultQ.put((requestId, self.requestCmd.run()))
 
             event = wxCmdDone(aborted=self.requestCmd.aborted,