FSDI no modal

Una de las últimas mejoras que hemos incorporado a los programas ha sido convertir la interfaz FSDI en no modal. De esta manera se puede pasar de un mantenimiento a cualquier opción de la barra de menús o de la barra de botones sin cerrar el mantenimiento en el que se está y tambien minimizar la ventana de la aplicación sin cerrar el mantenimiento. Todavía quedan cositas por arreglar pero con esta mejora los programas han ganado bastante.

Para hacer esto hemos tenido que añadir la clausula NOWAIT en el ACTIVATE del diálogo, pues hay que recordar que la clase TFSDI está basada en diálogos y no en ventanas. Al hacer esto el diálogo pasa a ser no modal y se puede elegir otra opción de la ventana principal sin cerrarlo, con lo que tuvimos que controlar por código que al abrir un diálogo FSDI no hubiese abierto otro. Otro problema fue que FWH se comporta de una manera extraña: al añadir la clausula NOWAIT a un dialogo pasan a ser no modales el propio dialogo y todos los que se creen a partir de él, con lo cual teniamos el problema de que se podia pasar a otra acción con el dialogo de edición de un registro con el registro a medio editar, lo que no parece muy conveniente. Ya tenemos todo listo, y salvo problema de última hora, en unos dias haremos públicas las versiones candidatas – RC – 1 de Cuaderno de Bitácora y el Puchero.

El XAAC espera.

GPF y WindowsUpdate

Este fin de semana estuve refactorizando código de el Puchero para presentarlo al XAAC. No es que piense entregar el código, pero como programador intento que el programa por dentro esté bonito. Resulta que al pulsar el botón salir el programa mostraba un formulario preguntando si se queria salir del programa, pero al dar en la X del cuadro de control de la ventana salía directamente. A medias de la refactorización me bajé a casa a recoger correo. Cuando terminé la refactorización recompilé y al salir del programa me daba un bonito GPF.

Hacia meses, desde la versión 0.90 de xHarbour que no tenía GPF’s en el Puchero. Me puse a mirar todo el código que habia tocado y no vi nada raro. Cogí una copia del código de la semana anterior y tampoco. Lo deje estar, pensando que al dia siguiente más despejado lo arreglaría.

Pero no. Ayer miré, remiré. Soy torpe, pero… joder que esto es una chorrada. Me acordé de que había aplicado un parche relacionado con el consumo de recursos de FWH. Conservaba la libreria previa al parche, las renombré, recompilé… el GPF seguía. ¿ Que había hecho desde el viernes, que el programa iba perfecto, hasta el sábado ? La refactorización, bajar el correo … y un WindowsUpdate. Fui al panel de control y desinstalé todos los parches que apliqué el día 17 y el GPF desapareció.

¿ Que bien verdad ? Pues no, desde mi punto de vista es una putada de narices. Si al hacer un WindowsUpdate mis programas van a dar GPF pues apaga y vamonos. Eso no es programar, eso es luchar contra los elementos. Que Dios nos pille confesados con el WindowsUpdate, el ServicePack 2 y la
política de Microsoft de pasar de compatibilidades hacía atrás. ¿ Que les digo a los usuarios, que no actualicen Windows ? Si un señor instala una demo de un programa y al salir le da un GPF he perdido un potencial cliente porque seguro que no registra el programa.

La verdad es que dan ganas de irse a Linux y dedicarse a hacer software libre.

xHarbour Annual Application Competition

Se acaba de convocar la primera edición del Concurso anual de aplicaciones xHarbour, cuyas bases están en la web de xHarbour.com. Sinceramente me parece una excelente idea, porque cosas como estas son las que contribuyen a crear comunidad entre los programadores y a sentir que su herramienta está en la cresta de la ola. Recuerdo los años dorados de los lenguajes xBase, a mediados de los 90, en que los desrrolladores de UltimAde ganaron un par de veces el concurso de programación de la revista DataBased Advisor. Los programadores xBase eramos los reyes del mambo, luego vinieron los años oscuros y desde hace un par de años parece que hay luz al final del tunel.

En los hilos de news de xHarbour y FWH donde se anunció el concurso hubo muchas respuestas, alguna de ellas realmente interesante, como la de Sandro Freire – uno de los desarrolladores de HwGui – o la de TheFull. Si Rafa manda algo de su GUI multiplataforma basada en Gtk+ creo que tenemos un serio candidato a premio.

Jaime y yo vamos a competir con las nuevas versiones de el Puchero y Cuaderno de Bitácora. No se cual será el nivel de los programas que se presenten, pero tenemos claro que no tenemos que envidiar nada a nadie. Haremos campañas para que los lectores de nuestros blogs nos voten, a ver si pillamos alguno de los premios, que falta nos hace.

compatibilidad entre xHarbour y FWH

