summaryrefslogtreecommitdiff
path: root/examples/pygtk-demo
diff options
context:
space:
mode:
authorJohan Dahlin <zilch@src.gnome.org>2002-12-23 00:30:39 +0000
committerJohan Dahlin <zilch@src.gnome.org>2002-12-23 00:30:39 +0000
commit52e7beb26d73a1e9b548af0e7875931ccac6e3fa (patch)
tree939205346a2c5caae4a51317d8e23789bb3f19a1 /examples/pygtk-demo
parented1bd8efc1335af6a5c82d7abeabc021b929bc48 (diff)
downloadpygtk-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.py14
-rw-r--r--examples/pygtk-demo/demos/buttonbox.py8
-rw-r--r--examples/pygtk-demo/demos/colorsel.py8
-rw-r--r--examples/pygtk-demo/demos/dialogs.py8
-rw-r--r--examples/pygtk-demo/demos/dnd.py41
-rw-r--r--examples/pygtk-demo/demos/editable_cells.py144
-rw-r--r--examples/pygtk-demo/demos/itemfactory.py8
-rw-r--r--examples/pygtk-demo/demos/list_store.py154
-rw-r--r--examples/pygtk-demo/demos/menu.py12
-rw-r--r--examples/pygtk-demo/demos/panes.py20
-rw-r--r--examples/pygtk-demo/demos/sizegroup.py8
-rw-r--r--examples/pygtk-demo/demos/toolbar.py27
-rw-r--r--examples/pygtk-demo/demos/treemodel.py8
-rw-r--r--examples/pygtk-demo/pygtk-demo.py282
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()