diff -pruN 0.2.8-1.1/ChangeLog 0.2.9-0ubuntu2/ChangeLog
--- 0.2.8-1.1/ChangeLog	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ChangeLog	2008-05-10 09:23:29.000000000 +0100
@@ -1,3 +1,30 @@
+2008-05-10 10:19  marcusva
+
+	* doc/examples/graph2d.py: Really fixed numpy/Numeric bindings
+
+2008-05-10 10:03  marcusva
+
+	* NEWS, README, setup.py, doc/examples/a11y_test.py,
+	  doc/examples/graph2d.py, ocempgui/access/papi/papi.c,
+	  ocempgui/access/papi/papi_atkutil.c, ocempgui/draw/Complex.py:
+	  Added numpy compatibility for pygame 1.8.x.
+
+2008-02-05 23:33  marcusva
+
+	* setup.py, ocempgui/__init__.py, ocempgui/widgets/Editable.py,
+	  ocempgui/widgets/Frame.py: Merged forgotton changes from HEAD.
+
+2008-01-12 11:48  marcusva
+
+	* NEWS, doc/uml/alignment.dia, ocempgui/widgets/Alignment.py,
+	  ocempgui/widgets/Renderer.py: Merged from HEAD: Fixed a focusing
+	  bug in Alignment class. It should not be focusable by default.
+	  Added reversed widget focus switching using SHIFT+TAB.
+
+2008-01-10 09:44  marcusva
+
+	* ChangeLog, NEWS, doc/Makefile: Release 0.2.8
+
 2008-01-10 00:58  marcusva
 
 	* doc/examples/: example.py, formatentry.py: Fixed FormatEntry
diff -pruN 0.2.8-1.1/debian/changelog 0.2.9-0ubuntu2/debian/changelog
--- 0.2.8-1.1/debian/changelog	2010-12-08 18:28:32.000000000 +0000
+++ 0.2.9-0ubuntu2/debian/changelog	2010-12-08 18:05:57.000000000 +0000
@@ -1,10 +1,29 @@
-ocempgui (0.2.8-1.1) unstable; urgency=low
+ocempgui (0.2.9-0ubuntu2) natty; urgency=low
 
