Créer la fonction principale et les éléments d'interface utilisateur
Maintenant, créons la fonction main
et configurons l'interface utilisateur.
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *grid;
GtkWidget *start_stop_button;
GtkWidget *reset_button;
gtk_init(&argc, &argv); // Initialiser GTK
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Stopwatch"); // Définir le titre de la fenêtre
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200); // Définir la taille par défaut de la fenêtre
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); // Connecter l'événement de fermeture de la fenêtre
grid = gtk_grid_new(); // Créer une mise en page grille
gtk_container_add(GTK_CONTAINER(window), grid); // Ajouter la grille à la fenêtre
label = gtk_label_new("00:00"); // Créer une étiquette GTK affichant initialement "00:00"
gtk_widget_set_hexpand(label, TRUE); // Autoriser l'étiquette à s'étendre horizontalement
gtk_widget_set_vexpand(label, TRUE); // Autoriser l'étiquette à s'étendre verticalement
gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1); // Ajouter l'étiquette à la grille
start_stop_button = gtk_button_new_with_label("Start"); // Créer un bouton avec l'étiquette "Start"
gtk_widget_set_hexpand(start_stop_button, TRUE); // Autoriser le bouton à s'étendre horizontalement
gtk_widget_set_vexpand(start_stop_button, TRUE); // Autoriser le bouton à s'étendre verticalement
g_signal_connect(G_OBJECT(start_stop_button), "clicked", G_CALLBACK(start_stop_button_clicked), NULL); // Connecter l'événement de clic sur le bouton
gtk_grid_attach(GTK_GRID(grid), start_stop_button, 0, 1, 1, 1); // Ajouter le bouton à la grille
reset_button = gtk_button_new_with_label("Reset"); // Créer un bouton avec l'étiquette "Reset"
gtk_widget_set_hexpand(reset_button, TRUE); // Autoriser le bouton à s'étendre horizontalement
gtk_widget_set_vexpand(reset_button, TRUE); // Autoriser le bouton à s'étendre verticalement
g_signal_connect(G_OBJECT(reset_button), "clicked", G_CALLBACK(reset_button_clicked), NULL); // Connecter l'événement de clic sur le bouton
gtk_grid_attach(GTK_GRID(grid), reset_button, 0, 2, 1, 1); // Ajouter le bouton à la grille
gtk_widget_show_all(window); // Afficher la fenêtre et tous ses widgets enfants
timer_id = g_timeout_add(1000, timer_callback, NULL); // Créer un minuteur qui se déclenche toutes les 1000 ms (1 seconde) et appelle timer_callback
gtk_main(); // Démarrer la boucle principale d'événements GTK
return 0;
}
- La fonction
main
configure la fenêtre GTK, les étiquettes, les boutons et leurs gestionnaires d'événements de clic.