Przeglądaj źródła

add first version of translation statistics tab

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@51845 15284696-431f-4ddb-bdfa-cd5b030d7da7
Luca Delucchi 13 lat temu
rodzic
commit
75cb6c5835
1 zmienionych plików z 59 dodań i 1 usunięć
  1. 59 1
      gui/wxpython/gui_core/ghelp.py

+ 59 - 1
gui/wxpython/gui_core/ghelp.py

@@ -42,6 +42,7 @@ from core             import utils
 from lmgr.menudata    import ManagerData
 from core.gcmd        import GError, DecodeString
 from gui_core.widgets import GNotebook, StaticWrapText, ItemTree, ScrolledPanel
+from core.debug       import Debug
 
 class SearchModuleWindow(wx.Panel):
     """!Search module window (used in MenuTreeWindow)"""
@@ -497,7 +498,8 @@ class AboutWindow(wx.Frame):
                            (_("Authors"), self._pageCredit()),
                            (_("Contributors"), self._pageContributors()),
                            (_("Extra contributors"), self._pageContributors(extra = True)),
-                           (_("Translators"), self._pageTranslators())):
+                           (_("Translators"), self._pageTranslators()),
+                           (_("Translation status"), self._pageStats())):
             aboutNotebook.AddPage(page = win, text = title)
         wx.CallAfter(aboutNotebook.SetSelection, 0)
         
@@ -722,6 +724,62 @@ class AboutWindow(wx.Frame):
         translatorswin.Layout()      
         
         return translatorswin
+
+    def _pageStats(self):
+        """Translation statistics info"""
+        fname = "translation_status.json"
+        statsfile = os.path.join(os.getenv("GISBASE"), fname)
+        if os.path.exists(statsfile):
+            statsFile = open(statsfile)
+            import json
+            jsStats = json.load(statsFile)
+        else:
+            jsStats = None
+        statswin = ScrolledPanel(self)
+        statswin.SetAutoLayout(True)
+        statswin.SetupScrolling()
+        statswin.sizer = wx.BoxSizer(wx.VERTICAL)
+        if not jsStats:
+            Debug.msg(5, _("File <%s> not found") % fname)
+            statstext = wx.StaticText(statswin, id = wx.ID_ANY,
+                                           label = _('%s file missing') % fname)
+            statswin.sizer.Add(item = statstext, proportion = 1,
+                                 flag = wx.EXPAND | wx.ALL, border = 3)
+        else:
+            statsBox = wx.FlexGridSizer(cols = 4, vgap = 5, hgap = 5)
+            statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    label = _('Language')))
+            statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    label = _('Translated')))
+            statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    label = _('Fuzzy')))
+            statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    label = _('Untranslated')))
+
+            languages = jsStats['langs'].keys()
+            languages.sort()
+            for lang in languages:
+                    v = jsStats['langs'][lang]
+                    statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    style =  wx.ALIGN_CENTRE, 
+                                                    label =  lang.upper()))
+                    statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    style =  wx.ALIGN_CENTRE, 
+                                                    label = str(v['total']['good'])))
+                    statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    style =  wx.ALIGN_CENTRE,
+                                                    label = str(v['total']['fuzzy'])))
+                    statsBox.Add(item = wx.StaticText(parent = statswin, id = wx.ID_ANY,
+                                                    style =  wx.ALIGN_CENTRE,
+                                                    label = str(v['total']['bad'])))
+
+            statswin.sizer.Add(item = statsBox, proportion = 1,
+                                 flag = wx.EXPAND | wx.ALL, border = 2)    
+        
+        statswin.SetSizer(statswin.sizer)
+        statswin.Layout()      
+        
+        return statswin
     
     def OnCloseWindow(self, event):
         """!Close window"""