From 65e8e03224ba87c197f21ce046fdc7e193cd7bce Mon Sep 17 00:00:00 2001 From: filipriec Date: Sun, 25 May 2025 15:27:41 +0200 Subject: [PATCH] better and better add script --- client/src/components/admin/add_logic.rs | 19 ++++++++++++++++++- .../functions/modes/read_only/add_logic_ro.rs | 10 ++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/client/src/components/admin/add_logic.rs b/client/src/components/admin/add_logic.rs index 198bfca..a840fd9 100644 --- a/client/src/components/admin/add_logic.rs +++ b/client/src/components/admin/add_logic.rs @@ -14,6 +14,7 @@ use ratatui::{ use crate::components::handlers::canvas::render_canvas; use crate::components::common::dialog; use crate::config::binds::config::EditorKeybindingMode; +// Remove the CursorStyle import pub fn render_add_logic( f: &mut Frame, @@ -41,6 +42,16 @@ pub fn render_add_logic( let border_style = Style::default().fg(border_style_color); editor_ref.set_cursor_line_style(Style::default()); + + // Set cursor style: underscore when not in edit mode, block when in edit mode + let cursor_style = if is_edit_mode { + // Block cursor (default reversed style) + Style::default().bg(theme.highlight).fg(theme.bg) + } else { + // Underscore cursor (underline style) + Style::default().add_modifier(Modifier::UNDERLINED).fg(theme.highlight) + }; + editor_ref.set_cursor_style(cursor_style); let script_title_hint = match add_logic_state.editor_keybinding_mode { EditorKeybindingMode::Vim => { @@ -137,6 +148,12 @@ pub fn render_add_logic( { let mut editor_ref = add_logic_state.script_content_editor.borrow_mut(); editor_ref.set_cursor_line_style(Style::default()); + + // Set cursor style for preview mode (underscore style) + let preview_cursor_style = Style::default() + .add_modifier(Modifier::UNDERLINED) + .fg(theme.secondary); + editor_ref.set_cursor_style(preview_cursor_style); let is_script_focused = add_logic_state.current_focus == AddLogicFocus::ScriptContentPreview; let border_style_color = if is_script_focused { @@ -167,7 +184,7 @@ pub fn render_add_logic( f.render_widget(&*editor_ref, script_content_area); } - // Buttons + // Buttons (rest remains the same) let get_button_style = |button_focus: AddLogicFocus, current_focus| { let is_focused = current_focus == button_focus; let base_style = Style::default().fg(if is_focused { diff --git a/client/src/functions/modes/read_only/add_logic_ro.rs b/client/src/functions/modes/read_only/add_logic_ro.rs index b7dc4da..842ea19 100644 --- a/client/src/functions/modes/read_only/add_logic_ro.rs +++ b/client/src/functions/modes/read_only/add_logic_ro.rs @@ -107,16 +107,18 @@ pub async fn execute_action( state.set_current_cursor_pos(new_pos); } else { // Move focus outside canvas when moving down from the last field + // FIX: Go to ScriptContentPreview instead of SaveButton app_state.ui.focus_outside_canvas = true; state.last_canvas_field = 2; - state.current_focus = crate::state::pages::add_logic::AddLogicFocus::SaveButton; - *command_message = "Focus moved below canvas".to_string(); + state.current_focus = crate::state::pages::add_logic::AddLogicFocus::ScriptContentPreview; // FIXED! + *command_message = "Focus moved to script preview".to_string(); } Ok(command_message.clone()) } + // ... (rest of the actions remain the same) ... "move_first_line" => { key_sequence_tracker.reset(); - if AddLogicState::INPUT_FIELD_COUNT > 0 { // Changed + if AddLogicState::INPUT_FIELD_COUNT > 0 { state.set_current_field(0); let current_input = state.get_current_input(); let max_cursor_pos = if current_input.is_empty() { 0 } else { current_input.len().saturating_sub(1) }; @@ -128,7 +130,7 @@ pub async fn execute_action( } "move_last_line" => { key_sequence_tracker.reset(); - let num_fields = AddLogicState::INPUT_FIELD_COUNT; // Changed + let num_fields = AddLogicState::INPUT_FIELD_COUNT; if num_fields > 0 { let last_field_index = num_fields - 1; state.set_current_field(last_field_index);