[ocrfeeder/langs: 4/15] Pass the new language's configuration to the OCR Engine's initialization



commit 55f844d01e1883dbe6b0a3d6ff33d2a91a1c5ac4
Author: Joaquim Rocha <jrocha igalia com>
Date:   Wed Jan 23 10:29:05 2013 +0100

    Pass the new language's configuration to the OCR Engine's initialization

 src/ocrfeeder/feeder/ocrEngines.py  |   43 +++++++++++++++++++++++++---------
 src/ocrfeeder/util/configuration.py |    5 ++++
 2 files changed, 36 insertions(+), 12 deletions(-)
---
diff --git a/src/ocrfeeder/feeder/ocrEngines.py b/src/ocrfeeder/feeder/ocrEngines.py
index dbda3b5..b475017 100644
--- a/src/ocrfeeder/feeder/ocrEngines.py
+++ b/src/ocrfeeder/feeder/ocrEngines.py
@@ -35,8 +35,8 @@ class Engine:
     def __init__(self, name, engine_path, arguments,
                  image = None, temporary_folder = '/tmp/',
                  image_format = 'PPM', failure_string = '',
-                 languages = '', favorite_language = '',
-                 language_argument = '', version = 0.0):
+                 languages = '', language_argument = '',
+                 version = 0.0):
 
         self.name = name
         self.engine_path = engine_path
@@ -53,8 +53,7 @@ class Engine:
         self.image_format = image_format
         self.failure_string = failure_string
         self.language_argument = language_argument
-        self.languages = self.unserializeLanguages(languages)
-        self.favorite_language = favorite_language
+        self.setLanguages(languages)
         self.temporary_folder = temporary_folder
         self.__color_information = None
 
@@ -75,14 +74,17 @@ class Engine:
             file_name = tempfile.mkstemp(dir = self.temporary_folder)[1]
             parsed_arguments = parsed_arguments.replace(FILE_ARGUMENT, file_name)
 
-        favorite_language = self.languages.get(self.favorite_language, '')
-        if not favorite_language:
-            values = self.languages.values()
-            if values:
-                favorite_language = values[0]
+        favorite_language = ''
+        if self.language_argument:
+            if self._favorite_language and self.languages:
+                favorite_language = self.languages.get(self._favorite_language, '')
+                if not favorite_language:
+                    values = self.languages.values()
+                    if values:
+                        favorite_language = values[0]
         parsed_arguments = parsed_arguments.replace(LANGUAGE_ARGUMENT,
-                                            '%s %s' % (self.language_argument,
-                                                       favorite_language))
+                                         '%s %s' % (self.language_argument,
+                                                    favorite_language))
 
         text = os.popen(self.engine_path + ' ' + parsed_arguments).read()
         try:
@@ -131,7 +133,6 @@ class Engine:
                        'failure_string': self.failure_string,
                        'language_argument': self.language_argument,
                        'languages': self.serializeLanguages(self.languages),
-                       'favorite_language': self.favorite_language,
                        'version': self.version}
         root = ET.Element('engine')
         for key, value in engine_info.items():
@@ -154,6 +155,24 @@ class Engine:
         return ','.join(['%s:%s' % (lang, engine_lang)
                          for lang, engine_lang in language_dict.items()])
 
+    def hasLanguages(self):
+        return self.languages and self.language_argument and \
+            self.arguments.find(LANGUAGE_ARGUMENT) != -1
+
+    def setLanguages(self, languages):
+        self._languages = self.unserializeLanguages(languages)
+
+    def getLanguages(self):
+        return self._languages
+
+    def setLanguage(self, language):
+        self._favorite_language = language
+
+    def getLanguage(self):
+        return self._favorite_language
+
+    languages = property(getLanguages, setLanguages)
+
 class OcrEnginesManager:
 
     def __init__(self, configuration_manager):
diff --git a/src/ocrfeeder/util/configuration.py b/src/ocrfeeder/util/configuration.py
index d0f658d..6c5c402 100644
--- a/src/ocrfeeder/util/configuration.py
+++ b/src/ocrfeeder/util/configuration.py
@@ -131,12 +131,17 @@ class ConfigurationManager(object):
             image_format = PREDEFINED_ENGINES[name].get('image_format', 'PPM')
             failure_string = PREDEFINED_ENGINES[name].get('failure_string', '')
             version = PREDEFINED_ENGINES[name].get('version', 0.0)
+            language_argument = PREDEFINED_ENGINES[name].get('language_argument', '')
+            languages = PREDEFINED_ENGINES[name].get('languages', '')
+            favorite_language = PREDEFINED_ENGINES[name].get('favorite_language', '')
             engine = Engine(engine_name,
                             path,
                             arguments,
                             temporary_folder = self.TEMPORARY_FOLDER,
                             image_format = image_format,
                             failure_string = failure_string,
+                            languages = languages,
+                            language_argument = language_argument,
                             version = version)
             existing_engines.append(engine)
         return existing_engines



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]