summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJohn Stowers <john.stowers@gmail.com>2010-07-09 13:43:11 +1200
committerJohn Stowers <john.stowers@gmail.com>2010-07-09 15:25:42 +1200
commit088ff0490a0fa05a31c4840dad189c913e7ab91b (patch)
treeb8933c65daddf79c8b8bf2c4763c7daafb66d645 /examples
parent6d6e8b0864c5ac6470e258d20edd09a0fd07952a (diff)
downloadpygtk-088ff0490a0fa05a31c4840dad189c913e7ab91b.tar.gz
Add new Gtk-2.20 API
* Notably this adds GtkSpinner, GtkOffscreenWindow, GtkCellRendererSpinner, GtkToolPalette objects * Add new api to other objects * Add gtk.ToolbarPalette demo * Add gtk.Spinner demo
Diffstat (limited to 'examples')
-rw-r--r--examples/pygtk-demo/demos/spinner.py63
-rw-r--r--examples/pygtk-demo/demos/toolpalette.py111
2 files changed, 174 insertions, 0 deletions
diff --git a/examples/pygtk-demo/demos/spinner.py b/examples/pygtk-demo/demos/spinner.py
new file mode 100644
index 00000000..10111863
--- /dev/null
+++ b/examples/pygtk-demo/demos/spinner.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+"""Spinner
+
+GtkSpinner allows to show that background activity is on-going.
+"""
+# pygtk version: John Stowers <john.stowers@gmail.com>
+
+import gtk
+
+class SpinnerDemo(gtk.Window):
+ def __init__(self, parent=None):
+ gtk.Window.__init__(self)
+ try:
+ self.set_screen(parent.get_screen())
+ except AttributeError:
+ self.connect('destroy', lambda *w: gtk.main_quit())
+ self.set_title(self.__class__.__name__)
+ self.set_border_width(5)
+
+ vb = gtk.VBox(spacing=5)
+ self.add(vb)
+
+ #sensitive
+ hb = gtk.HBox(spacing=5)
+ self.ss = gtk.Spinner()
+ hb.add(self.ss)
+ hb.add(gtk.Entry())
+ vb.add(hb)
+
+ #unsensitive
+ hb = gtk.HBox(spacing=5)
+ self.us = gtk.Spinner()
+ hb.add(self.us)
+ hb.add(gtk.Entry())
+ hb.set_sensitive(False)
+ vb.add(hb)
+
+ b = gtk.Button(stock=gtk.STOCK_MEDIA_PLAY)
+ b.connect("clicked", self._on_play_clicked)
+ vb.add(b)
+
+ b = gtk.Button(stock=gtk.STOCK_MEDIA_STOP)
+ b.connect("clicked", self._on_stop_clicked)
+ vb.add(b)
+
+ self._on_play_clicked(None)
+
+ self.show_all()
+
+ def _on_play_clicked(self, b):
+ self.ss.start()
+ self.us.start()
+
+ def _on_stop_clicked(self, b):
+ self.ss.stop()
+ self.us.stop()
+
+def main():
+ SpinnerDemo()
+ gtk.main()
+
+if __name__ == '__main__':
+ main()
diff --git a/examples/pygtk-demo/demos/toolpalette.py b/examples/pygtk-demo/demos/toolpalette.py
new file mode 100644
index 00000000..82d30e41
--- /dev/null
+++ b/examples/pygtk-demo/demos/toolpalette.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+"""Tool Palette
+
+A tool palette widget shows groups of toolbar items as a grid of icons or a list of names.
+"""
+# pygtk version: John Stowers <john.stowers@gmail.com>
+
+import gtk
+
+class ToolPaletteDemo(gtk.Window):
+ def __init__(self, parent=None):
+ gtk.Window.__init__(self)
+ try:
+ self.set_screen(parent.get_screen())
+ except AttributeError:
+ self.connect('destroy', lambda *w: gtk.main_quit())
+ self.set_title(self.__class__.__name__)
+ self.set_border_width(8)
+ self.set_default_size(400,400)
+
+ vb = gtk.VBox(spacing=6)
+
+ m = gtk.ListStore(str, object)
+ m.append( ("Vertical", gtk.ORIENTATION_VERTICAL) )
+ m.append( ("Horizontal", gtk.ORIENTATION_HORIZONTAL) )
+ cb = gtk.ComboBox(m)
+ cell = gtk.CellRendererText()
+ cb.pack_start(cell)
+ cb.add_attribute(cell, 'text',0)
+ cb.set_active(0)
+ cb.connect("changed", self._orientation_changed)
+ vb.pack_start(cb, False, False)
+
+ m = gtk.ListStore(str, object)
+ m.append( ("Icons", gtk.TOOLBAR_ICONS) )
+ m.append( ("Text", gtk.TOOLBAR_TEXT) )
+ m.append( ("Both", gtk.TOOLBAR_BOTH) )
+ m.append( ("Both: Horizontal", gtk.TOOLBAR_BOTH_HORIZ) )
+ cb = gtk.ComboBox(m)
+ cell = gtk.CellRendererText()
+ cb.pack_start(cell)
+ cb.add_attribute(cell, 'text',0)
+ cb.set_active(0)
+ cb.connect("changed", self._style_changed)
+ vb.pack_start(cb, False, False)
+
+ self.palette = gtk.ToolPalette()
+ self._load_stock_items()
+
+ self.sw = gtk.ScrolledWindow()
+ self.sw.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ self.sw.add(self.palette)
+ vb.pack_start(self.sw, True, True)
+
+ self.add(vb)
+ self.show_all()
+
+ def _orientation_changed(self, cb):
+ i = cb.get_active_iter()
+ if i:
+ val = cb.get_model().get_value(i, 1)
+ if val == gtk.ORIENTATION_HORIZONTAL:
+ self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
+ else:
+ self.sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ self.palette.set_orientation(val)
+
+ def _style_changed(self, cb):
+ i = cb.get_active_iter()
+ if i:
+ self.palette.set_style(cb.get_model().get_value(i, 1))
+
+ def _load_stock_items(self):
+ groups = {
+ "a":gtk.ToolItemGroup("Stock Icons (A-F)"),
+ "g":gtk.ToolItemGroup("Stock Icons (G-N)"),
+ "o":gtk.ToolItemGroup("Stock Icons (O-R)"),
+ "s":gtk.ToolItemGroup("Stock Icons (S-Z)")
+ }
+ group = groups["a"]
+ for g in groups.values():
+ self.palette.add(g)
+
+ items = gtk.stock_list_ids()
+ items.sort()
+ for i in items:
+ #stock id names are in form gtk-foo, sort into one of the groups above
+ try:
+ group = groups[i[4]]
+ except KeyError:
+ pass
+
+ b = gtk.ToolButton(i)
+ b.set_tooltip_text(i)
+ b.set_is_important(True)
+ info = gtk.stock_lookup(i)
+ if info:
+ b.set_label(info[1].replace("_",""))
+ else:
+ b.set_label(i)
+
+ group.insert(b,-1)
+
+
+
+def main():
+ ToolPaletteDemo()
+ gtk.main()
+
+if __name__ == '__main__':
+ main()