Re: [pygtk] Weird VPaned before
Well, I don't seem to have the problems again with the simple test program. I guess I'll play around with the code (yes, ftpcube) and see if I can get the VPane to stop the weird behavior. It's just odd that it would sort of work but still act funny. I guess they're just finicky. On Thu, Jan 17 @ 11:32, Pedro Rodriguez wrote: I have met several problems with Paned windows but all were related to properly setting up the layout (like restoring size when restarting the application). The closest in regard to your problem was related to my current theme (/usr/share/themes/Raleigh/gtk/gtkrc from gtk-engines-0.11-3 on RH 7.2). I will suggest you to first check if you have a Theme set up (in ~/.gtkrc) and if this is the case, comment it before launching the application (ftpcube I presume ;). Otherwise, try the following snip to see if the problem can be reproduced. # import gtk def quit(*args): gtk.mainquit() w = gtk.GtkWindow() p = gtk.GtkVPaned() t = gtk.GtkText() b = gtk.GtkHBox() b1 = gtk.GtkHBox() t1 = gtk.GtkText() b1.pack_start(t1) b2 = gtk.GtkHBox() t2 = gtk.GtkText() b2.pack_start(t2) b3 = gtk.GtkHBox() t3 = gtk.GtkText() b3.pack_start(t3) b.pack_start(b1) b.pack_start(b2) b.pack_start(b3) p.pack1(t, 0, 1) p.pack2(b, 0, 1) w.add(p) w.connect(destroy_event, quit) w.connect(delete_event, quit) w.show_all() gtk.mainloop() # Regards, -- Pedro `- (pedro_rodriguez) -- Michael Gilfix [EMAIL PROTECTED] msg03454/pgp0.pgp Description: PGP signature
[pygtk] How to get the X window ID?
Hi, Is there an easy way to get the X window ID from an pygtk window? I need this for communication with an external program. Thanks, Markus ___ pygtk mailing list [EMAIL PROTECTED] http://www.daa.com.au/mailman/listinfo/pygtk
[pygtk] Size groups demo
This one seems to be working well :o) -- -- Michele - www.moleskine.f2s.com Never ascribe to malice, that which can be explained by incompetence. #!/usr/bin/env python Size Groups GtkSizeGroup provides a mechanism for grouping a number of widgets together so they all request the same amount of space. This is typically useful when you want a column of widgets to have the same size, but you can't use a GtkTable widget. Note that size groups only affect the amount of space requested, not the size that the widgets finally receive. If you want the widgets in a GtkSizeGroup to actually be the same size, you need to pack them in such a way that they get the size they request and not more. For example, if you are packing your widgets into a table, you would not include the GTK_FILL flag. description = Size Groups import gtk def create_option_menu(options): menu = gtk.Menu() for str in options: menu_item = gtk.MenuItem(str) menu_item.show() gtk.MenuShell.append(menu, menu_item) option_menu = gtk.OptionMenu() option_menu.set_menu(menu) return option_menu def add_row(table, row, size_group, label_text, options): label = gtk.Label(label_text) label.set_use_underline(gtk.TRUE) label.set_alignment(0, 1) table.attach(label, 0, 1, row, row + 1, gtk.EXPAND + gtk.FILL, 0, 0, 0) option_menu = create_option_menu(options) label.set_mnemonic_widget(option_menu) size_group.add_widget(option_menu) table.attach(option_menu, 1, 2, row, row + 1, 0, 0, 0, 0) def toggle_grouping(check_button, size_group): # gtk.SIZE_GROUP_NONE is not generally useful, but is useful # here to show the effect of gtk.SIZE_GROUP_HORIZONTAL by # contrast. if check_button.get_active(): size_group.set_mode(gtk.SIZE_GROUP_HORIZONTAL) else: size_group.set_mode(gtk.SIZE_GROUP_NONE) def main(): color_options = [Red, Green, Blue] dash_options = [Solid, Dashed, Dotted] end_options = [Square, Round, Arrow] window = gtk.Dialog(GtkSizeGroups, None, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_NONE)) window.set_resizable(gtk.FALSE) window.connect('response', lambda w, d: window.destroy()) if __name__ == '__main__': window.connect('destroy', lambda win: gtk.main_quit()) vbox = gtk.VBox(gtk.FALSE, 5) window.vbox.pack_start(vbox, gtk.TRUE, gtk.TRUE, 0) vbox.set_border_width(5) size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) # Create one frame holding color options frame = gtk.Frame(Color options) vbox.pack_start(frame, gtk.TRUE, gtk.TRUE, 0) table = gtk.Table(2, 2, gtk.FALSE) table.set_border_width(5) table.set_row_spacings(5) table.set_col_spacings(10) frame.add(table) add_row(table, 0, size_group, _Foreground, color_options) add_row(table, 1, size_group, _Background, color_options) # And another frame holding line style options frame = gtk.Frame(Line options) vbox.pack_start(frame, gtk.FALSE, gtk.FALSE, 0) table = gtk.Table(2, 2, gtk.FALSE) table.set_border_width(5) table.set_row_spacings(5) table.set_col_spacings(10) frame.add(table) add_row(table, 0, size_group, _Dashing, dash_options) add_row(table, 1, size_group, _Line ends, end_options) # And a check button to turn grouping on and off check_button = gtk.CheckButton(_Enable grouping) vbox.pack_start(check_button, gtk.FALSE, gtk.FALSE, 0) check_button.set_active(gtk.TRUE) check_button.connect('toggled', toggle_grouping, size_group) window.show_all() if __name__ == '__main__': gtk.main() if __name__ == '__main__': main()
Re: [pygtk] Weird VPaned behavior
On Thursday 17 January 2002 17:17, Michael Gilfix wrote: Ok, more exploration: the real problem seems to be the scroll bar that's contained in the upper window. The scroll bar does not seem to resize to a size smaller than the original of the text box. I've changed the program Pedro posted so that it demonstrates the problem. One alternative is to enclose the scrollbar in a VBox and then the pane grip does not disappear when the pane is shrunk below the original size but the scroll bar doesn't change size either and just looks funny. Am I supposed to fix this via signaling? -- Mike Mike, I think you are just killing the algorithms for layout management by mixing GtkTable and GtkHBox ;) Or maybe it will require refinement on the layout constraints. I propose a simpler approch with GtkScrolledWindow : t = gtk.GtkHBox () table = gtk.GtkTable (2, 1) t.add (table) text = gtk.GtkText () text.set_usize (-1, 150) table.attach (text, 0, 1, 0, 1) scroll = gtk.GtkVScrollbar (text.get_vadjustment ()) table.attach (scroll, 1, 2, 0, 1, xoptions=gtk.FILL) --- import GTK t = gtk.GtkScrolledWindow() t.set_policy(GTK.POLICY_AUTOMATIC, GTK.POLICY_AUTOMATIC) text = gtk.GtkText() t.add_with_viewport(text) If you need to access the scrollbar you'll need to add this : scroll = t.vscrollbar BUT, I noticed that there is a bug in GtkScrolledWindow on accessing vscrollbar attribute, import the following path file : patch.py # BUG in 0.6.8 : GtkScrollWindow : has_attrs - has_key import gtk from gtk import _obj2inst import _gtk def patch(self, attr): attrs = { 'hscrollbar': _gtk.gtk_scrolled_window_get_hscrollbar, 'vscrollbar': _gtk.gtk_scrolled_window_get_vscrollbar } if attrs.has_key(attr): return _obj2inst(attrs[attr](self._o)) else: return GtkBin.__getattr__(self, attr) gtk.GtkScrolledWindow.__getattr__ = patch del patch # end bug Regards, -- Pedro ___ pygtk mailing list [EMAIL PROTECTED] http://www.daa.com.au/mailman/listinfo/pygtk
Re: [pygtk] Weird VPaned behavior
On Thu, Jan 17 @ 18:34, Pedro Rodriguez wrote: On Thursday 17 January 2002 17:17, Michael Gilfix wrote: Mike, I think you are just killing the algorithms for layout management by mixing GtkTable and GtkHBox ;) Or maybe it will require refinement on the layout constraints. I propose a simpler approch with GtkScrolledWindow : t = gtk.GtkHBox () table = gtk.GtkTable (2, 1) t.add (table) text = gtk.GtkText () text.set_usize (-1, 150) table.attach (text, 0, 1, 0, 1) scroll = gtk.GtkVScrollbar (text.get_vadjustment ()) table.attach (scroll, 1, 2, 0, 1, xoptions=gtk.FILL) --- import GTK t = gtk.GtkScrolledWindow() t.set_policy(GTK.POLICY_AUTOMATIC, GTK.POLICY_AUTOMATIC) text = gtk.GtkText() t.add_with_viewport(text) Yeah, that does the trick. I realize now that back when I wrote the code, I was basing it on an example demonstrating text scrolling, which probably avoided the scroll window for the reasons outlined in your patch. Fortunately, I don't really need to access the scroll bar. You're a life saver Pedro :) -- Mike -- Michael Gilfix [EMAIL PROTECTED] msg03459/pgp0.pgp Description: PGP signature
Re: [pygtk] Dialogs demo
Where are GtkDialogFlags defined? I can find them in gtk-types.defs, but I don't know how to access them. Matt They are: Matt gtk.DIALOG_MODAL, gtk.DIALOG_DESTROY_WITH_PARENT, etc. There are so many symbols in the gtk and gtk.gdk modules ( 1100 all told), that I added a modified dir() function and a dirpat() function to my PYTHONSTARTUP file: from __builtin__ import dir as _dir def dir(o=globals,showall=0): if not showall and hasattr(o, __all__): x = list(o.__all__) x.sort() return x return _dir(o) import re def dirpat(o, pat): like dir, but only return strings matching re pat names = dir(o, showall=1) return [x for x in names if re.search(pat, x) is not None] It produces what I find to be useful output: dirpat(gtk, (?i)dialog) ['ColorSelectionDialog', 'DIALOG_DESTROY_WITH_PARENT', 'DIALOG_MODAL', 'DIALOG_NO_SEPARATOR', 'Dialog', 'FontSelectionDialog', 'ICON_SIZE_DIALOG', 'InputDialog', 'MessageDialog', 'STOCK_DIALOG_ERROR', 'STOCK_DIALOG_INFO', 'STOCK_DIALOG_QUESTION', 'STOCK_DIALOG_WARNING'] dirpat(gtk, DIALOG) ['DIALOG_DESTROY_WITH_PARENT', 'DIALOG_MODAL', 'DIALOG_NO_SEPARATOR', 'ICON_SIZE_DIALOG', 'STOCK_DIALOG_ERROR', 'STOCK_DIALOG_INFO', 'STOCK_DIALOG_QUESTION', 'STOCK_DIALOG_WARNING'] dirpat(gtk, Dialog) ['ColorSelectionDialog', 'Dialog', 'FontSelectionDialog', 'InputDialog', 'MessageDialog'] YMMV... -- Skip Montanaro ([EMAIL PROTECTED] - http://www.mojam.com/) ___ pygtk mailing list [EMAIL PROTECTED] http://www.daa.com.au/mailman/listinfo/pygtk