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, ScanHookAction, ScanPolicy, ScanRequest, ScanStatus,
51};
52#[cfg(feature = "imgui")]
53pub use dialog_manager::{DialogId, DialogManager};
54#[cfg(feature = "imgui")]
55pub use dialog_state::FileListViewMode;
56#[cfg(feature = "imgui")]
57pub use dialog_state::{
58    ClipboardOp, CustomPaneDock, FileClipboard, FileDialogState, FileDialogUiState,
59    FileListColumnWeightOverrides, FileListColumnsConfig, FileListColumnsDeserializeError,
60    FileListDataColumn, HeaderStyle, PathBarStyle, ToolbarConfig, ToolbarDensity, ToolbarIconMode,
61    ToolbarIcons, ValidationButtonsAlign, ValidationButtonsConfig, ValidationButtonsOrder,
62};
63#[cfg(feature = "imgui")]
64pub use file_style::FileStyleCallback;
65#[cfg(feature = "imgui")]
66pub use file_style::{EntryKind, FileStyle, FileStyleRegistry, StyleMatcher, StyleRule};
67#[cfg(feature = "imgui")]
68pub use fs::{FileSystem, FsEntry, FsMetadata, StdFileSystem};
69#[cfg(feature = "imgui")]
70pub use places::{
71    Place, PlaceGroup, PlaceOrigin, Places, PlacesDeserializeError, PlacesMergeOptions,
72    PlacesSerializeOptions,
73};
74#[cfg(feature = "imgui")]
75pub use thumbnails::{
76    DecodedRgbaImage, ThumbnailBackend, ThumbnailCache, ThumbnailCacheConfig, ThumbnailProvider,
77    ThumbnailRenderer, ThumbnailRequest,
78};
79#[cfg(feature = "thumbnails-image")]
80pub use thumbnails_image::ImageThumbnailProvider;
81#[cfg(feature = "imgui")]
82pub use ui::{FileDialogExt, ModalHostConfig, WindowHostConfig};