iced?
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -1705,6 +1705,7 @@ dependencies = [
|
||||
"iced_core",
|
||||
"log",
|
||||
"rustc-hash 2.1.1",
|
||||
"tokio",
|
||||
"wasm-bindgen-futures",
|
||||
"wasm-timer",
|
||||
]
|
||||
|
||||
@@ -5,7 +5,7 @@ edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.100"
|
||||
iced = "0.13.1"
|
||||
iced = { version = "0.13.1", features = ["tokio"] }
|
||||
imara-diff = "0.2.0"
|
||||
nucleo-matcher = "0.3.1"
|
||||
rmcp = { version = "0.8.0", features = ["server", "macros", "transport-sse-server", "transport-io", "transport-streamable-http-server", "elicitation", "schemars"] }
|
||||
|
||||
24
src/gui.rs
24
src/gui.rs
@@ -0,0 +1,24 @@
|
||||
use iced::{Element, widget::text_editor};
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct State {
|
||||
content: text_editor::Content,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Message {
|
||||
Edit(text_editor::Action),
|
||||
}
|
||||
|
||||
pub fn view(state: &State) -> Element<'_, Message> {
|
||||
text_editor(&state.content)
|
||||
.placeholder("Type something here...")
|
||||
.on_action(Message::Edit)
|
||||
.into()
|
||||
}
|
||||
|
||||
pub fn update(state: &mut State, message: Message) {
|
||||
match message {
|
||||
Message::Edit(action) => {}
|
||||
}
|
||||
}
|
||||
|
||||
17
src/main.rs
17
src/main.rs
@@ -1,22 +1,28 @@
|
||||
use crate::mcp::FossilEditor;
|
||||
use crate::{
|
||||
gui::{update, view},
|
||||
mcp::FossilEditor,
|
||||
};
|
||||
use iced::Executor;
|
||||
use rmcp::{ServiceExt, transport::stdio};
|
||||
use tokio::runtime::Runtime;
|
||||
use tracing_subscriber::{self, EnvFilter};
|
||||
|
||||
mod fossil;
|
||||
mod gui;
|
||||
mod matcher;
|
||||
mod mcp;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
fn main() -> iced::Result {
|
||||
tracing_subscriber::fmt()
|
||||
.with_env_filter(EnvFilter::from_default_env().add_directive(tracing::Level::DEBUG.into()))
|
||||
.with_writer(std::io::stderr)
|
||||
.with_ansi(false)
|
||||
.init();
|
||||
|
||||
tracing::info!("Starting MCP server");
|
||||
let rt = Runtime::new().unwrap();
|
||||
|
||||
let editor = FossilEditor::new();
|
||||
rt.spawn(async {
|
||||
let service = editor
|
||||
.serve(stdio())
|
||||
.await
|
||||
@@ -26,4 +32,7 @@ async fn main() {
|
||||
.unwrap();
|
||||
|
||||
service.waiting().await.unwrap();
|
||||
});
|
||||
|
||||
iced::run("A cool counter", update, view)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user