Browse Source

await for min renderer dimensions init

PHP-GTK3
yggverse 4 months ago
parent
commit
62c2681cf9
  1. 30
      src/Entity/Browser/Container/Page/Content.php
  2. 51
      src/Entity/Browser/Container/Page/Content/Gemtext.php

30
src/Entity/Browser/Container/Page/Content.php

@ -53,7 +53,7 @@ class Content @@ -53,7 +53,7 @@ class Content
);
}
public function set( // @TODO make async
public function set(
?string $mime,
?string $data
): void
@ -64,40 +64,14 @@ class Content @@ -64,40 +64,14 @@ class Content
{
case Filesystem::MIME_TEXT_GEMINI:
$title = null;
$document = new Content\Gemtext(
$this
);
$document->set(
$data,
$title
$data
);
// Update title by gemtext H1 tag (on available)
if ($title)
{
// Set new title
$this->page->title->setValue(
$title
);
// Update tooltip
$this->page->title->setTooltip(
$title
);
// Refresh header by new title if current page is active
if ($this->page === $this->page->container->tab->get())
{
$this->page->container->browser->header->setTitle(
$this->page->title->getValue(),
$this->page->title->getSubtitle()
);
}
}
break;
case Filesystem::MIME_TEXT_PLAIN:

51
src/Entity/Browser/Container/Page/Content/Gemtext.php

@ -7,6 +7,7 @@ namespace Yggverse\Yoda\Entity\Browser\Container\Page\Content; @@ -7,6 +7,7 @@ namespace Yggverse\Yoda\Entity\Browser\Container\Page\Content;
use \Exception;
use \Gdk;
use \GdkEvent;
use \Gtk;
use \GtkLabel;
use \Pango;
@ -17,17 +18,49 @@ use \Yggverse\Yoda\Model\Gtk\Pango\Markup\Gemtext as Markup; @@ -17,17 +18,49 @@ use \Yggverse\Yoda\Model\Gtk\Pango\Markup\Gemtext as Markup;
class Gemtext extends \Yggverse\Yoda\Abstract\Entity\Browser\Container\Page\Content\Markup
{
public function set(
string $source,
string | null &$title = null
string $value
): void
{
$this->gtk->set_markup(
Markup::format(
$this->_source = $source,
$this->content->page->navbar->request->getValue(),
$this->content->page->content->gtk->get_allocated_width(),
$title
)
Gtk::timeout_add( // await for renderer dimensions init
1, function(?string $title = null) use ($value)
{
if ($this->content->page->content->gtk->get_allocated_width() > Markup::WRAP_WIDTH)
{
$this->gtk->set_markup(
Markup::format(
$this->_source = $value,
$this->content->page->navbar->request->getValue(),
$this->content->page->content->gtk->get_allocated_width(),
$title
)
);
// Update title by gemtext H1 tag (on available)
if ($title)
{
// Set new title
$this->content->page->title->setValue(
$title
);
// Update tooltip
$this->content->page->title->setTooltip(
$title
);
// Refresh header by new title if current page is active
if ($this->content->page === $this->content->page->container->tab->get())
{
$this->content->page->container->browser->header->setTitle(
$this->content->page->title->getValue(),
$this->content->page->title->getSubtitle()
);
}
};
return false; // stop
}
}
);
}

Loading…
Cancel
Save