diff options
Diffstat (limited to 'examples/pygtk-demo/demos/sizegroup.py')
-rw-r--r-- | examples/pygtk-demo/demos/sizegroup.py | 174 |
1 files changed, 87 insertions, 87 deletions
diff --git a/examples/pygtk-demo/demos/sizegroup.py b/examples/pygtk-demo/demos/sizegroup.py index d4a99c54..a780390e 100644 --- a/examples/pygtk-demo/demos/sizegroup.py +++ b/examples/pygtk-demo/demos/sizegroup.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -"""Size Groups +"""Size Group 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 @@ -12,96 +12,96 @@ 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) +class SizeGroupDemo(gtk.Dialog): + def __init__(self, parent=None): + gtk.Dialog.__init__(self, "Size Groups", parent, + 0, + (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) + try: + self.set_screen(parent.get_screen()) + except AttributeError: + self.connect('destroy', lambda *w: gtk.main_quit()) + self.connect('response', lambda d, r: d.destroy()) + self.set_resizable(False) + + vbox = gtk.VBox(False, 5) + self.vbox.pack_start(vbox, True, True, 0) + vbox.set_border_width(5) + + self.size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) + + # Create one frame holding color options + frame = gtk.Frame("Color options") + vbox.pack_start(frame, True, True, 0) + + table = gtk.Table(2, 2, False) + table.set_border_width(5) + table.set_row_spacings(5) + table.set_col_spacings(10) + frame.add(table) + + color_options = ("Red", "Green", "Blue") + self.__add_row(table, 0, "_Foreground", color_options) + self.__add_row(table, 1, "_Background", color_options) + + # And another frame holding line style options + frame = gtk.Frame("Line options") + vbox.pack_start(frame, False, False, 0) + + table = gtk.Table(2, 2, False) + table.set_border_width(5) + table.set_row_spacings(5) + table.set_col_spacings(10) + frame.add(table) + + dash_options = ("Solid", "Dashed", "Dotted") + end_options = ("Square", "Round", "Arrow") + self.__add_row(table, 0, "_Dashing", dash_options) + self.__add_row(table, 1, "_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, False, False, 0) + check_button.set_active(True) + check_button.connect('toggled', self.on_toggle_grouping) + + self.show_all() + + def __create_option_menu(self, options): + + option_menu = gtk.combo_box_new_text() + for opt in options: + option_menu.append_text(opt) + + option_menu.set_active(0) + return option_menu + + def __add_row(self, table, row, label_text, options): + label = gtk.Label(label_text) + label.set_use_underline(True) + label.set_alignment(0, 1) + table.attach(label, 0, 1, row, row + 1, gtk.EXPAND | gtk.FILL, 0, 0, 0) + + option_menu = self.__create_option_menu(options) + label.set_mnemonic_widget(option_menu) + self.size_group.add_widget(option_menu) + table.attach(option_menu, 1, 2, row, row + 1, 0, 0, 0, 0) + + def on_toggle_grouping(self, check_button): + + # 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(): + self.size_group.set_mode(gtk.SIZE_GROUP_HORIZONTAL) + else: + self.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()) - 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() - + SizeGroupDemo() gtk.main() if __name__ == '__main__': |