Browse Source

draft append method

CPP-GTK4
yggverse 3 months ago
parent
commit
d6fc439908
  1. 24
      src/app/browser/container/page.cpp
  2. 10
      src/app/browser/container/page.h
  3. 84
      src/app/browser/container/tab.cpp
  4. 17
      src/app/browser/container/tab.h

24
src/app/browser/container/page.cpp

@ -6,7 +6,9 @@ namespace app @@ -6,7 +6,9 @@ namespace app
{
namespace container
{
// Construct
/**
* Construct
*/
Page::Page(
Container *container
) {
@ -22,6 +24,26 @@ namespace app @@ -22,6 +24,26 @@ namespace app
)
);
}
/**
* Init empty page
*/
void Page::init(
char *request,
bool focus
) {
// @TODO
}
/**
* Open page request
*/
void Page::open(
char *request,
bool history
) {
// @TODO
}
}
}
}

10
src/app/browser/container/page.h

@ -22,6 +22,16 @@ namespace app @@ -22,6 +22,16 @@ namespace app
Page(
Container *container
);
void init(
char *request,
bool focus
);
void open(
char *request,
bool history
);
};
};
};

84
src/app/browser/container/tab.cpp

@ -6,10 +6,15 @@ namespace app @@ -6,10 +6,15 @@ namespace app
{
namespace container
{
// Construct
/**
* Construct
*/
Tab::Tab(
Container *container
) {
// Init dependencies
this->container = container;
// Init GTK
this->gtk = gtk_notebook_new();
@ -26,6 +31,83 @@ namespace app @@ -26,6 +31,83 @@ namespace app
)
);
}
/**
* Append new tab
*/
void Tab::append(
char *request,
bool open = true,
bool focus = true
) {
// Init new page
Page *page = new Page(
this->container
);
gtk_notebook_append_page(
GTK_NOTEBOOK(
this->gtk
),
GTK_WIDGET(
page->gtk
),
NULL // @TODO label
);
gtk_notebook_set_tab_reorderable(
GTK_NOTEBOOK(
this->gtk
),
GTK_WIDGET(
page->gtk
),
Tab::REORDERABLE
);
// Page open requested
if (open)
{
page->open(
request,
false // history
);
}
else
{
page->init(
request,
true // focus @TODO boolean empty(request)
);
}
// Focus requested
if (focus)
{
gtk_notebook_set_current_page(
GTK_NOTEBOOK(
this->gtk
),
gtk_notebook_page_num(
GTK_NOTEBOOK(
this->gtk
),
GTK_WIDGET(
page->gtk
)
)
);
}
// Render
gtk_widget_show(
GTK_WIDGET(
this->gtk
)
);
}
}
}
}

17
src/app/browser/container/tab.h

@ -1,8 +1,12 @@ @@ -1,8 +1,12 @@
#ifndef APP_BROWSER_CONTAINER_TAB_H
#define APP_BROWSER_CONTAINER_TAB_H
// Dependencies
#include "../container.h"
// Requirements
#include "page.h"
namespace app
{
namespace browser
@ -11,18 +15,31 @@ namespace app @@ -11,18 +15,31 @@ namespace app
namespace container
{
class Page; // @TODO not required here
class Tab
{
public:
// GTK
GtkWidget *gtk;
// Defaults
const gboolean REORDERABLE = true;
const gboolean SCROLLABLE = true;
// Dependencies
Container *container;
Tab(
Container *container
);
void append(
char *request,
bool open,
bool focus
);
};
};
};

Loading…
Cancel
Save