[pygtk] pygtk-codegen, enum/flags issue

Magnus Therning magnus at therning.org
Tue May 30 15:26:46 WST 2006


There's a patch for libwnck so that it implements a method for setting
the geometry for a window (wnck_window_set_geometry() in the patch for
GNOME bug 342899[1]). In my attempts to add a python binding for this
I've run into some problems with one of the enums:

 wnck.c: In function '_wrap_wnck_window_set_geometry':
 wnck.c:1562: error: 'WNCK_TYPE_WINDOW_MOVERESIZEMASK' undeclared (first use in this function)
 wnck.c:1562: error: (Each undeclared identifier is reported only once
 wnck.c:1562: error: for each function it appears in.)
 wnck.c: In function 'pywnck_add_constants':
 wnck.c:2009: error: 'WNCK_TYPE_WINDOW_MOVERESIZEMASK' undeclared (first use in this function)

The patch is at the end of the email.

I have two questions:
 1. What's the difference between enum and flags for pygtk-codegen, and
    when should I use which?
 2. How do i derive the gtype-id? (I seem to have done it right for
    WnckWindowGravity but not for WnckWindowMoveResizeMask.)

/M

1. http://bugzilla.gnome.org/show_bug.cgi?id=342899


Index: python-gnome2-extras/gnome-python-extras-2.12.1/wnck/wnck.defs
===================================================================
--- python-gnome2-extras.orig/gnome-python-extras-2.12.1/wnck/wnck.defs	2006-05-30 07:55:33.000000000 +0100
+++ python-gnome2-extras/gnome-python-extras-2.12.1/wnck/wnck.defs	2006-05-30 08:10:34.000000000 +0100
@@ -132,6 +132,36 @@
   )
 )
 
+(define-enum WindowGravity
+  (in-module "Wnck")
+  (c-name "WnckWindowGravity")
+  (gtype-id "WNCK_TYPE_WINDOW_GRAVITY")
+  (values
+    '("current" "WNCK_WINDOW_GRAVITY_CURRENT")
+    '("northwest" "WNCK_WINDOW_GRAVITY_NORTHWEST")
+    '("north" "WNCK_WINDOW_GRAVITY_NORTH")
+    '("northeast" "WNCK_WINDOW_GRAVITY_NORTHEAST")
+    '("west" "WNCK_WINDOW_GRAVITY_WEST")
+    '("center" "WNCK_WINDOW_GRAVITY_CENTER")
+    '("east" "WNCK_WINDOW_GRAVITY_EAST")
+    '("southwest" "WNCK_WINDOW_GRAVITY_SOUTHWEST")
+    '("south" "WNCK_WINDOW_GRAVITY_SOUTH")
+    '("southeast" "WNCK_WINDOW_GRAVITY_SOUTHEAST")
+  )
+)
+
+(define-enum WindowMoveResizeMask
+  (in-module "Wnck")
+  (c-name "WnckWindowMoveResizeMask")
+  (gtype-id "WNCK_TYPE_WINDOW_MOVERESIZEMASK")
+  (values
+    '("change-x" "WNCK_WINDOW_CHANGE_X")
+    '("change-y" "WNCK_WINDOW_CHANGE_Y")
+    '("change-width" "WNCK_WINDOW_CHANGE_WIDTH")
+    '("change-height" "WNCK_WINDOW_CHANGE_HEIGHT")
+  )
+)
+
 
 ;; From /usr/include/libwnck-1.0/libwnck/application.h
 
@@ -1033,6 +1063,20 @@
   )
 )
 
+(define-method set_geometry
+  (of-object "WnckWindow")
+  (c-name "wnck_window_set_geometry")
+  (return-type "none")
+  (parameters
+    '("WnckWindowGravity" "gravity")
+    '("WnckWindowMoveResizeMask" "geometry_mask")
+    '("int" "x")
+    '("int" "y")
+    '("int" "width")
+    '("int" "height")
+  )
+)
+
 (define-method is_visible_on_workspace
   (of-object "WnckWindow")
   (c-name "wnck_window_is_visible_on_workspace")

-- 
Magnus Therning                             (OpenPGP: 0xAB4DFBA4)
magnus at therning.org             Jabber: magnus.therning at gmail.com
http://therning.org/magnus

Software is not manufactured, it is something you write and publish.
Keep Europe free from software patents, we do not want censorship
by patent law on written works.

Time is a great teacher, but unfortunately it kills all its pupils.
     -- Hector Louis Berlioz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.daa.com.au/pipermail/pygtk/attachments/20060530/4e526516/attachment.pgp


More information about the pygtk mailing list