add script now has a proper way of doing things

This commit is contained in:
filipriec
2025-05-25 15:46:06 +02:00
parent 65e8e03224
commit 81235c67dc

View File

@@ -14,7 +14,6 @@ use ratatui::{
use crate::components::handlers::canvas::render_canvas; use crate::components::handlers::canvas::render_canvas;
use crate::components::common::dialog; use crate::components::common::dialog;
use crate::config::binds::config::EditorKeybindingMode; use crate::config::binds::config::EditorKeybindingMode;
// Remove the CursorStyle import
pub fn render_add_logic( pub fn render_add_logic(
f: &mut Frame, f: &mut Frame,
@@ -22,7 +21,7 @@ pub fn render_add_logic(
theme: &Theme, theme: &Theme,
app_state: &AppState, app_state: &AppState,
add_logic_state: &mut AddLogicState, add_logic_state: &mut AddLogicState,
is_edit_mode: bool, is_edit_mode: bool, // Used for border/title hints in InsideScriptContent
highlight_state: &HighlightState, highlight_state: &HighlightState,
) { ) {
let main_block = Block::default() let main_block = Block::default()
@@ -42,31 +41,23 @@ pub fn render_add_logic(
let border_style = Style::default().fg(border_style_color); let border_style = Style::default().fg(border_style_color);
editor_ref.set_cursor_line_style(Style::default()); editor_ref.set_cursor_line_style(Style::default());
// Explicitly set to tui-textarea's default "active" editing cursor style
// Set cursor style: underscore when not in edit mode, block when in edit mode editor_ref.set_cursor_style(Style::default().add_modifier(Modifier::REVERSED));
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 { let script_title_hint = match add_logic_state.editor_keybinding_mode {
EditorKeybindingMode::Vim => { EditorKeybindingMode::Vim => {
let vim_mode_status = crate::components::common::text_editor::TextEditor::get_vim_mode_status(&add_logic_state.vim_state); let vim_mode_status = crate::components::common::text_editor::TextEditor::get_vim_mode_status(&add_logic_state.vim_state);
if is_edit_mode { if is_edit_mode { // is_edit_mode here refers to Vim's Insert mode
format!("Script (VIM {}) - Esc for Normal. Esc again to exit.", vim_mode_status) format!("Script {}", vim_mode_status)
} else { } else {
format!("Script (VIM {}) - 'i'/'a'/'o' for Insert. Esc to exit.", vim_mode_status) format!("Script {}", vim_mode_status)
} }
} }
EditorKeybindingMode::Emacs | EditorKeybindingMode::Default => { EditorKeybindingMode::Emacs | EditorKeybindingMode::Default => {
if is_edit_mode { if is_edit_mode {
"Script (Editing - Esc to exit edit. Esc again to exit script.)".to_string() "Script (Editing)".to_string()
} else { } else {
"Script (Press Enter or Ctrl+E to edit. Esc to exit.)".to_string() "Script".to_string()
} }
} }
}; };
@@ -140,35 +131,41 @@ pub fn render_add_logic(
&add_logic_state.current_field(), &add_logic_state.current_field(),
&add_logic_state.inputs(), &add_logic_state.inputs(),
theme, theme,
is_edit_mode && focus_on_canvas_inputs, is_edit_mode && focus_on_canvas_inputs, // is_edit_mode for canvas fields
highlight_state, highlight_state,
); );
// Script content preview (like table preview in add_table) // Script content preview
{ {
let mut editor_ref = add_logic_state.script_content_editor.borrow_mut(); let mut editor_ref = add_logic_state.script_content_editor.borrow_mut();
editor_ref.set_cursor_line_style(Style::default()); 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 is_script_preview_focused = add_logic_state.current_focus == AddLogicFocus::ScriptContentPreview;
let border_style_color = if is_script_focused {
if is_script_preview_focused {
// When script PREVIEW is focused, use tui-textarea's default "active" cursor (block-like).
editor_ref.set_cursor_style(Style::default().add_modifier(Modifier::REVERSED));
} else {
// When script PREVIEW is NOT focused, use an underscore cursor.
let underscore_cursor_style = Style::default()
.add_modifier(Modifier::UNDERLINED)
.fg(theme.secondary);
editor_ref.set_cursor_style(underscore_cursor_style);
}
let border_style_color = if is_script_preview_focused {
theme.highlight // Green highlight when focused and ready to select theme.highlight // Green highlight when focused and ready to select
} else { } else {
theme.secondary theme.secondary
}; };
let title_text = if is_script_focused { let title_text = if is_script_preview_focused {
"Script Preview (Press Enter to edit) [FOCUSED]" "Script Preview"
} else { } else {
"Script Preview" "Script Preview"
}; };
let title_style = if is_script_focused { let title_style = if is_script_preview_focused {
Style::default().fg(theme.highlight).add_modifier(Modifier::BOLD) Style::default().fg(theme.highlight).add_modifier(Modifier::BOLD)
} else { } else {
Style::default().fg(theme.fg) Style::default().fg(theme.fg)
@@ -184,7 +181,7 @@ pub fn render_add_logic(
f.render_widget(&*editor_ref, script_content_area); f.render_widget(&*editor_ref, script_content_area);
} }
// Buttons (rest remains the same) // Buttons
let get_button_style = |button_focus: AddLogicFocus, current_focus| { let get_button_style = |button_focus: AddLogicFocus, current_focus| {
let is_focused = current_focus == button_focus; let is_focused = current_focus == button_focus;
let base_style = Style::default().fg(if is_focused { let base_style = Style::default().fg(if is_focused {