Struct fltk::text::TextEditor

source ·
pub struct TextEditor { /* private fields */ }
Expand description

Creates an editable text display widget

Implementations§

source§

impl TextEditor

source

pub const AnyState: Shortcut = _

Any state/shortcut

source

pub fn set_insert_mode(&mut self, b: bool)

Set to insert mode

source

pub fn insert_mode(&self) -> bool

Returns whether insert mode is set

source

pub fn set_tab_nav(&mut self, val: bool)

Set tab navigation

source

pub fn tab_nav(&self) -> bool

Returns whether tab navigation is set

source

pub fn copy(&self)

Copies the text within the TextEditor widget

Examples found in repository?
examples/editor.rs (line 213)
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
fn menu_cb(m: &mut impl MenuExt) {
    if let Ok(mpath) = m.item_pathname(None) {
        let ed: text::TextEditor = app::widget_from_id("ed").unwrap();
        match mpath.as_str() {
            "&File/New...\t" => {
                STATE.with(|s| {
                    if !s.buf.text().is_empty() {
                        let c = dialog::choice2_default(
                            "Are you sure you want to clear the buffer?",
                            "Yes",
                            "No",
                            "",
                        );
                        if c == Some(0) {
                            s.buf.set_text("");
                            s.saved = false;
                        }
                    }
                });
            }
            "&File/Open...\t" => {
                let c = nfc_get_file(dialog::NativeFileChooserType::BrowseFile);
                if let Ok(text) = std::fs::read_to_string(&c) {
                    STATE.with(move |s| {
                        s.buf.set_text(&text);
                        s.saved = false;
                        s.current_file = c.clone();
                    });
                }
            }
            "&File/Save\t" => {
                STATE.with(|s| {
                    if !s.saved && s.current_file.exists() {
                        std::fs::write(&s.current_file, s.buf.text()).ok();
                    }
                });
            }
            "&File/Save as...\t" => {
                let c = nfc_get_file(dialog::NativeFileChooserType::BrowseSaveFile);
                STATE.with(move |s| {
                    std::fs::write(&c, s.buf.text()).ok();
                    s.saved = true;
                    s.current_file = c.clone();
                });
            }
            "&File/Quit\t" => quit_cb(),
            "&Edit/Cut\t" => ed.cut(),
            "&Edit/Copy\t" => ed.copy(),
            "&Edit/Paste\t" => ed.paste(),
            "&Help/About\t" => {
                dialog::message_default("A minimal text editor written using fltk-rs!")
            }
            _ => unreachable!(),
        }
    }
}
More examples
Hide additional examples
examples/editor2.rs (line 431)
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
    pub fn launch(&mut self) {
        while self.app.wait() {
            use Message::*;
            if let Some(msg) = self.r.recv() {
                match msg {
                    Changed => {
                        if !self.modified {
                            self.modified = true;
                            self.menu.menu.find_item("&File/Save\t").unwrap().activate();
                            self.menu.menu.find_item("&File/Quit\t").unwrap().set_label_color(Color::Red);
                            let name = match &self.filename {
                                Some(f) => f.to_string_lossy().to_string(),
                                None => "(Untitled)".to_string(),
                            };
                            self.main_win.set_label(&format!("* {name} - RustyEd"));
                        }
                    }
                    New => {
                        if self.buf.text() != "" {
                            let clear = if let Some(x) = dialog::choice2(center().0 - 200, center().1 - 100, "File unsaved, Do you wish to continue?", "Yes", "No!", "") {
                                x == 0
                            } else {
                                false
                            };
                            if clear {
                                self.buf.set_text("");
                            }
                        }
                    },
                    Open => {
                        let mut dlg = dialog::FileDialog::new(dialog::FileDialogType::BrowseFile);
                        dlg.set_option(dialog::FileDialogOptions::NoOptions);
                        dlg.set_filter("*.{txt,rs,toml}");
                        dlg.show();
                        let filename = dlg.filename();
                        if !filename.to_string_lossy().to_string().is_empty() {
                            if filename.exists() {
                                match self.buf.load_file(&filename) {
                                    Ok(_) => self.filename = Some(filename),
                                    Err(e) => dialog::alert(center().0 - 200, center().1 - 100, &format!("An issue occured while loading the file: {e}")),
                                }
                            } else {
                                dialog::alert(center().0 - 200, center().1 - 100, "File does not exist!")
                            }
                        }
                    },
                    Save => { self.save_file().unwrap(); },
                    SaveAs => { self.save_file_as().unwrap(); },
                    Print => {
                        let mut printer = printer::Printer::default();
                        if printer.begin_job(0).is_ok() {
                            let (w, h) = printer.printable_rect();
                            self.printable.set_size(w - 40, h - 40);
                            // Needs cleanup
                            let line_count = self.printable.count_lines(0, self.printable.buffer().unwrap().length(), true) / 45;
                            for i in 0..=line_count {
                                self.printable.scroll(45 * i, 0);
                                printer.begin_page().ok();
                                printer.print_widget(&self.printable, 20, 20);
                                printer.end_page().ok();
                            }
                            printer.end_job();
                        }
                    },
                    Quit => {
                        if self.modified {
                            match dialog::choice2(center().0 - 200, center().1 - 100,
                                "Would you like to save your work?", "Yes", "No", "") {
                                Some(0) => {
                                    if self.save_file().unwrap() {
                                        self.app.quit();
                                    }
                                },
                                Some(1) => { self.app.quit() },
                                Some(_) | None  => (),
                            }
                        } else {
                            self.app.quit();
                        }
                    },
                    Cut => self.editor.cut(),
                    Copy => self.editor.copy(),
                    Paste => self.editor.paste(),
                    About => dialog::message(center().0 - 300, center().1 - 100, "This is an example application written in Rust and using the FLTK Gui library."),
                }
            }
        }
    }
