diff -Nru ocempgui-0.2.8/ChangeLog ocempgui-0.2.9/ChangeLog --- ocempgui-0.2.8/ChangeLog 2008-01-10 08:39:37.000000000 +0000 +++ ocempgui-0.2.9/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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/debian/changelog /tmp/ZLi5YcJ67q/ocempgui-0.2.9/debian/changelog --- ocempgui-0.2.8/debian/changelog 2009-08-19 10:12:25.000000000 +0100 +++ ocempgui-0.2.9/debian/changelog 2009-08-19 10:12:25.000000000 +0100 @@ -1,3 +1,10 @@ +ocempgui (0.2.9-0ubuntu1) karmic; urgency=low + + * New upstream release (LP: #327476) + * debian/control: Depends on python-pygame (LP: #299037) + + -- Julien Lavergne 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. diff -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/debian/control /tmp/ZLi5YcJ67q/ocempgui-0.2.9/debian/control --- ocempgui-0.2.8/debian/control 2009-08-19 10:12:25.000000000 +0100 +++ ocempgui-0.2.9/debian/control 2009-08-19 10:12:25.000000000 +0100 @@ -10,7 +10,7 @@ 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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/doc/examples/a11y_test.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/doc/examples/a11y_test.py --- ocempgui-0.2.8/doc/examples/a11y_test.py 2009-08-19 10:12:25.000000000 +0100 +++ ocempgui-0.2.9/doc/examples/a11y_test.py 2009-08-19 10:12:25.000000000 +0100 @@ -29,9 +29,13 @@ 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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/doc/examples/graph2d.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/doc/examples/graph2d.py --- ocempgui-0.2.8/doc/examples/graph2d.py 2008-01-10 08:39:37.000000000 +0000 +++ ocempgui-0.2.9/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 @@ # 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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/doc/manual.html /tmp/ZLi5YcJ67q/ocempgui-0.2.9/doc/manual.html --- ocempgui-0.2.8/doc/manual.html 2008-01-10 08:39:59.000000000 +0000 +++ ocempgui-0.2.9/doc/manual.html 2008-05-10 09:23:45.000000000 +0100 @@ -204,7 +204,7 @@

TODO: provide more details

You can find the following example as a python script under examples/a11y_test.py. -

# papi test example.
+          

# papi test example.
 import ocempgui.access.papi as papi
 import atexit
 
@@ -235,9 +235,13 @@
         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 @@
             

You can find the following example as a python script under examples/draw_line.py. -

# Draw.draw_line () usage example.
+              

# Draw.draw_line () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Draw
 
@@ -460,7 +464,7 @@
             

You can find the following example as a python script under examples/draw_rect.py. -

# Draw.draw_rect () usage example.
+              

# Draw.draw_rect () usage example.
 import random
 import pygame, pygame.locals
 from ocempgui.draw import Draw
@@ -508,7 +512,7 @@
             

You can find the following example as a python script under examples/draw_triangle.py. -

# Draw.draw_triangle () usage example.
+              

# Draw.draw_triangle () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Draw
 
@@ -562,7 +566,7 @@
             

You can find the following example as a python script under examples/load_image.py. -

# Image.load_image () usage example.
+              

# Image.load_image () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Image
 
@@ -611,7 +615,7 @@
               

You can find the following example as a python script under examples/create_font.py. -

# String.create_font () usage example.
+              

# String.create_font () usage example.
 import pygame
 from ocempgui.draw import String
 
@@ -666,7 +670,7 @@
               

You can find the following example as a python script under examples/create_system_font.py. -

# String.create_system_font () usage example.
+              

# String.create_system_font () usage example.
 import pygame
 from ocempgui.draw import String
 
@@ -705,7 +709,7 @@
               

You can find the following example as a python script under examples/draw_string.py. -

# String.draw_string () usage example.
+              

# String.draw_string () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import String
 
@@ -764,7 +768,7 @@
             

You can find the following example as a python script under examples/draw_string_with_bg.py. -

# String.draw_string_with_bg () usage example.
+              

# String.draw_string_with_bg () usage example.
 import pygame, pygame.locals
 from ocempgui.draw import String
 
@@ -812,7 +816,7 @@
       

You can find the following example as a python script under examples/fader_surface.py. -

# Complex.FaderSurface usage example.
+        

# Complex.FaderSurface usage example.
 import pygame, pygame.locals
 from ocempgui.draw import Complex, Image
 
@@ -938,7 +942,7 @@
         The following example is a complete example based on the
         excerpts from above. You can find it as python script under
         examples/observer.py
-      

# Subject/Observer usage example.
+      

# Subject/Observer usage example.
 from ocempgui.events import Subject, IObserver
 
 # The subject that should notify observers about state changes.
@@ -1069,7 +1073,7 @@
         The event argument of the method will be
         an Event object, which can be used to
         perform certain actions within the method body then:
-      

+      

 class OwnObject (INotifyable):
     ...
     def move (self, coords):
@@ -1105,7 +1109,7 @@
           We use the OwnObject class of the
           previous example and will (un)register it for the signals
           "move" and "clicked".
-        

+        

 # Create an EventManager and OwnObject instance.
 manager = EventManager ()
 myobj = OwnObject ()
@@ -1138,7 +1142,7 @@
         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.
-      

+      

 # Send events to the registered objects via the emit() method.
 manager.emit ("clicked", None)
 manager.emit ("move", (10, 10))
@@ -1148,7 +1152,7 @@
           The following example is a complete example based on the
           excerpts from above. You can find it as python script under
           examples/eventmanager.py
-        

# EventManager usage example.
+        

# 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 @@
         the newly created one inherit from the
         BaseObject class. Afterwards you can
         unleash its full power by adding just a minimal set of code.
-      

+      

 from ocempgui.object import BaseObject
 
 class OwnObject (BaseObject):
@@ -1265,7 +1269,7 @@
         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.
-      

+      

 from ocempgui.object import BaseObject
 
 class OwnObject (BaseObject):
@@ -1283,7 +1287,7 @@
         Now we just need to make the notify()
         aware of those signal types and let it invoke the appropriate
         callbacks, which will be connected to those signals.
-      

+      

 class OwnObject (BaseObject):
     ...
     def notify (self, event):
@@ -1305,7 +1309,7 @@
         data right after the signal and callback. If the callbacks is
         not needed anymore, it can be disconnected using the
         disconnect_signal()  method.
-      

+      

 class OwnObject (BaseObject):
     ...
 
@@ -1322,7 +1326,7 @@
         any signal of your BaseObject inheritor
         manually. When you connect it to an event manager, it will
         automatically do that for you.
-      

+      

 class OwnObject (BaseObject):
     ...
 
@@ -1345,7 +1349,7 @@
         following one is slightly modified only). You can find the
         example as python script under
         examples/baseobject.py