-  * Non-maintainer upload.
-  * debian/rules: pass --prefix=/usr option to setup.py to install files
-    in correct locations (Closes: #571501).
+  * Rebuild with python 2.7 as the python default.
 
- -- Luca Falavigna <dktrkranz@debian.org>  Sun, 07 Mar 2010 14:47:17 +0100
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 08 Dec 2010 15:06:49 +0000
+
+ocempgui (0.2.9-0ubuntu1) karmic; urgency=low
+
+  * New upstream release (LP: #327476)
+  * debian/control: Depends on python-pygame (LP: #299037)
+
+ -- Julien Lavergne <julien.lavergne@gmail.com>  Tue, 14 Jul 2009 14:20:34 +0200
+
+ocempgui (0.2.8-1ubuntu2) jaunty; urgency=low
+
+  * No-change rebuild to fix lpia shared library dependencies.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sun, 22 Mar 2009 16:49:34 +0100
+
+ocempgui (0.2.8-1ubuntu1) jaunty; urgency=low
+
+  * debian/rules:
+    - Include /usr/share/python/python.mk.
+    - Use py_setup_install_args macro to build with Python 2.6.
+
+ -- Alessio Treglia <quadrispro@ubuntu.com>  Mon, 16 Mar 2009 09:55:15 +0000
 
 ocempgui (0.2.8-1) unstable; urgency=low
 
diff -pruN 0.2.8-1.1/debian/control 0.2.9-0ubuntu2/debian/control
--- 0.2.8-1.1/debian/control	2010-12-08 18:28:32.000000000 +0000
+++ 0.2.9-0ubuntu2/debian/control	2010-12-08 18:05:57.000000000 +0000
@@ -2,14 +2,15 @@ Source: ocempgui
 Section: python
 XS-Python-Version: current
 Priority: extra
-Maintainer: Lior Kaplan <kaplan@debian.org>
+Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
+XSBC-Original-Maintainer: Lior Kaplan <kaplan@debian.org>
 Build-Depends: debhelper (>= 5), python-dev, python-central (>= 0.5), pkg-config, python-pygame, libatk1.0-dev
 Standards-Version: 3.7.3
 Homepage: http://ocemp.sourceforge.net/
 
 Package: python-ocempgui
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, at-spi
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, at-spi, python-pygame
 Provides: ${python:Provides}
 Suggests: ocempgui-doc
 XB-Python-Version: ${python:Versions}
diff -pruN 0.2.8-1.1/debian/rules 0.2.9-0ubuntu2/debian/rules
--- 0.2.8-1.1/debian/rules	2010-12-08 18:28:32.000000000 +0000
+++ 0.2.9-0ubuntu2/debian/rules	2010-12-08 18:05:57.000000000 +0000
@@ -9,7 +9,7 @@
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
 
-
+include /usr/share/python/python.mk
 
 
 CFLAGS = -Wall -g
@@ -55,7 +55,7 @@ install: build
 	dh_installdirs
 
 	# Add here commands to install the package into debian/python-ocempgui.
-	python setup.py install --root=$(CURDIR)/debian/tmp --prefix=/usr
+	python setup.py install --root=$(CURDIR)/debian/tmp $(py_setup_install_args)
 
 
 # Build architecture-independent files here.
diff -pruN 0.2.8-1.1/doc/examples/a11y_test.py 0.2.9-0ubuntu2/doc/examples/a11y_test.py
--- 0.2.8-1.1/doc/examples/a11y_test.py	2010-12-08 18:28:32.000000000 +0000
+++ 0.2.9-0ubuntu2/doc/examples/a11y_test.py	2010-12-08 18:05:57.000000000 +0000
@@ -29,9 +29,13 @@ class SimpleA11y (papi.AtkObject):
         self.action_get_description = self.__get_description
         self.action_get_name = self.__get_name
         self.component_get_extents = self.__get_pos
+        self.ref_state_set = self.__ref_state_set
 
     def __get_pos (self, coords):
         return 10, 10, 99, 99
+
+    def __ref_state_set (self):
+        return papi.AtkStateSet ()
     
     def __get_n_actions (self):
         return 1
diff -pruN 0.2.8-1.1/doc/examples/graph2d.py 0.2.9-0ubuntu2/doc/examples/graph2d.py
--- 0.2.8-1.1/doc/examples/graph2d.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/doc/examples/graph2d.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,7 +1,16 @@
 # Graph2D examples.
+import sys, math
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
-import Numeric, math
+try:
+    import Numeric
+except ImportError:
+    Numeric = None
+    try:
+        import numpy
+    except ImportError:
+        print "Numeric or numpy could not be found"
+        sys.exit (-1)
 
 __function = "func_1"
 
@@ -36,8 +45,10 @@ def create_graph2d_view ():
 
     # The evaluation function and data to use.
     graph.eval_func = lambda x: x**4.0 - 3 * x**2.0 + 2 * x
-    graph.data = Numeric.arrayrange (-10, 10, .001).tolist()
-
+    if Numeric:
+        graph.data = Numeric.arrayrange (-10, 10, .001).tolist()
+    else:
+        graph.data = numpy.arange (-10, 10, .001).tolist()
     # Done, unlock.
     graph.unlock ()
 
diff -pruN 0.2.8-1.1/doc/manual.html 0.2.9-0ubuntu2/doc/manual.html
--- 0.2.8-1.1/doc/manual.html	2008-01-10 08:39:59.000000000 +0000
+++ 0.2.9-0ubuntu2/doc/manual.html	2008-05-10 09:23:45.000000000 +0100
@@ -204,7 +204,7 @@ class A11yObject (IAccessible):
         </p><p><span class="emphasis"><em>TODO: provide more details</em></span></p><div class="example"><a name="ex_a11y_papi"></a><div class="example-contents"><p>
             You can find the following example as a python script
             under <code class="filename">examples/a11y_test.py</code>.
-          </p><a class="indexterm" name="id11536536"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># papi test example.
+          </p><a class="indexterm" name="id2537214"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># papi test example.
 import ocempgui.access.papi as papi
 import atexit
 
@@ -235,9 +235,13 @@ class SimpleA11y (papi.AtkObject):
         self.action_get_description = self.__get_description
         self.action_get_name = self.__get_name
         self.component_get_extents = self.__get_pos
+        self.ref_state_set = self.__ref_state_set
 
     def __get_pos (self, coords):
         return 10, 10, 99, 99
+
+    def __ref_state_set (self):
+        return papi.AtkStateSet ()
     
     def __get_n_actions (self):
         return 1
@@ -414,7 +418,7 @@ magnifier.zoom_func = own_zoom_func
             </p><div class="example"><a name="ex_Draw.draw_line"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/draw_line.py</code>.
-              </p><a class="indexterm" name="id11581722"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Draw.draw_line () usage example.
+              </p><a class="indexterm" name="id2537686"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Draw.draw_line () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Draw
 
@@ -460,7 +464,7 @@ while not pygame.event.get ([pygame.loca
             </p><div class="example"><a name="ex_Draw.draw_rect"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/draw_rect.py</code>.
-              </p><a class="indexterm" name="id11581784"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Draw.draw_rect () usage example.
+              </p><a class="indexterm" name="id2586832"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Draw.draw_rect () usage example.
 import random
 import pygame, pygame.locals
 from ocempgui.draw import Draw
@@ -508,7 +512,7 @@ while not pygame.event.get ([pygame.loca
             </p><div class="example"><a name="ex_Draw.draw_triangle"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/draw_triangle.py</code>.
-              </p><a class="indexterm" name="id11581851"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Draw.draw_triangle () usage example.
+              </p><a class="indexterm" name="id2586899"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Draw.draw_triangle () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Draw
 
@@ -562,7 +566,7 @@ while not pygame.event.get ([pygame.loca
             </p><div class="example"><a name="ex_Image"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/load_image.py</code>.
-              </p><a class="indexterm" name="id11581940"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Image.load_image () usage example.
+              </p><a class="indexterm" name="id2586987"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Image.load_image () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Image
 
@@ -611,7 +615,7 @@ while not pygame.event.get ([pygame.loca
               </p></div><div class="example"><a name="ex_String.create_font"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/create_font.py</code>.
-              </p><a class="indexterm" name="id11582107"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.create_font () usage example.
+              </p><a class="indexterm" name="id2587086"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.create_font () usage example.
 import pygame
 from ocempgui.draw import String
 
@@ -666,7 +670,7 @@ check (font_mod, "font_mod")
               </p></div><div class="example"><a name="ex_String.create_system_font"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/create_system_font.py</code>.
-              </p><a class="indexterm" name="id11582205"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.create_system_font () usage example.
+              </p><a class="indexterm" name="id2587185"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.create_system_font () usage example.
 import pygame
 from ocempgui.draw import String
 
@@ -705,7 +709,7 @@ for name in fonts:
               </p></div><div class="example"><a name="ex_String.draw_string"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/draw_string.py</code>.
-              </p><a class="indexterm" name="id11582289"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.draw_string () usage example.
+              </p><a class="indexterm" name="id2587268"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.draw_string () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import String
 
@@ -764,7 +768,7 @@ while not pygame.event.get ([pygame.loca
             </p><div class="example"><a name="ex_String.draw_string_with_bg"></a><div class="example-contents"><p>
                 You can find the following example as a python script
                 under <code class="filename">examples/draw_string_with_bg.py</code>.
-              </p><a class="indexterm" name="id11582412"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.draw_string_with_bg () usage example.
+              </p><a class="indexterm" name="id2587392"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># String.draw_string_with_bg () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import String
 
@@ -812,7 +816,7 @@ surface.step = 5
       </p><div class="example"><a name="ex_complex_fadersurface"></a><div class="example-contents"><p>
           You can find the following example as a python script
           under <code class="filename">examples/fader_surface.py</code>.
-        </p><a class="indexterm" name="id11582552"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Complex.FaderSurface usage example.
+        </p><a class="indexterm" name="id2587531"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Complex.FaderSurface usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Complex, Image
 
@@ -938,7 +942,7 @@ class ObserverObject (IObserver):
         The following example is a complete example based on the
         excerpts from above. You can find it as python script under
         <code class="filename">examples/observer.py</code>
-      </p><a class="indexterm" name="id11534658"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Subject/Observer usage example.
+      </p><a class="indexterm" name="id2536701"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Subject/Observer usage example.
 from ocempgui.events import Subject, IObserver
 
 # The subject that should notify observers about state changes.
@@ -1069,7 +1073,7 @@ class OwnObject (INotifyable):
         The <em class="parameter"><code>event</code></em> argument of the method will be
         an <code class="classname">Event</code> object, which can be used to
         perform certain actions within the method body then:
-      </p><div class="example"><a name="ex_event_object_notify"></a><div class="example-contents"><a class="indexterm" name="id11583222"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_event_object_notify"></a><div class="example-contents"><a class="indexterm" name="id2588133"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 class OwnObject (INotifyable):
     ...
     def move (self, coords):
@@ -1105,7 +1109,7 @@ class OwnObject (INotifyable):
           We use the <code class="classname">OwnObject</code> class of the
           previous example and will (un)register it for the signals
           <span class="emphasis"><em>"move"</em></span> and <span class="emphasis"><em>"clicked"</em></span>.
-        </p><a class="indexterm" name="id11583294"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+        </p><a class="indexterm" name="id2588205"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 # Create an EventManager and OwnObject instance.
 manager = EventManager ()
 myobj = OwnObject ()
@@ -1138,7 +1142,7 @@ manager.remove_object (myobj)
         have no limitations of type, length or whatsoever. It is up to
         you to to send correct information through the event management
         system and to check for correct information on the object side.
-      </p><div class="example"><a name="ex_event_emit"></a><div class="example-contents"><a class="indexterm" name="id11583360"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_event_emit"></a><div class="example-contents"><a class="indexterm" name="id2588270"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 # Send events to the registered objects via the emit() method.
 manager.emit ("clicked", None)
 manager.emit ("move", (10, 10))
@@ -1148,7 +1152,7 @@ manager.emit ("move", (10, 10))
           The following example is a complete example based on the
           excerpts from above. You can find it as python script under
           <code class="filename">examples/eventmanager.py</code>
-        </p><a class="indexterm" name="id11583398"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># EventManager usage example.
+        </p><a class="indexterm" name="id2588309"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># EventManager usage example.
 from ocempgui.events import EventManager, INotifyable
 
 # Create a new event capable object. This can be acquired by adding a
@@ -1243,7 +1247,7 @@ manager.emit ("move", (40, 40))
         the newly created one inherit from the
         <code class="classname">BaseObject</code> class. Afterwards you can
         unleash its full power by adding just a minimal set of code.
-      </p><div class="example"><a name="ex_object_inherit"></a><div class="example-contents"><a class="indexterm" name="id11583694"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_object_inherit"></a><div class="example-contents"><a class="indexterm" name="id2588605"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 from ocempgui.object import BaseObject
 
 class OwnObject (BaseObject):
@@ -1265,7 +1269,7 @@ class OwnObject (BaseObject):
         for the callbacks as values. To allow your object to listen to
         the 'ping' or 'pong' signal, you have to add those to this
         dictionary.
-      </p><div class="example"><a name="ex_object_signals"></a><div class="example-contents"><a class="indexterm" name="id11583732"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_object_signals"></a><div class="example-contents"><a class="indexterm" name="id2588643"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 from ocempgui.object import BaseObject
 
 class OwnObject (BaseObject):
@@ -1283,7 +1287,7 @@ class OwnObject (BaseObject):
         Now we just need to make the <code class="methodname">notify()</code>
         aware of those signal types and let it invoke the appropriate
         callbacks, which will be connected to those signals.
-      </p><div class="example"><a name="ex_object_notify"></a><div class="example-contents"><a class="indexterm" name="id11583766"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_object_notify"></a><div class="example-contents"><a class="indexterm" name="id2588677"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 class OwnObject (BaseObject):
     ...
     def notify (self, event):
@@ -1305,7 +1309,7 @@ class OwnObject (BaseObject):
         data right after the signal and callback. If the callbacks is
         not needed anymore, it can be disconnected using the
         <code class="methodname">disconnect_signal() </code> method.
-      </p><div class="example"><a name="ex_object_callbacks"></a><div class="example-contents"><a class="indexterm" name="id11583805"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_object_callbacks"></a><div class="example-contents"><a class="indexterm" name="id2588716"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 class OwnObject (BaseObject):
     ...
 
@@ -1322,7 +1326,7 @@ my_obj.disconnect_signal (ev_callback2)
         any signal of your <code class="classname">BaseObject</code> inheritor
         manually. When you connect it to an event manager, it will
         automatically do that for you.
-      </p><div class="example"><a name="ex_object_eventmanager"></a><div class="example-contents"><a class="indexterm" name="id11583970"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_object_eventmanager"></a><div class="example-contents"><a class="indexterm" name="id2588881"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 class OwnObject (BaseObject):
     ...
 
@@ -1345,7 +1349,7 @@ my_obj.manager = manager
         following one is slightly modified only). You can find the
         example as python script under
         <code class="filename">examples/baseobject.py</code>
-      </p><div class="example"><a name="ex_object_baseobject"></a><div class="example-contents"><a class="indexterm" name="id11584011"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># BaseObject usage example.
+      </p><div class="example"><a name="ex_object_baseobject"></a><div class="example-contents"><a class="indexterm" name="id2588922"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># BaseObject usage example.
 from ocempgui.object import BaseObject
 from ocempgui.events import EventManager
 
@@ -1418,7 +1422,7 @@ manager.emit ("pong", None)
       </p><div class="example"><a name="ex_object_actionlistener"></a><div class="example-contents"><p>
           You can find the example as python script under
           <code class="filename">examples/actionlistener.py</code>
-        </p><a class="indexterm" name="id11584083"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ActionListener usage example.
+        </p><a class="indexterm" name="id2588994"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ActionListener usage example.
 import sys
 from ocempgui.events import EventManager
 from ocempgui.object import ActionListener
@@ -1497,7 +1501,7 @@ listener1.manager = manager
       </p><div class="itemizedlist"><ul type="disc"><li><p>the event mangement</p></li><li><p>a sprite based render engine</p></li><li><p>methods to create the pygame window</p></li></ul></div><p>
         The <code class="classname">Renderer</code> can be set up with only
         three lines of code.
-      </p><div class="example"><a name="ex_gui_renderer"></a><div class="example-contents"><a class="indexterm" name="id11584258"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_gui_renderer"></a><div class="example-contents"><a class="indexterm" name="id2589100"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 from ocempgui.widgets import *
 re = Renderer ()
 re.create_screen (200, 200) # Creates the pygame window
@@ -1511,7 +1515,7 @@ re.create_screen (200, 200) # Creates th
       </p><div class="example"><a name="ex_gui_hello_world"></a><div class="example-contents"><p>
           You can find the example as python script under
           <code class="filename">examples/hello_world.py</code>
-        </p><a class="indexterm" name="id11584308"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Hello World example.
+        </p><a class="indexterm" name="id2589150"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Hello World example.
 from ocempgui.widgets import *
 
 # Initialize the drawing window.
@@ -1603,7 +1607,7 @@ re.color = (250, 250, 250)
       </p><div class="example"><a name="ex_gui_hello_world_signals"></a><div class="example-contents"><p>
           You can find the example as python script under
           <code class="filename">examples/hello_world_signals.py</code>
-        </p><a class="indexterm" name="id11584522"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Hello World example.
+        </p><a class="indexterm" name="id2589365"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Hello World example.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -1876,7 +1880,7 @@ label.widget = another_widget
       </p><div class="example"><a name="ex_gui_label"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/label.py</code>.
-        </p><a class="indexterm" name="id11585174"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Label examples.
+        </p><a class="indexterm" name="id2589948"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Label examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -1982,7 +1986,7 @@ imagelabel.set_border (BORDER_NONE)
       </p><div class="example"><a name="ex_gui_imagelabel"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/imagelabel.py</code>.
-        </p><a class="indexterm" name="id11585334"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ImageLabel examples.
+        </p><a class="indexterm" name="id2590108"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ImageLabel examples.
 import os
 from ocempgui.draw import Image
 from ocempgui.widgets import *
@@ -2103,7 +2107,7 @@ button.set_border (BORDER_NONE)
       </p><div class="example"><a name="ex_gui_button"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/button.py</code>.
-        </p><a class="indexterm" name="id11585578"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Button examples.
+        </p><a class="indexterm" name="id2590353"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Button examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2229,7 +2233,7 @@ button.text = "Additional text"
       </p><div class="example"><a name="ex_gui_imagebutton"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/imagebutton.py</code>.
-        </p><a class="indexterm" name="id11585673"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ImageButton examples.
+        </p><a class="indexterm" name="id2590448"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ImageButton examples.
 import pygame, os
 from ocempgui.draw import Image
 from ocempgui.widgets import *
@@ -2352,7 +2356,7 @@ button.connect_signal (SIG_TOGGLED, stat
       </p><div class="example"><a name="ex_gui_togglebutton"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/togglebutton.py</code>.
-        </p><a class="indexterm" name="id11585785"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ToggleButton examples.
+        </p><a class="indexterm" name="id2590560"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ToggleButton examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2450,7 +2454,7 @@ button = CheckButton (text)
       </p><div class="example"><a name="ex_gui_checkbutton"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/checkbutton.py</code>.
-        </p><a class="indexterm" name="id11585929"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># CheckButton examples.
+        </p><a class="indexterm" name="id2590704"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># CheckButton examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2581,7 +2585,7 @@ group.add_button (button3)
       </p><div class="example"><a name="ex_gui_radiobutton"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/radiobutton.py</code>.
-        </p><a class="indexterm" name="id11586053"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># RadioButton examples.
+        </p><a class="indexterm" name="id2590827"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># RadioButton examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2780,7 +2784,7 @@ entry.set_padding (10)
       </p><div class="example"><a name="ex_gui_entry"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/entry.py</code>.
-        </p><a class="indexterm" name="id11586406"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Entry examples.
+        </p><a class="indexterm" name="id2591112"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Entry examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -3046,7 +3050,7 @@ bin.manager = eventmanager
         widgets module of OcempGUI make heavy use of this attribute to
         adjust the look of themselves. The following example
         demonstrates this.
-      </p><div class="example"><a name="ex_gui_bin_padding"></a><div class="example-contents"><a class="indexterm" name="id11587010"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
+      </p><div class="example"><a name="ex_gui_bin_padding"></a><div class="example-contents"><a class="indexterm" name="id2591648"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">
 from ocempgui.widgets import Button, Renderer
 renderer = Renderer ()
 renderer.create_screen (200, 120)
@@ -3067,7 +3071,7 @@ renderer.start ()
       </p><div class="example"><a name="ex_gui_pivotbin"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/bin.py</code>.
-        </p><a class="indexterm" name="id11587046"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Bin examples.
+        </p><a class="indexterm" name="id2591684"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Bin examples.
 import pygame
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -3265,7 +3269,7 @@ box.add_child (button)
       </p><div class="example"><a name="ex_gui_box"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/box.py</code>.
-        </p><a class="indexterm" name="id11587363"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Box examples.
+        </p><a class="indexterm" name="id2592001"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Box examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
     
@@ -3381,7 +3385,7 @@ vframe.set_align (ALIGN_RIGHT)
       </p><div class="example"><a name="ex_gui_frame"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/frame.py</code>.
-        </p><a class="indexterm" name="id11587511"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Frame examples.
+        </p><a class="indexterm" name="id2592149"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Frame examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -3529,7 +3533,7 @@ table.set_column_align (column, alignmen
       </p><div class="example"><a name="ex_gui_table"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/table.py</code>.
-        </p><a class="indexterm" name="id11587848"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Table examples.
+        </p><a class="indexterm" name="id2592486"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Table examples.
 from ocempgui.widgets import Renderer, Table, Label, Button
 from ocempgui.widgets.Constants import *
 
@@ -3800,7 +3804,7 @@ window.align = ALIGN_TOP | ALIGN_BOTTOM
       </p><div class="example"><a name="ex_gui_window"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/window.py</code>.
-        </p><a class="indexterm" name="id11588422"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Window examples.
+        </p><a class="indexterm" name="id2592992"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Window examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -3930,7 +3934,7 @@ dialog.content.add_child (label1, entry)
       </p><div class="example"><a name="ex_gui_genericdialog"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/genericdialog.py</code>.
-        </p><a class="indexterm" name="id11588611"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># GenericDialog examples.
+        </p><a class="indexterm" name="id2593180"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># GenericDialog examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -3995,7 +3999,7 @@ selection = dialog.get_filenames()
       </p><div class="example"><a name="ex_gui_filedialog"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/filedialog.py</code>.
-        </p><a class="indexterm" name="id11588771"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># FileDialog examples.
+        </p><a class="indexterm" name="id2593340"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># FileDialog examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -4076,7 +4080,7 @@ imagemap = ImageMap (pygame_surface)
       </p><div class="example"><a name="ex_gui_imagemap"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/imagemap.py</code>.
-        </p><a class="indexterm" name="id11588858"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ImageMap examples.
+        </p><a class="indexterm" name="id2593428"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ImageMap examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -4179,7 +4183,7 @@ bar.set_text ("Please wait...")
       </p><div class="example"><a name="ex_gui_progressbar"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/progressbar.py</code>.
-        </p><a class="indexterm" name="id11589028"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ProgressBar examples.
+        </p><a class="indexterm" name="id2593597"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ProgressBar examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -4321,10 +4325,19 @@ grap.set_orientation (ORIENTATION_HORIZO
       </p><div class="example"><a name="ex_gui_graph2d"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/graph2d.py</code>.
-        </p><a class="indexterm" name="id11589251"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Graph2D examples.
+        </p><a class="indexterm" name="id2593752"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Graph2D examples.
+import sys, math
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
-import Numeric, math
+try:
+    import Numeric
+except ImportError:
+    Numeric = None
+    try:
+        import numpy
+    except ImportError:
+        print "Numeric or numpy could not be found"
+        sys.exit (-1)
 
 __function = "func_1"
 
@@ -4359,8 +4372,10 @@ def create_graph2d_view ():
 
     # The evaluation function and data to use.
     graph.eval_func = lambda x: x**4.0 - 3 * x**2.0 + 2 * x
-    graph.data = Numeric.arrayrange (-10, 10, .001).tolist()
-
+    if Numeric:
+        graph.data = Numeric.arrayrange (-10, 10, .001).tolist()
+    else:
+        graph.data = numpy.arange (-10, 10, .001).tolist()
     # Done, unlock.
     graph.unlock ()
 
@@ -4457,7 +4472,7 @@ statusbar.set_date_width (50)
       </p><div class="example"><a name="ex_gui_statusbar"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/statusbar.py</code>.
-        </p><a class="indexterm" name="id11589634"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># StatusBar examples.
+        </p><a class="indexterm" name="id2594135"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># StatusBar examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -4522,7 +4537,7 @@ window.set_text ("New Text")
       </p><div class="example"><a name="ex_gui_tooltipwindow"></a><div class="example-contents"><p>
           You can find the following example as a python script under
           <code class="filename">examples/tooltipwindow.py</code>.
-        </p><a class="indexterm" name="id11589707"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># TooltipWindow examples
+        </p><a class="indexterm" name="id2594209"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># TooltipWindow examples
 import pygame.mouse
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -4732,7 +4747,7 @@ collection.insert (9, item2)
       </p><div class="example"><a name="ex_listitemcollection_notifier"></a><div class="example-contents"><p>
           You can find the following example as a python script under
         <code class="filename">examples/listitemcollection.py</code>.
-        </p><a class="indexterm" name="id11590108"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ListItemCollection example.
+        </p><a class="indexterm" name="id2594541"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># ListItemCollection example.
 from ocempgui.widgets.components import ListItemCollection, TextListItem
 
 # Item change handler.
@@ -5054,7 +5069,7 @@ class TicTacToe (Table):
           There is also a small starting test script called
           <code class="filename">tictactosimple.py</code> as well as the both
           needed graphics.
-        </p><a class="indexterm" name="id11590488"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">from ocempgui.widgets import *
+        </p><a class="indexterm" name="id2594921"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
 SIG_TICTACTOE = "tictactoe"
@@ -5305,7 +5320,7 @@ ____________a_pretty_long_variable_that_
           You can find the code and theme as python scripts under
           <code class="filename">examples/theme_example.rc</code> and
           <code class="filename">examples/theme.py</code>.
-        </p><a class="indexterm" name="id11590990"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">from ocempgui.widgets import Constants
+        </p><a class="indexterm" name="id2595424"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting">from ocempgui.widgets import Constants
 
 # Variables, that will be used to ease the life.
 _normal = Constants.STATE_NORMAL
@@ -5577,7 +5592,7 @@ base.GlobalStyle.engine = DropShadowEngi
       </p><div class="example"><a name="ex_owndrawing"></a><div class="example-contents"><p>
           You can find the code as python script under
           <code class="filename">examples/drawing_engine.py</code>.
-        </p><a class="indexterm" name="id11592094"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Drawing engine usage example.
+        </p><a class="indexterm" name="id2596459"></a><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color: #E0E0E0;"><pre class="programlisting"># Drawing engine usage example.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import DEFAULTDATADIR
 
Binary files 0.2.8-1.1/doc/uml/alignment.png and 0.2.9-0ubuntu2/doc/uml/alignment.png differ
diff -pruN 0.2.8-1.1/NEWS 0.2.9-0ubuntu2/NEWS
--- 0.2.8-1.1/NEWS	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/NEWS	2008-05-10 09:23:29.000000000 +0100
@@ -1,6 +1,16 @@
 This NEWS file for ocempgui covers a short overview about the latest
 changes.
 
+0.2.9   2008-05-10:
+-------------------
+  * Removed explicit Numeric dependencies for pygame >= 1.8.0
+
+  widgets package:
+  * Added reversed focus switching through SHIFT+TAB in Renderer class.
+    Renderer.switch_index() features a new argument 'reverse' now.
+  * Fixed a set_focus() bug in Alignment class. It should not be
+    focusable by default.
+
 0.2.8   2008-01-10:
 -------------------
   * Chat client example now requires Twisted >= 2.5.x
diff -pruN 0.2.8-1.1/ocempgui/access/papi/papi_atkutil.c 0.2.9-0ubuntu2/ocempgui/access/papi/papi_atkutil.c
--- 0.2.8-1.1/ocempgui/access/papi/papi_atkutil.c	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/access/papi/papi_atkutil.c	2008-05-10 09:23:29.000000000 +0100
@@ -1,4 +1,4 @@
-/* $Id: papi_atkutil.c,v 1.10.2.6 2007/09/23 07:37:49 marcusva Exp $
+/* $Id: papi_atkutil.c,v 1.10.2.7 2008/05/10 08:03:46 marcusva Exp $
  *
  * Copyright (c) 2006, Marcus von Appen
  * All rights reserved.
@@ -373,7 +373,7 @@ static G_CONST_RETURN gchar*
 _class_get_toolkit_version (void)
 {
     debug ("_class_get_toolkit_version\n");
-    return VERSION;
+    return "0.0.5";
 }
 
 /**
diff -pruN 0.2.8-1.1/ocempgui/access/papi/papi.c 0.2.9-0ubuntu2/ocempgui/access/papi/papi.c
--- 0.2.8-1.1/ocempgui/access/papi/papi.c	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/access/papi/papi.c	2008-05-10 09:23:29.000000000 +0100
@@ -1,4 +1,4 @@
-/* $Id: papi.c,v 1.13.2.4 2007/09/23 07:37:48 marcusva Exp $
+/* $Id: papi.c,v 1.13.2.5 2008/05/10 08:03:46 marcusva Exp $
  *
  * Copyright (c) 2006, Marcus von Appen
  * All rights reserved.
@@ -103,7 +103,7 @@ initpapi (void)
                         (PyObject *) &PyAtkTextRectangle_Type);
     PyModule_AddObject (mod, "AtkTextRange",
                         (PyObject *) &PyAtkTextRange_Type);
-    PyModule_AddStringConstant (mod, "__version__", VERSION);
+    PyModule_AddStringConstant (mod, "__version__", "0.0.5");
 
     /* Export the 'global' functions. */
     atkbridge_export_funcs (mod);
diff -pruN 0.2.8-1.1/ocempgui/draw/Complex.py 0.2.9-0ubuntu2/ocempgui/draw/Complex.py
--- 0.2.8-1.1/ocempgui/draw/Complex.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/draw/Complex.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,4 +1,4 @@
-# $Id: Complex.py,v 1.8.2.2 2006/12/25 13:05:45 marcusva Exp $
+# $Id: Complex.py,v 1.8.2.3 2008/05/10 08:03:46 marcusva Exp $
 #
 # Copyright (c) 2006, Marcus von Appen
 # All rights reserved.
@@ -26,7 +26,6 @@
 """Complex drawing objects."""
 
 from pygame import Surface, SRCALPHA, surfarray
-import Numeric
     
 class FaderSurface (Surface):
     """FaderSurface (width, height, alpha=255) -> FaderSurface
diff -pruN 0.2.8-1.1/ocempgui/__init__.py 0.2.9-0ubuntu2/ocempgui/__init__.py
--- 0.2.8-1.1/ocempgui/__init__.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/__init__.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,6 +1,6 @@
-# $Id: __init__.py,v 1.15.2.8 2007/09/23 07:37:48 marcusva Exp $
+# $Id: __init__.py,v 1.15.2.9 2008/02/05 22:33:47 marcusva Exp $
 #
-# Copyright (c) 2004-2007, Marcus von Appen
+# Copyright (c) 2004-2008, Marcus von Appen
 # All rights reserved.
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -34,7 +34,7 @@ interface towards the AT-SPI/ATK bridgin
 technologies are offered.
 """
 
-__version__ = "0.2.8"
+__version__ = "0.2.9"
 
 # Main initialization - import all sub modules.
 import ocempgui.access
diff -pruN 0.2.8-1.1/ocempgui/widgets/Alignment.py 0.2.9-0ubuntu2/ocempgui/widgets/Alignment.py
--- 0.2.8-1.1/ocempgui/widgets/Alignment.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/widgets/Alignment.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,6 +1,6 @@
-# $Id: Alignment.py,v 1.1.2.1 2007/01/28 11:24:30 marcusva Exp $
+# $Id: Alignment.py,v 1.1.2.2 2008/01/12 10:48:06 marcusva Exp $
 #
-# Copyright (c) 2007, Marcus von Appen
+# Copyright (c) 2007-2008, Marcus von Appen
 # All rights reserved.
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -69,6 +69,16 @@ class Alignment (Bin):
         self._align = ALIGN_NONE
         self.minsize = width, height
 
+    def set_focus (self, focus=True):
+        """A.set_focus (...) -> bool
+
+        Overrides the default widget input focus.
+
+        Alignment widgets cannot be focused by default, thus this method
+        always returns False and does not do anything.
+        """
+        return False
+
     def set_align (self, align):
         """A.set_align (...) -> None
 
diff -pruN 0.2.8-1.1/ocempgui/widgets/Editable.py 0.2.9-0ubuntu2/ocempgui/widgets/Editable.py
--- 0.2.8-1.1/ocempgui/widgets/Editable.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/widgets/Editable.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,4 +1,4 @@
-# $Id: Editable.py,v 1.29.2.6 2007/03/23 11:57:14 marcusva Exp $
+# $Id: Editable.py,v 1.29.2.7 2008/02/05 22:33:47 marcusva Exp $
 #
 # Copyright (c) 2004-2007, Marcus von Appen
 # All rights reserved.
@@ -239,6 +239,7 @@ class Editable (BaseWidget):
         Receives the SIG_KEYDOWN events and updates the text.
         """
         handled = False
+        caret = self._caret
         
         if event.key == K_ESCAPE:
             if self.editable:
@@ -254,23 +255,23 @@ class Editable (BaseWidget):
             
         # Move caret right and left on the corresponding key press.
         elif event.key == K_RIGHT:
-            if self._caret < len (self._text):
-                self._caret += 1
+            if caret < len (self._text):
+                caret += 1
             handled = True
 
         elif event.key == K_LEFT:
-            if self._caret > 0:
-                self._caret -= 1
+            if caret > 0:
+                caret -= 1
             handled = True
 
         # Go the start (home) of the text.
         elif event.key == K_HOME:
-            self._caret = 0
+            caret = 0
             handled = True
 
         # Go to the end (end) of the text.
         elif event.key == K_END:
-            self._caret = len (self._text)
+            caret = len (self._text)
             handled = True
 
         # The next statements directly influence the text, thus we have
@@ -278,17 +279,15 @@ class Editable (BaseWidget):
         elif self.editable:
             # Delete at the position (delete).
             if event.key == K_DELETE:
-                if self._caret < len (self._text):
-                    self._text = self._text[:self._caret] + \
-                                 self._text[self._caret + 1:]
+                if caret < len (self._text):
+                    self._text = self._text[:caret] + self._text[caret + 1:]
                 handled = True
 
             # Delete backwards (backspace).
             elif event.key == K_BACKSPACE:
-                if self._caret > 0:
-                    self._text = self._text[:self._caret - 1] + \
-                                 self._text[self._caret:]
-                    self._caret -= 1
+                if caret > 0:
+                    self._text = self._text[:caret - 1] + self._text[caret:]
+                    caret -= 1
                 handled = True
 
             # Non-printable characters or maximum exceeded.
@@ -299,12 +298,12 @@ class Editable (BaseWidget):
 
             # Any other case is okay, so show it.
             else:
-                self._text = self._text[:self._caret] + event.unicode + \
-                             self._text[self._caret:]
-                self._caret += 1
+                self._text = self._text[:caret] + event.unicode + \
+                             self._text[caret:]
+                caret += 1
                 handled = True
 
-        self.dirty = True
+        self.set_caret (caret)
         return handled
 
     # properties
diff -pruN 0.2.8-1.1/ocempgui/widgets/Frame.py 0.2.9-0ubuntu2/ocempgui/widgets/Frame.py
--- 0.2.8-1.1/ocempgui/widgets/Frame.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/widgets/Frame.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,4 +1,4 @@
-# $Id: Frame.py,v 1.34.2.6 2007/09/23 07:37:49 marcusva Exp $
+# $Id: Frame.py,v 1.34.2.7 2008/02/05 22:33:47 marcusva Exp $
 #
 # Copyright (c) 2004-2006, Marcus von Appen
 # All rights reserved.
@@ -333,7 +333,7 @@ class VFrame (Frame):
             width = add_width + 2 * (self.padding + border)
         # Last one adds too much spacing.
         if len (self.children) != 0:
-            height -= spacing
+            height -= spacing # The last one adds unnecessary spacing.
 
         return width, height
         
diff -pruN 0.2.8-1.1/ocempgui/widgets/Renderer.py 0.2.9-0ubuntu2/ocempgui/widgets/Renderer.py
--- 0.2.8-1.1/ocempgui/widgets/Renderer.py	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/ocempgui/widgets/Renderer.py	2008-05-10 09:23:29.000000000 +0100
@@ -1,6 +1,6 @@
-# $Id: Renderer.py,v 1.61.2.25 2007/03/23 06:02:21 marcusva Exp $
+# $Id: Renderer.py,v 1.61.2.26 2008/01/12 10:48:06 marcusva Exp $
 #
-# Copyright (c) 2004-2007, Marcus von Appen
+# Copyright (c) 2004-2008, Marcus von Appen
 # All rights reserved.
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -1062,13 +1062,16 @@ class Renderer (IIndexable):
         else:
             self._loop ()
 
-    def switch_index (self):
-        """R.switch_index () -> None
+    def switch_index (self, reverse=False):
+        """R.switch_index (reverse=False) -> None
 
-        Passes the input focus to the next widget.
+        Passes the input focus to the next or previous widget.
 
-        Passes the input focus to the widget, which is the next
-        focusable after the one with the current focus.
+        Passes the input focus to the widget, which is the next or
+        previous focusable after the one with the current focus.  The
+        default passing is to focus widget with the next higher or equal
+        index set. If the reverse argument is set to True, the previous
+        widget with a lower index is focused.
         """
         indices = None
         if self._activelayer:
@@ -1099,7 +1102,12 @@ class Renderer (IIndexable):
             pos = -1
             
         # Reslice the list and traverse it.
-        widgets = widgets[pos + 1:] + widgets[:pos + 1]
+        if not reverse:
+            widgets = widgets[pos + 1:] + widgets[:pos + 1]
+        else:
+            widgets = widgets[pos:] + widgets[:pos]
+            widgets.reverse ()
+            
         for wid in widgets:
             if (wid != self._indexwidget) and wid.set_focus (True):
                 # Found a widget, which allows to be focused, exit.
@@ -1336,6 +1344,8 @@ class Renderer (IIndexable):
                     if not ismod (event.mod):
                         # Cycle through the widgets of the current layer.
                         self.switch_index ()
+                    elif event.mod & KMOD_SHIFT:
+                        self.switch_index (True)
                     elif event.mod & KMOD_CTRL:
                         # Cycle through the layers.
                         self.switch_layer ()
diff -pruN 0.2.8-1.1/PKG-INFO 0.2.9-0ubuntu2/PKG-INFO
--- 0.2.8-1.1/PKG-INFO	2008-01-10 08:42:06.000000000 +0000
+++ 0.2.9-0ubuntu2/PKG-INFO	2008-05-10 09:25:12.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: OcempGUI
-Version: 0.2.8
+Version: 0.2.9
 Summary: Ocean Empire User Interface Library
 Home-page: http://ocemp.sourceforge.net/gui.html
 Author: Marcus von Appen
diff -pruN 0.2.8-1.1/README 0.2.9-0ubuntu2/README
--- 0.2.8-1.1/README	2008-01-10 08:39:37.000000000 +0000
+++ 0.2.9-0ubuntu2/README	2008-05-10 09:23:29.000000000 +0100
@@ -135,11 +135,12 @@ order to run the release target successf
 1.3 Notes for Windows users
 ---------------------------
 
-The windows pygame installer will not ship with the python Numeric
-package. OcempGUI relies on this package for drawing, thus you should
-explicitly install the Numeric[0] package. Note, that you will need a
-package called "Numeric-....exe". The "numarray-....exe" packages
-offered at the download site are NOT what you want.
+The windows pygame installer for version 1.7.1 and below will not ship
+with the python Numeric package. OcempGUI relies on this package for
+drawing with pygame <= 1.7.1 , thus you should explicitly install the
+Numeric[0] package. Note, that you will need a package called
+"Numeric-....exe". The "numarray-....exe" packages offered at the
+download site are NOT what you want.
 
 The accessibility support of ATK is currently not available on Win32
 platforms. You should be able build the module without problems, but
diff -pruN 0.2.8-1.1/setup.py 0.2.9-0ubuntu2/setup.py
--- 0.2.8-1.1/setup.py	2010-12-08 18:28:32.000000000 +0000
+++ 0.2.9-0ubuntu2/setup.py	2010-12-08 18:05:57.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-# $Id: setup.py,v 1.36.2.15 2007/09/23 07:37:48 marcusva Exp $
+# $Id: setup.py,v 1.36.2.17 2008/05/10 08:03:45 marcusva Exp $
 # setup script for ocempgui
 
 import distutils.sysconfig
@@ -8,14 +8,14 @@ from distutils.core import setup, Extens
 from distutils.command.install_data import install_data
 import os, sys, glob, time
 
-VERSION = "0.2.8"
+VERSION = "0.2.9"
 
 # Minimum requirements.
 ATK_MINIMUM = "1.18.0"
 PYGAME_MINIMUM = (1, 7, 1)
 PYTHON_MINIMUM = (2, 3)
 
-PAPI_VERSION = "\"0.0.5\""
+PAPI_VERSION = "0.0.5"
 PAPI_DEBUG = "1"
 
 ##
@@ -151,7 +151,7 @@ class InstallData (install_data):
 
 def get_papi_defines ():
     """Builds the defines list for the C Compiler."""
-    val = [("DEBUG", PAPI_DEBUG), ("VERSION", PAPI_VERSION)]
+    val = [("DEBUG", PAPI_DEBUG), ("VERSION", '"0.0.5"')]
     if sys.platform == "win32":
         val.append (("IS_WIN32", "1"))
     return val
@@ -268,7 +268,7 @@ if __name__ == "__main__":
         includes += gmodflags[0]
         libdirs += gmodflags[1]
         libs += gmodflags[2]
-        includes += distutils.sysconfig.get_python_inc ()
+        #includes += distutils.sysconfig.get_python_inc ()
 
         defines = get_papi_defines ()
     
