Skip to main content

EntryDialogState

Struct EntryDialogState 

Source
pub struct EntryDialogState {
Show 19 fields pub entry_key: String, pub map_path: String, pub title: String, pub is_new: bool, pub items: Vec<SettingItem>, pub selected_item: usize, pub sub_focus: Option<usize>, pub editing_text: bool, pub focused_button: usize, pub focus_on_buttons: bool, pub delete_requested: bool, pub scroll_offset: usize, pub viewport_height: usize, pub hover_item: Option<usize>, pub hover_button: Option<usize>, pub original_value: Value, pub first_editable_index: usize, pub no_delete: bool, pub is_single_value: bool,
}
Expand description

State for the entry detail dialog

Fields§

§entry_key: String

The entry key (e.g., “rust” for language)

§map_path: String

The map path this entry belongs to (e.g., “/languages”, “/lsp”)

§title: String

Human-readable title for the dialog

§is_new: bool

Whether this is a new entry (vs editing existing)

§items: Vec<SettingItem>

Items in the dialog (using same SettingItem structure as main settings)

§selected_item: usize

Currently selected item index

§sub_focus: Option<usize>

Sub-focus index within the selected item (for TextList/Map navigation)

§editing_text: bool

Whether we’re in text editing mode

§focused_button: usize

Currently focused button (0=Save, 1=Delete, 2=Cancel for existing; 0=Save, 1=Cancel for new)

§focus_on_buttons: bool

Whether focus is on buttons (true) or items (false)

§delete_requested: bool

Whether deletion was requested

§scroll_offset: usize

Scroll offset for the items area

§viewport_height: usize

Last known viewport height (updated during render)

§hover_item: Option<usize>

Hovered item index (for mouse hover feedback)

§hover_button: Option<usize>

Hovered button index (for mouse hover feedback)

§original_value: Value

Original value when dialog was opened (for Cancel to restore)

§first_editable_index: usize

Index of first editable item (items before this are read-only) Used for rendering separator and focus navigation

§no_delete: bool

Whether deletion is disabled (for auto-managed entries like plugins)

§is_single_value: bool

When true, the dialog wraps a single non-Object value (e.g., an ObjectArray). to_value() returns the raw control value instead of wrapping in an Object.

Implementations§

Source§

impl EntryDialogState

Source

pub fn from_schema( key: String, value: &Value, schema: &SettingSchema, map_path: &str, is_new: bool, no_delete: bool, ) -> Self

Create a dialog from a schema definition

This is the primary, schema-driven constructor. It builds items dynamically from the SettingSchema’s properties using the same build logic as the main settings UI.

Source

pub fn for_array_item( index: Option<usize>, value: &Value, schema: &SettingSchema, array_path: &str, is_new: bool, ) -> Self

Create a dialog for an array item (no key field)

Used for ObjectArray controls where items are identified by index, not key.

Source

pub fn get_key(&self) -> String

Get the current key value from the key item

Source

pub fn button_count(&self) -> usize

Get button count (3 for existing entries with Delete, 2 for new/no_delete entries)

Source

pub fn to_value(&self) -> Value

Convert dialog state back to JSON value (excludes the key item)

Source

pub fn current_item(&self) -> Option<&SettingItem>

Get currently selected item

Source

pub fn current_item_mut(&mut self) -> Option<&mut SettingItem>

Get currently selected item mutably

Source

pub fn focus_next(&mut self)

Move focus to next editable item, navigating within composite controls first.

For composite controls (Map, ObjectArray, TextList), Down first navigates through their internal entries and [+] Add new row before moving to the next dialog item. When at the last editable item, wraps to buttons. When on the last button, wraps back to the first editable item.

Source

pub fn focus_prev(&mut self)

Move focus to previous editable item, navigating within composite controls first.

For composite controls, Up first navigates backwards through their internal entries before moving to the previous dialog item. When at the first editable item, wraps to buttons. When on the first button, wraps back to the last item.

Source

pub fn toggle_focus_region(&mut self)

Toggle focus between items region and buttons region. Used by Tab key to provide region-level navigation.

Source

pub fn toggle_focus_region_direction(&mut self, forward: bool)

