[Sugar-devel] [Sur] Introducing SimpleActivity / Introduciendo SimpleActivity

Agustin Zubiaga Sanchez aguz at sugarlabs.org
Sun Nov 24 18:19:10 EST 2013


Manu,
I just added the __init__.py file.

About the StopButton, I added the function add_stopbutton in order to be
called when the activity developer finish its toolbar, because
SimpleActivity can't know where it's ready, I think the only way to do this
is when the user adds any item to the toolbar, move (actually, remove and
insert again) the stopbutton with its separator to the end of the toolbar,
but we would doing that every time an item is added and I think it doesn't
make sense.
If there is a way to fix an item position, please let me know.

About new signals style:
They look nicer, when I want to define a signal without a function, I can
do
my_signal = GObject.Signal('my_signal', arg_types=(int)) as you said, then
where I should put that?

self.mysignal  = GObject.Signal(.... ?

Regards,
aguz


2013/11/23 Manuel Quiñones <manuq at laptop.org>

> Nice!  I will try to use it in Browse.  We should aim to zero code
> duplication and make activities code easier.
>
> I gave a quick look at the code.  I think SimpleActivity should take
> care of adding the Stop button.  All activities will (must) have it.
>
> Please add an empty  __init__.py file so we can use it as a module.
>
> A minor implementation thing: we started to use "new style" signals.
> They are more pythonic.  So instead of adding a class attribute
> __gsignals__ you do:
>
> my_signal = GObject.Signal('my_signal', arg_types=(int,))
> other_gobject.connect('my_signal', my_signal_handler)
> my_signal.emit(42)
>
> Example: https://git.gnome.org/browse/pygobject/tree/examples/signal.py
> Docstrings:
> https://git.gnome.org/browse/pygobject/tree/gi/_gobject/signalhelper.py
>
> 2013/11/21 Agustin Zubiaga Sanchez <aguz at sugarlabs.org>:
> > = English (Español debajo) =
> >
> > Hi everyone,
> >
> > I am writing to show you what I was developing those last days, in order
> to
> > make simpler the developing of Sugar Activities, this module, micro
> library
> > or whatever you want to call it, makes much more easier the processes
> that
> > every activity does, for example create ToolButtons, add them to a
> Toolbar
> > or implement collaboration which is difficult for any starter developer.
> > The main idea is include SimpleAcivity in our toolkit, but thinking about
> > all the review processes it takes, you can add it to your activity for
> now
> > or you can take a look about how it works in the Demo activity I did [1],
> > where you can see how easy is to implement sharing or create the toolbar.
> >
> > * SimpleActivity classes *
> >
> > simpleactivity.SimpleActivity:
> > The activities which doesn't want to implement collaboration, can derive
> > from this class (instead of sugar3.activity.activity.Activity), this
> class
> > automatically adds the toolbar to the activity with his
> > ActivityToolbarButton and it makes easier some processes related to the
> > design, e.g. add buttons, separators, or whatever to the toolbar in only
> one
> > line and also other things related to the operation for example any
> number,
> > string, dictionary or list that is saved into the self.data variable
> will be
> > auto kept in the journal, and when the instance runs again, in self.data
> > will be what you leaved when the activity was closed.
> > Among these there are many other simple features, that after all, they do
> > everything much easier.
> >
> > simpleactivity.SharedActivity (derives from SimpleActivity, you can use
> all
> > its methods): :
> > From this class should derive every activity which needs to be shared,
> the
> > process is greatly simplified cause the communication is done
> automatically
> > and the "system" works with something like an event manager, so we only
> need
> > to worry about register our events in a python dict, where the keys are
> the
> > names of the events and the values are the functions to call when we
> receive
> > an event, and when we want to "emit" an event with the values we need or
> > not, all we have to do is to call send_event(event_name, data)... And
> that's
> > all, we don't have to worry about telepathy, dbus or anything like that,
> > SimpleActivity does everything for you :)
> > Also it includes an option to send files in a very easy way, using the
> > method send_file(file_path, data) that notifies every peer that a file is
> > available, and it can be downloaded just calling the download_file
> method,
> > and then SharedActivity will start emiting signals with information
> related
> > to the download progress, etc.
> > The process of downloading is done using another independent tube, then
> > nothing gets blocked while the file is sent/downloaded, we can continue
> > sending events while, and everything will continue working.
> >
> > Notes:
> > - Both classes derives from the "natives" classes of sugar, so we can
> > continue using every method of sugar.activity.activity.Activity or
> whatever,
> > without any problem.
> > - Whole SimpleActivity (module) is only one .py file, then we can put it
> > into our activity directory easily as we do with HelpButton or
> FontComboBox,
> > even if it isn't in sugar toolkit.
> > - It only supports GTK3, I think it is not necessary to make it
> compatible
> > with GTK2, because nowadays the new activities should be did in GTK3.
> > - I advice everyone who is interested to take a look of the documentation
> > that you can found in the docstrings in the file for now (I will create a
> > cleaner documentation with sphinx), to learn about all you can do with
> > SimpleActivity.
> >
> > Also I started a Feature wiki page [2], but is not ready yet. Could
> anyone
> > help me with that?
> > I need some documentation experts ;)
> >
> > I hope you find it useful, as I always say, I love developing for Sugar,
> > because it causes a great feeling to know that the lines of code I wrote
> > will be used directly or indirectly by millions of children around the
> > world.
> >
> > [1] https://git.sugarlabs.org/simpleactivity/
> > [2] http://wiki.sugarlabs.org/go/Features/SimpleActivity
> >
> > Thank you very much,
> > aguz
> >
> > -
> > = Español =
> >
> > Hola a todos,
> >
> > Les escribo para presentarles lo que he estado desarrollando estos
> últimos
> > días, con el fin de hacer más simple la creación de actividades para
> Sugar,
> > este modulo, micro librería, o como quieran llamarle, hace mucho más
> fácil
> > los procesos que todas las actividades hacen, como crear ToolButtons,
> > agregarlos a una Toolbar o implementar colaboración para cualquier
> > desarrollador que esté comenzando.
> > La idea principal es incluir SimpleActivity en la toolkit de sugar, pero
> > tomando en cuenta todos los procesos de revisados que lleva, pueden ver
> como
> > funciona en el repositorio de la actividad de ejemplo HelloSimpleActivity
> > [1], que implementa un montón de características, y donde pueden ver lo
> > fácil que es implementar la colaboración o hacer la barra de
> herramientas.
> >
> > * Clases de simpleactivity *
> >
> > simpleactivity.SimpleActivity:
> > Las actividades que NO deseen implementar colaboración, pueden
> simplemente
> > heredar de esta clase (en lugar de sugar3.activity.activity.Activity),
> esta
> > clase agrega automáticamente la toolbar a la actividad con su
> > ActivityToolButton, y simplifica varios procesos relacionados con el
> diseño
> > por ejemplo agregar botones, separadores (o lo que sea) a la toolbar en
> una
> > sola linea y también otros de funcionamiento como por ejemplo cualquier
> > numero, string, diccionario o lista que se guarde, en la variable
> self.data,
> > al cerrar la actividad esta lo guardará automáticamente en el journal y
> al
> > abrir otra vez esta instancia de nuestra actividad, en self.data estará
> lo
> > que allí dejamos.
> > Entre estas hay muchas otras características simples, que al fin y al
> cabo,
> > hacen todo mucho más fácil.
> >
> > simpleactivity.SharedActivity (hereda de SimpleActivity, puedes usar
> támbien
> > todos sus metodos):
> > De esta clase deben heredar todas las actividades que deseen implementar
> > colaboración, el proceso se simplifica enormemente, ya que la
> comunicación
> > la hace toda automática, el "sistema" funciona con una especie de
> manejador
> > de eventos, por lo que solo debemos de preocuparnos por registrar
> nuestros
> > eventos en un diccionario de python, donde las claves son los nombres de
> los
> > eventos y los valores son las funciones a llamar cuando alguien nos envie
> > ese evento, y cuando deseamos emitirlos con los valores que necesitemos
> o no
> > (simpleactivity se encargara de notificar a cada maquina y enviar a todos
> > los datos) simplemente llamamos a una función send_event(nombre_evento,
> > datos)... Y listo! No debemos preocuparnos por telepathy, dbus ni nada
> por
> > el estilo, SimpleActivity hace todo por ti :)
> > Además incluye la opción de enviar archivos de una manera muy fácil,
> > utilizando un metodo send_file que avisa a todas las demás maquinas, que
> hay
> > un archivo disponible y podemos acceder a descargarlo simplemente
> llamando
> > la función download_file y SharedActivity comenzará a emitir señales con
> > información acerca del progreso de descarga, etc.
> > El proceso de descarga de archivos se hace por un tubo aparte por lo
> cual,
> > nada se bloquea mientras el archivo se envia/descarga, podemos seguir
> > enviando eventos sin problemas mientras lo hacemos, y todo seguirá
> > funcionando.
> >
> > Notas:
> > - Ambas clases heredan de las clases nativas de sugar, por lo cual
> podemos
> > utilizar todos los métodos de  sugar3.activity.activity.Activity o lo que
> > sea que deseemos, sin ningún problema.
> > - SimpleActivity (módulo) es en su totalidad un solo archivo .py por lo
> que
> > podemos incorporarlo en nuestra actividad muy fácilmente, así como lo
> > hacemos con HelpButton o FontComboBox, aunque aún no esten en sugar
> toolkit.
> > - Soporta solo GTK3, creo que no es necesario dedicarnos a hacer una
> versión
> > compatible con GTK2, porque hoy en día las actividades nuevas se deben
> hacer
> > desde el inicio con GTK3.
> > - Recomiendo a todos los interesados revisar la documentación que está en
> > docstrings en el archivo por ahora, (proximamente armaré una
> documentación
> > más prolija con sphinx), para enterarse de todo lo que se puede hacer con
> > simpleactivity.
> >
> > Además comencé con una pagina en la wiki [2], pero todavía no está lista.
> > ¿Alguien quiere ayudarme con eso?
> > Necesito ayuda de los expertos en documentación ;)
> >
> > Espero que les sea útil, como siempre digo, me encanta desarrollar para
> > Sugar, porque me provoca un sentimiento inexplicable saber que las
> lineas de
> > código que escribo van a ser utilizadas directa o indirectamente por
> > millones de chicos al rededor del mundo.
> >
> > [1] https://git.sugarlabs.org/simpleactivity/
> > [2] http://wiki.sugarlabs.org/go/Features/SimpleActivity
> >
> > Muchas gracias,
> > aguz
> >
> >
> >
> >
> > _______________________________________________
> > Sugar-devel mailing list
> > Sugar-devel at lists.sugarlabs.org
> > http://lists.sugarlabs.org/listinfo/sugar-devel
> >
>
>
>
> --
> .. manuq ..
> _______________________________________________
> Lista olpc-Sur
> olpc-Sur at lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-sur
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20131124/887101f1/attachment.html>


More information about the Sugar-devel mailing list