Siguiendo con la serie de pruebas para reducir el consumo de recursos en mi AA1 (Acer Aspire One) con Ubuntu:
- Midori, buscando un navegador ligero para Ubuntu
- Regresando de Unity al escritorio de Ubuntu
- Correo con Evolution en Ubuntu
uno de los objetivos mas claros que he tendido desde el principio ha sido la hoja de cálculo. Desde hace varios años que vengo utilizando OpenOffice como paquete de ofimática por defecto, tanto en el trabajo como en casa, y hasta el momento ha resuelto por completo todas mis necesidades.
Un punto que para mi es primordial, en el uso de una hoja de cálculos, es poder programar mis propias funciones. Esta es una de las razones que me tenía algo parado el cambio a Gnumeric. Sin embargo, he realizado algunos ensayos de rendimiento, y ciertamente el consumo de recursos es sinceramente inferior, es una aplicación bastante mas liviana y se nota una mejoraría en el funcionamiento del equipo.
Después de juguetear el otro día con Evolution, y ver que tenía su propia integración con Python, se me encendió una bombillita en algún punto recóndito de mi cerebro y realicé una busqueda a ver que era lo que me encontraba, y claro, ahí estaba, «python y gnumeric», que maravilla.
A partir de aquí, se abre otro maravilloso mundo de entretenimiento sin par, ya puedo tener mis propias funciones en Gnumeric y además con Python. Ya tengo entretenimiento para muchas tardes lluviosas de domingo.
Pero, ¿como puedes crear tus propias funciones?
En primer lugar tienes que instalar el paquete que te permite realizar funciones en python para gnumeric:
sudo apt-fast install gnumeric-plugins-extra
Una vez instalado el requisito básico para hacer tus pinitos en Python para Gnumeric, tienes que activar el complemento en cuestión.
A partir de aquí ya comienza la diversión, para ello tienes que seguir este sencillito ejemplo.
En primer lugar creamos los elementos básicos de trabajo. Esto, solamente lo tendremos que hacer una vez.
# Creas el directorio en caso de no existir
mkdir -p ~/.gnumeric/<version>/plugins/myfuncs
donde <version> yo lo he asociado con la versión de Gnumeric, en mi caso 1.10.8.
# Crea el archivo con la informacion para Gnumeric
touch ~/.gnumeric/1.10.8/plugins/myfuncs/plugin.xml
# Creas el archivo de python para tus nuevas funciones
touch ~/.gnumeric/1.10.8/plugins/myfuncs/my-func.py
En el archivo xml informa a Gnumeric las funciones que hemos definido y cual es el nombre del archivo que las contiene.
[xml]
<?xml version=»1.0″?>
<plugin id=»Gnumeric_MyFuncPlugin»>
<information>
<name>Other Python functions from HOWTO</name>
<description>A few extra python functions demonstrating the API.</description>
</information>
<loader type=»Gnumeric_PythonLoader:python»>
<attribute name=»module_name» value=»my-func»/>
</loader>
<services>
<service type=»function_group» id=»example»>
<category>Local Python</category>
<functions>
<function name=»py_add»/>
</functions>
</service>
</services>
</plugin>
[/xml]
Aqui donde indica ‘service type=»function_group»‘, el identificador example, se tiene que corresponder con el nombre del registro de funciones que aparece mas adelante, de forma que aqui es «example» y en el registro de funciones tiene que ser «example_functions»
Dentro del archivo «my-func.py» creamos las líneas que definen nuestra nueva función:
[python]
# my-func.py
# -*- coding: utf-8 -*-
import math
#
from Gnumeric import GnumericError, GnumericErrorVALUE
import Gnumeric
import string
# Una funcion brutal (suma dos valores)
def func_add(num1, num2):
‘@FUNCTION=PY_ADD\n’\
‘@SYNTAX=py_add(num1, num2)\n’\
‘@DESCRIPTION=suma dos numeros.\n’\
‘La description puede ir en dos lineas.\n\n’\
‘@EXAMPLES=Para sumar dos nuemros simplemente escribe: py_add(2,3)\n’\
‘Para sumar dos celdas utiliza la direccion de las celdas: py_add(A1,A2)\n\n’\
‘@SEEALSO=’
return num1 + num2
# Convierte nuestra nueva funcion realiza en python «py_add» en una funcion de Gnumeric y la registra
example_functions = {‘py_add’: (‘ff’,’num1,num2′,func_add)}
# Aqui hay que registrar todas las funciones. Recuerda que example_functions, se corresponde con example de la declaracion en el archivo xml
[/python]
La explicacion del registro de la funcion es:
[python]
<function_name>:(<parameter_declaration>,<paramter_names>,<python_function>)
[/python]
donde:
- <function_name> es el nombre de la función en Gnumeric
- <parameter_declaration> el tipo de parámetros, tantas letras como parámetros:
- i -> numero entero
- f -> numero real
- s -> cadena
- r -> rango
- <paramter_names> son los nombres de las variables
- <python_function>el nombre de la función de python
En nuestro caso, por ejemplo tenemos dos números reales, por eso la declaración de parámetros es «ff», si tuvieramos una cadena y un real sería «sf».
Mas informacion | Gnome
Mas informacion | Gnumeric-Python