gestura_core_tools/
gui.rs1use crate::error::Result;
12use serde::{Deserialize, Serialize};
13
14#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
16#[serde(rename_all = "snake_case")]
17pub enum GuiAction {
18 ToggleViewMode,
19 OpenExplorer,
20 CloseExplorer,
21 OpenChat,
22 CloseChat,
23 NavigateConfig,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct GuiControlRequest {
29 pub action: GuiAction,
30 pub target: Option<String>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct GuiControlResponse {
36 pub success: bool,
37 pub action: GuiAction,
38 pub message: String,
39}
40
41pub async fn execute_gui_control(req: GuiControlRequest) -> Result<GuiControlResponse> {
45 let message = format!("Dispatched UI action '{:?}' successfully.", req.action);
48
49 Ok(GuiControlResponse {
50 success: true,
51 action: req.action,
52 message,
53 })
54}