source

pub fn cut(&self)

Cuts the text within the TextEditor widget

Examples found in repository?
examples/editor.rs (line 212)
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
fn menu_cb(m: &mut impl MenuExt) {
    if let Ok(mpath) = m.item_pathname(None) {
        let ed: text::TextEditor = app::widget_from_id("ed").unwrap();
        match mpath.as_str() {
            "&File/New...\t" => {
                STATE.with(|s| {
                    if !s.buf.text().is_empty() {
                        let c = dialog::choice2_default(
                            "Are you sure you want to clear the buffer?",
                            "Yes",
                            "No",
                            "",
                        );
                        if c == Some(0) {
                            s.buf.set_text("");
                            s.saved = false;
                        }
                    }
                });
            }
            "&File/Open...\t" => {
                let c = nfc_get_file(dialog::NativeFileChooserType::BrowseFile);
                if let Ok(text) = std::fs::read_to_string(&c) {
                    STATE.with(move |s| {
                        s.buf.set_text(&text);
                        s.saved = false;
                        s.current_file = c.clone();
                    });
                }
            }
            "&File/Save\t" => {
                STATE.with(|s| {
                    if !s.saved && s.current_file.exists() {
                        std::fs::write(&s.current_file, s.buf.text()).ok();
                    }
                });
            }
            "&File/Save as...\t" => {
                let c = nfc_get_file(dialog::NativeFileChooserType::BrowseSaveFile);
                STATE.with(move |s| {
                    std::fs::write(&c, s.buf.text()).ok();
                    s.saved = true;
                    s.current_file = c.clone();
                });
            }
            "&File/Quit\t" => quit_cb(),
            "&Edit/Cut\t" => ed.cut(),
            "&Edit/Copy\t" => ed.copy(),
            "&Edit/Paste\t" => ed.paste(),
            "&Help/About\t" => {
                dialog::message_default("A minimal text editor written using fltk-rs!")
            }
            _ => unreachable!(),
        }
    }
}
More examples
Hide additional examples
examples/editor2.rs (line 430)
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
    pub fn launch(&mut self) {
        while self.app.wait() {
            use Message::*;
            if let Some(msg) = self.r.recv() {
                match msg {
                    Changed => {
                        if !self.modified {
                            self.modified = true;
                            self.menu.menu.find_item("&File/Save\t").unwrap().activate();
                            self.menu.menu.find_item("&File/Quit\t").unwrap().set_label_color(Color::Red);
                            let name = match &self.filename {
                                Some(f) => f.to_string_lossy().to_string(),
                                None => "(Untitled)".to_string(),
                            };
                            self.main_win.set_label(&format!("* {name} - RustyEd"));
                        }
                    }
                    New => {
                        if self.buf.text() != "" {
                            let clear = if let Some(x) = dialog::choice2(center().0 - 200, center().1 - 100, "File unsaved, Do you wish to continue?", "Yes", "No!", "") {
                                x == 0
                            } else {
                                false
                            };
                            if clear {
                                self.buf.set_text("");
                            }
                        }
                    },
                    Open => {
                        let mut dlg = dialog::FileDialog::new(dialog::FileDialogType::BrowseFile);
                        dlg.set_option(dialog::FileDialogOptions::NoOptions);
                        dlg.set_filter("*.{txt,rs,toml}");
                        dlg.show();
                        let filename = dlg.filename();
                        if !filename.to_string_lossy().to_string().is_empty() {
                            if filename.exists() {
                                match self.buf.load_file(&filename) {
                                    Ok(_) => self.filename = Some(filename),
                                    Err(e) => dialog::alert(center().0 - 200, center().1 - 100, &format!("An issue occured while loading the file: {e}")),
                                }
                            } else {
                                dialog::alert(center().0 - 200, center().1 - 100, "File does not exist!")
                            }
                        }
                    },
                    Save => { self.save_file().unwrap(); },
                    SaveAs => { self.save_file_as().unwrap(); },
                    Print => {
                        let mut printer = printer::Printer::default();
                        if printer.begin_job(0).is_ok() {
                            let (w, h) = printer.printable_rect();
                            self.printable.set_size(w - 40, h - 40);
                            // Needs cleanup
                            let line_count = self.printable.count_lines(0, self.printable.buffer().unwrap().length(), true) / 45;
                            for i in 0..=line_count {
                                self.printable.scroll(45 * i, 0);
                                printer.begin_page().ok();
                                printer.print_widget(&self.printable, 20, 20);
                                printer.end_page().ok();
                            }
                            printer.end_job();
                        }
                    },
                    Quit => {
                        if self.modified {
                            match dialog::choice2(center().0 - 200, center().1 - 100,
                                "Would you like to save your work?", "Yes", "No", "") {
                                Some(0) => {
                                    if self.save_file().unwrap() {
                                        self.app.quit();
                                    }
                                },
                                Some(1) => { self.app.quit() },
                                Some(_) | None  => (),
                            }
                        } else {
                            self.app.quit();
                        }
                    },
                    Cut => self.editor.cut(),
                    Copy => self.editor.copy(),
                    Paste => self.editor.paste(),
                    About => dialog::message(center().0 - 300, center().1 - 100, "This is an example application written in Rust and using the FLTK Gui library."),
                }
            }
        }
    }
