egui changes
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
use eframe::egui;
|
||||
use egui_code_editor::{CodeEditor, ColorTheme, Syntax};
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
/// Returns a [`Syntax`] definition for the Rhai scripting language.
|
||||
///
|
||||
/// Keyword sets are sourced from the official
|
||||
/// [rhaiscript/sublime-rhai](https://github.com/rhaiscript/sublime-rhai) grammar (MPL-2.0).
|
||||
pub(crate) fn rhai_syntax() -> Syntax {
|
||||
Syntax {
|
||||
language: "Rhai",
|
||||
case_sensitive: true,
|
||||
comment: "//",
|
||||
comment_multiline: ["/*", "*/"],
|
||||
hyperlinks: BTreeSet::new(),
|
||||
keywords: BTreeSet::from([
|
||||
"if", "else", "switch", "for", "in", "loop", "do", "while", "until", "break",
|
||||
"continue", "return", "throw", "try", "catch", "let", "const", "fn", "import",
|
||||
"export", "as", "private",
|
||||
]),
|
||||
// Boolean literals and context keywords get a distinct type color.
|
||||
types: BTreeSet::from(["true", "false", "this", "global"]),
|
||||
// Built-in Rhai functions highlighted as special identifiers.
|
||||
special: BTreeSet::from([
|
||||
"print",
|
||||
"debug",
|
||||
"type_of",
|
||||
"is_def_var",
|
||||
"is_def_fn",
|
||||
"is_shared",
|
||||
"call",
|
||||
"curry",
|
||||
"eval",
|
||||
]),
|
||||
}
|
||||
}
|
||||
|
||||
/// Renders the script code editor and header bar inside `ui`.
|
||||
///
|
||||
/// Returns `true` when the user clicks "Back", signalling the caller to save
|
||||
/// `content` back to `board.scripts` and close the editor.
|
||||
pub(crate) fn show(ui: &mut egui::Ui, name: &str, content: &mut String) -> bool {
|
||||
let mut done = false;
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
if ui.button("◄ Back").clicked() {
|
||||
done = true;
|
||||
}
|
||||
ui.label(format!("Editing: {name}"));
|
||||
});
|
||||
ui.separator();
|
||||
|
||||
CodeEditor::default()
|
||||
.id_source("script_editor")
|
||||
.with_rows(30)
|
||||
.with_fontsize(14.0)
|
||||
.with_theme(ColorTheme::GRUVBOX)
|
||||
.with_syntax(rhai_syntax())
|
||||
.show(ui, content);
|
||||
|
||||
done
|
||||
}
|
||||
Reference in New Issue
Block a user