draft gemtext composer

This commit is contained in:
yggverse 2024-09-26 14:30:54 +03:00
parent 70f3b51591
commit 1cc3ddaf2e
5 changed files with 89 additions and 8 deletions

View file

@ -0,0 +1,30 @@
mod reader;
use reader::Reader;
use gtk::Viewport;
pub struct Gemini {
widget: Viewport,
}
impl Gemini {
// Construct
pub fn new(gemtext: &str) -> Self {
// Init components
let reader = Reader::new(gemtext);
// Init widget
let widget = Viewport::builder().scroll_to_focus(false).build();
widget.set_child(Some(reader.widget()));
// Result
Self { widget }
}
// Getters
pub fn widget(&self) -> &Viewport {
&self.widget
}
}

View file

@ -6,16 +6,18 @@ pub struct Reader {
impl Reader {
// Construct
pub fn new() -> Self {
pub fn new(gemtext: &str) -> Self {
Self {
widget: Label::builder()
.halign(Align::Start)
.valign(Align::Start)
.vexpand(true)
.margin_start(8)
.margin_end(8)
.wrap(true)
.selectable(true)
.use_markup(true)
.label(gemtext) // @TODO
.build(),
}
}

View file

@ -1,3 +1,7 @@
mod gemini;
use gemini::Gemini;
use gtk::ScrolledWindow;
pub struct Text {
@ -6,10 +10,17 @@ pub struct Text {
impl Text {
// Construct
pub fn new() -> Self {
Self {
widget: ScrolledWindow::builder().build(),
}
pub fn gemini(gemtext: &str) -> Self {
// Init components
let gemini = Gemini::new(gemtext);
// Init widget
let widget = ScrolledWindow::builder().build();
widget.set_child(Some(gemini.widget()));
// Result
Self { widget }
}
// Getters