From 03f7493cc0050c0a9cef87a5767367f503573559 Mon Sep 17 00:00:00 2001
From: Dave Kuhlman <dkuhlman@davekuhlman.org>
Date: Wed, 20 Apr 2016 17:09:41 -0700
Subject: [PATCH] Fix for attributeGroup recursion.  Bump version to 2.22b.

---
 README                            |   9 ++++
 generateDS.html                   |   6 +--
 generateDS.py                     |  14 +++--
 generateDS.txt                    |   2 +-
 generateds_gui_notes.html         |  82 +++++++++++++++++++++++++++---
 generateds_gui_notes.txt          |  64 ++++++++++++++++++++++-
 gui/generateds_gui.py             |  12 ++++-
 librarytemplate_howto.html        |   6 +--
 librarytemplate_howto.txt         |   2 +-
 process_includes.py               |   2 +-
 setup.py                          |   2 +-
 tutorial/generateds_tutorial.html |   6 +--
 tutorial/generateds_tutorial.txt  |   2 +-
 tutorial/generateds_tutorial.zip  | Bin 48764 -> 48764 bytes
 14 files changed, 182 insertions(+), 27 deletions(-)

diff --git a/README b/README
index 840abf2..038a785 100644
--- a/README
+++ b/README
@@ -141,6 +141,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
+Version 2.22b (04/20/2016)
+
+- Fixed endless recursion that occurred while attempting to replace
+  attribute group names.  Thanks to Bing Wang for reporting this and
+  for identifying and providing the XML schema that reproduced it.
+- Fixed failure to clean up names containing special characters in
+  function generateBuildStandard_1.  This was error was uncovered
+  when generating code from Bing Wang's schema.  Thanks again Bing.
+
 Version 2.22a (04/11/2016)
 
 - Added support for additional command line options to
diff --git a/generateDS.html b/generateDS.html
index 84e723e..1dc3def 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22b</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">April 20, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -3171,7 +3171,7 @@ following among others:</p>
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateDS.txt">View document source</a>.
-Generated on: 2016-04-11 21:52 UTC.
+Generated on: 2016-04-21 00:07 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateDS.py b/generateDS.py
index 89166d0..2be33c2 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -202,7 +202,7 @@ logging.disable(logging.INFO)
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.22a'
+VERSION = '2.22b'
 ##VERSION##
 
 if sys.version_info.major == 2:
@@ -1235,6 +1235,11 @@ class XschemaElement(XschemaElementBase):
         if key is not None:
             attrGroup = AttributeGroups[key]
             for name in attrGroup.getKeys():
+                if name == groupName:
+                    err_msg('*** Error.  Element {} attributeGroup {} '
+                            'has endless recursion\n'.format(
+                                self.getName(), groupName))
+                    return
                 if (name in AttributeGroups or
                         strip_namespace(name) in AttributeGroups):
                     self.replace_attributeGroup_names_1(name)
@@ -1243,8 +1248,9 @@ class XschemaElement(XschemaElementBase):
                     self.attributeDefs[name] = attr
                     self.attributeDefsList.append(name)
         else:
-            err_msg('*** Error. attributeGroup %s not defined.\n' % (
-                groupName, ))
+            err_msg('*** Error. Element %s attributeGroup %s '
+                    'not defined.\n' % (
+                        self.getName(), groupName, ))
 
     def __str__(self):
         s1 = '<XschemaElement name: "%s" type: "%s">' % \
