Re: [pygtk] reserve screen space / prevent overlapping
Hi, > The Gtk.Window().get_window() returns an object of type > gi.types.gtk.gdk.X11window. Can i do something with that? Nope. > I tried to get_properties() on it, but i had to pass an argument and > could not introspect to find out which, and i don't know if the > set_property() method would help. get/set_property are methods of GObject. Not what you want here. > > Or is there a non-Gtk way to address X and reserve screen space? You could mess around with ctypes and xlib directly if you really wanted. There is also python-xlib and python-xcb that might let you poke at what you want. John > > Thanks > Benjamin ___ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://faq.pygtk.org/
Re: [pygtk] reserve screen space / prevent overlapping
On 27 May 2011 01:28, John Stowers wrote: > On Wed, 2011-05-25 at 22:50 +0200, Benjamin Trias wrote: > > Hi list, > > > > I am trying to port from Gtk+2 to Gtk+3 using Python (PyGobject > Introspection) > > > > I am trying to find the equivalent of: > > gtk.Window.get_toplevel().window.property_change("_NET_WM_STRUT", > > "CARDINAL", 32, gtk.gdk.PROP_MODE_REPLACE, [0,0,24,0]) > > > > which i used to reserve screen space (24 pix at bottom of screen). > > > > In Gtk+3 the Gtk.Window() does not have a "window" attribute and > > nowhere do i find the gdk_property_change() method equivalent in the > > Gdk modules (which i would expect to be Gdk.property_change(), in fact > > the property_delete() and property_get() are listed). > > > > How to change the Gdk window properties with PyGI to reserve screen > space? > > Could a binding be missing? Or do i miss some library? > > Anyone has an idea? > > PyGI has removed .attributes, so the replacement to get the GdkWindow) > would be get_widget_get_window() or Gtk.Widget.get_window() from g-i. > > However, property_change is annotated with (skip) in the bindings > because of the nature of the data argument - unsigned char * + length > but callers should explicitly cast other property types (that are > greater than sizeof(char)). > > Its a bit of an ugly C-api, and I played with the annotations a bit. The > best g-i could do was only accept n-values between 0 - 255 and format=8. > > Based on the large amount of c-code in the pygtk override for this > function, I think it might be easier to just add multiple functions to > gdk3 to replace this one > > property_change_8(... const guint8 *data ...) > property_change_16(... const guint16 *data ...) > property_change_32(... const guint32 *data ...) > > I suggest filing a bug with gtk. > > John > > > Thanks. > > Benjamin > > ___ > > pygtk mailing list pygtk@daa.com.au > > http://www.daa.com.au/mailman/listinfo/pygtk > > Read the PyGTK FAQ: http://faq.pygtk.org/ > > > Hi John, Thanks. I can't follow all of what you said, but i get the idea. Is there any way to achieve my purpose without the property_change() method? The Gtk.Window().get_window() returns an object of type gi.types.gtk.gdk.X11window. Can i do something with that? I tried to get_properties() on it, but i had to pass an argument and could not introspect to find out which, and i don't know if the set_property() method would help. Or is there a non-Gtk way to address X and reserve screen space? Thanks Benjamin ___ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://faq.pygtk.org/
Re: [pygtk] reserve screen space / prevent overlapping
On Wed, 2011-05-25 at 22:50 +0200, Benjamin Trias wrote: > Hi list, > > I am trying to port from Gtk+2 to Gtk+3 using Python (PyGobject Introspection) > > I am trying to find the equivalent of: > gtk.Window.get_toplevel().window.property_change("_NET_WM_STRUT", > "CARDINAL", 32, gtk.gdk.PROP_MODE_REPLACE, [0,0,24,0]) > > which i used to reserve screen space (24 pix at bottom of screen). > > In Gtk+3 the Gtk.Window() does not have a "window" attribute and > nowhere do i find the gdk_property_change() method equivalent in the > Gdk modules (which i would expect to be Gdk.property_change(), in fact > the property_delete() and property_get() are listed). > > How to change the Gdk window properties with PyGI to reserve screen space? > Could a binding be missing? Or do i miss some library? > Anyone has an idea? PyGI has removed .attributes, so the replacement to get the GdkWindow) would be get_widget_get_window() or Gtk.Widget.get_window() from g-i. However, property_change is annotated with (skip) in the bindings because of the nature of the data argument - unsigned char * + length but callers should explicitly cast other property types (that are greater than sizeof(char)). Its a bit of an ugly C-api, and I played with the annotations a bit. The best g-i could do was only accept n-values between 0 - 255 and format=8. Based on the large amount of c-code in the pygtk override for this function, I think it might be easier to just add multiple functions to gdk3 to replace this one property_change_8(... const guint8 *data ...) property_change_16(... const guint16 *data ...) property_change_32(... const guint32 *data ...) I suggest filing a bug with gtk. John > Thanks. > Benjamin > ___ > pygtk mailing list pygtk@daa.com.au > http://www.daa.com.au/mailman/listinfo/pygtk > Read the PyGTK FAQ: http://faq.pygtk.org/ ___ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://faq.pygtk.org/