Uma pequena e elegante biblioteca C que invoca de forma portável caixas de diálogo nativas para abrir arquivos, selecionar pastas e salvar. Escreva o código da caixa de diálogo uma vez e faça com que caixas de diálogo nativas sejam exibidas em todas as plataformas suportadas. Evite vincular grandes dependências como wxWidgets e qt.
Características:
API Lean C, biblioteca estática - sem ObjC, sem C++, sem STL.
Licença Zlib.
Suporte consistente a UTF-8 em todas as plataformas.
Sintaxe simples de filtro de arquivo universal.
Suporte pago disponível.
Suporte para seleção de vários arquivos.
Compatível com 64 bits e 32 bits.
GCC, Clang, Xcode, Mingw e Visual Studio são suportados.
Não há dependências de terceiros para construção ou vinculação.
Suporte para o moderno IFileDialog
do Vista no Windows.
Suporte para APIs Cocoa não obsoletas no OS X.
Diálogo GTK3 no Linux.
Suporte opcional ao Zenity no Linux para evitar vinculação do GTK.
Testado, funciona junto com http://www.libsdl.org em todas as plataformas, para os desenvolvedores de jogos.
#include <nfd.h>#include <stdio.h>#include <stdlib.h>int main( void ) {nfdchar_t *outPath = NULL;nfdresult_t resultado = NFD_OpenDialog(NULL, NULL, &outPath); if (resultado == NFD_OKAY) {puts("Sucesso!");puts(outPath);free(outPath); }else if (resultado == NFD_CANCEL) {puts("Usuário pressionou cancelar."); }else {printf("Erro: %sn", NFD_GetError() ); }retornar 0; }
Consulte API autodocumentada NFD.h para obter mais opções.
Incrementos de versão principais indicam saída de API ou ABI.
Incrementos de versão menores denotam construções ou desvios triviais.
Os incrementos da versão micro apenas recompilam e instalam.
liberar | o que há de novo | data |
---|---|---|
1.0.0 | inicial | outubro de 2014 |
1.1.0 | pré-fabricação5; scons obsoletos | agosto de 2016 |
1.1.1 | suporte mingw, correções de compilação | agosto de 2016 |
1.1.2 | test_pickfolder() adicionado | agosto de 2016 |
1.1.3 | back-end do zenity linux adicionado | novembro de 2017 |
corrigir tipo de char em decls | novembro de 2017 | |
1.1.4 | corrigir memleaks do win32 | dezembro de 2018 |
melhorar o tratamento de erros do win32 | dezembro de 2018 | |
macos corrige bug de foco | dezembro de 2018 | |
1.1.5 | win32 fix com reinicializar | agosto de 2019 |
1.1.6 | corrigir bug do filtro osx | agosto de 2019 |
remover scons obsoletos | agosto de 2019 | |
corrigir compilação mingw | agosto de 2019 | |
- Limpeza de aviso Wextra | agosto de 2019 |
NFD usa Makefiles gerados pelo Premake5 e arquivos de projeto IDE. Os arquivos de projeto gerados são verificados em build/
então você não precisa baixar e usar o Premake na maioria dos casos.
Se você precisar executar o Premake5 diretamente, mais documentação de construção estará disponível.
Anteriormente, o NFD usava SCons para construir. A partir da versão 1.1.6, o suporte a SCons foi totalmente removido.
nfd.a
será compilado para compilações de lançamento e nfd_d.a
será compilado para compilações de depuração.
O makefile oferece até quatro opções, com release_x64
como padrão.
make config=release_x86 make config=release_x64 make config=debug_x86 make config=debug_x64
Adicione src/include
ao seu caminho de pesquisa de inclusão.
Adicione nfd.lib
ou nfd_d.lib
à lista de bibliotecas estáticas para vincular (para liberação ou depuração, respectivamente).
Adicione build/<debug|release>/<arch>
ao caminho de pesquisa da biblioteca.
apt-get libgtk-3-dev
instala a dependência gtk para compilação da biblioteca.
No Linux, você tem a opção de compilar e vincular ao GTK. Se você usá-lo, a maneira recomendada de compilar é incluir os argumentos de pkg-config --cflags --libs gtk+-3.0
.
Alternativamente, você pode usar o backend Zenity executando o Makefile em build/gmake_linux_zenity
. O Zenity executa a caixa de diálogo em seu próprio espaço de endereço, mas exige que o usuário tenha o Zenity instalado e configurado corretamente em seu sistema.
No Mac OS, adicione AppKit
à lista de estruturas.
No Windows, verifique se você está vinculando comctl32.lib
.
Consulte NFD.h
para chamadas de API. Veja tests/*.c
para exemplo de código.
Após a compilação, build/bin
contém programas de teste compilados. O subdiretório apropriado em build/lib
contém a biblioteca construída.
Existe uma forma de filtragem de arquivos em todas as APIs de diálogo de arquivos, mas não há meios consistentes de suportá-la. NFD fornece suporte para filtrar arquivos por grupos de extensões, fornecendo suas próprias descrições (quando aplicável) para as extensões.
Um filtro curinga é sempre adicionado a cada caixa de diálogo.
;
Comece um novo filtro.
,
Adicione um tipo separado ao filtro.
txt
O filtro padrão é para arquivos de texto. Há uma opção curinga em um menu suspenso.
png,jpg;psd
O filtro padrão é para arquivos png e jpg. Um segundo filtro está disponível para arquivos PSD. Há uma opção curinga em um menu suspenso.
NULL
Somente curinga.
Consulte test_opendialogmultiple.c.
Aceito patches de código de qualidade ou resolverei esses e outros assuntos através do suporte. Consulte contribuir para obter detalhes.
Não há suporte para caixas de diálogo herdadas do Windows XP, como GetOpenFileName
.
Não há suporte para nomes de filtros de arquivos – ex: “Arquivos de imagem” (*.png, *.jpg). Filtros sem nome são suportados, entretanto.
O tratamento de erros executivos do processo de implementação do GTK Zenity não lida normalmente com vários casos de erro, optando por abortar em vez de limpar e retornar.
GTK 3 envia spam para um aviso por caixa de diálogo criada.
Copyright © 2014-2019 Frogtoss Games, Inc. A LICENÇA de arquivo cobre todos os arquivos neste repositório.
Diálogo de arquivo nativo por Michael Labbe [email protected]
Tomasz Konojacki para microutf8
Denis Kolodin pelo apoio ao mingw.
Tom Mason pelo suporte Zenity.
O suporte direcionado para este trabalho está disponível pelo autor original sob um contrato pago.
Entre em contato com a Frogtoss Games.