From 5010b73babb90065c0973df306e9ffff7e7d872e Mon Sep 17 00:00:00 2001 From: filipriec Date: Tue, 25 Feb 2025 23:20:29 +0100 Subject: [PATCH] project structure redesign --- client/docs/project_structure.tst | 49 +++++++++++++++++++ .../src/components1/handlers/command_line.rs | 2 +- client/src/components1/handlers/form.rs | 2 +- .../src/components1/handlers/preview_card.rs | 2 +- .../src/components1/handlers/status_line.rs | 2 +- client/src/{ => config}/colors.rs | 0 client/src/{ => config}/config.rs | 0 client/src/config/mod.rs | 3 ++ client/src/lib.rs | 5 +- client/src/tui/mod.rs | 2 + client/src/{ => tui}/terminal.rs | 0 client/src/ui/handlers/event.rs | 4 +- client/src/ui/handlers/form.rs | 2 +- client/src/ui/handlers/render.rs | 2 +- client/src/ui/handlers/ui.rs | 6 +-- 15 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 client/docs/project_structure.tst rename client/src/{ => config}/colors.rs (100%) rename client/src/{ => config}/config.rs (100%) create mode 100644 client/src/config/mod.rs create mode 100644 client/src/tui/mod.rs rename client/src/{ => tui}/terminal.rs (100%) diff --git a/client/docs/project_structure.tst b/client/docs/project_structure.tst new file mode 100644 index 0000000..1c43ff9 --- /dev/null +++ b/client/docs/project_structure.tst @@ -0,0 +1,49 @@ +client/ +├── Cargo.toml +├── config.toml +└── src/ + ├── main.rs # Entry point with minimal code + ├── lib.rs # Core exports + ├── app.rs # Application lifecycle and main loop + │ + ├── ui/ # UI components and rendering + │ ├── mod.rs + │ ├── theme.rs # Theme definitions (from colors.rs) + │ ├── layout.rs # Layout definitions + │ ├── render.rs # Main render coordinator + │ └── components/ # UI components + │ ├── mod.rs + │ ├── command_line.rs + │ ├── form.rs + │ ├── preview_card.rs + │ └── status_line.rs + │ + ├── input/ # Input handling + │ ├── mod.rs + │ ├── handler.rs # Main input handler (lightweight coordinator) + │ ├── commands.rs # Command processing + │ ├── navigation.rs # Navigation between entries and fields + │ └── edit.rs # Edit mode logic + │ + ├── editor/ # Text editing functionality + │ ├── mod.rs + │ ├── cursor.rs # Cursor movement + │ └── text.rs # Text manipulation (word movements, etc.) + │ + ├── state/ # Application state + │ ├── mod.rs + │ ├── app_state.rs # Main application state + │ └── form_state.rs # Form state + │ + ├── model/ # Data models + │ ├── mod.rs + │ └── entry.rs # Entry model with business logic + │ + ├── service/ # External services + │ ├── mod.rs + │ ├── terminal.rs # Terminal setup and management + │ └── grpc.rs # gRPC client (extracted from terminal.rs) + │ + └── config/ # Configuration + ├── mod.rs + └── keybindings.rs # Keybinding definitions and matching diff --git a/client/src/components1/handlers/command_line.rs b/client/src/components1/handlers/command_line.rs index 7d46a49..73e587f 100644 --- a/client/src/components1/handlers/command_line.rs +++ b/client/src/components1/handlers/command_line.rs @@ -5,7 +5,7 @@ use ratatui::{ layout::Rect, Frame, }; -use crate::colors::Theme; +use crate::config::colors::Theme; pub fn render_command_line(f: &mut Frame, area: Rect, input: &str, active: bool, theme: &Theme, message: &str) { let prompt = if active { diff --git a/client/src/components1/handlers/form.rs b/client/src/components1/handlers/form.rs index 53b46d0..f390c15 100644 --- a/client/src/components1/handlers/form.rs +++ b/client/src/components1/handlers/form.rs @@ -6,7 +6,7 @@ use ratatui::{ text::{Line, Span}, Frame, }; -use crate::colors::Theme; +use crate::config::colors::Theme; use crate::ui::form::FormState; pub fn render_form( diff --git a/client/src/components1/handlers/preview_card.rs b/client/src/components1/handlers/preview_card.rs index 779b855..5f0000b 100644 --- a/client/src/components1/handlers/preview_card.rs +++ b/client/src/components1/handlers/preview_card.rs @@ -6,7 +6,7 @@ use ratatui::{ text::Text, Frame, }; -use crate::colors::Theme; +use crate::config::colors::Theme; pub fn render_preview_card(f: &mut Frame, area: Rect, fields: &[&String], theme: &Theme) { let card = Block::default() diff --git a/client/src/components1/handlers/status_line.rs b/client/src/components1/handlers/status_line.rs index af548b8..e199418 100644 --- a/client/src/components1/handlers/status_line.rs +++ b/client/src/components1/handlers/status_line.rs @@ -6,7 +6,7 @@ use ratatui::{ Frame, text::{Line, Span}, }; -use crate::colors::Theme; +use crate::config::colors::Theme; use std::path::Path; pub fn render_status_line( diff --git a/client/src/colors.rs b/client/src/config/colors.rs similarity index 100% rename from client/src/colors.rs rename to client/src/config/colors.rs diff --git a/client/src/config.rs b/client/src/config/config.rs similarity index 100% rename from client/src/config.rs rename to client/src/config/config.rs diff --git a/client/src/config/mod.rs b/client/src/config/mod.rs new file mode 100644 index 0000000..ee2bbb3 --- /dev/null +++ b/client/src/config/mod.rs @@ -0,0 +1,3 @@ +// src/config/mod.rs +pub mod colors; +pub mod config; diff --git a/client/src/lib.rs b/client/src/lib.rs index 515ff84..98ff508 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -1,8 +1,7 @@ // client/src/lib.rs -pub mod config; -pub mod terminal; pub mod ui; -pub mod colors; +pub mod tui; +pub mod config; pub mod components1; pub use ui::run_ui; diff --git a/client/src/tui/mod.rs b/client/src/tui/mod.rs new file mode 100644 index 0000000..03d0055 --- /dev/null +++ b/client/src/tui/mod.rs @@ -0,0 +1,2 @@ +// src/tui/mod.rs +pub mod terminal; diff --git a/client/src/terminal.rs b/client/src/tui/terminal.rs similarity index 100% rename from client/src/terminal.rs rename to client/src/tui/terminal.rs diff --git a/client/src/ui/handlers/event.rs b/client/src/ui/handlers/event.rs index c812378..cf2e358 100644 --- a/client/src/ui/handlers/event.rs +++ b/client/src/ui/handlers/event.rs @@ -2,8 +2,8 @@ use crossterm::event::{Event, KeyCode, KeyModifiers}; use crossterm::cursor::{SetCursorStyle}; -use crate::terminal::AppTerminal; -use crate::config::Config; +use crate::tui::terminal::AppTerminal; +use crate::config::config::Config; use common::proto::multieko2::adresar::{PostAdresarRequest, PutAdresarRequest}; use super::form::FormState; diff --git a/client/src/ui/handlers/form.rs b/client/src/ui/handlers/form.rs index 9531427..5b0fae4 100644 --- a/client/src/ui/handlers/form.rs +++ b/client/src/ui/handlers/form.rs @@ -1,7 +1,7 @@ // src/client/ui/handlers/form.rs use crate::components1::render_form; -use crate::colors::Theme; +use crate::config::colors::Theme; use ratatui::layout::Rect; use ratatui::Frame; diff --git a/client/src/ui/handlers/render.rs b/client/src/ui/handlers/render.rs index d07caba..24bae58 100644 --- a/client/src/ui/handlers/render.rs +++ b/client/src/ui/handlers/render.rs @@ -1,7 +1,7 @@ // src/client/ui/handlers/render.rs use crate::components1::{render_command_line, render_preview_card, render_status_line}; -use crate::colors::Theme; +use crate::config::colors::Theme; use ratatui::layout::{Constraint, Direction, Layout}; use ratatui::Frame; use super::form::FormState; diff --git a/client/src/ui/handlers/ui.rs b/client/src/ui/handlers/ui.rs index 1097b8a..1368a37 100644 --- a/client/src/ui/handlers/ui.rs +++ b/client/src/ui/handlers/ui.rs @@ -1,8 +1,8 @@ // src/client/ui/handlers/ui.rs -use crate::terminal::AppTerminal; -use crate::colors::Theme; -use crate::config::Config; +use crate::tui::terminal::AppTerminal; +use crate::config::colors::Theme; +use crate::config::config::Config; use crate::ui::handlers::{event::EventHandler, form::FormState, state::AppState, render::render_ui}; pub async fn run_ui() -> Result<(), Box> {