]> git.donarmstrong.com Git - lilypond.git/blob - ikebana.py
* ikebana.py (NotationApplication.create_window): add zoom.
[lilypond.git] / ikebana.py
1 #!/usr/bin/env python
2
3 import os
4 import gtk
5 import gnomecanvas
6 import random
7 import string
8 import notation
9 import notationcanvas
10 import music
11
12 def mainquit (*args):
13     gtk.main_quit ()
14
15
16 class NotationApplication:
17     def __init__ (self):
18         self.music = music.Music_document ()
19         
20         nc = notation.Notation_controller (self.music)
21         self.notation_controller = nc
22
23         ncc = notationcanvas.Notation_canvas_controller (nc.notation)
24         self.notation_canvas_controller = ncc
25         
26         self.window = self.create_window ()
27         
28     def create_window (self):
29         win = gtk.Window ()
30         win.connect ('destroy', mainquit)
31         win.set_title ('Ikebana - visual music notation')
32
33         canvas = self.notation_canvas_controller.canvas
34         canvas.show ()
35
36         tb_type = notationcanvas.Notation_toolbar 
37         toolbar = tb_type (self.notation_canvas_controller.notation,
38                            self.notation_canvas_controller.check_update
39                            )
40
41         canvas.connect ("key-press-event", toolbar.keypress_callback)
42
43         vbox = gtk.VBox ()
44         vbox.pack_start (canvas, expand=True)
45         vbox.pack_start (toolbar, expand=False)
46         vbox.show ()
47         
48         win.add (vbox)
49         toolbar.show ()
50
51         toolbar.add_button ('zoom out', 'minus', lambda: canvas.zoom (-1), 0)
52         toolbar.add_button ('zoom in', 'Shift+plus', lambda: canvas.zoom (1), 0)
53         
54         win.show()
55         
56         return win
57         
58     def main (self):
59         self.notation_controller.update_notation ()
60         self.notation_canvas_controller.update_canvas ()
61
62 if __name__ == '__main__':
63     c = NotationApplication ()
64     c.main ()
65     gtk.main ()