GTK dialog mimo gtk_main()

Ladislav Vaiz spam na nagano.cz
Středa Září 21 21:02:54 CEST 2011


Ahoj,
chtěl bych v aplikaci, která jinak nemá s GTK nic společného, použít GTK 
File Chooser. Idea je spustit jej v samostatném vláknu, aby nezdržoval 
hlavní smyčku. Problém je v tom, že volání gtk_dialog_run() se sice 
správně ukončí, ale dialog zůstane zobrazený i po volání 
gtk_widget_destroy(). Zmizí až po ukončení procesu. Princip ukazuje 
příklad na konci mailu.

Dá se nějak vynutit uzavření okna? Lze vůbec používat dialogy mimo 
gtk_main()?
Případně existuje nějaká jiná knihovna použítelná pro tento účel, které 
se dá volat z C a bývá u uživatelů běžně nainstalována?

Díky Láďa

// gcc gtk.c -o gtk `pkg-config --cflags --libs gtk+-2.0` && ./gtk
#include <gtk/gtk.h>

int main(int argc, char *argv[]){
     GtkWidget *dialog;

     gtk_init(&argc, &argv);

     dialog = gtk_file_chooser_dialog_new("Otevrit", NULL,
             GTK_FILE_CHOOSER_ACTION_OPEN,
             GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
             GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
             NULL);
     if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT){
         printf("accept\n");
         char *fff = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER 
(dialog));
     }else{
         printf("asi ne\n");
     }
     gtk_widget_destroy(dialog);
     sleep(3);
}



Další informace o konferenci Linux