summaryrefslogtreecommitdiff
path: root/frontends/gtk/toolbar.h
blob: 4ecca9f02f91b6844d246e8a7410451e974ee83a (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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
 * Copyright 2009 Mark Benjamin <netsurf-browser.org.MarkBenjamin@dfgh.net>
 *
 * This file is part of NetSurf, http://www.netsurf-browser.org/
 *
 * NetSurf 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; version 2 of the License.
 *
 * NetSurf 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef NETSURF_GTK_TOOLBAR_H_
#define NETSURF_GTK_TOOLBAR_H_

/**
 * control toolbar context
 */
struct nsgtk_toolbar;
struct nsgtk_scaffolding;

/**
 * create a control toolbar
 *
 * \param[in] builder The gtk builder object the toolbar is being created from
 * \param[out] toolbar a pointer to receive the result.
 * \return NSERROR_OK and toolbar updated on success else error code
 */
nserror nsgtk_toolbar_create(GtkBuilder *builder,
			     struct browser_window *(*get_bw)(void *ctx),
			     void *get_bw_ctx,
			     bool want_location_focus,
			     struct nsgtk_toolbar **toolbar);


/**
 * Update the toolbar items being shown based on current settings
 *
 * \param toolbar A toolbar returned from a creation
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb);


/**
 * Update toolbar style and size based on current settings
 *
 * \param toolbar A toolbar returned from a creation
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_restyle(struct nsgtk_toolbar *tb);


/**
 * Start or stop a throbber in a toolbar
 *
 * \param toolbar A toolbar returned from a creation
 * \param active True if the throbber animation should play.
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active);


/**
 * Page info has changed state
 *
 * \param toolbar A toolbar returned from a creation
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_page_info_change(struct nsgtk_toolbar *tb);


/**
 * Update the toolbar url entry
 *
 * \param toolbar A toolbar returned from a creation
 * \param url The URL to set
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_set_url(struct nsgtk_toolbar *tb, nsurl *url);


/**
 * set the websearch image
 *
 * \param toolbar A toolbar returned from a creation
 * \param pixbuf The pixel buffer data to use to set the web search icon
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_set_websearch_image(struct nsgtk_toolbar *tb, GdkPixbuf *pixbuf);


/**
 * activate the handler for a toolbar item
 *
 * This allows the same action to be performed for menu enties as if
 *  the user had clicked the toolbar widget.
 *
 * \param toolbar A toolbar returned from a creation
 * \param itemid the id of the item to activate
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_item_activate(struct nsgtk_toolbar *tb, nsgtk_toolbar_button itemid);

/**
 * set the toolbar to be shown or hidden
 *
 * \param toolbar A toolbar returned from a creation
 * \param show true to show the toolbar and false to hide it.
 * \return NSERROR_OK on success
 */
nserror nsgtk_toolbar_show(struct nsgtk_toolbar *tb, bool show);

/**
 * position the page info window appropriately
 *
 * \param tb The toolbar to position relative to
 * \param win The page-info window to position
 */
nserror nsgtk_toolbar_position_page_info(struct nsgtk_toolbar *tb,
					 struct nsgtk_pi_window *win);

/**
 * position the local history window appropriately
 *
 * \param tb The toolbar to position relative to
 */
nserror nsgtk_toolbar_position_local_history(struct nsgtk_toolbar *tb);

/**
 * Initialise customization of toolbar entries
 */
void nsgtk_toolbar_customization_init(struct nsgtk_scaffolding *g);


#endif