[Sugar-desarrollo] Introducing SimpleActivity / Introduciendo SimpleActivity

Gonzalo Odiard gonzalo en laptop.org
Jue Nov 21 23:46:58 EST 2013


Excellent work, this is something Sugar needed for a long time.

Gonzalo


On Thu, Nov 21, 2013 at 10:19 PM, Agustin Zubiaga Sanchez <
aguz en sugarlabs.org> wrote:

> = 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-Desarrollo mailing list
> Sugar-Desarrollo en lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-desarrollo
>


Más información sobre la lista de distribución Sugar-Desarrollo