refactor: modularize architecture
refactors the application structure to move away from a monolithic `main.rs`. - **Domain Models**: Extracted `State`, `Message`, `FileAction`, and `ViewAction` into `state.rs` and `message.rs`. Enforced encapsulation on `State` using private fields and public accessors. - **Controller Layer**: Created `handler.rs` to handle business logic and I/O operations, transforming the main `update` loop into a pure event router. - **Component System**: Split the UI into composable, stateless functions in `components/` (tabs, editor, status_bar, action_bar), removing the 100+ line view function. - **File Logic**: Encapsulated file operations and safe path handling within `file.rs`, removing fragile `expect` calls from the UI layer. - **Utilities**: Centralized static configuration, keybindings, and I/O helpers into `constants.rs`, `key_bindings.rs`, and `io.rs`. This change decouples the view from the model and makes the core application logic testable
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
use iced::Font;
|
||||
|
||||
pub const CUSTOM_FONT_BYTES: &[u8] = include_bytes!("./fonts/CaskaydiaCoveNFM-Regular.ttf");
|
||||
pub const CUSTOM_FONT: Font = Font::with_name("CaskaydiaCove Nerd Font Mono");
|
||||
pub const DEFAULT_EDITOR_FONT_SIZE: u32 = 16;
|
||||
pub const MAX_EDITOR_FONT_SIZE: u32 = 80;
|
||||
pub const MIN_EDITOR_FONT_SIZE: u32 = 12;
|
||||
pub const ICON_BYTES: &[u8] = include_bytes!("./images/icon.ico");
|
||||
Reference in New Issue
Block a user