Esta semana ha habido un post en las news de FWH que me ha llamado poderosamente la atención. Es este post se preguntaba por la incompatibilidad entre xHarbour y versiones de FWH previas a la 2.5 y Walter Negro, componente del equipo de xHarbour al que nunca le agradeceremos las explicaciones que nos dá, aclaraba:

Es verdad, xHarbour es compatible con FWH 2.4 hasta la Beta 1.1 que acaba desalir, pero ya no con el último CVS.

Sin embargo haciendo unas pequeñas modificaciones y recompilando el xHarbour por completo, es posible mantener la compatibilidad con FWH 2.4 y anteriores.

El que xHarbour no sea compatible, no es un problema de xHarbour.
A decir verdad, la causa de esta incompatibilidad surge de una necesidad y
de una propuesta hecha por el equipo de desarrollo de xHarbour.
Esta propuesta se comunicó al equipo de desarrollo de Harbour junto con la
propuesta de como mantener la compatibilidad, al menos durante un tiempo
necesario para que Antonio pudiera brindar las actualizaciones necesarias al
código, actualizaciones que prometió tener prontamente.
El equipo de desarrollo de Harbour no quiso mantener la compatibilidad con
FWH e hizo el cambio directamente y es así que FWH 2.4 solo es compatible
hasta la versión 0.43 y de la misma forma, FWH 2.5 sólo es compatible con
0.44.

Lo que se hizo en xHarbour ahora, es ser compatible con Harbour y con FWH
2.5, aunque sigue existiendo la posibilidad de recompilarlo para mantener la
compatibilidad con FWH 2.4 Dejan de ser compatibles por la misma razón que lo fué Harbour. Esto es, se pasó de SHORT a LONG el registro que indica la cantidad de referencias que existe sobre un array u objeto.

De momento, la manera de solucionar esta incompatibilidad es esta – GRACIAS WALTER -:

Para poder seguir usando el xHarbour actual con FWH 2.4, hay que restaurar
los archivo hbvmpub.h y hbdefs.h anteriores al cambio.

Una forma sencilla de conseguirlo, es en SourceForge.

http://cvs.sourceforge.net/viewcvs.py/*checkout*/xharbour/xharbour/include/hbvmpub.h?rev=1.31

http://cvs.sourceforge.net/viewcvs.py/*checkout*/xharbour/xharbour/include/hbdefs.h?rev=1.55

En este otro link, se puede apreciar en colores las líneas eliminadas

http://cvs.sourceforge.net/viewcvs.py/xharbour/xharbour/include/hbvmpub.h?r1=1.31&r2=1.32

http://cvs.sourceforge.net/viewcvs.py/xharbour/xharbour/include/hbdefs.h?r1=1.55&r2=1.56

Pero yo creo que el tema no es que cada uno se monte de nuevo xHarbour para mantener la compatibilidad. Como decía TheFull en el mismo hilo, no es cosa de que un compilador sea compatible con una librería, sino al revés. No se en que medida estos cambios afectan a FWH, pero creo que sería un detallazo que FiveTechSoft publicase los parches adecuados para que FWH mantuviera la compatibilidad con xHarbour.

nuevo motor de informes

Una de las novedades destacadas de las nuevas versiones de Cuaderno de Bitácora y el Puchero va a ser nuestro nuevo motor de informes. Es un motor de informes a lo Calero, ya que fue en su GST+ donde lo ví por primera vez. Nos ha costado bastante ponerlo en marcha, pero el resultado es muy bueno.

El formulario de selección de informes se compone de tres pestañas. En la primera se elige el tipo de listado que se quiere, contando que los datos vienen con la ordenación seleccionada en el mantenimiento del fichero de que se trate.

En la segunda pestaña se eligen las columnas del listado, el orden en que van a salir, la anchura de la columna y si se quiere totalizar, para los casos en que sean datos numéricos.

Y, por último, en la tercera pestaña se eligen los encabezados del informe y los tipos de letra de todos los elementos: títulos, encabezados de columnas y datos.

Además, el motor de informes recuerda el último informe realizado y lo presenta la siguiente vez que se accede a él.

estoy aquí…

El verano está siendo largo en muchos sentidos. Desde que nos fuimos a vivir al campo una de mis mayores preocupaciones es la conexión a internet. Parece que a Telefónica no le sale rentable instalar lineas de teléfono fuera de los cascos urbanos de las localidades y las compañías eléctricas no acaban de despegar con el acceso por red eléctrica. El resultado es que ni tengo teléfono ni conexión a internet, y no se cuando lo voy a tener. Un profesor mio decía siempre que hambre que espera comer no es hambre, pero yo no se cuando comeré.

