User talk:Ivanpoot
AOO (Apache OpenOffice)
En este primer post, quiero compartir esta información con ustedes que habla sobre OpenOffice y algunas ligas para saber más acerca de este tema que está revolucionando nuestro entorno informático.
AOO es un proyecto desarrollado bajo código abierto que destaca por su elevada compatibilidad e incorpora todas las utilidades imprescindibles en este tipo de paquetes. Las versiones más recientes ya han demostrado su valor para muchas aplicaciones personales y profesionales.
Incorpora módulos de procesador de textos, hoja de cálculo, gráficos vectoriales, edición HTML, presentaciones, etc. Muchos usuarios en el mundo compran licencias para aplicaciones (que cuestan mucho dinero y que además en ciertas aplicaciones se necesita pagar de nuevo para bajar actualizaciones) e incluso instalan aplicaciones sin licencias en sus ordenadores. Sin embargo, la mayoría no se plantea que quizá exista otra alternativa gratuita a sus necesidades.
En todo caso, OpenOffice siempre estará disponible, al alcance de cualquier usuario que necesite explorar y conocer algo nuevo de forma gratuita. Link de descarga http://www.openoffice.org/download/.
Módulos
- Writer procesador de texto completo apto para la creación de cualquier tipo de documento.
- Calc hoja de cálculo, enfocado a la gestión y cálculo de datos.
- Impress para creación de presentaciones, dispone de múltiples efectos de transición entre diapositivas y efectos especiales y de movimiento.
- Base para administración de bases de datos, como Microsoft Access.
- Draw: Editor gráfico de vectores, similar al CorelDRAW.
- Math Herramienta para crear fórmulas matemáticas.
- Plantillas uso de plantillas, de muy fácil creación y administración, pudiendo incluso importar estilos de otras plantillas o documentos.
- Macross útil para programar tareas repetitivas personalizadas que no se han integrado en el programa.
- Extenciones para agregar nuevas funciones, disponibles desde el repositorio de extensiones oficial.
Para más información consulte: http://blog.open-office.es/index.php/inicio/2010/06/22/que-es-openoffice-org
Mejoras de usabilidad e interfaz
- La nueva barra de herramientas de búsqueda en OpenOffice.
- Nueva interfaz de impresión para OpenOffice.
- Más opciones para alternar mayúsculas y minúsculas en OpenOffice.
- Nuevo diseño de la herramienta Sinónimos (Thesaurus) en OpenOffice Writer.
- Restablecer el idioma del texto al idioma predeterminado en OpenOffice Writer.
- Mejora en el renderizado del texto de los controles de formulario en OpenOffice Writer.
Infórmese en: http://blog.open-office.es/index.php/inicio/2011/01/31/novedades-de-la-version-3-3-0-de-openoffice
Liberación de Apache OpenOffice 3.4
Apache OpenOffice 3.4 ofrece aplicaciones para:
- Procesamiento de palabras, planillas de cálculo, presentaciones, bases de datos, diseño y edición de expresiones matemáticas, para sistemas operativos Windows, Linux (32-bit o 64-bit) y Macintosh.
- Soporte nativo para los siguientes idiomas: inglés, árabe, checo, alemán, español, francés, gallego, húngaro, italiano, japonés, holandés, ruso, portugués de Brasil, chino tradicional y chino simplificado.
- SoporteODF mejorado, incluyendo nuevas opciones de cifrado de ODF 1.2 y nuevas funciones de la planilla de cálculos
- Soporte mejorado para tablas dinámicas en Calc.
- Gráficos mejorados, incluyendo límites de línea, transformaciones de deformación y soporte nativo para el formato "Scalable Vector Graphics" (SVG).
- Mejoras en el rendimiento y en la calidad.
Liberación de Apache OpenOffice 3.4.1
Los puntos principales incluyen:
- Soporte para nuevos idiomas: finés, inglés británico, camboyano, eslovaco y esloveno. Las traducciones al holandés, español, italiano y húngaro han sido mejoradas. Junto con el inglés americano, alemán, japonés, checo, francés, portugués de Brasil, ruso, chino tradicional y simplificado, gallego y árabe, lo que eleva el número de idiomas soportados a 20.
- Soporte para Microsoft Windows desde XP hasta Windows 8 (32 bits), Linux 32 bits y 64 bits y Apple Mac OS, incluyendo Mountain Lion. En esta versión se incluyen nuevas opciones de compatibilidad para mejorar la experiencia de usuario en Microsoft Windows 8.
- Mejoras en el rendimiento, interoperatividad y seguridad.
- Correcciones para 69 errores reportados por los usuarios.
- Miembros de la comunidad están también trabajando en versiones para BSD, Solaris y OS/2. Más información puede encontrarse en nuestra página OpenOffice Porting Project.
Instalación Repositorio SVN
Estos días he tenido que instalar unos Repositorios Subversión en Ubuntu, y tengo que decir que ha sido posible gracias a las guías disponibles en wiki.openoffice.org/wiki/Documentation/Building_Guide.
¿Qué es el Repositorio Subversión?
Estoy seguro que el término de Subversión no es nada nuevo para aquellos que trabajan en el mundo de la programación, aquí una breve definición: Subversión es un software de control de versiones diseñado especialmente para mantener bajo control y versión el código fuente, la documentación, etc. de una aplicación. Se lo conoce también como svn por ser ese el nombre de la herramienta cuando se ejecuta desde la línea de comandos. Además, subversión puede trabajar a través de internet, con lo cual facilita la colaboración de los equipos de desarrollos que se encuentran distantes geográficamente.
Funciones del Subversión:
- Recuperar versiones anteriores a la actual
- Ver un historial de todos los cambios efectuados en el proyecto, directorio o fichero
- Integración con Apache, esto nos permite definir un control de acceso (libre – privado) mediante web de nuestro repositorio
- Renombrar o eliminar archivos del repositorio sin intervención manual a éste.
Instalar Subversión desde Consola
1. Hacemos una búsqueda a nuestros repositorios. Comando:
sudo aptitude search subversion
Resultado de la búsqueda:
p python-subversion - Python bindings for Subversion p python-subversion-dbg - Python bindings for Subversion (debug extension) v python2.4-subversion - v python2.5-subversion - p subversion - Advanced version control system p subversion-tools - Assorted tools related to Subversion
1. La p (al lado de los paquetes “subversion o subversion-tools”) es una i, nos está especificando que ese paquete ya están instalados, por lo tanto debemos asegurarnos que lo están. Comandos:
sudo aptitude install subversion sudo aptitude install subversion-tools
2. Si deseamos que el Subversion se utilice a través de Internet, mejor dicho, si deseamos integrar el subversión con Apache, debemos tener instalados dos módulos, estos son: dav y el dav_svn. Para comprobar si están instalados tenemos que ejecutar los siguientes comandos:
sudo a2enmod dav sudo a2enmod dav_svn
Resultado de la ejecución:
usuarioUbuntuServer:~$ sudo a2enmod dav [sudo] password usuarioUbuntuServer: This module is already enabled
Si es que no están instalados estos dos módulos debemos instalar el siguiente paquete utilizando el siguiente comando:
"aptitude install libapache2-svn".
1. Este paso es relativamente importante para el tema de seguridad y de administración del Servidor, el objetivo es conseguir crear un Grupo de Usuarios específico para la utilización del Subversion, crear también los passwords para aquellos usuarios que estén de alta en el Grupo Subversion y finalmente agregarlos al grupo:
Crear el grupo de Usuarios:
sudo addgroup <nombreGrupo>
Añadir los usuarios que deseamos al grupo, comando:
usermod -a -G<nombreGrupo> <nombreUsuario>
Creamos el fichero de acceso al Repositorio Subversion, utilizando el comando htpasswd o htpasswd2, que nos crea un fichero con las contraseñas ya cifradas para ese usuario. La primera vez que deseamos crear el fichero deberemos añadir al comando la opción -c la primera vez. Primera vez: "htpasswd -c /etc/apache2/dav_svn.passwd <nombreUsuario>" Siguientes veces: "htpasswd /etc/apache2/dav_svn.passwd <nombreUsuario>"
Creamos el Repositorio Subversion, para ello ya procederemos a utilizar la instrucción svnadmin, de Subversion. Pero primero tenemos que crear el directorio físico. Vamos al directorio /home. Allí ejecutamos: sudo mkdir <nombreDirectorio> Después de crear el directorio, lo convertiremos para que sea nuestro repositorio con el comando: sudo svnadmin create /home/<nombreDirectorio> Tenemos que darle permisos al directorio, la daremos el 770 aunque también podríamos darle el 775, el comando es:
sudo chmod -R 775 <nombreDirectorio>
Vamos a cambiar también el Propietario y el Grupo de usuario que ha creado este directorio con:
sudo chown -R www-data:subversion <nombreDirectorio>
La -R (en ambos puntos) significa "recursivo", por lo tanto, esto lo aplicará tanto a la carpeta, los subdirectorios y archivos. Con este comando le estamos indicando que el propietario es www-data y el grupo de usuarios es subversión.
Visite: http://subversion.apache.org/
Ivanpoot (talk) 22:32, 31 January 2013 (UTC)
Configuración y bootstrapping
He empezado con las instrucciones de la guía. El primer paso ejecutar autoconf resulto con éxito, pero sin embargo en elsegundo me ha generado el siguiente bugs:
configure: error: no. Install ESP Package Manager (www.easysw.com/epm) and/or specify the path to the right epm (--with-epm). Or specify an Url to an epm-3.7 source package (--with-epm-url). El bug se resolvió con la instalación de emp pero ha generado otro: configure: error: for rebuilding unowinreg.dll you need the mingw32 C++ compiler. Por otra parte además de este error, me di cuenta de que todavía no he seguido una guía de requerimientos, la cual se encuentra en la siguiente liga:
http://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO/Step_by_step#Ubuntu_12.04
Empecé con la instalación de la subversión, luego al ejecutar svn co https://svn.apache.org/repos/asf/incubator/ooo/trunk aoo-trunk cd aoo-trunk/main me dice : no se puede abrir «aoo-3.4.1-incubating-src.tar.bz2.asc» , la cual se puede descargar desde: http://mirror.symnds.com/software/apache/incubator/ooo/3.4.1/source/.
Ivanpoot (talk) 05:42, 1 February 2013 (UTC)
Requerimientos para bootstrap & build
Bootstrap
Empecé a correr el bootstrap, para mi sorpresa en el proceso de ejecución me decía que no se encontró mingw32 c++ compiler (el bug que tenía antes, al parecer todavía no se resuelve), pero para solucionar este error solamente ejecuté este comando:
./configure –disable-odk
Hay que tener en cuenta que antes de compilar el bootstrap se ejecuta el autoconf. Como se observa en este link:http://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO/Step_by_step#Ubuntu_12.04 Posteriormente ejecuté: (depende de la arquitectura de nuestra maquina, por ejemplo la mía es de 32 por lo tanto es: source LinuxX86Env.Set.sh).
source LinuxX86-64Env.Set.sh
Iniciando el Buil
Para llevar a cabo esta sección hice lo siguiente: En la consola
sudo su password cd aoo/main/instsetoo_native/ build --all
Ivanpoot (talk) 01:57, 2 February 2013 (UTC)
Module instsetoo_native
Error en module instsetoo_native
Mi hora de inicio de fue: a las 17 horas, hay que tener mucha paciencia ya que tarda demasiado, bueno depende de tu pc. A las 5 am del dia siguiente me genero el siguiente error:
Primero, lo que hice fue ejecutar el siguiente comando
build --from instsetoo_native
Pero al parecer el error continua, pregunté en la lista dev@openoffice.apache.org enviando un correo acerca del bug que tenía con el Building module instsetoo_native. La solucion que me dieron en las listas es la siguiente:
./configure --with-epm-url=http://ftp.easysw.com/pub/epm/3.7/epm-3.7-source.tar.gz
Por alguna extraña razón, me dice que : you need the mingw32 c++ compiler, entonces lo que hice fue ejecutar: considerando que estoy en el main:
wget -O main/external/unowinreg/unowinreg.dll http://tools.openoffice.org/unowinreg_prebuild/680/unowinreg.dll
Ahora estoy en: 1. Reanudar el Build, en consola:
root@ivan-Presario-CQ43-Notebook-PC:/home/ivan/aoo/main/instsetoo_native# build --all:instsetoo_native
Luego descomprimir. Ubuicarse en:
root@ivan-Presario-CQ43-Notebook-PC:/home/ivan/Descargas/en-US/DEBS# ls de tal manera que se visualizen todos los deb existentes en la carpeta descargada.
Luego ejecutar: dpkg -i *.deb
Solución Configurar Openoffice.lst
POOLPRODUCT = 0 en main/instsetoo_native/util/openoffice.lst ca. la línea 25
Mas info: http://markmail.org/message/plzzj2ygrwf5vyft
Cuando termine de hacer lo mencionado anteriormente, el build tuvo exito, por otra parte me genero otro error:
ERROR: The following files could not be found: ERROR: File not found: odkcommon.zip ERROR: File not found: odkexamples.zip
Para darle solución a este error lo que hice fue desactivar el odk :
./configure –disable-odk
Al fin el build -all tuvo exito.
Ivanpoot (talk) 15:57, 5 February 2013 (UTC)
Tutorial Impress
Hack Impress
Me ha llevado tiempo para entender como funciona este tutorial, para empezar no tenía ni la más remota idea que iba a hacer con los códigos que aparecen en la página del tutorial Impress. Así que envíe un correo a las listas. Hacer este tutorial era sencillo ya que solamente se emplea el copy-paste. Lo único que hice fue ubicar las direcciones de los archivos que explíca el tutorial y agregarles los códigos que aparecen con el signo de +. El objetivo de este tutorial es poder guardar un gráfico desde OpenOffice 3.4.1 Impress como una imagen.
Aqui un ejemplo de los archivos que estuve modificando:
Y por ultimo el resultado, guardar un gráfico como una imagen:
Ivanpoot (talk) 03:15, 7 February 2013 (UTC)
PARCHES
Pasos
El primer paso para hacer parches es saber para que sirven, para mas información puede visitar:
http://jungels.net/articles/diff-patch-ten-minutes.html
Para hacer este parche lo primero que hice fue obtener el código fuente original, la cual esta en:
https://svn.apache.org/repos/asf/openoffice/trunk/main/cui/source/dialogs/about.cxx
En este caso el parche que hice fue para el about.cxx. Bien, una vez que descargue el codigo original, el siguiente paso fue generar un archivo parche.cxx (es importante que tenga un nombre diferente de lo contrario el parche no funcionará) que contenga el codigo original, en la misma carpeta donde se encuentra el about.cxx.
Es importante mencionar que realicé dos parches uno para el about.cxx y otro para about.hxx ya que son los que sufren modificaciones al hacer el tutorial about.
Despues ejecuté el siguiente código:
root@ivan-Presario-CQ43-Notebook-PC:/home/ivan/aoo/main/cui/source/inc# diff -u about.cxx parche.cxx > about.patch
Para comprobar que mi parche quedo bien solamente abrí el parche.cxx para ver los cambios que hice anteriormente.
Ivanpoot (talk) 01:57, 14 February 2013 (UTC)
Revision SVN
INFO
Realizar el tutorial de about me ha hecho aprender muchas cosas que antes no sabía. Conocer la revision de SVN es algo simple, la cual se puede saber con ejecutar el siguiente comando:
ivan@ivan-Presario-CQ43-Notebook-PC:/home/ivan/aoo# svn info
Adjunto un ejemplo que hice:
Status
Es importante saber que archivos he modificado, entonces para ener conocimiento de estos basta con ejecutar el siguiente comando:
cd <ROOT_SOURCE> svn status ivan@ivan-Presario-CQ43-Notebook-PC:/home/ivan/aoo# svn status
<ROOT_SOURCE> indíca el nombre de la carpeta raíz donde se aloja nuestro codigo fuente. En mi caso /home/ivan/aoo
Si algunos archivos se marcan con M, quiere decir que han sido modificados, por ejemplo los archivos que he modificado para el tutorial about, como se puede ver en esta imagen:
Si queremos revertir los cambios podemos ejecutar.
Para actualizar:
svn update
La forma corta
svn up
Ivanpoot (talk) 22:50, 16 February 2013 (UTC)
Tutorial About
Descomprimiendo Apache_OpenOffice
La pregunta ¿Cómo puedo visualizar los cambios al terminar el tutorial? al fin resuelta. Primero tenemos que descomprimir Apache_OpenOffice, el directorio esta en:
aoo/main/instsetoo_native/unxlngi6.pro/Apache_OpenOffice/archive/install/en-US ---- Apache_OpenOffice_3.5.0_Linux_x86_install-arc_en-US
Cuando terminé de descomprimir el archivo desde la terminal el siguiente paso fue cambiar el nombre del archivo ya que es demasiado largo. Me sirvió el siguiente comando:
mv ~/Apache_OpenOffice_3.5.0_Linux_x86_install-arc_en-US aooinst
Es importante que todo el proceso se lleve a cabo siendo un usuario común y no como root. Si estamos como root implica más procesos porque requiere permisos.
Solución:
sudo chown -R ivan:ivan /home/ivan/aoo
El codigo anterior lo ejecuté desde: cd ~/
Ejecutanto soffice
Resulta sencillo hacerlo desde la terminal:
cd ~/ ivan@ivan-Presario-CQ43-Notebook-PC:~$ aooinst/apache_openoffice3/program/soffice
Luego me aparció el StartCenter como se puede ver en la imagen adjunta:
El apache_openoffice3 depende de la versión SVN que tengamos, en otras puede ser apache_openoffice4.
De igual manera ejecuté el código de diferentes maneras para iniciar una aplicación en particular:
~/aooinst/apache_openoffice3/program/swriter ~/aooinst/apache_openoffice3/program/scal ~/aooinst/apache_openoffice3/program/sdraw
Resultado final del tutorial:
Ivanpoot (talk) 02:10, 17 February 2013 (UTC)
Tutorial Build
Creación de directorio
Como uno de los primeros pasos que se hice para llevar a cabo este tutorial es la creación del directorio, algo similar al solenv, que se tiene en la carpeta raíz de alto nivel: aoo/main.
Cuando termine de crear los directorios, empieza lo interesante, implementar los códigos que estan en la wiki.
Aqui una imagen, del directorio que tuve que hacer.
Resultado
El objetivo del tutorial es ver como funciona el build con los directorios. Como se podrá observar en la wiki, los resultados que se van generando al hacer el build, requiere de otros archivos para que funcionen, de lo contrario se detiene y no avanza.
Bueno, adjunto el resultado esperado:
Ivanpoot (talk) 05:25, 23 February 2013 (UTC)
TOOLS DRAW
Archivos XML
Trato de identificar los repositorios que se ven involucrados en la barra de herramientas de DRAW.
Cada elemento de la barra de menús, barras de herramientas y barra de estado, es representado por una cadena que se llama un comando UNO. Las barras de menús, barras de estado y barras de herramientas se definen en archivos XML, por lo general se encuentra en:
ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/sd/uiconfig/sdraw/menubar$ gedit menubar.xml
En mi caso estuve modificando el código, sin embargo modifiqué códigos que no debía, entonces fue facil revertir los cambios consultando el código fuente en linea, mismo que se encuentra en la siguiente página:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/sd/uiconfig/sdraw/menubar/menubar.xml
Es importante mencionar que las etiquetas para los comandos UNO se definen en los archivos de configuración, que se encuentra en:
ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/officecfg/registry/data/org/openoffice/Office/UI$ gedit DrawImpressCommands.xcu
UNO comandos que se utilizan en más de una aplicación y tienen la misma etiqueta, están definidos en GenericCommands.xcu.
officecfg & postprocess
Cuando terminé de hacer los cambios respectivos, empecé con el build, no hay necesidad de reconstruir todo de nuevo el codigo fuente, solamente hice build en:
build debug=true dbglevel=3 officecfg
build debug=true dbglevel=3 postprocess
Para finalizar copie los archivos correspondientes en mi directorio de instalación, adjunto imagenes de los dos modulos reconstruidos.
Ivanpoot (talk) 01:36, 12 March 2013 (UTC)
Apache OpenOffice Draw
Registro de colores
Se me ha asignado un proyecto dentro del codigo fuente, especificamente en el modulo sd. Actualmente estoy trabajando en Draw, el proyecto consiste en automatizar el regitro de colores, es decir hacer el registro de nuevos colores de forma dinámica. El objetivo es evitar tantas restricciones para agregar un color en la paleta de colores de Draw (sin necesidad de registrar el color).
Aquí se puede ver como el usuario agrega actualmente un nuevo color.
export HELP_DEBUG=1
Por otra parte como una ayuda fundamental en el proceso de este proyecto, me han recomendado utilizar HELP_DEBUG que sirve básicamente para brindar una ayuda en la interfaz de usuario, de tal manera que al colocar ek cursor sobre algun cuadro de dialogo o boton, nos muestra el helpID. Con lo cual púde encontrar codigos relacionados con el proyecto Draw. Código para activar la ayuda:
ivan@ivan-Presario-CQ43-Notebook-PC:~$ export HELP_DEBUG=1
Como complemento habilitar la opcion extended tips:
Tools - Options - OpenOffice.org - General - Help - Tips - Extended tips
Finalmente, identificar los códigos puede llevar mucho tiempo, pero para facilitar este trabajo utilicé el buscador de código:
http://svn.services.openoffice.org/opengrok
Ivanpoot (talk) 20:54, 27 March 2013 (UTC)
tpcolor.cxx
add color
Como ya habia mencionado el export HELP_DEBUG=1 me sirvio de gran ayuda para identificar los códigos del proyecto Draw. Con la ayuda de opengrok he encontrado los siguientes códigos:
Boton para agregar un nuevo color:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/cui/source/tabpages/tpcolor.cxx#155
El boton anterior genera el siguinte evento:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/cui/source/tabpages/tpcolor.cxx#465
A través del tercer if se agrega el nuevo color, ya que en los anteriores se comprueba que el nombre no exista en la paleta de colores:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/cui/source/tabpages/tpcolor.cxx#521
dlgname.src
Este no es de gran importancia ya que solamente representa la interfaz de usuario, donde se ingresa el nombre del nuevo color:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/cui/source/dialogs/dlgname.src#32
Ahora el siguiente paso es identficar los archivos .soc, de tal manera que permita saber donde esta el algoritmo que genera estos archivos .soc.
--Ivanpoot (talk) 18:34, 29 March 2013 (UTC)
Archivos .soc
Palettes
En el siguiente directorio se muestra los archivos .SOC en el codigo fuente (AOO), lo que signifuca que ahora tengo que encontrar que código escribe sobre estos (soc) al registrar el color:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/extras/source/palettes/
En la interfaz de usuario:
De igual manera, aqui esta el directorio de la interfaz que sirve para importar los archivos, pero no es tan importante, ya que lo que me interesa es localizar el argoritmo que autúa sobre estos:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/fpicker/source/office/iodlg.src#204
--Ivanpoot (talk) 19:01, 29 March 2013 (UTC)
XColorTable
xtabcolr.cxx
En los ultimos días he estado buscando el código que se encarga de registrar los colores, me he topado con varios, pero al fin he encontrado los corrrectos, el el post anterior dije que lo interesante es encontrar
el archivo que genera los .SOC.
Como ayuda, pregunte en la lista de dev@openoffice.apache.org, me hablaron sobre la clase XcolorTable y aquí
se puede ver los directorios (ignorando los binfilter) de alli los dos directorios trunk/main/svx:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/svx/inc/svx/xtable.hxx
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/svx/source/xoutdev/xtabcolr.cxx
Como se puede ver, lo importante esta en el archivo xtabcolr ya que es donde se lleva a cabo la función, el otro
aunque no es tan importante pero hay que tenerlo en cuenta en ella se hacen declaraciones (xtable.hxx).
Estuve buscando lilbrerías en comun en los dos archivos, pero sin resultados.
El siguiente objetivo es tratar de cambiar la forma en que se registran los colores, es decir automatizarlo.
--Ivanpoot (talk) 15:47, 2 April 2013 (UTC)
Palettes
ClickAddHdl
Ahora estoy organizando los codigos involucrados en registro de colores:
Primero este es donde se declara el boton para agregar un nuevo color:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/cui/source/tabpages/tpcolor.cxx
aBtnAdd.SetClickHdl( LINK( this, SvxColorTabPage, ClickAddHdl_Impl ) );
En el mismo archivo en la linea 465 genera el evento:
IMPL_LINK( SvxColorTabPage, ClickAddHdl_Impl, void *, EMPTYARG )
Ahora bien, mas adelante en la linea 483 esta el codigo que comprueba si existe o no el nuevo color:
for ( long i = 0; i < nCount && bDifferent; i++ ) if ( aName == pColorTab->GetColor( i )->GetName() )
bDifferent = sal_False;
En la linea 521, se agrega, como se puede ver en el siguiente enlace:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/cui/source/tabpages/tpcolor.cxx#520
{'s','o','c'}
El siguiente archivo relacionado con el registro es el siguiente:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/svx/source/xoutdev/xtabcolr.cxx
Los códigos que me interesan están a partir de la linea 92.
Aquí es donde se remplaza, elimina y obtiene un color. Para ver todo el codigo:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/svx/source/xoutdev/xtabcolr.cxx#92
--Ivanpoot (talk) 16:05, 4 April 2013 (UTC)
Modificando tpcolor.cxx
Uno de los cambios que he llevado a cabo en el archivo tpcolor.cxx es el ciclo FOR que controla el registro de
los colores, comprobando que el nombre no se encuentre registrado en la paleta de colores.
Aquí presento el fragmento de código, al principio le hice cambios pero sin resultados finalmente decidí comentar
este fragmento:
for ( long i = 0; i < nCount && bDifferent; i++ ) if ( aName == pColorTab->GetColor( i )->GetName() ) bDifferent = sal_False;
Como se puede observar, el color se agrega automaticamente, con el unico problema: los nombres de repiten.Ahora los screenshots del antes y despues respectivamente:
--Ivanpoot (talk) 23:51, 9 April 2013 (UTC)
aName
Errores en build
En esta ocación he estado trabajando sobre una variable llamada aName, sin embargo se me ha presentado algunos errores en la construcción ya que al momento de tratar de imprimir la variable en el terminal para verificar mi hipotesis (que la variable contiene el nombre del nuevo color agregado) me dice que aName es de tipo String y no se puede imprimir.
Una imagen del error (uno de varios: ejemplo):
Solucion:
Como una ayuda estuve buscando informacion acerca de este error, entonces encontre en la wiki algo que me parecio interesante:
http://wiki.openoffice.org/wiki/Hacking
La solucion requeria de la definicion de:
#define CHAR_POINTER(THE_OUSTRING) ::rtl::OUStringToOString (THE_OUSTRING, RTL_TEXTENCODING_UTF8).pData->buffer
Este código lo puse al principio del archivo tpcolor.cxx, por otra parte me faltaba hacer la impresion de la variable:
printf ( "Mi variable aName es : %s ", CHAR_POINTER(aName) );
Con esto al fin pude comprobar mi hipotesis, resultado final:
--Ivanpoot (talk) 21:17, 11 April 2013 (UTC)
OUString
Concatenar String
Como uno de los primeros pasos hacia mi proyecto draw, he empezado a trabajar con String generados en la siguiente clase (agregar nuevos colores en la paleta de Drawing):
IMPL_LINK( SvxColorTabPage, ClickAddHdl_Impl, void *, EMPTYARG )
1. Implementar ::rtl::OUString en lugar de String :
Sustituir:
String aName( aEdtName.GetText() );
por
::rtl::OUString aName( aEdtName.GetText() );
stringstream
Ahora la concatenacion (prueba):
std::stringstream aStrStream; aStrStream << "\nThis is " << ::rtl::OUStringToOString(aName, RTL_TEXTENCODING_ASCII_US).getStr() << " and " << ::rtl::OUStringToOString(aName, RTL_TEXTENCODING_ASCII_US).getStr() << " genial!" <<std::endl;
Finalmente imprimir en consola:
_STL::cout << aStrStream.str();
Un screenshot del resultado final:
--Ivanpoot (talk) 00:02, 19 April 2013 (UTC)
StringBuffer
Metodos
Para llevar a cabo el proyecto DRAW la concatenación de variables es indispensable, ya que requiere la union del nombre del color y un número idntificador del mismo.
Ahora una breve explicaión de los pasos y metodos que he hecho hasta ahora:
Existen metodos especificos para cada acción deseado para el uso de StringBuffer, para mas información:
http://www.openoffice.org/udk/cpp/ref/names/rtl/c-OUStringBuffer.html
Aqui un ejemplo:
http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/odk/examples/DevelopersGuide/ProfUNO/CppBinding/string_samples.cxx
Los principales que he utilizado son:
buf.append( aName ); sal_Int32 nLen = buf.getLength(); String abof = buf.charAt(nLen - 1);
makeStringAndClear()
El metodo append sirve para agregar cualquier tipo de dato en la cadena, finalmente construir el String:
String lstring = buf.makeStringAndClear();
Este fragmento de código es el que debo modificar para ingresar la nueva cadena (en lugar de aName -> lstring):
if (eCM != CM_RGB)
ConvertColorValues (aAktuellColor, CM_RGB); pEntry = new XColorEntry( aAktuellColor, aName ); pColorTab->Insert( pColorTab->Count(), pEntry );
Probablemente, este ciclo me servirá para agregar un número a la variable, ya que permite comprobar si el nombre del color ya existe:
for ( long i = 0; i < nCount && bDifferent; i++ ) if ( aName == pColorTab->GetColor( i )->GetName() )
bDifferent = sal_False;
--Ivanpoot (talk) 22:01, 29 April 2013 (UTC)
Parche tpcolor.cxx
Código implementado
Al fin he logrado el registro automatico de los colores. Aquí presento el parche:
--- tpcparche.cxx 2013-04-08 19:41:41.000000000 -0500 +++ tpcolor.cxx 2013-04-30 21:08:59.255180876 -0500 @@ -24,6 +24,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_cui.hxx" +#include <rtl/ustrbuf.hxx> +using rtl::OUStringBuffer; + // include --------------------------------------------------------------- #include <tools/shl.hxx> #include <tools/urlobj.hxx> @@ -480,10 +483,10 @@ sal_Bool bDifferent = sal_True; // Pruefen, ob Name schon vorhanden ist - for ( long i = 0; i < nCount && bDifferent; i++ ) + /*for ( long i = 0; i < nCount && bDifferent; i++ ) if ( aName == pColorTab->GetColor( i )->GetName() ) - bDifferent = sal_False; - + bDifferent = sal_False;*/ + // Wenn ja, wird wiederholt ein neuer Name angefordert if ( !bDifferent ) { @@ -516,16 +519,94 @@ } delete( pDlg ); } - + // Wenn nicht vorhanden, wird Eintrag aufgenommen if( bDifferent ) { + // string concatination + sal_Int32 n = 1; + + // give it an initial size + OUStringBuffer buf( 128 ); + + //append aName to String + buf.append( aName ); + + //checks if the name already exists + for ( long i = 0; i < nCount && bDifferent; i++ ) + if ( aName == pColorTab->GetColor( i )->GetName() ) + bDifferent = sal_False; + + if ( !bDifferent ) + { + sal_Int32 nLen = buf.getLength(); + String abuf = buf.charAt(nLen - 1); + + do { + switch (buf.charAt(nLen - 1)){ + case '1': + { + buf.setCharAt(nLen - 1, '2'); + break; + } + case '2': + { + buf.setCharAt(nLen - 1, '3'); + break; + } + case '3': + { + buf.setCharAt(nLen - 1, '4'); + break; + } + case '4': + { + buf.setCharAt(nLen - 1, '5'); + break; + } + case '5': + { + buf.setCharAt(nLen - 1, '6'); + break; + } + case '6': + { + buf.setCharAt(nLen - 1, '7'); + break; + } + case '7': + { + buf.setCharAt(nLen - 1, '8'); + break; + } + case '8': + { + buf.setCharAt(nLen - 1, '9'); + break; + } + case '9': + { + buf.setCharAt(nLen - 1, '0'); + break; + } + default: + { + buf.append( n ); + break; + } + } + }while (buf.charAt(nLen - 1) < 10); + } + + // now transfer the buffer into the string. + String lstring = buf.makeStringAndClear(); + if (eCM != CM_RGB) ConvertColorValues (aAktuellColor, CM_RGB); - pEntry = new XColorEntry( aAktuellColor, aName ); + pEntry = new XColorEntry( aAktuellColor, lstring ); pColorTab->Insert( pColorTab->Count(), pEntry ); - + aLbColor.Append( pEntry ); aValSetColorTable.InsertItem( aValSetColorTable.GetItemCount() + 1, pEntry->GetColor(), pEntry->GetName() );
Este código todavia le falta ajustes, como el uso del switch/case, estaré trabajando en ello.
--Ivanpoot (talk) 17:03, 1 May 2013 (UTC)
std::rand()
Librerias
Para llevar a cabo este proceso de la geneción de numeros aliatorios fue necesario incluir una libreria, de la misma forma un archivo hxx, donde se declaran encabezados utilizados por los cxx.
#include <rtl/ustrbuf.hxx>
#include <cstdl ib>
Código en tpcolor.cxx
El uso de la propiedades del StringBuffer fue indispensable para este proceso. Al cabo de algunos errores en la interfaz de usuario, por fin el código quedó de la siguiente manera. Imagenes de resultado final:
Parche:
--- tpcparche.cxx 2013-04-08 19:41:41.000000000 -0500 +++ tpcolor.cxx 2013-05-07 14:03:05.890419322 -0500 @@ -24,6 +24,11 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_cui.hxx" +#include <rtl/ustrbuf.hxx> +#include <cstdlib> +using std::rand; +using rtl::OUStringBuffer; + // include --------------------------------------------------------------- #include <tools/shl.hxx> #include <tools/urlobj.hxx> @@ -480,10 +485,10 @@ sal_Bool bDifferent = sal_True; // Pruefen, ob Name schon vorhanden ist - for ( long i = 0; i < nCount && bDifferent; i++ ) + /*for ( long i = 0; i < nCount && bDifferent; i++ ) if ( aName == pColorTab->GetColor( i )->GetName() ) - bDifferent = sal_False; - + bDifferent = sal_False;*/ + // Wenn ja, wird wiederholt ein neuer Name angefordert if ( !bDifferent ) { @@ -516,16 +521,115 @@ } delete( pDlg ); } - + // Wenn nicht vorhanden, wird Eintrag aufgenommen if( bDifferent ) { + // string concatination + + // give it an initial size + OUStringBuffer buf( 128 ); + + //append aName to String + buf.append( aName ); + + //checks if the name already exists + for ( long i = 0; i < nCount && bDifferent; i++ ) + if ( aName == pColorTab->GetColor( i )->GetName() ) + bDifferent = sal_False; + + if ( !bDifferent ) + { + sal_Int32 nLen = buf.getLength(); + String ab = buf.charAt(nLen - 1); + + sal_Int32 xx = std::rand() % 5000 + 1000; + + if (ab == '1' || ab == '2' || ab == '3' || ab == '4' || ab == '5' || ab == '6' || ab == '7' || ab == '8' || ab == '9' || ab == '0') + { + buf.setLength(nLen - 4); + buf.append( xx ); + }else{ + buf.append( xx ); + } + + } + + // now transfer the buffer into the string. + String lstring = buf.makeStringAndClear(); + if (eCM != CM_RGB) ConvertColorValues (aAktuellColor, CM_RGB); - pEntry = new XColorEntry( aAktuellColor, aName ); + pEntry = new XColorEntry( aAktuellColor, lstring ); pColorTab->Insert( pColorTab->Count(), pEntry ); - + aLbColor.Append( pEntry ); aValSetColorTable.InsertItem( aValSetColorTable.GetItemCount() + 1, pEntry->GetColor(), pEntry->GetName() );
--Ivanpoot (talk) 19:55, 7 May 2013 (UTC)
Archivos UNO
UNO command
He estado investigando sobre el tema de los UNO's, ahora una breve descripción:
Cada elemento de la barra de menús, las barras de herramientas y la barra de estado (Drawing en particular), está representada por una cadena que se llama comando UNO. Las barras de menús y barras de herramientas, barras de estado están definidos en archivos XML, por lo general se encuentran en:
<module>/uiconfig/[submodule/][uielement:menubar|statusbar|toolbar]/*.xml http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/sd/uiconfig/sdraw/menubar/menubar.xml
En la barra de menús y la barra de estado encontrará sólo un archivo xml, porque sólo hay una barra de menús y una sola barra de estado.
Las etiquetas de los comandos UNO se definen en los archivos de configuración, que se encuentra en:
main/officecfg/registry/data/org/openoffice/Office/UI/<Module>Commands.xcu http://opengrok.adfinis-sygroup.org/source/xref/aoo-trunk/main/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
UI. Interfaz de Usuario
Ahora bien, despues de identificar la ubicación de estos archivos, finalmente encontré el orden en la interfaz de usuario:
LOs comandos UNO que se utilizan en más de una solicitud y tienen la misma etiqueta, se definen en GenericCommands.xcu (link en UNO command).
Los cambios que se llevan acabo: sólo se modifica en la en-US string (teniendo en mente en cambiar las etiquetas de la UI). Por lo tanto no se tiene que reconstruir toda la oficina para este simple cambio, sólo officecfg y postprocess, a continuación, copiar el archivo modificado en la instalación local.
--Ivanpoot (talk) 13:16, 13 May 2013 (UTC)
Actualizando de nuevo AOO
Actualizando:
Al cabo de hacer pruebas en la interfaz de usuario con el codigo de registro (post anterior), me percate que AOO4 ya tenia nuevas caracteristicas en la UI, el sidebar.
Entonces decidí actualizar mi copia local.
aoo/main svn update
La actualización no se completo, como deberia ser, cuando intenté ejecutar el mismo comando, me generaba error, la cual he solucionado con:
svn cleanup
Construccíon
Ahora, a construir todo el codigo fuente:
ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/instsetoo_native$ build --all
Al paracer la construcción se estaba ejecutando con exito, hasta que se rompio en el modulo sal.
Break module SAL
Aqui el error:
Estuve revisando correos en la lista dev. Afortunadamente encontré informacion util, donde se hablaba de una posible solución (Titulo correo):
svn commit: r1483216 - /openoffice/trunk/main/sal/inc/rtl/string.hxx
Aplique el parche, quedando el código de la siguiente manera:
size_t operator()( const char* p) const { size_t n = 0; while( *p) n += 4*n + *static_cast<unsigned char*>(p++); return n;
No funcionó. Envie un correo preguntando del error. La solución fue actualizar de nuevo mi copia local, ya que el error fue resuelto desde el repositorio.
Break module SVX
La construción continuó. Hasta ahora todo iba bien, pero la construcción se rompió de nuevo en el modulo SVX. Aqui el punto de interupción.
En busca de solución.
--Ivanpoot (talk) 01:05, 18 May 2013 (UTC)
Solución Break module SVX
SNV update
He intentado resolver el problema verificando el archivo que provoca este problema, sin embargo no hay resultados. Lo que hice primero fue:
ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ svn up U source/unodraw/UnoGraphicExporter.cxx U source/xoutdev/xattr2.cxx U source/svdraw/svdmrkv.cxx U source/svdraw/svdhdl.cxx U source/svdraw/svdfmtf.cxx U source/sidebar/paragraph/ParaLineSpacingControl.cxx U source/sidebar/nbdtmg.cxx U inc/svx/svdograf.hxx U inc/svx/svdhdl.hxx Actualizado a la revisión 1483970. ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ grep -r xftsfit *
No funciono. Depues intente esto:
ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ svn up En la revisión 1483982. ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ grep -r xftsfit * ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ rm -rf unx*pro ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ rm -rf /home/ivan/aoo/main/solver/400/unxlngi6.pro/workdir /CxxObject/svx
Ahora, la construcion se estaba llevando a cabo, pero el error persiste, el punto de quiebre sigue siendo el mismo. Finalmente decidi eliminar el contenido del modulo svx. Aplique de nuevo el svn up (svn update).
Con esto he solucionado el problema.
Quiebre en otros módulos
Era bastante extraño que la construcción tuviera muchos puntos de quiebre, por lo cual empece a verificar las fechas de las ultimas modificaciones en codigo fuente. Verificar fechas:
http://svn.apache.org/viewvc/openoffice/trunk/main/?sortby=date
La razón es que el codigo local que tenia era antiguo y cuando aplique el comando update quedaron fragmentos de códigos en el local que tengo, por lo tanto lo que hice fue repetir la misma acción del apartado SNV update. Ejemplo an alguno modulos: ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/svx$ svn update
ivan@ivan-Presario-CQ43-Notebook-PC:~/aoo/main/sd$ svn update
Aqui algunas imagenes de los errores que se produjeron las cuales se han resuelto:
--Ivanpoot (talk) 19:55, 21 May 2013 (UTC)
Color - Area
Funcionalidad
El registro de colores se lleva a cabo de forma dinámica, sin embargo ahora el objetivo es cambiar la paleta de colores a un espectro.
Aqui un video corto sobre la funcionalidad implemendata en Apache OpenOffice Drawing:
http://www.screenr.com/25sH
Sidebar
Hasta este punto decidí actualizar el codigo fuente ya que de acuerdo a lo que he leido en la lista, se ha implementado una nueva caracteristica en la suite, este es SIDEBAR.
Ahora lo ideal sería cambiar la ventana flotante "area" a un espectro como he dicho anteriormente, un screenshot:
--Ivanpoot (talk) 03:06, 8 June 2013 (UTC)
Compilación AOO (build --all)
Requerimientos:
Instalación perl -MCPAN -e shell
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ perl -MCPAN -e shell Would you like to configure as much as possible automatically? [yes] yes What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] sudo Would you like me to automatically choose some CPAN mirror sites for you? (This means connecting to the Internet) [yes] yes
Instalación de modulos perl::
cpan[1]> install Archive::Zip cpan[2]> install LWP::UserAgent cpan[3]> install XML::Parser
Al ejecutar:
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ ./configure --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 --with-epm-url=http://www.msweet.org/files/project2/epm-3.7-source.tar.gz
Error 1: checking for cups/cups.h... no configure: error: cups/cups.h could not be found. libcupsys2-dev or cups???-devel missing?
Solución:
fix by running: sudo apt-get install libcupsys2-dev
Error 2:
checking for security/pam_appl.h... no configure: error: pam_appl.h could not be found. libpam-dev or pam-devel missing?
Solución:
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ sudo apt-get install libpam0g-dev
error 3:
checking for external/unowinreg/unowinreg.dll... configure: WARNING: not found, will be cross-built using mingw32 configure: error: for rebuilding unowinreg.dll you need the mingw32 C++ compiler. Specify mingw32 g++ executable name with --with-mingwin. Or use prebuilt one from http://tools.openoffice.org/unowinreg_prebuild/680/ and put it into external/unowinreg
Solución: descargar unowinreg.dll
http://www.openoffice.org/tools/unowinreg_prebuild/680/ Copiar unowinreg.dll a aoo/main/external/unowingreg
error 4:
checking for bison... no configure: error: no bison found in $PATH, install bison
Solución:
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ sudo apt-get install bison
error 5:
checking for flex... no configure: error: no flex found in $PATH, install flex
Solución:
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ sudo apt-get install flex
Bootstrap
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ ./bootstrap
Preparación de la plataforma:
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ source LinuxX86Env.Set.sh
Compilar todo el código fuente:
ivan@ivan-HP-Mini-110-1000:~/aoo/main$ cd instsetoo_native ivan@ivan-HP-Mini-110-1000:~/aoo/main/instsetoo_native$ build --all
Con esto la compilación ha iniciado con exito!
Para mas información visitar:
http://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO
Videos tutoriales
De la misma manera, aqui unos videos:
http://www.screenr.com/1ONH - Instalacion Subversion - Obteniendo el Codigo Fuente AOO http://www.screenr.com/w0NH - La descarga se interrumpe http://www.screenr.com/jDBH - Ubuntu Build - Parte 1 http://www.screenr.com/VZBH - gperl http://www.screenr.com/wkBH - Ubuntu Build - Parte 2 http://www.screenr.com/qLBH - Ubuntu Build - General Build Requirements http://www.screenr.com/dqBH - Ubuntu Build - General Build Requirements (Solucion) http://www.screenr.com/GEBH - Autoconf & Bootstrap & build --all