source

pub fn paste(&self)

Pastes text from the clipboard into the TextEditor widget

Examples found in repository?
examples/editor.rs (line 214)
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
fn menu_cb(m: &mut impl MenuExt) {
    if let Ok(mpath) = m.item_pathname(None) {
        let ed: text::TextEditor = app::widget_from_id("ed").unwrap();
        match mpath.as_str() {
            "&File/New...\t" => {
                STATE.with(|s| {
                    if !s.buf.text().is_empty() {
                        let c = dialog::choice2_default(
                            "Are you sure you want to clear the buffer?",
                            "Yes",
                            "No",
                            "",
                        );
                        if c == Some(0) {
                            s.buf.set_text("");
                            s.saved = false;
                        }
                    }
                });
            }
            "&File/Open...\t" => {
                let c = nfc_get_file(dialog::NativeFileChooserType::BrowseFile);
                if let Ok(text) = std::fs::read_to_string(&c) {
                    STATE.with(move |s| {
                        s.buf.set_text(&text);
                        s.saved = false;
                        s.current_file = c.clone();
                    });
                }
            }
            "&File/Save\t" => {
                STATE.with(|s| {
                    if !s.saved && s.current_file.exists() {
                        std::fs::write(&s.current_file, s.buf.text()).ok();
                    }
                });
            }
            "&File/Save as...\t" => {
                let c = nfc_get_file(dialog::NativeFileChooserType::BrowseSaveFile);
                STATE.with(move |s| {
                    std::fs::write(&c, s.buf.text()).ok();
                    s.saved = true;
                    s.current_file = c.clone();
                });
            }
            "&File/Quit\t" => quit_cb(),
            "&Edit/Cut\t" => ed.cut(),
            "&Edit/Copy\t" => ed.copy(),
            "&Edit/Paste\t" => ed.paste(),
            "&Help/About\t" => {
                dialog::message_default("A minimal text editor written using fltk-rs!")
            }
            _ => unreachable!(),
        }
    }
}
More examples
Hide additional examples
examples/editor2.rs (line 432)
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
    pub fn launch(&mut self) {
        while self.app.wait() {
            use Message::*;
            if let Some(msg) = self.r.recv() {
                match msg {
                    Changed => {
                        if !self.modified {
                            self.modified = true;
                            self.menu.menu.find_item("&File/Save\t").unwrap().activate();
                            self.menu.menu.find_item("&File/Quit\t").unwrap().set_label_color(Color::Red);
                            let name = match &self.filename {
                                Some(f) => f.to_string_lossy().to_string(),
                                None => "(Untitled)".to_string(),
                            };
                            self.main_win.set_label(&format!("* {name} - RustyEd"));
                        }
                    }
                    New => {
                        if self.buf.text() != "" {
                            let clear = if let Some(x) = dialog::choice2(center().0 - 200, center().1 - 100, "File unsaved, Do you wish to continue?", "Yes", "No!", "") {
                                x == 0
                            } else {
                                false
                            };
                            if clear {
                                self.buf.set_text("");
                            }
                        }
                    },
                    Open => {
                        let mut dlg = dialog::FileDialog::new(dialog::FileDialogType::BrowseFile);
                        dlg.set_option(dialog::FileDialogOptions::NoOptions);
                        dlg.set_filter("*.{txt,rs,toml}");
                        dlg.show();
                        let filename = dlg.filename();
                        if !filename.to_string_lossy().to_string().is_empty() {
                            if filename.exists() {
                                match self.buf.load_file(&filename) {
                                    Ok(_) => self.filename = Some(filename),
                                    Err(e) => dialog::alert(center().0 - 200, center().1 - 100, &format!("An issue occured while loading the file: {e}")),
                                }
                            } else {
                                dialog::alert(center().0 - 200, center().1 - 100, "File does not exist!")
                            }
                        }
                    },
                    Save => { self.save_file().unwrap(); },
                    SaveAs => { self.save_file_as().unwrap(); },
                    Print => {
                        let mut printer = printer::Printer::default();
                        if printer.begin_job(0).is_ok() {
                            let (w, h) = printer.printable_rect();
                            self.printable.set_size(w - 40, h - 40);
                            // Needs cleanup
                            let line_count = self.printable.count_lines(0, self.printable.buffer().unwrap().length(), true) / 45;
                            for i in 0..=line_count {
                                self.printable.scroll(45 * i, 0);
                                printer.begin_page().ok();
                                printer.print_widget(&self.printable, 20, 20);
                                printer.end_page().ok();
                            }
                            printer.end_job();
                        }
                    },
                    Quit => {
                        if self.modified {
                            match dialog::choice2(center().0 - 200, center().1 - 100,
                                "Would you like to save your work?", "Yes", "No", "") {
                                Some(0) => {
                                    if self.save_file().unwrap() {
                                        self.app.quit();
                                    }
                                },
                                Some(1) => { self.app.quit() },
                                Some(_) | None  => (),
                            }
                        } else {
                            self.app.quit();
                        }
                    },
                    Cut => self.editor.cut(),
                    Copy => self.editor.copy(),
                    Paste => self.editor.paste(),
                    About => dialog::message(center().0 - 300, center().1 - 100, "This is an example application written in Rust and using the FLTK Gui library."),
                }
            }
        }
    }