-      

# BaseObject usage example.
+      

# BaseObject usage example.
 from ocempgui.object import BaseObject
 from ocempgui.events import EventManager
 
@@ -1418,7 +1422,7 @@
       

You can find the example as python script under examples/actionlistener.py -

# ActionListener usage example.
+        

# ActionListener usage example.
 import sys
 from ocempgui.events import EventManager
 from ocempgui.object import ActionListener
@@ -1497,7 +1501,7 @@
       

  • the event mangement

  • a sprite based render engine

  • methods to create the pygame window

The Renderer can be set up with only three lines of code. -

+      

 from ocempgui.widgets import *
 re = Renderer ()
 re.create_screen (200, 200) # Creates the pygame window
@@ -1511,7 +1515,7 @@
       

You can find the example as python script under examples/hello_world.py -

# Hello World example.
+        

# Hello World example.
 from ocempgui.widgets import *
 
 # Initialize the drawing window.
@@ -1603,7 +1607,7 @@
       

You can find the example as python script under examples/hello_world_signals.py -

# Hello World example.
+        

# Hello World example.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -1876,7 +1880,7 @@
       

You can find the following example as a python script under examples/label.py. -

# Label examples.
+        

# Label examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -1982,7 +1986,7 @@
       

You can find the following example as a python script under examples/imagelabel.py. -

