1public class MyWindow : Gtk.ApplicationWindow {
2
3	internal MyWindow (MyApplication app) {
4		Object (application: app, title: "MenuButton Example");
5		this.set_default_size (600, 400);
6		var grid = new Gtk.Grid ();
7
8		var menubutton = new Gtk.MenuButton();
9		menubutton.set_size_request (80, 35);
10
11		var menumodel = new Menu ();
12		menumodel.append ("New", "app.new");
13		menumodel.append ("About", "win.about");
14
15		/* We create the last item as a MenuItem, so that
16		 * a submenu can be appended to this menu item.
17		 */
18		var submenu = new Menu ();
19		menumodel.append_submenu ("Other", submenu);
20		submenu.append ("Quit", "app.quit");
21		menubutton.set_menu_model (menumodel);
22
23		var about_action = new SimpleAction ("about", null);
24		about_action.activate.connect (this.about_cb);
25		this.add_action (about_action);
26
27		this.add(grid);
28		grid.attach(menubutton, 0, 0, 1, 1);
29	}
30
31	void about_cb (SimpleAction simple, Variant? parameter) {
32		print ("You clicked \"About\"\n");
33	}
34}
35
36public class MyApplication : Gtk.Application {
37	protected override void activate () {
38		new MyWindow (this).show_all ();
39	}
40
41	internal MyApplication () {
42		Object (application_id: "org.example.MyApplication");
43	}
44
45	/* Override the 'startup' signal of GLib.Application. */
46	protected override void startup () {
47		base.startup ();
48
49		var new_action = new SimpleAction ("new", null);
50		new_action.activate.connect (this.new_cb);
51		this.add_action (new_action);
52
53		var quit_action = new SimpleAction ("quit", null);
54		quit_action.activate.connect (this.quit);
55		this.add_action (quit_action);
56	}
57
58	void new_cb (SimpleAction simple, Variant? parameter) {
59		print ("You clicked \"New\"\n");
60	}
61}
62
63public int main (string[] args) {
64	return new MyApplication ().run (args);
65}
66