source

pub fn undo(&self)

Undo changes in the TextEditor widget

source

pub fn redo(&self)

Undo changes in the TextEditor widget

source

pub fn kf_default(&mut self, c: Key)

Inserts the text associated with key ‘c’

source

pub fn kf_ignore(&mut self, c: Key)

Ignores the key ‘c’ in editor

source

pub fn kf_backspace(&mut self)

Does a backspace

source

pub fn kf_enter(&mut self)

Inserts a new line

source

pub fn kf_move(&mut self, c: Key)

Moves the cursor in the direction indicated by the key

source

pub fn kf_shift_move(&mut self, c: Key)

Extends the current selection in the direction of key ‘c’

source

pub fn kf_ctrl_move(&mut self, c: Key)

Moves the current text cursor in the direction indicated by control key ‘c’

source

pub fn kf_c_s_move(&mut self, c: Key)

Extends the current selection in the direction indicated by control key ‘c’

source

pub fn kf_meta_move(&mut self, c: Key)

Moves the current text cursor in the direction indicated by meta key ‘c’

source

pub fn kf_m_s_move(&mut self, c: Key)

Extends the current selection in the direction indicated by meta key ‘c’

source

pub fn kf_home(&mut self)

Moves the text cursor to the beginning of the current line

source

pub fn kf_end(&mut self)

Moves the text cursor to the end of the current line

source

pub fn kf_left(&mut self)

Moves the text cursor one character to the left

source

pub fn kf_up(&mut self)

Moves the text cursor one line up

source

pub fn kf_right(&mut self)

Moves the text cursor one character to the right

source

pub fn kf_down(&mut self)

Moves the text cursor one line down

source

pub fn kf_page_up(&mut self)

Moves the text cursor up one page

source

pub fn kf_page_down(&mut self)

Moves the text cursor down one page

source

pub fn kf_insert(&mut self)

Toggles the insert mode for the editor

source

pub fn kf_delete(&mut self)

