rendered paste body#include <stdlib.h>#include <stdio.h>#include <gtk/gtk.h>void OnDestroy(GtkWidget *pWidget, gpointer data);void OnQuit(GtkWidget* pWidget, gpointer data);void OnActivate(GtkWidget* pWidget, gpointer data);void reglerHeure(GtkWidget* pWidget, gpointer data);void fermerFenetreHeure(GtkWidget *pWidget, gpointer data);void appliquerHeure(GtkWidget *pWidget, gpointer data);struct StructHeure { GtkWidget* heure; GtkWidget* minute; GtkWidget* seconde; GtkWidget* jour; GtkWidget* mois; GtkWidget* annee;};int main(int argc, char **argv){ gtk_init(&argc, &argv); //Fenetre principale GtkWidget* fenetrePrinc = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(fenetrePrinc), GTK_WIN_POS_CENTER); gtk_window_set_title(GTK_WINDOW(fenetrePrinc), "Cocot's window!"); gtk_window_set_default_size(GTK_WINDOW(fenetrePrinc), 400, 400); g_signal_connect(G_OBJECT(fenetrePrinc), "destroy", G_CALLBACK(OnDestroy), NULL); //table GtkWidget* table = gtk_table_new(10, 10, TRUE); gtk_container_add(GTK_CONTAINER(fenetrePrinc), GTK_WIDGET(table)); //Labels gchar* texteLabel = g_locale_to_utf8("<big>Cocot's <b>label</b>!</big>", -1, NULL, NULL, NULL); GtkWidget* label = gtk_label_new(texteLabel); g_free(texteLabel); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), label, 3, 6, 0, 1); //bouton GtkWidget* boutonQuit = gtk_button_new_from_stock(GTK_STOCK_QUIT); g_signal_connect(G_OBJECT(boutonQuit), "clicked", G_CALLBACK(OnQuit), (GtkWidget*)fenetrePrinc); gtk_table_attach_defaults(GTK_TABLE(table), boutonQuit, 9, 10, 9, 10); //edit et copie :) GtkWidget* edit = gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table), edit, 0, 5, 2, 3); GtkWidget* labelRetourEdit = gtk_label_new(""); gtk_table_attach_defaults(GTK_TABLE(table), labelRetourEdit, 0, 5, 3, 4); g_signal_connect(G_OBJECT(edit), "activate", G_CALLBACK(OnActivate), (GtkWidget*)labelRetourEdit); GtkWidget* deco = gtk_frame_new("Tape ton texte et \"Entrer\""); gtk_table_attach_defaults(GTK_TABLE(table), deco, 0, 5, 1, 4); //Reglage de l'heure GtkWidget* buttonHeure = gtk_button_new_with_label("Heure"); gtk_table_attach_defaults(GTK_TABLE(table), buttonHeure, 9, 10, 5, 6); g_signal_connect(G_OBJECT(buttonHeure), "clicked", G_CALLBACK(reglerHeure), (GtkWidget*)fenetrePrinc); gtk_widget_show_all(fenetrePrinc); gtk_main(); return EXIT_SUCCESS;}void OnDestroy(GtkWidget *pWidget, gpointer data){ /* Arret de la boucle evenementielle */ gtk_main_quit();}void OnQuit(GtkWidget* pWidget, gpointer data){GtkWidget* confirme = gtk_message_dialog_new(GTK_WINDOW(data), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Vraiment ?");switch(gtk_dialog_run(GTK_DIALOG(confirme))) { case GTK_RESPONSE_YES: gtk_main_quit(); break; case GTK_RESPONSE_NO: gtk_widget_destroy(confirme); break; }}void OnActivate(GtkWidget* pWidget, gpointer data){ const gchar *texte = gtk_entry_get_text(GTK_ENTRY(pWidget)); gtk_label_set_text(GTK_LABEL(data), texte); gtk_entry_set_text(GTK_ENTRY(pWidget), "");}void reglerHeure(GtkWidget* pWidget, gpointer data){ struct StructHeure Entry; //fenetre GtkWidget* fenetreHeure = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(fenetreHeure), GTK_WIN_POS_CENTER); gtk_window_set_title(GTK_WINDOW(fenetreHeure), "Reglage de l'heure"); gtk_window_set_default_size(GTK_WINDOW(fenetreHeure), 380, 300); gtk_window_set_resizable (GTK_WINDOW(fenetreHeure), TRUE); //Hbox GtkWidget* VBox = gtk_vbox_new(TRUE, 0); gtk_container_add(GTK_CONTAINER(fenetreHeure), VBox); GtkWidget* HBoxHeure = gtk_hbox_new(TRUE, 0); GtkWidget* heure = gtk_label_new("Entre l'heure"); gtk_box_pack_start(GTK_BOX(HBoxHeure), heure, TRUE, TRUE, 0); Entry.heure = gtk_entry_new_with_max_length(2); gtk_widget_set_size_request(Entry.heure, 30, 20); gtk_box_pack_start(GTK_BOX(HBoxHeure), Entry.heure, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(VBox), HBoxHeure, TRUE, TRUE, 0); GtkWidget* HBoxMinute = gtk_hbox_new(TRUE, 0); GtkWidget* minutes = gtk_label_new("Entre les minutes"); gtk_box_pack_start(GTK_BOX(HBoxMinute), minutes, TRUE, TRUE, 0); Entry.minute = gtk_entry_new_with_max_length(2); gtk_widget_set_size_request(Entry.minute, 30, 20); gtk_box_pack_start(GTK_BOX(HBoxMinute), Entry.minute, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(VBox), HBoxMinute, TRUE, TRUE, 0); GtkWidget* HBoxSeconde = gtk_hbox_new(TRUE, 0); GtkWidget* Seconde = gtk_label_new("Entre les secondes"); gtk_box_pack_start(GTK_BOX(HBoxSeconde), Seconde, TRUE, TRUE, 0); Entry.seconde = gtk_entry_new_with_max_length(2); gtk_widget_set_size_request(Entry.seconde, 30, 20); gtk_box_pack_start(GTK_BOX(HBoxSeconde), Entry.seconde, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(VBox), HBoxSeconde, TRUE, TRUE, 0); GtkWidget* HBoxJour = gtk_hbox_new(TRUE, 0); GtkWidget* jour = gtk_label_new("Entre le jour"); gtk_box_pack_start(GTK_BOX(HBoxJour), jour, TRUE, TRUE, 0); Entry.jour = gtk_entry_new_with_max_length(2); gtk_widget_set_size_request(Entry.jour, 30, 20); gtk_box_pack_start(GTK_BOX(HBoxJour), Entry.jour, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(VBox), HBoxJour, TRUE, TRUE, 0); GtkWidget* HBoxMois = gtk_hbox_new(TRUE, 0); GtkWidget* Mois = gtk_label_new("Entre le nom du mois (Anglais)"); gtk_box_pack_start(GTK_BOX(HBoxMois), Mois, TRUE, TRUE, 0); Entry.mois = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(HBoxMois), Entry.mois, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(VBox), HBoxMois, TRUE, TRUE, 0); GtkWidget* HBoxAnnee = gtk_hbox_new(TRUE, 0); GtkWidget* Annee = gtk_label_new("Entre l'annee"); gtk_box_pack_start(GTK_BOX(HBoxAnnee), Annee, TRUE, TRUE, 0); Entry.annee = gtk_entry_new_with_max_length(4); gtk_widget_set_size_request(Entry.annee, 40, 20); gtk_box_pack_start(GTK_BOX(HBoxAnnee), Entry.annee, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(VBox), HBoxAnnee, TRUE, TRUE, 0); GtkWidget* HBoxButton = gtk_hbox_new(TRUE, 0); GtkWidget* buttonOK = gtk_button_new_from_stock(GTK_STOCK_APPLY); gtk_box_pack_start(GTK_BOX(HBoxButton), buttonOK, TRUE, TRUE, 5); GtkWidget* buttonCANCEL = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_box_pack_start(GTK_BOX(HBoxButton), buttonCANCEL, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(VBox), HBoxButton, TRUE, FALSE, 0); g_signal_connect(G_OBJECT(buttonCANCEL), "clicked", G_CALLBACK(fermerFenetreHeure), (GtkWidget*)fenetreHeure); g_signal_connect(G_OBJECT(buttonOK), "clicked", G_CALLBACK(appliquerHeure), (gpointer*) &Entry); gtk_widget_show_all(fenetreHeure);}void fermerFenetreHeure(GtkWidget *pWidget, gpointer data){ gtk_widget_destroy((GtkWidget*) data);}void appliquerHeure(GtkWidget *pWidget, gpointer data){ StructHeure* Struct = (StructHeure*)data; const gchar *heure = gtk_entry_get_text(GTK_ENTRY(Struct->heure)); const gchar *minute = gtk_entry_get_text(GTK_ENTRY(Struct->minute)); const gchar *seconde = gtk_entry_get_text(GTK_ENTRY(Struct->seconde)); const gchar *jour = gtk_entry_get_text(GTK_ENTRY(Struct->jour)); const gchar *mois = gtk_entry_get_text(GTK_ENTRY(Struct->mois)); const gchar *annee = gtk_entry_get_text(GTK_ENTRY(Struct->annee));}