소스 검색

wxGUI: update extensions wrapper (g.extension.rebuild.all has been removed)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@58645 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 11 년 전
부모
커밋
e14a210e29
4개의 변경된 파일40개의 추가작업 그리고 21개의 파일을 삭제
  1. 3 3
      gui/wxpython/lmgr/frame.py
  2. 32 10
      gui/wxpython/modules/extensions.py
  3. 1 4
      gui/wxpython/xml/toolboxes.xml
  4. 4 4
      gui/wxpython/xml/wxgui_items.xml

+ 3 - 3
gui/wxpython/lmgr/frame.py

@@ -65,7 +65,7 @@ from gmodeler.frame        import ModelFrame
 from psmap.frame           import PsMapFrame
 from psmap.frame           import PsMapFrame
 from core.debug            import Debug
 from core.debug            import Debug
 from gui_core.ghelp        import AboutWindow
 from gui_core.ghelp        import AboutWindow
-from modules.extensions    import InstallExtensionWindow, UninstallExtensionWindow
+from modules.extensions    import InstallExtensionWindow, ManageExtensionWindow
 from lmgr.toolbars         import LMWorkspaceToolbar, LMDataToolbar, LMToolsToolbar
 from lmgr.toolbars         import LMWorkspaceToolbar, LMDataToolbar, LMToolsToolbar
 from lmgr.toolbars         import LMMiscToolbar, LMVectorToolbar, LMNvizToolbar
 from lmgr.toolbars         import LMMiscToolbar, LMVectorToolbar, LMNvizToolbar
 from lmgr.pyshell          import PyShellWindow
 from lmgr.pyshell          import PyShellWindow
@@ -1399,9 +1399,9 @@ class GMFrame(wx.Frame):
         win.CentreOnScreen()
         win.CentreOnScreen()
         win.Show()
         win.Show()
         
         
-    def OnUninstallExtension(self, event):
+    def OnManageExtension(self, event):
         """!Uninstall extension"""
         """!Uninstall extension"""
-        win = UninstallExtensionWindow(self, size = (650, 300))
+        win = ManageExtensionWindow(self, size = (650, 300))
         win.CentreOnScreen()
         win.CentreOnScreen()
         win.Show()
         win.Show()
 
 

+ 32 - 10
gui/wxpython/modules/extensions.py

@@ -6,7 +6,7 @@
 Classes:
 Classes:
  - extensions::InstallExtensionWindow
  - extensions::InstallExtensionWindow
  - extensions::ExtensionTreeModelBuilder
  - extensions::ExtensionTreeModelBuilder
- - extensions::UninstallExtensionWindow
+ - extensions::ManageExtensionWindow
  - extensions::CheckListExtension
  - extensions::CheckListExtension
 
 
 (C) 2008-2014 by the GRASS Development Team
 (C) 2008-2014 by the GRASS Development Team
@@ -26,7 +26,7 @@ import wx
 from grass.script import task as gtask
 from grass.script import task as gtask
 
 
 from core             import globalvar
 from core             import globalvar
-from core.gcmd        import GError, RunCommand, GException
+from core.gcmd        import GError, RunCommand, GException, GMessage
 from core.utils       import SetAddOnPath, _
 from core.utils       import SetAddOnPath, _
 from core.menutree    import TreeModel, ModuleNode
 from core.menutree    import TreeModel, ModuleNode
 from gui_core.widgets import GListCtrl, SearchModuleWidget
 from gui_core.widgets import GListCtrl, SearchModuleWidget
@@ -348,9 +348,9 @@ class ExtensionTreeModelBuilder:
                                     'keywords': '',
                                     'keywords': '',
                                     'description': ''}        
                                     'description': ''}        
         
         
-class UninstallExtensionWindow(wx.Frame):
+class ManageExtensionWindow(wx.Frame):
     def __init__(self, parent, id = wx.ID_ANY,
     def __init__(self, parent, id = wx.ID_ANY,
-                 title = _("Uninstall GRASS Addons extensions"), **kwargs):
+                 title = _("Manage installed GRASS Addons extensions"), **kwargs):
         self.parent = parent
         self.parent = parent
         
         
         wx.Frame.__init__(self, parent = parent, id = id, title = title, **kwargs)
         wx.Frame.__init__(self, parent = parent, id = id, title = title, **kwargs)
@@ -364,12 +364,15 @@ class UninstallExtensionWindow(wx.Frame):
         self.extList = CheckListExtension(parent = self.panel)
         self.extList = CheckListExtension(parent = self.panel)
 
 
         # buttons
         # buttons
-        self.btnUninstall = wx.Button(parent = self.panel, id = wx.ID_ANY,
-                                    label = _("&Uninstall"))
+        self.btnUninstall = wx.Button(parent = self.panel, id = wx.ID_REMOVE)
         self.btnUninstall.SetToolTipString(_("Uninstall selected AddOns extensions"))
         self.btnUninstall.SetToolTipString(_("Uninstall selected AddOns extensions"))
