Selaa lähdekoodia

wxGUI: Make Display related toolbars part of Display tab (#1321)

* The toolbar Data Toolbar and Vector Toolbar buttons are only visible for Display tab.
  - The buttons operate on the items in the Display tab.
  - Avoids the new issue created by Data tab re-using the "pencil" icon to allow editing of other mapsets
    (before this PR, user sees two of these icons above each other which is strange).
  - Avoids the confusion when Data tab is active and a user clicks the Show attribute... button
    which is associated with selected layer in Displays, not selected vector map in Data tab.
2. The new Data Toolbar now contains also NewDisplay button making the main toolbar a bit shorter than Display toolbar.

Fixes #1189.
Linda Kladivova 4 vuotta sitten
vanhempi
commit
802b3c84be
2 muutettua tiedostoa jossa 61 lisäystä ja 68 poistoa
  1. 34 23
      gui/wxpython/lmgr/frame.py
  2. 27 45
      gui/wxpython/lmgr/toolbars.py

+ 34 - 23
gui/wxpython/lmgr/frame.py

@@ -61,8 +61,8 @@ from gui_core.dialogs import LocationDialog, MapsetDialog, CreateNewVector, Grou
 from gui_core.menu import SearchModuleWindow
 from gui_core.menu import Menu as GMenu
 from core.debug import Debug
-from lmgr.toolbars import LMWorkspaceToolbar, LMDataToolbar, LMToolsToolbar
-from lmgr.toolbars import LMMiscToolbar, LMVectorToolbar, LMNvizToolbar
+from lmgr.toolbars import LMWorkspaceToolbar, LMToolsToolbar
+from lmgr.toolbars import LMMiscToolbar, LMNvizToolbar, DisplayPanelToolbar
 from lmgr.pyshell import PyShellWindow
 from lmgr.giface import LayerManagerGrassInterface
 from datacatalog.catalog import DataCatalog
@@ -147,32 +147,23 @@ class GMFrame(wx.Frame):
         self.statusbar = self.CreateStatusBar(number=1)
         self.notebook = self._createNoteBook()
         self.toolbars = {'workspace': LMWorkspaceToolbar(parent=self),
-                         'data': LMDataToolbar(parent=self),
                          'tools': LMToolsToolbar(parent=self),
                          'misc': LMMiscToolbar(parent=self),
-                         'vector': LMVectorToolbar(parent=self),
                          'nviz': LMNvizToolbar(parent=self)}
         self._toolbarsData = {'workspace': ("toolbarWorkspace",     # name
                                             _("Workspace Toolbar"),  # caption
                                             1, 0),                   # row, position
-                              'data': ("toolbarData",
-                                       _("Data Toolbar"),
-                                       1, 1),
-                              'misc': ("toolbarMisc",
-                                       _("Misc Toolbar"),
-                                       2, 2),
                               'tools': ("toolbarTools",
                                         _("Tools Toolbar"),
-                                        2, 1),
-                              'vector': ("toolbarVector",
-                                         _("Vector Toolbar"),
-                                         2, 0),
+                                        1, 1),
+                              'misc': ("toolbarMisc",
+                                       _("Misc Toolbar"),
+                                       1, 2),
                               'nviz': ("toolbarNviz",
                                        _("3D view Toolbar"),
-                                       2, 3),
+                                       1, 3),
                               }
