一个小巧、简洁的 C 库,可移植地调用本机文件打开、文件夹选择和保存对话框。 编写一次对话框代码,即可在所有支持的平台上弹出本机对话框。 避免链接大型依赖项,例如 wxWidgets 和 qt。
特征:
精益 C API、静态库——没有 ObjC、没有 C++、没有 STL。
Zlib 已获得许可。
所有平台上一致的 UTF-8 支持。
简单的通用文件过滤器语法。
提供付费支持。
多文件选择支持。
64 位和 32 位友好。
支持 GCC、Clang、Xcode、Mingw 和 Visual Studio。
没有用于构建或链接的第三方依赖项。
支持 Windows 上的 Vista 现代IFileDialog
。
支持 OS X 上未弃用的 Cocoa API。
Linux 上的 GTK3 对话框。
Linux 上可选的 Zenity 支持以避免链接 GTK。
经过测试,与 http://www.libsdl.org 一起在所有平台上为游戏开发人员工作。
#include <nfd.h>#include <stdio.h>#include <stdlib.h>int main( void ) {nfdchar_t *outPath = NULL;nfdresult_t 结果 = NFD_OpenDialog( NULL, NULL, &outPath ); if ( 结果 == 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 年 10 月 |
1.1.0 | 预制5; scons 已弃用 | 2016 年 8 月 |
1.1.1 | mingw 支持,构建修复 | 2016 年 8 月 |
1.1.2 | 添加了 test_pickfolder() | 2016 年 8 月 |
1.1.3 | 添加了 zenity Linux 后端 | 2017 年 11 月 |
修复 decls 中的 char 类型 | 2017 年 11 月 | |
1.1.4 | 修复 win32 memleaks | 2018 年 12 月 |
改进 win32 错误处理 | 2018 年 12 月 | |
macOS 修复焦点错误 | 2018 年 12 月 | |
1.1.5 | win32修复com重新初始化 | 2019 年 8 月 |
1.1.6 | 修复 osx 过滤器错误 | 2019 年 8 月 |
删除已弃用的 scons | 2019 年 8 月 | |
修复 mingw 编译 | 2019 年 8 月 | |
-Weextra警告清理 | 2019 年 8 月 |
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
的参数。
或者,您可以通过运行build/gmake_linux_zenity
中的 Makefile 来使用 Zenity 后端。 Zenity 在其自己的地址空间中运行该对话框,但要求用户在其系统上正确安装和配置 Zenity。
在 Mac OS 上,将AppKit
添加到框架列表中。
在 Windows 上,确保您链接的是comctl32.lib
。
有关 API 调用,请参阅NFD.h
有关示例代码,请参阅tests/*.c
。
编译完成后, build/bin
包含编译好的测试程序。 build/lib
下的相应子目录包含构建的库。
每个文件对话框 API 中都有一种文件过滤形式,但没有一致的支持方法。 NFD 支持按扩展名组过滤文件,并为扩展名提供自己的描述(如果适用)。
通配符过滤器始终添加到每个对话框中。
;
开始新的过滤器。
,
向过滤器添加单独的类型。
txt
默认过滤器适用于文本文件。 下拉菜单中有一个通配符选项。
png,jpg;psd
默认过滤器适用于 png 和 jpg 文件。 第二个过滤器可用于 psd 文件。 下拉菜单中有一个通配符选项。
仅限NULL
通配符。
请参阅 test_opendialogmultiple.c。
我接受高质量的代码补丁,或者将通过支持解决这些问题和其他问题。 有关详细信息,请参阅贡献。
不支持 Windows XP 的旧版对话框,例如GetOpenFileName
。
不支持文件过滤器名称 - 例如:“图像文件”(*.png、*.jpg)。 但是,支持无名过滤器。
GTK Zenity 实现的进程执行错误处理不能优雅地处理大量错误情况,选择中止而不是清理和返回。
GTK 3 垃圾邮件每创建一个对话框就会发出一个警告。
版权所有 © 2014-2019 Frogtoss Games, Inc. 文件许可证涵盖此存储库中的所有文件。
本机文件对话框,作者:Michael Labbe [email protected]
托马斯·科诺杰基(Tomasz Konojacki)的 microutf8
Denis Kolodin 提供 mingw 支持。
Tom Mason 支持 Zenity。
根据付费协议,原作者可提供对本作品的直接支持。
联系青蛙游戏。