Outils pour utilisateurs

Outils du site


allegro:addon_dialog

**Ceci est une ancienne révision du document !** ----

A PCRE internal error occured. This might be caused by a faulty plugin

===== Dialogs Natifs ===== ==== Utilité ==== Les dialogs natifs sont très utiles, déjà ils sont accessibles sans que allegro soit initialisé, ce qui permet d'afficher les erreurs (le dialog **textlog** est très pratique pour ça). Ensuite ils sont très rapides à implémenter, de quoi nous éviter bien des peines vu qu'on a pas à le coder dans notre jeu. On dispose de 3 types de dialogs : * FileChooser — Pour Ouvrer/Sauver un fichier * MessageBox — Affiche un message avec un ou plusieurs boutons * TextLog — Affiche un log (texte plutôt long, avec uns scrollbar) ==== Exemples ==== Il faut inclure ce header : <code c> #include <allegro5/allegro_native_dialog.h> </code> === MessageBox === C'est de loin le plus simple à utiliser, il suffit d'appeler la fonction **al_show_native_message_box** (attention c'est une fonction bloquante) : <code c> int res; res = al_show_native_message_box(al_get_current_display(), "Question", "Vous n'avez pas enregistré", "Voulez-vous quitter ?", "oui|non", ALLEGRO_MESSAGEBOX_QUESTION | ALLEGRO_MESSAGEBOX_YES_NO); </code> Le premier paramètre est le display dans lequel sera centré le dialog, ce paramètre peut être **NULL**.\\ Le second est le titre (en général mis dans la barre de la fenêtre).\\ Le troisième est l'en-tête du message.\\ Le quatrième est le message en lui-même.\\ Le cinquième est le texte qui est dans les boutons. S'il y a plusieurs boutons, on séparera le texte de chaque bouton par un **|** (barre verticale).\\ Le dernier est un bouléen avec différents flags utilisables et combinables : * **ALLEGRO_MESSAGEBOX_WARN** — Ce message est un warning, en général met une icône dans le dialog. * **ALLEGRO_MESSAGEBOX_ERROR** — Ce message est une erreur, en général met une icône dans le dialog. * **ALLEGRO_MESSAGEBOX_QUESTION** — Ce message est une question, en général met une icône dans le dialog. * **ALLEGRO_MESSAGEBOX_OK_CANCEL** — Le dialog devra comporter un bouton OK et un Cancel. * **ALLEGRO_MESSAGEBOX_YES_NO** — Le dialog devra comporter un bouton Yes et un No. Si l'un des deux derniers flags est utilisé, la fonction retourne 1 si l'utilisateur clique sur le bouton positif, 2 s'il clique sur le bouton négatif et 0 s'il ferme le dialog avec la croix (ou la touche ECHAP). la fonction **al_get_current_display** renvoit NULL s'il n'y a aucun display et peut être utilisée sans qu'allegro soit initialisée. === FileChooser === Il faut d'abord initialiser le dialog, l'afficher puis le détruire. <code c> ALLEGRO_FILECHOOSER *fchooser; ALLEGRO_PATH *path; char * file; path = al_get_standard_path(ALLEGRO_RESOURCES_PATH); fchooser = al_create_native_file_dialog(al_path_cstr(path, '/'), "Ouvrir une image", "*.bmp;*.jpg;*.png;*.*", ALLEGRO_FILECHOOSER_FILE_MUST_EXIST); al_destroy_path(path); if (al_show_native_file_dialog(al_get_current_display(), fchooser)){ if (al_get_native_file_dialog_count(fchooser) == 1) { file = al_get_native_file_dialog_path(fchooser, 0); } } puts(file); al_destroy_native_file_dialog(fchooser); </code> Pour **al_create_native_file_dialog**: Le premier paramètre est le chemin ouvert par défaut par le dialog.\\ Le second est le titre de la fenêtre du dialog.\\ Le troisième est la liste des formats acceptés (par extensions).\\ Le dernier est un booléen avec les différents flags pour configurer notre dialog : * **ALLEGRO_FILECHOOSER_FILE_MUST_EXIST** — Autorise seulement la sélection d'un fichier existant. * **ALLEGRO_FILECHOOSER_SAVE** — Dialog de sauvegarde (si l'OS a un dialog dédié à cette tâche). * **ALLEGRO_FILECHOOSER_FOLDER** — Pour ouvrir uniquement un dossier. * **ALLEGRO_FILECHOOSER_PICTURES** — Pour ouvrir des images. * **ALLEGRO_FILECHOOSER_SHOW_HIDDEN** — Pour afficher les fichiers cachés. * **ALLEGRO_FILECHOOSER_MULTIPLE** — Autorise la sélection de multiples fichiers. La fonction renvoit NULL en cas d’erreur. **al_show_native_file_dialog** Prend en paramètre un Display (peut être NULL), ainsi que le disalog à afficher.\\ Elle renvoit 0 en cas d'erreur. **al_get_native_file_dialog_count** Renvoit le nombre de paths choisis par l'utilisateur. **al_get_native_file_dialog_path** Renvoit le path en fonction de l'index, comprit entre 0 et la valeur renvoyée par la fonction précédente. Vous devez utiliser la string **file** avant de détruire le dialog avec **al_destroy_native_file_dialog** !! === TextLog === Il faut créer le dialog, le feed, et le fermer. <code c> ALLEGRO_TEXTLOG * log; int value; if (!al_open_native_text_log("Console", ALLEGRO_TEXTLOG_NO_CLOSE | ALLEGRO_TEXTLOG_MONOSPACE)) { /* Failed */ } /* ... */ al_append_native_text_log(log, "Affichage de la valeur %d", value); /* ... */ al_close_native_text_log(log); </code> Le premier argument de **al_open_native_text_log** est le titre de la fenêtre, le second argument est un booléen : * **ALLEGRO_TEXTLOG_NO_CLOSE** — Pour ne pas avoir de croix (si possible) * **ALLEGRO_TEXTLOG_MONOSPACE** — Pour que chaque caractère aient la même largeur Elle renvoit false en cas d'échec.

allegro/addon_dialog.1323901297.txt.gz · Dernière modification: 2011/12/14 23:21 par mrhide