From 88e5ba3736a97941aeeb6031a1b77bcbf97ccb0c Mon Sep 17 00:00:00 2001 From: yggverse Date: Tue, 13 Aug 2024 07:55:23 +0300 Subject: [PATCH] implement separated tab label class --- Makefile | 1 + po/POTFILES.in | 1 + src/app/browser/main/tab.cpp | 39 ++------------------------ src/app/browser/main/tab.hpp | 17 +++++------- src/app/browser/main/tab/label.cpp | 44 ++++++++++++++++++++++++++++++ src/app/browser/main/tab/label.hpp | 31 +++++++++++++++++++++ 6 files changed, 87 insertions(+), 46 deletions(-) create mode 100644 src/app/browser/main/tab/label.cpp create mode 100644 src/app/browser/main/tab/label.hpp diff --git a/Makefile b/Makefile index f7b62f4..4b93048 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,7 @@ SRCS = src/main.cpp\ src/app/browser/header/tab.cpp\ src/app/browser/main.cpp\ src/app/browser/main/tab.cpp\ + src/app/browser/main/tab/label.cpp\ src/lib/database.cpp\ src/lib/database/session.cpp diff --git a/po/POTFILES.in b/po/POTFILES.in index ef62a9d..ce03c3c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -4,6 +4,7 @@ src/app/browser/header/menu.cpp src/app/browser/header/tab.cpp src/app/browser/main.cpp src/app/browser/main/tab.cpp +src/app/browser/main/tab/label.cpp src/lib/database.cpp src/lib/database/session.cpp src/main.cpp diff --git a/src/app/browser/main/tab.cpp b/src/app/browser/main/tab.cpp index 0501892..564e84e 100644 --- a/src/app/browser/main/tab.cpp +++ b/src/app/browser/main/tab.cpp @@ -1,4 +1,5 @@ #include "tab.hpp" +#include "tab/label.hpp" using namespace app::browser::main; @@ -17,35 +18,14 @@ void Tab::append( bool focus ) { // Init new tab label - Gtk::Label * name = new Gtk::Label( - _("New tab") - ); - - // Setup label controller - auto controller = Gtk::GestureClick::create(); - - /* @TODO remove as default - controller->set_button( - GDK_BUTTON_PRIMARY - );*/ - - controller->signal_pressed().connect( - sigc::mem_fun( - * this, - & Tab::on_label_click - ) - ); - - name->add_controller( - controller - ); + label = new tab::Label(); // Init tab data container @TODO Gtk::Label * data = new Gtk::Label("data"); append_page( * data, - * name + * label ); set_tab_reorderable( @@ -88,17 +68,4 @@ void Tab::close_all() -1 // active ); } -} - -void Tab::on_label_click( - int n, - double x, - double y -) { - if (n == 2) // double click - { - close( - -1 // active - ); - } } \ No newline at end of file diff --git a/src/app/browser/main/tab.hpp b/src/app/browser/main/tab.hpp index adaff91..caa6002 100644 --- a/src/app/browser/main/tab.hpp +++ b/src/app/browser/main/tab.hpp @@ -2,24 +2,21 @@ #define APP_BROWSER_MAIN_TAB_HPP #include -#include -#include #include namespace app::browser::main { - class Tab : public Gtk::Notebook + namespace tab { - private: - - void on_label_click( - int n, - double x, - double y - ); + class Label; + } + class Tab : public Gtk::Notebook + { public: + tab::Label * label; + Tab(); ~Tab(); diff --git a/src/app/browser/main/tab/label.cpp b/src/app/browser/main/tab/label.cpp new file mode 100644 index 0000000..34b6e26 --- /dev/null +++ b/src/app/browser/main/tab/label.cpp @@ -0,0 +1,44 @@ +#include "label.hpp" + +using namespace app::browser::main::tab; + +Label::Label() +{ + set_text( + _("New tab") + ); + + // Setup label controller + controller = Gtk::GestureClick::create(); + + /* @TODO remove as default + controller->set_button( + GDK_BUTTON_PRIMARY + );*/ + + controller->signal_pressed().connect( + sigc::mem_fun( + * this, + & Label::on_click + ) + ); + + add_controller( + controller + ); +} + +Label::~Label() = default; + +void Label::on_click( + int n, + double x, + double y +) { + if (n == 2) // double click + { + //Tab::close( + // -1 // active + //); + } +} diff --git a/src/app/browser/main/tab/label.hpp b/src/app/browser/main/tab/label.hpp new file mode 100644 index 0000000..e286549 --- /dev/null +++ b/src/app/browser/main/tab/label.hpp @@ -0,0 +1,31 @@ +#ifndef APP_BROWSER_MAIN_TAB_LABEL_HPP +#define APP_BROWSER_MAIN_TAB_LABEL_HPP + +#include +#include +#include +#include + +namespace app::browser::main::tab +{ + class Label : public Gtk::Label + { + private: + + Glib::RefPtr controller; + + void on_click( + int n, + double x, + double y + ); + + public: + + Label(); + + ~Label(); + }; +} + +#endif // APP_BROWSER_MAIN_TAB_LABEL_HPP \ No newline at end of file