text_wrapper.rs

  1use gpui::{
  2    App, Application, Bounds, Context, TextOverflow, Window, WindowBounds, WindowOptions, div,
  3    prelude::*, px, size,
  4};
  5
  6struct HelloWorld {}
  7
  8impl Render for HelloWorld {
  9    fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
 10        let text = "The longest word 你好世界这段是中文,こんにちはこの段落は日本語です in any of the major \
 11            English language dictionaries is pneumonoultramicroscopicsilicovolcanoconiosis, a word that \
 12            refers to a lung disease contracted from the inhalation of very fine silica particles, \
 13            a url https://github.com/zed-industries/zed/pull/35724?query=foo&bar=2, \
 14            specifically from a volcano; medically, it is the same as silicosis.";
 15        div()
 16            .id("page")
 17            .size_full()
 18            .flex()
 19            .flex_col()
 20            .p_2()
 21            .gap_2()
 22            .bg(gpui::white())
 23            .child(
 24                div()
 25                    .flex()
 26                    .flex_row()
 27                    .flex_shrink_0()
 28                    .gap_2()
 29                    .child(
 30                        div()
 31                            .flex()
 32                            .border_1()
 33                            .border_color(gpui::red())
 34                            .text_ellipsis()
 35                            .child("longer text in flex 1"),
 36                    )
 37                    .child(
 38                        div()
 39                            .flex()
 40                            .border_1()
 41                            .border_color(gpui::red())
 42                            .text_ellipsis()
 43                            .child("short flex"),
 44                    )
 45                    .child(
 46                        div()
 47                            .overflow_hidden()
 48                            .border_1()
 49                            .border_color(gpui::red())
 50                            .text_ellipsis()
 51                            .w_full()
 52                            .child("A short text in normal div"),
 53                    ),
 54            )
 55            .child(
 56                div()
 57                    .flex_shrink_0()
 58                    .text_xl()
 59                    .truncate()
 60                    .border_1()
 61                    .border_color(gpui::blue())
 62                    .child("ELLIPSIS: ".to_owned() + text),
 63            )
 64            .child(
 65                div()
 66                    .flex_shrink_0()
 67                    .text_xl()
 68                    .overflow_hidden()
 69                    .text_ellipsis()
 70                    .line_clamp(2)
 71                    .border_1()
 72                    .border_color(gpui::blue())
 73                    .child("ELLIPSIS 2 lines: ".to_owned() + text),
 74            )
 75            .child(
 76                div()
 77                    .flex_shrink_0()
 78                    .text_xl()
 79                    .overflow_hidden()
 80                    .text_overflow(TextOverflow::Truncate("".into()))
 81                    .border_1()
 82                    .border_color(gpui::green())
 83                    .child("TRUNCATE: ".to_owned() + text),
 84            )
 85            .child(
 86                div()
 87                    .flex_shrink_0()
 88                    .text_xl()
 89                    .overflow_hidden()
 90                    .text_overflow(TextOverflow::Truncate("".into()))
 91                    .line_clamp(3)
 92                    .border_1()
 93                    .border_color(gpui::green())
 94                    .child("TRUNCATE 3 lines: ".to_owned() + text),
 95            )
 96            .child(
 97                div()
 98                    .flex_shrink_0()
 99                    .text_xl()
100                    .whitespace_nowrap()
101                    .overflow_hidden()
102                    .border_1()
103                    .border_color(gpui::black())
104                    .child("NOWRAP: ".to_owned() + text),
105            )
106            .child(div().text_xl().w_full().child(text))
107    }
108}
109
110fn main() {
111    Application::new().run(|cx: &mut App| {
112        let bounds = Bounds::centered(None, size(px(800.0), px(600.0)), cx);
113        cx.open_window(
114            WindowOptions {
115                window_bounds: Some(WindowBounds::Windowed(bounds)),
116                ..Default::default()
117            },
118            |_, cx| cx.new(|_| HelloWorld {}),
119        )
120        .unwrap();
121        cx.activate(true);
122    });
123}