modified editor to include syntax for .dsc files
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
use super::Syntax;
|
||||||
|
use std::collections::BTreeSet;
|
||||||
|
|
||||||
|
impl Syntax {
|
||||||
|
pub fn dsc() -> Self {
|
||||||
|
Syntax {
|
||||||
|
language: "Damn Simple Code",
|
||||||
|
case_sensitive: false,
|
||||||
|
comment: "//",
|
||||||
|
comment_multiline: ["/*", "*/"],
|
||||||
|
hyperlinks: BTreeSet::from(["http"]),
|
||||||
|
keywords: BTreeSet::from([
|
||||||
|
"include", "fn", "let", "const", "static", "if", "else", "while", "for",
|
||||||
|
"break", "continue", "loop", "return",
|
||||||
|
]),
|
||||||
|
types: BTreeSet::from([
|
||||||
|
"u32", "u16", "u8", "i32", "i16", "i8", "str", "char", "bool", "void",
|
||||||
|
]),
|
||||||
|
special: BTreeSet::from([
|
||||||
|
",", ";", ".", ":", "=", "+", "-", "*", "/", "%", "&", "|", "^", "~",
|
||||||
|
"!", "?", "<", ">", "<<", ">>", "==", "!=", "<=", ">=", "&&", "||",
|
||||||
|
]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
pub mod dsa;
|
pub mod dsa;
|
||||||
|
pub mod dsc;
|
||||||
|
|
||||||
use std::collections::BTreeSet;
|
use std::collections::BTreeSet;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
|
|||||||
@@ -393,8 +393,9 @@ impl Editor {
|
|||||||
fn render_editor(&mut self, _state: &mut State, ui: &mut Ui, _ctx: &Context) {
|
fn render_editor(&mut self, _state: &mut State, ui: &mut Ui, _ctx: &Context) {
|
||||||
let available_width = ui.available_width();
|
let available_width = ui.available_width();
|
||||||
let syntax = match self.extension() {
|
let syntax = match self.extension() {
|
||||||
"dsa" => Some(Syntax::new("dsa")),
|
"dsa" => Syntax::dsa(),
|
||||||
_ => None,
|
"dsc" => Syntax::dsc(),
|
||||||
|
_ => Syntax::default(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let ed = CodeEditor::default()
|
let ed = CodeEditor::default()
|
||||||
@@ -402,16 +403,12 @@ impl Editor {
|
|||||||
.with_fontsize(12.0)
|
.with_fontsize(12.0)
|
||||||
.with_rows(0)
|
.with_rows(0)
|
||||||
.with_theme(ColorTheme::default())
|
.with_theme(ColorTheme::default())
|
||||||
.with_syntax(Syntax::dsa())
|
.with_syntax(syntax)
|
||||||
.with_numlines(true)
|
.with_numlines(true)
|
||||||
.desired_width(available_width - 500.0);
|
.desired_width(available_width - 500.0);
|
||||||
|
|
||||||
let mut editor = ed.clone();
|
let mut editor = ed.clone();
|
||||||
|
|
||||||
if let Some(syntax) = syntax {
|
|
||||||
editor = ed.with_syntax(syntax);
|
|
||||||
}
|
|
||||||
|
|
||||||
editor.show(ui, &mut self.text);
|
editor.show(ui, &mut self.text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-53
@@ -1,53 +0,0 @@
|
|||||||
use std::{
|
|
||||||
sync::{Arc, Mutex},
|
|
||||||
thread,
|
|
||||||
};
|
|
||||||
|
|
||||||
use dsa_rs::emulator::{
|
|
||||||
system::{emulator::run_emulator, memory::MainStore, processor::Processor},
|
|
||||||
ui::{
|
|
||||||
control_unit::ControlPanel, interface::EmulatorUI, memory_inspector::MemoryInspector,
|
|
||||||
stack_inspector::StackInspector,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
fn main() -> Result<(), eframe::Error> {
|
|
||||||
// Initialize Channels
|
|
||||||
let (cmd_sender, cmd_receiver) = std::sync::mpsc::channel();
|
|
||||||
let (state_sender, state_receiver) = std::sync::mpsc::channel();
|
|
||||||
|
|
||||||
let mainstore = MainStore::new();
|
|
||||||
let processor = Processor::new(Box::new(mainstore), vec![]);
|
|
||||||
|
|
||||||
thread::spawn(move || {
|
|
||||||
run_emulator(&cmd_receiver, &state_sender, processor);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create UI
|
|
||||||
let mut ui = EmulatorUI::new(cmd_sender.clone(), state_receiver);
|
|
||||||
|
|
||||||
// Create UI modules
|
|
||||||
let control_unit = ControlPanel::new(cmd_sender.clone());
|
|
||||||
ui.add_component(Box::new(control_unit));
|
|
||||||
|
|
||||||
let mem_inspector = MemoryInspector::new(cmd_sender.clone());
|
|
||||||
ui.add_component(Box::new(mem_inspector));
|
|
||||||
|
|
||||||
let stack_inspector = StackInspector::new();
|
|
||||||
ui.add_component(Box::new(stack_inspector));
|
|
||||||
|
|
||||||
// Run UI
|
|
||||||
let options = eframe::NativeOptions {
|
|
||||||
viewport: egui::ViewportBuilder::default().with_inner_size([800.0, 600.0]),
|
|
||||||
..Default::default()
|
|
||||||
};
|
|
||||||
|
|
||||||
eframe::run_native(
|
|
||||||
"DSA Simulator (Damn Simple Architecture 🔥)",
|
|
||||||
options,
|
|
||||||
Box::new(move |cc| {
|
|
||||||
cc.egui_ctx.set_visuals(egui::Visuals::default());
|
|
||||||
Ok(Box::new(ui))
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user