Une petite bibliothèque C soignée qui appelle de manière portable les boîtes de dialogue natives d'ouverture de fichier, de sélection de dossier et d'enregistrement. Écrivez le code de la boîte de dialogue une fois et faites-le apparaître dans des boîtes de dialogue natives sur toutes les plates-formes prises en charge. Évitez de lier de grandes dépendances comme wxWidgets et qt.
Caractéristiques:
API Lean C, bibliothèque statique – pas d'ObjC, pas de C++, pas de STL.
Licence Zlib.
Prise en charge cohérente de l'UTF-8 sur toutes les plateformes.
Syntaxe simple de filtre de fichiers universel.
Assistance payante disponible.
Prise en charge de la sélection de plusieurs fichiers.
Compatible 64 bits et 32 bits.
GCC, Clang, Xcode, Mingw et Visual Studio pris en charge.
Aucune dépendance tierce pour la construction ou la liaison.
Prise en charge de IFileDialog
moderne de Vista sous Windows.
Prise en charge des API Cocoa non obsolètes sur OS X.
Boîte de dialogue GTK3 sous Linux.
Prise en charge facultative de Zenity sous Linux pour éviter de lier GTK.
Testé, fonctionne aux côtés de http://www.libsdl.org sur toutes les plateformes, pour les développeurs de jeux.
#include <nfd.h>#include <stdio.h>#include <stdlib.h>int main( void ) {nfdchar_t *outPath = NULL;nfdresult_t résultat = NFD_OpenDialog( NULL, NULL, &outPath ); if ( résultat == NFD_OKAY ) {puts("Succès!");puts(outPath);free(outPath); }else if ( result == NFD_CANCEL ) {puts("L'utilisateur a appuyé sur Annuler."); }else {printf("Erreur : %sn", NFD_GetError() ); }retourne 0 ; }
Voir l'API auto-documentée NFD.h pour plus d'options.
Les incréments de version majeurs indiquent un départ de l'API ou de l'ABI.
Les incréments de version mineurs indiquent des départs de construction ou triviaux.
Les incréments de la version Micro sont simplement recompilés et intégrés.
libérer | Quoi de neuf | date |
---|---|---|
1.0.0 | initial | octobre 2014 |
1.1.0 | prémake5; scons obsolète | août 2016 |
1.1.1 | support mingw, correctifs de construction | août 2016 |
1.1.2 | test_pickfolder() ajouté | août 2016 |
1.1.3 | backend Zenity Linux ajouté | novembre 2017 |
correction du type de caractère dans les décls | novembre 2017 | |
1.1.4 | réparer les memleaks win32 | décembre 2018 |
améliorer la gestion des erreurs win32 | décembre 2018 | |
Macos corrige un bug de focus | décembre 2018 | |
1.1.5 | win32 fix com réinitialiser | août 2019 |
1.1.6 | correction d'un bug du filtre osx | août 2019 |
supprimer les scons obsolètes | août 2019 | |
Correction de la compilation Mingw | août 2019 | |
-Nettoyage des avertissements Wextra | août 2019 |
NFD utilise les Makefiles et les fichiers de projet IDE générés par Premake5. Les fichiers de projet générés sont archivés sous build/
vous n'avez donc pas besoin de télécharger et d'utiliser Premake dans la plupart des cas.
Si vous devez exécuter Premake5 directement, une documentation supplémentaire sur la construction est disponible.
Auparavant, NFD utilisait SCons pour construire. Depuis la version 1.1.6, la prise en charge des SCons a été entièrement supprimée.
nfd.a
sera construit pour les versions de version et nfd_d.a
sera construit pour les versions de débogage.
Le makefile propose jusqu'à quatre options, avec release_x64
par défaut.
make config=release_x86 make config=release_x64 make config=debug_x86 make config=debug_x64
Ajoutez src/include
à votre chemin de recherche d'inclusion.
Ajoutez nfd.lib
ou nfd_d.lib
à la liste des bibliothèques statiques avec lesquelles établir un lien (pour la version ou le débogage, respectivement).
Ajoutez build/<debug|release>/<arch>
au chemin de recherche de la bibliothèque.
apt-get libgtk-3-dev
installe la dépendance gtk pour la compilation de la bibliothèque.
Sous Linux, vous avez la possibilité de compiler et de créer une liaison avec GTK. Si vous l'utilisez, la méthode recommandée pour compiler est d'inclure les arguments de pkg-config --cflags --libs gtk+-3.0
.
Alternativement, vous pouvez utiliser le backend Zenity en exécutant le Makefile dans build/gmake_linux_zenity
. Zenity exécute la boîte de dialogue dans son propre espace d'adressage, mais nécessite que l'utilisateur ait Zenity correctement installé et configuré sur son système.
Sous Mac OS, ajoutez AppKit
à la liste des frameworks.
Sous Windows, assurez-vous d'établir un lien vers comctl32.lib
.
Voir NFD.h
pour les appels API. Voir tests/*.c
pour un exemple de code.
Après la compilation, build/bin
contient les programmes de test compilés. Le sous-répertoire approprié sous build/lib
contient la bibliothèque construite.
Il existe une forme de filtrage de fichiers dans chaque API de dialogue de fichiers, mais aucun moyen cohérent pour la prendre en charge. NFD prend en charge le filtrage des fichiers par groupes d'extensions, fournissant ses propres descriptions (le cas échéant) pour les extensions.
Un filtre générique est toujours ajouté à chaque boîte de dialogue.
;
Commencez un nouveau filtre.
,
Ajoutez un type distinct au filtre.
txt
Le filtre par défaut concerne les fichiers texte. Il existe une option générique dans une liste déroulante.
png,jpg;psd
Le filtre par défaut concerne les fichiers png et jpg. Un deuxième filtre est disponible pour les fichiers psd. Il existe une option générique dans une liste déroulante.
Caractère générique NULL
uniquement.
Voir test_opendialogmultiple.c.
J'accepte les correctifs de code de qualité ou je résoudrai ces problèmes et d'autres via l'assistance. Voir contribuer pour plus de détails.
Aucune prise en charge des boîtes de dialogue héritées de Windows XP telles que GetOpenFileName
.
Aucune prise en charge des noms de filtres de fichiers -- ex : "Fichiers image" (*.png, *.jpg). Les filtres sans nom sont toutefois pris en charge.
La gestion des erreurs d'exécution du processus de l'implémentation GTK Zenity ne gère pas correctement de nombreux cas d'erreur, choisissant d'abandonner plutôt que de nettoyer et de revenir.
GTK 3 envoie un avertissement par boîte de dialogue créée.
Copyright © 2014-2019 Frogtoss Games, Inc. La LICENCE de fichiers couvre tous les fichiers de ce dépôt.
Boîte de dialogue de fichier natif par Michael Labbe [email protected]
Tomasz Konojacki pour microutf8
Denis Kolodin pour le soutien de Mingw.
Tom Mason pour le support Zenity.
Un soutien dirigé pour ce travail est disponible auprès de l'auteur original dans le cadre d'un accord payant.
Contactez Jeux de lancer de grenouille.