diff options
author | Johan Dahlin <zilch@src.gnome.org> | 2002-12-23 00:30:39 +0000 |
---|---|---|
committer | Johan Dahlin <zilch@src.gnome.org> | 2002-12-23 00:30:39 +0000 |
commit | 52e7beb26d73a1e9b548af0e7875931ccac6e3fa (patch) | |
tree | 939205346a2c5caae4a51317d8e23789bb3f19a1 /examples/pygtk-demo | |
parent | ed1bd8efc1335af6a5c82d7abeabc021b929bc48 (diff) | |
download | pygtk-52e7beb26d73a1e9b548af0e7875931ccac6e3fa.tar.gz |
New demo. Rearrange code a bit. Clean up a bit.
* examples/pygtk-demo/demos/editable_cells.py: New demo.
* examples/pygtk-demo/pygtk-demo.py: Rearrange code a bit.
* examples/pygtk-demo/demos/*.py: Clean up a bit.
Diffstat (limited to 'examples/pygtk-demo')
-rw-r--r-- | examples/pygtk-demo/demos/appwindow.py | 14 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/buttonbox.py | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/colorsel.py | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/dialogs.py | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/dnd.py | 41 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/editable_cells.py | 144 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/itemfactory.py | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/list_store.py | 154 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/menu.py | 12 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/panes.py | 20 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/sizegroup.py | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/toolbar.py | 27 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/treemodel.py | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/pygtk-demo.py | 282 |
14 files changed, 456 insertions, 286 deletions
diff --git a/examples/pygtk-demo/demos/appwindow.py b/examples/pygtk-demo/demos/appwindow.py index 9029e8bd..d96bd025 100644 --- a/examples/pygtk-demo/demos/appwindow.py +++ b/examples/pygtk-demo/demos/appwindow.py @@ -85,15 +85,14 @@ def update_statusbar(buffer, statusbar): mark_set_callback = (lambda buffer, new_location, mark, statusbar: update_statusbar(buffer, statusbar)) - + def main(): #register_stock_icons () # Create the toplevel window window = gtk.Window() window.set_title('Application Window') - if __name__ == '__main__': - window.connect('destroy', lambda win: gtk.main_quit()) + window.connect('destroy', lambda win: gtk.main_quit()) table = gtk.Table(1, 4, gtk.FALSE) window.add(table) @@ -104,7 +103,7 @@ def main(): window.add_accel_group(accel_group) item_factory = gtk.ItemFactory(gtk.MenuBar, '<main>', accel_group) - + # create menu items item_factory.create_items(menu_items, window) @@ -175,9 +174,10 @@ def main(): buffer.connect('changed', update_statusbar, statusbar) buffer.connect('mark_set', mark_set_callback, statusbar) update_statusbar(buffer, statusbar) - + window.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/buttonbox.py b/examples/pygtk-demo/demos/buttonbox.py index 130f0182..818508fa 100644 --- a/examples/pygtk-demo/demos/buttonbox.py +++ b/examples/pygtk-demo/demos/buttonbox.py @@ -35,8 +35,7 @@ def create_bbox(horizontal=gtk.TRUE, title=None, spacing=0, def main(): win = gtk.Window() - if __name__ == '__main__': - win.connect('destroy', lambda win: gtk.main_quit()) + win.connect('destroy', lambda win: gtk.main_quit()) win.set_title('Button Boxes') win.set_border_width(10) @@ -77,6 +76,7 @@ def main(): padding=5) win.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/colorsel.py b/examples/pygtk-demo/demos/colorsel.py index 2408cdea..444423fa 100644 --- a/examples/pygtk-demo/demos/colorsel.py +++ b/examples/pygtk-demo/demos/colorsel.py @@ -39,8 +39,7 @@ def main(): window = gtk.Window() window.set_title("Color selection") window.set_border_width(8) - if __name__ == '__main__': - window.connect('destroy', lambda win: gtk.main_quit()) + window.connect('destroy', lambda win: gtk.main_quit()) vbox = gtk.VBox() vbox.set_border_width(8) @@ -70,6 +69,7 @@ def main(): window.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/dialogs.py b/examples/pygtk-demo/demos/dialogs.py index c6d6825b..9b90d3c2 100644 --- a/examples/pygtk-demo/demos/dialogs.py +++ b/examples/pygtk-demo/demos/dialogs.py @@ -77,8 +77,7 @@ def main(): window = gtk.Window() window.set_title("Dialogs") window.set_border_width(8) - if __name__ == '__main__': - window.connect('destroy', lambda win: gtk.main_quit()) + window.connect('destroy', lambda win: gtk.main_quit()) frame = gtk.Frame("Dialogs") window.add(frame) @@ -128,6 +127,7 @@ def main(): window.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/dnd.py b/examples/pygtk-demo/demos/dnd.py index 5ca9336a..b1f386bb 100644 --- a/examples/pygtk-demo/demos/dnd.py +++ b/examples/pygtk-demo/demos/dnd.py @@ -38,13 +38,14 @@ def target_drag_leave(w, context, time): global have_drag print 'leave' have_drag = gtk.FALSE - w.set(trashcan_closed, trashcan_closed_mask) + w.set_from_pixmap(trashcan_closed, trashcan_closed_mask) + def target_drag_motion(w, context, x, y, time): global trashcan_open, trashcan_open_mask global have_drag if not have_drag: have_drag = gtk.TRUE - w.set(trashcan_open, trashcan_open_mask) + w.set_from_pixmap(trashcan_open, trashcan_open_mask) source_widget = context.get_source_widget() print 'motion, source ', if source_widget: @@ -53,28 +54,32 @@ def target_drag_motion(w, context, x, y, time): print 'unknown' context.drag_status(context.suggested_action, time) return gtk.TRUE + def target_drag_drop(w, context, x, y, time): global trashcan_closed, trashcan_closed_mask global have_drag print 'drop' have_drag = gtk.FALSE - w.set(trashcan_closed, trashcan_closed_mask) + w.set_from_pixmap(trashcan_closed, trashcan_closed_mask) if context.targets: w.drag_get_data(context, context.targets[0], time) return gtk.TRUE return gtk.FALSE + def target_drag_data_received(w, context, x, y, data, info, time): if data.format == 8: print 'Received "%s" in trashcan' % data.data context.finish(gtk.TRUE, gtk.FALSE, time) else: context.finish(gtk.FALSE, gtk.FALSE, time) + def label_drag_data_received(w, context, x, y, data, info, time): if data and data.format == 8: print 'Received "%s" in label' % data.data context.finish(gtk.TRUE, gtk.FALSE, time) else: context.finish(gtk.FALSE, gtk.FALSE, time) + def source_drag_data_get(w, context, selection_data, info, time): if info == TARGET_ROOTWIN: print 'I was dropped on the rootwin' @@ -88,6 +93,7 @@ def popdown_cb(): popup_win.hide() popped_up = gtk.FALSE return gtk.FALSE + def popup_motion(w, context, x, y, time): global in_popup, popdown_timer if not in_popup: @@ -97,6 +103,7 @@ def popup_motion(w, context, x, y, time): gtk.timeout_remove(popdown_timer) popdown_timer = 0 return gtk.TRUE + def popup_leave(w, context, time): global in_popup, popdown_timer print 'popup_leave' @@ -105,6 +112,7 @@ def popup_leave(w, context, time): if not popdown_timer: print 'added popdown' popdown_timer = gtk.timeout_add(500, popdown_cb) + def popup_cb(): global popped_up, popup_win global popup_timer, popdown_timer @@ -129,18 +137,22 @@ def popup_cb(): print 'added popdown' popup_timer = 0 return gtk.FALSE + def popsite_motion(w, context, x, y, time): global popup_timer if not popup_timer: popup_timer = gtk.timeout_add(500, popup_cb) return gtk.TRUE + def popsite_leave(w, context, time): global popup_timer if popup_timer: gtk.timeout_remove(popup_timer) popup_timer = 0 + def source_drag_data_delete(w, context, data): print 'Delete the data!' + def create_pixmap(widget, xpm): return gtk.gdk.pixmap_colormap_create_from_xpm_d(None, widget.get_colormap(), @@ -151,8 +163,7 @@ def main(): global trashcan_closed, trashcan_closed_mask global drag_icon, drag_mask win = gtk.Window() - if __name__ == '__main__': - win.connect('destroy', lambda win: gtk.main_quit()) + win.connect('destroy', lambda win: gtk.main_quit()) table = gtk.Table(2,2) win.add(table) drag_icon, drag_mask = create_pixmap(win, drag_icon_xpm) @@ -171,13 +182,14 @@ def main(): label.connect('drag_motion', popsite_motion) label.connect('drag_leave', popsite_leave) - pixmap = gtk.Pixmap(trashcan_closed, trashcan_closed_mask) - pixmap.drag_dest_set(0, [], 0) - table.attach(pixmap, 1, 2, 0, 1) - pixmap.connect('drag_leave', target_drag_leave) - pixmap.connect('drag_motion', target_drag_motion) - pixmap.connect('drag_drop', target_drag_drop) - pixmap.connect('drag_data_received', target_drag_data_received) + image = gtk.Image() + image.set_from_pixmap(trashcan_closed, trashcan_closed_mask) + image.drag_dest_set(0, [], 0) + table.attach(image, 1, 2, 0, 1) + image.connect('drag_leave', target_drag_leave) + image.connect('drag_motion', target_drag_motion) + image.connect('drag_drop', target_drag_drop) + image.connect('drag_data_received', target_drag_data_received) b = gtk.Button('Drag Here\n') b.drag_source_set(gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, @@ -187,6 +199,7 @@ def main(): b.connect('drag_data_get', source_drag_data_get) b.connect('drag_data_delete', source_drag_data_delete) win.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/editable_cells.py b/examples/pygtk-demo/demos/editable_cells.py new file mode 100644 index 00000000..07d198d9 --- /dev/null +++ b/examples/pygtk-demo/demos/editable_cells.py @@ -0,0 +1,144 @@ +"""Tree View/Editable Cells + +This demo demonstrates the use of editable cells in a GtkTreeView. If +you're new to the GtkTreeView widgets and associates, look into +the GtkListStore example first. + +""" + +description = 'Editable cells' + +import gobject +import gtk +from gtk import TRUE, FALSE + +COLUMN_NUMBER = 0 +COLUMN_PRODUCT = 1 +COLUMN_EDITABLE = 2 + +ARTICLES = [ + [3, "bottles of coke", TRUE], + [5, "packages of noodles", TRUE], + [2, "packages of chocolate chip cookies", TRUE], + [1, "can vanilla ice cream", TRUE], + [6, "eggs", TRUE] +] + +def create_model(): + # create model + model = gtk.ListStore(gobject.TYPE_INT, + gobject.TYPE_STRING, + gobject.TYPE_BOOLEAN) + + # insert articles + for article in ARTICLES: + iter = model.append() + model.set(iter, + COLUMN_NUMBER, article[0], + COLUMN_PRODUCT, article[1], + COLUMN_EDITABLE, article[2]) + return model + +def add_item(button, model): + item = [0, "Description here", TRUE] + + ARTICLES.append(item) + + iter = model.append() + model.set(iter, + COLUMN_NUMBER, item[0], + COLUMN_PRODUCT, item[1], + COLUMN_EDITABLE, item[2]) + +def remove_item(button, treeview): + selection = treeview.get_selection() + selected = selection.get_selected() + if selected: + model, iter = selected + i = model.get_path(iter)[0] + model.remove(iter) + ARTICLES.pop(i) + +def cell_edited (cell, row, new_text, model): + article = ARTICLES[int(row)] + iter = model.get_iter_from_string(row) + + column = cell.get_data("column") + if column == COLUMN_NUMBER: + article[column] = int(new_text) + model.set(iter, column, article[column]) + elif column == COLUMN_PRODUCT: + article[column] = new_text + model.set(iter, column, article[column]) + +def add_columns(treeview): + model = treeview.get_model() + + # number column + renderer = gtk.CellRendererText() + renderer.connect('edited', cell_edited, model) + renderer.set_data('column', COLUMN_NUMBER) + treeview.insert_column_with_attributes(-1, 'Number', renderer, + text=COLUMN_NUMBER, + editable=COLUMN_EDITABLE) + # product column + renderer = gtk.CellRendererText() + renderer.connect('edited', cell_edited, model) + renderer.set_data('column', COLUMN_PRODUCT) + + treeview.insert_column_with_attributes(-1, 'Number', renderer, + text=COLUMN_PRODUCT, + editable=COLUMN_EDITABLE) + +def main(): + # create window, etc + window = gtk.Window() + window.set_title('Shopping list') + window.set_border_width(5) + window.connect('destroy', lambda win: gtk.mainquit()) + + vbox = gtk.VBox() + window.add(vbox) + + label = gtk.Label("Shopping list (you can edit the cells!)") + vbox.pack_start(label, FALSE, FALSE) + + sw = gtk.ScrolledWindow() + sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) + sw.set_policy(gtk.POLICY_AUTOMATIC, + gtk.POLICY_AUTOMATIC) + vbox.pack_start(sw) + + # create model + model = create_model() + + # create tree view + treeview = gtk.TreeView(model) + treeview.set_rules_hint(TRUE) + treeview.set_headers_visible(TRUE) + selection = treeview.get_selection() + selection.set_mode(gtk.SELECTION_SINGLE) + + add_columns(treeview) + + sw.add(treeview) + + # some buttons + hbox = gtk.HBox() + vbox.pack_start(hbox, FALSE, FALSE) + + button = gtk.Button('Add item') + button.connect('clicked', add_item, model) + hbox.pack_start(button) + + button = gtk.Button('Remove item') + button.connect('clicked', remove_item, treeview) + hbox.pack_start(button) + + window.set_default_size(330, 220) + window.show_all() + + gtk.main() + +if __name__=="__main__": + main() diff --git a/examples/pygtk-demo/demos/itemfactory.py b/examples/pygtk-demo/demos/itemfactory.py index 0e4e98c2..cc049600 100644 --- a/examples/pygtk-demo/demos/itemfactory.py +++ b/examples/pygtk-demo/demos/itemfactory.py @@ -37,8 +37,7 @@ menu_items = ( def main(): win = gtk.Window() - if __name__ == '__main__': - win.connect('destroy', lambda win: gtk.main_quit()) + win.connect('destroy', lambda win: gtk.main_quit()) win.set_title('Item Factory') win.set_border_width(10) @@ -78,6 +77,7 @@ def main(): button.grab_default() win.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/list_store.py b/examples/pygtk-demo/demos/list_store.py index b1e8de30..8162433f 100644 --- a/examples/pygtk-demo/demos/list_store.py +++ b/examples/pygtk-demo/demos/list_store.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.2 +#!/usr/bin/env python '''Tree View/List Store The GtkListStore is used to store data in list form, to be used @@ -10,6 +10,7 @@ description = 'List Store' import gobject import gtk +from gtk import TRUE, FALSE COLUMN_FIXED = 0 COLUMN_NUMBER = 1 @@ -17,114 +18,113 @@ COLUMN_SEVERITY = 2 COLUMN_DESCRIPTION = 3 data = \ -[[gtk.FALSE, 60482, 'Normal', 'scrollable notebooks and hidden tabs'], - [gtk.FALSE, 60620, 'Critical', 'gdk_window_clear_area (gdkwindow-win32.c) is not thread-safe'], - [gtk.FALSE, 50214, 'Major', 'Xft support does not clean up correctly'], - [gtk.TRUE, 52877, 'Major', 'GtkFileSelection needs a refresh method. '], - [gtk.FALSE, 56070, 'Normal', "Can't click button after setting in sensitive"], - [gtk.TRUE, 56355, 'Normal', 'GtkLabel - Not all changes propagate correctly'], - [gtk.FALSE, 50055, 'Normal', 'Rework width/height computations for TreeView'], - [gtk.FALSE, 58278, 'Normal', "gtk_dialog_set_response_sensitive () doesn't work"], - [gtk.FALSE, 55767, 'Normal', 'Getters for all setters'], - [gtk.FALSE, 56925, 'Normal', 'Gtkcalender size'], - [gtk.FALSE, 56221, 'Normal', 'Selectable label needs right-click copy menu'], - [gtk.TRUE, 50939, 'Normal', 'Add shift clicking to GtkTextView'], - [gtk.FALSE, 6112, 'Enhancement', 'netscape-like collapsable toolbars'], - [gtk.FALSE, 1, 'Normal', 'First bug :=)']] +[[FALSE, 60482, 'Normal', 'scrollable notebooks and hidden tabs'], + [FALSE, 60620, 'Critical', + 'gdk_window_clear_area (gdkwindow-win32.c) is not thread-safe'], + [FALSE, 50214, 'Major', 'Xft support does not clean up correctly'], + [TRUE, 52877, 'Major', 'GtkFileSelection needs a refresh method. '], + [FALSE, 56070, 'Normal', "Can't click button after setting in sensitive"], + [TRUE, 56355, 'Normal', 'GtkLabel - Not all changes propagate correctly'], + [FALSE, 50055, 'Normal', 'Rework width/height computations for TreeView'], + [FALSE, 58278, 'Normal', "gtk_dialog_set_response_sensitive () doesn't work"], + [FALSE, 55767, 'Normal', 'Getters for all setters'], + [FALSE, 56925, 'Normal', 'Gtkcalender size'], + [FALSE, 56221, 'Normal', 'Selectable label needs right-click copy menu'], + [TRUE, 50939, 'Normal', 'Add shift clicking to GtkTextView'], + [FALSE, 6112, 'Enhancement', 'netscape-like collapsable toolbars'], + [FALSE, 1, 'Normal', 'First bug :=)']] -def create_model (): - store = gtk.ListStore (gobject.TYPE_BOOLEAN, - gobject.TYPE_UINT, - gobject.TYPE_STRING, - gobject.TYPE_STRING) +def create_model(): + store = gtk.ListStore(gobject.TYPE_BOOLEAN, + gobject.TYPE_UINT, + gobject.TYPE_STRING, + gobject.TYPE_STRING) for item in data: - iter = store.append () - store.set (iter, COLUMN_FIXED, item[0], - COLUMN_NUMBER, item[1], - COLUMN_SEVERITY, item[2], - COLUMN_DESCRIPTION, item[3]) + iter = store.append() + store.set(iter, COLUMN_FIXED, item[0], + COLUMN_NUMBER, item[1], + COLUMN_SEVERITY, item[2], + COLUMN_DESCRIPTION, item[3]) return store -def fixed_toggled (cell, path, model): +def fixed_toggled(cell, path, model): # get toggled iter - iter = model.get_iter ((int(path),)) - fixed = model.get_value (iter, COLUMN_FIXED) + iter = model.get_iter((int(path),)) + fixed = model.get_value(iter, COLUMN_FIXED) # do something with the value fixed = not fixed # set new value - model.set (iter, COLUMN_FIXED, fixed) + model.set(iter, COLUMN_FIXED, fixed) -def add_columns (treeview): - model = treeview.get_model () +def add_columns(treeview): + model = treeview.get_model() # column for fixed toggles - renderer = gtk.CellRendererToggle () - renderer.connect ('toggled', fixed_toggled, model) + renderer = gtk.CellRendererToggle() + renderer.connect('toggled', fixed_toggled, model) - column = gtk.TreeViewColumn ('Fixed?', renderer, active=COLUMN_FIXED) - column.set_clickable (gtk.TRUE) + column = gtk.TreeViewColumn('Fixed?', renderer, active=COLUMN_FIXED) + column.set_clickable(TRUE) - # set this column to a fixed sizing (of 50 pixels) - column.set_sizing (gtk.TREE_VIEW_COLUMN_FIXED) - column.set_fixed_width (50) - column.set_clickable (gtk.TRUE) + # set this column to a fixed sizing(of 50 pixels) + column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) + column.set_fixed_width(50) + column.set_clickable(TRUE) - treeview.append_column (column) + treeview.append_column(column) # column for bug numbers - # test using gtk_tree_view_insert_column_with_attributes - column = treeview.insert_column_with_attributes(-1, 'Bug Number', - gtk.CellRendererText (), - text=COLUMN_NUMBER) + column = gtk.TreeViewColumn('Bug Number', gtk.CellRendererText(), + text=COLUMN_NUMBER) + treeview.append_column(column) # columns for severities - # test using gtk_tree_view_column_new, then gtk_tree_view_append_column - renderer = gtk.CellRendererText () - column = gtk.TreeViewColumn ('Severity', renderer, text=COLUMN_SEVERITY) - treeview.append_column (column) - + column = gtk.TreeViewColumn('Severity', gtk.CellRendererText(), + text=COLUMN_SEVERITY) + treeview.append_column(column) + # column for description - renderer = gtk.CellRendererText () - column = gtk.TreeViewColumn ('Description', renderer, text=COLUMN_DESCRIPTION) - treeview.append_column (column) - -def main (): - win = gtk.Window () - if __name__ == '__main__': - win.connect ('destroy', lambda win: gtk.main_quit ()) + column = gtk.TreeViewColumn('Description', gtk.CellRendererText(), + text=COLUMN_DESCRIPTION) + treeview.append_column(column) + +def main(): + win = gtk.Window() + win.connect('destroy', lambda win: gtk.main_quit()) - win.set_title ('GtkListStore demo') - win.set_border_width (8) + win.set_title('GtkListStore demo') + win.set_border_width(8) - vbox = gtk.VBox (gtk.FALSE, 8) - win.add (vbox) + vbox = gtk.VBox(FALSE, 8) + win.add(vbox) - label = gtk.Label ('This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though).') - vbox.pack_start (label, gtk.FALSE, gtk.FALSE) + label = gtk.Label('This is the bug list (note: not based on real data, '+\ + 'it would be nice to have a nice ODBC interface to bugzilla or so, though).') + vbox.pack_start(label, FALSE, FALSE) - sw = gtk.ScrolledWindow () - sw.set_shadow_type (gtk.SHADOW_ETCHED_IN) - sw.set_policy (gtk.POLICY_NEVER, + sw = gtk.ScrolledWindow() + sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) + sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - vbox.pack_start (sw) + vbox.pack_start(sw) - model = create_model () + model = create_model() - treeview = gtk.TreeView (model) - treeview.set_rules_hint (gtk.TRUE) - treeview.set_search_column (COLUMN_DESCRIPTION) + treeview = gtk.TreeView(model) + treeview.set_rules_hint(TRUE) + treeview.set_search_column(COLUMN_DESCRIPTION) - sw.add (treeview) + sw.add(treeview) - add_columns (treeview) + add_columns(treeview) - win.set_default_size (280, 250) + win.set_default_size(280, 250) - win.show_all () - if __name__ == '__main__': gtk.main () + win.show_all() + gtk.main() if __name__ == '__main__': - main () + main() diff --git a/examples/pygtk-demo/demos/menu.py b/examples/pygtk-demo/demos/menu.py index 98dba71c..cc99e00e 100644 --- a/examples/pygtk-demo/demos/menu.py +++ b/examples/pygtk-demo/demos/menu.py @@ -26,8 +26,7 @@ def create_menu(depth, length=5): def main(): window = gtk.Window() - if __name__ == '__main__': - window.connect('destroy', lambda win: gtk.main_quit()) + window.connect('destroy', lambda win: gtk.main_quit()) window.set_title('Menus') vbox = gtk.VBox() @@ -46,7 +45,7 @@ def main(): menuitem = gtk.MenuItem('bar') menuitem.set_submenu(create_menu(2)) - menuitem.right_justify() + menuitem.set_right_justified(gtk.TRUE) menubar.add(menuitem) vbox2 = gtk.VBox(spacing=10) @@ -71,6 +70,7 @@ def main(): button.grab_default() window.show_all() - - if __name__ == '__main__': gtk.main() -if __name__ == '__main__': main() + gtk.main() + +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/panes.py b/examples/pygtk-demo/demos/panes.py index a6009fde..1553ab4e 100644 --- a/examples/pygtk-demo/demos/panes.py +++ b/examples/pygtk-demo/demos/panes.py @@ -15,7 +15,7 @@ import gtk def toggle_resize(w, child): paned = child.parent - if child == paned.children()[0]: + if child == paned.get_children()[0]: paned.remove(child) paned.pack1(child, w.get_active(), 0) else: @@ -25,7 +25,7 @@ def toggle_resize(w, child): def toggle_shrink(w, child): paned = child.parent - if child == paned.children()[0]: + if child == paned.get_children()[0]: paned.remove(child) paned.pack1(child, 0, w.get_active()) else: @@ -43,12 +43,12 @@ def create_pane_options(paned, frame_label, label1, label2): table.attach_defaults(label, 0, 1, 0, 1) check_button = gtk.CheckButton("_Resize") - check_button.connect('toggled', toggle_resize, paned.children()[0]) + check_button.connect('toggled', toggle_resize, paned.get_children()[0]) table.attach_defaults(check_button, 0, 1, 1, 2) check_button = gtk.CheckButton("_Shrink") check_button.set_active(gtk.TRUE) - check_button.connect('toggled', toggle_shrink, paned.children()[0]) + check_button.connect('toggled', toggle_shrink, paned.get_children()[0]) table.attach_defaults(check_button, 0, 1, 2, 3) label = gtk.Label(label2) @@ -56,12 +56,12 @@ def create_pane_options(paned, frame_label, label1, label2): check_button = gtk.CheckButton("_Resize") check_button.set_active(gtk.TRUE) - check_button.connect('toggled', toggle_resize, paned.children()[1]) + check_button.connect('toggled', toggle_resize, paned.get_children()[1]) table.attach_defaults(check_button, 1, 2, 1, 2) check_button = gtk.CheckButton("_Shrink") check_button.set_active(gtk.TRUE) - check_button.connect('toggled', toggle_shrink, paned.children()[1]) + check_button.connect('toggled', toggle_shrink, paned.get_children()[1]) table.attach_defaults(check_button, 1, 2, 2, 3) return frame @@ -70,8 +70,7 @@ def main(): window = gtk.Window() window.set_title("Paned Widgets") window.set_border_width(0) - if __name__ == '__main__': - window.connect('destroy', lambda win: gtk.main_quit()) + window.connect('destroy', lambda win: gtk.main_quit()) vbox = gtk.VBox(gtk.FALSE, 0) window.add(vbox) @@ -111,6 +110,7 @@ def main(): window.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/sizegroup.py b/examples/pygtk-demo/demos/sizegroup.py index c40ce383..d4a99c54 100644 --- a/examples/pygtk-demo/demos/sizegroup.py +++ b/examples/pygtk-demo/demos/sizegroup.py @@ -57,8 +57,7 @@ def main(): (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()) + window.connect('destroy', lambda win: gtk.main_quit()) vbox = gtk.VBox(gtk.FALSE, 5) window.vbox.pack_start(vbox, gtk.TRUE, gtk.TRUE, 0) @@ -103,6 +102,7 @@ def main(): window.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/demos/toolbar.py b/examples/pygtk-demo/demos/toolbar.py index f5c6b6a7..9a889a8c 100644 --- a/examples/pygtk-demo/demos/toolbar.py +++ b/examples/pygtk-demo/demos/toolbar.py @@ -42,44 +42,47 @@ def set_style_cb(button, toolbar, style): def set_tooltips_cb(button, toolbar, enable): toolbar.set_tooltips(enable) +def Image(pix, mask): + image = gtk.Image() + image.set_from_pixmap(pix, mask) + return image + def main(): win = gtk.Window() - if __name__ == '__main__': - win.connect('destroy', lambda win: gtk.main_quit()) + win.connect('destroy', lambda win: gtk.main_quit()) win.set_title("Toolbar") - win.set_policy(gtk.FALSE, gtk.TRUE, gtk.TRUE) + win.set_resizable(gtk.FALSE) win.set_border_width(5) pix, mask = gtk.gdk.pixmap_colormap_create_from_xpm_d(None, win.get_colormap(), None, folder_icon) - toolbar = gtk.Toolbar() win.add(toolbar) button = toolbar.append_item("Horizontal", "Horizontal toolbar layout", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_orient_cb, toolbar, gtk.ORIENTATION_HORIZONTAL) button = toolbar.append_item("Vertical", "Vertical toolbar layout", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_orient_cb, toolbar, gtk.ORIENTATION_VERTICAL) toolbar.append_space() button = toolbar.append_item("Icons", "Only show toolbar icons", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_style_cb, toolbar, gtk.TOOLBAR_ICONS) button = toolbar.append_item("Text", "Only show toolbar texts", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_style_cb, toolbar, gtk.TOOLBAR_TEXT) button = toolbar.append_item("Both", "Show toolbar icons and text", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_style_cb, toolbar, gtk.TOOLBAR_BOTH) toolbar.append_space() @@ -90,16 +93,16 @@ def main(): toolbar.append_space() button = toolbar.append_item("Enable", "Enable tooltips", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_tooltips_cb, toolbar, gtk.TRUE) button = toolbar.append_item("Disable", "Disable tooltips", - None, gtk.Pixmap(pix, mask), None, None) + None, Image(pix, mask), None, None) button.connect("clicked", set_tooltips_cb, toolbar, gtk.FALSE) win.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() if __name__ == '__main__': main() diff --git a/examples/pygtk-demo/demos/treemodel.py b/examples/pygtk-demo/demos/treemodel.py index 4bf7f7a0..13d2c817 100644 --- a/examples/pygtk-demo/demos/treemodel.py +++ b/examples/pygtk-demo/demos/treemodel.py @@ -89,8 +89,7 @@ class MyTreeModel(gtk.GenericTreeModel): def main(): window = gtk.Window() - if __name__ == '__main__': - window.connect('destroy', lambda win: gtk.main_quit()) + window.connect('destroy', lambda win: gtk.main_quit()) window.set_title('Menus') scrolled_window = gtk.ScrolledWindow() @@ -107,7 +106,8 @@ def main(): scrolled_window.add(tree_view) window.show_all() - if __name__ == '__main__': gtk.main() + gtk.main() -if __name__ == '__main__': main() +if __name__ == '__main__': + main() diff --git a/examples/pygtk-demo/pygtk-demo.py b/examples/pygtk-demo/pygtk-demo.py index 6ff5adab..d4f938b0 100644 --- a/examples/pygtk-demo/pygtk-demo.py +++ b/examples/pygtk-demo/pygtk-demo.py @@ -1,147 +1,157 @@ #!/usr/bin/env python - import string + +import pygtk +pygtk.require('2.0') + import gobject import gtk +from gtk import TRUE, FALSE import demos TITLE_COLUMN = 0 MODULE_COLUMN = 1 -# globals -model = None -info_buffer = None -source_buffer = None -current_module = None - -def load_module(module): - global current_module - - current_module = module - - mod = getattr(demos, current_module) - - start, end = info_buffer.get_bounds() - info_buffer.delete(start, end) - - if mod.__doc__: - iter = info_buffer.get_iter_at_offset(0) - - lines = string.split(mod.__doc__ or '', '\n') - info_buffer.insert(iter, lines[0]) - start = info_buffer.get_iter_at_offset(0) - info_buffer.apply_tag_by_name('title', start, iter) - info_buffer.insert(iter, '\n') - for line in lines[1:]: - info_buffer.insert(iter, line) - info_buffer.insert(iter, '\n') - - start, end = source_buffer.get_bounds() - source_buffer.delete(start, end) - - iter = source_buffer.get_iter_at_offset(0) - filename = mod.__file__ - if filename[-4:] == '.pyc': filename = filename[:-1] - source_buffer.insert(iter, open(filename, 'r').read()) - source_buffer.apply_tag_by_name('source', - source_buffer.get_iter_at_offset(0), - iter) - -def selection_cb(selection): - sel = selection.get_selected() - if sel: - model, iter = sel - module = model.get_value(iter, MODULE_COLUMN) - - load_module(module) - -def launch_cb(button): - if current_module: - mod = getattr(demos, current_module) - mod.main() - -def create_text(is_source=gtk.FALSE): - scrolled_window = gtk.ScrolledWindow() - scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - scrolled_window.set_shadow_type(gtk.SHADOW_IN) - - text_view = gtk.TextView() - scrolled_window.add(text_view) - - buffer = gtk.TextBuffer(None) - text_view.set_buffer(buffer) - text_view.set_editable(gtk.FALSE) - text_view.set_cursor_visible(gtk.FALSE) - - text_view.set_wrap_mode(not is_source) - - return scrolled_window, buffer - -def create_list(): - global model - - model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) - tree_view = gtk.TreeView(model) - selection = tree_view.get_selection() - selection.set_mode('single') - tree_view.set_size_request(200, -1) - - for title, module in demos.demos: - iter = model.append() - model.set_value(iter, TITLE_COLUMN, title) - model.set_value(iter, MODULE_COLUMN, module) - cell = gtk.CellRendererText() - # this column - column = gtk.TreeViewColumn("Widget", cell, text=TITLE_COLUMN) - tree_view.append_column(column) - - selection.connect('changed', selection_cb) - return tree_view - -def main(): - global info_buffer, source_buffer - - window = gtk.Window() - window.connect('destroy', lambda win: gtk.main_quit()) - - hbox = gtk.HBox(gtk.FALSE, 3) - window.add(hbox) - - list = create_list() - hbox.pack_start(list, expand=gtk.FALSE) +class PyGtkDemo(gtk.Window): + info_buffer = None + source_buffer = None + def __init__(self): + gtk.Window.__init__(self) + self.connect('destroy', lambda w: gtk.main_quit()) + self.set_default_size(600, 400) + + hbox = gtk.HBox(FALSE, 3) + self.add(hbox) + + treeview = self.create_treeview() + hbox.pack_start(treeview, expand=FALSE) + + self.notebook = gtk.Notebook() + hbox.pack_start(self.notebook, expand=TRUE) + + scrolled_window, self.info_buffer = self.create_text(FALSE) + self._new_notebook_page(scrolled_window, '_Info') + tag = self.info_buffer.create_tag('title') + tag.set_property('font', 'Sans 18') + + scrolled_window, self.source_buffer = self.create_text(TRUE) + self._new_notebook_page(scrolled_window, '_Source') + tag = self.source_buffer.create_tag('source') + tag.set_property('font', 'Courier 10') + tag.set_property('pixels_above_lines', 0) + tag.set_property('pixels_below_lines', 0) + + def _new_notebook_page(self, widget, label): + l = gtk.Label('') + l.set_text_with_mnemonic(label) + self.notebook.append_page(widget, l) + + def create_treeview(self): + model = gtk.ListStore(gobject.TYPE_STRING, + gobject.TYPE_STRING) + + treeview = gtk.TreeView(model) + treeview.connect('row-activated', self.row_activated_cb) + selection = treeview.get_selection() + selection.set_mode('single') + treeview.set_size_request(200, -1) + + for title, module in demos.demos: + iter = model.append() + model.set_value(iter, TITLE_COLUMN, title) + model.set_value(iter, MODULE_COLUMN, module) + + cell = gtk.CellRendererText() + column = gtk.TreeViewColumn("Widget", cell, text=TITLE_COLUMN) + treeview.append_column(column) + + selection.connect('changed', self.selection_changed_cb) + self.model = model + return treeview + + def create_text(self, is_source=FALSE): + scrolled_window = gtk.ScrolledWindow() + scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + scrolled_window.set_shadow_type(gtk.SHADOW_IN) + + text_view = gtk.TextView() + scrolled_window.add(text_view) + + buffer = gtk.TextBuffer(None) + text_view.set_buffer(buffer) + text_view.set_editable(FALSE) + text_view.set_cursor_visible(FALSE) + + text_view.set_wrap_mode(not is_source) + + return scrolled_window, buffer + + def row_activated_cb(self, treeview, row, column): + iter = self.model.get_iter(row) + module_name = self.model.get_value(iter, MODULE_COLUMN) + module = getattr(demos, module_name) + module.main() + + def selection_changed_cb(self, selection): + selection = selection.get_selected() + if not selection: + return + + model, iter = selection + + name = model.get_value(iter, MODULE_COLUMN) + self.load_module(name) + + def read_module(self, module): + filename = module.__file__ + if filename[-4:] == '.pyc': + filename = filename[:-1] + fd = open(filename) + return fd.read() - vbox = gtk.VBox() - hbox.pack_start(vbox, expand=gtk.TRUE) - - notebook = gtk.Notebook() - vbox.pack_start(notebook, expand=gtk.TRUE) - scrolled_window, info_buffer = create_text(gtk.FALSE) - l = gtk.Label('') ; l.set_text_with_mnemonic('_Info') - notebook.append_page(scrolled_window, l) - scrolled_window, source_buffer = create_text(gtk.TRUE) - l = gtk.Label('') ; l.set_text_with_mnemonic('_Source') - notebook.append_page(scrolled_window, l) - - tag = info_buffer.create_tag('title') - tag.set_property('font', 'Sans 18') - tag = source_buffer.create_tag('source') - tag.set_property('font', 'Courier 10') - tag.set_property('pixels_above_lines', 0) - tag.set_property('pixels_below_lines', 0) - - button = gtk.Button('_Launch') - button.set_border_width(5) - button.set_flags(gtk.CAN_DEFAULT) - vbox.pack_start(button, expand=gtk.FALSE) - button.grab_default() - button.connect('clicked', launch_cb) - - window.set_default_size(600, 400) - window.show_all() - - load_module(demos.demos[0][1]) - - gtk.main() - -if __name__ == '__main__': main() + def insert_documentation(self, module): + buffer = self.info_buffer + iter = buffer.get_iter_at_offset(0) + + lines = string.split(module.__doc__ or '', '\n') + buffer.insert(iter, lines[0]) + start = buffer.get_iter_at_offset(0) + buffer.apply_tag_by_name('title', start, iter) + buffer.insert(iter, '\n') + for line in lines[1:]: + buffer.insert(iter, line) + buffer.insert(iter, '\n') + + def clear_buffers(self): + start, end = self.info_buffer.get_bounds() + self.info_buffer.delete(start, end) + + start, end = self.source_buffer.get_bounds() + self.source_buffer.delete(start, end) + + def insert_source(self, data): + source_buffer = self.source_buffer + iter = source_buffer.get_iter_at_offset(0) + source_buffer.insert(iter, data) + + start = source_buffer.get_iter_at_offset(0) + source_buffer.apply_tag_by_name('source', start, iter) + + def load_module(self, name): + self.clear_buffers() + + module = getattr(demos, name) + if module.__doc__: + self.insert_documentation(module) + + source = self.read_module(module) + self.insert_source(source) + +d = PyGtkDemo() +d.show_all() + +gtk.main() + +#if __name__ == '__main__': +# main() |