summaryrefslogtreecommitdiffstats
path: root/src/tab-chrome.c
blob: 55df39a4d33b1df0ef7df9c51a1b3e3487c5cef5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * Tab chrome
 *
 * Copyright (C) 2017  Patrick McDermott
 *
 * This file is part of Marquee.
 *
 * Marquee is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Marquee is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Marquee.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <stdlib.h>
#include <string.h>

#include <gtk/gtk.h>
#include <webkit2/webkit2.h>

#include "tab-chrome.h"
#include "tab.h"
#include "back-forward-button-box.h"
#include "stop-reload-button.h"
#include "uri-entry.h"
#include "home-button.h"
#include "main-menu.h"
#include "find-toolbar.h"

static GtkWidget *
navigation_toolbar_new(MqTabChrome *chrome, const gchar *uri)
{
	GtkToolItem *back_forward_button_box;
	GtkToolItem *stop_reload_button;
	GtkToolItem *uri_entry;
	GtkToolItem *home_button;
	GtkToolItem *menu_button;
	GtkToolbar  *navigation_toolbar;

	/* Back/forward button box */
	back_forward_button_box = mq_back_forward_button_box_new(
		chrome->web_view);

	/* Stop/reload button */
	stop_reload_button = mq_stop_reload_button_new(chrome->web_view);

	/* URI entry */
	uri_entry = mq_uri_entry_new(chrome->web_view, uri);

	/* Home button */
	home_button = mq_home_button_new(chrome->config, chrome->web_view);

	/* Menu button */
	menu_button = mq_main_menu_new(chrome->tab,
		chrome->find_toolbar, chrome->web_view);

	/* Navigation toolbar */
	navigation_toolbar = GTK_TOOLBAR(gtk_toolbar_new());
	gtk_toolbar_insert(navigation_toolbar, back_forward_button_box, -1);
	gtk_toolbar_insert(navigation_toolbar, stop_reload_button, -1);
	gtk_toolbar_insert(navigation_toolbar, uri_entry, -1);
	gtk_toolbar_insert(navigation_toolbar, home_button, -1);
	gtk_toolbar_insert(navigation_toolbar, menu_button, -1);

	gtk_widget_set_hexpand(GTK_WIDGET(navigation_toolbar), TRUE);

	return GTK_WIDGET(navigation_toolbar);
}

MqTabChrome *
mq_tab_chrome_new(MqTab *tab, MqFindToolbar *find_toolbar, MqWebView *web_view,
	const gchar *uri)
{
	MqTabChrome *chrome;

	chrome = malloc(sizeof(*chrome));
	chrome->config = mq_application_get_config(mq_tab_get_application(tab));
	chrome->tab = tab;
	chrome->find_toolbar = find_toolbar;
	chrome->web_view = web_view;

	chrome->container = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
	gtk_box_pack_start(GTK_BOX(chrome->container),
		navigation_toolbar_new(chrome, uri), FALSE, FALSE, 0);

	return chrome;
}

GtkWidget *
mq_tab_chrome_get_container(MqTabChrome *chrome)
{
	return chrome->container;
}