From a4f3fe449ae0b925c380beae3552d9c874c7931b Mon Sep 17 00:00:00 2001 From: yggverse Date: Sat, 1 Feb 2025 19:47:27 +0200 Subject: [PATCH] implement traits as tags --- .../page/content/text/gemini/reader/tag.rs | 23 +++++++----- .../page/content/text/gemini/reader/tag/h1.rs | 11 ------ .../page/content/text/gemini/reader/tag/h2.rs | 11 ------ .../page/content/text/gemini/reader/tag/h3.rs | 11 ------ .../content/text/gemini/reader/tag/header.rs | 37 +++++++++++++++++++ .../content/text/gemini/reader/tag/list.rs | 20 ++++++---- .../content/text/gemini/reader/tag/plain.rs | 10 ++++- .../content/text/gemini/reader/tag/quote.rs | 16 +++++--- .../content/text/gemini/reader/tag/title.rs | 20 ++++++---- 9 files changed, 95 insertions(+), 64 deletions(-) delete mode 100644 src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h1.rs delete mode 100644 src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h2.rs delete mode 100644 src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h3.rs create mode 100644 src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/header.rs diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag.rs index d3ae4f5b..f917b5f7 100644 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag.rs +++ b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag.rs @@ -1,12 +1,15 @@ -mod h1; -mod h2; -mod h3; +mod header; mod list; mod plain; mod quote; mod title; use gtk::{TextTag, TextTagTable}; +use header::Header; +use list::List; +use plain::Plain; +use quote::Quote; +use title::Title; pub struct Tag { pub text_tag_table: TextTagTable, @@ -30,13 +33,13 @@ impl Tag { // Construct pub fn new() -> Self { // Init components - let h1 = h1::new(); - let h2 = h2::new(); - let h3 = h3::new(); - let list = list::new(); - let quote = quote::new(); - let title = title::new(); - let plain = plain::new(); + let h1 = TextTag::h1(); + let h2 = TextTag::h2(); + let h3 = TextTag::h3(); + let list = TextTag::list(); + let quote = TextTag::quote(); + let title = TextTag::title(); + let plain = TextTag::plain(); // Init tag table let text_tag_table = TextTagTable::new(); diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h1.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h1.rs deleted file mode 100644 index 7eccfd65..00000000 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h1.rs +++ /dev/null @@ -1,11 +0,0 @@ -use gtk::{TextTag, WrapMode}; - -pub fn new() -> TextTag { - TextTag::builder() - .foreground("#2190a4") // @TODO optional - .scale(1.6) - .sentence(true) - .weight(500) - .wrap_mode(WrapMode::Word) - .build() -} diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h2.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h2.rs deleted file mode 100644 index 28c0dfc8..00000000 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h2.rs +++ /dev/null @@ -1,11 +0,0 @@ -use gtk::{TextTag, WrapMode}; - -pub fn new() -> TextTag { - TextTag::builder() - .foreground("#d56199") // @TODO optional - .scale(1.4) - .sentence(true) - .weight(400) - .wrap_mode(WrapMode::Word) - .build() -} diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h3.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h3.rs deleted file mode 100644 index b1590dea..00000000 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/h3.rs +++ /dev/null @@ -1,11 +0,0 @@ -use gtk::{TextTag, WrapMode}; - -pub fn new() -> TextTag { - TextTag::builder() - .foreground("#c88800") // @TODO optional - .scale(1.2) - .sentence(true) - .weight(400) - .wrap_mode(WrapMode::Word) - .build() -} diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/header.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/header.rs new file mode 100644 index 00000000..8f4c992b --- /dev/null +++ b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/header.rs @@ -0,0 +1,37 @@ +use gtk::{TextTag, WrapMode}; + +pub trait Header { + fn h1() -> Self; + fn h2() -> Self; + fn h3() -> Self; +} + +impl Header for TextTag { + fn h1() -> Self { + TextTag::builder() + .foreground("#2190a4") // @TODO optional + .scale(1.6) + .sentence(true) + .weight(500) + .wrap_mode(WrapMode::Word) + .build() + } + fn h2() -> Self { + TextTag::builder() + .foreground("#d56199") // @TODO optional + .scale(1.4) + .sentence(true) + .weight(400) + .wrap_mode(WrapMode::Word) + .build() + } + fn h3() -> Self { + TextTag::builder() + .foreground("#c88800") // @TODO optional + .scale(1.2) + .sentence(true) + .weight(400) + .wrap_mode(WrapMode::Word) + .build() + } +} diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/list.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/list.rs index ca1b0eb4..cba74053 100644 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/list.rs +++ b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/list.rs @@ -1,10 +1,16 @@ use gtk::{TextTag, WrapMode}; -pub fn new() -> TextTag { - TextTag::builder() - .left_margin(28) - .pixels_above_lines(4) - .pixels_below_lines(4) - .wrap_mode(WrapMode::Word) - .build() +pub trait List { + fn list() -> Self; +} + +impl List for TextTag { + fn list() -> Self { + TextTag::builder() + .left_margin(28) + .pixels_above_lines(4) + .pixels_below_lines(4) + .wrap_mode(WrapMode::Word) + .build() + } } diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/plain.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/plain.rs index c42a57f8..dfc7374c 100644 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/plain.rs +++ b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/plain.rs @@ -1,5 +1,11 @@ use gtk::{TextTag, WrapMode}; -pub fn new() -> TextTag { - TextTag::builder().wrap_mode(WrapMode::Word).build() +pub trait Plain { + fn plain() -> Self; +} + +impl Plain for TextTag { + fn plain() -> Self { + TextTag::builder().wrap_mode(WrapMode::Word).build() + } } diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/quote.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/quote.rs index d97d7ff7..58d41e28 100644 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/quote.rs +++ b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/quote.rs @@ -1,8 +1,14 @@ use gtk::{TextTag, WrapMode}; -pub fn new() -> TextTag { - TextTag::builder() - .left_margin(28) - .wrap_mode(WrapMode::Word) - .build() +pub trait Quote { + fn quote() -> Self; +} + +impl Quote for TextTag { + fn quote() -> Self { + TextTag::builder() + .left_margin(28) + .wrap_mode(WrapMode::Word) + .build() + } } diff --git a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/title.rs b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/title.rs index 89fd0719..ed0072fe 100644 --- a/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/title.rs +++ b/src/app/browser/window/tab/item/page/content/text/gemini/reader/tag/title.rs @@ -1,10 +1,16 @@ use gtk::{TextTag, WrapMode}; -pub fn new() -> TextTag { - TextTag::builder() - .pixels_above_lines(4) - .pixels_below_lines(8) - .weight(500) - .wrap_mode(WrapMode::None) - .build() +pub trait Title { + fn title() -> Self; +} + +impl Title for TextTag { + fn title() -> Self { + TextTag::builder() + .pixels_above_lines(4) + .pixels_below_lines(8) + .weight(500) + .wrap_mode(WrapMode::None) + .build() + } }