Skip to content

Commit

Permalink
Processing translation tool for names and groups
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaud-morvan committed Jul 17, 2015
1 parent cc1a34f commit c7b3841
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 10 deletions.
20 changes: 16 additions & 4 deletions python/plugins/processing/gui/AlgorithmClassification.py
Expand Up @@ -26,6 +26,7 @@
__revision__ = '$Format:%H$'

import os
from PyQt4.QtCore import QCoreApplication

displayNames = {}
classification = {}
Expand All @@ -45,7 +46,7 @@ def loadClassification():
raise Exception(line)
line = lines.readline().strip('\n')
lines.close()

def loadDisplayNames():
global displayNames
if not os.path.isfile(displayNamesFile()):
Expand All @@ -67,12 +68,23 @@ def classificationFile():
def displayNamesFile():
return os.path.join(os.path.dirname(__file__), 'algnames.txt')

def getClassification(alg):
def getClassificationEn(alg):
if alg.commandLineName().lower() in classification:
group, subgroup = classification[alg.commandLineName()]
return group, subgroup
else:
return None, None


def getClassification(alg):
group, subgroup = getClassificationEn(alg)
return (QCoreApplication.translate('AlgorithmClassification', group),
QCoreApplication.translate('AlgorithmClassification', subgroup))

def getDisplayNameEn(alg):
return displayNames.get(alg.commandLineName().lower(), alg.name)

def getDisplayName(alg):
return displayNames.get(alg.commandLineName().lower(), alg.name)
return QCoreApplication.translate(alg.__class__.__name__, getDisplayNameEn(alg))

def getDisplayGroup(group):
return QCoreApplication.translate('AlgorithmClassification', group)
5 changes: 3 additions & 2 deletions python/plugins/processing/gui/ProcessingToolbox.py
Expand Up @@ -388,8 +388,9 @@ def populate(self):
groupItem = groups[alg.group]
else:
groupItem = QTreeWidgetItem()
groupItem.setText(0, alg.group)
groupItem.setToolTip(0, alg.group)
name = AlgorithmClassification.getDisplayGroup(alg.group)
groupItem.setText(0, name)
groupItem.setToolTip(0, name)
groups[alg.group] = groupItem
algItem = TreeAlgorithmItem(alg)
groupItem.addChild(algItem)
Expand Down
10 changes: 6 additions & 4 deletions python/plugins/processing/modeler/ModelerDialog.py
Expand Up @@ -526,8 +526,9 @@ def fillAlgorithmTreeUsingCategories(self):
groupItem = groups[alg.group]
else:
groupItem = QTreeWidgetItem()
groupItem.setText(0, alg.group)
groupItem.setToolTip(0, alg.group)
name = AlgorithmClassification.getDisplayGroup(alg.group)
groupItem.setText(0, name)
groupItem.setToolTip(0, name)
groups[alg.group] = groupItem
algItem = TreeAlgorithmItem(alg)
groupItem.addChild(algItem)
Expand Down Expand Up @@ -565,8 +566,9 @@ def fillAlgorithmTreeUsingProviders(self):
groupItem = groups[alg.group]
else:
groupItem = QTreeWidgetItem()
groupItem.setText(0, alg.group)
groupItem.setToolTip(0, alg.group)
name = AlgorithmClassification.getDisplayGroup(alg.group)
groupItem.setText(0, name)
groupItem.setToolTip(0, name)
groups[alg.group] = groupItem
algItem = TreeAlgorithmItem(alg)
groupItem.addChild(algItem)
Expand Down
83 changes: 83 additions & 0 deletions python/plugins/processing/tools/translation.py
@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-

"""
***************************************************************************
classification.py
---------------------
Date : July 2015
Copyright : (C) 2015 by Arnaud Morvan
Email : arnaud dot morvan at camptocamp dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""

__author__ = 'Arnaud Morvan'
__date__ = 'July 2015'
__copyright__ = '(C) 2015, Arnaud Morvan'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

import os
from processing.core.Processing import Processing
from processing.gui.AlgorithmClassification import (
loadClassification, loadDisplayNames, getClassificationEn, getDisplayNameEn)


def updateTranslations():
"""Update processing.algs.translations module.
Need QGIS python API on python path, can be run from QGIS console. Example:
from processing.tools.translation import updateTranslations
updateTranslations()
"""

loadClassification()
loadDisplayNames()

f = open(os.path.join(os.path.dirname(__file__), '../algs/translations.py'), 'w')
f.write('''# -*- coding: utf-8 -*-
"""
Don't edit this file manually.
Update it from QGIS console:
from processing.tools.translation import updateTranslations
updateTranslations()
"""
from PyQt4.QtCore import QCoreApplication
def translationShadow():
''')
groups = {}
for provider in Processing.providers:
f.write('''
"""{}"""
'''.format(provider.__class__.__name__))
for alg in provider.algs:
display_name = getDisplayNameEn(alg)
f.write(" QCoreApplication.translate(\"{}\", \"{}\")\n"
.format(alg.__class__.__name__,
display_name.replace('"', '\\"')))
if not alg.group in groups:
groups[alg.group] = 'AlgorithmClassification'
group, subgroup = getClassificationEn(alg)
if group is not None and not group in groups:
groups[group] = 'AlgorithmClassification'
if subgroup is not None and not subgroup in groups:
groups[subgroup] = 'AlgorithmClassification'

f.write('''
"""Groups and subgroups"""
''')
for group, context in groups.iteritems():
f.write(" QCoreApplication.translate(\"{}\", \"{}\")\n"
.format(context,
group.replace('"', '\\"')))

0 comments on commit c7b3841

Please sign in to comment.