Reciban un cordial saludo,
Estoy desarrollando un micro-aplicativo, simple pero útil, escrito en C++ con licencia GPL que deberá cumplir la funcionalidad de transformar un archivo ODT (archivo de texto ODF) en un formato HTML, limpio, sin CSS, sin espacios innecesarios, con el propósito de ser fácilmente copiado a un blog quedando lo más fiel posible a lo realizado en el archivo ODT. Actualmente no es simple obtener un texto con formato listo para pegar en un blog que no esté editado directamente en HTML, una solución que viene inmediatamente a la cabeza es una debida exportación desde el OpenOffice, pero OpenOffice genera un HTML con CSS y esto es un problema para este tipo de copia, KWork por ejemplo si permite un HTML sin CSS limpio, pero aún así es necesario limpiar el documento de saltos de líneas adicionales. Este aplicativo pretende hacer la copia al vuelo conservando los atributos de formato comunmente permitidos en blogs: fuentes negritas, cursiva y subrayado; tablas, encabezados (headers), párrafos,... Una idea complementaria al desarrollo, es adaptar este aplicativo a una acción del explorador de archivos, por ejemplo Nautilus, y que al darle click derecho al archivo aparezca una opción "Copiar para blog...", esto ya es posible gracias al paquete "nautilus-actions"; dada la configurabilidad de KDE, esto debe ser posible sin instalaciones adicionales como en Gnome.
Vaya sorpresa que haciendo un aplicativo tan simple que esperaba terminar en 2/4 horas de pan y gaseosa frente al computador, encontré pequeños problemas bien galletudos y otros no galletudos pero tengo mis dudas de qué forma hacerlo mejor. A continuación comento y de antemano agradezco cualquier colaboración:
El portapapeles
Lo más ágil es dejar el contenido convertido en el portapapeles para permitir copiarlo de inmediato en el browser, para el propósito estoy empleando QClipboard, pero vaya sorpresa la que me llevé cuando no me funcionaban los accesos al portapapeles para escritura, y después de horas probando me encontré con esta parte de la documentación:
Lastly, the X11 clipboard is event driven, i.e. the clipboard will not function properly if the event loop is not running. Similarly, it is recommended that the contents of the clipboard are stored or retrieved in direct response to user-input events, e.g. mouse button or key presses and releases. You should not store or retrieve the clipboard contents in response to timer or non-user-input events.
Fuente: http://doc.trolltech.com/4.3/qclipboard.html
Como la copia del portapapeles no se produce en respuesta a un evento gráfico, ni el aplicativo tiene un loop de eventos, X11, más que el mismo Qt, parece tener esa limitación ... ¿Qué me recomiendan hacer?.
Gestión de archivos ZIP
El archivo ODT es básicamente un archivo comprimido con formato ZIP, para el funcionamiento del software es por lo tanto encesario obtener el contenido del archivo "content.xml" dentro del archivo ZIP representado en un ODT. ¿Qué librería, lo más estandar posible, me recomendarían para manejar archivos ZIP?.
PD: anexo código fuente del mini-proyecto, por si alguien quiere dar una sugerencia adicional. Si tienen instalado los paquetes básicos de compilación C++ y Qt, solo es dar un "make", ya están generados los archivos de proyecto y Makefile necesarios.
Estoy desarrollando un micro-aplicativo, simple pero útil, escrito en C++ con licencia GPL que deberá cumplir la funcionalidad de transformar un archivo ODT (archivo de texto ODF) en un formato HTML, limpio, sin CSS, sin espacios innecesarios, con el propósito de ser fácilmente copiado a un blog quedando lo más fiel posible a lo realizado en el archivo ODT. Actualmente no es simple obtener un texto con formato listo para pegar en un blog que no esté editado directamente en HTML, una solución que viene inmediatamente a la cabeza es una debida exportación desde el OpenOffice, pero OpenOffice genera un HTML con CSS y esto es un problema para este tipo de copia, KWork por ejemplo si permite un HTML sin CSS limpio, pero aún así es necesario limpiar el documento de saltos de líneas adicionales. Este aplicativo pretende hacer la copia al vuelo conservando los atributos de formato comunmente permitidos en blogs: fuentes negritas, cursiva y subrayado; tablas, encabezados (headers), párrafos,... Una idea complementaria al desarrollo, es adaptar este aplicativo a una acción del explorador de archivos, por ejemplo Nautilus, y que al darle click derecho al archivo aparezca una opción "Copiar para blog...", esto ya es posible gracias al paquete "nautilus-actions"; dada la configurabilidad de KDE, esto debe ser posible sin instalaciones adicionales como en Gnome.
Vaya sorpresa que haciendo un aplicativo tan simple que esperaba terminar en 2/4 horas de pan y gaseosa frente al computador, encontré pequeños problemas bien galletudos y otros no galletudos pero tengo mis dudas de qué forma hacerlo mejor. A continuación comento y de antemano agradezco cualquier colaboración:
El portapapeles
Lo más ágil es dejar el contenido convertido en el portapapeles para permitir copiarlo de inmediato en el browser, para el propósito estoy empleando QClipboard, pero vaya sorpresa la que me llevé cuando no me funcionaban los accesos al portapapeles para escritura, y después de horas probando me encontré con esta parte de la documentación:
Lastly, the X11 clipboard is event driven, i.e. the clipboard will not function properly if the event loop is not running. Similarly, it is recommended that the contents of the clipboard are stored or retrieved in direct response to user-input events, e.g. mouse button or key presses and releases. You should not store or retrieve the clipboard contents in response to timer or non-user-input events.
Fuente: http://doc.trolltech.com/4.3/qclipboard.html
Como la copia del portapapeles no se produce en respuesta a un evento gráfico, ni el aplicativo tiene un loop de eventos, X11, más que el mismo Qt, parece tener esa limitación ... ¿Qué me recomiendan hacer?.
Gestión de archivos ZIP
El archivo ODT es básicamente un archivo comprimido con formato ZIP, para el funcionamiento del software es por lo tanto encesario obtener el contenido del archivo "content.xml" dentro del archivo ZIP representado en un ODT. ¿Qué librería, lo más estandar posible, me recomendarían para manejar archivos ZIP?.
PD: anexo código fuente del mini-proyecto, por si alguien quiere dar una sugerencia adicional. Si tienen instalado los paquetes básicos de compilación C++ y Qt, solo es dar un "make", ya están generados los archivos de proyecto y Makefile necesarios.