La versión 4 de el Puchero está casi lista. Vamos por la 10ª beta y falta afinar unas cosas de la clasificación francesa, pero creo que este mes tendré ya una beta pública. Jaime también va bien con la versión 6 de Cuaderno de Bitácora y creo que para mediados de octubre tengamos en la calle las nuevas versiones. Esto de no tener internet está bien porque no te despistas y cuando te sientas a programar programas y no haces el indio, pero llevo un lio de narices con el correo, que leo cuando puedo y contesto cuando me dejan.

Dos cosas a destacar: en Noviembre reunión de Olivares2000, y si me dejan haré una ponencia sobre los primeros capítulos del libro ‘The pragmatic programmer’.

La otra: T-Gtk. Rafa Carmona, The Full, está construyendo una GUI sobre GTK+ para Harbour, usando además GCC. Quiero subirme a este tren, ponerme las pilas y colaborar. Creo que usar GTK+ es una excelente idea, y creo que la única de poder desarrollar para Windows y Linux al mismo tiempo, algo sencillamente genial. Espero que en la reunión de GO2000 Rafa nos cuente cosas de su criatura.

progressbar con FWH

Hasta ahora había usado los meter de CanalFive en mis aplicaciones, que eran a 16 bits. Sin embargo, con la modificación en la clase TBitmap de la versión 2.3 de FW los meter dejaron de funcionar, asi que comencé a usar la clase TMeter de FWH. Miré la clase TProgressBar de FWH pero, no se porqué, tenía en la cabeza que no funcionaba bien. Cuando cayó en mis manos xBackupLite una de las cosas que me llamó la atención era que usaba ProgressBar para indicar la realización de la copia de seguridad. Como el código fuente venía incluido fue fácil ver el comportamiento del control en vivo, tas lo cual me dispuse a usar este control en vez de los clásicos meter. El resultado es este:

xbackuplite

De vez en cuando das con un programa que te llama la atención y este es el caso de xBackupLite. No por lo que hace – genera copias de respaldo de archivos en un fichero ZIP y permite restaurarlos -, sino por cómo lo hace y por la herramienta con que está hecho. El programa es superelegante y está hecho con xHarbour y FWH.

Sus autores son Carlos Vargas y Kleyber Derick, habituales de los foros de Fivetech Software. Además trae el código fuente para poder estudiar en profundidad el manejo de archivos ZIP desde nuestras aplicaciones. Si Antonio Linares reinstaurara el cool tool of the month creo que xBackupLite sería un buen candidato a premio. Por gentileza de los autores, el progama completo se puede descargar desde este blog.

reunión xbase

El próximo día 10 de Julio tenemos prevista una reunión de programadores xBase en Murcia. Seguramente vendrá José F. Giménez a contarnos cosas de Xailer y seguro que hay alguna novedad más.

Si estás interesado en asistir deja un comentario indicando la manera de contactar contigo.

paradigmas y comunidades de desarrolladores

Estos días Jaime y Rafa han publicado post sobre Xailer, José Alfonso le ha hecho una entrevista a Paco sobre vCode y se respira aire fresco dentro de la comunidad xBase. Desde mi punto de vista Xailer lo tiene complicado pues supone un cambio total de paradigma para los programadores xbase.

Un paradigma, de acuerdo a Thomas Kuhn, es la teoría o idea que es compartida por una comunidad científica y que nadie cuestiona. Ahora mismo está claro que el paradigma para programar en Windows es Fivewin/FivewinHarbour pero existen
anomalías dentro del paradigma que pueden hacer que haya una revolución por parte de la comunidad de programadores y esta decida abandonar el paradigma para abrazar otro. Esto se debe sobre todo – sigo con la teoría de Kuhn – a un sentimiento profundo de los miembros de la comunidad de que el paradigma no es el correcto y que deben buscar otro paraguas donde cobijarse. En las teorías de Kuhn el concepto de comunidad científica como ente social es fundamental y viene definido como un grupo de individuos que comparten un paradigma y que tienen lazos de conocimientos comunes.

Hace poco un amigo me dijo una frase que se me ha quedado grabada y que indica claramente que es uno de los progradores xbase en busca de otro paradigma. La frase fue: ‘Estoy harto de esperar tecnologías que nunca llegarán a xbase‘. Uno que se va. ¿ A donde ? Sólo él lo sabe, pero esa duda trascendental es la que indica que va a buscarse otro paraguas.

Si Xailer, o el entorno que sea, quiere triunfar debe hacerse atractivo para la comunidad, debe crear comunidad, de manera que haga que la comunidad de programadores xbase se replanteen lo bueno del paradigma actual y entren en crisis. ¿ Como se consigue esto ? Pues principalmente dando a conocer su herramienta y ofreciendo motivos para cambiar.

José, Ignacio: ¿ Que tal un blog donde nos tengais al día sobre Xailer ?