Skip to main content

dear_file_browser/
lib.rs

1#![deny(missing_docs)]
2//! File dialogs and in-UI file browser for `dear-imgui-rs`.
3//!
4//! Note on UTF-8/CJK: Dear ImGui's default font does not include CJK glyphs.
5//! If you need Chinese/Japanese/Korean or emoji, load a font that contains
6//! those glyphs (e.g., Noto Sans SC) into the font atlas during initialization.
7//! For best quality, enable the `freetype` feature and follow the pattern in
8//! `examples/style_and_fonts.rs` to add fonts and ranges (e.g., Simplified
9//! Chinese common glyphs).
10//!
11//! Two backends:
12//! - Native (via `rfd`) for OS dialogs (desktop) and Web File Picker (wasm)
13//! - ImGui (pure-UI) browser that works everywhere and is fully themeable
14
15mod core;
16#[cfg(feature = "imgui")]
17mod custom_pane;
18#[cfg(feature = "imgui")]
19mod dialog_core;
20#[cfg(feature = "imgui")]
21mod dialog_manager;
22#[cfg(feature = "imgui")]
23mod dialog_state;
24#[cfg(feature = "imgui")]
25mod file_style;
26#[cfg(feature = "imgui")]
27mod fs;
28#[cfg(feature = "imgui")]
29mod fs_ops;
30#[cfg(feature = "native-rfd")]
31mod native;
32#[cfg(feature = "imgui")]
33mod places;
34#[cfg(feature = "imgui")]
35mod thumbnails;
36#[cfg(feature = "thumbnails-image")]
37mod thumbnails_image;
38#[cfg(feature = "imgui")]
39mod ui;
40
41pub use core::{
42    Backend, ClickAction, DialogMode, ExtensionPolicy, FileDialog, FileDialogError, FileFilter,
43    LayoutStyle, SavePolicy, Selection, SortBy, SortMode,
44};
45#[cfg(feature = "imgui")]
46pub use custom_pane::{CustomPane, CustomPaneCtx};
47#[cfg(feature = "imgui")]
48pub use dialog_core::{
49    ConfirmGate, CoreEvent, CoreEventOutcome, DirSnapshot, EntryId, FileDialogCore, FileMeta,
50    Modifiers, ScanBatch, ScanBatchKind, ScanGeneration, ScanHookAction, ScanPolicy, ScanRequest,
51    ScanStatus,
52};
53#[cfg(feature = "imgui")]
54pub use dialog_manager::{DialogId, DialogManager};
55#[cfg(feature = "imgui")]
56pub use dialog_state::FileListViewMode;
57#[cfg(feature = "imgui")]
58pub use dialog_state::{
59    ClipboardOp, CustomPaneDock, FileClipboard, FileDialogState, FileDialogUiConfig,
60    FileDialogUiState, FileListColumnWeightOverrides, FileListColumnsConfig,
61    FileListColumnsDeserializeError, FileListDataColumn, HeaderStyle, PathBarStyle, ToolbarConfig,
62    ToolbarDensity, ToolbarIconMode, ToolbarIcons, ValidationButtonsAlign, ValidationButtonsConfig,
63    ValidationButtonsOrder,
64};
65#[cfg(feature = "imgui")]
66pub use file_style::FileStyleCallback;
67#[cfg(feature = "imgui")]
68pub use file_style::{EntryKind, FileStyle, FileStyleRegistry, StyleMatcher, StyleRule};
69#[cfg(feature = "imgui")]
70pub use fs::{FileSystem, FsEntry, FsMetadata, StdFileSystem};
71#[cfg(feature = "imgui")]
72pub use places::{
73    Place, PlaceGroup, PlaceOrigin, Places, PlacesDeserializeError, PlacesMergeOptions,
74    PlacesSerializeOptions,
75};
76#[cfg(feature = "imgui")]
77pub use thumbnails::{
78    DecodedRgbaImage, ThumbnailBackend, ThumbnailCache, ThumbnailCacheConfig, ThumbnailFrameIndex,
79    ThumbnailProvider, ThumbnailRenderer, ThumbnailRequest,
80};
81#[cfg(feature = "thumbnails-image")]
82pub use thumbnails_image::ImageThumbnailProvider;
83#[cfg(feature = "imgui")]
84pub use ui::{FileDialogExt, ModalHostConfig, WindowHostConfig};