Does a delete of selected text or the current character in the current buffer

source

pub fn kf_select_all(&mut self)

Selects all text in the associated buffer

source

pub fn add_key_binding( &mut self, key: Key, shortcut: Shortcut, cb: fn(key: Key, editor: TextEditorPtr) -> i32 )

Add a key binding

source

pub fn remove_key_binding(&mut self, key: Key, shortcut: Shortcut)

Remove a key binding

Trait Implementations§

source§

impl Clone for TextEditor

source§

fn clone(&self) -> TextEditor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TextEditor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TextEditor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl DisplayExt for TextEditor

source§

fn buffer(&self) -> Option<TextBuffer>

Get the associated TextBuffer
source§

fn set_buffer<B: Into<Option<TextBuffer>>>(&mut self, buffer: B)

Sets the associated TextBuffer. Since the widget is long-lived, the lifetime of the buffer is prolonged to the lifetime of the program
source§

fn style_buffer(&self) -> Option<TextBuffer>

Get the associated style TextBuffer
source§

fn text_font(&self) -> Font

Return the text font
source§

fn set_text_font(&mut self, font: Font)

Sets the text font
source§

fn text_color(&self) -> Color

Return the text color
source§

fn set_text_color(&mut self, color: Color)

Sets the text color
source§

fn text_size(&self) -> i32

Return the text size
source§

fn set_text_size(&mut self, sz: i32)

Sets the text size
source§

fn scroll(&mut self, top_line_num: i32, h_offset: i32)

Scroll down the Display widget
source§

fn insert(&self, text: &str)

Insert into Display widget
source§

fn set_insert_position(&mut self, new_pos: i32)

Set the insert position
source§

fn insert_position(&self) -> i32

Return the insert position
source§

fn position_to_xy(&self, pos: i32) -> (i32, i32)

Gets the x and y positions of the cursor
source§

fn count_lines(&self, start: i32, end: i32, is_line_start: bool) -> i32

Counts the lines from start to end
source§

fn move_right(&mut self) -> Result<(), FltkError>

Moves the cursor right Read more
source§

fn move_left(&mut self) -> Result<(), FltkError>

Moves the cursor left Read more
source§

fn move_up(&mut self) -> Result<(), FltkError>

Moves the cursor up Read more
source§

fn move_down(&mut self) -> Result<(), FltkError>

Moves the cursor down Read more
source§

fn show_cursor(&mut self, val: bool)

Shows/hides the cursor
source§

fn set_highlight_data<B: Into<Option<TextBuffer>>, E: Into<Vec<StyleTableEntry>>>( &mut self, style_buffer: B, entries: E )

Sets the style of the text widget
source§

fn set_highlight_data_ext<B: Into<Option<TextBuffer>>, E: Into<Vec<StyleTableEntryExt>>>( &mut self, style_buffer: B, entries: E )

Sets the style of the text widget
source§

fn unset_highlight_data<B: Into<Option<TextBuffer>>>(&mut self, style_buffer: B)

Unset the style of the text widget
source§

fn set_cursor_style(&mut self, style: Cursor)

Sets the cursor style
source§

fn set_cursor_color(&mut self, color: Color)

Sets the cursor color
source§

fn set_scrollbar_size(&mut self, size: i32)

Sets the scrollbar size in pixels
source§

fn set_scrollbar_align(&mut self, align: Align)

Sets the scrollbar alignment
source§

fn cursor_style(&self) -> Cursor

Returns the cursor style
source§

fn cursor_color(&self) -> Color

Returns the cursor color
source§

fn scrollbar_size(&self) -> i32

Returns the scrollbar size in pixels
source§

fn scrollbar_align(&self) -> Align

Returns the scrollbar alignment
source§

fn line_start(&self, pos: i32) -> i32

Returns the beginning of the line from the current position. Returns new position as index
source§

fn line_end(&self, start_pos: i32, is_line_start: bool) -> i32

Returns the ending of the line from the current position. Returns new position as index
source§

fn skip_lines(&mut self, start_pos: i32, lines: i32, is_line_start: bool) -> i32

Skips lines from start_pos
source§

fn rewind_lines(&mut self, start_pos: i32, lines: i32) -> i32

Rewinds the lines
source§

fn next_word(&mut self)

Goes to the next word
source§

fn previous_word(&mut self)

Goes to the previous word
source§

fn word_start(&self, pos: i32) -> i32

Returns the position of the start of the word, relative to the current position
source§

fn word_end(&self, pos: i32) -> i32

Returns the position of the end of the word, relative to the current position
source§

fn x_to_col(&self, x: f64) -> f64

