update menu build

This commit is contained in:
yggverse 2024-09-08 17:48:19 +03:00
parent 8a65c7aed9
commit f23a54c58a
6 changed files with 191 additions and 192 deletions

View file

@ -4,6 +4,8 @@ src/app/browser/header/main.cpp
src/app/browser/header/main/subtitle.cpp src/app/browser/header/main/subtitle.cpp
src/app/browser/header/main/title.cpp src/app/browser/header/main/title.cpp
src/app/browser/header/menu.cpp src/app/browser/header/menu.cpp
src/app/browser/header/menu/tab.cpp
src/app/browser/header/menu/tools.cpp
src/app/browser/header/tab.cpp src/app/browser/header/tab.cpp
src/app/browser/main.cpp src/app/browser/main.cpp
src/app/browser/main/tab.cpp src/app/browser/main/tab.cpp

View file

@ -22,7 +22,7 @@ Browser::Browser(
} }
); );
add_action( const auto ACTION__DEBUG = add_action(
"debug", "debug",
[this] [this]
{ {
@ -38,7 +38,7 @@ Browser::Browser(
"<Primary>i" "<Primary>i"
); );
add_action( const auto ACTION__MAIN_TAB_APPEND = add_action(
"main_tab_append", "main_tab_append",
[this] [this]
{ {
@ -151,7 +151,14 @@ Browser::Browser(
); );
// Init components // Init components
browserHeader = Gtk::make_managed<browser::Header>(); browserHeader = Gtk::make_managed<browser::Header>(
ACTION__DEBUG,
ACTION__MAIN_TAB_APPEND,
ACTION__MAIN_TAB_CLOSE,
ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK,
ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD,
ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE
);
set_titlebar( set_titlebar(
* browserHeader * browserHeader

View file

@ -5,33 +5,44 @@
using namespace app::browser; using namespace app::browser;
Header::Header() Header::Header(
{ const Glib::RefPtr<Gio::SimpleAction> & ACTION__DEBUG,
// Init header bar const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_APPEND,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_CLOSE,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE
) {
// Init widget
set_show_title_buttons( set_show_title_buttons(
SHOW_TITLE_BUTTONS SHOW_TITLE_BUTTONS
); );
// Init menu // Init components
headerMenu = Gtk::make_managed<header::Menu>(); headerMenu = Gtk::make_managed<header::Menu>(
ACTION__DEBUG,
pack_start( ACTION__MAIN_TAB_APPEND,
* headerMenu ACTION__MAIN_TAB_CLOSE,
ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK,
ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD,
ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE
); );
// Init tab pack_start(
* headerMenu
);
headerTab = Gtk::make_managed<header::Tab>(); headerTab = Gtk::make_managed<header::Tab>();
pack_start( pack_start(
* headerTab * headerTab
); );
// Init main widget
headerMain = Gtk::make_managed<header::Main>(); headerMain = Gtk::make_managed<header::Main>();
set_title_widget( set_title_widget(
* headerMain * headerMain
); );
} }
void Header::refresh( void Header::refresh(

View file

@ -1,6 +1,8 @@
#ifndef APP_BROWSER_HEADER_HPP #ifndef APP_BROWSER_HEADER_HPP
#define APP_BROWSER_HEADER_HPP #define APP_BROWSER_HEADER_HPP
#include <giomm/simpleaction.h>
#include <glibmm/refptr.h>
#include <glibmm/ustring.h> #include <glibmm/ustring.h>
#include <gtkmm/headerbar.h> #include <gtkmm/headerbar.h>
#include <gtkmm/object.h> #include <gtkmm/object.h>
@ -26,7 +28,14 @@ namespace app::browser
public: public:
Header(); Header(
const Glib::RefPtr<Gio::SimpleAction> & ACTION__DEBUG,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_APPEND,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_CLOSE,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE
);
void refresh( void refresh(
const Glib::ustring & TITLE, const Glib::ustring & TITLE,

View file

@ -2,158 +2,144 @@
using namespace app::browser::header; using namespace app::browser::header;
Menu::Menu() Menu::Menu(
{ const Glib::RefPtr<Gio::SimpleAction> & ACTION__DEBUG,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_APPEND,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_CLOSE,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE
) {
// Init widget
set_tooltip_text( set_tooltip_text(
_("Menu") _("Menu")
); );
set_menu_model( // Init components @TODO make builder
main( const auto MENU__MAIN = Gio::Menu::create();
main_tab(
main_tab_page( const auto MENU__MAIN_TAB = Gio::Menu::create();
main_tab_page_navigation(
main_tab_page_navigation_history() MENU__MAIN_TAB->append(
_("New.."),
get_action_detailed_name(
ACTION__MAIN_TAB_APPEND
)
);
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_HISTORY = Gio::Menu::create();
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_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_CLOSE = Gio::Menu::create();
MENU__MAIN_TAB_CLOSE->append(
_("Active tab"),
get_action_detailed_name(
ACTION__MAIN_TAB_CLOSE
) )
), );
main_tab_close()
), // @TODO
main_tools() /*
) MENU__MAIN_TAB_CLOSE->append(
_("All tabs to left"),
get_action_detailed_name(
ACTION__MAIN_TAB_CLOSE
)
);
MENU__MAIN_TAB_CLOSE->append(
_("All tabs to right"),
get_action_detailed_name(
ACTION__MAIN_TAB_CLOSE
)
);
MENU__MAIN_TAB_CLOSE->append(
_("All tabs"),
get_action_detailed_name(
ACTION__MAIN_TAB_CLOSE
)
);
*/
MENU__MAIN_TAB->append_submenu(
_("Close"),
MENU__MAIN_TAB_CLOSE
);
MENU__MAIN->append_submenu(
_("Tab"),
MENU__MAIN_TAB
);
const auto MENU__MAIN_TOOLS = Gio::Menu::create();
MENU__MAIN_TOOLS->append(
_("Debug"),
get_action_detailed_name(
ACTION__DEBUG
)
);
MENU__MAIN->append_submenu(
_("Tools"),
MENU__MAIN_TOOLS
);
MENU__MAIN->append(
_("Quit"),
"app.quit" // @TODO
);
set_menu_model(
MENU__MAIN
); );
} }
Glib::RefPtr<Gio::Menu> Menu::main( Glib::ustring Menu::get_action_detailed_name(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB, const Glib::RefPtr<Gio::SimpleAction> & ACTION
const Glib::RefPtr<Gio::Menu> & MAIN_TOOLS
) { ) {
auto menu = Gio::Menu::create(); return Glib::ustring::sprintf(
"win.%s", ACTION->get_name()
menu->append_submenu(
_("Tab"),
MAIN_TAB
); );
menu->append_submenu(
_("Tools"),
MAIN_TOOLS
);
menu->append(
_("Quit"),
"app.quit"
);
return menu;
}
Glib::RefPtr<Gio::Menu> Menu::main_tab(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_PAGE,
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_CLOSE
) {
auto menu = Gio::Menu::create();
menu->append(
_("New.."),
"win.main_tab_append"
);
menu->append_submenu(
_("Page"),
MAIN_TAB_PAGE
);
menu->append_submenu(
_("Close"),
MAIN_TAB_CLOSE
);
return menu;
}
Glib::RefPtr<Gio::Menu> Menu::main_tab_page(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_PAGE_NAVIGATION
) {
auto menu = Gio::Menu::create();
menu->append_submenu(
_("Navigation"),
MAIN_TAB_PAGE_NAVIGATION
);
return menu;
}
Glib::RefPtr<Gio::Menu> Menu::main_tab_page_navigation(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_PAGE_NAVIGATION_HISTORY
) {
auto menu = Gio::Menu::create();
menu->append_submenu(
_("History"),
MAIN_TAB_PAGE_NAVIGATION_HISTORY
);
menu->append(
_("Update"),
"win.main_tab_page_navigation_update"
);
return menu;
}
Glib::RefPtr<Gio::Menu> Menu::main_tab_page_navigation_history()
{
auto menu = Gio::Menu::create();
menu->append(
_("Back"),
"win.main_tab_page_navigation_history_back"
);
menu->append(
_("Forward"),
"win.main_tab_page_navigation_history_forward"
);
return menu;
}
Glib::RefPtr<Gio::Menu> Menu::main_tab_close()
{
auto menu = Gio::Menu::create();
menu->append(
_("Active tab"),
"win.main_tab_close"
);
menu->append(
_("All tabs to left"),
"win.main_tab_close_left"
);
menu->append(
_("All tabs to right"),
"win.main_tab_close_right"
);
menu->append(
_("All tabs"),
"win.main_tab_close_all"
);
return menu;
}
Glib::RefPtr<Gio::Menu> Menu::main_tools()
{
auto menu = Gio::Menu::create();
menu->append(
_("Debug"),
"win.debug"
);
return menu;
} }

View file

@ -2,45 +2,29 @@
#define APP_BROWSER_HEADER_MENU_HPP #define APP_BROWSER_HEADER_MENU_HPP
#include <giomm/menu.h> #include <giomm/menu.h>
#include <giomm/simpleaction.h>
#include <glibmm/i18n.h> #include <glibmm/i18n.h>
#include <glibmm/refptr.h>
#include <gtkmm/menubutton.h> #include <gtkmm/menubutton.h>
namespace app::browser::header namespace app::browser::header
{ {
class Menu : public Gtk::MenuButton class Menu : public Gtk::MenuButton
{ {
// 1 level static Glib::ustring get_action_detailed_name(
static Glib::RefPtr<Gio::Menu> main( const Glib::RefPtr<Gio::SimpleAction> & ACTION
const Glib::RefPtr<Gio::Menu> & MAIN_TAB,
const Glib::RefPtr<Gio::Menu> & MAIN_TOOLS
); );
// 2 level
static Glib::RefPtr<Gio::Menu> main_tab(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_PAGE,
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_CLOSE
);
// 3 level
static Glib::RefPtr<Gio::Menu> main_tab_page(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_PAGE_NAVIGATION
);
// 4 level
static Glib::RefPtr<Gio::Menu> main_tab_page_navigation(
const Glib::RefPtr<Gio::Menu> & MAIN_TAB_PAGE_NAVIGATION_HISTORY
);
// 5 level
static Glib::RefPtr<Gio::Menu> main_tab_page_navigation_history();
static Glib::RefPtr<Gio::Menu> main_tab_close();
static Glib::RefPtr<Gio::Menu> main_tools();
public: public:
Menu(); Menu(
const Glib::RefPtr<Gio::SimpleAction> & ACTION__DEBUG,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_APPEND,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_CLOSE,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_BACK,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_HISTORY_FORWARD,
const Glib::RefPtr<Gio::SimpleAction> & ACTION__MAIN_TAB_PAGE_NAVIGATION_UPDATE
);
}; };
} }