[Olpc-uruguay] Consulta, creación de Activity
Alvaro Arias
aarias1978 en gmail.com
Jue Ene 19 19:28:51 EST 2012
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
*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20120119/f291f0ea/attachment-0001.html>
More information about the Olpc-uruguay
mailing list