Convert an x pixel position into a column number.
source§

fn col_to_x(&self, col: f64) -> f64

Convert a column number into an x pixel position
source§

fn set_linenumber_width(&mut self, w: i32)

Sets the linenumber width
source§

fn linenumber_width(&self) -> i32

Gets the linenumber width
source§

fn set_linenumber_font(&mut self, font: Font)

Sets the linenumber font
source§

fn linenumber_font(&self) -> Font

Gets the linenumber font
source§

fn set_linenumber_size(&mut self, size: i32)

Sets the linenumber size
source§

fn linenumber_size(&self) -> i32

Gets the linenumber size
source§

fn set_linenumber_fgcolor(&mut self, color: Color)

Sets the linenumber foreground color
source§

fn linenumber_fgcolor(&self) -> Color

Gets the linenumber foreground color
source§

fn set_linenumber_bgcolor(&mut self, color: Color)

Sets the linenumber background color
source§

fn linenumber_bgcolor(&self) -> Color

Gets the linenumber background color
source§

fn set_linenumber_align(&mut self, align: Align)

Sets the linenumber alignment
source§

fn linenumber_align(&self) -> Align

Gets the linenumber alignment
source§

fn in_selection(&self, x: i32, y: i32) -> bool

Checks whether a pixel is within a text selection
source§

fn wrap_mode(&mut self, wrap: WrapMode, wrap_margin: i32)

Sets the wrap mode of the Display widget. If the wrap mode is AtColumn, wrap margin is the column. If the wrap mode is AtPixel, wrap margin is the pixel. For more info
source§

fn wrapped_column(&self, row: i32, column: i32) -> i32

Correct a column number based on an unconstrained position
source§

fn wrapped_row(&self, row: i32) -> i32

Correct a row number from an unconstrained position
source§

fn set_grammar_underline_color(&mut self, color: Color)

Set the grammar underline color
source§

fn grammar_underline_color(&self) -> Color

Get the grammar underline color
source§

fn set_spelling_underline_color(&mut self, color: Color)

Set the spelling underline color
source§

fn spelling_underline_color(&self) -> Color

Get the spelling underline color
source§

fn set_secondary_selection_color(&mut self, color: Color)

Set the secondary selection color
source§

fn secondary_selection_color(&self) -> Color

Get the secondary selection color
source§

fn show_insert_position(&mut self)

Scrolls the text buffer to show the current insert position
source§

impl PartialEq for TextEditor

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl WidgetBase for TextEditor

source§

fn new<T: Into<Option<&'static str>>>( x: i32, y: i32, width: i32, height: i32, title: T ) -> TextEditor

Creates a new widget, takes an x, y coordinates, as well as a width and height, plus a title Read more
source§

fn default_fill() -> Self

Constructs a widget with the size of its parent
source§

fn delete(wid: Self)

Deletes widgets and their children.
source§

unsafe fn from_widget_ptr(ptr: *mut Fl_Widget) -> Self

transforms a widget pointer to a Widget, for internal use Read more
source§

unsafe fn from_widget<W: WidgetExt>(w: W) -> Self

Get a widget from base widget Read more
source§

fn handle<F: FnMut(&mut Self, Event) -> bool + 'static>(&mut self, cb: F)

Set a custom handler, where events are managed manually, akin to Fl_Widget::handle(int). Handled or ignored events should return true, unhandled events should return false. takes the widget as a closure argument. The ability to handle an event might depend on handling other events, as explained here
source§

fn draw<F: FnMut(&mut Self) + 'static>(&mut self, cb: F)

Set a custom draw method. takes the widget as a closure argument. macOS requires that WidgetBase::draw actually calls drawing functions
source§

fn resize_callback<F: FnMut(&mut Self, i32, i32, i32, i32) + 'static>( &mut self, cb: F )

Perform a callback on resize. Avoid resizing the parent or the same widget to avoid infinite recursion
source§

unsafe fn assume_derived(&mut self)

Makes the widget derived Read more
source§

fn from_dyn_widget<W: WidgetExt>(w: &W) -> Option<Self>

Cast a type-erased widget back to its original widget
source§

fn from_dyn_widget_ptr(w: *mut Fl_Widget) -> Option<Self>

Cast a type-erased widget pointer back to its original widget
source§

impl WidgetExt for TextEditor

source§

fn center_x<W: WidgetExt>(self, w: &W) -> Self

Initialize center of another widget

source§

fn center_y<W: WidgetExt>(self, w: &W) -> Self

Initialize center of another widget

source§

fn with_pos(self, x: i32, y: i32) -> Self

