Newsgroup: it.comp.os.linux.development
Titolo: gnome druid

Ma perché il codice 
#include <gtk/gtk.h>
#include <gnome.h>
void destroy(GtkWidget *widget, gpointer data) {
        gtk_main_quit();
}
int main(int argc, char *argv[]) {
        GtkWidget *window;
        GtkWidget *druid;
        gtk_init(&argc, &argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), "Prova");
        gtk_widget_set_usize(GTK_WIDGET(window), 640, 480);
        gtk_signal_connect(GTK_OBJECT(window), "destroy",
                           GTK_SIGNAL_FUNC(destroy), NULL);
        druid = gnome_druid_new();
        gtk_container_set_border_width(GTK_CONTAINER(window), 10);
        gtk_widget_show(window);
        gtk_main();
        return(0);
}
mi dà questo errore?
/tmp/cc9cBTRb.o: In function `main':
/tmp/cc9cBTRb.o(.text+0xe3): undefined reference to `gnome_druid_new'
collect2: ld returned 1 exit status
make: *** [installer] Error 1
In  libreria  c'è  il  metodo GtkWidget*  gnome_druid_new(void);  e  non
capisco perché non vada...
-- 
Non c'è più forza nella normalità: c'è solo monotonia.

 mi dà questo errore?
ok, penso di  aver capito :-), tuttavia adesso dopo  averlo compilato mi
va in  segmentation fault  quando chiamo gnome_druid_new().  Qualcuno sa
dirmi perché?  E' giusto  mettere il druid  nel gtk_window?  Oppure deve
essere messo in un gnome_app?


Il  Fri, 30 Jun 2000 18:12:05 GMT, 
bo...@www.bott.it
 (Ottavio Campana)
scrisse:
Ottavio, un consiglio, scaricati GADD dal sito 
developer.gnome.org
 o,
