From f874583740fbf48b3044f2c30718541ae7924de9 Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 18 Apr 2024 13:00:54 +0300 Subject: [PATCH] add base button --- config.json | 5 +++ src/Entity/Tab/Page.php | 97 +++++++++++++++++++++++++++++++++++------ 2 files changed, 89 insertions(+), 13 deletions(-) diff --git a/config.json b/config.json index c10021b4..a5ac4382 100644 --- a/config.json +++ b/config.json @@ -114,6 +114,11 @@ "visible":true, "label":"Forward" }, + "base": + { + "visible":true, + "label":"Base" + }, "go": { "visible":true, diff --git a/src/Entity/Tab/Page.php b/src/Entity/Tab/Page.php index 5e2d8c0a..293072e3 100644 --- a/src/Entity/Tab/Page.php +++ b/src/Entity/Tab/Page.php @@ -19,6 +19,7 @@ class Page public \GtkButton $home, $back, $forward, + $base, $go; public \GtkEntry $request; @@ -170,6 +171,45 @@ class Page ); } + // Init base button + $this->base = \GtkButton::new_with_label( + $this->config->header->button->base->label + ); + + $this->base->set_sensitive( + false + ); + + if ($this->config->header->button->base->visible) + { + $this->base->connect( + 'clicked', + function (\GtkButton $button) + { + $base = new \Yggverse\Net\Address( + $this->request->get_text() + ); + + $this->open( + $base->get( + true, // scheme + true, // user + true, // pass + true, // host + true, // port + false, // path + false, // query + false // fragment + ) + ); + } + ); + + $this->header->add( + $this->base + ); + } + // Request field $this->request = new \GtkEntry; @@ -449,11 +489,6 @@ class Page $url ); - // Update request field by requested - $this->request->set_text( - $url - ); - // Update history in memory pool if ($history && $this->config->history->memory->enabled && $url != $this->history->getCurrent()) { @@ -463,18 +498,54 @@ class Page } // Update home button sensibility on match requested - $this->home->set_sensitive( - !($url == $this->config->header->button->home->url) - ); + if ($this->config->header->button->home->visible) + { + $this->home->set_sensitive( + !($url == $this->config->header->button->home->url) + ); + } // Update back button sensibility - $this->back->set_sensitive( - (bool) $this->history->getBack() - ); + if ($this->config->header->button->back->visible) + { + $this->back->set_sensitive( + (bool) $this->history->getBack() + ); + } // Update forward button sensibility - $this->forward->set_sensitive( - (bool) $this->history->getForward() + if ($this->config->header->button->forward->visible) + { + $this->forward->set_sensitive( + (bool) $this->history->getForward() + ); + } + + // Update base button sensibility + if ($this->config->header->button->base->visible) + { + // Update address + $base = new \Yggverse\Net\Address( + $this->request->get_text() + ); + + $this->base->set_sensitive( + !($url == $base->get( + true, // scheme + true, // user + true, // pass + true, // host + true, // port + false, // path + false, // query + false // fragment + )) + ); + } + + // Update request field by requested + $this->request->set_text( + $url ); // Open current address