Initialize to a position x, y
source§

fn with_size(self, width: i32, height: i32) -> Self

Initialize to size width, height
source§

fn with_label(self, title: &str) -> Self

Initialize with a label
source§

fn with_align(self, align: Align) -> Self

Initialize with alignment
source§

fn with_type<T: WidgetType>(self, typ: T) -> Self

Initialize with type
source§

fn below_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self

Initialize at bottom of another widget
source§

fn above_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self

Initialize above of another widget
source§

fn right_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self

Initialize right of another widget
source§

fn left_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self

Initialize left of another widget
source§

fn center_of<W: WidgetExt>(self, w: &W) -> Self

Initialize center of another widget
source§

fn center_of_parent(self) -> Self

Initialize center of parent
source§

fn size_of<W: WidgetExt>(self, w: &W) -> Self

Initialize to the size of another widget
source§

fn size_of_parent(self) -> Self

Initialize to the size of the parent
source§

fn set_pos(&mut self, x: i32, y: i32)

Set to position x, y
source§

fn set_size(&mut self, width: i32, height: i32)

Set to dimensions width and height
source§

fn set_label(&mut self, title: &str)

Sets the widget’s label. labels support special symbols preceded by an @ sign. and for the associated formatting.
source§

fn redraw(&mut self)

Redraws a widget, necessary for resizing and changing positions
source§

fn show(&mut self)

Shows the widget
source§

fn hide(&mut self)

Hides the widget
source§

fn x(&self) -> i32

Returns the x coordinate of the widget
source§

fn y(&self) -> i32

Returns the y coordinate of the widget
source§

fn width(&self) -> i32

Returns the width of the widget
source§

fn height(&self) -> i32

Returns the height of the widget
source§

fn w(&self) -> i32

Returns the width of the widget
source§

fn h(&self) -> i32

Returns the height of the widget
source§

fn label(&self) -> String

Returns the label of the widget
source§

fn measure_label(&self) -> (i32, i32)

Measures the label’s width and height
source§

fn as_widget_ptr(&self) -> *mut Fl_Widget

transforms a widget to a base Fl_Widget, for internal use
source§

fn activate(&mut self)

Activates the widget
source§

fn deactivate(&mut self)

Deactivates the widget
source§

fn redraw_label(&mut self)

Redraws the label of the widget
source§

fn resize(&mut self, x: i32, y: i32, width: i32, height: i32)

Resizes and/or moves the widget, takes x, y, width and height
source§

fn widget_resize(&mut self, x: i32, y: i32, width: i32, height: i32)

Does a simple resize ignoring class-specific resize functionality
source§

fn tooltip(&self) -> Option<String>

Returns the tooltip text
source§

fn set_tooltip(&mut self, txt: &str)

Sets the tooltip text
source§

fn color(&self) -> Color

Returns the widget color
source§

fn set_color(&mut self, color: Color)

Sets the widget’s color
source§

fn label_color(&self) -> Color

Returns the widget label’s color
source§

fn set_label_color(&mut self, color: Color)

Sets the widget label’s color
source§

fn label_font(&self) -> Font

Returns the widget label’s font
source§

fn set_label_font(&mut self, font: Font)

Sets the widget label’s font
source§

fn label_size(&self) -> i32

Returns the widget label’s size
source§

fn set_label_size(&mut self, sz: i32)

Sets the widget label’s size
source§

fn label_type(&self) -> LabelType

Returns the widget label’s type
source§

fn set_label_type(&mut self, typ: LabelType)

Sets the widget label’s type
source§

fn frame(&self) -> FrameType

Returns the widget’s frame type
source§

fn set_frame(&mut self, typ: FrameType)

Sets the widget’s frame type
source§

fn changed(&self) -> bool

Returns whether the widget was changed
source§

fn set_changed(&mut self)

Mark the widget as changed
source§

fn clear_changed(&mut self)

Clears the changed status of the widget
source§

fn align(&self) -> Align

Returns the alignment of the widget
source§

fn set_align(&mut self, align: Align)

Sets the alignment of the widget
source§

fn set_trigger(&mut self, trigger: CallbackTrigger)

Sets the default callback trigger for a widget, equivalent to when()
source§

fn trigger(&self) -> CallbackTrigger

Return the callback trigger, equivalent to when()
source§

fn parent(&self) -> Option<Group>

Returns the parent of the widget
source§

fn selection_color(&self) -> Color

Gets the selection color of the widget
source§

fn set_selection_color(&mut self, color: Color)

Sets the selection color of the widget
source§

fn do_callback(&mut self)

Runs the already registered callback
source§

