update team data
[claws.git] / src / toolbar.h
blob6597b55a7471234b19e2a1799d28c496c653cebc
1 /*
2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 2001-2017 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 #ifndef __CUSTOM_TOOLBAR_H__
20 #define __CUSTOM_TOOLBAR_H__
22 #include "gtk/gtkutils.h"
24 #define SEPARATOR_PIXMAP "---"
26 typedef struct _Toolbar Toolbar;
27 typedef struct _ToolbarItem ToolbarItem;
28 typedef struct _ToolbarClawsActions ToolbarClawsActions;
30 typedef enum {
31 TOOLBAR_MAIN = 0,
32 TOOLBAR_COMPOSE,
33 TOOLBAR_MSGVIEW
34 } ToolbarType;
36 #define NUM_TOOLBARS 3
38 typedef enum
40 COMPOSEBUTTON_MAIL,
41 COMPOSEBUTTON_NEWS
42 } ComposeButtonType;
44 typedef enum
46 LEARN_SPAM,
47 LEARN_HAM
48 } LearnButtonType;
50 struct _Toolbar {
51 GtkWidget *toolbar;
53 GtkWidget *folders_btn;
54 GtkWidget *get_btn;
55 GtkWidget *getall_btn;
56 GtkWidget *send_btn;
58 GtkWidget *compose_mail_btn;
59 GtkWidget *compose_mail_icon;
60 GtkWidget *compose_news_icon;
62 GtkWidget *reply_btn;
63 GtkWidget *replysender_btn;
64 GtkWidget *replyall_btn;
65 GtkWidget *replylist_btn;
67 GtkWidget *fwd_btn;
69 GtkWidget *trash_btn;
70 GtkWidget *delete_btn;
71 GtkWidget *delete_dup_btn;
72 GtkWidget *prev_btn;
73 GtkWidget *next_btn;
74 GtkWidget *exec_btn;
76 GtkWidget *separator;
77 GtkWidget *learn_spam_btn;
78 GtkWidget *learn_spam_icon;
79 GtkWidget *learn_ham_icon;
81 GtkWidget *cancel_inc_btn;
82 GtkWidget *cancel_send_btn;
83 GtkWidget *cancel_all_btn;
85 ComposeButtonType compose_btn_type;
86 LearnButtonType learn_btn_type;
88 /* compose buttons */
89 GtkWidget *sendl_btn;
90 GtkWidget *draft_btn;
91 GtkWidget *insert_btn;
92 GtkWidget *attach_btn;
93 GtkWidget *sig_btn;
94 GtkWidget *repsig_btn;
95 GtkWidget *exteditor_btn;
96 GtkWidget *linewrap_current_btn;
97 GtkWidget *linewrap_all_btn;
98 GtkWidget *addrbook_btn;
100 GtkWidget *open_mail_btn;
101 GtkWidget *close_window_btn;
103 GtkWidget *preferences_btn;
105 GSList *action_list;
106 GSList *item_list;
108 #ifdef USE_ENCHANT
109 GtkWidget *spellcheck_btn;
110 #endif
112 GtkWidget *privacy_sign_btn;
113 GtkWidget *privacy_encrypt_btn;
116 struct _ToolbarItem {
117 gint index;
118 gchar *file;
119 gchar *text;
120 ToolbarType type;
121 gpointer parent;
124 #define TOOLBAR_DESTROY_ITEMS(item_list) \
126 ToolbarItem *item; \
127 while (item_list != NULL) { \
128 item = (ToolbarItem*)item_list->data; \
129 item_list = g_slist_remove(item_list, item); \
130 toolbar_item_destroy(item); \
132 g_slist_free(item_list);\
135 #define TOOLBAR_DESTROY_ACTIONS(action_list) \
137 ToolbarClawsActions *action; \
138 while (action_list != NULL) { \
139 action = (ToolbarClawsActions*)action_list->data;\
140 action_list = \
141 g_slist_remove(action_list, action);\
142 if (action->name) \
143 g_free(action->name); \
144 g_free(action); \
146 g_slist_free(action_list); \
152 /* enum holds available actions for both
153 Compose Toolbar and Main Toolbar
155 enum {
156 /* main toolbar */
157 A_RECEIVE_ALL = 0,
158 A_RECEIVE_CUR,
159 A_SEND_QUEUED,
160 A_COMPOSE_EMAIL,
161 A_COMPOSE_NEWS,
162 A_REPLY_MESSAGE,
163 A_REPLY_SENDER,
164 A_REPLY_ALL,
165 A_REPLY_ML,
166 A_OPEN_MAIL,
167 A_FORWARD,
168 A_TRASH,
169 A_DELETE_REAL,
170 A_DELETE_DUP,
171 A_EXECUTE,
172 A_GOTO_PREV,
173 A_GOTO_NEXT,
175 A_IGNORE_THREAD,
176 A_WATCH_THREAD,
177 A_MARK,
178 A_UNMARK,
179 A_LOCK,
180 A_UNLOCK,
181 A_ALL_READ,
182 A_ALL_UNREAD,
183 A_READ,
184 A_UNREAD,
185 A_RUN_PROCESSING,
187 A_PRINT,
188 A_LEARN_SPAM,
189 A_GO_FOLDERS,
190 A_PREFERENCES,
192 /* compose toolbar */
193 A_SEND,
194 A_SEND_LATER,
195 A_DRAFT,
196 A_INSERT,
197 A_ATTACH,
198 A_SIG,
199 A_REP_SIG,
200 A_EXTEDITOR,
201 A_LINEWRAP_CURRENT,
202 A_LINEWRAP_ALL,
203 A_ADDRBOOK,
204 #ifdef USE_ENCHANT
205 A_CHECK_SPELLING,
206 #endif
207 A_PRIVACY_SIGN,
208 A_PRIVACY_ENCRYPT,
210 /* common items */
211 A_CLAWS_ACTIONS,
212 A_CANCEL_INC,
213 A_CANCEL_SEND,
214 A_CANCEL_ALL,
215 A_CLOSE,
217 A_SEPARATOR,
219 A_CLAWS_PLUGINS,
221 N_ACTION_VAL
224 struct _ToolbarClawsActions {
225 GtkWidget *widget;
226 gchar *name;
230 GList *toolbar_get_action_items (ToolbarType source);
232 void toolbar_save_config_file (ToolbarType source);
233 void toolbar_read_config_file (ToolbarType source);
235 void toolbar_set_default (ToolbarType source);
236 void toolbar_clear_list (ToolbarType source);
238 GSList *toolbar_get_list (ToolbarType source);
239 void toolbar_set_list_item (ToolbarItem *t_item,
240 ToolbarType source);
242 gint toolbar_ret_val_from_descr (const gchar *descr);
243 gchar *toolbar_ret_descr_from_val (gint val);
245 void toolbar_main_set_sensitive (gpointer data);
246 void toolbar_comp_set_sensitive (gpointer data,
247 gboolean sensitive);
249 /* invoked by mainwindow entries and toolbar actions */
250 void delete_msgview_cb (gpointer data,
251 guint action,
252 GtkWidget *widget);
253 void inc_mail_cb (gpointer data,
254 guint action,
255 GtkWidget *widget);
256 void inc_all_account_mail_cb (gpointer data,
257 guint action,
258 GtkWidget *widget);
259 void send_queue_cb (gpointer data,
260 guint action,
261 GtkWidget *widget);
262 void compose_mail_cb (gpointer data,
263 guint action,
264 GtkWidget *widget);
265 void compose_news_cb (gpointer data,
266 guint action,
267 GtkWidget *widget);
268 /* END */
270 void toolbar_toggle (guint action,
271 gpointer data);
272 void toolbar_update (ToolbarType type,
273 gpointer data);
274 Toolbar *toolbar_create (ToolbarType type,
275 GtkWidget *container,
276 gpointer data);
277 void toolbar_set_style (GtkWidget *toolbar_wid,
278 GtkWidget *handlebox_wid,
279 guint action);
280 void toolbar_destroy (Toolbar *toolbar);
281 void toolbar_item_destroy (ToolbarItem *toolbar_item);
283 void toolbar_set_learn_button (Toolbar *toolbar,
284 LearnButtonType learn_btn_type);
285 const gchar *toolbar_get_short_text (int action);
286 int toolbar_get_icon (int action);
287 gboolean toolbar_check_action_btns (ToolbarType type);
288 #endif /* __CUSTOM_TOOLBAR_H__ */