1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#include <stdlib.h>
#include <gtk/gtk.h>
#include "prototype.h"
// Programme principal
int main(int argc, char **argv)
{
// Initialisation du pointeur de la fenêtre principale
GtkWidget * Fenetre = NULL;
GtkWidget * codeBarre = NULL;
GtkWidget * boutonAccesJeu = NULL;
GtkWidget * boiteABoutonsVerticale = NULL;
gchar* demarrer = NULL;
/* Initialisation de GTK+ */
gtk_init(&argc, &argv);
// Création de la fenêtre
Fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
// On donne un titre à la fenêtre
gtk_window_set_title(GTK_WINDOW(Fenetre), "Gestionnaire de commandes Code-Barre");
// On définit la taille par défaut
gtk_window_set_default_size(GTK_WINDOW(Fenetre), 400, 200);
// On place la fenêtre au moment de son appel
gtk_window_set_position(GTK_WINDOW(Fenetre), GTK_WIN_POS_CENTER);
// Création de la boîte verticale
boiteABoutonsVerticale = gtk_vbox_new(TRUE, 0);
gtk_container_add(GTK_CONTAINER(Fenetre), boiteABoutonsVerticale);
// Formatagre de la chaîne
demarrer = g_locale_to_utf8("Démarrer la partie", -1, NULL, NULL, NULL);
// Création du bouton d'accès au jeu
boutonAccesJeu = gtk_button_new_with_label(demarrer);
// Création du texte de bienvenue
codeBarre = gtk_label_new("<span font_family=\"Arial Black\" size=\"xx-large\" foreground=\"#000000\">Code-Barre</span>\nBienvenue dans ce programme ");
gtk_label_set_use_markup(GTK_LABEL(codeBarre), TRUE);
gtk_label_set_justify(GTK_LABEL(codeBarre), GTK_JUSTIFY_CENTER);
// Ajout des boutons à la GTK BOX
gtk_box_pack_start(GTK_BOX(boiteABoutonsVerticale), codeBarre, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(boiteABoutonsVerticale), boutonAccesJeu, FALSE, FALSE, 0);
// Affichage de la fenêtre
gtk_widget_show_all(Fenetre);
// En attente d'un évènement
g_signal_connect(G_OBJECT(Fenetre), "destroy", G_CALLBACK(auRevoir), NULL);
g_signal_connect(G_OBJECT(boutonAccesJeu), "clicked", G_CALLBACK(recuperationDuPseudo), G_OBJECT(Fenetre));
// Lancement de la boucle infinie
gtk_main();
// Libération de la mémoire liée à l'utilisation du texte converti
g_free(demarrer);
return EXIT_SUCCESS;
}
// Récupération du pseudo nécessaire au bon fonctionnement du programme
void recuperationDuPseudo(GtkWidget *Fenetre, gpointer data)
{
// Initialisation de toutes les variables nécessaires
GtkWidget * recupPseudo = NULL;
GtkWidget * box = NULL;
GtkWidget * explication = NULL;
// GtkWidget * champ = NULL;
// GtkWidget * boutonValidation = NULL;
gchar * titreDeLaFenetre = NULL;
gchar * explicationAConvertir = NULL;
// Conversion des chaînes accentuées.
titreDeLaFenetre = g_locale_to_utf8("Récupération du pseudo", -1, NULL, NULL, NULL);
explicationAConvertir = g_locale_to_utf8("Avant de commencer la partie, merci de renseigner votre pseudo.\nAfin que nous puissions mieux vous féliciter (si vous finissez avec succès la partie sinon c'est nada.", -1, NULL, NULL, NULL);
// Création de la fenêtre
recupPseudo = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(recupPseudo), titreDeLaFenetre);
gtk_window_set_default_size(GTK_WINDOW(recupPseudo), 500, 150);
gtk_window_set_position(GTK_WINDOW(recupPseudo), GTK_WIN_POS_CENTER);
// Création de la box et ajout à la fenêtre
box = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(recupPseudo), box);
// Création des widgets
explication = gtk_label_new(explicationAConvertir);
gtk_box_pack_start(GTK_BOX(box), explication, FALSE, FALSE, 0);
// On affiche l'ensemble de la fenêtre
gtk_widget_show_all(recupPseudo);
g_signal_connect(G_OBJECT(recupPseudo), "delete-event", G_CALLBACK(auRevoir), NULL);
g_free(titreDeLaFenetre);
g_free(explicationAConvertir);
}
void auRevoir(GtkWidget *widget, gpointer data)
{
GtkWidget * FenetreDeux = NULL;
GtkWidget * Merci = NULL;
gchar* TexteConverti = NULL;
FenetreDeux = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(FenetreDeux), "Au revoir !");
gtk_window_set_default_size(GTK_WINDOW(FenetreDeux), 400, 100);
gtk_window_set_position(GTK_WINDOW(FenetreDeux), GTK_WIN_POS_CENTER);
TexteConverti = g_locale_to_utf8("Merci d'avoir utilisé ce programme.\nAussi modeste soit-il.\nCliquez sur la croix de cette fenêtre pour fermer le programme.", -1, NULL, NULL, NULL);
Merci = gtk_label_new(TexteConverti);
g_free(TexteConverti);
gtk_container_add(GTK_CONTAINER(FenetreDeux), Merci);
gtk_widget_show_all(FenetreDeux);
g_signal_connect(G_OBJECT(FenetreDeux), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
g_free(TexteConverti);
} |
Partager