Skip to content

DSLstandard/hs-nativefiledialog

Repository files navigation

hs-nativefiledialog

High-level Haskell bindings to https://github.com/btzy/nativefiledialog-extended, a cross platform (Windows, Mac, Linux) native file dialog library, and a fork of https://github.com/mlabbe/nativefiledialog.

For in-depth details about the nativefiledialog (NFD) library and the API, you may check out https://github.com/btzy/nativefiledialog-extended?tab=readme-ov-file#.

Example usage:

import Control.Exception
import qualified Data.Text as T
import qualified NativeFileDialog as NFD
import qualified System.Directory

main :: IO ()
main = bracket_ NFD.initialize NFD.quit do
  homedir <- System.Directory.getHomeDirectory

  -- Opens a file dialog for users to pick C/C++ files.
  result :: NFD.DialogResult [FilePath] <- NFD.openDialog
    NFD.Multiple
    (Just homedir)
    [ NFD.FilterItem "Source Files" ["c", "cpp"]
    , NFD.FilterItem "Header Files" ["h", "hpp"]
    ]
    Nothing -- You may optionally specify the parent window of the file dialog

  case result of
    NFD.DialogResult'Picked files -> do
      putStrLn $ "User selected files: " <> show files
    NFD.DialogResult'Cancelled -> do
      putStrLn "User cancelled"
    NFD.DialogResult'Error err -> do
      putStrLn $ "Error: " <> T.unpack err

About

High-level Haskell bindings to https://github.com/btzy/nativefiledialog-extended

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published