Esta página contiene información relevante para programadores o usuarios avanzados que deseen colaborar con el proyecto. Si por accidente llegaste a esta sección y no eres programador puedes regresar al área de participar aquí.
Desarrollo de Ice3
Ice3 utiliza Launchpad como centro de desarrollo:
También puede visitar e incorporarse al equipo de desarrollo: https://launchpad.net/~ice3-developers
Herramientas de software
Para el desarrollo de Ice3 se utiliza las siguientes herramientas de software libre:
- Python (>= 2.5.2).
- PyGTK (bindings para GTK+) + Glade (>= 3.4.5).
- Eclipse (>= 3.4.2) + pyDev (>= 1.4.4).
- Bazaar Version Control System (>= 1.6.1).
- bzr-gtk (>= 0.95).
Entorno de desarrollo para Ice3
A continuación se describe el esquema oficial del equipo de Ice3.
Bibliotecas de desarrollo
Se asume que se está utilizando Ubuntu 8.10 Intrepid Ibex. Otras distribuciones o versiones pueden diferir en formas de instalación o versiones de las bibliotecas. Se necesita instalar los siguientes paquetes (si no están instalados por defecto):
- sun-java6-jre (para la ejecución de Eclipse).
- python2.5
- python-gtk2
Para ello puede escribir en una terminal:
sudo apt-get install sun-java6-jre python2.5 python-gtk2
O hacer click aquí (se utiliza Apt-URL):
Eclipse, PyDEV y Glade3
Se utiliza el IDE Eclipse. Puede descargarlo aquí (la versión de repositorio es muy antigua). Se bajará un archivo comprimido (p.e eclipse-java-ganymede-SR2-linux-gtk.tar.gz) que podrá descomprimirse en cualquier carpeta (p.e /home/usuario/Programas/Eclipse). El ejecutable de la aplicación se encuentra en la carpeta descomprimida con el nombre eclipse.
A continuación se requiere instalar PyDev, la extensión para desarrollo en Python. Las instrucciones para instalarlo se pueden encontrar aquí.
La interfaz gráfica se realiza con Glade3, por lo tanto es necesario que se instale el paquete glade-3:
Para ello se puede escribir en una terminal:
sudo apt-get install glade-3
O hacer click aquí (se utiliza Apt-URL):
Administración descentralizada del código
El código de Ice3 está disponible en el sitio de desarrollo en Launchpad. Para poder obtener el código se debe instalar el sistema de control de versiones Bazaar. Además, por simplicidad, se utiliza la herramienta gráfica de administración. Para ello:
Puede escribir en una terminal:
sudo apt-get install bzr bzr-gtk
O hacer click aquí (se utiliza Apt-URL):
La rama principal de desarrollo es ~ice3-developers/ice3/trunk. Para poder aportar código se debe estar registrado en Launchpad y tener una llave SSH registrada. Para ayuda acerca de Launchpad y Bazaar puedes consultar el manual el línea.
Diseño de la aplicación
Ice3 se construye como una aplicación basada en el patrón de diseño Modelo Vista Controlador (MVC). La aplicación consiste en 4 módulos:
- Módulo Interfaz de usuario por comandos: Es una función que se encarga de administrar, validar y redirigir los comandos.
- Módulo de configuración: Se trata de una clase que abstrae todo el proceso de administración de las configuraciones. Implementa el patrón de diseño Singleton y utiliza como base un archivo XML. Se utiliza DOM (xml.dom.minidom).
- Módulo de interfaz gráfica de usuario: La interfaz está construida en GTK+ con PytGTK y Glade.
- Módulo Engine/Core: Es el módulo encargado de realizar todas las acciones necesarias de la aplicación. Es utilizada tanto por la interfaz de comandos como por la interfaz gráfica.
Descripción de comandos
| Comando | Función |
|---|---|
| ice3 restore-all | Restores all users marked active (used at reboot). |
| ice3 backup user | Create a freeze for user now. |
| ice3 restore user | Restore the active freeze for user now. |
| ice3 restore user id | Restore the freeze id for user now. |
| ice3 list | List all user, active users and active freezes. |
| ice3 list user | Show active state, list freezes and freezes ids. |
| ice3 on | Turn on automatic restore of active users. |
| ice3 off | Turn off automatic restore of active users. |
| ice3 enable user | Turn on restores on restart for user. |
| ice3 disable user | Turn off restores on restart for user. |
| ice3 set user id | Set freezes id as active freeze for user. |
Descripción del archivo de configuración
Tipo: XML (xml.dom.minidom)
<?xml version="1.0" ?> <config> <enabled>boolean</enabled> <users> <user> <name>string</name> <active>boolean</active> <activefreeze>id<activefreeze> <freezes> <freeze> <id>numberposixtime</id> <description>string</description> <size>number</size> </freeze> <freeze> <id>numberposixtime</id> <description>string</description> <size>number</size> </freeze> ... </freezes> </user> <user> <name>string</name> <active>boolean</active> <activefreeze>id<activefreeze> <freezes> <freeze> <id>numberposixtime</id> <description>string</description> <size>number</size> </freeze> <freeze> <id>numberposixtime</id> <description>string</description> <size>number</size> </freeze> ... </freezes> </user> ... </users> </config>






