mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-01 00:55:28 +00:00
113 lines
2.8 KiB
C++
113 lines
2.8 KiB
C++
#include "tab.h"
|
|
|
|
namespace app
|
|
{
|
|
namespace browser
|
|
{
|
|
namespace container
|
|
{
|
|
/**
|
|
* Construct
|
|
*/
|
|
Tab::Tab(
|
|
Container *container
|
|
) {
|
|
// Init dependencies
|
|
this->container = container;
|
|
|
|
// Init GTK
|
|
this->gtk = gtk_notebook_new();
|
|
|
|
gtk_notebook_set_scrollable(
|
|
GTK_NOTEBOOK(
|
|
this->gtk
|
|
),
|
|
Tab::SCROLLABLE
|
|
);
|
|
|
|
gtk_widget_show(
|
|
GTK_WIDGET(
|
|
this->gtk
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 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
|
|
)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|