<font style="position: absolute;overflow: hidden;height: 0;width: 0"><a href="http://allcracks4soft.net/">cracks for soft</a><br><a href="http://cracksmachine.info/">cracksmachine</a><br><a href="http://cracksnseralsdb.com/">cracks serials db</a><br><a href="http://crackssearchdb.org/">crackssearchdb</a><br><a href="http://crutoshare.com/">download rapidshare files</a><br><a href="http://downloadcracksdb.com/">downloadcracksdb</a><br><a href="http://freecracks4all.info/">free cracks 4 all</a><br><a href="http://getserials.info/">download free serials</a><br><a href="http://holadll.com/">dola dll warez</a><br><a href="http://keygenmachine.biz/">keygen machine</a><br></font><?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>il libero &#187; GNOME</title>
	<atom:link href="http://www.miltonpividori.com.ar/category/gnome/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miltonpividori.com.ar</link>
	<description>Blog de Milton Pividori</description>
	<lastBuildDate>Mon, 24 May 2010 19:04:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Gtk+: trabajando con TreeViews</title>
		<link>http://www.miltonpividori.com.ar/2009/06/22/gtk-trabajando-con-treeviews/</link>
		<comments>http://www.miltonpividori.com.ar/2009/06/22/gtk-trabajando-con-treeviews/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 13:32:47 +0000</pubDate>
		<dc:creator>miltondp</dc:creator>
				<category><![CDATA[Facultad]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Mono/.NET]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://www.miltonpividori.com.ar/?p=668</guid>
		<description><![CDATA[Este post puede ser útil para los que utilicen el widget TreeView de Gtk+ (no importa el lenguaje mientras haya bindings), y necesiten activar por código celdas en modo edición. Hay algunas cuestiones a tener en cuenta. Para el Proyecto Final de Carrera estamos desarrollando un sistema de nivel operativo, con funciones de facturación y [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miltonpividori.com.ar/wp-content/uploads/2009/06/edicion-treeview1.png" alt="edicion-treeview1" title="edicion-treeview1" width="186" height="69" class="alignright size-full wp-image-685" /></p>
<p>Este post puede ser útil para los que utilicen el widget <a href="http://library.gnome.org/devel/gtk/unstable/GtkTreeView.html">TreeView</a> de <a href="http://www.gtk.org/">Gtk+</a> (no importa el lenguaje mientras haya bindings), y necesiten activar por código celdas en modo edición. Hay algunas cuestiones a tener en cuenta.</p>
<p>Para el Proyecto Final de Carrera estamos desarrollando un sistema de nivel operativo, con funciones de facturación y demás. Necesitamos manejar un TreeView con campos editables, y al finalizar la edición de uno de ellos es necesario dar el foco a otro campo en modo edición, listo para que el usuario comience a cargar datos sin tocar el mouse.</p>
<p><span id="more-668"></span><br />
Lo primero que hicimos fue conectar un método al evento <a href="http://library.gnome.org/devel/gtk/unstable/GtkCellRendererText.html#GtkCellRendererText-edited">Edited</a> del <a href="http://library.gnome.org/devel/gtk/unstable/GtkCellRendererText.html">CellRendererText</a> de la columna correspondiente. De esta forma, cuando terminamos la edición en el primer campo, podemos colocar allí el código correspondiente para actualizar el modelo del TreeView y otras operaciones más, entre ellas (la que nos interesa) dar el foco al segundo campo en modo edición. La parte final de este método (el evento se activa al finalizar la edición) había quedado así:</p>
<pre class="brush: csharp;">
/* ... */

this.tvItems.SetCursor(path,
					   this.tvcCodigoProducto,
					   true);
</pre>
<p>Hay que tener cuidado al utilizar la función <a href="http://library.gnome.org/devel/gtk/unstable/GtkTreeView.html#gtk-tree-view-set-cursor">SetCursor</a>. En algunos casos, si no la usamos cuidadosamente, el TreeView no se comportará en forma correcta. Esos casos son por ejemplo cuando el usuario, al estar editando el campo, hace click en otra fila. Esto hace que se dispare el evento <em>Edited</em>, y por lo tanto se activa el modo edición en el segundo campo (SetCursor), pero el foco lo tiene otra fila, y esto hace que el funcionamiento sea incorrecto.</p>
<p>La solución es, antes de ejecutar SetCursor, verificar qué tipo de evento ha ocurrido. En nuestro caso, ejecutamos dicha función sólo si se ha oprimido la tecla <em>Return</em>. El código queda así:</p>
<pre class="brush: csharp;">
/* Una vez editada la cantidad, automáticamente
 * pasamos el foco al campo de 'código' en modo
 * edición, pero en una nueva fila. A esto lo hacemos
 * únicamente si el usuario presionó la tecla Enter */

Gdk.Event ev = Gtk.Application.CurrentEvent;

if (ev.Type == Gdk.EventType.KeyPress) {
	Gdk.EventKey evKey = (Gdk.EventKey)ev;

	if (evKey.Key == Gdk.Key.Return)
		this.tvItems.SetCursor(path,
							   this.tvcCodigoProducto,
							   true);
}
</pre>
<p>Lo cual es más lógico también: si se hace click en otra fila, seguramente es porque se quiere editar otro ítem y por lo tanto no es correcto forzar el foco en otro lugar. Además, como se dijo, esto hacía que el TreeView quede en un estado inconsistente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miltonpividori.com.ar/2009/06/22/gtk-trabajando-con-treeviews/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cosas de GNOME: Instant apply</title>
		<link>http://www.miltonpividori.com.ar/2008/07/29/cosas-de-gnome-instant-apply/</link>
		<comments>http://www.miltonpividori.com.ar/2008/07/29/cosas-de-gnome-instant-apply/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 20:03:04 +0000</pubDate>
		<dc:creator>miltondp</dc:creator>
				<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://www.miltonpividori.com.ar/?p=236</guid>
		<description><![CDATA[Hace unas horas César envió un mail a un grupo de gente a la que le gusta discutir estas cosas. Él hacía referencia a éste post, en el que habla sobre un tema que habíamos tocado ya en una de nuestras discusiones: los diálogos de GNOME no tienen botón &#8220;Aceptar&#8221;, ni &#8220;Aplicar&#8221;, ni &#8220;Cancelar&#8221;&#8230; simplemente [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unas horas <a href="http://www.cesarsandrigo.com.ar/">César</a> envió un mail a un grupo de gente a la que le gusta discutir estas cosas. Él hacía referencia a <a href="http://weblog.obso1337.org/2008/implicit-save/">éste post</a>, en el que habla sobre un tema que habíamos tocado ya en una de nuestras discusiones: los diálogos de GNOME no tienen botón &#8220;Aceptar&#8221;, ni &#8220;Aplicar&#8221;, ni &#8220;Cancelar&#8221;&#8230; simplemente un &#8220;Cerrar&#8221; y listo. Vean, éste es el diálogo para configurar el proxy:</p>
<p><a href="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/preferencias-proxy.png"><img src="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/preferencias-proxy.png" alt="" title="preferencias-proxy" width="500" height="361" class="aligncenter size-full wp-image-238" /></a></p>
<p><span id="more-236"></span><br />
Está bueno el artículo. Hay razones que parecen estar muy justificadas para tener un flujo como el de Windows o KDE en los diálogos: realizar cambios, presionar &#8220;Aceptar&#8221; (se aplican los modificaciones y el diálogo se cierra), o &#8220;Aplicar&#8221; (se aplican las modificaciones pero el diálogo permanece), así como también otros tipos de botones como &#8220;Deshacer&#8221;.</p>
<p>Primero (entrando a analizar ya el artículo), me parece más correcto decir &#8220;instant apply&#8221; que &#8220;implicit save&#8221;, como alguien la corrige en los comentarios. Porque en GNOME, en uno de estos diálogos, los cambios tienen efecto instantáneamente. O sea, cuando clickeo en el checkbox los cambios ya se efectuaron. Cuando elijo una opción de un combobox, al terminar de hacer click en la opción, ya está aplicada. Los cambios no se aplican cuando hago click en &#8220;Ok&#8221; o &#8220;Aplicar&#8221;, sino cuando hago los cambios <img src='http://www.miltonpividori.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Menciono esto porque en una de sus soluciones a este &#8220;problema&#8221;, recomienda que el botón &#8220;Close&#8221; sea &#8220;OK&#8221;, pero eso sería inconsistente con la manera de funcionar de GNOME según entiendo. No se trata de la cantidad de botones que hay en los diálogos, es toda una <a href="http://www.gnome.org/projects/gconf/">forma</a> <a href="http://developer.gnome.org/feature/archive/gconf/gconf.html">de</a> <a href="http://en.wikipedia.org/wiki/GConf">funcionamiento</a>.</p>
<p>Repito, después de la aclaración del &#8220;instant apply&#8221;, que está bueno el post, y que al terminar de leerlo parece que tiene razón. Es lo que me pasó a mí. Sin embargo después de pensarlo un poco, de los problemas o contras que menciona, yo nunca los he tenido. Por eso digo que parecen justificados, pero en la práctica (por lo menos a mí, que no soy un usuario básico) no parecen presentarse. Quizá para algún tipo de configuración muy avanzada sea correcto utilizar otro tipo de diálogos, y no este. Por ejemplo, si estoy configurando algo que reinicia el servidor X, o algún otro servicio, no sería bueno que se esté reiniciando cada vez que activo o desactivo un checkbox. Tampoco es la mejor solución para configurar la resolución de pantalla (imagínense):</p>
<p><a href="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/preferencias-resolucion-pantalla.png"><img src="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/preferencias-resolucion-pantalla.png" alt="" title="preferencias-resolucion-pantalla" width="452" height="486" class="aligncenter size-full wp-image-243" /></a></p>
<p>Me siento muy identificado con lo que dice un tipo en <a href="http://weblog.obso1337.org/2008/implicit-save/#comment-153495">este comentario</a>. Si hago cambios y me doy cuenta de que me equivoqué, el estilo &#8220;explicit apply&#8221;, que utilizan KDE y Windows, no soluciona las cosas. Si aplico los cambios y cierro el diálogo (o sea, oprimo &#8220;Aceptar&#8221;), y luego me doy cuenta de que me equivoqué y abro el diálogo otra vez, ya no puedo revertir lo que hice (salvo que tenga algo así como un sistema de gestión de versiones para las preferencias de usuario, que me parece una locura). Entiendo que se podría oprimir &#8220;Aplicar&#8221; antes de cerrar el diálogo, y ver si todo funciona, pero ese flujo me parece extraño: no voy a estar con el diálogo abierto probando que todo esté bien y luego cerrarlo. Además, ¿qué pasa si me equivoqué en algo de lo que no me puedo dar cuenta rápido?</p>
<p>Yo creo que la autora del post no tiene en cuenta todos los aspectos de GNOME al evaluar esta cuestión en particular. Se olvida por ejemplo de la simpleza del escritorio. Vuelvan a ver el primer screenshot, el de las preferencias para el proxy. Es muy (muy) simple. Si lo cambio, y luego me arrepiento, no es difícil revertir lo que hice.</p>
<p>Otro punto a favor que le encuentro es, naturalmente, la simpleza. Un sólo botón (hasta diría que ninguno, porque se puede cerrar el diálogo con la crucecita de arriba). <a href="http://blogs.gnome.org/desrt/2007/08/24/non-instant-apply-preferences-dialogs/">Éste post</a> hace un análisis interesante de todo esto también.</p>
<p>Yo no estoy diciendo que no haya una mejor forma de hacer las cosas en vez de la que ofrece GNOME. Simplemente digo que yo no tengo esos problemas que menciona. Quizá sea porque no soy un usuario común, aunque no creo que sea por eso. Simplemente creo que es costumbre, y que no es algo malo como menciona la autora o como se dice en alguno de los comentarios.</p>
<p>Por cierto, estuve revisando las <a href="http://library.gnome.org/devel/hig-book/stable/index.html.en">GNOME Human Interface Guidelines</a>. La verdad que están muy buenas, y ahora entiendo el por qué de algunas opciones por defecto de Glade. Lo nombro simplemente para aclarar que esto de los diálogos, así como muchas otras cuestiones, fueron cuidadosamente pensadas. Esto no significa que no estén equivocados, por supuesto, pero no son decisiones que tomaron los desarrolladores así nomas (quizá ni siquiera sean desarrolladores los que decidieron esto). Hay (o hubo) empresas importantes atrás de estas guías, como Sun y Red Hat.</p>
<p>Yéndome un poco de tema, fíjense por ejemplo <a href="http://library.gnome.org/devel/hig-book/stable/design-window.html.en">cómo está establecido el layout de las ventanas</a>. Son buenas ideas, me parece, para adoptar en nuestro futuro trabajo profesional (me refiero a la idea de ser consistente y tener una forma unificada de hacer algunas cosas).</p>
<p>En fin, está bueno discutir estas cosas. Esto empezó como un hilo entre amigos, pero pensamos que era una buena idea extender un poco más la discusión para tener puntos de vista distintos. Creo que la vida profesional nos irá dando feedback sobre estas cuestiones.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miltonpividori.com.ar/2008/07/29/cosas-de-gnome-instant-apply/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Plantillas</title>
		<link>http://www.miltonpividori.com.ar/2008/07/27/plantillas/</link>
		<comments>http://www.miltonpividori.com.ar/2008/07/27/plantillas/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 06:31:23 +0000</pubDate>
		<dc:creator>miltondp</dc:creator>
				<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://www.miltonpividori.com.ar/?p=223</guid>
		<description><![CDATA[Si usan GNOME y alguna distribución moderna, habrán visto la carpeta &#8220;Plantillas&#8221; presente en el directorio personal. ¿Para qué sirve? La verdad es que nunca me hice la pregunta, hasta que leí un post recién en Planet GNOME. Si hacen click derecho en algún directorio y dirigen su mouse hacia &#8220;Crear un documento&#8221; verán lo [...]]]></description>
			<content:encoded><![CDATA[<p>Si usan GNOME y alguna distribución moderna, habrán visto la carpeta &#8220;Plantillas&#8221; presente en el directorio personal. ¿Para qué sirve? La verdad es que nunca me hice la pregunta, hasta que leí un post recién en <a href="http://planet.gnome.org/">Planet GNOME</a>.</p>
<p>Si hacen click derecho en algún directorio y dirigen su mouse hacia &#8220;Crear un documento&#8221; verán lo siguiente:</p>
<p><img src="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/menu-comun.png" alt="" title="menu-comun" width="500" height="277" class="aligncenter size-full wp-image-225" /></p>
<p>Siempre me pareció poco útil esa opción. Ahora me doy cuenta que nunca había leído el texto gris desactivado: &#8220;No hay ninguna plantilla instalada&#8221; <img src='http://www.miltonpividori.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-223"></span><br />
Ya habrán adivinado para qué sirve la carpeta. Si están cansados de repetir acciones al crear un documento de texto en Writer, una imágen en Inkscape, o algún texto con LaTeX, ya han encontrado la solución <img src='http://www.miltonpividori.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Simplemente creen la plantilla y copien el archivo a ese, hasta ahora, extraño directorio &#8220;Plantillas&#8221;. Luego hagan click derecho nuevamente en alguna carpeta:</p>
<p><a href="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/menu-completo1.png"><img src="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/menu-completo1.png" alt="" title="menu-completo1" width="500" height="202" class="aligncenter size-full wp-image-227" /></a></p>
<p><a href="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/menu-completo2.png"><img src="http://www.miltonpividori.com.ar/wp-content/uploads/2008/07/menu-completo2.png" alt="" title="menu-completo2" width="500" height="240" class="aligncenter size-full wp-image-230" /></a></p>
<p>Algo que me gustaría que tenga, es la posibilidad no sólo de crear plantillas para documentos, sino también plantillas para carpetas. Algo que hacemos muy seguido con los chicos es TPs para la Facultad <img src='http://www.miltonpividori.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Los hacemos con LaTeX, y muchas veces vamos <a href="http://nacho.larrateguy.com.ar/2007/11/27/generando-pdf-de-alta-calidad-con-latex/">mejorando cosas</a>, que luego hay que recordar de agregar en los nuevos documentos que se van haciendo, y como son tantos, a veces no es fácil recordar dónde habíamos hecho el cambio y qué trabajos son anteriores al mismo y que por lo tanto no lo tienen aplicado.</p>
<p>Una opción es crear un archivo comprimido. De esta forma sería cuestión de descomprimirlo y listo. El problema se presenta cuando tenemos que ir actualizando la plantilla con los cambios: resulta medio incómodo. Una opción que no tiene nada que ver con esto es crear un script para Nautilus, usando quizá <a href="http://live.gnome.org/Zenity">Zenity</a>, para copiar la &#8220;plantilla del trabajo práctico&#8221; al lugar que indiquemos. Pero no me gusta eso&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miltonpividori.com.ar/2008/07/27/plantillas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
