[pygtk] wnck.Window.get_geometry missing?

Gustavo J. A. M. Carneiro gjc at inescporto.pt
Mon May 29 06:57:00 WST 2006


Dom, 2006-05-28 às 21:01 +0100, Magnus Therning escreveu:
> On Sun, May 28, 2006 at 12:31:14PM +0100, Gustavo J. A. M. Carneiro wrote:
> >Sáb, 2006-05-27 às 21:56 +0100, Magnus Therning escreveu:
> >> I can't figure out why wnck.Window.get_geometry isn't in the python
> >> bindings.
> >> 
> >> wnck.defs contains the following
> >> 
> >>  (define-method get_geometry
> >>    (of-object "WnckWindow")
> >>    (c-name "wnck_window_get_geometry")
> >>    (return-type "none")
> >>    (parameters
> >>      '("int*" "xp")
> >>      '("int*" "yp")
> >>      '("int*" "widthp")
> >>      '("int*" "heightp")
> >>    )
> >>  )
> >> 
> >> But that doesn't seem to result in the function turning up :-(
> >> 
> >> I've only tested this on Debian Sid but I can't see any reason for it to
> >> be distro specific. The following would check if it's there:
> >> 
> >>  import wnck, gtk
> >>  s = wnck.screen_get_default()
> >>  while gtk.events_pending(): gtk.main_iteration()
> >>  w = s.get_active_window()
> >>  print [f for f in dir(w) if f == 'get_geometry']
> >> 
> >> On my system that results in the printing of an empty list.
> >> 
> >> Any pointers on how to fix this (I've not managed to find any docs on
> >> pygtk-codegen-2.0 at all) would be much appreciated.
> >
> >  You can start by opening a bug report on gnome bugzilla, product
> >gnome-python-desktop.  Thanks.
> 
> Not really the hands on answer I was hoping for ;-) I was hoping to get
> some pointers so I can file the bug report with a patch... I'll just go
> ahead and report it and then look into making a patch.

  Ok, ok...

  Here's how I'd solve it:

	1. comment out the int* parameters in the defs;
	2. compile; it's going to fail, of course;
	3. go to the generated C file, look for the wrapper, copy it
	4. go to the .override file, add something like
%% override wnck_window_get_geometry noargs
<paste the wrapper here>
	5. Edit the wrapper
	  a) declare a few int variables, pass the missing arguments by taking
a reference to the variables, like &x, &y, &width, &height
	  b) replace the Py_None return block with
		return Py_BuildValue("iiii", x, y, width, height);
	6. Uncomment back the parameters in the .defs
	7. Compile, test, submit the patch

  Good luck :-)

-- 
Gustavo J. A. M. Carneiro
<gjc at inescporto.pt> <gustavo at users.sourceforge.net>
The universe is always one step beyond logic



More information about the pygtk mailing list