<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9579355</id><updated>2012-01-17T11:37:17.889-04:30</updated><title type='text'>Editor de eBooks usando GTK+</title><subtitle type='html'>Aplicación software libre para la creación, edición y despliegue de libros electrónicos bajo Windows y Linux,
que será presentada como Trabajo Especial de Grado 
por Luigino Bracci  Roa. 

Email: Lbracci (arroba) cantv.net</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9579355.post-113780349428183029</id><published>2006-01-20T20:09:00.000-04:00</published><updated>2006-01-20T20:31:34.290-04:00</updated><title type='text'>Investigando sobre Mono, DocBook y Open eBook</title><content type='html'>He estado investigando alternativas para el desarrollo e implementación, pero todo parece indicar que me quedaré con GTK+.&lt;br /&gt;&lt;br /&gt;Hoy probé con &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt; a sugerencia de un amigo, pero Mono depende (en Windows) de la suite .NET, y no pienso depender de dicha suite para mi trabajo. Además, no existen versiones bajo Windows de &lt;a href="http://www.monodevelop.com/Main_Page"&gt;MonoDevelop&lt;/a&gt; (el ambiente de desarrollo de Mono), sino solo para MacOS X y Linux. Intenté con &lt;a href="http://www.icsharpcode.net/OpenSource/SD/"&gt;SharpDevelop&lt;/a&gt;, otra suite de C# open source, pero también depende de la instalación de los runtimes de .NET, así que... ¡descartada!&lt;br /&gt;&lt;br /&gt;Microsoft también afecta el formato XML que había escogido para los libros electrónics, &lt;a href="http://www.openebook.org/"&gt;Open eBook&lt;/a&gt;. Como patrocinante "&lt;span style="font-style: italic;"&gt;golden&lt;/span&gt;" del &lt;a href="http://www.idpf.org/"&gt;International Digital Publishing Forum&lt;/a&gt;, Microsoft está interesada en buscar que el formato soporte Administración de Restricciones Digitales (DRM), algo que está en contra de los propósitos de mi proyecto.&lt;br /&gt;&lt;br /&gt;Por ello he estado averiguando esta semana en otros formatos XML para libros electrónicos, fundamentalmente &lt;a href="http://www.openreader.org"&gt;OpenReader&lt;/a&gt; y &lt;a href="http://www.docbook.org/"&gt;DocBook&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-113780349428183029?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/113780349428183029/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=113780349428183029' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/113780349428183029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/113780349428183029'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2006/01/investigando-sobre-mono-docbook-y-open.html' title='Investigando sobre Mono, DocBook y Open eBook'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9579355.post-113702466045369296</id><published>2006-01-11T20:05:00.000-04:00</published><updated>2006-01-11T20:11:00.470-04:00</updated><title type='text'>Es importante usar -mno-cygwin</title><content type='html'>Corrijo el post anterior para indicar que se debe añadir el parámetro "-mno-cygwin" al llamar al compilador, o de lo contrario habrán errores de ejecución al tratar con clases de la biblioteca Glib. Particularmente yo tenía problemas con Glib::Dir.read_name().&lt;br /&gt;&lt;br /&gt;&lt;i&gt;g++ oebeditor.cc -o oebeditor `pkg-config --cflags --libs libglademm-2.4`  -mms-bitfields &lt;/i&gt;&lt;span style="font-style: italic;"&gt;-mno-cygwin &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-113702466045369296?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/113702466045369296/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=113702466045369296' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/113702466045369296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/113702466045369296'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2006/01/es-importante-usar-mno-cygwin.html' title='Es importante usar -mno-cygwin'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9579355.post-113692129817694255</id><published>2006-01-10T14:37:00.000-04:00</published><updated>2006-01-10T15:32:12.106-04:00</updated><title type='text'>Usando Glade y Libglademm bajo Cygwin</title><content type='html'>He continuado el proyecto pero no sin problemas.&lt;br /&gt;&lt;br /&gt;Utilizar GTK+ con el lenguaje C++ y el compilador &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; no es algo que se haya hecho con mucha frecuencia.  Sólo cinco por ciento de los proyectos en GTK+ se hacen en C++ (casi el el noventa por ciento se hacen en lenguaje C), y casi todos en Linux.&lt;br /&gt;&lt;br /&gt;Como había explicado antes, una de mis opciones era usar el editor de interfaces Glade para generar mis ventanas, y usar el programa &lt;a href="http://home.wtal.de/petig/Gtk/"&gt;glademm&lt;/a&gt; para generar el código en C++ desde Glade. Lamentablemente, glademm no funciona bajo Windows y la mayoría de las personas que usan GTK+ recomiendan usar libglademm en vez de glademm.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/verticalbox.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/320/verticalbox.jpg" alt="" border="0" /&gt;&lt;/a&gt;LibGlademm es una librería que permite utilizar, desde el ejecutable, el archivo que genera Glade (el cual es un archivo XML de extensión .glade). Pero inicialmente muchos de los ejemplos de código que uno encontraba en Internet no compilaban adecuadamente desde Cygwin bajo Windows.&lt;br /&gt;&lt;br /&gt;Este fragmento de código es el que finalmente me logró funcionar. Es mi clase principal (oebeditor.cc) y requiere de un archivo .glade (que llamaremos oebeditor.glade y lo colocaremos en la misma carpeta donde se genere el ejecutable) que tenga un &lt;span style="font-style: italic;"&gt;widget &lt;/span&gt;llamado vboxMain, del tipo &lt;a href="http://www.gtkmm.org/gtkmm2/docs/reference/html/classGtk_1_1VBox.html"&gt;vertical box&lt;/a&gt; (es un contenedor de Glade que permite agrupar &lt;span style="font-style: italic;"&gt;widgets &lt;/span&gt;verticalmente, como se ve a la derecha).&lt;br /&gt;&lt;br /&gt;Se requiere instalar desde dentro de Cygwin los módulos correspondientes a Gtk+ y gtkmm, entre otros.&lt;br /&gt;&lt;br /&gt;Para compilar, se usa el comando (desde el bash de cygwin):&lt;br /&gt;&lt;br /&gt;&lt;i&gt;g++ oebeditor.cc -o oebeditor `pkg-config --cflags --libs libglademm-2.4`  -mms-bitfields&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;oebeditor.cc&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;#include&amp;nbsp;&amp;lt;libglademm/xml.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;gtkmm.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;iomanip&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;sstream&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;sigc++/retype_return.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;"oebeditor.h"&lt;br /&gt;&lt;br /&gt;//using&amp;nbsp;namespace&amp;nbsp;std;&lt;br /&gt;&lt;br /&gt;oebeditor::oebeditor()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gtk::VBox&amp;nbsp;*vboxMain;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Tamaño&amp;nbsp;y&amp;nbsp;título&amp;nbsp;de&amp;nbsp;la&amp;nbsp;ventana&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_title("Prueba");&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resize(770,500);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Prepararse&amp;nbsp;para&amp;nbsp;cargar&amp;nbsp;el&amp;nbsp;archivo&amp;nbsp;.glade&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Nota:&amp;nbsp;Desde&amp;nbsp;Glade,&amp;nbsp;es&amp;nbsp;necesario&amp;nbsp;ponerle&amp;nbsp;la&amp;nbsp;propiedad&amp;nbsp;"visible"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;en&amp;nbsp;falso&amp;nbsp;a&amp;nbsp;la&amp;nbsp;ventana&amp;nbsp;(window)&amp;nbsp;principal&amp;nbsp;del&amp;nbsp;.glade,&amp;nbsp;o&amp;nbsp;sino&amp;nbsp;en&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;este&amp;nbsp;punto&amp;nbsp;se&amp;nbsp;mostrarán&amp;nbsp;dos&amp;nbsp;ventanas&amp;nbsp;a&amp;nbsp;la&amp;nbsp;vez.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;refXml&amp;nbsp;=&amp;nbsp;Gnome::Glade::Xml::create("oebeditor.glade");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;refXml-&amp;gt;get_widget("vboxMain",&amp;nbsp;vboxMain);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vboxMain-&amp;gt;reparent(*this);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch(const&amp;nbsp;Gnome::Glade::XmlError&amp;&amp;nbsp;ex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cerr&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;ex.what()&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;std::endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(vboxMain)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gtk::MenuItem*&amp;nbsp;pMenuItem&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---------------------------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Se&amp;nbsp;conecta&amp;nbsp;cada&amp;nbsp;opción&amp;nbsp;del&amp;nbsp;menú&amp;nbsp;con&amp;nbsp;un&amp;nbsp;método&amp;nbsp;que&amp;nbsp;será&amp;nbsp;invocado&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;cuando&amp;nbsp;el&amp;nbsp;usuario&amp;nbsp;seleccione&amp;nbsp;dicha&amp;nbsp;función&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Abrir&amp;nbsp;proyecto&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;refXml-&amp;gt;get_widget("menu_abrir",&amp;nbsp;pMenuItem);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(pMenuItem)&amp;nbsp;pMenuItem-&amp;gt;signal_activate().connect(&amp;nbsp;sigc::mem_fun(*this,&amp;nbsp;&amp;oebeditor::on_abrir_activate)&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Salir&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;refXml-&amp;gt;get_widget("menu_salir",&amp;nbsp;pMenuItem);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(pMenuItem)&amp;nbsp;pMenuItem-&amp;gt;signal_activate().connect(&amp;nbsp;sigc::mem_fun(*this,&amp;nbsp;&amp;oebeditor::on_salir_activate)&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;oebeditor::~oebeditor()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CREAR&amp;nbsp;NUEVO&amp;nbsp;PROYECTO&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;oebeditor::on_nuevo_activate()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ABRIR&amp;nbsp;NUEVO&amp;nbsp;PROYECTO&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;void&amp;nbsp;oebeditor::on_abrir_activate()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;--------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;Pregunta&amp;nbsp;al&amp;nbsp;usuario&amp;nbsp;dónde&amp;nbsp;se&amp;nbsp;encuentra&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;el&amp;nbsp;proyecto&amp;nbsp;a&amp;nbsp;abrir&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;--------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;abrirproyecto*&amp;nbsp;p&amp;nbsp;=&amp;nbsp;new&amp;nbsp;abrirproyecto();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p-&amp;gt;set_transient_for(*this);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p-&amp;gt;show_it();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//p-&amp;gt;set_transient_for(*this);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CERRAR&amp;nbsp;PROYECTO&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;void&amp;nbsp;oebeditor::on_cerrar_activate()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GUARDAR&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;void&amp;nbsp;oebeditor::on_guardar_activate()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GUARDAR&amp;nbsp;COMO&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;void&amp;nbsp;oebeditor::on_guardarcomo_activate()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PROPIEDADES&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;void&amp;nbsp;oebeditor::on_propiedades_activate()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;---------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SALIR&lt;br /&gt;&amp;nbsp;---------------------&amp;nbsp;*/&lt;br /&gt;void&amp;nbsp;oebeditor::on_salir_activate()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;TO&amp;nbsp;DO:&amp;nbsp;verificar&amp;nbsp;si&amp;nbsp;el&amp;nbsp;proyecto&amp;nbsp;no&amp;nbsp;ha&amp;nbsp;sido&amp;nbsp;guardado&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hide();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main&amp;nbsp;(int&amp;nbsp;argc,&amp;nbsp;char&amp;nbsp;*argv[])&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;This&amp;nbsp;main&amp;nbsp;function&amp;nbsp;merely&amp;nbsp;instantiates&amp;nbsp;the&amp;nbsp;ogcalc&amp;nbsp;class&lt;br /&gt;//&amp;nbsp;and&amp;nbsp;displays&amp;nbsp;it.&lt;br /&gt;&amp;nbsp;&amp;nbsp;Gtk::Main&amp;nbsp;kit(argc,&amp;nbsp;argv);&amp;nbsp;//&amp;nbsp;Initialise&amp;nbsp;GTK+.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;oebeditor&amp;nbsp;window;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Create&amp;nbsp;an&amp;nbsp;ogcalc&amp;nbsp;object.&lt;br /&gt;&amp;nbsp;&amp;nbsp;kit.run(window);&amp;nbsp;//&amp;nbsp;Show&amp;nbsp;window;&amp;nbsp;return&amp;nbsp;when&amp;nbsp;it's&amp;nbsp;closed.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Este es el archivo oebeditor.h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#include&amp;nbsp;&amp;lt;gtkmm.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;libglademm.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;"abrirproyecto.h"&lt;br /&gt;&lt;br /&gt;class&amp;nbsp;oebeditor&amp;nbsp;&amp;nbsp;:&amp;nbsp;public&amp;nbsp;Gtk::Window&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oebeditor();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual&amp;nbsp;~oebeditor();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void&amp;nbsp;on_abrir_activate();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void&amp;nbsp;on_salir_activate();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Glib::RefPtr&amp;lt;Gnome::Glade::Xml&amp;gt;&amp;nbsp;refXml;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Gtk::Window*&amp;nbsp;pWindow;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Glade&amp;nbsp;interface&amp;nbsp;description.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Glib::RefPtr&amp;lt;Gnome::Glade::Xml&amp;gt;&amp;nbsp;xml_interface;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;};&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-113692129817694255?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/113692129817694255/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=113692129817694255' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/113692129817694255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/113692129817694255'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2006/01/usando-glade-y-libglademm-bajo-cygwin.html' title='Usando Glade y Libglademm bajo Cygwin'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9579355.post-112926655234767535</id><published>2005-10-13T12:17:00.000-04:00</published><updated>2005-10-14T01:15:37.536-04:00</updated><title type='text'>Trabajando con Dev-C++ y GTK+ bajo Windows</title><content type='html'>Bueno, retomando la tesis, tuve que aprender a punta de golpes cómo usar &lt;a href="http://www.bloodshed.net/devcpp.html"&gt;el ambiente de programación Dev-C++&lt;/a&gt; de la empresa Bloodshed con &lt;a href="http://www.gtk.org/"&gt;GTK+&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Como se sabe, GTK+ es un conjunto de bibliotecas que permiten crear aplicaciones con interfaz gráfica, que funcionan muy bien bajo Gnome (en Linux) y bajo Windows. Con ella se han hecho aplicaciones como &lt;a href="http://www.gimp.org/"&gt;The Gimp&lt;/a&gt; (un programa de edición de bitmaps similar a Photoshop) y funciona en una gran variedad de lenguajes, entre ellos C++. Utiliza una licencia software libre.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/gtk-devc.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/200/gtk-devc.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.bloodshed.net/devcpp.html"&gt;Dev-C++&lt;/a&gt;, por su parte, es un ambiente de programación también considerado software libre, programado bajo Delphi y que permite programar en C y C++ bajo Windows con un ambiente compatible con GNU, usando al compilador &lt;a href="http://www.mingw.org/"&gt;MingW&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;Minimalist GNU for Windows&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Las instrucciones para trabajar con todo esto al mismo tiempo son las siguentes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Descarga e instala primero la versión 5 de &lt;a href="http://www.bloodshed.net/devcpp.html"&gt;Dev-C++&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Bajar e instalar el ambiente de desarrollo  &lt;a href="http://gladewin32.sourceforge.net/"&gt;Glade/GTK+ para Windows&lt;/a&gt; según se indica en el post anterior. Yo bajé e instalé el &lt;span class="postbody"&gt;&lt;a href="http://gladewin32.sourceforge.net/modules.php?name=Downloads&amp;d_op=getit&amp;amp;lid=85" target="_blank"&gt;Gtk+/Win32 Development Environment Installer 2.8.6-rc1&lt;/a&gt;&lt;/span&gt;. El instalador deberá señalar que encontró a Dev-C++ y le está colocando los enlaces necesarios.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ingresa a &lt;a href="http://gtk.alkia.org/index.php"&gt;http://gtk.alkia.org&lt;/a&gt; y descarga el paquete &lt;span style="font-style: italic;"&gt;"GTK 2.8.0 Runtime for Windows"&lt;/span&gt;. Este es un archivo .DevPack que permite que el ambiente de desarrollo Dev-C++ vea los archivos de cabecera y les dé uso. Si por casualidad ese sitio web deja de funcionar, ingresa a &lt;a href="http://devpaks.org/"&gt;www.devpaks.org&lt;/a&gt; y, en la sección GTK, descarga GTK+ 2.6.8 y los paquetes adicionales requeridos.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Iniciar Dev-C++. Ir al menú &lt;span style="font-style: italic;"&gt;File &lt;/span&gt;-&gt; &lt;span style="font-style: italic;"&gt;New &lt;/span&gt;-&gt; &lt;span style="font-style: italic;"&gt;Project&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;     &lt;li&gt;Seleccionar en la pestaña superior, "GUI". &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/devc-gtk-2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/400/devc-gtk-2.gif" alt="" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Seleccionar "&lt;span style="font-style: italic;"&gt;GTK+&lt;/span&gt;" y "&lt;span style="font-style: italic;"&gt;C++ Project&lt;/span&gt;"&lt;span style="font-style: italic;"&gt;. &lt;/span&gt;Colocarle un nombre al proyecto y presionar &lt;span style="font-style: italic;"&gt;Ok.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;Se generará el código fuente de una ventana en blanco. Pero cuando trates de compilar, te dará un sinnúmero de errores porque el compilador no encontrará los archivos de cabecera de GTK+. Tienes que añadirlos a mano.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Selecciona en el menú "&lt;span style="font-style: italic;"&gt;Tools&lt;/span&gt;" el ítem "&lt;span style="font-style: italic;"&gt;Compiler Options&lt;/span&gt;". Selecciona "&lt;span style="font-style: italic;"&gt;Directories&lt;/span&gt;" y luego "&lt;span style="font-style: italic;"&gt;C++ Includes&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/devc-includes.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/400/devc-includes.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Busca y añade las carpetas mostradas arriba: include\gtk-2.0, include\cairo, include\glib-2.0, include\pango-1.0, lib\glib-2.0\include, lib\gtk-2.0\include e include\atk-1.0.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;Dale Aceptar. Verás que, cuando intentes compilar, te aparece este error:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/gtk-incompatible.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/400/gtk-incompatible.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;"Gtk-ERROR **: Incompatible build! The code using GTK+ thinks GtkBox is of different size than it actually is in this build of GTK+."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tal y como lo dice la ventana, lo que hay que hacer es ingresar nuevamente en "&lt;span style="font-style: italic;"&gt;Tools&lt;/span&gt;" y luego en "&lt;span style="font-style: italic;"&gt;Compiler Options&lt;/span&gt;". en la pestaña "&lt;span style="font-style: italic;"&gt;Compiler&lt;/span&gt;", chequea la opción "&lt;span style="font-style: italic;"&gt;Add the following commands when calling compiler&lt;/span&gt;" y en el espacio indicado coloca "&lt;span style="font-style: italic;"&gt;-mms-bitfields&lt;/span&gt;" (sin las comillas). Dale aceptar.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Recompila el proyecto completamente con la opción &lt;span style="font-style: italic;"&gt;Execute -&gt; Rebuild all&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;¡Listo! Al ejecutar, te aparecerá algo como:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/gtk-helo.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/400/gtk-helo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-112926655234767535?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/112926655234767535/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=112926655234767535' title='11 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112926655234767535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112926655234767535'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2005/10/trabajando-con-dev-c-y-gtk-bajo.html' title='Trabajando con Dev-C++ y GTK+ bajo Windows'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9579355.post-112327345850306258</id><published>2005-08-05T14:37:00.000-04:00</published><updated>2005-10-14T11:22:53.016-04:00</updated><title type='text'>Compilando un proyecto de Glade en C++ con Cygwin</title><content type='html'>Finalmente lo he logrado :) :) :) ¡Luego de dos semanas pariendo perdido por caminos verdes, al final lo logré! ¡Compilé bajo Windows un proyecto generado por Glade en C++!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/compila-c%20%20.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/400/compila-c%20%20.jpg" alt="" border="1" /&gt;&lt;/a&gt;&lt;br /&gt;Los pasos son los siguientes:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Bajar y descargar &lt;a href="http://gladewin32.sourceforge.net/"&gt;Glade/GTK+ para Windows&lt;/a&gt; desde &lt;a href="http://gladewin32.sourceforge.net/"&gt;http://gladewin32.sourceforge.net/&lt;/a&gt;. Este paquete es lo único que se necesita si quieres diseñar interfaces de usuario y generar código en C. Ese código es perfectamente compilable desde Microsoft Visual C++ 6 (simplemente genera el código desde Glade, luego abres el Visual Studio, seleccionas "Abrir proyecto", vas a la carpeta msvc y abres el archivo .dsw respectivo).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Lamentablemente, este paquete no servirá para generar código en C++ pues reventará con este error:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote style="font-style: italic;"&gt;# Error running glade-- to generate the C++ source code. Check that you have glade-- installed and that it is in your PATH. Then try running 'glade-- &lt;project_file.glade&gt;' in a terminal.&lt;/project_file.glade&gt;&lt;/blockquote&gt;  &lt;ul&gt;    &lt;li&gt;Se intentó &lt;a href="http://home.wtal.de/petig/Gtk"&gt;con este ejecutable de glade--.exe&lt;/a&gt; sin resultado alguno (el mismo hacía &lt;span style="font-style: italic;"&gt;crash&lt;/span&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Usando Cygwin y gtkmm para Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La solución consistirá en utilizar una distribución llamada &lt;a href="http://www.pcpm.ucl.ac.be/%7Egustin/win32_ports/"&gt;gtkmm for Win32&lt;/a&gt;, que sí funciona muy bien bajo Windows. Sin embargo, la misma no utiliza Visual C++ 6 sino el ambiente de compilación &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;, el cual trata de imitar de una forma muy cercana al conjunto de herramientas de programación para C y C++ que existen bajo Linux: GCC, autoconf, automake, libtool, etc.&lt;br /&gt;&lt;br /&gt;También es posible utilizar MSVC .NET (versión 7.1), pero los autores de gtkmm para Windows advierten de un bug bastante grave con el que se han topado algunas aplicaciones siendo programadas con esta combinación. Para solucionarlo hay que actualizarse al beta 2 de &lt;a href="http://lab.msdn.microsoft.com/vs2005/"&gt;Visual Studio. Net 2005&lt;/a&gt;. El mismo ya está disponible; sin embargo, Visual Studio .Net es una plataforma demasiado pesada para mí, además de que es propietaria; prefiero quedarme con Cygwin por ahora.&lt;br /&gt;&lt;br /&gt;Continuamos entonces:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Descargar e instalar &lt;a href="http://www.pcpm.ucl.ac.be/%7Egustin/win32_ports/"&gt;gtkmm for Win32&lt;/a&gt; desde &lt;a href="http://www.pcpm.ucl.ac.be/%7Egustin/win32_ports/"&gt;http://www.pcpm.ucl.ac.be/~gustin/win32_ports/&lt;/a&gt;. Puede instalarse en el mismo directorio en el que se instaló Glade/GTK para Windows (asumiremos C:\gtk). Este paquete instalará glade--.exe, lo que ya permitirá generar código en C++.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Descargar e instalar &lt;a href="http://www.cygwin.com/"&gt;Cygwin desde http://www.cygwin.com/&lt;/a&gt;. Descargarás inicialmente un ejecutable muy pequeño que te permitirá seleccionar qué paquetes de Cygwin quieres instalar. Cuando llegues a la ventana "Select packages", haz click en el botón "View" para colocarlo en "Full" y selecciona, además de los paqueters que vienen instalados por defecto, los siguientes:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;autoconf&lt;/li&gt;   &lt;li&gt;automake&lt;/li&gt;   &lt;li&gt;binutils&lt;/li&gt;   &lt;li&gt;coreutils&lt;/li&gt;   &lt;li&gt;gcc-core&lt;/li&gt;   &lt;li&gt;gcc-g++&lt;/li&gt;   &lt;li&gt;gcc-mingw-core&lt;/li&gt;   &lt;li&gt;gcc-mingw-g++&lt;/li&gt;   &lt;li&gt;libtool1.5&lt;/li&gt;   &lt;li&gt;make&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Si todo sale bien, entra en Glade, crea un proyecto, dibuja una ventana con algunos botones y graba el proyecto. No olvides entrar en Options y colocar el lenguaje por defecto en C++ antes de grabar.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Haz click en "&lt;span style="font-style: italic;"&gt;Build&lt;/span&gt;" para generar el código. Como ya tienes el glade--.exe, no deberías tener mensajes de error importantes. Verás que una ventana de cónsola se abre, se cierra y luego, en el &lt;span style="font-style: italic;"&gt;status bar&lt;/span&gt; de Glade, aparecerá un mensaje indicando que el código ya fue construido.&lt;br /&gt;   &lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;Nota: &lt;/span&gt;si guardaste el proyecto en una carpeta cuya ruta tenga espacios (por ejemplo, "c:\Documents and settings\Pedro Perez\...") Glade dará un error al compilar: "&lt;span style="font-style: italic;"&gt;Error running glade-- to generate the C++ source code.&lt;/span&gt;" Guárdalo en una carpeta con un nombre sin espacios, como "c:\Proyectos\PedroPerez".&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Con eso, generaste en la carpeta &lt;span style="font-style: italic;"&gt;src &lt;/span&gt;dentro de tu proyecto los archivos .cc y .hh con el esqueleto de tu proyecto, además de otros necesarios para poder compilar. Ahora, viene el paso de la compilación.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Entra en una ventana de Cygwin Bash Shell. Desde allí, haz cd hasta la carpeta de tu proyecto, recordando que allí se usan los slashes como en Unix. Por ejemplo:&lt;br /&gt;&lt;br /&gt;cd c:/tesis/proyecto2/&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Ahora, ejecuta el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;gtkautogen --prefix=/target&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ese comando correrá por tí todos los comandos (glib-gettextize, aclocal, autoheader, automake, autoconf, configure, etc.) necesarios para generar los archivos que permitirán compilar tu proyecto.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Luego, ejecutas el tradicional&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y luego:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Si todo sale bien, en la carpeta src dentro de tu proyecto de ejemplo debe estar el ejecutable. Sólo hazle doble click, y podrás verlo correr en todo su esplendor :)&lt;/li&gt; &lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Referencias:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;a href="http://gladewin32.sourceforge.net/modules.php?name=Content&amp;pa=showpage&amp;amp;pid=3"&gt;Cygwin HOWTO&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://gladewin32.sourceforge.net/modules.php?name=phpBB2&amp;file=viewforum&amp;amp;f=1"&gt;Foros de Glade for Win32&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://mail.gnome.org/archives/glademm-list/2003-November/msg00005.html"&gt;Mensaje de la lista de glademm&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-112327345850306258?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/112327345850306258/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=112327345850306258' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112327345850306258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112327345850306258'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2005/08/compilando-un-proyecto-de-glade-en-c.html' title='Compilando un proyecto de Glade en C++ con Cygwin'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9579355.post-112324954240140160</id><published>2005-08-05T09:36:00.000-04:00</published><updated>2005-08-05T09:45:42.410-04:00</updated><title type='text'>Glade y los problemas que he tenido</title><content type='html'>Siendo la interfaz de usuario uno de los elementos principales de este proyecto (pues la facilidad de uso es un elemento clave), fue importante encontrar un ambiente de desarrollo adecuado, con los widgets y elementos de interfaz a los que estamos acostumbrados.&lt;br /&gt;&lt;br /&gt;Experiencias previas me habían demostrado cuán importantes son las interfaces de usuario. Por ejemlo, alguna vez programé en el JDK 1.2 y 1.3 usando Swing; lamentablemente sus elementos de interfaz y hasta sus cuadrois de diálogo son tan distintos a los de Windows (o por lo menos lo eran en ese momento) que causaban serios problemas a los usuarios, quienes se veían forzados a aprender de nuevo lo que era el manejo de la interfaz. Tengo entendido que eso ya fue resuelto en las nuevas versiones del JDK de Sun.&lt;br /&gt;&lt;br /&gt;Por fortuna, GTK+ reutiliza los cuadros de diálogo del sistema operativo donde se encuentra y da acceso a widgets que, si bien no son 100% iguales a los de Windows, son muy pero muy parecidos evitando así que el usuario tenga que "re-aprender" a usar la interfaz.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2767/235/1600/desktop11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2767/235/400/desktop1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;GTK+ suministra un programa, llamado Glade, que permite editar interfaces de usuario y generar código en lenguaje C que puede ser compilado bajo GCC o incluso bajo Visual C++ sin ningún problema, generando un cascarón con los eventos y funciones, de tal forma que el programador sólo deba sentarse a llenarlos con las funcionalidades de su aplicación. ¡Un tiro al piso!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problemas en el paraíso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lamentablemente, yo debo usar C++, no C. Ello no sólo porque quiero aprovechar las características de un lenguaje orientado a objetos (polimorfismo, herencia, etc.) sino porque deseo utilizar el parser Xerces C++ para trabajar con los archivos XML.&lt;br /&gt;&lt;br /&gt;Glade puede generar código en C, C++ o Ada95, pero para generar código en estos dos lenguajes requiere de un programa externo que haga esa misión.&lt;br /&gt;&lt;br /&gt;El problema de usar este programa externo, llamado glademm o glade--, es que, bajo Windows, dicho programa no existe. No viene con el paquete de &lt;a href="http://gladewin32.sourceforge.net/"&gt;Glade para Windows&lt;/a&gt;, y la versión que &lt;a href="http://home.wtal.de/petig/Gtk"&gt;se puede conseguir en Internet&lt;/a&gt; simplemente no funciona (hace crash en tres computadoras distintas donde he hecho la prueba).&lt;br /&gt;&lt;br /&gt;Tengo entonces estas opciones:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Usar C, perder todas las características de orientación a objetos y buscar otra forma de parsear archivos XML que no sea usando a Xerces C++&lt;br /&gt;  &lt;/li&gt;   &lt;li&gt;Buscar una forma de resolver el problema con glademm, ya sea compilando yo mismo una versión que funcione bajo Windows, o utilizar la versión bajo Linux, generar el código allí, traerlo a Windows y continuar trabajando.&lt;/li&gt;   &lt;li&gt;Utilizar desde mi aplicación las &lt;a href="http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/ch19.html"&gt;bibliotecas libglademm&lt;/a&gt;, que permiten trabajar con el código XML que genera Glade para guardar los archivos y generar la interfazx a partire d&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-112324954240140160?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/112324954240140160/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=112324954240140160' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112324954240140160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112324954240140160'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2005/08/glade-y-los-problemas-que-he-tenido.html' title='Glade y los problemas que he tenido'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9579355.post-112321541857159693</id><published>2005-08-05T02:48:00.000-04:00</published><updated>2005-08-05T00:17:51.216-04:00</updated><title type='text'>Proyecto: Generador de libros electrónicos software libre, para Linux y Windows, usando GTK+</title><content type='html'>La intención inicial de este blog es reseñar los avances del proyecto de una aplicación software libre para la creación, edición y despliegue de libros electrónicos, la cual presentaré como Trabajo Especial de Grado para optar a la Licenciatura en Computación en la Universidad Central de Venezuela (UCV).&lt;br /&gt;&lt;br /&gt;La aplicación idealmente cumplirá con estas características:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Cumplirá con una licencia GPL/GNU, cumpliendo con los estatutos generalmente reconocidos para el software libre.&lt;/li&gt;   &lt;li&gt;Para ello, utilizará las bibliotecas &lt;a href="http://www.gtk.org/"&gt;GTK+&lt;/a&gt; que proveen widgets bajo Windows y Linux/Gnome&lt;/li&gt;   &lt;li&gt;Guardará los datos en estándares abiertos como &lt;a href="http://www.openebook.org/"&gt;Open eBook&lt;/a&gt;, el cual a su vez usa a CSS, XHTML y otros estándares abiertos.&lt;/li&gt;   &lt;li&gt;Se programará en C++ o, en caso de ser imposible, se usará C.&lt;/li&gt; &lt;/ul&gt; El proyecto de tesis comenzó a realizarse en mayo de 2005, pero &lt;a href="http://lubrio.blogspot.com/2005/07/renuncia-rnv-y-nuevas-etapas.html"&gt;diversos retrasos ajenos a la tesis y a la universidad&lt;/a&gt; hicieron que perdiera varios meses. Finalmente, en agosto logré reorientar mis prioriodades y comenzar de nuevo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9579355-112321541857159693?l=lubriotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lubriotech.blogspot.com/feeds/112321541857159693/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9579355&amp;postID=112321541857159693' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112321541857159693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9579355/posts/default/112321541857159693'/><link rel='alternate' type='text/html' href='http://lubriotech.blogspot.com/2005/08/proyecto-generador-de-libros.html' title='Proyecto: Generador de libros electrónicos software libre, para Linux y Windows, usando GTK+'/><author><name>Luigino Bracci Roa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry></feed>
