Преглед изворни кода

wxGUI/datacatalog: fix error handling and add busy cursor when loading, refresh as loading dbs (#957)

Anna Petrasova пре 4 година
родитељ
комит
ee86195b8b
1 измењених фајлова са 7 додато и 2 уклоњено
  1. 7 2
      gui/wxpython/datacatalog/tree.py

+ 7 - 2
gui/wxpython/datacatalog/tree.py

@@ -478,6 +478,8 @@ class DataCatalogTree(TreeView):
                 queue_list = []
                 queue_list = []
                 loc_list = []
                 loc_list = []
                 location_nodes = []
                 location_nodes = []
+                # refresh after each chunk to make GUI more responsive
+                self.RefreshItems()
 
 
         for node in all_location_nodes:
         for node in all_location_nodes:
             self._model.SortChildren(node)
             self._model.SortChildren(node)
@@ -500,10 +502,11 @@ class DataCatalogTree(TreeView):
                 grassdb_node = grassdb_nodes[0]
                 grassdb_node = grassdb_nodes[0]
             error = self._reloadGrassDBNode(grassdb_node)
             error = self._reloadGrassDBNode(grassdb_node)
             if error:
             if error:
-                errors.append(error)
+                errors += error
 
 
         if errors:
         if errors:
-            wx.CallAfter(GWarning, '\n'.join(errors))
+            # WriteWarning/Error results in crash
+            self._giface.WriteLog('\n'.join(errors))
         Debug.msg(1, "Tree filled")
         Debug.msg(1, "Tree filled")
 
 
         self.UpdateCurrentDbLocationMapsetNode()
         self.UpdateCurrentDbLocationMapsetNode()
@@ -540,7 +543,9 @@ class DataCatalogTree(TreeView):
 
 
     def ReloadTreeItems(self):
     def ReloadTreeItems(self):
         """Reload dbs, locations, mapsets and layers in the tree."""
         """Reload dbs, locations, mapsets and layers in the tree."""
+        busy = wx.BusyCursor()
         self._reloadTreeItems()
         self._reloadTreeItems()
+        del busy
 
 
     def ReloadCurrentMapset(self):
     def ReloadCurrentMapset(self):
         """Reload current mapset tree only."""
         """Reload current mapset tree only."""