From 0817f3e1baff7d6e00b9175b814a0f995e97c9e3 Mon Sep 17 00:00:00 2001 From: Dominik Przychodni Date: Fri, 7 Mar 2025 16:07:20 +0000 Subject: [PATCH 1/2] Moved query and header views out --- crates/crabapi/src/gui/iced/mod.rs | 119 +------------------ crates/crabapi/src/gui/iced/views/headers.rs | 65 ++++++++++ crates/crabapi/src/gui/iced/views/mod.rs | 3 + crates/crabapi/src/gui/iced/views/queries.rs | 60 ++++++++++ 4 files changed, 131 insertions(+), 116 deletions(-) create mode 100644 crates/crabapi/src/gui/iced/views/headers.rs create mode 100644 crates/crabapi/src/gui/iced/views/mod.rs create mode 100644 crates/crabapi/src/gui/iced/views/queries.rs diff --git a/crates/crabapi/src/gui/iced/mod.rs b/crates/crabapi/src/gui/iced/mod.rs index d27fd0f..8e9ae5b 100644 --- a/crates/crabapi/src/gui/iced/mod.rs +++ b/crates/crabapi/src/gui/iced/mod.rs @@ -7,7 +7,7 @@ use crate::core::requests; use iced; use iced::widget::text_editor::{Action, Content}; use iced::widget::{Button, Row, Text, TextInput, scrollable, text_editor}; -use iced::widget::{button, column, container, pick_list, row}; +use iced::widget::{column, container, pick_list, row}; use iced::{Alignment, Center, Element, Length, Task}; use iced_highlighter::Highlighter; use reqwest::{Body, Client}; @@ -50,6 +50,8 @@ struct GUI { response_body: Content, } +mod views; + impl GUI { fn new() -> Self { Self { @@ -253,121 +255,6 @@ impl GUI { .into() } - // VIEW REQUEST - HEADERS - - fn view_request_headers(&self) -> Element { - let headers_title = Self::view_request_headers_title(); - - let headers_column = self.view_request_headers_column(); - - let header_add_button = Self::view_request_headers_add_button(); - - column![headers_title, headers_column, header_add_button] - .spacing(default_styles::spacing()) - .into() - } - - fn view_request_headers_title() -> Element<'static, Message> { - Text::new("Headers").size(16).into() - } - - fn view_request_headers_column(&self) -> Element { - let mut headers_column = column![]; - - for (i, header) in self.header_input.iter().enumerate() { - let header_row = self.view_request_headers_column_row(i, header); - headers_column = headers_column.push(header_row); - } - headers_column.spacing(default_styles::spacing()).into() - } - - fn view_request_headers_column_row( - &self, - index: usize, - header: &(String, String), - ) -> Element { - row![ - TextInput::new("Key", &header.0) - .on_input( - move |key| Message::HeaderInputChanged(TupleEvent::KeyChanged(index, key)) - ) - .width(Length::FillPortion(1)), - TextInput::new("Value", &header.1) // TODO: Change unwrap - .on_input( - move |value| Message::HeaderInputChanged(TupleEvent::ValueChanged( - index, value - )) - ) - .width(Length::FillPortion(2)), - Button::new(Text::new("X")) - .on_press(Message::HeaderInputChanged(TupleEvent::Remove(index))) - .style(button::danger), - ] - .spacing(default_styles::spacing()) - .into() - } - - fn view_request_headers_add_button() -> Element<'static, Message> { - Button::new(Text::new("Add Header").size(default_styles::input_size())) - .on_press(Message::HeaderInputChanged(TupleEvent::Add)) - .into() - } - - // VIEW REQUEST QUERIES - fn view_request_queries(&self) -> Element { - let queries_title = Self::view_request_queries_title(); - - let queries_column = self.view_request_queries_column(); - - let query_add_button = Self::view_request_queries_add_button(); - - column![queries_title, queries_column, query_add_button] - .spacing(default_styles::spacing()) - .into() - } - - fn view_request_queries_title() -> Element<'static, Message> { - Text::new("Queries").size(16).into() - } - - fn view_request_queries_column(&self) -> Element { - let mut queries_column = column![]; - - for (i, query) in self.query_input.iter().enumerate() { - let header_row = self.view_request_queries_row(i, query); - queries_column = queries_column.push(header_row); - } - queries_column.spacing(default_styles::spacing()).into() - } - - fn view_request_queries_row( - &self, - index: usize, - header: &(String, String), - ) -> Element { - row![ - TextInput::new("Key", &header.0) - .on_input(move |key| Message::QueryInputChanged(TupleEvent::KeyChanged(index, key))) - .width(Length::FillPortion(1)), - TextInput::new("Value", &header.1) // TODO: Change unwrap - .on_input( - move |value| Message::QueryInputChanged(TupleEvent::ValueChanged(index, value)) - ) - .width(Length::FillPortion(2)), - Button::new(Text::new("X")) - .on_press(Message::QueryInputChanged(TupleEvent::Remove(index))) - .style(button::danger), - ] - .spacing(default_styles::spacing()) - .into() - } - - fn view_request_queries_add_button() -> Element<'static, Message> { - Button::new(Text::new("Add Query").size(default_styles::input_size())) - .on_press(Message::QueryInputChanged(TupleEvent::Add)) - .into() - } - fn view_response(&self) -> Element<'_, Message> { let label = Text::new("Response:").size(default_styles::input_size()); let body = text_editor(&self.response_body) diff --git a/crates/crabapi/src/gui/iced/views/headers.rs b/crates/crabapi/src/gui/iced/views/headers.rs new file mode 100644 index 0000000..199a2d2 --- /dev/null +++ b/crates/crabapi/src/gui/iced/views/headers.rs @@ -0,0 +1,65 @@ +use iced::{Element, Length}; +use iced::widget::{row, Button, Text, TextInput}; +use crate::gui::iced::{default_styles, Message, TupleEvent}; +use super::GUI; + +impl GUI { + pub fn view_request_headers(&self) -> Element { + let headers_title = Self::view_request_headers_title(); + + let headers_column = self.view_request_headers_column(); + + let header_add_button = Self::view_request_headers_add_button(); + + iced::widget::column![headers_title, headers_column, header_add_button] + .spacing(default_styles::spacing()) + .into() + } + + fn view_request_headers_title() -> Element<'static, Message> { + Text::new("Headers").size(16).into() + } + + fn view_request_headers_column(&self) -> Element { + let mut headers_column = iced::widget::column![]; + + for (i, header) in self.header_input.iter().enumerate() { + let header_row = self.view_request_headers_column_row(i, header); + headers_column = headers_column.push(header_row); + } + headers_column.spacing(default_styles::spacing()).into() + } + + fn view_request_headers_column_row( + &self, + index: usize, + header: &(String, String), + ) -> Element { + row![ + TextInput::new("Key", &header.0) + .on_input( + move |key| Message::HeaderInputChanged(TupleEvent::KeyChanged(index, key)) + ) + .width(Length::FillPortion(1)), + TextInput::new("Value", &header.1) + .on_input( + move |value| Message::HeaderInputChanged(TupleEvent::ValueChanged( + index, value + )) + ) + .width(Length::FillPortion(2)), + Button::new(Text::new("X")) + .on_press(Message::HeaderInputChanged(TupleEvent::Remove(index))) + .style(iced::widget::button::danger), + ] + .spacing(default_styles::spacing()) + .into() + } + + fn view_request_headers_add_button() -> Element<'static, Message> { + Button::new(Text::new("Add Header").size(default_styles::input_size())) + .on_press(Message::HeaderInputChanged(TupleEvent::Add)) + .into() + } + +} \ No newline at end of file diff --git a/crates/crabapi/src/gui/iced/views/mod.rs b/crates/crabapi/src/gui/iced/views/mod.rs new file mode 100644 index 0000000..56e176b --- /dev/null +++ b/crates/crabapi/src/gui/iced/views/mod.rs @@ -0,0 +1,3 @@ +use super::GUI; +mod headers; +mod queries; \ No newline at end of file diff --git a/crates/crabapi/src/gui/iced/views/queries.rs b/crates/crabapi/src/gui/iced/views/queries.rs new file mode 100644 index 0000000..aa0b212 --- /dev/null +++ b/crates/crabapi/src/gui/iced/views/queries.rs @@ -0,0 +1,60 @@ +use iced::{Element, Length}; +use iced::widget::{row, Button, Text, TextInput}; +use crate::gui::iced::{default_styles, Message, TupleEvent}; +use super::GUI; + +impl GUI { + pub fn view_request_queries(&self) -> Element { + let queries_title = Self::view_request_queries_title(); + + let queries_column = self.view_request_queries_column(); + + let query_add_button = Self::view_request_queries_add_button(); + + iced::widget::column![queries_title, queries_column, query_add_button] + .spacing(default_styles::spacing()) + .into() + } + + fn view_request_queries_title() -> Element<'static, Message> { + Text::new("Queries").size(16).into() + } + + fn view_request_queries_column(&self) -> Element { + let mut queries_column = iced::widget::column![]; + + for (i, query) in self.query_input.iter().enumerate() { + let header_row = self.view_request_queries_row(i, query); + queries_column = queries_column.push(header_row); + } + queries_column.spacing(default_styles::spacing()).into() + } + + fn view_request_queries_row( + &self, + index: usize, + header: &(String, String), + ) -> Element { + row![ + TextInput::new("Key", &header.0) + .on_input(move |key| Message::QueryInputChanged(TupleEvent::KeyChanged(index, key))) + .width(Length::FillPortion(1)), + TextInput::new("Value", &header.1) + .on_input( + move |value| Message::QueryInputChanged(TupleEvent::ValueChanged(index, value)) + ) + .width(Length::FillPortion(2)), + Button::new(Text::new("X")) + .on_press(Message::QueryInputChanged(TupleEvent::Remove(index))) + .style(iced::widget::button::danger), + ] + .spacing(default_styles::spacing()) + .into() + } + + fn view_request_queries_add_button() -> Element<'static, Message> { + Button::new(Text::new("Add Query").size(default_styles::input_size())) + .on_press(Message::QueryInputChanged(TupleEvent::Add)) + .into() + } +} \ No newline at end of file From 73b46ac3f30a6af6d53db6856d52fb36c824c40b Mon Sep 17 00:00:00 2001 From: Dominik Przychodni Date: Fri, 7 Mar 2025 16:33:34 +0000 Subject: [PATCH 2/2] fmt --- crates/crabapi/src/gui/iced/views/headers.rs | 13 ++++++------- crates/crabapi/src/gui/iced/views/mod.rs | 2 +- crates/crabapi/src/gui/iced/views/queries.rs | 12 ++++++------ 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/crates/crabapi/src/gui/iced/views/headers.rs b/crates/crabapi/src/gui/iced/views/headers.rs index 199a2d2..0189dcf 100644 --- a/crates/crabapi/src/gui/iced/views/headers.rs +++ b/crates/crabapi/src/gui/iced/views/headers.rs @@ -1,7 +1,7 @@ -use iced::{Element, Length}; -use iced::widget::{row, Button, Text, TextInput}; -use crate::gui::iced::{default_styles, Message, TupleEvent}; use super::GUI; +use crate::gui::iced::{Message, TupleEvent, default_styles}; +use iced::widget::{Button, Text, TextInput, row}; +use iced::{Element, Length}; impl GUI { pub fn view_request_headers(&self) -> Element { @@ -52,8 +52,8 @@ impl GUI { .on_press(Message::HeaderInputChanged(TupleEvent::Remove(index))) .style(iced::widget::button::danger), ] - .spacing(default_styles::spacing()) - .into() + .spacing(default_styles::spacing()) + .into() } fn view_request_headers_add_button() -> Element<'static, Message> { @@ -61,5 +61,4 @@ impl GUI { .on_press(Message::HeaderInputChanged(TupleEvent::Add)) .into() } - -} \ No newline at end of file +} diff --git a/crates/crabapi/src/gui/iced/views/mod.rs b/crates/crabapi/src/gui/iced/views/mod.rs index 56e176b..78d9fd1 100644 --- a/crates/crabapi/src/gui/iced/views/mod.rs +++ b/crates/crabapi/src/gui/iced/views/mod.rs @@ -1,3 +1,3 @@ use super::GUI; mod headers; -mod queries; \ No newline at end of file +mod queries; diff --git a/crates/crabapi/src/gui/iced/views/queries.rs b/crates/crabapi/src/gui/iced/views/queries.rs index aa0b212..b0d2af0 100644 --- a/crates/crabapi/src/gui/iced/views/queries.rs +++ b/crates/crabapi/src/gui/iced/views/queries.rs @@ -1,7 +1,7 @@ -use iced::{Element, Length}; -use iced::widget::{row, Button, Text, TextInput}; -use crate::gui::iced::{default_styles, Message, TupleEvent}; use super::GUI; +use crate::gui::iced::{Message, TupleEvent, default_styles}; +use iced::widget::{Button, Text, TextInput, row}; +use iced::{Element, Length}; impl GUI { pub fn view_request_queries(&self) -> Element { @@ -48,8 +48,8 @@ impl GUI { .on_press(Message::QueryInputChanged(TupleEvent::Remove(index))) .style(iced::widget::button::danger), ] - .spacing(default_styles::spacing()) - .into() + .spacing(default_styles::spacing()) + .into() } fn view_request_queries_add_button() -> Element<'static, Message> { @@ -57,4 +57,4 @@ impl GUI { .on_press(Message::QueryInputChanged(TupleEvent::Add)) .into() } -} \ No newline at end of file +}