@@ -3748,6 +3754,7 @@ def generateBuildStandard_1(
                 name = mapName(name)
             else:
                 name = mappedName
+            name = cleanupName(name)
             s1 = "            self.%s.append(obj_)\n" % (name, )
         else:
             substitutionGroup = child.getAttrs().get('substitutionGroup')
@@ -3756,6 +3763,7 @@ def generateBuildStandard_1(
                 name = mapName(name)
             else:
                 name = mapName(headName)
+            name = cleanupName(name)
             s1 = "            self.%s = obj_\n" % (name, )
         wrt(s1)
         wrt("            obj_.original_tagname_ = '%s'\n" % (origName, ))
diff --git a/generateDS.txt b/generateDS.txt
index 8f1bf29..e3f097e 100644
--- a/generateDS.txt
+++ b/generateDS.txt
@@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema
 
 .. version
 
-:revision: 2.22a
+:revision: 2.22b
 
 .. version
 
diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html
index bc3f7d2..2b70089 100644
--- a/generateds_gui_notes.html
+++ b/generateds_gui_notes.html
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22b</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">April 20, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -246,15 +246,33 @@ front end to generateDS.py.</td>
 </tr>
 </tbody>
 </table>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="auto-toc simple">
+<li><a class="reference internal" href="#introduction" id="id1">1&nbsp;&nbsp;&nbsp;Introduction</a></li>
+<li><a class="reference internal" href="#requirements" id="id2">2&nbsp;&nbsp;&nbsp;Requirements</a></li>
+<li><a class="reference internal" href="#usage-notes" id="id3">3&nbsp;&nbsp;&nbsp;Usage notes</a><ul class="auto-toc">
+<li><a class="reference internal" href="#what-it-does" id="id4">3.1&nbsp;&nbsp;&nbsp;What it does</a></li>
+<li><a class="reference internal" href="#how-to-use-it" id="id5">3.2&nbsp;&nbsp;&nbsp;How to use it</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#internationalization" id="id6">4&nbsp;&nbsp;&nbsp;Internationalization</a><ul class="auto-toc">
+<li><a class="reference internal" href="#preparation" id="id7">4.1&nbsp;&nbsp;&nbsp;Preparation</a></li>
+<li><a class="reference internal" href="#installation-and-setup" id="id8">4.2&nbsp;&nbsp;&nbsp;Installation and setup</a></li>
+<li><a class="reference internal" href="#additional-information" id="id9">4.3&nbsp;&nbsp;&nbsp;Additional information</a></li>
+</ul>
+</li>
+</ul>
+</div>
 <div class="section" id="introduction">
-<h1>Introduction</h1>
+<h1><a class="toc-backref" href="#id1">1&nbsp;&nbsp;&nbsp;Introduction</a></h1>
 <p><tt class="docutils literal">generateds_gui.py</tt> provides a graphical front end for
 <tt class="docutils literal">generateDS.py</tt>.  Some may find it easier to configure and to
 select and set options for <tt class="docutils literal">generateDS.py</tt> using this graphical
 application.</p>
 </div>
 <div class="section" id="requirements">
-<h1>Requirements</h1>
+<h1><a class="toc-backref" href="#id2">2&nbsp;&nbsp;&nbsp;Requirements</a></h1>
 <p>You will need Gtk support for Python in order to run
 <tt class="docutils literal">generateds_gui.py</tt>.</p>
 <p>You must run <tt class="docutils literal">generateds_gui.py</tt> under Python 3.  Python 2 is not
@@ -264,9 +282,9 @@ supported.</p>
 installed.</p>
 </div>
 <div class="section" id="usage-notes">
-<h1>Usage notes</h1>
+<h1><a class="toc-backref" href="#id3">3&nbsp;&nbsp;&nbsp;Usage notes</a></h1>
 <div class="section" id="what-it-does">
-<h2>What it does</h2>
+<h2><a class="toc-backref" href="#id4">3.1&nbsp;&nbsp;&nbsp;What it does</a></h2>
 <p>Here are some of the different ways that you can use
 <tt class="docutils literal">generateds_gui.py</tt>:</p>
 <ol class="arabic simple">
@@ -286,7 +304,7 @@ or to generate a command line.</li>
 </ol>
 </div>
 <div class="section" id="how-to-use-it">
-<h2>How to use it</h2>
+<h2><a class="toc-backref" href="#id5">3.2&nbsp;&nbsp;&nbsp;How to use it</a></h2>
 <p>You can get some help by running the following:</p>
 <pre class="literal-block">
 $ ./generateds_gui.py --help
@@ -328,6 +346,54 @@ you run <tt class="docutils literal">generateds_gui.py</tt>, use this option.  A
 once <tt class="docutils literal">generateds_gui.py</tt> has been started, you can use the
 &quot;Load session&quot; item under the &quot;File&quot; menu.</dd>
 </dl>
+</div>
+</div>
+<div class="section" id="internationalization">
+<h1><a class="toc-backref" href="#id6">4&nbsp;&nbsp;&nbsp;Internationalization</a></h1>
+<p><em>Note:</em> This work on internationalization for generateds_gui is
+experimental and does not yet work.</p>
+<div class="section" id="preparation">
+<h2><a class="toc-backref" href="#id7">4.1&nbsp;&nbsp;&nbsp;Preparation</a></h2>
+<p>Here is what I've done:</p>
+<pre class="literal-block">
+$ cd generateds/gui/
+$ mkdir po
+# Create the template file.
+$ xgettext -k_ -kN_ -o po/generateds_gui.pot generateds_gui.glade
+# Create a file for the translator.  This one is for the Russian language.
+$ msginit --locale=ru --input=generateds_gui.pot
+</pre>
+<p>And, after someone has added their translations (for example, to
+<tt class="docutils literal">ru.po</tt>), we translate it to binary with the following command:</p>
+<pre class="literal-block">
+$ msgfmt -o generateds_gui.mo ru.po
+</pre>
+<p>Finally, move the binary file to the appropriate directory under the
+directory containing the executable (<tt class="docutils literal">generateds_gui.py</tt>).  See
+<a class="reference internal" href="#installation-and-setup">Installation and setup</a>.</p>
+</div>
+<div class="section" id="installation-and-setup">
+<h2><a class="toc-backref" href="#id8">4.2&nbsp;&nbsp;&nbsp;Installation and setup</a></h2>
+<p>Now we have to move the <tt class="docutils literal">.mo</tt> file where it will be used when we
+run <tt class="docutils literal">generateds_gui.py</tt>.  We place it in a sub-directory under the
+location of <tt class="docutils literal">generateds_gui.py</tt> itself.</p>
+<pre class="literal-block">
+$ cd /directory/containing/generateds_gui.py
+$ mkdir locale
+$ mkdir locale/ru
+$ mkdir locale/ru/LC_MESSAGES
+$ mv generateds_gui.mo locale/ru/LC_MESSAGES/
+</pre>
+</div>
+<div class="section" id="additional-information">
+<h2><a class="toc-backref" href="#id9">4.3&nbsp;&nbsp;&nbsp;Additional information</a></h2>
+<p>Here are some helpful references:</p>
+<ul class="simple">
+<li><a class="reference external" href="https://en.wikipedia.org/wiki/Gettext">https://en.wikipedia.org/wiki/Gettext</a></li>
+<li><a class="reference external" href="http://faq.pygtk.org/index.py?req=show&amp;file=faq22.002.htp">http://faq.pygtk.org/index.py?req=show&amp;file=faq22.002.htp</a></li>
+<li><a class="reference external" href="http://www.servin.com/linux/GladeInternationalization.html">http://www.servin.com/linux/GladeInternationalization.html</a></li>
+<li><a class="reference external" href="http://www.learningpython.com/2006/12/03/translating-your-pythonpygtk-application/">http://www.learningpython.com/2006/12/03/translating-your-pythonpygtk-application/</a></li>
+</ul>
 <!-- vim:ft=rst: -->
 </div>
 </div>
@@ -335,7 +401,7 @@ once <tt class="docutils literal">generateds_gui.py</tt> has been started, you c
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_gui_notes.txt">View document source</a>.
-Generated on: 2016-04-11 21:52 UTC.
+Generated on: 2016-04-21 00:07 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateds_gui_notes.txt b/generateds_gui_notes.txt
index 6c816b9..656a1db 100644
--- a/generateds_gui_notes.txt
+++ b/generateds_gui_notes.txt
@@ -12,7 +12,7 @@ GenerateDS GUI Notes
 
 .. version
 
-:revision: 2.22a
+:revision: 2.22b
 
 .. version
 
@@ -28,6 +28,12 @@ GenerateDS GUI Notes
 :abstract: This document describes generateds_ui.py, the graphical
     front end to generateDS.py.
 
+.. sectnum::    :depth: 4
+
+.. contents::
+    :depth: 4
+
+
 Introduction
 ==============
 
@@ -123,4 +129,60 @@ s, session
     once ``generateds_gui.py`` has been started, you can use the
     "Load session" item under the "File" menu.
 
+
+Internationalization
+======================
+
+*Note:* This work on internationalization for generateds_gui is
+experimental and does not yet work.
+
+Preparation
+-------------
+
+Here is what I've done::
+
+    $ cd generateds/gui/
+    $ mkdir po
+    # Create the template file.
+    $ xgettext -k_ -kN_ -o po/generateds_gui.pot generateds_gui.glade 
+    # Create a file for the translator.  This one is for the Russian language.
+    $ msginit --locale=ru --input=generateds_gui.pot 
+
+And, after someone has added their translations (for example, to
+``ru.po``), we translate it to binary with the following command::
+
+    $ msgfmt -o generateds_gui.mo ru.po
+
+Finally, move the binary file to the appropriate directory under the
+directory containing the executable (``generateds_gui.py``).  See
+`Installation and setup`_.
+
+
+Installation and setup
+------------------------
+
+Now we have to move the ``.mo`` file where it will be used when we
+run ``generateds_gui.py``.  We place it in a sub-directory under the
+location of ``generateds_gui.py`` itself.
+
+::
+
+    $ cd /directory/containing/generateds_gui.py
+    $ mkdir locale
+    $ mkdir locale/ru
+    $ mkdir locale/ru/LC_MESSAGES
+    $ mv generateds_gui.mo locale/ru/LC_MESSAGES/
+
+
+Additional information
+------------------------
+
+Here are some helpful references:
+
+- https://en.wikipedia.org/wiki/Gettext
+- http://faq.pygtk.org/index.py?req=show&file=faq22.002.htp
+- http://www.servin.com/linux/GladeInternationalization.html
+- http://www.learningpython.com/2006/12/03/translating-your-pythonpygtk-application/
+
+
 .. vim:ft=rst:
diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py
index 1c95814..da981e9 100755
--- a/gui/generateds_gui.py
+++ b/gui/generateds_gui.py
@@ -6,6 +6,8 @@ from configparser import ConfigParser
 from xml.parsers import expat
 import subprocess
 import re
+import locale
+import gettext
 
 
 if sys.version_info.major == 2:
@@ -39,7 +41,7 @@ from libgenerateDS.gui import generateds_gui_session
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.22a'
+VERSION = '2.22b'
 ##VERSION##
 
 
@@ -156,6 +158,7 @@ class GeneratedsGui(object):
         global Builder
         # Default values
         Builder = gtk.Builder()
+        Builder.set_translation_domain('generateds_gui')
         self.options = options
         # self.ui_spec_filename = ui_spec_filename
         self.filename = None
@@ -1060,6 +1063,13 @@ def main():
     capture_ui_names()
     if len(args) > 0:
         usage(parser)
+    # Set up for internationalization.
+    app_name = 'generateds_gui'
+    dir_name = 'locale'
+    locale.setlocale(locale.LC_ALL, '')
+    gettext.bindtextdomain(app_name, dir_name)
+    gettext.textdomain(app_name)
+    # Start the app.
     editor = GeneratedsGui(options)
     editor.main()
 
diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html
index 43756f5..303c083 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -217,7 +217,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22b</td>
 </tr>
 </tbody>
 </table>
@@ -226,7 +226,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">April 20, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -380,7 +380,7 @@ this command for your needs.  For example, you may need to use
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="librarytemplate_howto.txt">View document source</a>.
-Generated on: 2016-04-11 21:52 UTC.
+Generated on: 2016-04-21 00:07 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt
index a8e9992..f508d04 100644
--- a/librarytemplate_howto.txt
+++ b/librarytemplate_howto.txt
@@ -8,7 +8,7 @@ How to package a generateDS.py generated library
 
 .. version
 
-:revision: 2.22a
+:revision: 2.22b
 
 .. version
 
diff --git a/process_includes.py b/process_includes.py
index e60f2ec..e9516b6 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -40,7 +40,7 @@ except ImportError:
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.22a'
+VERSION = '2.22b'
 ##VERSION##
 
 CatalogDict = {}
diff --git a/setup.py b/setup.py
index 1c45b73..4468b67 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ setup(name="generateDS",
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-    version="2.22a",
+    version="2.22b",
 ##VERSION##
     author="Dave Kuhlman",
     author_email="dkuhlman@davekuhlman.org",
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index 91dea5b..f0388da 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -219,7 +219,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22b</td>
 </tr>
 </tbody>
 </table>
@@ -228,7 +228,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">April 20, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_tutorial.txt">View document source</a>.
-Generated on: 2016-04-11 21:52 UTC.
+Generated on: 2016-04-21 00:07 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt
index c6e47be..284cd93 100644
--- a/tutorial/generateds_tutorial.txt
+++ b/tutorial/generateds_tutorial.txt
@@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial
 
 .. version
 
-:revision: 2.22a
+:revision: 2.22b
 
 .. version
 
diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip
index aef0372624e79e054389a38a3a5e636e1025d8ef..c4d2106650554582769f23f527c2ac60244d8ce8 100644
GIT binary patch
delta 9778
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
MlYqPxvmm-$1T^NKq5uE@

delta 9778
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
MlYqPxvmm-$1hQFgZ~y=R

-- 
GitLab