fn window(&self) -> Option<Box<dyn WindowExt>>

Returns the direct window holding the widget
source§

fn top_window(&self) -> Option<Box<dyn WindowExt>>

Returns the topmost window holding the widget
source§

fn takes_events(&self) -> bool

Checks whether a widget is capable of taking events
source§

fn take_focus(&mut self) -> Result<(), FltkError>

Make the widget take focus Read more
source§

fn set_visible_focus(&mut self)

Set the widget to have visible focus
source§

fn clear_visible_focus(&mut self)

Clear visible focus
source§

fn visible_focus(&mut self, v: bool)

Set the visible focus using a flag
source§

fn has_visible_focus(&self) -> bool

Return whether the widget has visible focus
source§

fn has_focus(&self) -> bool

Return whether the widget has focus
source§

fn was_deleted(&self) -> bool

Check if a widget was deleted
source§

fn damage(&self) -> bool

Return whether the widget was damaged
source§

fn set_damage(&mut self, flag: bool)

Signal the widget as damaged and it should be redrawn in the next event loop cycle
source§

fn damage_type(&self) -> Damage

Return the damage mask
source§

fn set_damage_type(&mut self, mask: Damage)

Signal the type of damage a widget received
source§

fn set_damage_area(&mut self, mask: Damage, x: i32, y: i32, w: i32, h: i32)

Signal damage for an area inside the widget
source§

fn clear_damage(&mut self)

Clear the damaged flag
source§

fn as_window(&self) -> Option<Box<dyn WindowExt>>

Return the widget as a window if it’s a window
source§

fn as_group(&self) -> Option<Group>

Return the widget as a group widget if it’s a group widget
source§

fn inside<W: WidgetExt>(&self, wid: &W) -> bool

Checks whether the self widget is inside another widget
source§

fn get_type<T: WidgetType>(&self) -> T

Returns the widget type when applicable
source§

fn set_type<T: WidgetType>(&mut self, typ: T)

Sets the widget type
source§

fn set_image<I: ImageExt>(&mut self, image: Option<I>)

Sets the image of the widget
source§

fn set_image_scaled<I: ImageExt>(&mut self, image: Option<I>)

Sets the image of the widget scaled to the widget’s size
source§

fn image(&self) -> Option<Box<dyn ImageExt>>

Gets the image associated with the widget
source§

unsafe fn image_mut(&self) -> Option<&mut Image>

Get a reference type of the widget’s image Read more
source§

fn set_deimage<I: ImageExt>(&mut self, image: Option<I>)

Sets the deactivated image of the widget
source§

fn set_deimage_scaled<I: ImageExt>(&mut self, image: Option<I>)

Sets the deactivated image of the widget scaled to the widget’s size
source§

fn deimage(&self) -> Option<Box<dyn ImageExt>>

Gets the deactivated image associated with the widget
source§

unsafe fn deimage_mut(&self) -> Option<&mut Image>

Get a reference type of the widget’s deactivated image Read more
source§

fn set_callback<F: FnMut(&mut Self) + 'static>(&mut self, cb: F)

Sets the callback when the widget is triggered (clicks for example) takes the widget as a closure argument
source§

fn emit<T: 'static + Clone + Send + Sync>(&mut self, sender: Sender<T>, msg: T)

Emits a message on callback using a sender
source§

unsafe fn into_widget<W: WidgetBase>(&self) -> W

Upcast a WidgetExt to some widget type Read more
source§

fn visible(&self) -> bool

Returns whether a widget is visible
source§

fn visible_r(&self) -> bool

Returns whether a widget or any of its parents are visible (recursively)
source§

fn is_same<W: WidgetExt>(&self, other: &W) -> bool

Return whether two widgets object point to the same widget
source§

fn active(&self) -> bool

Returns whether a widget is active
source§

fn active_r(&self) -> bool

Returns whether a widget or any of its parents are active (recursively)
source§

fn handle_event(&mut self, event: Event) -> bool

Handle a specific event
source§

fn is_derived(&self) -> bool

Check whether a widget is derived
source§

fn as_base_widget(&self) -> Widgetwhere Self: Sized,

Upcast a WidgetExt to a Widget
source§

impl Eq for TextEditor

source§

impl Send for TextEditor

Available on non-crate feature single-threaded only.
source§

impl Sync for TextEditor

Available on non-crate feature single-threaded only.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<W> WidgetId<W> for Wwhere W: WidgetExt + Send + Sync + Clone + 'static,

source§

fn set_id(&mut self, id: &str)

Set the widget’s Id
source§

fn with_id(self, id: &str) -> W

Construct a widget with an Id