User talk:Ivanpoot

From Apache OpenOffice Wiki
Jump to: navigation, search

Contents

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:


Error buil all 3-30 am.png


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:

Impress.png


Y por ultimo el resultado, guardar un gráfico como una imagen:

Guardargrafico.png


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:

In.png






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:


Status.png


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:

Start.png

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:

Aboutfinal.png

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.


Directorio.png


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:


Helloworld.png


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.

Officecfg.png
Postprocess.png




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.

Selección 008.png

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
Selección 012.png

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:

Selección 013.png

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:

Addcolor.png
Addcolor2.png
Addcolorsans.png



--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:

ANamete.png


--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:

Open.png

--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:

ErrorSal.png

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


--Ivanpoot (talk) 18:56, 8 June 2013 (UTC)

Personal tools