Eine kleine, übersichtliche C-Bibliothek, die portabel native Dialoge zum Öffnen von Dateien, zum Auswählen von Ordnern und zum Speichern aufruft. Schreiben Sie einmal Dialogcode und lassen Sie ihn auf allen unterstützten Plattformen als native Dialoge anzeigen. Vermeiden Sie die Verknüpfung großer Abhängigkeiten wie wxWidgets und qt.
Merkmale:
Lean C API, statische Bibliothek – kein ObjC, kein C++, kein STL.
Zlib-lizenziert.
Konsistente UTF-8-Unterstützung auf allen Plattformen.
Einfache universelle Dateifiltersyntax.
Bezahlter Support verfügbar.
Unterstützung für die Auswahl mehrerer Dateien.
64-Bit- und 32-Bit-freundlich.
GCC, Clang, Xcode, Mingw und Visual Studio werden unterstützt.
Keine Abhängigkeiten von Dritten beim Erstellen oder Verknüpfen.
Unterstützung für das moderne IFileDialog
von Vista unter Windows.
Unterstützung für nicht veraltete Cocoa-APIs unter OS X.
GTK3-Dialog unter Linux.
Optionale Zenity-Unterstützung unter Linux, um die Verknüpfung von GTK zu vermeiden.
Getestet, funktioniert zusammen mit http://www.libsdl.org auf allen Plattformen für die Spieleentwickler da draußen.
#include <nfd.h>#include <stdio.h>#include <stdlib.h>int main( void ) {nfdchar_t *outPath = NULL;nfdresult_t result = NFD_OpenDialog( NULL, NULL, &outPath ); if ( result == NFD_OKAY ) {puts("Success!");puts(outPath);free(outPath); }else if ( result == NFD_CANCEL ) {puts("Benutzer hat auf Abbrechen gedrückt."); }else {printf("Fehler: %sn", NFD_GetError() ); }return 0; }
Weitere Optionen finden Sie in der selbstdokumentierenden API NFD.h.
Inkremente der Hauptversion kennzeichnen eine API- oder ABI-Abweichung.
Kleinere Versionserhöhungen kennzeichnen Build- oder triviale Abweichungen.
Mikroversionsinkremente werden einfach neu kompiliert und eingefügt.
freigeben | was ist neu | Datum |
---|---|---|
1.0.0 | anfänglich | Okt. 2014 |
1.1.0 | premake5; Scons veraltet | August 2016 |
1.1.1 | Mingw-Unterstützung, Build-Korrekturen | August 2016 |
1.1.2 | test_pickfolder() hinzugefügt | August 2016 |
1.1.3 | Zenity-Linux-Backend hinzugefügt | November 2017 |
Korrigieren Sie den Char-Typ in Decls | November 2017 | |
1.1.4 | Win32-Memleaks beheben | Dezember 2018 |
Verbessern Sie die Win32-Fehlerbehandlung | Dezember 2018 | |
macOS behebt Fokusfehler | Dezember 2018 | |
1.1.5 | win32 fix com neu initialisieren | August 2019 |
1.1.6 | Fehler im OSX-Filter beheben | August 2019 |
Entfernen Sie veraltete Scons | August 2019 | |
Korrigieren Sie die Mingw-Kompilierung | August 2019 | |
-Wextra Warnbereinigung | August 2019 |
NFD verwendet Premake5-generierte Makefiles und IDE-Projektdateien. Die generierten Projektdateien werden unter build/
eingecheckt, sodass Sie Premake in den meisten Fällen nicht herunterladen und verwenden müssen.
Wenn Sie Premake5 direkt ausführen müssen, ist weitere Build-Dokumentation verfügbar.
Zuvor nutzte NFD SCons zum Erstellen. Ab 1.1.6 wurde die SCons-Unterstützung vollständig entfernt.
nfd.a
wird für Release-Builds erstellt und nfd_d.a
wird für Debug-Builds erstellt.
Das Makefile bietet bis zu vier Optionen, wobei release_x64
die Standardeinstellung ist.
make config=release_x86 make config=release_x64 make config=debug_x86 make config=debug_x64
Fügen Sie src/include
zu Ihrem Include-Suchpfad hinzu.
Fügen Sie nfd.lib
oder nfd_d.lib
zur Liste der statischen Bibliotheken hinzu, mit denen verknüpft werden soll (zur Veröffentlichung bzw. zum Debuggen).
Fügen Sie build/<debug|release>/<arch>
zum Suchpfad der Bibliothek hinzu.
apt-get libgtk-3-dev
installiert die GTK-Abhängigkeit für die Bibliothekskompilierung.
Unter Linux haben Sie die Möglichkeit, gegen GTK zu kompilieren und zu verknüpfen. Wenn Sie es verwenden, besteht die empfohlene Kompilierungsmethode darin, die Argumente von pkg-config --cflags --libs gtk+-3.0
einzuschließen.
Alternativ können Sie das Zenity-Backend verwenden, indem Sie das Makefile in build/gmake_linux_zenity
ausführen. Zenity führt den Dialog in seinem eigenen Adressraum aus, erfordert jedoch, dass der Benutzer Zenity korrekt auf seinem System installiert und konfiguriert hat.
Fügen Sie unter Mac OS AppKit
zur Liste der Frameworks hinzu.
Stellen Sie unter Windows sicher, dass Sie eine Verknüpfung mit comctl32.lib
herstellen.
Siehe NFD.h
für API-Aufrufe. Beispielcode finden Sie unter tests/*.c
.
Nach dem Kompilieren enthält build/bin
kompilierte Testprogramme. Das entsprechende Unterverzeichnis unter build/lib
enthält die erstellte Bibliothek.
In jeder Dateidialog-API gibt es eine Form der Dateifilterung, aber keine einheitliche Möglichkeit, diese zu unterstützen. NFD bietet Unterstützung für das Filtern von Dateien nach Erweiterungsgruppen und stellt (sofern zutreffend) eigene Beschreibungen für die Erweiterungen bereit.
Zu jedem Dialog wird immer ein Platzhalterfilter hinzugefügt.
;
Starten Sie einen neuen Filter.
,
Fügen Sie dem Filter einen separaten Typ hinzu.
txt
Der Standardfilter ist für Textdateien. In einem Dropdown-Menü gibt es eine Platzhalteroption.
png,jpg;psd
Der Standardfilter gilt für PNG- und JPG-Dateien. Für PSD-Dateien steht ein zweiter Filter zur Verfügung. In einem Dropdown-Menü gibt es eine Platzhalteroption.
Nur NULL
Platzhalter.
Siehe test_opendialogmultiple.c.
Ich akzeptiere hochwertige Code-Patches oder werde diese und andere Probleme durch den Support lösen. Weitere Informationen finden Sie unter Beitragen.
Keine Unterstützung für die alten Dialoge von Windows XP wie GetOpenFileName
.
Keine Unterstützung für Dateifilternamen – z. B. „Bilddateien“ (*.png, *.jpg). Namenlose Filter werden jedoch unterstützt.
Die Process Exec-Fehlerbehandlung der GTK Zenity-Implementierung behandelt zahlreiche Fehlerfälle nicht ordnungsgemäß und wählt den Abbruch statt der Bereinigung und Rückkehr.
GTK 3 spammt eine Warnung pro erstelltem Dialog.
Copyright © 2014–2019 Frogtoss Games, Inc. Die Dateilizenz gilt für alle Dateien in diesem Repo.
Native File Dialog von Michael Labbe [email protected]
Tomasz Konojacki für microutf8
Denis Kolodin für die Unterstützung.
Tom Mason für Zenity-Unterstützung.
Gezielte Unterstützung für dieses Werk ist im Rahmen einer kostenpflichtigen Vereinbarung vom Originalautor erhältlich.
Kontaktieren Sie Frogtoss Games.