Blame platform-demos/cs/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="cs">
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>Lišta s tlačítky a dalšími widgety</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Toolbar</title>
Packit 1470ea
Packit 1470ea
  <media type="image" mime="image/png" src="media/toolbar.png"/>
Packit 1470ea
  

Příklad lišty s tlačítky (se standardními ikonami).

Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="code">
Packit 1470ea
    <title>Kód použitý k vygenerování tohoto příkladu</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
        # Mřížka pro připojení nástrojové lišty
Packit 1470ea
        grid = Gtk.Grid()
Packit 1470ea
Packit 1470ea
        # Nástrojová lišta vytvořená v metodě create_toolbar (viz dále)
Packit 1470ea
        toolbar = self.create_toolbar()
Packit 1470ea
        # S dodatečným vodorovným místem
Packit 1470ea
        toolbar.set_hexpand(True)
Packit 1470ea
        # Zobrazí nástrojovou lištu
Packit 1470ea
        toolbar.show()
Packit 1470ea
Packit 1470ea
        # Připojí nástrojovou lištu do mřížky
Packit 1470ea
        grid.attach(toolbar, 0, 0, 1, 1)
Packit 1470ea
Packit 1470ea
        # Přidá mřížku do okna
Packit 1470ea
        self.add(grid)
Packit 1470ea
Packit 1470ea
        # Vytvoří akce, které ovládají okno a napojí jejich signály na
Packit 1470ea
        # metody zpětného volání (viz dále):
Packit 1470ea
Packit 1470ea
        # Akce "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
        # Akce "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
    # Metoda, která vytvoří nástrojovou lištu
Packit 1470ea
    def create_toolbar(self):
Packit 1470ea
        # Nástrojová lišta
Packit 1470ea
        toolbar = Gtk.Toolbar()
Packit 1470ea
Packit 1470ea
        # Jedná se o hlavní nástrojovou lištu aplikace
Packit 1470ea
        toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
Packit 1470ea
Packit 1470ea
        # Vytvoří tlačítko pro akci "new", se standardní ikonou
Packit 1470ea
        new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)
Packit 1470ea
        # Popisek se zobrazuje
Packit 1470ea
        new_button.set_is_important(True)
Packit 1470ea
        # Vloží tlačítko na pozici na nástrojové liště
Packit 1470ea
        toolbar.insert(new_button, 0)
Packit 1470ea
        # Zobrazí tlačítko
Packit 1470ea
        new_button.show()
Packit 1470ea
        # Nastaví název akce přidružené k tlačítku
Packit 1470ea
        # Tato akce řídí aplikaci (app)
Packit 1470ea
        new_button.set_action_name("app.new")
Packit 1470ea
Packit 1470ea
        # Tlačítko pro akci "open"
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
        # Tlačítko pro akci "undo"
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
        # Tlačítko pro akci "fullscreen/leave fullscreen"
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
        # Vrátí kompletní nástrojovou lištu
Packit 1470ea
        return toolbar
Packit 1470ea
Packit 1470ea
    # Metoda zpětného volání pro "undo"
Packit 1470ea
    def undo_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Undo\".")
Packit 1470ea
Packit 1470ea
    # Metoda zpětného volání pro "fullscreen/leave fullscreen"
Packit 1470ea
    def fullscreen_callback(self, action, parameter):
Packit 1470ea
        # Zkontroluje, jestli je stav stejný jako Gdk.WindowState.FULLSCREEN,
Packit 1470ea
        # což je bitový příznak
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
        # Vytvoří akce pro ovládání aplikace a napojí jejich signály na
Packit 1470ea
        # metody zpětného volání (viz dále):
Packit 1470ea
Packit 1470ea
        # Akce "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
        # Akce "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
    # Metoda zpětného volání pro "new"
Packit 1470ea
    def new_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"New\".")
Packit 1470ea
Packit 1470ea
    # Metoda zpětného volání pro "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>Užitečné metody pro widget Toolbar</title>
Packit 1470ea
    

Na řádku 32 je signál "activate" od činnosti undo_action napojen na funkci zpětného volání undo_callback() pomocí action.connect(signál, funkce zpětného volání). Podrobnější vysvětlení viz <link xref="signals-callbacks.py"/>.

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

Použijte insert(nástrojová_položka, pozice) k vložení nástrojové_položky na pozici. Pokud je pozice záporná, bude položka vložena na konec nástrojové lišty.

</item>
Packit 1470ea
      <item>

get_item_index(tool_item) vrací pozici tool_item na nástrojové liště.

</item>
Packit 1470ea
      <item>

get_n_items() vrací počet položek na nástrojové liště. get_nth_item(pozice) vrací položku na pozici pozice.

</item>
Packit 1470ea
      <item>

Pokud nástrojová lišta nemá dostatek místa pro všechny položky a je použito set_show_arrow(True), položky které jdou mimo se zobrazí v nabídce přetékajících položek.

</item>
Packit 1470ea
      <item>

set_icon_size(velikost_ikony) nastavuje velikost ikony na nástrojové liště. Parametr velikost_ikony může být něco z Gtk.IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND nebo Gtk.IconSize.DIALOG. Používat by se to mělo jen pro speciální účely, normálně by nástrojová lišta aplikace měla respektovat uživatelské předvolby pro velikost ikon. unset_icon_size() zruší volbu nastavenou pomocí set_icon_size(velikost_ikony), takže se k určení velikosti ikon použije uživatelská předvolba.

</item>
Packit 1470ea
      <item>

set_style(styl), kde styl je jedno z Gtk.ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH nebo Gtk.ToolbarStyle.BOTH_HORIZ, nastavuje, jestli nástrojová lišta zobrazuje jen ikony, jen text nebo obojí (svisle na sobě nebo vedle sebe). Abyste umožňili uživateli předvolby určující styl nástrojové lišty a zrušit již nastavený styl, použijte unset_style().

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

V této ukázce se používá následující:

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">Standardní položky</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">Struktury událostí</link>

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