diff --git a/Makefile.dep b/Makefile.dep index 8d84a782..eca4088e 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -13,11 +13,11 @@ special.o: special.c const.h struct.h global.h loadsave.h graph.h \ moteur.h boutons.o: boutons.c const.h struct.h global.h loadsave.h divers.h \ graph.h moteur.h readline.h files.h init.h boutons.h operatio.h pages.h \ - erreurs.h readini.h saveini.h shade.h io.h + erreurs.h readini.h saveini.h shade.h io.h aide.h palette.o: palette.c const.h struct.h global.h loadsave.h divers.h \ graph.h moteur.h readline.h boutons.h pages.h aide.o: aide.c const.h struct.h global.h loadsave.h divers.h graph.h \ - moteur.h tables_aide.h + moteur.h tables_aide.h aide.h operatio.o: operatio.c const.h struct.h global.h loadsave.h divers.h \ moteur.h graph.h operatio.h boutons.h pages.h erreurs.h pages.o: pages.c global.h struct.h const.h loadsave.h pages.h graph.h \ diff --git a/aide.c b/aide.c index 290e185b..ed6c9b0f 100644 --- a/aide.c +++ b/aide.c @@ -28,6 +28,7 @@ #include "graph.h" #include "moteur.h" #include "tables_aide.h" +#include "aide.h" #include @@ -150,8 +151,6 @@ void Scroller_aide(void) void Bouton_Aide(void) { - short Bouton_clicke; - short Nb_lignes; short Numero_bouton; // Aide contextuelle @@ -160,12 +159,37 @@ void Bouton_Aide(void) Numero_bouton = Numero_bouton_sous_souris(); if (Numero_bouton != -1) { - Section_d_aide_en_cours = 4 + Numero_bouton; - Position_d_aide_en_cours = 0; + Fenetre_aide(Numero_bouton, NULL); + return; } } - + Fenetre_aide(-1, NULL); +} +// Ouvre l'ecran d'aide. Passer -1 pour la section par défaut (ou derniere,) +// Ou un nombre de l'enumération NUMEROS_DE_BOUTONS pour l'aide contextuelle. +void Fenetre_aide(int Section, const char *Sous_section) +{ + short Bouton_clicke; + short Nb_lignes; + + if (Section!=-1) + { + Section_d_aide_en_cours = 4 + Section; + Position_d_aide_en_cours = 0; + } Nb_lignes=Table_d_aide[Section_d_aide_en_cours].Nombre_de_lignes; + if (Section!=-1 && Sous_section!=NULL) + { + int Indice=0; + for (Indice=0; Indice @@ -5343,6 +5344,46 @@ void Bouton_Effets(void) if (Touche==SDLK_ESCAPE) Bouton_clicke=11; + else if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche) + { + // Aide contextuelle + switch(Fenetre_Numero_bouton_clicke()) + { + case 1: + Fenetre_aide(BOUTON_EFFETS, "SHADE"); + break; + case 2: + Fenetre_aide(BOUTON_EFFETS, "QUICK SHADE"); + break; + case 3: + Fenetre_aide(BOUTON_EFFETS, "TRANSPARENCY"); + break; + case 4: + Fenetre_aide(BOUTON_EFFETS, "SMOOTH"); + break; + case 5: + Fenetre_aide(BOUTON_EFFETS, "SMEAR"); + break; + case 6: + Fenetre_aide(BOUTON_EFFETS, "STENCIL"); + break; + case 7: + Fenetre_aide(BOUTON_EFFETS, "MASK"); + break; + case 8: + Fenetre_aide(BOUTON_EFFETS, "SIEVE"); + break; + case 9: + Fenetre_aide(BOUTON_EFFETS, "GRID"); + break; + case 10: + Fenetre_aide(BOUTON_EFFETS, "TILING"); + break; + default: + Fenetre_aide(BOUTON_EFFETS, NULL); + } + continue; + } switch (Bouton_clicke) { diff --git a/global.h b/global.h index d7b0129f..f999dace 100644 --- a/global.h +++ b/global.h @@ -327,24 +327,44 @@ GLOBAL word Menu_Taille_couleur; // Taille d'une couleur de la palette du menu // Données sur la fenêtre de menu -GLOBAL byte Fenetre; - -GLOBAL word Fenetre_Pos_X; // Position du bord gauche de la fenêtre dans l'écran -GLOBAL word Fenetre_Pos_Y; // Position du bord haut de la fenêtre dans l'écran -GLOBAL word Fenetre_Largeur; // Largeur de la fenêtre -GLOBAL word Fenetre_Hauteur; // Hauteur de la fenêtre +GLOBAL byte Fenetre; // Nombre de fenetres empilées. 0 si pas de fenetre ouverte. GLOBAL byte Menu_visible_avant_fenetre; // Le menu était visible avant d'ouvir une fenêtre GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonnée du menu avant d'ouvrir une fenêtre GLOBAL byte Cacher_pinceau_avant_fenetre;// Le pinceau étatit déjà caché avant l'ouverture de la fenetre? -GLOBAL word Nb_boutons_fenetre; -GLOBAL struct Fenetre_Bouton_normal * Fenetre_Liste_boutons_normal; -GLOBAL struct Fenetre_Bouton_palette * Fenetre_Liste_boutons_palette; -GLOBAL struct Fenetre_Bouton_scroller * Fenetre_Liste_boutons_scroller; -GLOBAL struct Fenetre_Bouton_special * Fenetre_Liste_boutons_special; -GLOBAL int Fenetre_Attribut1; -GLOBAL int Fenetre_Attribut2; +GLOBAL word Pile_Fenetre_Pos_X[8]; // Position du bord gauche de la fenêtre dans l'écran +#define Fenetre_Pos_X Pile_Fenetre_Pos_X[Fenetre-1] + +GLOBAL word Pile_Fenetre_Pos_Y[8]; // Position du bord haut de la fenêtre dans l'écran +#define Fenetre_Pos_Y Pile_Fenetre_Pos_Y[Fenetre-1] + +GLOBAL word Pile_Fenetre_Largeur[8]; // Largeur de la fenêtre +#define Fenetre_Largeur Pile_Fenetre_Largeur[Fenetre-1] + +GLOBAL word Pile_Fenetre_Hauteur[8]; // Hauteur de la fenêtre +#define Fenetre_Hauteur Pile_Fenetre_Hauteur[Fenetre-1] + +GLOBAL word Pile_Nb_boutons_fenetre[8]; +#define Nb_boutons_fenetre Pile_Nb_boutons_fenetre[Fenetre-1] + +GLOBAL struct Fenetre_Bouton_normal * Pile_Fenetre_Liste_boutons_normal[8]; +#define Fenetre_Liste_boutons_normal Pile_Fenetre_Liste_boutons_normal[Fenetre-1] + +GLOBAL struct Fenetre_Bouton_palette * Pile_Fenetre_Liste_boutons_palette[8]; +#define Fenetre_Liste_boutons_palette Pile_Fenetre_Liste_boutons_palette[Fenetre-1] + +GLOBAL struct Fenetre_Bouton_scroller * Pile_Fenetre_Liste_boutons_scroller[8]; +#define Fenetre_Liste_boutons_scroller Pile_Fenetre_Liste_boutons_scroller[Fenetre-1] + +GLOBAL struct Fenetre_Bouton_special * Pile_Fenetre_Liste_boutons_special[8]; +#define Fenetre_Liste_boutons_special Pile_Fenetre_Liste_boutons_special[Fenetre-1] + +GLOBAL int Pile_Fenetre_Attribut1[8]; +#define Fenetre_Attribut1 Pile_Fenetre_Attribut1[Fenetre-1] + +GLOBAL int Pile_Fenetre_Attribut2[8]; +#define Fenetre_Attribut2 Pile_Fenetre_Attribut2[Fenetre-1] diff --git a/moteur.c b/moteur.c index 34ccb007..6153f21b 100644 --- a/moteur.c +++ b/moteur.c @@ -1026,14 +1026,17 @@ void Ouvrir_fenetre(word Largeur,word Hauteur, char * Titre) Print_dans_fenetre((Largeur-(strlen(Titre)<<3))>>1,3,Titre,CM_Noir,CM_Clair); - Menu_visible_avant_fenetre=Menu_visible; - Menu_visible=0; - Menu_Ordonnee_avant_fenetre=Menu_Ordonnee; - Menu_Ordonnee=Hauteur_ecran; - Forme_curseur_avant_fenetre=Forme_curseur; - Forme_curseur=FORME_CURSEUR_FLECHE; - Cacher_pinceau_avant_fenetre=Cacher_pinceau; - Cacher_pinceau=1; + if (Fenetre == 1) + { + Menu_visible_avant_fenetre=Menu_visible; + Menu_visible=0; + Menu_Ordonnee_avant_fenetre=Menu_Ordonnee; + Menu_Ordonnee=Hauteur_ecran; + Forme_curseur_avant_fenetre=Forme_curseur; + Forme_curseur=FORME_CURSEUR_FLECHE; + Cacher_pinceau_avant_fenetre=Cacher_pinceau; + Cacher_pinceau=1; + } // Initialisation des listes de boutons de la fenêtre Fenetre_Liste_boutons_normal =NULL; @@ -1059,8 +1062,6 @@ void Fermer_fenetre(void) Effacer_curseur(); - Cacher_pinceau=Cacher_pinceau_avant_fenetre; - while (Fenetre_Liste_boutons_normal) { Temp1=Fenetre_Liste_boutons_normal->Next; @@ -1086,18 +1087,23 @@ void Fermer_fenetre(void) Fenetre_Liste_boutons_special=Temp4; } - Fenetre--; - Curseur_dans_menu_precedent=0; // il faut rafficher le libellé dans la barre - // d'outils si le curseur est sur une icône. - - Calculer_coordonnees_pinceau(); - - Menu_Ordonnee=Menu_Ordonnee_avant_fenetre; - Menu_visible=Menu_visible_avant_fenetre; - Forme_curseur=Forme_curseur_avant_fenetre; - + if (Fenetre == 1) + { + + Cacher_pinceau=Cacher_pinceau_avant_fenetre; + + Curseur_dans_menu_precedent=0; // il faut rafficher le libellé dans la barre + // d'outils si le curseur est sur une icône. + + Calculer_coordonnees_pinceau(); + + Menu_Ordonnee=Menu_Ordonnee_avant_fenetre; + Menu_visible=Menu_visible_avant_fenetre; + Forme_curseur=Forme_curseur_avant_fenetre; + } + // Restore de ce que la fenêtre cachait - Restaure_fond(Fond_fenetre[Fenetre], Fenetre_Pos_X, Fenetre_Pos_Y, Fenetre_Largeur, Fenetre_Hauteur); + Restaure_fond(Fond_fenetre[Fenetre-1], Fenetre_Pos_X, Fenetre_Pos_Y, Fenetre_Largeur, Fenetre_Hauteur); SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Fenetre_Largeur*Menu_Facteur_X,Fenetre_Hauteur*Menu_Facteur_Y); //Afficher_ecran(); @@ -1106,8 +1112,8 @@ void Fermer_fenetre(void) Touche=0; Mouse_K=0; - // On (re)passe dans le clavier américain - Clavier_americain(); + Fenetre--; + } diff --git a/moteur.h b/moteur.h index 4c824984..0a0d20ca 100644 --- a/moteur.h +++ b/moteur.h @@ -64,3 +64,4 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click); short Fenetre_Bouton_clicke(void); int Numero_bouton_sous_souris(void); +short Fenetre_Numero_bouton_clicke(void); diff --git a/tables_aide.h b/tables_aide.h index b7d58315..94d397e0 100644 --- a/tables_aide.h +++ b/tables_aide.h @@ -1293,7 +1293,7 @@ static const char * TableAideEffets[] = AIDE_TEXTE("white pixels.") AIDE_TEXTE("") AIDE_TEXTE("") - AIDE_TITRE("TRANSPARENT") + AIDE_TITRE("TRANSPARENCY") AIDE_TEXTE(" This allows to mix the color(s) of the") AIDE_TEXTE("paintbrush with the colors of the picture.") AIDE_TEXTE("It's used to make transparency effects like")