2024-08-10 17:57:15 +03:00
|
|
|
#include "browser.hpp"
|
|
|
|
#include "browser/header.hpp"
|
2024-08-11 22:04:34 +03:00
|
|
|
#include "browser/main.hpp"
|
2024-08-05 03:15:41 +03:00
|
|
|
|
2024-08-08 12:44:27 +03:00
|
|
|
using namespace app;
|
2024-08-05 03:15:41 +03:00
|
|
|
|
2024-08-11 09:55:10 +03:00
|
|
|
Browser::Browser(
|
2024-08-12 14:18:09 +03:00
|
|
|
//const Glib::RefPtr<Gtk::Application> & app,
|
|
|
|
//const std::shared_ptr<lib::Database> & db
|
2024-08-11 09:55:10 +03:00
|
|
|
) {
|
2024-08-11 22:04:34 +03:00
|
|
|
// Init window
|
2024-08-08 12:44:27 +03:00
|
|
|
set_title(
|
2024-08-12 21:30:30 +03:00
|
|
|
_("Yoda")
|
2024-08-08 12:44:27 +03:00
|
|
|
);
|
|
|
|
|
|
|
|
set_default_size(
|
2024-08-24 19:06:42 +03:00
|
|
|
WIDTH,
|
|
|
|
HEIGHT
|
2024-08-08 12:44:27 +03:00
|
|
|
);
|
2024-08-08 15:19:04 +03:00
|
|
|
|
2024-08-11 22:04:34 +03:00
|
|
|
// Init header widget
|
2024-09-02 16:25:31 +03:00
|
|
|
browserHeader = Gtk::make_managed<browser::Header>();
|
2024-08-11 22:04:34 +03:00
|
|
|
|
2024-08-08 15:19:04 +03:00
|
|
|
set_titlebar(
|
2024-08-27 15:46:57 +03:00
|
|
|
* browserHeader
|
2024-08-11 22:04:34 +03:00
|
|
|
);
|
|
|
|
|
|
|
|
// Init main widget
|
2024-09-02 16:25:31 +03:00
|
|
|
browserMain = Gtk::make_managed<browser::Main>();
|
2024-08-11 22:04:34 +03:00
|
|
|
|
|
|
|
set_child(
|
2024-08-27 15:46:57 +03:00
|
|
|
* browserMain
|
2024-08-11 22:04:34 +03:00
|
|
|
);
|
|
|
|
|
2024-09-05 16:40:41 +03:00
|
|
|
// Init browser window actions
|
2024-08-11 22:04:34 +03:00
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"refresh",
|
2024-08-16 19:45:42 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
browserMain->refresh();
|
2024-08-11 09:55:10 +03:00
|
|
|
|
2024-09-05 16:40:41 +03:00
|
|
|
browserHeader->set_title(
|
|
|
|
browserMain->get_current_tab_page_title()
|
|
|
|
);
|
|
|
|
|
|
|
|
browserHeader->set_subtitle(
|
|
|
|
browserMain->get_current_tab_page_subtitle()
|
|
|
|
);
|
2024-08-16 19:45:42 +03:00
|
|
|
}
|
2024-08-14 07:11:24 +03:00
|
|
|
);
|
|
|
|
|
2024-08-12 19:11:00 +03:00
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"debug",
|
2024-08-16 19:45:42 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
// @TODO https://gitlab.gnome.org/GNOME/gtkmm/-/commit/5f3b82537d3daad7bda59dd01e719788070f4b6c
|
|
|
|
gtk_window_set_interactive_debugging(
|
|
|
|
true
|
|
|
|
);
|
2024-08-16 19:45:42 +03:00
|
|
|
}
|
2024-08-12 19:11:00 +03:00
|
|
|
);
|
|
|
|
|
2024-09-05 16:40:41 +03:00
|
|
|
// Tab actions
|
2024-08-12 20:24:06 +03:00
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"main_tab_append",
|
2024-08-16 19:45:42 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
browserMain->tab_append();
|
2024-08-16 19:45:42 +03:00
|
|
|
}
|
2024-08-12 20:24:06 +03:00
|
|
|
);
|
|
|
|
|
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"main_tab_close",
|
2024-08-16 19:45:42 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
browserMain->tab_close();
|
2024-08-16 19:45:42 +03:00
|
|
|
}
|
2024-08-12 20:24:06 +03:00
|
|
|
);
|
|
|
|
|
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"main_tab_close_left",
|
2024-08-16 19:45:42 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
browserMain->tab_close_left();
|
2024-08-16 19:45:42 +03:00
|
|
|
}
|
2024-08-12 20:24:06 +03:00
|
|
|
);
|
|
|
|
|
2024-09-05 02:31:23 +03:00
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"main_tab_close_right",
|
2024-09-05 02:31:23 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
browserMain->tab_close_right();
|
2024-09-05 02:31:23 +03:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
add_action(
|
2024-09-05 16:40:41 +03:00
|
|
|
"main_tab_close_all",
|
2024-09-05 02:31:23 +03:00
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:40:41 +03:00
|
|
|
browserMain->tab_close_all();
|
2024-09-05 02:31:23 +03:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2024-09-05 16:40:41 +03:00
|
|
|
// Tab page navigation actions
|
|
|
|
add_action(
|
|
|
|
"main_tab_page_navigation_update",
|
|
|
|
[this]
|
|
|
|
{
|
2024-09-05 16:48:28 +03:00
|
|
|
browserMain->tab_page_navigation_update();
|
2024-09-05 16:40:41 +03:00
|
|
|
}
|
2024-08-16 19:45:42 +03:00
|
|
|
);
|
2024-08-27 15:53:15 +03:00
|
|
|
|
2024-09-05 16:40:41 +03:00
|
|
|
add_action(
|
|
|
|
"main_tab_page_navigation_history_try_back",
|
|
|
|
[this]
|
|
|
|
{
|
|
|
|
browserMain->tab_page_navigation_history_try_back();
|
|
|
|
}
|
2024-08-27 16:39:44 +03:00
|
|
|
);
|
|
|
|
|
2024-09-05 16:40:41 +03:00
|
|
|
add_action(
|
|
|
|
"main_tab_page_navigation_history_try_forward",
|
|
|
|
[this]
|
|
|
|
{
|
|
|
|
browserMain->tab_page_navigation_history_try_forward();
|
|
|
|
}
|
2024-08-20 16:25:53 +03:00
|
|
|
);
|
2024-08-16 19:45:42 +03:00
|
|
|
}
|