View Full Version : gtk creare inputbox
come posso creare una input box modale con le gtk?
o meglio:
io userei il comando gtk_dialog_new()
il problema e' che non mi crea una dialog modale.
mentre cio' e' possibile con la funzione
GtkWidget *gtk_dialog_new_with_buttons( const gchar *title, GtkWindow *parent, GtkDialogFlags flags, const gchar *first_button_text,... );
passando la constante GTK_DIALOG_MODAL
ma come ovvio mi crea solo dei pulsanti mentre io vorrei
che la stessa dialog mi restituisse il valore di un campo testo che non c'e'.
come si potrebbe fare?
up
dai mjordan dammi una manina.
Originariamente inviato da x110
up
dai mjordan dammi una manina.
Sorry ... Sono stato via un paio di giorni. Ogni tanto mi ricordo di avere una vita sociale (cerco il + possibile dal non farmi lasciare dalla mia ragazza) :D :D :D Bhè mo l'ho detta una minkiata :sofico:
Dunque dunque.
Certo che va benissimo la gtk_dialog_new()!!! Ma dopo averla creata puoi usare due funzioni che fanno proprio al caso tuo.
La più semplice e probabilmente la + indicata per il tuo caso è la funzione
void gtk_window_set_modal (GtkWindow *window, gboolean modal);
Gli passi in input il puntatore alla tua finestra di dialogo con un valore TRUE. Essa diverrà magicamente modale :D
La seconda funzione è un pò più generica ma un pò + potente. Ti consente di specificare in base a quale finestra una finestra dev'essere modale:
void gtk_set_transient_for(GtkWindow * window2, GtkWindow * window1);
Questo ti consente di avere sempre la finestra "2" sotto quella "1".
Ciauz.
grazie mille sei gentilissimo...
mi sembra pero' che su sto forum ad usare le gtk ci sei solo tu e inizia cionci.
me lo puoi confermare?
alle volte capita di lasciare il forum ma poi e' un po' come una droga..........:eek: :eek: :eek:
anch'io spesso ho lamentele dalla famiglia:rolleyes:
piccolo problemino:
ubutton = gtk_button_new_with_label("ciaoooo");
udialog = gtk_dialog_new();
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(udialog)->action_area),ubutton,
..................................TRUE,TRUE,0);
gtk_window_set_modal(GTK_WINDOW(udialog),TRUE);
g_signal_connect(G_OBJECT(ubutton),"clicked",
..................................G_CALLBACK(quit),GTK_WIDGET(udialog));
gtk_widget_show(ubutton);
gtk_widget_show(udialog);
//la funzione quit e'
static gboolean quit(GtkWidget *widget){
gtk_widget_destroy(GTK_WIDGET(widget));
return FALSE;
}
invece di sitruggermi la sinestra udialog mi distrugge il pulsante ubutton
non posso collegare il clicked al destroy_event di udialog?
grazie.
Non ti so dire. Quà la maggiorparte sono Windowsisti/Javist/aspisti :p
Aspetta che analizzo il problema e ti comunico.
Si ma l'errore sta nel fatto che tu passi il bottone clicked al segnale. La funzione di quit ha un solo parametro nel prototipo (GtkWidget * widget);
In quel prototipo viene passato come argomento il bottone e non la GtkDialog. Pertanto quando chiami la gtk_widget_destroy() la chiami sul bottone e non sulla dialog box.
Prova così:
void
quit_callback(GtkWidget * widget, gpointer user_data)
{
gtk_widget_destroy(user_data);
}
Al posto di utilizzare la gtk_signal_connect() per collegare il segnale, utilizza la gtk_signal_connect_object():
gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
GTK_SIGNAL_FUNC(quit_callback),
GTK_OBJECT(udialog));
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.