# ImageLabel examples.
+        

# ImageLabel examples.
 import os
 from ocempgui.draw import Image
 from ocempgui.widgets import *
@@ -2103,7 +2107,7 @@
       

You can find the following example as a python script under examples/button.py. -

# Button examples.
+        

# Button examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2229,7 +2233,7 @@
       

You can find the following example as a python script under examples/imagebutton.py. -

# ImageButton examples.
+        

# ImageButton examples.
 import pygame, os
 from ocempgui.draw import Image
 from ocempgui.widgets import *
@@ -2352,7 +2356,7 @@
       

You can find the following example as a python script under examples/togglebutton.py. -

# ToggleButton examples.
+        

# ToggleButton examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2450,7 +2454,7 @@
       

You can find the following example as a python script under examples/checkbutton.py. -

# CheckButton examples.
+        

# CheckButton examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2581,7 +2585,7 @@
       

You can find the following example as a python script under examples/radiobutton.py. -

# RadioButton examples.
+        

# RadioButton examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -2780,7 +2784,7 @@
       

You can find the following example as a python script under examples/entry.py. -

# Entry examples.
+        

# Entry examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -3046,7 +3050,7 @@
         widgets module of OcempGUI make heavy use of this attribute to
         adjust the look of themselves. The following example
         demonstrates this.
-      

+      

 from ocempgui.widgets import Button, Renderer
 renderer = Renderer ()
 renderer.create_screen (200, 120)
@@ -3067,7 +3071,7 @@
       

You can find the following example as a python script under examples/bin.py. -

# Bin examples.
+        

# Bin examples.
 import pygame
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -3265,7 +3269,7 @@
       

You can find the following example as a python script under examples/box.py. -

# Box examples.
+        

# Box examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
     
@@ -3381,7 +3385,7 @@
       

You can find the following example as a python script under examples/frame.py. -

# Frame examples.
+        

# Frame examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -3529,7 +3533,7 @@
       

You can find the following example as a python script under examples/table.py. -

# Table examples.
+        

# Table examples.
 from ocempgui.widgets import Renderer, Table, Label, Button
 from ocempgui.widgets.Constants import *
 
@@ -3800,7 +3804,7 @@
       

You can find the following example as a python script under examples/window.py. -

# Window examples.
+        

# Window examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -3930,7 +3934,7 @@
       

You can find the following example as a python script under examples/genericdialog.py. -

# GenericDialog examples.
+        

# GenericDialog examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -3995,7 +3999,7 @@
       

You can find the following example as a python script under examples/filedialog.py. -

# FileDialog examples.
+        

# FileDialog examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -4076,7 +4080,7 @@
       

You can find the following example as a python script under examples/imagemap.py. -

# ImageMap examples.
+        

# ImageMap examples.
 import os
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -4179,7 +4183,7 @@
       

You can find the following example as a python script under examples/progressbar.py. -

# ProgressBar examples.
+        

# ProgressBar examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -4321,10 +4325,19 @@
       

You can find the following example as a python script under examples/graph2d.py. -

# Graph2D examples.
+        

# 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 @@
 
     # 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 @@
       

You can find the following example as a python script under examples/statusbar.py. -

# StatusBar examples.
+        

# StatusBar examples.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
@@ -4522,7 +4537,7 @@
       

You can find the following example as a python script under examples/tooltipwindow.py. -

# TooltipWindow examples
+        

# TooltipWindow examples
 import pygame.mouse
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
@@ -4732,7 +4747,7 @@
       

You can find the following example as a python script under examples/listitemcollection.py. -

# ListItemCollection example.
+        

# ListItemCollection example.
 from ocempgui.widgets.components import ListItemCollection, TextListItem
 
 # Item change handler.
