Skip to main content

zenity_rs/
lib.rs

1//! zenity-rs - Display simple GUI dialogs from the command line.
2//!
3//! This library provides simple GUI dialogs for shell scripts and command-line tools.
4
5pub(crate) mod backend;
6pub mod error;
7pub(crate) mod render;
8pub mod ui;
9
10pub use error::Error;
11pub use ui::{
12    ButtonPreset, Colors, DialogResult, Icon, THEME_DARK, THEME_LIGHT,
13    calendar::{CalendarBuilder, CalendarResult},
14    entry::{EntryBuilder, EntryResult},
15    file_select::{FileFilter, FileSelectBuilder, FileSelectResult},
16    forms::{FormsBuilder, FormsResult},
17    list::{ListBuilder, ListMode, ListResult},
18    message::MessageBuilder,
19    progress::{ProgressBuilder, ProgressResult},
20    scale::{ScaleBuilder, ScaleResult},
21    text_info::{TextInfoBuilder, TextInfoResult},
22};
23
24/// Creates a new message dialog builder.
25///
26/// # Example
27///
28/// ```no_run
29/// use zenity_rs::{message, Icon, ButtonPreset};
30///
31/// let result = message()
32///     .title("Information")
33///     .text("Operation completed successfully!")
34///     .icon(Icon::Info)
35///     .buttons(ButtonPreset::Ok)
36///     .show()
37///     .unwrap();
38/// ```
39pub fn message() -> MessageBuilder {
40    MessageBuilder::new()
41}
42
43/// Creates an info dialog (shortcut for message with info icon).
44pub fn info(text: &str) -> MessageBuilder {
45    MessageBuilder::new()
46        .text(text)
47        .icon(Icon::Info)
48        .buttons(ButtonPreset::Ok)
49}
50
51/// Creates a warning dialog (shortcut for message with warning icon).
52pub fn warning(text: &str) -> MessageBuilder {
53    MessageBuilder::new()
54        .text(text)
55        .icon(Icon::Warning)
56        .buttons(ButtonPreset::Ok)
57}
58
59/// Creates an error dialog (shortcut for message with error icon).
60pub fn error(text: &str) -> MessageBuilder {
61    MessageBuilder::new()
62        .text(text)
63        .icon(Icon::Error)
64        .buttons(ButtonPreset::Ok)
65}
66
67/// Creates a question dialog (shortcut for message with question icon and Yes/No buttons).
68pub fn question(text: &str) -> MessageBuilder {
69    MessageBuilder::new()
70        .text(text)
71        .icon(Icon::Question)
72        .buttons(ButtonPreset::YesNo)
73}
74
75/// Creates a new entry dialog builder.
76pub fn entry() -> EntryBuilder {
77    EntryBuilder::new()
78}
79
80/// Creates a password entry dialog (entry with hidden text).
81pub fn password() -> EntryBuilder {
82    EntryBuilder::new().hide_text(true)
83}
84
85/// Creates a new progress dialog builder.
86pub fn progress() -> ProgressBuilder {
87    ProgressBuilder::new()
88}
89
90/// Creates a new file selection dialog builder.
91pub fn file_select() -> FileSelectBuilder {
92    FileSelectBuilder::new()
93}
94
95/// Creates a new list selection dialog builder.
96pub fn list() -> ListBuilder {
97    ListBuilder::new()
98}
99
100/// Creates a new calendar date picker dialog builder.
101pub fn calendar() -> CalendarBuilder {
102    CalendarBuilder::new()
103}
104
105/// Creates a new text info dialog builder.
106pub fn text_info() -> TextInfoBuilder {
107    TextInfoBuilder::new()
108}
109
110/// Creates a new scale dialog builder.
111pub fn scale() -> ScaleBuilder {
112    ScaleBuilder::new()
113}
114
115/// Creates a new forms dialog builder.
116pub fn forms() -> FormsBuilder {
117    FormsBuilder::new()
118}