mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-02 09:35:28 +00:00
update new tab api
This commit is contained in:
parent
65bc5ef6f4
commit
dd68120c10
9 changed files with 77 additions and 52 deletions
|
|
@ -40,11 +40,7 @@ Glib::ustring Main::get_current_tab_label_text()
|
||||||
// Actions
|
// Actions
|
||||||
void Main::tab_append()
|
void Main::tab_append()
|
||||||
{
|
{
|
||||||
tab->append(
|
tab->append();
|
||||||
nullptr,
|
|
||||||
true,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void Main::tab_update()
|
void Main::tab_update()
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,12 @@ Tab::Tab()
|
||||||
{
|
{
|
||||||
// Init widget
|
// Init widget
|
||||||
set_scrollable(
|
set_scrollable(
|
||||||
true
|
SCROLLABLE
|
||||||
);
|
);
|
||||||
|
|
||||||
// Init events
|
// Init events
|
||||||
signal_switch_page().connect(
|
signal_switch_page().connect(
|
||||||
[this](Gtk::Widget * page, guint page_num)
|
[this](Gtk::Widget * page, guint page_number)
|
||||||
{
|
{
|
||||||
// Refresh window elements, e.g. tab label to header bar
|
// Refresh window elements, e.g. tab label to header bar
|
||||||
activate_action(
|
activate_action(
|
||||||
|
|
@ -47,49 +47,50 @@ Glib::ustring Tab::get_label_text(
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
void Tab::append(
|
void Tab::append(
|
||||||
const char * request,
|
const Glib::ustring & page_navbar_request_text,
|
||||||
bool open,
|
|
||||||
bool focus
|
bool focus
|
||||||
) {
|
) {
|
||||||
auto label = new tab::Label();
|
auto label = new tab::Label;
|
||||||
auto page = new tab::Page();
|
|
||||||
|
|
||||||
append_page(
|
auto page = new tab::Page(
|
||||||
|
page_navbar_request_text
|
||||||
|
);
|
||||||
|
|
||||||
|
int page_number = append_page(
|
||||||
* page,
|
* page,
|
||||||
* label
|
* label
|
||||||
);
|
);
|
||||||
|
|
||||||
set_tab_reorderable(
|
set_tab_reorderable(
|
||||||
* page,
|
* page,
|
||||||
true
|
REORDERABLE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (focus)
|
if (focus)
|
||||||
{
|
{
|
||||||
set_current_page(
|
set_current_page(
|
||||||
page_num(
|
page_number
|
||||||
* page
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void Tab::close(
|
void Tab::close(
|
||||||
int number
|
int page_number
|
||||||
) {
|
) {
|
||||||
auto page = get_nth_page(
|
auto page = get_nth_page(
|
||||||
number
|
page_number
|
||||||
);
|
);
|
||||||
|
|
||||||
auto label = get_tab_label(
|
auto label = get_tab_label(
|
||||||
* page
|
* page
|
||||||
);
|
);
|
||||||
|
|
||||||
delete page;
|
// @TODO data type
|
||||||
delete label;
|
// delete page;
|
||||||
|
// delete label;
|
||||||
|
|
||||||
remove_page(
|
remove_page(
|
||||||
number
|
page_number
|
||||||
);
|
);
|
||||||
|
|
||||||
// @TODO fix GtkGizmo reported min height, but sizes must be >= 0
|
// @TODO fix GtkGizmo reported min height, but sizes must be >= 0
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ namespace app::browser::main
|
||||||
{
|
{
|
||||||
class Tab : public Gtk::Notebook
|
class Tab : public Gtk::Notebook
|
||||||
{
|
{
|
||||||
|
const bool REORDERABLE = true;
|
||||||
|
const bool SCROLLABLE = true;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Tab();
|
Tab();
|
||||||
|
|
@ -20,13 +23,12 @@ namespace app::browser::main
|
||||||
);
|
);
|
||||||
|
|
||||||
void append(
|
void append(
|
||||||
const char * request,
|
const Glib::ustring & page_navbar_request_text = "",
|
||||||
bool open,
|
bool focus = true
|
||||||
bool focus
|
|
||||||
);
|
);
|
||||||
|
|
||||||
void close(
|
void close(
|
||||||
int number
|
int page_number
|
||||||
);
|
);
|
||||||
|
|
||||||
void close_left();
|
void close_left();
|
||||||
|
|
@ -34,7 +36,7 @@ namespace app::browser::main
|
||||||
void close_all();
|
void close_all();
|
||||||
|
|
||||||
void update(
|
void update(
|
||||||
int number
|
int page_number
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,9 @@
|
||||||
|
|
||||||
using namespace app::browser::main::tab;
|
using namespace app::browser::main::tab;
|
||||||
|
|
||||||
Page::Page()
|
Page::Page(
|
||||||
{
|
const Glib::ustring & navbar_request_text
|
||||||
|
) {
|
||||||
// Init container
|
// Init container
|
||||||
set_orientation(
|
set_orientation(
|
||||||
Gtk::Orientation::VERTICAL
|
Gtk::Orientation::VERTICAL
|
||||||
|
|
@ -30,7 +31,9 @@ Page::Page()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Init components
|
// Init components
|
||||||
navbar = new page::Navbar();
|
navbar = new page::Navbar(
|
||||||
|
navbar_request_text
|
||||||
|
);
|
||||||
|
|
||||||
append(
|
append(
|
||||||
* navbar
|
* navbar
|
||||||
|
|
@ -106,11 +109,11 @@ void Page::update()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Request
|
// Request
|
||||||
const Glib::ustring request = navbar->get_request() + "\r\n";
|
const Glib::ustring navbar_request_text = navbar->get_request_text() + "\r\n";
|
||||||
|
|
||||||
socket_connection->get_output_stream()->write_async(
|
socket_connection->get_output_stream()->write_async(
|
||||||
request.data(),
|
navbar_request_text.data(),
|
||||||
request.size(),
|
navbar_request_text.size(),
|
||||||
[this](const Glib::RefPtr<Gio::AsyncResult> & result)
|
[this](const Glib::RefPtr<Gio::AsyncResult> & result)
|
||||||
{
|
{
|
||||||
progressbar->set(
|
progressbar->set(
|
||||||
|
|
@ -175,24 +178,24 @@ void Page::update()
|
||||||
// Scheme not found but host provided, redirect to gemini://
|
// Scheme not found but host provided, redirect to gemini://
|
||||||
else if (!navbar->get_request_host().empty())
|
else if (!navbar->get_request_host().empty())
|
||||||
{
|
{
|
||||||
Glib::ustring request = "gemini://";
|
Glib::ustring navbar_request_text = "gemini://";
|
||||||
|
|
||||||
request += navbar->get_request_host(); // @TODO validate
|
navbar_request_text += navbar->get_request_host(); // @TODO validate
|
||||||
|
|
||||||
if (!navbar->get_request_port().empty())
|
if (!navbar->get_request_port().empty())
|
||||||
{
|
{
|
||||||
request += navbar->get_request_port();
|
navbar_request_text += navbar->get_request_port();
|
||||||
}
|
}
|
||||||
|
|
||||||
request += navbar->get_request_path();
|
navbar_request_text += navbar->get_request_path();
|
||||||
|
|
||||||
if (!navbar->get_request_query().empty())
|
if (!navbar->get_request_query().empty())
|
||||||
{
|
{
|
||||||
request += "?" + navbar->get_request_query();
|
navbar_request_text += "?" + navbar->get_request_query();
|
||||||
}
|
}
|
||||||
|
|
||||||
navbar->set_request(
|
navbar->set_request_text(
|
||||||
request
|
navbar_request_text
|
||||||
);
|
);
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,10 @@ namespace app::browser::main::tab
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Page();
|
Page(
|
||||||
|
const Glib::ustring & navbar_request_text = ""
|
||||||
|
);
|
||||||
|
|
||||||
~Page();
|
~Page();
|
||||||
|
|
||||||
void update();
|
void update();
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@
|
||||||
|
|
||||||
using namespace app::browser::main::tab::page;
|
using namespace app::browser::main::tab::page;
|
||||||
|
|
||||||
Navbar::Navbar()
|
Navbar::Navbar(
|
||||||
{
|
const Glib::ustring & request_text
|
||||||
|
) {
|
||||||
// Init container
|
// Init container
|
||||||
set_orientation(
|
set_orientation(
|
||||||
Gtk::Orientation::HORIZONTAL
|
Gtk::Orientation::HORIZONTAL
|
||||||
|
|
@ -53,7 +54,9 @@ Navbar::Navbar()
|
||||||
* update
|
* update
|
||||||
);
|
);
|
||||||
|
|
||||||
request = new navbar::Request();
|
request = new navbar::Request(
|
||||||
|
request_text
|
||||||
|
);
|
||||||
|
|
||||||
append(
|
append(
|
||||||
* request
|
* request
|
||||||
|
|
@ -107,7 +110,7 @@ void Navbar::refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
void Navbar::set_request(
|
void Navbar::set_request_text(
|
||||||
const Glib::ustring & value
|
const Glib::ustring & value
|
||||||
) {
|
) {
|
||||||
request->set_text(
|
request->set_text(
|
||||||
|
|
@ -118,7 +121,7 @@ void Navbar::set_request(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
Glib::ustring Navbar::get_request()
|
Glib::ustring Navbar::get_request_text()
|
||||||
{
|
{
|
||||||
return request->get_text();
|
return request->get_text();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,19 +35,22 @@ namespace app::browser::main::tab::page
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Navbar();
|
Navbar(
|
||||||
|
const Glib::ustring & request_text = ""
|
||||||
|
);
|
||||||
|
|
||||||
~Navbar();
|
~Navbar();
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
void refresh();
|
void refresh();
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
void set_request(
|
void set_request_text(
|
||||||
const Glib::ustring & value
|
const Glib::ustring & value
|
||||||
);
|
);
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
Glib::ustring get_request();
|
Glib::ustring get_request_text();
|
||||||
|
|
||||||
Glib::ustring get_request_scheme();
|
Glib::ustring get_request_scheme();
|
||||||
Glib::ustring get_request_host();
|
Glib::ustring get_request_host();
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,27 @@
|
||||||
using namespace app::browser::main::tab::page::navbar;
|
using namespace app::browser::main::tab::page::navbar;
|
||||||
|
|
||||||
// Construct
|
// Construct
|
||||||
Request::Request()
|
Request::Request(
|
||||||
{
|
const Glib::ustring & text
|
||||||
|
) {
|
||||||
// Init entry
|
// Init entry
|
||||||
set_placeholder_text(
|
set_placeholder_text(
|
||||||
_("URL or search term...")
|
_("URL or search term...")
|
||||||
);
|
);
|
||||||
|
|
||||||
set_hexpand(
|
set_hexpand(
|
||||||
true
|
HEXPAND
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!text.empty())
|
||||||
|
{
|
||||||
|
set_text(
|
||||||
|
text
|
||||||
|
);
|
||||||
|
|
||||||
|
parse();
|
||||||
|
}
|
||||||
|
|
||||||
// Connect events
|
// Connect events
|
||||||
signal_changed().connect(
|
signal_changed().connect(
|
||||||
[this]
|
[this]
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ namespace app::browser::main::tab::page::navbar
|
||||||
{
|
{
|
||||||
class Request : public Gtk::Entry
|
class Request : public Gtk::Entry
|
||||||
{
|
{
|
||||||
|
const bool HEXPAND = true;
|
||||||
|
|
||||||
Glib::ustring scheme,
|
Glib::ustring scheme,
|
||||||
host,
|
host,
|
||||||
port,
|
port,
|
||||||
|
|
@ -20,7 +22,9 @@ namespace app::browser::main::tab::page::navbar
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Request();
|
Request(
|
||||||
|
const Glib::ustring & text = ""
|
||||||
|
);
|
||||||
|
|
||||||
~Request();
|
~Request();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue