SLIDE 1
PyGTK + ipython + parasite quick tour chrysn <chrysn@fsfe.org> - - PowerPoint PPT Presentation
PyGTK + ipython + parasite quick tour chrysn <chrysn@fsfe.org> - - PowerPoint PPT Presentation
PyGTK + ipython + parasite quick tour chrysn <chrysn@fsfe.org> 2010-11-11 GTK+ Language bindings Getting started More GTK features The boring stuff at the beginning of a presentation G IMP T ool k it (created 1997 for GIMP)
SLIDE 2
SLIDE 3
The boring stuff at the beginning of a presentation
◮ GIMP Toolkit (created 1997 for GIMP) ◮ written in C ◮ works on X11, Windows and OS X (?) ◮ GTK ⊃ GObject ⊃ GLib
SLIDE 4
GTK+ Language bindings Getting started More GTK features
SLIDE 5
Python
1 import gtk 2 3 w = gtk . Window () 4
- w. s h o w a l l ()
5 6 gtk . main ()
SLIDE 6
C
1 #include <gtk / gtk . h> 2 3 int main ( int argc , char ∗ argv [ ] ) { 4 GtkWidget ∗w; 5 6 g t k i n i t (&argc , &argv ) ; 7 8 w = gtk window new (GTK WINDOW TOPLEVEL) ; 9 g t k w i d g e t s h o w a l l (w) ; 10 11 gtk main ( ) ; 12 13 return 0; 14 }
SLIDE 7
Vala
1 using Gtk ; 2 3 s t a t i c int main ( s t r i n g [ ] args ) { 4 Gtk . i n i t ( r e f args ) ; 5 6 var w = new Window ( ) ; 7
- w. s h o w a l l ( ) ;
8 9 Gtk . main ( ) ; 10 11 return 0; 12 }
SLIDE 8
Ruby
1 r e q u i r e ’ gtk2 ’ 2 3 Gtk . i n i t 4 5 w = Gtk : : Window . new 6
- w. s h o w a l l
7 8 Gtk . main
SLIDE 9
- thers
◮ C# ◮ Java ◮ JavaScript ◮ Perl ◮ R ◮ Lua ◮ Guile ◮ PHP ◮ Ada ◮ OCaml ◮ Haskell ◮ FreeBASIC ◮ D
SLIDE 10
GTK+ Language bindings Getting started More GTK features
SLIDE 11
Tools
aptitude install python-gtk2 ipython gtkparasite python-gtk2-doc
SLIDE 12
Working environment
GTK MODULES=gtkparasite ipython import gtk (the Parasite window can be ignored for the moment)
SLIDE 13
Getting help
1 w = gtk . Window () 2 3 w.<tab> 4
- w. a c t i v a t e w. a c t i v a t e d e f a u l t
. . . 5 6
- w. props .<tab>
7
- w. props . a c c e p t f o c u s w. props . allow grow
. . . 8 9 help (w) # l i s t s s i g n a l s , p r o p e r t i e s and methods
SLIDE 14
Extending the demo program
1 l = gtk . Label ( ”My l a b e l ” ) 2 b = gtk . Button ( ”My button ” ) 3 4 v = gtk . VBox () 5 v . p a c k s t a r t ( l ) 6 v . p a c k s t a r t (b) 7 8
- w. add ( v )
9 10
- w. s h o w a l l ()
11 12
- w. props . t i t l e = ”A demo program”
SLIDE 15
Signals
1 def add something ( widget ) : 2 l . props . l a b e l += ” , and c l i c k e d ” 3 4 b . connect ( ’ c l i c k e d ’ , add something )
SLIDE 16
A tour through the widget library
gtk-demo pygtk-demo
SLIDE 17
GTK+ Language bindings Getting started More GTK features
SLIDE 18
UIManager definition
1 <ui> 2 <menubar name=”MenuBar”> 3 <menu a c t i o n=” F i l e ”> 4 <menuitem a c t i o n=”New” /> 5 <s e p a r a t o r /> 6 <menuitem a c t i o n=” Quit ” /> 7 </menu> 8 <menu a c t i o n=”Help”> 9 <menuitem a c t i o n=”About” /> 10 </menu> 11 </menubar> 12 <t o o l b a r name=”ToolBar”> 13 <t o o l i t e m a c t i o n=”New” /> 14 </toolbar > 15 </ui>
SLIDE 19
UIManager usage
1 import gtk 2 3 w = gtk . Window () 4 5 def do new (∗ args ) : 6 print ”new” 7 8 def do about (∗ args ) : 9 print ” about ”
SLIDE 20
UIManager usage
1 actiongroup = gtk . ActionGroup ( ’ d e f a u l t ’ ) 2 actiongroup . a d d a c t i o n s ( [ 3 ( ’ F i l e ’ , None , ’ F i l e ’ ) , 4 ( ’New ’ , gtk .STOCK NEW, None , None , 5 None , do new ) , 6 ( ’ Quit ’ , gtk . STOCK QUIT , None , None , 7 None , gtk . main quit ) , 8 ( ’ Help ’ , None , ’ Help ’ ) , 9 ( ’ About ’ , gtk .STOCK ABOUT, None , None , 10 None , do about ) , 11 ] ) 12 13 uiman = gtk . UIManager () 14 uiman . i n s e r t a c t i o n g r o u p ( actiongroup , 0) 15 uiman . a d d u i f r o m f i l e ( ’ uimanager . xml ’ )
SLIDE 21
UIManager usage
1 vbox = gtk . VBox () 2 vbox . p a c k s t a r t ( uiman . get widget ( ’ /MenuBar ’ ) , 3 expand=False ) 4 vbox . p a c k s t a r t ( uiman . get widget ( ’ /ToolBar ’ ) , 5 expand=False ) 6
- w. add ( vbox )
7 8
- w. s h o w a l l ()
9 10 accelgroup = uiman . g e t a c c e l g r o u p () 11
- w. add accel group ( accelgroup )
12 13
- w. connect ( ’ destroy ’ ,
gtk . main quit ) 14 15 gtk . main ()
SLIDE 22
GTK builder
1 import gtk 2 3 b u i l d e r = gtk . B u i l d e r () 4 b u i l d e r . a d d f r o m f i l e ( ’ b u i l d e r . xml ’ ) 5 6 window = b u i l d e r . g e t o b j e c t ( ’ MainWindow ’ ) 7 8 window . s h o w a l l () 9 10 gtk . main ()
SLIDE 23
Glib/GObject events
1 window . connect ( ’ n o t i f y : : is −a c t i v e ’ , 2 t o g g l e p a u s e s t a t u s ) 3 4 import g l i b 5 6 g l i b . i d l e a d d ( r u n a b i t l a t e r ) 7 8 g l i b . io add watch ( s o m e f i l e . f i l e n o () , 9 g l i b . IO IN , read more data )
SLIDE 24