Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/exercises/es/Ejercicio18.activity/ejercicio18.py
blob: 6282eb73139539f25d4dc950c21734ecae3af856 (plain)
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
#!/usr/bin/python
# coding=utf-8

"""Convertir un programa GTK+ simple para ser una actividad de Sugar.

Usted debe convertir la simple programa GTK+ del ejercicio 17 como una
actividad de Sugar.

Todos los demás archivos de la actividad (activity.info, setup.py, etc.) se han
previsto ya, simplemente debe modificar el código de este archivo para derivar
la clase desde sugar3.activity.activity.Activity en lugar de desde Gtk.Window y
hacer algunos otros cambios.

 1. Quite la línea “!#/usr/bin/python” desde el principio del archivo. La
    primera línea del archivo debe ser ahora “# coding=utf-8”.
 2. Cambiar el nombre de la clase de “Ejercicio18Actividad”.
 3. Agregar un parámetro ‘handle’ al método __init__ y se propagan al
    constructor principal en la llamada super().
 4. Retire el título de la ventana de la llamada a super() de la constructor.
 5. Retire la llamada a set_default_size() y el callback para la señal de
    ‘destroy’ de la ventana.
 6. Agregar una barra de herramientas de la actividad (ToolbarBox) y agregue un
    botón de actividad (ActivityToolbarButton) y un botón de parada
    (StopButton) a la misma.
 7. Cambie el self.add() a self.set_canvas().
 8. En un terminal, cambie a este directorio y ejecute ‘./setup.py dev’ para
    añadir la actividad de Sugar en su ordenador.
 9. En una terminal, ejecute ‘sugar-emulator’ y probar la actividad.

Tenga en cuenta que de las declaraciones de ‘import’ necesarios ya se han
añadido al archivo.

No te olvides de documentar los nuevos métodos que se agregan.

Sugerencia: El código necesario para el paso 6 es:
        # Crear la caja de herramientas de actividad estándar.
        toolbar_box = ToolbarBox()
        self.set_toolbar_box(toolbar_box)
        toolbar_box.show()

        main_toolbar = toolbar_box.toolbar

        activity_toolbar_button = widgets.ActivityToolbarButton(self)
        main_toolbar.insert(activity_toolbar_button, 0)
        activity_toolbar_button.show()

        stop_button = widgets.StopButton(self)
        stop_button.show()
        main_toolbar.insert(stop_button, -1)
"""

from gi.repository import Gtk
from sugar3.activity import activity, widgets
from sugar3.graphics.toolbarbox import ToolbarBox
from sugar3.graphics.toolbutton import ToolButton


class SimpleWindow(Gtk.Window):
    """Una ventana simple que muestra una etiqueta y un botón."""
    def __init__(self):
        super(SimpleWindow, self).__init__(title='Ventana Simple')

        # Establecer un tamaño predeterminado de la ventana.
        self.set_default_size(200, 200)

        # Configurar un callback para cerrar la ventana. No modifique esto.
        self.connect('destroy', self.__window_destroy_cb)

        # Agregar una caja de la ventana.
        box = Gtk.Box()
        box.set_orientation(Gtk.Orientation.VERTICAL)
        box.set_spacing(8)
        box.set_border_width(8)
        box.show()
        self.add(box)

        # Creación y configuración de la etiqueta y el botón.
        label = Gtk.Label('Etiqueta inicial.')
        label.show()
        box.pack_start(label, True, True, 0)

        button = Gtk.Button('Cambiar Etiqueta')
        button.show()
        box.pack_start(button, False, True, 0)

        # Conecte el callback para el botón.
        button.connect('clicked', self.__button_clicked_cb)

        # Guarde la etiqueta como una variable de objeto que se pueda acceder
        # desde el callback del botón.
        self._label = label

    def __button_clicked_cb(self, button):
        """Callback para cambiar el texto de la etiqueta cuando se hace clic en
        el botón."""
        self._label.set_text('Etiqueta final.')

    def __window_destroy_cb(self, window):
        """Callback para salir del programa cuando la ventana está cerrada.

        No modifique esto."""
        Gtk.main_quit()