Skip to main content

GitKraft

Struct GitKraft 

Source
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: usize

Index of the currently active/visible tab.

§sidebar_expanded: bool

Whether the left sidebar is expanded.

§sidebar_width: f32

Width of the left sidebar in pixels.

§commit_log_width: f32

Width of the commit-log panel in pixels.

§staging_height: f32

Height of the staging area in pixels.

§diff_file_list_width: f32

Width of the diff file-list sidebar in pixels.

§commit_ref_width: f32

Width of the BRANCH/TAG column in the commit log (pixels).

§commit_graph_width: f32

Width of the GRAPH column in the commit log (pixels).

§sidebar_branches_ratio: f32

Fraction of sidebar height allocated to the branches section (0.0–1.0).

§sidebar_stash_ratio: f32

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: f32

Fraction of staging area width allocated to the unstaged column (0.0–1.0).

§staging_staged_ratio: f32

Fraction of staging area width allocated to the staged column (0.0–1.0). Commit column gets: 1.0 - unstaged_ratio - staged_ratio.

§ui_scale: f32

UI 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: f32

Last known mouse X position during a drag (absolute window coords).

§drag_start_y: f32

Last known mouse Y position during a drag (absolute window coords).

§drag_initialized: bool

Whether 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: bool

Same as drag_initialized but for horizontal drags.

§cursor_pos: Point

Last 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: usize

Index into gitkraft_core::THEME_NAMES for the currently active theme.

§follow_system: bool

Whether the theme follows the OS light/dark setting (“System”).

§recent_repos: Vec<RepoHistoryEntry>

Recently opened repositories (loaded from settings on startup).

§show_about: bool

Whether the About dialog is visible.

§search_visible: bool

Whether the search overlay is visible.

§search_query: String

Current 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: Editor

Configured editor for “Open in editor” actions.

§keyboard_modifiers: Modifiers

Current keyboard modifier state (updated via subscription).

§animation_tick: u64

Monotonically-increasing counter incremented on every AnimationTick. Drives the loading-spinner frame selection in all UI widgets.

§window_width: f32

Last known window width (updated on WindowResized).

§window_height: f32

Last known window height (updated on WindowResized).

§window_x: f32

Last known window X position (updated on WindowMoved).

§window_y: f32

Last 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

Source

pub fn layout(&self) -> LayoutDims

Pane sizes to render for the current window and stored sizes.

Source§

impl GitKraft

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn active_tab(&self) -> &RepoTab

Get a reference to the currently active tab.

Source

pub fn active_tab_mut(&mut self) -> &mut RepoTab

Get a mutable reference to the currently active tab.

Source

pub fn dismiss_menu(&mut self)

Dismiss any open context menu.

Source

pub fn open_context_menu(&mut self, menu: ContextMenu)

Open a context menu at the current cursor position.

Source

pub fn has_repo(&self) -> bool

Whether the active tab has a repository open.

Source

pub fn repo_display_name(&self) -> String

Helper: the display name for the active tab’s repo.

Source

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();
Source

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.

Source

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.

Source

pub fn persisted_theme_name(&self) -> &'static str

Name to persist for the current choice ("System" while following the OS).

Source

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.

Source

pub fn refresh_system_theme(&mut self)

Re-read the OS appearance while following the system.

Source

pub fn current_theme_name(&self) -> &'static str

The display name of the currently active preset (the resolved preset while following the system).

Source

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.

Source

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(()) — clears is_loading, sets status_message, refreshes.
  • Err(e) — clears is_loading, sets error_message, returns Task::none().
Source

pub fn current_layout(&self) -> LayoutSettings

Build a LayoutSettings snapshot from the current pane dimensions.

Source§

impl GitKraft

Source

pub fn update(&mut self, message: Message) -> Task<Message>

The single entry-point for all application updates. Iced calls this whenever a Message is produced (by user interaction or an async task completing).

Source§

impl GitKraft

Source

pub fn view(&self) -> Element<'_, Message>

Top-level view — called by the Iced runtime on every frame.

Trait Implementations§

Source§

impl Default for GitKraft

Source§

fn default() -> Self

Returns the “default value” for a type. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<State, Message> IntoBoot<State, Message> for State

Source§

fn into_boot(self) -> (State, Task<Message>)

Turns some type into the initial state of some Application.
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<T> MaybeClone for T

Source§

impl<T> MaybeDebug for T

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

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