@@ -5054,7 +5069,7 @@
           There is also a small starting test script called
           tictactosimple.py as well as the both
           needed graphics.
-        

from ocempgui.widgets import *
+        

from ocempgui.widgets import *
 from ocempgui.widgets.Constants import *
 
 SIG_TICTACTOE = "tictactoe"
@@ -5305,7 +5320,7 @@
           You can find the code and theme as python scripts under
           examples/theme_example.rc and
           examples/theme.py.
-        

from ocempgui.widgets import Constants
+        

from ocempgui.widgets import Constants
 
 # Variables, that will be used to ease the life.
 _normal = Constants.STATE_NORMAL
@@ -5577,7 +5592,7 @@
       

You can find the code as python script under examples/drawing_engine.py. -

# Drawing engine usage example.
+        

# Drawing engine usage example.
 from ocempgui.widgets import *
 from ocempgui.widgets.Constants import DEFAULTDATADIR
 
Binary files /tmp/Z5wvc9DD2u/ocempgui-0.2.8/doc/uml/alignment.png and /tmp/ZLi5YcJ67q/ocempgui-0.2.9/doc/uml/alignment.png differ
diff -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/NEWS /tmp/ZLi5YcJ67q/ocempgui-0.2.9/NEWS
--- ocempgui-0.2.8/NEWS	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/access/papi/papi_atkutil.c /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/access/papi/papi_atkutil.c
--- ocempgui-0.2.8/ocempgui/access/papi/papi_atkutil.c	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
 _class_get_toolkit_version (void)
 {
     debug ("_class_get_toolkit_version\n");
-    return VERSION;
+    return "0.0.5";
 }
 
 /**
diff -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/access/papi/papi.c /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/access/papi/papi.c
--- ocempgui-0.2.8/ocempgui/access/papi/papi.c	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
                         (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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/draw/Complex.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/draw/Complex.py
--- ocempgui-0.2.8/ocempgui/draw/Complex.py	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/__init__.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/__init__.py
--- ocempgui-0.2.8/ocempgui/__init__.py	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
 technologies are offered.
 """
 
-__version__ = "0.2.8"
+__version__ = "0.2.9"
 
 # Main initialization - import all sub modules.
 import ocempgui.access
diff -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/widgets/Alignment.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/widgets/Alignment.py
--- ocempgui-0.2.8/ocempgui/widgets/Alignment.py	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
         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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/widgets/Editable.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/widgets/Editable.py
--- ocempgui-0.2.8/ocempgui/widgets/Editable.py	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
         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 @@
             
         # 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 @@
         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 @@
 
             # 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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/widgets/Frame.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/widgets/Frame.py
--- ocempgui-0.2.8/ocempgui/widgets/Frame.py	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
             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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/ocempgui/widgets/Renderer.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/ocempgui/widgets/Renderer.py
--- ocempgui-0.2.8/ocempgui/widgets/Renderer.py	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/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 @@
         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 @@
             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 @@
                     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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/PKG-INFO /tmp/ZLi5YcJ67q/ocempgui-0.2.9/PKG-INFO
--- ocempgui-0.2.8/PKG-INFO	2008-01-10 08:42:06.000000000 +0000
+++ ocempgui-0.2.9/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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/README /tmp/ZLi5YcJ67q/ocempgui-0.2.9/README
--- ocempgui-0.2.8/README	2008-01-10 08:39:37.000000000 +0000
+++ ocempgui-0.2.9/README	2008-05-10 09:23:29.000000000 +0100
@@ -135,11 +135,12 @@
 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 -Nru /tmp/Z5wvc9DD2u/ocempgui-0.2.8/setup.py /tmp/ZLi5YcJ67q/ocempgui-0.2.9/setup.py
--- ocempgui-0.2.8/setup.py	2009-08-19 10:12:25.000000000 +0100
+++ ocempgui-0.2.9/setup.py	2009-08-19 10:12:25.000000000 +0100
@@ -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.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 @@
 
 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 @@
         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 ()