Blame platform-demos/gl/toolbar.py.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="toolbar.py" xml:lang="gl">
Packit 1470ea
  <info>
Packit 1470ea
    <title type="text">Toolbar (Python)</title>
Packit 1470ea
    <link type="guide" xref="beginner.py#menu-combo-toolbar"/>
Packit 1470ea
    <link type="seealso" xref="grid.py"/>
Packit 1470ea
    <link type="next" xref="tooltip.py"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-05" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Unha barra de botóns e outros widgets</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>Barra de ferramentas</title>
Packit 1470ea
Packit 1470ea
  <media type="image" mime="image/png" src="media/toolbar.png"/>
Packit 1470ea
  

An example of toolbar with buttons (from stock icons).

Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="code">
Packit 1470ea
    <title>Código usado para xerar este exemplo</title>
Packit 1470ea
Packit 1470ea
    from gi.repository import Gtk
Packit 1470ea
from gi.repository import Gdk
Packit 1470ea
from gi.repository import Gio
Packit 1470ea
import sys
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(self, title="Toolbar Example", application=app)
Packit 1470ea
        self.set_default_size(400, 200)
Packit 1470ea
Packit 1470ea
        # a grid to attach the toolbar
Packit 1470ea
        grid = Gtk.Grid()
Packit 1470ea
Packit 1470ea
        # a toolbar created in the method create_toolbar (see below)
Packit 1470ea
        toolbar = self.create_toolbar()
Packit 1470ea
        # with extra horizontal space
Packit 1470ea
        toolbar.set_hexpand(True)
Packit 1470ea
        # show the toolbar
Packit 1470ea
        toolbar.show()
Packit 1470ea
Packit 1470ea
        # attach the toolbar to the grid
Packit 1470ea
        grid.attach(toolbar, 0, 0, 1, 1)
Packit 1470ea
Packit 1470ea
        # add the grid to the window
Packit 1470ea
        self.add(grid)
Packit 1470ea
Packit 1470ea
        # create the actions that control the window and connect their signal to a
Packit 1470ea
        # callback method (see below):
Packit 1470ea
Packit 1470ea
        # undo
Packit 1470ea
        undo_action = Gio.SimpleAction.new("undo", None)
Packit 1470ea
        undo_action.connect("activate", self.undo_callback)
Packit 1470ea
        self.add_action(undo_action)
Packit 1470ea
Packit 1470ea
        # fullscreen
Packit 1470ea
        fullscreen_action = Gio.SimpleAction.new("fullscreen", None)
Packit 1470ea
        fullscreen_action.connect("activate", self.fullscreen_callback)
Packit 1470ea
        self.add_action(fullscreen_action)
Packit 1470ea
Packit 1470ea
    # a method to create the toolbar
Packit 1470ea
    def create_toolbar(self):
Packit 1470ea
        # a toolbar
Packit 1470ea
        toolbar = Gtk.Toolbar()
Packit 1470ea
Packit 1470ea
        # which is the primary toolbar of the application
Packit 1470ea
        toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
Packit 1470ea
Packit 1470ea
        # create a button for the "new" action, with a stock image
Packit 1470ea
        new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)
Packit 1470ea
        # label is shown
Packit 1470ea
        new_button.set_is_important(True)
Packit 1470ea
        # insert the button at position in the toolbar
Packit 1470ea
        toolbar.insert(new_button, 0)
Packit 1470ea
        # show the button
Packit 1470ea
        new_button.show()
Packit 1470ea
        # set the name of the action associated with the button.
Packit 1470ea
        # The action controls the application (app)
Packit 1470ea
        new_button.set_action_name("app.new")
Packit 1470ea
Packit 1470ea
        # button for the "open" action
Packit 1470ea
        open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)
Packit 1470ea
        open_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(open_button, 1)
Packit 1470ea
        open_button.show()
Packit 1470ea
        open_button.set_action_name("app.open")
Packit 1470ea
Packit 1470ea
        # button for the "undo" action
Packit 1470ea
        undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)
Packit 1470ea
        undo_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(undo_button, 2)
Packit 1470ea
        undo_button.show()
Packit 1470ea
        undo_button.set_action_name("win.undo")
Packit 1470ea
Packit 1470ea
        # button for the "fullscreen/leave fullscreen" action
