Browse Source

implement separated tab label class

CPP-GTK4
yggverse 3 months ago
parent
commit
88e5ba3736
  1. 1
      Makefile
  2. 1
      po/POTFILES.in
  3. 39
      src/app/browser/main/tab.cpp
  4. 17
      src/app/browser/main/tab.hpp
  5. 44
      src/app/browser/main/tab/label.cpp
  6. 31
      src/app/browser/main/tab/label.hpp

1
Makefile

@ -12,6 +12,7 @@ SRCS = src/main.cpp\ @@ -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

1
po/POTFILES.in

@ -4,6 +4,7 @@ src/app/browser/header/menu.cpp @@ -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

39
src/app/browser/main/tab.cpp

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
#include "tab.hpp"
#include "tab/label.hpp"
using namespace app::browser::main;
@ -17,35 +18,14 @@ void Tab::append( @@ -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() @@ -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
);
}
}

17
src/app/browser/main/tab.hpp

@ -2,24 +2,21 @@ @@ -2,24 +2,21 @@
#define APP_BROWSER_MAIN_TAB_HPP
#include <glibmm/i18n.h>
#include <gtkmm/gestureclick.h>
#include <gtkmm/label.h>
#include <gtkmm/notebook.h>
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();

44
src/app/browser/main/tab/label.cpp

@ -0,0 +1,44 @@ @@ -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
//);
}
}

31
src/app/browser/main/tab/label.hpp

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
#ifndef APP_BROWSER_MAIN_TAB_LABEL_HPP
#define APP_BROWSER_MAIN_TAB_LABEL_HPP
#include <glibmm/i18n.h>
#include <glibmm/refptr.h>
#include <gtkmm/gestureclick.h>
#include <gtkmm/label.h>
namespace app::browser::main::tab
{
class Label : public Gtk::Label
{
private:
Glib::RefPtr<Gtk::GestureClick> controller;
void on_click(
int n,
double x,
double y
);
public:
Label();
~Label();
};
}
#endif // APP_BROWSER_MAIN_TAB_LABEL_HPP
Loading…
Cancel
Save