pub struct GitKraft {Show 42 fields
pub tabs: Vec<RepoTab>,
pub active_tab: usize,
pub sidebar_expanded: bool,
pub sidebar_width: f32,
pub commit_log_width: f32,
pub staging_height: f32,
pub diff_file_list_width: f32,
pub commit_ref_width: f32,
pub commit_graph_width: f32,
pub sidebar_branches_ratio: f32,
pub sidebar_stash_ratio: f32,
pub staging_unstaged_ratio: f32,
pub staging_staged_ratio: f32,
pub ui_scale: f32,
pub dragging: Option<DragTarget>,
pub dragging_h: Option<DragTargetH>,
pub drag_start_x: f32,
pub drag_start_y: f32,
pub drag_initialized: bool,
pub drag_initialized_h: bool,
pub cursor_pos: Point,
pub current_theme_index: usize,
pub follow_system: bool,
pub recent_repos: Vec<RepoHistoryEntry>,
pub show_about: bool,
pub search_visible: bool,
pub search_query: String,
pub search_results: Vec<CommitInfo>,
pub search_selected: Option<usize>,
pub search_diff_files: Vec<DiffFileEntry>,
pub search_diff_selected: HashSet<usize>,
pub search_diff_content: Vec<DiffInfo>,
pub search_diff_oid: Option<String>,
pub editor: Editor,
pub keyboard_modifiers: Modifiers,
pub animation_tick: u64,
pub window_width: f32,
pub window_height: f32,
pub window_x: f32,
pub window_y: f32,
pub preview_editor: Option<Content>,
pub preview_path: Option<String>,
}Expand description
Top-level application state for the GitKraft GUI.
Fields§
§tabs: Vec<RepoTab>All open repository tabs.
active_tab: usizeIndex of the currently active/visible tab.
Whether the left sidebar is expanded.
Width of the left sidebar in pixels.
commit_log_width: f32Width of the commit-log panel in pixels.
staging_height: f32Height of the staging area in pixels.
diff_file_list_width: f32Width of the diff file-list sidebar in pixels.
commit_ref_width: f32Width of the BRANCH/TAG column in the commit log (pixels).
commit_graph_width: f32Width of the GRAPH column in the commit log (pixels).
Fraction of sidebar height allocated to the branches section (0.0–1.0).
Fraction of sidebar height allocated to the stashes section (0.0–1.0). Remotes get the remainder: 1.0 - branches_ratio - stash_ratio.
staging_unstaged_ratio: f32Fraction of staging area width allocated to the unstaged column (0.0–1.0).
staging_staged_ratio: f32Fraction of staging area width allocated to the staged column (0.0–1.0). Commit column gets: 1.0 - unstaged_ratio - staged_ratio.
ui_scale: f32UI scale factor (1.0 = default). Adjusted with Ctrl+/Ctrl- keyboard shortcuts.
dragging: Option<DragTarget>Which vertical divider is being dragged (if any).
dragging_h: Option<DragTargetH>Which horizontal divider is being dragged (if any).
drag_start_x: f32Last known mouse X position during a drag (absolute window coords).
drag_start_y: f32Last known mouse Y position during a drag (absolute window coords).
drag_initialized: boolWhether the first move event has been received for the current vertical drag.
false right after PaneDragStart — the first PaneDragMove sets the
real start position instead of computing a bogus delta from 0.0.
drag_initialized_h: boolSame as drag_initialized but for horizontal drags.
cursor_pos: PointLast known cursor position in window coordinates. Updated on every mouse-move event so context menus open at the exact spot the user right-clicked.
current_theme_index: usizeIndex into gitkraft_core::THEME_NAMES for the currently active theme.
follow_system: boolWhether the theme follows the OS light/dark setting (“System”).
recent_repos: Vec<RepoHistoryEntry>Recently opened repositories (loaded from settings on startup).
show_about: boolWhether the About dialog is visible.
search_visible: boolWhether the search overlay is visible.
search_query: StringCurrent search query text.
search_results: Vec<CommitInfo>Search results (commit infos matching the query).
search_selected: Option<usize>Index of the selected search result.
search_diff_files: Vec<DiffFileEntry>Files changed between the selected search commit and working tree.
search_diff_selected: HashSet<usize>Selected file indices in the search diff file list.
search_diff_content: Vec<DiffInfo>The diff content for the currently viewed search diff file(s).
search_diff_oid: Option<String>OID of the commit being diffed against working tree in search.
editor: EditorConfigured editor for “Open in editor” actions.
keyboard_modifiers: ModifiersCurrent keyboard modifier state (updated via subscription).
animation_tick: u64Monotonically-increasing counter incremented on every AnimationTick.
Drives the loading-spinner frame selection in all UI widgets.
window_width: f32Last known window width (updated on WindowResized).
window_height: f32Last known window height (updated on WindowResized).
window_x: f32Last known window X position (updated on WindowMoved).
window_y: f32Last known window Y position (updated on WindowMoved).
preview_editor: Option<Content>File preview editor content — shown in the diff pane when a file preview is active.
preview_path: Option<String>Path of the file being previewed (for the header display).
Implementations§
Source§impl GitKraft
impl GitKraft
Sourcepub fn layout(&self) -> LayoutDims
pub fn layout(&self) -> LayoutDims
Pane sizes to render for the current window and stored sizes.
Source§impl GitKraft
impl GitKraft
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a fresh application state with sensible defaults.
Loads persisted settings (theme, recent repos) from disk when available.
Always starts with one empty tab — use Self::new_with_session_paths to
restore the full multi-tab session.
Sourcepub fn new_with_session_paths() -> (Self, Vec<PathBuf>)
pub fn new_with_session_paths() -> (Self, Vec<PathBuf>)
Create state and also return the saved tab paths for startup restore.
Call this from main.rs instead of Self::new; it sets up loading tabs
for every path in the persisted session and returns those paths so the
caller can spawn parallel load_repo_at tasks.
Sourcepub fn open_tab_paths(&self) -> Vec<PathBuf>
pub fn open_tab_paths(&self) -> Vec<PathBuf>
Paths of all tabs where a repository has been fully loaded
(repo_info is populated). Used to persist the multi-tab session.
Sourcepub fn session_state(&self) -> (Vec<PathBuf>, usize)
pub fn session_state(&self) -> (Vec<PathBuf>, usize)
Return the session-persistable (open_tab_paths, active_tab_index) pair.
open_tab_paths() filters out empty tabs, so the raw self.active_tab
index does not map 1-to-1. This helper computes the correct position
of the active tab within the filtered list.
Sourcepub fn active_tab(&self) -> &RepoTab
pub fn active_tab(&self) -> &RepoTab
Get a reference to the currently active tab.
Sourcepub fn active_tab_mut(&mut self) -> &mut RepoTab
pub fn active_tab_mut(&mut self) -> &mut RepoTab
Get a mutable reference to the currently active tab.
Dismiss any open context menu.
Open a context menu at the current cursor position.
Sourcepub fn repo_display_name(&self) -> String
pub fn repo_display_name(&self) -> String
Helper: the display name for the active tab’s repo.
Sourcepub fn colors(&self) -> ThemeColors
pub fn colors(&self) -> ThemeColors
Derive the full ThemeColors from the currently active core theme.
Call this at the top of view functions:
let c = state.colors();Sourcepub fn iced_theme(&self) -> Theme
pub fn iced_theme(&self) -> Theme
Return a custom iced::Theme whose Palette is derived from the
active core theme.
This is the key to making every built-in Iced widget (text inputs,
pick-lists, scrollbars, buttons without explicit .style(), etc.)
inherit the correct background, text, accent, success and danger
colours. Without this, Iced falls back to its generic Dark/Light
palette and the UI looks wrong for every non-default theme.
Sourcepub fn switch_to_existing_tab(&mut self, path: &Path) -> bool
pub fn switch_to_existing_tab(&mut self, path: &Path) -> bool
If a tab with path is already open, switch to it.
If the current tab is empty, remove it first.
Returns true if an existing tab was found and switched to.
Sourcepub fn persisted_theme_name(&self) -> &'static str
pub fn persisted_theme_name(&self) -> &'static str
Name to persist for the current choice ("System" while following the OS).
Sourcepub fn apply_theme_choice(&mut self, choice: usize) -> bool
pub fn apply_theme_choice(&mut self, choice: usize) -> bool
Apply a pick-list choice (THEME_COUNT = System, otherwise a preset
index). Returns false for out-of-range values.
Sourcepub fn refresh_system_theme(&mut self)
pub fn refresh_system_theme(&mut self)
Re-read the OS appearance while following the system.
Sourcepub fn current_theme_name(&self) -> &'static str
pub fn current_theme_name(&self) -> &'static str
The display name of the currently active preset (the resolved preset while following the system).
Sourcepub fn refresh_active_tab(&mut self) -> Task<Message>
pub fn refresh_active_tab(&mut self) -> Task<Message>
Refresh all data for the currently active tab’s repository.
Returns Task::none() if no repository is open in the active tab.
Sourcepub fn on_ok_refresh(
&mut self,
result: Result<(), String>,
ok_msg: &str,
err_prefix: &str,
) -> Task<Message>
pub fn on_ok_refresh( &mut self, result: Result<(), String>, ok_msg: &str, err_prefix: &str, ) -> Task<Message>
Handle a Result<(), String> from a git operation that should trigger
a full repository refresh on success.
Ok(())— clearsis_loading, setsstatus_message, refreshes.Err(e)— clearsis_loading, setserror_message, returnsTask::none().
Sourcepub fn current_layout(&self) -> LayoutSettings
pub fn current_layout(&self) -> LayoutSettings
Build a LayoutSettings snapshot from the current pane dimensions.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for GitKraft
impl !RefUnwindSafe for GitKraft
impl !Sync for GitKraft
impl Send for GitKraft
impl Unpin for GitKraft
impl UnsafeUnpin for GitKraft
impl UnwindSafe for GitKraft
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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