Hola: Si me aceptas un consejo respecto a esto de hacer interfaces gráficas, yo te diría que copies todo lo que puedas. Siempre que uno empieza a jugar con alguna herramienta de diseño de GUIs "se flipa" porque quiere hacer cosas muy originales y molonas (nos ha pasado a todos, y nos sigue pasando), pero la verdad es que al final te acabas dado cuenta de que has montado un tinglao que ningún usuario cuerdo va a entender.
No quiero decir que no se pueda innovar, pero no es nada fácil hacer
GUI amigables e intuitivas. Sólo tienes que ver los programas que usan
en bancos, tiendas, organismos oficiales y que son en su mayor parte de
"fabricación nacional". Es fácil ver ventanas con solapas
que dentro tienen listas desplegables que activan menús en otras
solapas que tienen listas interminables de botones (unos toogle y
otros no) pero que a la vez intentan parecer un asistente... terribles.
Por eso te digo que, a menos que hayas leído muuucho sobre interfaces
gráficas, manipulación directa y demás, lo mejor que puedes hacer es
buscar un programa de amplio uso que se parezca al tuyo y que te sea
fácil de usar, y copiar vilmente la estructura de la interfaz gráfica.
Y a partir de ahí ya le añades cosas de tu cosecha.
Saludos
PD: Por cuestiones obvias, mejor si el programa copiado es libre, no
vaya a ser que te demanden por infringir alguna patente o algo :-P
El Sat, 13 Oct 2007 10:45:54 +0200
"Manuel David Jiménez Patiño" <[EMAIL PROTECTED]> escribió:
> Eureka!! (lo encontré).
>
> Hola otra vez. David al final me di cuenta que lo que estaba
> intentando hacer con el FileChooserDialog era algo un poco
> complicado, por lo que al final decidí mostrar un FileChooserDialog
> normalito con los botones tipicos de cancelar y abrir.
>
> Este Dialog se muestra cuando pinchas un botón de los normales, por
> lo que el código al final queda de la siguiente manera:
>
> Para el botón normal:
>
> GtkWidget *button15;
>
> button15 = glade_xml_get_widget (xml, "button15");
>
> g_signal_connect (G_OBJECT (button15), "clicked", G_CALLBACK
> (on_button15_clicked), NULL);
>
>
> y en la función on_button15_clicked ponemos el código referido al
> Dialog, que es el siguiente:
>
>
> void on_button15_clicked(){
>
>
> GtkWidget *pFileSelection;
> GtkWidget *pDialog;
> const gchar *sChemin;
>
> /* Creación de la ventana de selección */
>
> pFileSelection = gtk_file_chooser_dialog_new("Abrir fichero",
> NULL,
> GTK_FILE_CHOOSER_ACTION_OPEN,
> GTK_STOCK_CANCEL,
> GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
> NULL);
>
> /* Limitar las acciones a esta ventana */
> gtk_window_set_modal(GTK_WINDOW(pFileSelection), TRUE);
>
> if (gtk_dialog_run (GTK_DIALOG (pFileSelection)) ==
> GTK_RESPONSE_ACCEPT)
> {
> char *filename;
>
> filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER
> (pFileSelection));
> g_print ("%s\n", filename);
> g_free (filename);
> }
>
> gtk_widget_destroy(pFileSelection);
> }
>
>
> Y ahora ya si consigo obtener la ruta del archivo seleccionado.
>
> Me he fijado del código en esta página:
>
> http://libros.es.gnome.org/librognome/librognome/librognome/x6030.html
>
> Nada más, gracias a todos los que me habeis ayudado, Cleto, Lorenzo,
> David ... y todos los que se han molestado en leer mis e-mails.
>
> Saludos.
>
>
> **********************************************************************
> "Paraisos fiscales, especulación de terrenos ..., los paises si
> apoyan el libre movimiento del dinero, y sin embargo rechazan el
> libre movimiento de las personas, todo ello provoca situaciones como
> esta:
>
> http://images.google.es/imgres?imgurl=http://www.pagina12.com.ar/fotos/20060919/notas/NA32FO01.JPG&imgrefurl=http://www.pagina12.com.ar/diario/contratapa/index-2006-09-19.html&h=155&w=200&sz=51&hl=es&start=2&sig2=s_69pWToLZN01pJIYTN0eQ&um=1&tbnid=--Vs3Y4QTx9VNM:&tbnh=81&tbnw=104&ei=ungQR-n_HIeQwAHhi51b&prev=/images%3Fq%3Dni%25C3%25B1o%2By%2Bbuitre%26svnum%3D10%26um%3D1%26hl%3Des%26client%3Dfirefox%26rls%3Dorg.mozilla:en-US:unofficial%26sa%3DG
>
>
> On 10/12/07, Manuel David Jiménez Patiño <[EMAIL PROTECTED]>
> wrote:
> >
> >
> >
> > >No entiendo muy bien lo que pretendes. El FileChooserDialog tiene
> > >su propia ventana, ¿por qué lo quieres definir en el glade?
> >
> > Hola David:
> >
> > Yo me hubiese preguntado lo mismo que tú. He visto muchos ejemplos
> > escritos en código C y Python que cargan un FileChooserDialog de la
> > manera que tú has indicado.
> >
> > Lo que pasa es que si te fijas cuando creas un FileChooserDialog a
> > parte del hueco para los dos típicos botones Cancelar y Abrir, te
> > deja otro que generalmente nadie utiliza. Pero bien en mi caso ese
> > espacio lo he agrandado y lo he llenado con 10 botones para
> > realizar diferentes tareas. Por lo que mi razonamiento ha sido que
> > sería mucho más fácil crear todos esos botones con Gazpacho que no
> > crearlos todos a pelo con código y así de paso haría uso de la
> > librería libglade y podría separar mejor la capa de presentación y
> > la capa de dominio.
> >
> > Quizá tendría que haberlo dicho antes.
> >
> > Un saludo.
> >
> >
> >
> >
> >
> > On 10/12/07, [EMAIL PROTECTED] < [EMAIL PROTECTED]> wrote:
> > >
> > >
> > > Hola:
> > >
> > > No entiendo muy bien lo que pretendes. El FileChooserDialog tiene
> > > su propia ventana, ¿por qué lo quieres definir en el glade?
> > > Simplemente créalo cuando lo necesites. No puede ser más fácil.
> > >
> > > Ejemplo en Python:
> > >
> > > chooser = gtk.FileChooserDialog(
> > > title = 'Select target folder',
> > > action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
> > > buttons = (gtk.STOCK_CANCEL,
> > > gtk.RESPONSE_CANCEL,
> > > gtk.STOCK_OPEN,
> > > gtk.RESPONSE_OK ))
> > >
> > > response = chooser.run()
> > > path = chooser.get_filename()
> > > chooser.destroy()
> > >
> > > if response != gtk.RESPONSE_OK:
> > > ...
> > >
> > >
> > > Saludos
> > >
> > >
> > > El Fri, 12 Oct 2007 18:06:35 +0200
> > > "Manuel David Jiménez Patiño" <[EMAIL PROTECTED]> escribió:
> > >
> > > > Hola otra vez, sigo sin saber hacer funcionar el dichoso botón
> > > > GTKFileChooserButton. Asi que he partido de 0 y he construido
> > > > con Gazpacho un GTKFILECHOOSERDIALOG, ahora bien lo intento
> > > > cargar con libglade como hacía antes con una ventana:
> > > >
> > > >
> > > > int main(int argc, char *argv[]) {
> > > >
> > > > GtkWidget* window_main;
> > > >
> > > >
> > > >
> > > > gtk_init(&argc, &argv);
> > > >
> > > >
> > > >
> > > > window_main = prueba_crear_main();
> > > >
> > > >
> > > > gtk_main();
> > > >
> > > > return 0;
> > > > }
> > > >
> > > >
> > > /*****************************************************************************************
> > > > * fin del main
> > > >
> > > *****************************************************************************************/
> > >
> > > >
> > > > GtkWidget * prueba_crear_main(void){
> > > >
> > > > GladeXML *xml;
> > > > GtkWidget *window;
> > > >
> > > >
> > > >
> > > > xml = glade_xml_new("dialog.glade", NULL, NULL);
> > > > glade_xml_signal_autoconnect(xml);
> > > >
> > > > window = glade_xml_get_widget (xml, "fileselection1");
> > > >
> > > >
> > > >
> > > > return window;
> > > > }
> > > >
> > > > Compilo:
> > > >
> > > > gcc -o interfaz interfaz.c `pkg-config --cflags --libs gtk+-
> > > > 2.0 libglade-2.0 opencv --libs opencv
> > > >
> > > > y ejecuto:
> > > > ./interfaz
> > > >
> > > > pero no me muestra el dialog.
> > > >
> > > > En cambio si hago lo mismo para una ventana si que me la
> > > > muestra.
> > > >
> > > > ¿Alguno me puede ayudar?
> > > >
> > > > Estoy googleando pero no encuentro gran cosa.
> > > >
> > > > Un saludo.
> > >
> > >
> > > --
> > > ¿Usuario de Linux? ¿Qué eres? ¿un driver?
> > >
> > >
> > >
> >
--
¿Usuario de Linux? ¿Qué eres? ¿un driver?
signature.asc
Description: PGP signature
_______________________________________________ CRySoL mailing list http://crysol.inf-cr.uclm.es/ https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol
