From 46582fbe638ee2ab1f8f41f0eff4452b5e19cabe Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 9 Sep 2024 23:44:22 +0300 Subject: [PATCH] add tab session menu --- src/app/browser.cpp | 21 ++++++++- src/app/browser/header.cpp | 8 +++- src/app/browser/header.hpp | 4 +- src/app/browser/header/menu.cpp | 81 +++++++++++++++++++++------------ src/app/browser/header/menu.hpp | 4 +- src/app/browser/main.cpp | 10 ++++ src/app/browser/main.hpp | 3 ++ 7 files changed, 96 insertions(+), 35 deletions(-) diff --git a/src/app/browser.cpp b/src/app/browser.cpp index b3008d0f..c3e8b7f3 100644 --- a/src/app/browser.cpp +++ b/src/app/browser.cpp @@ -151,7 +151,22 @@ Browser::Browser( "Right" ); - // Init actions + const auto ACTION__MAIN_TAB_SESSION_RESTORE = add_action( + "main_tab_session_restore", + [this] + { + browserMain->tab_restore(); + } + ); + + const auto ACTION__MAIN_TAB_SESSION_SAVE = add_action( + "main_tab_session_save", + [this] + { + browserMain->tab_save(); + } + ); + const auto ACTION__QUIT = add_action( "quit", [this] @@ -184,7 +199,9 @@ Browser::Browser( ACTION__MAIN_TAB_CLOSE_ALL, ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK, ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD, - ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE + ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE, + ACTION__MAIN_TAB_SESSION_RESTORE, + ACTION__MAIN_TAB_SESSION_SAVE ); set_titlebar( diff --git a/src/app/browser/header.cpp b/src/app/browser/header.cpp index 89440402..aef7814b 100644 --- a/src/app/browser/header.cpp +++ b/src/app/browser/header.cpp @@ -13,7 +13,9 @@ Header::Header( const Glib::RefPtr & ACTION__MAIN_TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD, - const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE + const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_RESTORE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_SAVE ) { // Init widget set_show_title_buttons( @@ -29,7 +31,9 @@ Header::Header( ACTION__MAIN_TAB_CLOSE_ALL, ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK, ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD, - ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE + ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE, + ACTION__MAIN_TAB_SESSION_RESTORE, + ACTION__MAIN_TAB_SESSION_SAVE ); pack_start( diff --git a/src/app/browser/header.hpp b/src/app/browser/header.hpp index 9feed021..8e0baa49 100644 --- a/src/app/browser/header.hpp +++ b/src/app/browser/header.hpp @@ -36,7 +36,9 @@ namespace app::browser const Glib::RefPtr & ACTION__MAIN_TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD, - const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE + const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_RESTORE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_SAVE ); void refresh( diff --git a/src/app/browser/header/menu.cpp b/src/app/browser/header/menu.cpp index b2ea686f..a0f6f869 100644 --- a/src/app/browser/header/menu.cpp +++ b/src/app/browser/header/menu.cpp @@ -10,7 +10,9 @@ Menu::Menu( const Glib::RefPtr & ACTION__MAIN_TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD, - const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE + const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_RESTORE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_SAVE ) { // Init widget set_tooltip_text( @@ -29,48 +31,69 @@ Menu::Menu( ) ); - const auto MENU__MAIN_TAB_PAGE = Gio::Menu::create(); + const auto MENU__MAIN_TAB_PAGE = Gio::Menu::create(); - const auto MENU__MAIN_TAB_PAGE_NAVIGATION = Gio::Menu::create(); + const auto MENU__MAIN_TAB_PAGE_NAVIGATION = Gio::Menu::create(); - const auto MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY = Gio::Menu::create(); + const auto MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY = Gio::Menu::create(); - MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY->append( - _("Back"), + MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY->append( + _("Back"), + get_action_detailed_name( + ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK + ) + ); + + MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY->append( + _("Forward"), + get_action_detailed_name( + ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD + ) + ); + + MENU__MAIN_TAB_PAGE_NAVIGATION->append_submenu( + _("History"), + MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY + ); + + MENU__MAIN_TAB_PAGE_NAVIGATION->append( + _("Update"), get_action_detailed_name( - ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK + ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE ) ); - MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY->append( - _("Forward"), - get_action_detailed_name( - ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD - ) - ); - - MENU__MAIN_TAB_PAGE_NAVIGATION->append_submenu( - _("History"), - MENU__MAIN_TAB_PAGE_NAVIGATION_HISTORY + MENU__MAIN_TAB_PAGE->append_submenu( + _("Navigation"), + MENU__MAIN_TAB_PAGE_NAVIGATION ); - MENU__MAIN_TAB_PAGE_NAVIGATION->append( - _("Update"), - get_action_detailed_name( - ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE - ) - ); - - MENU__MAIN_TAB_PAGE->append_submenu( - _("Navigation"), - MENU__MAIN_TAB_PAGE_NAVIGATION - ); - MENU__MAIN_TAB->append_submenu( _("Page"), MENU__MAIN_TAB_PAGE ); + const auto MENU__MAIN_TAB_SESSION = Gio::Menu::create(); + + MENU__MAIN_TAB_SESSION->append( + _("Restore"), + get_action_detailed_name( + ACTION__MAIN_TAB_SESSION_RESTORE + ) + ); + + MENU__MAIN_TAB_SESSION->append( + _("Save"), + get_action_detailed_name( + ACTION__MAIN_TAB_SESSION_SAVE + ) + ); + + MENU__MAIN_TAB->append_submenu( + _("Session"), + MENU__MAIN_TAB_SESSION + ); + const auto MENU__MAIN_TAB_CLOSE = Gio::Menu::create(); MENU__MAIN_TAB_CLOSE->append( diff --git a/src/app/browser/header/menu.hpp b/src/app/browser/header/menu.hpp index d51df2ed..bb24c180 100644 --- a/src/app/browser/header/menu.hpp +++ b/src/app/browser/header/menu.hpp @@ -25,7 +25,9 @@ namespace app::browser::header const Glib::RefPtr & ACTION__MAIN_TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK, const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD, - const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE + const Glib::RefPtr & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_RESTORE, + const Glib::RefPtr & ACTION__MAIN_TAB_SESSION_SAVE ); }; } diff --git a/src/app/browser/main.cpp b/src/app/browser/main.cpp index ca6e93b7..1231df43 100644 --- a/src/app/browser/main.cpp +++ b/src/app/browser/main.cpp @@ -95,6 +95,16 @@ void Main::tab_page_navigation_history_forward() ); }; +void Main::tab_restore() +{ + mainTab->restore(); +}; + +void Main::tab_save() +{ + mainTab->save(); +}; + void Main::shutdown() { mainTab->shutdown(); diff --git a/src/app/browser/main.hpp b/src/app/browser/main.hpp index 7e59c385..0dc96682 100644 --- a/src/app/browser/main.hpp +++ b/src/app/browser/main.hpp @@ -49,6 +49,9 @@ namespace app::browser void tab_page_navigation_history_back(); void tab_page_navigation_history_forward(); + void tab_restore(); + void tab_save(); + void shutdown(); // Getters