This file is indexed.

/usr/share/help/es/gnome-devel-demos/gmenu.py.page is in gnome-devel-docs 3.28.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<?xml version="1.0" encoding="utf-8"?>
<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="gmenu.py" xml:lang="es">
  <info>
    <title type="text">GMenu (Python)</title>
    <link type="guide" xref="beginner.py#menu-combo-toolbar"/>
    <link type="seealso" xref="signals-callbacks.py"/>
    <link type="next" xref="menubutton.py"/>
    <revision version="0.1" date="2012-04-28" status="draft"/>

    <credit type="author copyright">
      <name>Tiffany Antopolski</name>
      <email its:translate="no">tiffany.antopolski@gmail.com</email>
      <years>2012</years>
    </credit>

    <credit type="author copyright">
      <name>Marta Maria Casetti</name>
      <email its:translate="no">mmcasetti@gmail.com</email>
      <years>2012</years>
    </credit>

    <desc>Una implementación sencilla de GMenu</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Daniel Mustieles</mal:name>
      <mal:email>daniel.mustieles@gmail.com</mal:email>
      <mal:years>2011 - 2017</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Nicolás Satragno</mal:name>
      <mal:email>nsatragno@gmail.com</mal:email>
      <mal:years>2012 - 2013</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Jorge González</mal:name>
      <mal:email>jorgegonz@svn.gnome.org</mal:email>
      <mal:years>2011</mal:years>
    </mal:credit>
  </info>

  <title>GMenu</title>
  <media type="image" mime="image/png" src="media/gmenu.py.png"/>
  <p>Una GtkApplication con un GMenu sencillo y SimpleActions</p>

  <links type="section"/>

  <section id="code">
    <title>Código usado para generar este ejemplo</title>
    <code mime="text/x-python" style="numbered">
    from gi.repository import Gtk
from gi.repository import Gio
import sys


class MyWindow(Gtk.ApplicationWindow):

    def __init__(self, app):
        Gtk.Window.__init__(self, title="GMenu Example", application=app)


