Document hidden pref 'warn_sending_many_recipients_num'
[claws.git] / src / toolbar.h
blobc9aaf4f1ef871b21ebfa83b9b708a2f331249a15
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
113 struct _ToolbarItem {
114 gint index;
115 gchar *file;
116 gchar *text;
117 ToolbarType type;
118 gpointer parent;
121 #define TOOLBAR_DESTROY_ITEMS(item_list) \
123 ToolbarItem *item; \
124 while (item_list != NULL) { \
125 item = (ToolbarItem*)item_list->data; \
126 item_list = g_slist_remove(item_list, item); \
127 if (item->file) \
128 g_free(item->file); \
129 if (item->text) \
130 g_free(item->text); \
131 g_free(item);\
133 g_slist_free(item_list);\
136 #define TOOLBAR_DESTROY_ACTIONS(action_list) \
138 ToolbarClawsActions *action; \
139 while (action_list != NULL) { \
140 action = (ToolbarClawsActions*)action_list->data;\
141 action_list = \
142 g_slist_remove(action_list, action);\
143 if (action->name) \
144 g_free(action->name); \
145 g_free(action); \
147 g_slist_free(action_list); \
153 /* enum holds available actions for both
154 Compose Toolbar and Main Toolbar
156 enum {
157 /* main toolbar */
158 A_RECEIVE_ALL = 0,
159 A_RECEIVE_CUR,
160 A_SEND_QUEUED,
161 A_COMPOSE_EMAIL,
162 A_COMPOSE_NEWS,
163 A_REPLY_MESSAGE,
164 A_REPLY_SENDER,
165 A_REPLY_ALL,
166 A_REPLY_ML,
167 A_OPEN_MAIL,
168 A_FORWARD,
169 A_TRASH,
170 A_DELETE_REAL,
171 A_DELETE_DUP,
172 A_EXECUTE,
173 A_GOTO_PREV,
174 A_GOTO_NEXT,
176 A_IGNORE_THREAD,
177 A_WATCH_THREAD,
178 A_MARK,
179 A_UNMARK,
180 A_LOCK,
181 A_UNLOCK,
182 A_ALL_READ,
183 A_ALL_UNREAD,
184 A_READ,
185 A_UNREAD,
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
208 /* common items */
209 A_CLAWS_ACTIONS,
210 A_CANCEL_INC,
211 A_CANCEL_SEND,
212 A_CANCEL_ALL,
213 A_CLOSE,
215 A_SEPARATOR,
217 A_CLAWS_PLUGINS,
219 N_ACTION_VAL
222 struct _ToolbarClawsActions {
223 GtkWidget *widget;
224 gchar *name;
228 GList *toolbar_get_action_items (ToolbarType source);
230 void toolbar_save_config_file (ToolbarType source);
231 void toolbar_read_config_file (ToolbarType source);
233 void toolbar_set_default (ToolbarType source);
234 void toolbar_clear_list (ToolbarType source);
236 GSList *toolbar_get_list (ToolbarType source);
237 void toolbar_set_list_item (ToolbarItem *t_item,
238 ToolbarType source);
240 gint toolbar_ret_val_from_descr (const gchar *descr);
241 gchar *toolbar_ret_descr_from_val (gint val);
243 void toolbar_main_set_sensitive (gpointer data);
244 void toolbar_comp_set_sensitive (gpointer data,
245 gboolean sensitive);
247 /* invoked by mainwindow entries and toolbar actions */
248 void delete_msgview_cb (gpointer data,
249 guint action,
250 GtkWidget *widget);
251 void inc_mail_cb (gpointer data,
252 guint action,
253 GtkWidget *widget);
254 void inc_all_account_mail_cb (gpointer data,
255 guint action,
256 GtkWidget *widget);
257 void send_queue_cb (gpointer data,
258 guint action,
259 GtkWidget *widget);
260 void compose_mail_cb (gpointer data,
261 guint action,
262 GtkWidget *widget);
263 void compose_news_cb (gpointer data,
264 guint action,
265 GtkWidget *widget);
266 /* END */
268 void toolbar_toggle (guint action,
269 gpointer data);
270 void toolbar_update (ToolbarType type,
271 gpointer data);
272 Toolbar *toolbar_create (ToolbarType type,
273 GtkWidget *container,
274 gpointer data);
275 void toolbar_set_style (GtkWidget *toolbar_wid,
276 GtkWidget *handlebox_wid,
277 guint action);
278 void toolbar_destroy (Toolbar *toolbar);
279 void toolbar_set_learn_button (Toolbar *toolbar,
280 LearnButtonType learn_btn_type);
281 const gchar *toolbar_get_short_text (int action);
282 int toolbar_get_icon (int action);
283 gboolean toolbar_check_action_btns (ToolbarType type);
284 #endif /* __CUSTOM_TOOLBAR_H__ */