+        self.btnUpdate = wx.Button(parent = self.panel, id = wx.ID_REFRESH)
+        self.btnUpdate.SetToolTipString(_("Reinstall selected AddOns extensions"))
+
         self.btnClose = wx.Button(parent = self.panel, id = wx.ID_CLOSE)
         self.btnClose = wx.Button(parent = self.panel, id = wx.ID_CLOSE)
         
         
         self.btnUninstall.Bind(wx.EVT_BUTTON, self.OnUninstall)
         self.btnUninstall.Bind(wx.EVT_BUTTON, self.OnUninstall)
+        self.btnUpdate.Bind(wx.EVT_BUTTON, self.OnUpdate)
         self.btnClose.Bind(wx.EVT_BUTTON, lambda evt: self.Close())
         self.btnClose.Bind(wx.EVT_BUTTON, lambda evt: self.Close())
         
         
         self._layout()
         self._layout()
@@ -385,6 +388,7 @@ class UninstallExtensionWindow(wx.Frame):
         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
         btnSizer.Add(item = self.btnClose, proportion = 0,
         btnSizer.Add(item = self.btnClose, proportion = 0,
                      flag = wx.RIGHT, border = 5)
                      flag = wx.RIGHT, border = 5)
+        btnSizer.Add(item = self.btnUpdate, proportion = 0, flag=wx.RIGHT, border=5)
         btnSizer.Add(item = self.btnUninstall, proportion = 0)
         btnSizer.Add(item = self.btnUninstall, proportion = 0)
         
         
         sizer.Add(item = extSizer, proportion = 1,
         sizer.Add(item = extSizer, proportion = 1,
@@ -397,13 +401,20 @@ class UninstallExtensionWindow(wx.Frame):
         
         
         self.Layout()
         self.Layout()
 
 
+    def _getSelectedExtensions(self):
+        eList = self.extList.GetExtensions()
+        if not eList:
+            GMessage(_("No extension selected. "
+                       "Operation canceled."),
+                     parent = self)
+            return []
+        
+        return eList
+
     def OnUninstall(self, event):
     def OnUninstall(self, event):
         """!Uninstall selected extensions"""
         """!Uninstall selected extensions"""
-        eList = self.extList.GetExtensions()
+        eList = self._getSelectedExtensions()
         if not eList:
         if not eList:
-            GError(_("No extension selected for removal. "
-                     "Operation canceled."),
-                   parent = self)
             return
             return
         
         
         for ext in eList:
         for ext in eList:
@@ -426,6 +437,17 @@ class UninstallExtensionWindow(wx.Frame):
         globalvar.UpdateGRASSAddOnCommands(eList)
         globalvar.UpdateGRASSAddOnCommands(eList)
         toolboxesOutdated()
         toolboxesOutdated()
 
 
+    def OnUpdate(self, event):
+        """!Update selected extensions"""
+        eList = self._getSelectedExtensions()
+        if not eList:
+            return
+        
+        log = self.parent.GetLogWindow()
+        
+        for ext in eList:
+            log.RunCmd(['g.extension', 'extension=%s' % ext,
+                        'operation=add'])
         
         
 class CheckListExtension(GListCtrl):
 class CheckListExtension(GListCtrl):
     """!List of mapset/owner/group"""
     """!List of mapset/owner/group"""

+ 1 - 4
gui/wxpython/xml/toolboxes.xml

@@ -593,10 +593,7 @@
     <label>Addons extensions</label>
     <label>Addons extensions</label>
     <items>
     <items>
       <wxgui-item name="InstallExtensionFromAddons"/>
       <wxgui-item name="InstallExtensionFromAddons"/>
-      <module-item name="g.extension.rebuild.all">
-        <label>Update installed extensions</label>
-      </module-item>
-      <wxgui-item name="UninstallExtension"/>
+      <wxgui-item name="ManageExtension"/>
     </items>
     </items>
   </toolbox>
   </toolbox>
   <toolbox name="DevelopRasterMap">
   <toolbox name="DevelopRasterMap">

+ 4 - 4
gui/wxpython/xml/wxgui_items.xml

@@ -285,11 +285,11 @@
     <description>Installs new extension from GRASS AddOns SVN repository.</description>
     <description>Installs new extension from GRASS AddOns SVN repository.</description>
     <keywords>general,installation,extensions</keywords>
     <keywords>general,installation,extensions</keywords>
   </wxgui-item>
   </wxgui-item>
-  <wxgui-item name="UninstallExtension">
-    <label>Uninstall extension</label>
-    <handler>OnUninstallExtension</handler>
+  <wxgui-item name="ManageExtension">
+    <label>Manage installed extension</label>
+    <handler>OnManageExtension</handler>
     <related-module>g.extension</related-module>
     <related-module>g.extension</related-module>
-    <description>Removes installed GRASS AddOns extension.</description>
+    <description>Updates or removes installed GRASS AddOns extension(s).</description>
     <keywords>general,installation,extensions</keywords>
     <keywords>general,installation,extensions</keywords>
   </wxgui-item>
   </wxgui-item>
   <wxgui-item name="ManageRasterColorRulesInteractively">
   <wxgui-item name="ManageRasterColorRulesInteractively">