Toggle between items and buttons regions. When in buttons region, Tab cycles through buttons before returning to items. forward controls direction: true = Tab, false = Shift+Tab.

Source

pub fn update_focus_states(&mut self)

Update focus states for all items

Source

pub fn total_content_height(&self) -> usize

Calculate total content height for all items (including separator and section headers)

Source

pub fn selected_item_offset(&self) -> usize

Calculate the Y offset of the selected item (including separator and section headers)

Source

pub fn selected_item_height(&self) -> usize

Calculate the height of the selected item

Source

pub fn ensure_selected_visible(&mut self, viewport_height: usize)

Ensure the selected item is visible within the viewport

Source

pub fn ensure_cursor_visible(&mut self)

Ensure the cursor within a JSON editor is visible

When editing a multiline JSON control, this adjusts scroll_offset to keep the cursor row visible within the viewport.

Source

pub fn scroll_up(&mut self)

Scroll up by one line

Source

pub fn scroll_down(&mut self, viewport_height: usize)

Scroll down by one line

Source

pub fn scroll_to_ratio(&mut self, ratio: f32)

Scroll to a position based on ratio (0.0 = top, 1.0 = bottom)

Used for scrollbar drag operations.

Source

pub fn start_editing(&mut self)

Start text editing mode for the current control

Source

pub fn stop_editing(&mut self)

Stop text editing mode

Source

pub fn insert_char(&mut self, c: char)

Handle character input

Source

pub fn insert_str(&mut self, s: &str)

Source

pub fn backspace(&mut self)

Handle backspace

Source

pub fn cursor_left(&mut self)

Handle cursor left

Source

pub fn cursor_left_selecting(&mut self)

Handle cursor left with selection (Shift+Left)

Source

pub fn cursor_right(&mut self)

Handle cursor right

Source

pub fn cursor_right_selecting(&mut self)

Handle cursor right with selection (Shift+Right)

Source

pub fn cursor_up(&mut self)

Handle cursor up (for multiline controls)

Source

pub fn cursor_up_selecting(&mut self)

Handle cursor up with selection (Shift+Up)

Source

pub fn cursor_down(&mut self)

Handle cursor down (for multiline controls)

Source

pub fn cursor_down_selecting(&mut self)

Handle cursor down with selection (Shift+Down)

Source

pub fn insert_newline(&mut self)

Insert newline in JSON editor

Source

pub fn revert_json_and_stop(&mut self)

Revert JSON changes to original and stop editing

Source

pub fn is_editing_json(&self) -> bool

Check if current control is a JSON editor

Source

pub fn toggle_bool(&mut self)

Toggle boolean value

Source

pub fn toggle_dropdown(&mut self)

Toggle dropdown open state

Source

pub fn dropdown_prev(&mut self)

Move dropdown selection up

Source

pub fn dropdown_next(&mut self)

Move dropdown selection down

Source

pub fn dropdown_confirm(&mut self)

Confirm dropdown selection

Source

pub fn increment_number(&mut self)

Increment number value

Source

pub fn decrement_number(&mut self)

Decrement number value

Source

pub fn delete_list_item(&mut self)

Delete the currently focused item from a TextList control

Source

pub fn delete(&mut self)

Delete character at cursor (forward delete)

Source

pub fn cursor_home(&mut self)

Move cursor to beginning of line

Source

pub fn cursor_end(&mut self)

Move cursor to end of line

Source

pub fn select_all(&mut self)

Select all text in current control

Source

pub fn selected_text(&self) -> Option<String>

Get selected text from current JSON control

Source

pub fn is_editing(&self) -> bool

Check if any field is currently in edit mode

Trait Implementations§

Source§

impl Clone for EntryDialogState

Source§

fn clone(&self) -> EntryDialogState

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EntryDialogState

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'a, T> FromIn<'a, T> for T

Source§

fn from_in(t: T, _: &'a Allocator) -> T

Converts to this type from the input type within the given allocator.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<'a, T, U> IntoIn<'a, U> for T
where U: FromIn<'a, T>,

Source§

fn into_in(self, allocator: &'a Allocator) -> U

Converts this type into the (usually inferred) input type within the given allocator.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryClone for T
where T: Clone,

Source§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ParallelSend for T