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
| #include <gtk/gtk.h>//indispensable pour la création de programme utilisant GTK+
#include <stdlib.h>// permet d'utiliser toutes les fonctions de la librairie
#include <string.h>//permet de mettre du texte
//****************************************************************************************************
/*declaration des variables globales (pour y avoir acces dans toutes les fonctions facilement)*/
char *memo_path = "memos.txt";//crée un pointeur de type char qui pointe sur le fichier texte memostxt
char *cat_path = "memocat.txt";//crée un pointeur de type char qui pointe sur le fichier texte memoscat.txt
GtkWidget *window = NULL;//création d'un widget window et on l'initialise à rien
GtkWidget *container = NULL;// container contiendra tous les boutons il est placé a l'interieur de window
GtkWidget *quit_button = NULL;//bouton quitter
GtkWidget *save_button = NULL;//bouton sauvegarder
GtkWidget *rem_button = NULL;//bouton supprimer
GtkWidget *clean_button = NULL;//bouton effacer
GtkWidget *label_title = NULL;//titre du mémo :un label est juste une ligne qui sera noté dans la fenetre
GtkWidget *label_main = NULL;// label qui indique le titre du corps du mémo
GtkWidget *label_combo = NULL;// label qui indique le titre de la combo box ici la catégorie
GtkWidget *label_list = NULL;// label qui indique le titre de la liste des mémo
GtkWidget *title_text = NULL;// contiendra le titre du mémo
GtkWidget *main_text_view = NULL;//contiendra le corps du mémo
GtkTextBuffer *main_text_buffer = NULL;// c'est un widget non graphique qui sert à stocker les données du mémo
GtkWidget *scroll_text = NULL;//contiendra les barres de défilement????????
GtkWidget *combo = NULL;//contiendra les catégories
GtkWidget *list = NULL;// contiendra la liste des mémos
//***************************************************************************************************
/*fonction qui affiche les informations du memo de la liste dans les differents champs*/
void get_memo(){
*file = fopen(memo_path, "r");//ouverture en lecture seule du fichier momo_path
char temp[256] = "";//mot auxiliaire contiendra les éléments voulus
char old_temp[256] = "";//autre mot auxiliaire
// permet de récupérer le texte choisi par l'utilisateur
char *title = gtk_combo_box_get_active_text(GTK_COMBO_BOX(list));
char main_text[8192];//contien le corps du mémo
int index = 0;//compteur
char cat[256];//contient une des catégories contenue dans le fichier
fgets (temp, 256, file);//lecture dans le fichier des catégories du premier mot
while (temp != NULL){
if (temp[0] == '\"'){//permet d'accepter la présence d'espace dans la désignation des cat
int i = 0;//compteur
/*verification du titre*/
while (temp[i+1] == title[i]){
i++;
}
if (i == strlen(title) && temp[i+1] == '\n'){
//met le titre dans le widget title_text en effacant le contenu précédent
gtk_entry_set_text(GTK_ENTRY (title_text), title);
/*copie du corps*/
fgets (temp, 256, file);//lecture dans le fichier des catégories
fgets (temp, 256, file);//lecture dans le fichier des catégories de l'élement suivant
i = 0;
while (temp[i] != '\"'){
if (temp[i] == '\n'){
fgets(temp, 256, file);////lecture d'un élément du fichier catégories
main_text[index++] = '\n';
i = 0;
}
main_text[index++] = temp[i];
i++;
}
main_text[index] = '\0';
//efface le contenur main_text_buffer et ecrit le contenu de main_text dedans
gtk_text_buffer_set_text (main_text_buffer, main_text, strlen(main_text));
/*copie de la categorie*/
i += 7;
int j = 0;
while (temp[i] != '\"'){
cat[j] = temp[i];
i++;
j++;
}
cat[j] = '\0';
i = 0;
//tant que tout le fichier n'a aps été mis dans la liste déroulante
while (strcmp (gtk_combo_box_get_active_text (GTK_COMBO_BOX (combo)), cat) != 0){
//récupère la catégorie sélectionnée
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), i);
i++;
}
}
}
strcpy(temp, old_temp);//old_temp est copié dans temp
fgets (temp, 256, file);// lecture de temp dans le fichier
if (strcmp(temp, old_temp) == 0){//si les deux chaines sont identiques
//ie on arrive a la fin du fichier
break;//on arete
}
}
fclose (file);//fermeture du fichier
} |
Partager