[Olpc-uruguay] Consulta, creación de Activity

Flavio Danesse fdanesse en gmail.com
Jue Ene 19 20:27:19 EST 2012


Si, pero a al golpe de vista nada más, import gtk.glade no te va a
funcionar porque la xo no lo tiene. No recuerdo que lo tenga pero casi
seguro que no, fijate a ver si puedes importarlo desde el interprete.



El 19 de enero de 2012 22:51, Alan Jhonn Aguiar Schwyn
<alanjas en hotmail.com>escribió:

>
> Es más fácil fijarse en el log de la actividad...
>
> Busccá la actividad: Log (si está en inglés) o Registro (en español):
>
> http://activities.sugarlabs.org/es-ES/sugar/addon/4056
>
> Entra a tu actividad.. cuando diga "Failed to start" la cerrás..
>
> Vas a esa actividad y buscás el id de la actividad, ej: org.ceibaljam....
>
> Y te fijás que error da..
>
> Si querés podés compartir ese archivo con la lista..
>
> Se guarda en /home/olpc/.sugar/default/logs (si mal no recuerdo)
>
>
> Saludos!
>
> Alan
>
> ------------------------------
> Date: Thu, 19 Jan 2012 22:28:51 -0200
> From: aarias1978 en gmail.com
> To: olpc-uruguay en lists.laptop.org
> Subject: Re: [Olpc-uruguay] Consulta, creación de Activity
>
>
> Buenas noches, luego de haber seguido sus consejos y luego de ver algun
> ejemplo que anda en la vuelta, logre que la Xo hiciera algo,
> lamentablemente no tengo resuelto el asunto, aunque tengo un error para
> pasarles y ver si me pueden dar alguna idea de que puede estar mal.
>
> Error: "Actividad failed to start"
>
> Les paso que odifique en cada archivo.
>
> *setup.py*
>
> #!/usr/bin/env python
> try:
>     from sugar.activity import bundlebuilder
>     bundlebuilder.start()
> except ImportError:
>     import os
>     os.system("find ./ | sed 's,^./,editor.activity/,g' > MANIFEST")
>     os.system('rm editor.xo')
>     os.chdir('..')
>     os.system('zip -r editor.xo editor.activity')
>     os.system('mv editor.xo ./editor.activity')
>     os.chdir('editor.activity')
>
> *activity.py
> *
> # Load GTK
> import gtk
>
> # Load our own source code from gtktest.py
> # There you can find the main class gtktest()
> from VenEditor import VenEditor
>
> # Load sugar libraries
> from sugar.activity import activity
>
> class editorActivity(activity.Activity):
>     def __init__(self, handle):
>         activity.Activity.__init__(self, handle)
>         self._name = handle
>
>         # Set title for our Activity
>         self.set_title('EDITOR DHA')
>
>         # Attach sugar toolbox (Share, ...)
>         toolbox = activity.ActivityToolbox(self)
>         self.set_toolbox(toolbox)
>         toolbox.show()
>
>         # Create the main container
>         self._main_view = gtk.VBox()
>
>         # Import our class gtktest():
>
>         # Step 1: Load class, which creates gtktest.widget
>         self.VenEditor = VenEditor()
>
>         # Step 2: Remove the widget's parent
>         if self.VenEditor.widget.parent:
>             self.VenEditor.widget.parent.remove(self.VenEditor.widget)
>
>         # Step 3: We attach that widget to our window
>         self._main_view.pack_start(self.VenEditor.widget)
>
>         # Display everything
>         self.VenEditor.widget.show()
>         self._main_view.show()
>         self.set_canvas(self._main_view)
>         self.show_all()
> *
> VenEditor.py
> *
> #! /usr/bin/env python
> # -*- coding: UTF-8 -*-
>
> # Importamos el módulo pygtk y le indicamos que use la versión 2
> import pygtk
> pygtk.require("2.0")
>
> # Luego importamos el módulo de gtk y el gtk.glade, este ultimo que nos
> sirve
> # para poder llamar/utilizar al archivo de glade
> import gtk
> import gtk.glade
>
>
> # Creamos la clase de la ventana principal del programa
> class VenEditor:
>     def __init__(self, runaslib=True):
>         # Le decimos a nuestro programa que archivo de glade usar (puede
> tener
>         # un nombre distinto del script). Si no esta en el mismo
> directorio del
>         # script habría que indicarle la ruta completa en donde se
> encuentra
>         self.elem = gtk.glade.XML("editor.glade")
>         # Get Window
>         self.widgets = self.elem.get_widget("window1")
>
>         # Creamos un pequeño diccionario que contiene las señales
> definidas en
>         # glade y su respectivo método (o llamada)
>         signals = { "on_entry1_activate" : self.on_button1_clicked,
>                     "on_button1_clicked" : self.on_button1_clicked,
>                     "gtk_main_quit" : gtk.main_quit }
>
>         # Luego se auto-conectan las señales.
>         self.elem.signal_autoconnect(signals)
>         # Nota: Otra forma de hacerlo es No crear el diccionario signals y
>         # solo usar "self.widgets.signal_autoconnect(self)" -->Ojo con el
> self
>
>         # Ahora obtenemos del archivo glade los widgets que vamos a
>         # utilizar (en este caso son label1 y entry1)
>         self.label1 = self.elem.get_widget("label1")
>         self.entry1 = self.elem.get_widget("entry1")
>
>         if not runaslib:
>             self.widgets.show_all()
>             gtk.main()
>
>     # Se definen los métodos, en este caso señales como "destroy" ya fueron
>     # definidas en el .glade, así solo se necesita definir
> "on_button1_clicked"
>     def on_button1_clicked(self, widget):
>         texto = self.entry1.get_text()
>         self.label1.set_text("Hola %s" % texto)
>
> # Para terminar iniciamos el programa
> if __name__ == "__main__":
>     VenEditor(False)
> *
>
> activity.info
> *[Activity]
> name = Editor DHA
> service_name = org.laptop.EditoDHA
> class = activity.editorActivity
> icon = activity-default
> activity_version = 1
> show_launcher = yes
> license = GPLv2+
> host_version = 1*
> *
> Nuevamente, muchas gracias por el tiempo dedicado y por las ideas que me
> puedan dar.
>
> SAludos.
>
>
> El 16 de enero de 2012 12:30, Alvaro Arias <aarias1978 en gmail.com>escribió:
>
> Bueno muchas gracias por la guía, hoy de tarde voy a hacer las pruebas con
> los cambios que me sugieren a ver si logro resolver el problema.
>
> saludos,
> Alvaro
>
> El 16 de enero de 2012 12:26, Flavio Danesse <fdanesse en gmail.com>escribió:
>
> Hola.
>
> Bueno, yo nunca he usado glade, siempre escribo todo en gedit o nano, de
> modo que no se como se trabaja en glade ni como se cargan sus archivos en
> el programa, pero te oriento un poco sobre lo que necesita sugar para
> funcionar:
>
> *La ventana principal de sugar es una ventana gtk que hereda de
> sugar.activity.activity.Activity, así que tu ventana tiene que ser así:*
>
> from sugar.activity.activity import Activity
>
> class AulaVirtual(Activity):
>     def __init__(self, handle):
>         Activity.__init__(self, handle)
>
> *Ahora bien, el contenido de esa ventana, se agrega con:*
>
>         self.set_canvas(widgetcontenedor)
>
> De modo que tu actividad, debiera implementar un contenedor que no sea una
> ventana para poder meterlo en el canvas de la ventana de sugar. Como cargas
> todo eso, no se :P, pero al menos acá te indico donde debe ir.
>
> Para cargar los archivos, indicando el path correcto donde se encuentra,
> lo mejor es utilizar __file__ del ejecutable base de la actividad, lo cual
> te da la dirección de sí mismo, es decir, si en el paquete de tu actividad
> tienes un directorio llamado "interfaz", donde está toda la interfaz
> gráfica de tu aplicación, en el archivo que hereda de "activity", puede
> indicar el path así:
>
> DIRECTORIO_BASE= os.path.dirname(__file__) # devuelve el path de este
> archivo que se está ejecutando
> DIRECTORIO_INTERFAZ= os.path.join(DIRECTORIO_BASE, "interfaz")
>
> De esta forma, te aseguras que el path siempre será correcto sin importar
> la localización del paquete de tu programa.
>
>
>
>
>
> El 16 de enero de 2012 12:01, Alvaro Arias <aarias1978 en gmail.com>escribió:
>
> Hola Pablo, antes que nada muchas gracias por contestar.
>
> Realizo los import:
>
>     import pygtk
>     pygtk.require('2.0')
>     import gtk
>     import gtk.glade
>
> Luego relaciono el archivo Glade:
> def __init__(self):
>
>         self.widgets = gtk.glade.XML("editor.glade")
>         # Obtenemos la ventana
>         self.ventana = self.widgets.get_widget("VentanaPrincipal")
> Le conecto las Señales que voy a usar:
>
>        signals = {
>                    "gtk_main_quit" : gtk.main_quit,
>                    "on_button1_clicked" : self.btnPersonaje,
>                    "on_button2_clicked" : self.btnEnemigo,
>                    "on_button3_clicked" : self.btnPlataforma,
>                    "on_button4_clicked" : self.btnObjeto,
>                    "on_button5_clicked" : self.btnFondo,
>                    "on_toolbutton2_clicked" : self.btnAbrir,
>                    "on_toolbutton5_clicked" : self.btnAcerca}
>
> En realidad no me da ningún error, simplemente no me muestra nada de la
> interface gráfica.
> Ya hice una activity para comprobar que sigo bien el procedimiento y
> corroboré que lo estoy haciendo bien (esta activity es sin glade, es
> simplemente una ventana hecha en Gtk que muestra un botón).
>
> Yo intuyo que el problema que estoy teniendo es donde cologo mis archivos
> glade, le estoy errando donde van localizados, pero la verdad no tengo
> claro donde debería ponerlos, te paso la estructura de carpetas que tengo
> en mi proyecto:
> src/
>      Editor/
>               Grafica/
>                         iconos/
>                         imagenes/
>                         archivos.glade
>               Logica/
>                        archivos.py
>
> Saludos,
> Alvaro
>
>
> El 16 de enero de 2012 11:55, Pablo Moleri <pmoleri en gmail.com> escribió:
>
> Hola
>
> ¿Podrías mostrar la parte de código donde levantás el archivo?
> Tendrías que hacer algo de este estilo:
>    window = gtk.glade.XML("interfaz.glade")
>
>
>
>
>
> ¿Qué error recibís?
>
> Saludos,
> Pablo
>
> 2012/1/16 Alvaro Arias <aarias1978 en gmail.com>
>
> Buen día.
>
>
> Estoy tratando de crear una activity de la aplicación que he desarrollado,
> esta aplicación está hecha en Python, para la misma use PyGtk y para
> facilitar la creación de la interfaz gráfica utilice la aplicación de
> diseño Glade.
> Estoy teniendo problemas para que levante la interface dentro de la Xo, no
> relaciona el archivo glade , no se donde debo referenciar el archivo glade
> (este archivo es un xml donde esta toda la especificación de la Interface).
>
> Agradezco mucho me puedan guiar.
>
> Saludos
>
> --
> *Alvaro
> *
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
>
>
> --
> *Alvaro
> *
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
>
>
> --
> *Alvaro
> *
>
>
>
>
> --
> *Alvaro
> *
>
> _______________________________________________ Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20120119/41d53340/attachment-0001.html>


More information about the Olpc-uruguay mailing list