-        toolbarsList = ('workspace', 'data',
-                        'vector', 'tools', 'misc', 'nviz')
+        toolbarsList = ('workspace', 'tools', 'misc', 'nviz')
         for toolbar in toolbarsList:
             name, caption, row, position = self._toolbarsData[toolbar]
             self._auimgr.AddPane(self.toolbars[toolbar],
@@ -304,6 +295,30 @@ class GMFrame(wx.Frame):
 
         return menu
 
+    def _createDisplayPanel(self):
+        """Creates display panel"""
+        # create superior display panel
+        displayPanel = wx.Panel(self.notebook, id=wx.ID_ANY)
+        # create display toolbar
+        dmgrToolbar = DisplayPanelToolbar(guiparent=displayPanel, parent=self)
+        # create display notebook
+        notebookLayers = GNotebook(parent=displayPanel, style=globalvar.FNPageStyle)
+        notebookLayers.SetTabAreaColour(globalvar.FNPageColor)
+        menu = self._createTabMenu()
+        notebookLayers.SetRightClickMenu(menu)
+
+        # layout
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(dmgrToolbar, proportion=0, flag=wx.EXPAND)
+        sizer.Add(notebookLayers, proportion=1, flag=wx.EXPAND)
+
+        displayPanel.SetAutoLayout(True)
+        displayPanel.SetSizer(sizer)
+        displayPanel.Fit()
+        displayPanel.Layout()
+
+        return displayPanel, notebookLayers
+
     def _setCopyingOfSelectedText(self):
         copy = UserSettings.Get(
             group='manager',
@@ -337,13 +352,9 @@ class GMFrame(wx.Frame):
             name='catalog')
 
         # create displays notebook widget
-        self.notebookLayers = GNotebook(parent=self.notebook,
-                                        style=globalvar.FNPageStyle)
-        self.notebookLayers.SetTabAreaColour(globalvar.FNPageColor)
-        menu = self._createTabMenu()
-        self.notebookLayers.SetRightClickMenu(menu)
+        self.displayPanel, self.notebookLayers = self._createDisplayPanel()
         self.notebook.AddPage(
-            page=self.notebookLayers,
+            page=self.displayPanel,
             text=_("Display"),
             name='layers')
 

+ 27 - 45
gui/wxpython/lmgr/toolbars.py

@@ -5,12 +5,12 @@
 
 Classes:
  - toolbars::LMWorkspaceToolbar
- - toolbars::LMDataToolbar
+ - toolbars::DisplayPanelToolbar
  - toolbars::LMToolsToolbar
  - toolbars::LMMiscToolbar
- - toolbars::LMVectorToolbar
  - toolbars::LMNvizToolbar
 
+
 (C) 2007-2013 by the GRASS Development Team
 
 This program is free software under the GNU General Public License
@@ -20,6 +20,7 @@ This program is free software under the GNU General Public License
 @author Jachym Cepicky
 @author Martin Landa <landa.martin gmail.com>
 @author Anna Kratochvilova <kratochanna gmail.com>
+@author Linda Kladivova <linda.kladivova gmail com>
 """
 
 from core.gcmd import RunCommand
@@ -43,9 +44,6 @@ class LMWorkspaceToolbar(BaseToolbar):
         """Toolbar data
         """
         icons = {
-            'newdisplay': MetaIcon(
-                img='monitor-create',
-                label=_('Start new map display')),
             'workspaceNew': MetaIcon(
                 img='create',
                 label=_('Create new workspace (Ctrl+N)')),
@@ -56,10 +54,7 @@ class LMWorkspaceToolbar(BaseToolbar):
                 img='save',
                 label=_('Save current workspace to file (Ctrl+S)')),
         }
-        return self._getToolbarData((('newdisplay', icons["newdisplay"],
-                                      self.parent.OnNewDisplay),
-                                     (None, ),
-                                     ('workspaceNew', icons["workspaceNew"],
+        return self._getToolbarData((('workspaceNew', icons["workspaceNew"],
                                       self.parent.OnWorkspaceNew),
                                      ('workspaceOpen', icons["workspaceOpen"],
                                       self.parent.OnWorkspaceOpen),
@@ -68,12 +63,13 @@ class LMWorkspaceToolbar(BaseToolbar):
                                      ))
 
 
-class LMDataToolbar(BaseToolbar):
-    """Layer Manager `data` toolbar
+class DisplayPanelToolbar(BaseToolbar):
+    """Toolbar for display tab
     """
 
-    def __init__(self, parent):
-        BaseToolbar.__init__(self, parent)
+    def __init__(self, guiparent, parent):
+        BaseToolbar.__init__(self, guiparent)
+        self.parent = parent
 
         self.InitToolbar(self._toolbarData())
 
@@ -84,6 +80,9 @@ class LMDataToolbar(BaseToolbar):
         """Toolbar data
         """
         icons = {
+            'newdisplay': MetaIcon(
+                img='monitor-create',
+                label=_('Start new map display')),
             'addMulti': MetaIcon(
                 img='layer-open',
                 label=_('Add multiple raster or vector map layers (Ctrl+Shift+L)')),
@@ -109,9 +108,18 @@ class LMDataToolbar(BaseToolbar):
             'delCmd': MetaIcon(
                 img='layer-remove',
                 label=_('Remove selected map layer(s) from layer tree')),
+            'vdigit': MetaIcon(
+                img='edit',
+                label=_('Edit selected vector map')),
+            'attrTable': MetaIcon(
+                img='table',
+                label=_('Show attribute data for selected vector map'))
         }
 
-        return self._getToolbarData((('addMulti', icons["addMulti"],
+        return self._getToolbarData((('newdisplay', icons["newdisplay"],
+                                      self.parent.OnNewDisplay),
+                                     (None, ),
+                                     ('addMulti', icons["addMulti"],
                                       self.parent.OnAddMaps),
                                      ('addrast', icons["addRast"],
                                       self.parent.OnAddRaster),
@@ -130,6 +138,11 @@ class LMDataToolbar(BaseToolbar):
                                       self.parent.OnAddGroup),
                                      ('delcmd', icons["delCmd"],
                                       self.parent.OnDeleteLayer),
+                                     (None, ),
+                                     ('vdigit', icons["vdigit"],
+                                      self.parent.OnVDigit),
+                                     ('attribute', icons["attrTable"],
+                                      self.parent.OnShowAttributeTable),
                                      ))
 
 
@@ -206,37 +219,6 @@ class LMMiscToolbar(BaseToolbar):
                                      ))
 
 
-class LMVectorToolbar(BaseToolbar):
-    """Layer Manager `vector` toolbar
-    """
-
-    def __init__(self, parent):
-        BaseToolbar.__init__(self, parent)
-
-        self.InitToolbar(self._toolbarData())
-
-        # realize the toolbar
-        self.Realize()
-
-    def _toolbarData(self):
-        """Toolbar data
-        """
-        icons = {
-            'vdigit': MetaIcon(
-                img='edit',
-                label=_('Edit selected vector map')),
-            'attrTable': MetaIcon(
-                img='table',
-                label=_('Show attribute data for selected vector map')),
-        }
-
-        return self._getToolbarData((('vdigit', icons["vdigit"],
-                                      self.parent.OnVDigit),
-                                     ('attribute', icons["attrTable"],
-                                      self.parent.OnShowAttributeTable),
-                                     ))
-
-
 class LMNvizToolbar(BaseToolbar):
     """Nviz toolbar
     """