PyGTK: Manually render an existing widget at a given Rectangle? (TextView in a custom CellRenderer)
Posted
by NicDumZ
on Stack Overflow
See other posts from Stack Overflow
or by NicDumZ
Published on 2010-06-16T09:39:24Z
Indexed on
2010/06/16
9:42 UTC
Read the original article
Hit count: 272
Hello!
I am trying to draw a TextView into the cell of a TreeView. (Why? I would like to have custom tags on text, so they can be clickable and trigger different actions/popup menus depending on where user clicks).
I have been trying to write a customized CellRenderer for this purpose, but so far I failed because I find it extremely difficult to find generic documentation on rendering design in gtk.
More than an answer at the specific question (that might be hard/not doable, and I'm not expecting you to do everything for me), I am first looking for documentation on how a widget is rendered, to understand how one is supposed to implement a CellRenderer. Can you share any link that explains, either for gtk or for pygtk, the rendering mechanism? More specifically:
- size allocation mechanism (should I say protocol?). I understand that a window has a defined size, and then queries its children, saying "my size is w x h, what would be your ideal size, buddy?", and then sometimes shrinks children when all children cant fit together at their ideal sizes. Any specific documentation on that, and on particular on when this happens during rendering?
- How are rendered "builtin" widgets? What kind of methods do they call on
Widgetbase class? On the parentWindow? When? Do they usepango.Layout? - can you manually draw a
TextViewonto apango.Layoutobject?
This link gives an interesting example showing how you can draw content in a pango.Layout object and use it in a CellRenderer. I guess that I could adapt it if only I understood how TextView widget are rendered.
Or perhaps, to put it more simply: given an existing widget instance, how does one render it at a specific gdk.Rectangle?
Thanks a lot.
© Stack Overflow or respective owner