2010-12-06 40 views
0

Comment déterminez-vous ce contrôle/Widget est cliqué dans une boîte de dialogue en cochant la valeur de retour de gtk_dialog_run()savoir si un événement ocurred (quand gtk_dialog_run() en cours d'exécution)

C'est ce que je

/*toolbar test thingy*/ 
#include <gtk/gtk.h> 
#define MESSAGE_OK 1001 

void mymessage (void){ 
    GtkWidget *message = gtk_dialog_new_with_buttons("My dialog", 
     NULL, 
     GTK_DIALOG_MODAL,GTK_STOCK_OK,1001,NULL); 

    gtk_window_set_default_size(GTK_WINDOW(message),200,200); 

    gint result = gtk_dialog_run(GTK_DIALOG(message)); 
    switch(result){ 
     case MESSAGE_OK: 
      gtk_widget_destroy(message); 
      printf("you clicked message_ok"); 
     break; 


    } 
    gtk_widget_destroy(message); 
} 


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

    GtkWidget *window; 
    GtkWidget *vertical_box; 
    GtkWidget *toolbar; 
    //GtkWidget *message; 

    GtkToolItem *tool_new; 


    gtk_init(&argc,&argv); 

    //setting up the main window. 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    gtk_window_set_title(GTK_WINDOW(window),"rs-toolbar test"); 
    gtk_window_set_default_size(GTK_WINDOW(window),300,350); 
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS); 

    //setting up the layout using vbox. 
    vertical_box = gtk_vbox_new(FALSE,0); 
    //adding the vbox layout to the Container window, window 
    gtk_container_add(GTK_CONTAINER(window),vertical_box); 

    toolbar = gtk_toolbar_new(); 
    gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_ICONS); 
    gtk_container_set_border_width(GTK_CONTAINER(toolbar),2); 

    tool_new = gtk_tool_button_new_from_stock(GTK_STOCK_NEW); 
    gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_new,-1); 
    //************************************************************************ 





    //************************************************************************ 
    gtk_box_pack_start(GTK_BOX(vertical_box),toolbar,FALSE,FALSE,0); 

    gtk_widget_show_all(window); 

    g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL); 
    g_signal_connect(tool_new,"clicked",G_CALLBACK(mymessage),NULL); 

    gtk_main(); 



    return 0; 

} 

L'utilisation de la fonction gtk_dialog_new_with_buttons() est-elle correcte? Je ne suis pas entièrement sûr de savoir comment donner un identifiant spécifique à un contrôle. Ce que j'ai essayé de faire est de faire 1001 l'ID de GTK_STOCK_OK.

Répondre

0

Vous comparez la réponse à la mauvaise chose. gtk_dialog_run renvoie l'une des constantes GTK_RESPONSE; essayez de comparer avec ceux de votre commutateur pour voir quel bouton a été enfoncé.

+0

J'ai essayé d'utiliser 'GTK_RESPONSE_OK' mais cela n'a pas fonctionné. – silent

+1

Que s'est-il passé? * Cela n'a pas fonctionné * n'est pas vraiment assez de détails pour travailler à partir de :) –

+0

désolé oublié de mettre à jour cela, il a fini par travailler, merci. – silent