Packit 1470ea
        self.fullscreen_button = Gtk.ToolButton.new_from_stock(
Packit 1470ea
            Gtk.STOCK_FULLSCREEN)
Packit 1470ea
        self.fullscreen_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(self.fullscreen_button, 3)
Packit 1470ea
        self.fullscreen_button.set_action_name("win.fullscreen")
Packit 1470ea
Packit 1470ea
        # return the complete toolbar
Packit 1470ea
        return toolbar
Packit 1470ea
Packit 1470ea
    # callback method for undo
Packit 1470ea
    def undo_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Undo\".")
Packit 1470ea
Packit 1470ea
    # callback method for fullscreen / leave fullscreen
Packit 1470ea
    def fullscreen_callback(self, action, parameter):
Packit 1470ea
        # check if the state is the same as Gdk.WindowState.FULLSCREEN, which
Packit 1470ea
        # is a bit flag
Packit 1470ea
        is_fullscreen = self.get_window().get_state(
Packit 1470ea
        ) & Gdk.WindowState.FULLSCREEN != 0
Packit 1470ea
        if not is_fullscreen:
Packit 1470ea
            self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)
Packit 1470ea
            self.fullscreen()
Packit 1470ea
        else:
Packit 1470ea
            self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)
Packit 1470ea
            self.unfullscreen()
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
        # create the actions that control the window and connect their signal to a
Packit 1470ea
        # callback method (see below):
Packit 1470ea
Packit 1470ea
        # new
Packit 1470ea
        new_action = Gio.SimpleAction.new("new", None)
Packit 1470ea
        new_action.connect("activate", self.new_callback)
Packit 1470ea
        app.add_action(new_action)
Packit 1470ea
Packit 1470ea
        # open
Packit 1470ea
        open_action = Gio.SimpleAction.new("open", None)
Packit 1470ea
        open_action.connect("activate", self.open_callback)
Packit 1470ea
        app.add_action(open_action)
Packit 1470ea
Packit 1470ea
    # callback method for new
Packit 1470ea
    def new_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"New\".")
Packit 1470ea
Packit 1470ea
    # callback method for open
Packit 1470ea
    def open_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Open\".")
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="methods">
Packit 1470ea
    <title>Useful methods for a Toolbar widget</title>
Packit 1470ea
    

In line 32 the signal "activate" from the action undo_action is connected to the callback function undo_callback() using action.connect(signal, callback function). See <link xref="signals-callbacks.py"/> for a more detailed explanation.

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

Use insert(tool_item, position) to insert the tool_item at position. If position is negative, the item is appended at the end of the toolbar.

</item>
Packit 1470ea
      <item>

get_item_index(tool_item) retrieves the position of tool_item on the toolbar.

</item>
Packit 1470ea
      <item>

get_n_items() returns the number of items on the toolbar; get_nth_item(position) returns the item in position position.

</item>
Packit 1470ea
      <item>

If the toolbar does not have room for all the menu items, and set_show_arrow(True), the items that do not have room are shown through an overflow menu.

</item>
Packit 1470ea
      <item>

set_icon_size(icon_size) sets the size of icons in the toolbar; icon_size can be one of Gtk.IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG. This should be used only for special-purpose toolbars, normal application toolbars should respect user preferences for the size of icons. unset_icon_size() unsets the preferences set with set_icon_size(icon_size), so that user preferences are used to determine the icon size.

</item>
Packit 1470ea
      <item>

set_style(style), where style is one of Gtk.ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk.ToolbarStyle.BOTH_HORIZ, sets if the toolbar shows only icons, only text, or both (vertically stacked or alongside each other). To let user preferences determine the toolbar style, and unset a toolbar style so set, use unset_style().

</item>
Packit 1470ea
    </list>
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="reference">
Packit 1470ea
    <title>API References</title>
Packit 1470ea
    

Neste exemplo empregaremos o seguinte:

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

<link href="http://developer.gnome.org/gtk3/unstable/GtkToolbar.html">GtkToolbar</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkToolButton.html">GtkToolButton</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkToolItem.html">GtkToolItem</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html">Stock Items</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkActionable.html">GtkActionable</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkWidget.html">GtkWidget</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gdk3/unstable/gdk3-Event-Structures.html#GdkEventWindowState">Event Structures</link>

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