meglio, comprati la versione cartacea edita da Apogeo in italiano
(64.000 lire), ne vale la pena. Ti risparmieresti un mucchio di tempo
e problemi banalissimi come questo. Passiamo al codice
---8<---
/*#include <gtk/gtk.h> non seve perche' gia' incluso in gnome.h*/
#include <gnome.h>
void destroy(GtkWidget *widget, gpointer data) {
        gtk_main_quit();
}
int main(int argc, char *argv[]) {
        GtkWidget *window;
        GtkWidget *druid;
		GtkWidget* page1;
		GtkWidget* page2;
		GtkWidget* page3;
        /*gtk_init(&argc, &argv); 
		 e' un'applicazione gnome, non gtk
		 */
        gnome_init("nome-applicazione", "versione-0.1.0in-formato-stringa", argc, argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), "Prova");
        /*gtk_widget_set_usize(GTK_WIDGET(window), 640, 480); 
		 setta la finestra non modificabile, meglio questa che setta solo
		 le impostazioni di default
		 */
        gtk_window_set_default_size(GTK_WINDOW(window), 640, 480);
 
		druid = gnome_druid_new();
		page1 = gnome_druid_page_start_new();
		page2 = gnome_druid_page_standard_new();
		page3 = gnome_druid_page_finish_new();
 
		gnome_druid_append_page(GNOME_DRUID(druid), GNOME_DRUID_PAGE(page1));
   		gnome_druid_append_page(GNOME_DRUID(druid), GNOME_DRUID_PAGE(page2));
     	gnome_druid_append_page(GNOME_DRUID(druid), GNOME_DRUID_PAGE(page3));
 
		gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(druid));
        gtk_container_set_border_width(GTK_CONTAINER(window), 10);
 
		gtk_signal_connect(GTK_OBJECT(window), "destroy",
                           GTK_SIGNAL_FUNC(destroy), NULL);
		gtk_signal_connect(GTK_OBJECT(GNOME_DRUID(druid)->cancel), "clicked",
		                   GTK_SIGNAL_FUNC(destroy), NULL);
 
		gtk_widget_show_all(window);
 
		gtk_main();
        return(0);
}
---8<---
e compilalo con
#gcc -o g g.c `gnome-config --cflags --libs gnomeui`
-- 
 (o-  | Un OS per domarli, Un OS per trovarli,
 //\  | Un OS per ghermirli e nel buio incatenarli
 V_/_ | 
http://pinguin.linuxave.net
 r.salmaso(at)
flashnet.it

 #gcc -o g g.c `gnome-config --cflags --libs gnomeui`
se lo lancio mi viene fuori:
Multiple segmentation faults occurred; can't display error dialog
e se lo debuggo viene fuori:
(gdb) run
Starting program: /mnt/programmi/gtk/installer/installer 
Program received signal SIGSEGV, Segmentation fault.
0x0 in ?? ()
(gdb) where
#0  0x0 in ?? ()
#1  0x40463dfc in buffered_vfprintf (s=0x4050cb20, format=0x4037e020 "Unable to connect to server port %d\n", args=0xbffff508) at vfprintf.c:1767
#2  0x4045e9f6 in _IO_vfprintf (s=0x4050cb20, format=0x4037e020 "Unable to connect to server port %d\n", ap=0xbffff508) at vfprintf.c:1029
#3  0x40467821 in fprintf (stream=0x4050cb20, format=0x4037e020 "Unable to connect to server port %d\n") at fprintf.c:32
#4  0x4037c613 in esd_open_sound () at esdlib.c:219
#5  0x4036f1d4 in gnome_sound_init () from /opt/gnome/lib/libgnome.so.32
#6  0x40370f57 in gnomelib_option_cb () from /opt/gnome/lib/libgnome.so.32
#7  0x40376b64 in invokeCallbacks () from /opt/gnome/lib/libgnomesupport.so.0
#8  0x40376b1d in invokeCallbacks () from /opt/gnome/lib/libgnomesupport.so.0
#9  0x40377568 in poptGetNextOpt () from /opt/gnome/lib/libgnomesupport.so.0
#10 0x4036dede in gnomelib_parse_args () from /opt/gnome/lib/libgnome.so.32
#11 0x4008b2c7 in gnome_init_with_popt_table () from /opt/gnome/lib/libgnomeui.so.32
#12 0x4008b334 in gnome_init () from /opt/gnome/lib/libgnomeui.so.32
#13 0x8048cce in main (argc=1, argv=0xbffff714) at installer.c:12
(gdb)
Da  cosa  può essere  causato?  Dalla  libreria sfigata?  Considera  che
compilo in remoto su una macchina su  cui è installata la libreria e poi
esegue sul mio pc attraverso ssh.
Ciao


Multiple segmentation faults occurred; can't display error dialog
A me funziona correttamente, ma lo lancio in locale.
Altri programmi gnome funzionano correttamente?
A quanto pare si incarta quando cerca di connettersi ad esound, anche
se il comportamento mi sembra alquanto strano...
Prova a lanciarlo con --disable-sound, e vedi come si comporta.
Mi dispiace, ma qui non so darti assolutamente una mano.


 Prova a lanciarlo con --disable-sound, e vedi come si comporta.
g: error in loading shared libraries: /opt/gnome/lib/libgnomeui.so.32: undefined symbol: gdk_imlib_get_cache_info
Mi sa che è un problema di librerie sfigate....
<2 minuti dopo...>
Sì porca miseria  sono le libreire sfigate, l'ho  lanciato in esecuzione
remota da un'altro computer e va....
Ciao e grazie mille.
PS: mi spiegheresti un'ultima cosa? Le  pagine del wizard mi appaiono in
parte bianche, in parte azzurre e  con un altro riquadretto bianco? Cosa
è la formattazione di default? Come  accedo alle varie parti (ad esempio
penso che  il riquadretto  serva per  metterci una  icona) e  come posso
modificarle?


 modificarle?
e soprattutto, cosa più importante, visto che le altre le ho bene o male
intuite: come faccio ad aggiungere bottoni  e roba simile ad una pagina?
Se provo
gtk_container_add(GTK_CONTAINER(page1), GTK_WIDGET(button));
compila ma in esecuzione mi dà il messaggio 
Gtk-CRITICAL **: file gtkbin.c: line 277 (gtk_bin_add): assertion `bin->child == NULL' failed.
Penso che si  adovuto al non corretto tentativo di  dare un container al
button e immagino che si debba fare qualcosa un po' come per le finestre
di dialogo  ma non  so come fare.  Sul GADD non  l'ho trovato  e nemmeno
sulla mia documentazione.
Ciao


modificarle?
Guarda in questi header tutte le funzioni che servono per riempire le
pagine:
gnome-druid-page.h
gnome-druid-page-start.h
gnome-druid-page-finish.h
gnome-druid-page-standard.h


  il riquadretto  serva per  metterci una  icona) e  come posso modificarle?
Si esatto.
Installa glade (
http://glade.pn.org
), genera il codice e studiatelo.
E poi guarda nel GGAD e nei tutorials.
-- 
Pier Luigi Fiorini
http://www.fiorinisoft.n3.net/