Крошечная, аккуратная библиотека C, которая переносимо вызывает собственные диалоги открытия файлов, выбора папок и сохранения. Напишите код диалога один раз, и он будет отображать собственные диалоги на всех поддерживаемых платформах. Избегайте связывания больших зависимостей, таких как wxWidgets и qt.
Функции:
Lean C API, статическая библиотека — ни ObjC, ни C++, ни STL.
Злиб лицензионный.
Последовательная поддержка UTF-8 на всех платформах.
Простой универсальный синтаксис фильтра файлов.
Доступна платная поддержка.
Поддержка выбора нескольких файлов.
Совместимость с 64-битными и 32-битными версиями.
Поддерживаются GCC, Clang, Xcode, Mingw и Visual Studio.
Никаких сторонних зависимостей для сборки или связывания.
Поддержка современного IFileDialog
Vista в Windows.
Поддержка неустаревших API-интерфейсов Cocoa в OS X.
Диалог GTK3 в Linux.
Дополнительная поддержка Zenity в Linux, чтобы избежать связывания GTK.
Протестировано, работает вместе с http://www.libsdl.org на всех платформах для разработчиков игр.
#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("Успех!");puts(outPath);free(outPath); }else if ( result == NFD_CANCEL ) {puts("Пользователь нажал отмену."); }else {printf("Ошибка: %sn", NFD_GetError() ); } вернуть 0; }
Дополнительные возможности см. в самодокументированном API NFD.h.
Увеличение основной версии означает отклонение API или ABI.
Незначительные приращения версии обозначают сборку или тривиальные отклонения.
Приращения микро- версии просто перекомпилируются и вставляются.
выпускать | что нового | дата |
---|---|---|
1.0.0 | исходный | октябрь 2014 г. |
1.1.0 | премейк5; сконы устарели | август 2016 г. |
1.1.1 | поддержка mingw, исправления сборки | август 2016 г. |
1.1.2 | добавлен test_pickfolder() | август 2016 г. |
1.1.3 | Добавлен бэкэнд zenity Linux | ноябрь 2017 г. |
исправить тип символа в decls | ноябрь 2017 г. | |
1.1.4 | исправить утечку памяти Win32 | декабрь 2018 г. |
улучшить обработку ошибок Win32 | декабрь 2018 г. | |
Macos исправляет ошибку фокусировки | декабрь 2018 г. | |
1.1.5 | исправление Win32, повторная инициализация com | август 2019 г. |
1.1.6 | исправить ошибку фильтра OSX | август 2019 г. |
удалить устаревшие сконы | август 2019 г. | |
исправить компиляцию mingw | август 2019 г. | |
-Дополнительная очистка предупреждений | август 2019 г. |
NFD использует созданные Premake5 файлы Makefile и файлы проектов IDE. Сгенерированные файлы проекта сохраняются в папке build/
поэтому в большинстве случаев вам не придется загружать и использовать Premake.
Если вам нужно запустить Premake5 напрямую, доступна дополнительная документация по сборке.
Раньше NFD использовала SCons для построения. Начиная с версии 1.1.6 поддержка SCons полностью удалена.
nfd.a
будет создан для выпускных сборок, а nfd_d.a
— для отладочных сборок.
Makefile предлагает до четырех опций, при этом release_x64
используется по умолчанию.
make config=release_x86 make config=release_x64 make config=debug_x86 make config=debug_x64
Добавьте src/include
в путь поиска включения.
Добавьте nfd.lib
или nfd_d.lib
в список статических библиотек для компоновки (для выпуска или отладки соответственно).
Добавьте build/<debug|release>/<arch>
в путь поиска библиотеки.
apt-get libgtk-3-dev
устанавливает зависимость gtk для компиляции библиотеки.
В Linux у вас есть возможность компилировать и компоновать GTK. Если вы его используете, рекомендуемый способ компиляции — включить аргументы pkg-config --cflags --libs gtk+-3.0
.
Альтернативно вы можете использовать серверную часть Zenity, запустив Makefile в build/gmake_linux_zenity
. Zenity запускает диалоговое окно в своем собственном адресном пространстве, но требует, чтобы у пользователя был правильно установлен и настроен Zenity в его системе.
В Mac OS добавьте AppKit
в список платформ.
В Windows убедитесь, что вы ссылаетесь на comctl32.lib
.
См. NFD.h
для вызовов API. См. пример кода tests/*.c
.
После компиляции build/bin
содержит скомпилированные тестовые программы. Соответствующий подкаталог в build/lib
содержит собранную библиотеку.
В каждом API диалога с файлами есть форма фильтрации файлов, но нет последовательных средств ее поддержки. NFD обеспечивает поддержку фильтрации файлов по группам расширений, предоставляя собственные описания (где это применимо) для расширений.
Фильтр подстановочных знаков всегда добавляется в каждое диалоговое окно.
;
Начните новый фильтр.
,
Добавьте в фильтр отдельный тип.
txt
Фильтр по умолчанию предназначен для текстовых файлов. В раскрывающемся списке есть опция подстановочного знака.
png,jpg;psd
Фильтр по умолчанию предназначен для файлов png и jpg. Второй фильтр доступен для psd-файлов. В раскрывающемся списке есть опция подстановочного знака.
NULL
Только подстановочный знак.
См. test_opendialogmultiple.c.
Я принимаю качественные исправления кода или решу эти и другие вопросы через службу поддержки. Подробнее см. в разделе «Содействие».
Нет поддержки устаревших диалоговых окон Windows XP, таких как GetOpenFileName
.
Нет поддержки имен фильтров файлов, например: «Файлы изображений» (*.png, *.jpg). Однако безымянные фильтры поддерживаются.
Обработка ошибок процесса exec в реализации GTK Zenity не корректно обрабатывает многочисленные случаи ошибок, предпочитая прерывание, а не очистку и возврат.
GTK 3 рассылает одно предупреждение на каждое созданное диалоговое окно.
Авторские права © 2014-2019 Frogtoss Games, Inc. ЛИЦЕНЗИЯ на файлы распространяется на все файлы в этом репозитории.
Встроенное диалоговое окно файла от Майкла Лаббе [email protected]
Томаш Конояцкий для microutf8
Денису Колодину за поддержку mingw.
Тому Мейсону за поддержку Zenity.
Направленная поддержка этой работы доступна от первоначального автора по платному соглашению.
Свяжитесь с Frogtoss Games.