14
Mar
2009
victor

Problemas con el diálogo FilePicker en OpenOffice 3 y Windows Vista

Recientemente he estado trabajando en una sencilla base de datos que le resultara de utilidad a mi mujer para ayudarla en su trabajo. Uno de los elementos que debía contemplar en la base de datos era una tabla de rutas de imágenes, que debían ser insertadas usando un diálogo de selección de ficheros (FilePicker).

Inicialmente había trabajado una primera versión de la base de datos en mi ordenador de trabajo que utiliza Windows XP con OpenOffice 3.0. Sin embargo, cuando fui a probar la citada base de datos en el ordenador de mi mujer, que usa Windows Vista Home Premium (también con OpenOffice 3.0 y posteriormente actualizado a 3.0.1), no funcionaba en absoluto la parte de selección de ficheros de imágenes. Probé también con el Portable OpenOffice 3.0 en inglés y también fallaba con el Vista.

Intenté mostrar el diálogo a través de una macro de StarBasic, pero tampoco funcionaba en Vista (sí en XP). Curiosamente, el diálogo de selección de carpeta, FolderPicker, si se muestra sin problemas en Vista utilizando la macro, aunque no me resultara de utilidad.

He buscado en los foros de usuarios de OpenOffice y en el sistema de gestión de incidencias del proyecto, y he visto algunas referencias al mismo problema:

- Mensaje en el foro en Septiembre de 2008 de un usuario que presenta con la versión 3.0 RC1 el mismo error en Windows Vista. Posteriormente este mismo usuario reporta en el proyecto la incidencia 94034, aunque el resultado de la misma es que no es problema de OpenOffice, ya que el usuario indica que la causa tenía que ver con la ubicación de la macro.
- Otro mensaje en un foro no oficial de usuarios ya de Febrero de 2009 en el que varios usuarios comentan el mismo error.
- Incidencia 90219 en la que comentan el mismo comportamiento pero en la versión de OpenOffice para MacOS. En este caso se apunta que el problema está en la no inicialización del diálogo FilePicker. Esta inicialización se indica en la incidencia que es ahora obligatoria, pero parece que la documentación del proyecto no estuviera convenientemente actualizada.

Esta última referencia es la que al final me ha permitido resolver el problema, ya que obligando a la inicialización del diálogo éste se muestra ya correctamente en el OpenOffice 3.0.1 con Windows Vista.

Así, el diálogo de ejemplo que aparece en la ayuda de OpenOffice debería ser corregido (al igual que la documentación y ejemplo sobre el control FilePicker en la wiki de OpenOffice), ya que no funcionará en Windows Vista si no se inicializa el diálogo (en negrita se indica el código adicional al que aparece en la ayuda para la inicialización del diálogo):

Sub Main

fName = FileOpenDialog ("Seleccione un archivo")

print "file chosen: "+fName

End Sub

function FileOpenDialog(title as String) as String

Dim initArgs(0)

filepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")

initArgs(0) = 0

filePicker.initialize(initArgs)

filepicker.Title = title

filepicker.execute()

files = filepicker.getFiles()

FileOpenDialog=files(0)

End function

Hecho esto, ya aparecerá correctamente el diálogo de selección de fichero.

Finalmente, como curiosidad, indicar que el comportamiento cuando se utiliza este diálogo para la selección múltiple de ficheros, no es el indicado en la documentación para el método getFiles de XFilePicker, ya que todos los ficheros seleccionados aparecen con la ruta completa.