<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>A cuadros</title>
	<link>http://blog.rastersoft.com</link>
	<description>El primer blog con camisa de leñador</description>
	<pubDate>Tue, 06 May 2008 21:56:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>Volviendo poco a poco</title>
		<link>http://blog.rastersoft.com/index.php/2008/05/06/volviendo-poco-a-poco/</link>
		<comments>http://blog.rastersoft.com/index.php/2008/05/06/volviendo-poco-a-poco/#comments</comments>
		<pubDate>Tue, 06 May 2008 21:53:00 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Generales</category>
	<category>Nueva versión</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2008/05/06/volviendo-poco-a-poco/</guid>
		<description><![CDATA[Los que sigan mi blog habitualmente (De ilusión también se vive ¿no? Dejadme que me crea que me lee alguien) habrán notado que he estado más de cuatro meses sin publicar nada; ni entradas ni nuevas versiones. La razón es que en diciembre tuve un golpe con el coche (el clásico &#8220;alcance por detrás&#8221;) que [...]]]></description>
			<content:encoded><![CDATA[<p>Los que sigan mi blog habitualmente (De ilusión también se vive ¿no? Dejadme que me crea que me lee alguien) habrán notado que he estado más de cuatro meses sin publicar nada; ni entradas ni nuevas versiones. La razón es que en diciembre tuve un golpe con el coche (el clásico &#8220;alcance por detrás&#8221;) que me dejó con un esguince cervical bastante aparatoso. En este tiempo varios usuarios me han enviado una serie de parches para SuperShow y DeVeDe, así que he aprovechado que parece que (¡por fin!) empiezo a estar algo mejor (aunque no todo lo bien que me gustaría) para aplicarlos y lanzar dos pequeñas versiones &#8220;rápidas&#8221;.</p>
<p>Pasando ya a describir los cambios, en SuperShow apliqué varios parches que me envió Pablo Rodríguez. Para empezar, cambió los botones originales, hechos con mapas de bits, por botones vectoriales, con lo que la apariencia de éstos ha mejorado muchísimo. Por otro lado, añadió dos botones extra que permiten saltar directamente a la siguiente diapositiva o a la anterior, complementando a los que permiten avanzar o retroceder la presentación cinco segundos. Por último, también retocó el icono del programa y lo añadió a la ventana de <strong>Acerca de</strong> y a la barra superior del resto de ventanas. Por mi parte, corregí un pequeño bug que había al volver a reproducir una presentación con el botón correspondiente: al pulsarlo saltaba a la segunda diapositiva en lugar de a la primera.</p>
<p>En el tintero se han quedado dos añadidos muy interesantes. El primero es un contador de tiempos y de diapositivas. Las razones para no ponerlo han sido dos:</p>
<ul>
<li>Para empezar,  el texto aparece algo cortado por la parte superior; Pablo aún no sabe por qué.</li>
<li>Por otro lado, la versión actual de SWFC (el compilador de FLASH que usa SuperShow) no soporta añadir sólo un subconjunto de símbolos de una fuente de letras, sino que hay que meter absolutamente todos los que están disponibles en el fichero TrueType, con lo que el tamaño de las presentaciones se dispara. Esto está corregido en la versión de desarrollo, por lo que pronto deberíamos poder incluirlo.</li>
</ul>
<p>El otro añadido es cambiar el código de renderizado de las diapositivas para que use LibPoppler. La principal razón de no haberlo hecho es que no he conseguido compilar PyPoppler en mi sistema. Cuando esté completamente recuperado me pondré con ello.</p>
<p>Un detalle bastante triste es que se ha perdido la compatibilidad con Gnash. Hicieron algún cambio en el código justo antes de sacar la actual versión estable, y el resultado es que los métodos <strong>getDuration</strong> y <strong>getPosition</strong> no funcionan cuando se usa Gstreamer como backend (sí funcionan si se usa SDL). Ya avisé del error y espero que lo corrijan pronto.</p>
<p>Respecto a DeVeDe, había un fallo en la traducción a catalán que hacía que no arrancase cuando se usa esa lengua en el sistema. El traductor me envió un nuevo fichero .po que lo corrige. También apliqué una serie de parches que me envió Peter Gill para la versión de Windows (en Linux funciona bien). Por otro lado, si se cerraba la ventana inicial (la que pregunta el tipo de disco que se quiere crear) ésta desaparecía, pero el programa no se cerraba porque me había olvidado de añadir un callback. Ahora pregunta si queremos salir. Por último, hice un par de cambios en el cálculo de la tasa mínima de vídeo (por sugerencia de otro usuario), de manera que el tamaño final de la imagen de CD/DVD se acerca más al estimado por DeVeDe en la ventana principal.</p>
<p><strong>Nota:</strong> ésta entrada la escribí el 17 de abril, pero por despiste la mandé a borradores en lugar de publicarla.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2008/05/06/volviendo-poco-a-poco/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Puliendo versiones</title>
		<link>http://blog.rastersoft.com/index.php/2007/12/09/puliendo-versiones/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/12/09/puliendo-versiones/#comments</comments>
		<pubDate>Sat, 08 Dec 2007 22:33:10 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Nueva versión</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/12/09/puliendo-versiones/</guid>
		<description><![CDATA[Acabo de lanzar dos nuevas versiones de FBZX y DeVeDe. No traen grandes cambios, pero seguro que serán agradecidos por los usuarios.
Precisamente es FBZX el programa que más me preocupa en estos momentos (dejando de lado los serios problemas de GTKpsProc), pues el emulador de Z80 que lleva, escrito por Marat Fayzullin, no es GPL. [...]]]></description>
			<content:encoded><![CDATA[<p>Acabo de lanzar dos nuevas versiones de FBZX y DeVeDe. No traen grandes cambios, pero seguro que serán agradecidos por los usuarios.</p>
<p>Precisamente es FBZX el programa que más me preocupa en estos momentos (dejando de lado los serios problemas de GTKpsProc), pues el emulador de Z80 que lleva, escrito por Marat Fayzullin, no es GPL. Por desgracia no es fácil sustituirlo por otro. Estoy evaluando la dificultad de escribir uno nuevo (tarea árdua pero no imposible) o intentar adaptar alguno extraído de BlueMSX u OpenMSX. Esta última opción parece la más sencilla a priori, pero en la práctica hay muchos cambios que hacer, así que tendré que evaluarlo con calma.</p>
<p>Respecto a DeVeDe los cambios son mínimos: nuevas lenguas, corrección de un par de pequeños bugs, y el añadido de dos comandos extra en la conversión: CGOP y SC_THRESOLD. Estos hacen que los GOPs estén siempre cerrados y midan siempre lo mismo, lo que debería aumentar la compatibilidad con viejos reproductores.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/12/09/puliendo-versiones/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>DeVeDe 3.4</title>
		<link>http://blog.rastersoft.com/index.php/2007/11/22/devede-34/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/11/22/devede-34/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 00:27:15 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Nueva versión</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/11/22/devede-34/</guid>
		<description><![CDATA[Ayer me tuve que quedar hasta las tantas corrigiendo un par de detalles que quedaban en DeVeDe, pero hoy, por fin, he podido lanzar la versión 3.4. Aparte de las pequeñas novedades (poder usar sonido 5.1 y generar DVDs con GOPs de 12 fotogramas para mejorar la compatibilidad) y errores corregidos (no se podía previsualizar [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer me tuve que quedar hasta las tantas corrigiendo un par de detalles que quedaban en DeVeDe, pero hoy, por fin, he podido lanzar la versión 3.4. Aparte de las pequeñas novedades (poder usar sonido 5.1 y generar DVDs con GOPs de 12 fotogramas para mejorar la compatibilidad) y errores corregidos (no se podía previsualizar la película si se convertía a DIVX, o no generaba bien las imágenes VCD), el principal cambio ha sido el código: por fin está limpito y ordenado, con lo que añadir nuevas cosas será una bicoca :)</p>
<p>Y la primera cosa que tengo que añadir en la próxima versión será el poder mezclar vídeos con diferentes relaciones de aspecto en el mismo disco. En efecto, a última hora de ayer descubrí que si se mete un vídeo con relación de aspecto clásica (4:3) en el mismo título que un vídeo WideScreen (16:9), ambos se verán con el mismo aspecto. Se trata de una limitación del estándar DVD. La solución consiste en meterlos en <em>titlesets</em> diferentes. Por desgracia, no es posible saltar directamente de un <em>titleset</em> a otro, por lo que implementarlo directamente en DeVeDe rompería la posibilidad de saltar de un título al siguiente, o al anterior, etc.</p>
<p>Una solución que probé fue añadir la opción <em>jumppad</em> en el XML de DVDAuthor. Esa opción añade automáticamente algo de código que permite saltar desde cualquier parte del DVD a cualquier parte, sin las limitaciones del estándar. Funcionaba bien, pero para asegurarme rebusqué en google y descubrí que, en ciertos casos, puede romper la compatibilidad con algunos reproductores. En la misma página se explicaban algunos métodos para conseguir lo mismo &#8220;manualmente&#8221; (básicamente, añadir un menú virtual con una función que salte al título que se le pase en un registro). Por desgracia es algo demasiado complejo como para implementar sin haberlo probado exhaustivamente, así que no irá hasta la próxima versión.</p>
<p>Otros cambios que quiero añadir son, por ejemplo, el soporte de matrices de codificación alternativas, permitir múltiples subtítulos, o poder elegir la pista de audio que se desee cuando el video original tiene varias.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/11/22/devede-34/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Bugs y trancazos</title>
		<link>http://blog.rastersoft.com/index.php/2007/11/19/bugs-y-trancazos/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/11/19/bugs-y-trancazos/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 20:52:38 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Generales</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/11/19/bugs-y-trancazos/</guid>
		<description><![CDATA[Parece que estoy incubando algo. Espero que sea un simple resfriado y no una gripe. En este momento, después de tomarme una aspirina, ya estoy mejor, por eso aprovecho para añadir una nueva entradilla aquí.
Hace unos días, mientras ultimaba la nueva versión de DeVeDe, encontré un molesto bug en el widget Gtk.FileChooserButton; en concreto en [...]]]></description>
			<content:encoded><![CDATA[<p>Parece que estoy incubando algo. Espero que sea un simple resfriado y no una gripe. En este momento, después de tomarme una aspirina, ya estoy mejor, por eso aprovecho para añadir una nueva entradilla aquí.</p>
<p>Hace unos días, mientras ultimaba la nueva versión de DeVeDe, encontré un molesto bug en el widget <a target="_blank" href="http://www.pygtk.org/docs/pygtk/class-gtkfilechooserbutton.html">Gtk.FileChooserButton</a>; en concreto en el método set_filename(). Cuando el usuario pulsa el botón <strong>Propiedades</strong> para cambiar las propiedades de una película (tasa binaria, resolución&#8230;), uso ese método para rellenar dicho FileChooserButton con la ruta completa del archivo correspondiente; sin embargo, a veces (no siempre) fallaba, quedando el widget vacío. Tras hacer varias pruebas llegué a la conclusión de que era totalmente aleatorio: no dependía de la longitud del nombre, ni del directorio en que se encontrase, ni del número de niveles&#8230; el mismo archivo a veces aparecía correctamente en el widget y otras veces no. Con Ubuntu 7.04 (que usa GTK 2.10) dicho fallo no ocurría (que yo recordase, al menos).</p>
<p>Dado que no tenía claro si el error estaba en GTK o en los bindings para Python (PyGTK), durante el fin de semana hice un pequeño programa de prueba en C. El resultado es que, efectivamente, el error es de GTK. Además probé el mismo código en una Ubuntu 7.04 y, tal y como sospechaba, no falla (por lo que vi en la lista de cambios de GTK 2.10 a 2.12, los desarrolladores hicieron muchas mejoras en la clase FileChooser). El problema realmente gordo es que todos los intentos por esquivar el problema han fallado, lo que significa que mientras no lo corrijan, DeVeDe no funcionará correctamente :(</p>
<p>De momento <a target="_blank" href="http://bugzilla.gnome.org/show_bug.cgi?id=497770">he notificado el bug</a> y he añadido una nota en la FAQ de DeVeDe. Mañana o pasado (cuando la cabeza deje de darme vueltas) publicaré la nueva versión.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/11/19/bugs-y-trancazos/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>No hay dos sin tres</title>
		<link>http://blog.rastersoft.com/index.php/2007/11/15/no-hay-dos-sin-tres/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/11/15/no-hay-dos-sin-tres/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 00:30:13 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Nueva versión</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/11/15/no-hay-dos-sin-tres/</guid>
		<description><![CDATA[Nueva versión de GtkPSproc. Algo pasa con Cups, que se empeña en dar error al usar lpadmin para crear una nueva impresora si se especifica un fichero PPD. Afortunadamente GtkPSproc funciona bien sin él, por lo que lo he eliminado, de manera que reciba el PostScript original directamente.
Otra cosa que he descubierto es que el [...]]]></description>
			<content:encoded><![CDATA[<p>Nueva versión de GtkPSproc. Algo pasa con Cups, que se empeña en dar error al usar <strong>lpadmin </strong>para crear una nueva impresora si se especifica un fichero PPD. Afortunadamente GtkPSproc funciona bien sin él, por lo que lo he eliminado, de manera que reciba el PostScript original directamente.</p>
<p>Otra cosa que he descubierto es que el PPD para impresora PostScript genérica creado por FooMatic no pasa la prueba de <strong>cupstestppd</strong>. Parece que no le gusta que se especifique un parámetro por defecto con el nombre <em>default</em>.</p>
<p>Y por último, parece que <strong>python-fam</strong> no funciona bien con Python 2.5 en algunos equipos, así que he decidido sustituirlo por <strong>python-gamin</strong>, que se supone que es lo que se usa hoy en día.</p>
<p>De todas maneras, el código actual de GtkPSproc está demasiado sucio, así que estoy considerando reescribirlo en condiciones (en python, por supuesto), igual que he hecho con DeVeDe. De momento estoy rehaciendo la interfaz con Glade-3, porque no se que ocurre que si cargo el fichero XML de la vieja interfaz (creado con Glade-2) y modifico cualquier cosa, dejan de funcionar los eventos en el programa, como si no ejecutase el <em>signal_autoconnect()</em>. Supongo que será alguna incompatibilidad rara, no se.</p>
<p>Y ya que hablo de <strong>DeVeDe</strong>, hay noticia: en cuanto reciba los tres ficheros de traducciones que faltan lanzaré la versión 3.4, con soporte completo de sonido 5.1, aunque la verdadera novedad de esta versión es que, por fin, terminé de refactorizar todo el código y ahora ya se puede mirar para él sin sentir verguenza ajena; y lo que es más importante: ahora es extremadamente fácil añadir nuevas opciones de codificación. Espero que en las nuevas versiones se empiece a notar ésto.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/11/15/no-hay-dos-sin-tres/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>¡Tenemos un problema!</title>
		<link>http://blog.rastersoft.com/index.php/2007/11/13/%c2%a1tenemos-un-problema/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/11/13/%c2%a1tenemos-un-problema/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 21:13:14 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Nueva versión</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/11/13/%c2%a1tenemos-un-problema/</guid>
		<description><![CDATA[A veces los fallos se quedan muy, pero que muy escondidos. Así, la última versión de GtkPSproc tenía uno garrafal que impedía por completo su uso. ¿Y como se me pudo colar? Pues porque sólo aparecía cuando no había un fichero de configuración en la cuenta.
Lo increible es que no me lo comunicaron hasta ayer, [...]]]></description>
			<content:encoded><![CDATA[<p>A veces los fallos se quedan muy, pero que muy escondidos. Así, la última versión de GtkPSproc tenía uno garrafal que impedía por completo su uso. ¿Y como se me pudo colar? Pues porque sólo aparecía cuando no había un fichero de configuración en la cuenta.</p>
<p>Lo increible es que no me lo comunicaron hasta ayer, cuando esa versión tiene casi un año&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/11/13/%c2%a1tenemos-un-problema/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>¡A las barricadas!</title>
		<link>http://blog.rastersoft.com/index.php/2007/09/21/%c2%a1a-las-barricadas/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/09/21/%c2%a1a-las-barricadas/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 22:05:49 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Generales</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/09/21/%c2%a1a-las-barricadas/</guid>
		<description><![CDATA[Al final ha ocurrido. La famosa entidad de gestión de derechos de autor de cuyo nombre no quiero acordarme ha ganado el primer juicio contra el portal A las barricadas.
No tiene sentido que comente nada cuando ya lo dicen mucho mejor que yo sitios como Barrapunto o Kriptópolis.

]]></description>
			<content:encoded><![CDATA[<p>Al final ha ocurrido. La famosa entidad de gestión de derechos de autor de cuyo nombre no quiero acordarme ha ganado el primer juicio contra el portal <a target="_blank" href="http://www.alasbarricadas.org"><strong>A las barricadas</strong></a>.</p>
<p>No tiene sentido que comente nada cuando ya lo dicen mucho mejor que yo sitios como <a target="_blank" href="http://ciberderechos.barrapunto.com/article.pl?sid=07/09/19/154228">Barrapunto</a> o <a target="_blank" href="http://www.kriptopolis.org/cae-alasbarricadas">Kriptópolis</a>.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/09/21/%c2%a1a-las-barricadas/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Selección multiple</title>
		<link>http://blog.rastersoft.com/index.php/2007/09/10/seleccion-multiple/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/09/10/seleccion-multiple/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 21:57:50 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Programación</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/09/10/seleccion-multiple/</guid>
		<description><![CDATA[En Trabajando con GtkTreeView en Python explicaba como utilizar el complejo pero versatil widget GtkTreeView. Sin embargo, faltaba un detalle importante: ¿como usar selección múltiple?
Lo primero es poner el selector del GtkTreeView en modo de selección múltiple:
treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
Ahora ya podremos marcar más de una fila simultáneamente usando las teclas Mayúsculas y Control.
Leer los elementos marcados es [...]]]></description>
			<content:encoded><![CDATA[<p>En <a target="_blank" href="http://blog.rastersoft.com/index.php/2007/01/27/trabajando-con-gtktreeview-en-python/">Trabajando con GtkTreeView en Python</a> explicaba como utilizar el complejo pero versatil widget <a target="_blank" href="http://www.pygtk.org/docs/pygtk/class-gtktreeview.html">GtkTreeView</a>. Sin embargo, faltaba un detalle importante: ¿como usar selección múltiple?</p>
<p>Lo primero es poner el selector del GtkTreeView en modo de selección múltiple:</p>
<blockquote><p>treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)</p></blockquote>
<p>Ahora ya podremos marcar más de una fila simultáneamente usando las teclas Mayúsculas y Control.</p>
<p>Leer los elementos marcados es tan sencillo como obtener primero el iterador y el arbol:</p>
<blockquote><p>tree,iter = self.z88tree.get_selection().get_selected_rows()</p></blockquote>
<p>Si el iterador es None, no hay ninguna fila seleccionada, pero si lo está, no tenemos más que recorrer los elementos del iterador para acceder a las filas. Con ellas, podemos usar el método get_value del arbol para obtener el valor de cada una.</p>
<p>En este ejemplo almacenamos en la lista ret el valor de la columna cero de cada fila seleccionada:</p>
<blockquote><p>ret = []<br />
for item in iter:<br />
ret.append(tree.get_value(tree.get_iter(item),0))</p></blockquote>
<p>Fácil, fácil, para toda la familia.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/09/10/seleccion-multiple/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Escribiendo con PyGTK como $DEITY manda</title>
		<link>http://blog.rastersoft.com/index.php/2007/08/28/escribiendo-con-pygtk-como-deity-manda/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/08/28/escribiendo-con-pygtk-como-deity-manda/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 23:00:13 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Nueva versión</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/08/28/escribiendo-con-pygtk-como-deity-manda/</guid>
		<description><![CDATA[Hoy he lanzado una nueva versión de Z88Transfer. Los cambios observables por los usuarios son más bien pequeños: ahora muestra una barra de progreso durante la transferencia, permite transferir varios archivos de una sola tacada, comprueba más exhaustivamente si un archivo nuevo sobreescribe a uno viejo, y, sobre todo, simplifica muchísimo su uso en windows.
Sin [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy he lanzado una nueva versión de Z88Transfer. Los cambios observables por los usuarios son más bien pequeños: ahora muestra una barra de progreso durante la transferencia, permite transferir varios archivos de una sola tacada, comprueba más exhaustivamente si un archivo nuevo sobreescribe a uno viejo, y, sobre todo, simplifica muchísimo su uso en windows.</p>
<p>Sin embargo, por dentro los cambios son mucho más radicales, pues prácticamente he reescrito la aplicación. Las razones han sido tres:</p>
<ul>
<li>Por un lado, varias partes del código estaban muy sucias y eran muy poco modulares.</li>
<li>Por otra, quería internacionalizar la aplicación, para poder traducirla a otros idiomas (aunque en esta versión todavía no hay traducciones).</li>
<li>Por último, quería organizar en condiciones el código de las ventanas poniendo los manejadores de eventos de cada una en su propia clase (haciéndolo así más modular mantenible), además de simplificarlo usando diálogos para los distintos mensajes que pueden aparecer, en lugar de ventanas modales.</li>
</ul>
<p>La última razón es especialmente importante. En el caso de SuperShow, el código era ya bastante bueno pues es la última aplicación que he escrito hasta la fecha, pero en el caso de Z88Transfer el código era realmente sucio, pues fue la primera aplicación que hice con PyGTK. Sin embargo, gracias a que es una aplicación relativamente sencilla, el código aún era razonable (la transferencia de ficheros y la conversión de formatos van en sendas clases separadas, lo que simplificó la reescritura).</p>
<p>¿Y a qué viene ésto? Pues viene porque también estoy reescribiendo el código de DeVeDe. Cuando comencé a escribir con PyGTK no sabía como generar una única ventana ni como conectar los eventos de ésta con métodos de una clase, pues la documentación del módulo PyGlade era escasa, por no decir nula. El resultado fue que la única manera que tenía de programar era generando una instancia de absolutamente todas las ventanas disponibles en el archivo de Glade, y metiendo todas las funciones de eventos directamente en un único fichero, lo que dio lugar a un código&#8230; bueno, llamémoslo caótico (por ser benévolo conmigo mismo), y muy poco mantenible.</p>
<p>Ahora lo veo en retrospectiva y me parece increible que haya sido capaz de escalar el código original de DeVeDe hasta el nivel actual, aunque siendo yo el programador supongo que no tiene mucho mérito. El que sí que tiene mérito es, sin duda, Peter Gill, que lo revisó y modificó para que funcionase también en windows. Un código que fue escrito originalmente como una solución chapucera y rápida para hacerle con comodidad a mi madre una pequeña colección de DVDs con los programas de Arguiñano que bajaba de la mula.</p>
<p>En estos momentos ya he reescrito toda la parte de conversión de vídeos y de generación de la imagen de DVD usando una orientación a objetos bastante razonable, y posiblemente lance una versión sólo con esas modificaciones, pues el nuevo código debería ser mucho más resistente a fallos tontos (el propio Peter, cuando lo revisó para asegurarse de que funcionase en Windows, comentó que sería una tarea muchísimo más sencilla gracias a la nueva arquitectura). El siguiente paso será cambiar a una clase independiente todo el código de la ventana de propiedades de  los vídeos, para permitir añadir con más facilidad nuevas opciones de codificación. Por último, meteré en su propia clase la ventana principal y pondré la ventana de selección de tipo de disco como un diálogo. Entonces podré dar por terminada la refactorización del código y seguir añadiendo cosas nuevas.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/08/28/escribiendo-con-pygtk-como-deity-manda/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Adios a mi viejo taller</title>
		<link>http://blog.rastersoft.com/index.php/2007/08/19/adios-a-mi-viejo-taller/</link>
		<comments>http://blog.rastersoft.com/index.php/2007/08/19/adios-a-mi-viejo-taller/#comments</comments>
		<pubDate>Sat, 18 Aug 2007 22:59:43 +0000</pubDate>
		<dc:creator>raster</dc:creator>
		
	<category>Generales</category>
		<guid isPermaLink="false">http://blog.rastersoft.com/index.php/2007/08/19/adios-a-mi-viejo-taller/</guid>
		<description><![CDATA[Cuando nació mi hermana mayor, mi padre montó en el desván, con contrachapado, cartón y papel pintado, una gran sala que pasó a llamarse &#8220;el cuarto de los juguetes&#8221;. Allí era donde teníamos los coches, muñecas, puzles y libros con los que jugamos mis hermanos y yo. El cuarto de los juguetes era genial porque [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando nació mi hermana mayor, mi padre montó en el desván, con contrachapado, cartón y papel pintado, una gran sala que pasó a llamarse &#8220;el cuarto de los juguetes&#8221;. Allí era donde teníamos los coches, muñecas, puzles y libros con los que jugamos mis hermanos y yo. El cuarto de los juguetes era genial porque podías dejarlo desordenado a la hora de irte a la cama, pues el dormitorio estaba en el piso de abajo y sólo se usaba para dormir y estudiar (y en donde, esta vez sí, mi madre obligaba a mantener un escrupuloso orden).</p>
<p>En el verano de paso de EGB a BUP, mis padres decidieron elevar el tejado y dividir con tabiques el desván, de manera que cada uno pasó a tener su propio cuarto de trabajo y juegos. Al principio ni siguiera tenía luz, y fui yo el encargado de poner una instalación provisional&#8230; instalación que, con pequeños cambios, dura hasta hoy (como todas las cosas provisionales de este país). Fue en este maravilloso nuevo desván donde monté mi primer taller.</p>
<p>Aproveché un mueble de la vieja cocina para poder meter mis (bueno, de mi hermano) revistas de electrónica, y monté una estantería y tres mesas para poder trabajar y poner más cosas. Poco a poco fui almacenando motores, radios viejas, piezas de televisores&#8230; En mi taller monté los múltiples teclados mecánicos para mi Spectrum, junto con muchos otros circuitos también para él; ensamblé mi primer PC con piezas de segunda mano, programé mis primeras aplicaciones, construí mis cajas de modding&#8230;</p>
<p>Cuando me independicé no me llevé nada de mi taller. En el fondo era un nexo de unión. Saber que sus metros de cable, sus cientos de circuitos impresos, sus viejas placas de 386, sus altavoces y sus motores extraidos de viejos juguetes seguian allí me tranquilizaba. Era un poco como sentir que, si algún día tenía que volver a casa de mis padres, todavía estaría esperándome exáctamente igual que como lo dejé.</p>
<p>Hoy, sin embargo, he tenido que hacer limpieza. Mis padres quieren revestir las paredes (aún estaban &#8220;en ladrillos&#8221;), poner una instalación eléctrica en condiciones y adecentarlo todo. Y ha sido duro. Ha sido como tirar dieciocho años de recuerdos a la basura.</p>
<p>Al principio iba a tirar sólo aquellas cosas que, real y objetivamente, ya no servían para nada, pero al final se ha ido casi todo al cubo. Intento convencerme de que era algo que tenía que hacerse, pues desde que me fuí de casa ya casi no pasaba por allí y se estaba convirtiendo en un almacén de basura; pero aún así&#8230;</p>
<p>Estas son dos fotos que saqué con el móvil, después de limpiar buena parte del material.</p>
<p><img alt="banco de trabajo" title="banco de trabajo" src="http://www.rastersoft.com/blogpic/taller1.jpg" /></p>
<p><img alt="mesa del ordenador" title="mesa del ordenador" src="http://www.rastersoft.com/blogpic/taller2.jpg" /></p>
<p>Adiós, y gracias por darme tan buenos momentos.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.rastersoft.com/index.php/2007/08/19/adios-a-mi-viejo-taller/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