class MyApplication(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        # start the application
        Gtk.Application.do_startup(self)

        # create a menu
        menu = Gio.Menu()
        # append to the menu three options
        menu.append("New", "app.new")
        menu.append("About", "app.about")
        menu.append("Quit", "app.quit")
        # set the menu as menu of the application
        self.set_app_menu(menu)

        # create an action for the option "new" of the menu
        new_action = Gio.SimpleAction.new("new", None)
        # connect it to the callback function new_cb
        new_action.connect("activate", self.new_cb)
        # add the action to the application
        self.add_action(new_action)

        # option "about"
        about_action = Gio.SimpleAction.new("about", None)
        about_action.connect("activate", self.about_cb)
        self.add_action(about_action)

        # option "quit"
        quit_action = Gio.SimpleAction.new("quit", None)
        quit_action.connect("activate", self.quit_cb)
        self.add_action(quit_action)

    # callback function for "new"
    def new_cb(self, action, parameter):
        print("This does nothing. It is only a demonstration.")

    # callback function for "about"
    def about_cb(self, action, parameter):
        print("No AboutDialog for you. This is only a demonstration.")

    # callback function for "quit"
    def quit_cb(self, action, parameter):
        print("You have quit.")
        self.quit()

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
</code>
  </section>

  <section id="methods">
    <title>Métodos útiles para una «GSimpleAction» y un GMenu</title>

    <p>En la línea 33, la señal <code>«activate»</code> de la acción <code>new_action</code> (no el menú) se conecta a la función de retorno de llamada <code>new_cb()</code> usando <code><var>action</var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. Consulte la <link xref="signals-callbacks.py"/> para obtener una explicación más detallada.</p>

    <p>Métodos útiles para una «GSimpleAction»:</p>
    <list>
      <item><p>Para crear una acción nueva que <em>no dependa del estado</em>, es decir, una acción que no retenga o dependa de un estado dado a la acción en sí, use</p>
      <code>
action = Gio.SimpleAction.new("name", parameter_type)</code>
      <p>donde <code>"name"</code> es el nombre de la acción y <code>parameter_type</code> es el tipo de parámetro que recibe la acción cuando se activa. Este puede ser <code>None</code>, o <code>GLib.VariantType.new('s')</code> si el parámetro es del tipo <code>str</code>, o en lugar de <code>'s'</code> un carácter como se describe <link href="http://developer.gnome.org/glib/unstable/glib-GVariantType.html">aquí</link>. Para crear una acción nueva <em>con estado</em>, use</p>
      <code>
action = Gio.SimpleAction.new_stateful("name", parameter_type, initial_state)</code>
      <p>donde <code>initial_state</code> está definido como una GVariant: por ejemplo <code>Glib.Variant.new_string('start')</code>; para una lista de posibilidades consulte <link href="http://developer.gnome.org/glib/unstable/glib-GVariant.html">aquí</link>.</p></item>
      <item><p><code>set_enabled(True)</code> configura la acción como habilitada; una acción debe habilitarse para poder activarse o para que llamantes exteriores cambien su estado. Sólo el que implementa la acción debe llamarlo. Los usuarios de la acción no deben intentar modificar su opción «enabled».</p></item>
      <item><p><code>set_state(estado)</code>, donde <code>estado</code> es una GVariant, establece el estado de la acción, actualizando la propiedad «state» a un valor dado. Sólo el que implementa la acción debe llamarlo; los usuarios de la acción, en cambio, deben llamar a <code>change_state(estado)</code> (donde <code>estado</code> es como se mencionó) para solicitar el cambio.</p></item>
    </list>

    <p>Métodos útiles para un GMenu:</p>
    <list>
      <item><p>Para insertar un elemento en el menú en una <code>posición</code>, use <code>insert(posición, etiqueta, acción_detallada)</code>, donde <code>etiqueta</code> es la etiqueta que aparecerá en el menú y <code>acción_detallada</code> es una cadena compuesta por el nombre de la acción a la que se la agrega el prefijo <code>app.</code>. Puede encontrar una discusión más detallada de esto en la <link xref="menubar.py#win-app"/>.</p>
      <p>Para agregar o anteponer un elemento en el menú use respectivamente <code>append(etiqueta, acción_detallada)</code> y <code>prepend(etiqueta, acción_detallada)</code>.</p></item>
      <item><p>Otra manera de añadir elementos al menú es crearlos como <code>GMenuItem</code> y usar <code>insert_item(posición, elemento)</code>, <code>append_item(elemento)</code>, o <code>prepend_item(elemento)</code>; por lo que por ejemplo se podría tener:</p>
      <code>
about = Gio.MenuItem.new("About", "app.about")
menu.append_item(about)</code>
      </item>
      <item><p>También se puede añadir una subsección completa a un menú usando <code>insert_section(posición, etiqueta, sección)</code>, <code>append_section(etiqueta, sección)</code>, o <code>prepend_section(etiqueta, sección)</code>, donde <code>etiqueta</code> es el título de la subsección.</p></item>
      <item><p>Para añadir un submenú que se expanda y colapse, use <code>insert_submenu(posición, etiqueta, sección)</code>, <code>append_submenu(etiqueta, sección)</code>, o <code>prepend_submenu(etiqueta, sección)</code>, donde <code>etiqueta</code> es el título de la subsección.</p></item>
      <item><p>Para eliminar un elemento del menú, use <code>remove(posición)</code>.</p></item>
      <item><p>Para establecer una etiqueta para el menú, use <code>set_label(etiqueta)</code>.</p></item>
    </list>

  </section>

  <section id="references">
    <title>Referencias de la API</title>
    <p>En este ejemplo se usa lo siguiente:</p>
    <list>
      <item><p><link href="http://developer.gnome.org/gio/unstable/GMenu.html">GMenu</link></p></item>
      <item><p><link href="http://developer.gnome.org/gio/stable/GSimpleAction.html">GSimpleAction</link></p></item>
      <item><p><link href="http://developer.gnome.org/glib/unstable/glib-GVariantType.html">GVariantType</link></p></item>
      <item><p><link href="http://developer.gnome.org/glib/unstable/glib-GVariant.html">GVariant</link></p></item>
    </list>
  </section>
</page>