Blame platform-demos/gl/menubutton.vala.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="menubutton.vala" xml:lang="gl">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">MenuButton (Vala)</title>
Packit 1470ea
    <link type="guide" xref="beginner.vala#buttons"/>
Packit 1470ea
    <revision version="0.1" date="2012-07-18" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Tiffany Antopolski</name>
Packit 1470ea
      <email its:translate="no">tiffany.antopolski@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>A widget that shows a menu when clicked on</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Fran Dieguez</mal:name>
Packit 1470ea
      <mal:email>frandieguez@gnome.org</mal:email>
Packit 1470ea
      <mal:years>2012-2013.</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>MenuButton</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/menubutton.png"/>
Packit 1470ea
  

The GtkMenuButton widget is used to display a menu when clicked on. This menu can be provided either as a GtkMenu, or an abstract GMenuModel.

Packit 1470ea
Packit 1470ea
The GtkMenuButton widget can hold any valid child widget. That is, it can hold almost any other standard GtkWidget. The most commonly used child is the provided GtkArrow.

Packit 1470ea
Packit 1470ea
<note>

You need to be running GNOME 3.6 for the MenuButton to work.

</note>
Packit 1470ea
public class MyWindow : Gtk.ApplicationWindow {
Packit 1470ea
Packit 1470ea
	internal MyWindow (MyApplication app) {
Packit 1470ea
		Object (application: app, title: "MenuButton Example");
Packit 1470ea
		this.set_default_size (600, 400);
Packit 1470ea
		var grid = new Gtk.Grid ();
Packit 1470ea
Packit 1470ea
		var menubutton = new Gtk.MenuButton();
Packit 1470ea
		menubutton.set_size_request (80, 35);
Packit 1470ea
Packit 1470ea
		var menumodel = new Menu ();
Packit 1470ea
		menumodel.append ("New", "app.new");
Packit 1470ea
		menumodel.append ("About", "win.about");
Packit 1470ea
Packit 1470ea
		/* We create the last item as a MenuItem, so that
Packit 1470ea
		 * a submenu can be appended to this menu item.
Packit 1470ea
		 */
Packit 1470ea
		var submenu = new Menu ();
Packit 1470ea
		menumodel.append_submenu ("Other", submenu);
Packit 1470ea
		submenu.append ("Quit", "app.quit");
Packit 1470ea
		menubutton.set_menu_model (menumodel);
Packit 1470ea
Packit 1470ea
		var about_action = new SimpleAction ("about", null);
Packit 1470ea
		about_action.activate.connect (this.about_cb);
Packit 1470ea
		this.add_action (about_action);
Packit 1470ea
Packit 1470ea
		this.add(grid);
Packit 1470ea
		grid.attach(menubutton, 0, 0, 1, 1);
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void about_cb (SimpleAction simple, Variant? parameter) {
Packit 1470ea
		print ("You clicked \"About\"\n");
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
public class MyApplication : Gtk.Application {
Packit 1470ea
	protected override void activate () {
Packit 1470ea
		new MyWindow (this).show_all ();
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	internal MyApplication () {
Packit 1470ea
		Object (application_id: "org.example.MyApplication");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	/* Override the 'startup' signal of GLib.Application. */
Packit 1470ea
	protected override void startup () {
Packit 1470ea
		base.startup ();
Packit 1470ea
Packit 1470ea
		var new_action = new SimpleAction ("new", null);
Packit 1470ea
		new_action.activate.connect (this.new_cb);
Packit 1470ea
		this.add_action (new_action);
Packit 1470ea
Packit 1470ea
		var quit_action = new SimpleAction ("quit", null);
Packit 1470ea
		quit_action.activate.connect (this.quit);
Packit 1470ea
		this.add_action (quit_action);
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void new_cb (SimpleAction simple, Variant? parameter) {
Packit 1470ea
		print ("You clicked \"New\"\n");
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
public int main (string[] args) {
Packit 1470ea
	return new MyApplication ().run (args);
Packit 1470ea
}
Packit 1470ea
Packit 1470ea

Neste exemplo empregaremos o seguinte:

Packit 1470ea
<list>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/3.5/gtk3-GtkMenuButton.html">MenuButton</link>

</item>
Packit 1470ea
</list>
Packit 1470ea
</page>