Fix bug #3574: Template addressing
[claws.git] / src / toolbar.h
blobf8b1f21d54c38f6c42f4dfcfc0e4c5c39a8612b2
1 /*
2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 2001-2012 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/>.
20 #ifndef __CUSTOM_TOOLBAR_H__
21 #define __CUSTOM_TOOLBAR_H__
23 #include "gtk/gtkutils.h"
25 #define SEPARATOR_PIXMAP "---"
27 typedef struct _Toolbar Toolbar;
28 typedef struct _ToolbarItem ToolbarItem;
29 typedef struct _ToolbarClawsActions ToolbarClawsActions;
31 typedef enum {
32 TOOLBAR_MAIN = 0,
33 TOOLBAR_COMPOSE,
34 TOOLBAR_MSGVIEW
35 } ToolbarType;
37 #define NUM_TOOLBARS 3
39 typedef enum
41 COMPOSEBUTTON_MAIL,
42 COMPOSEBUTTON_NEWS
43 } ComposeButtonType;
45 typedef enum
47 LEARN_SPAM,
48 LEARN_HAM
49 } LearnButtonType;
51 struct _Toolbar {
52 GtkWidget *toolbar;
54 GtkWidget *folders_btn;
55 GtkWidget *get_btn;
56 GtkWidget *getall_btn;
57 GtkWidget *send_btn;
59 GtkWidget *compose_mail_btn;
60 GtkWidget *compose_mail_icon;
61 GtkWidget *compose_news_icon;
63 GtkWidget *reply_btn;
64 GtkWidget *replysender_btn;
65 GtkWidget *replyall_btn;
66 GtkWidget *replylist_btn;
68 GtkWidget *fwd_btn;
70 GtkWidget *trash_btn;
71 GtkWidget *delete_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_EXECUTE,
172 A_GOTO_PREV,
173 A_GOTO_NEXT,
174 A_IGNORE_THREAD,
175 A_WATCH_THREAD,
176 A_PRINT,
177 A_LEARN_SPAM,
178 A_GO_FOLDERS,
179 A_PREFERENCES,
181 /* compose toolbar */
182 A_SEND,
183 A_SENDL,
184 A_DRAFT,
185 A_INSERT,
186 A_ATTACH,
187 A_SIG,
188 A_REP_SIG,
189 A_EXTEDITOR,
190 A_LINEWRAP_CURRENT,
191 A_LINEWRAP_ALL,
192 A_ADDRBOOK,
193 #ifdef USE_ENCHANT
194 A_CHECK_SPELLING,
195 #endif
197 /* common items */
198 A_CLAWS_ACTIONS,
199 A_CANCEL_INC,
200 A_CANCEL_SEND,
201 A_CANCEL_ALL,
202 A_CLOSE,
204 A_SEPARATOR,
206 A_CLAWS_PLUGINS,
208 N_ACTION_VAL
211 struct _ToolbarClawsActions {
212 GtkWidget *widget;
213 gchar *name;
217 GList *toolbar_get_action_items (ToolbarType source);
219 void toolbar_save_config_file (ToolbarType source);
220 void toolbar_read_config_file (ToolbarType source);
222 void toolbar_set_default (ToolbarType source);
223 void toolbar_clear_list (ToolbarType source);
225 GSList *toolbar_get_list (ToolbarType source);
226 void toolbar_set_list_item (ToolbarItem *t_item,
227 ToolbarType source);
229 gint toolbar_ret_val_from_descr (const gchar *descr);
230 gchar *toolbar_ret_descr_from_val (gint val);
232 void toolbar_main_set_sensitive (gpointer data);
233 void toolbar_comp_set_sensitive (gpointer data,
234 gboolean sensitive);
236 /* invoked by mainwindow entries and toolbar actions */
237 void delete_msgview_cb (gpointer data,
238 guint action,
239 GtkWidget *widget);
240 void inc_mail_cb (gpointer data,
241 guint action,
242 GtkWidget *widget);
243 void inc_all_account_mail_cb (gpointer data,
244 guint action,
245 GtkWidget *widget);
246 void send_queue_cb (gpointer data,
247 guint action,
248 GtkWidget *widget);
249 void compose_mail_cb (gpointer data,
250 guint action,
251 GtkWidget *widget);
252 void compose_news_cb (gpointer data,
253 guint action,
254 GtkWidget *widget);
255 /* END */
257 void toolbar_toggle (guint action,
258 gpointer data);
259 void toolbar_update (ToolbarType type,
260 gpointer data);
261 Toolbar *toolbar_create (ToolbarType type,
262 GtkWidget *container,
263 gpointer data);
264 void toolbar_set_style (GtkWidget *toolbar_wid,
265 GtkWidget *handlebox_wid,
266 guint action);
267 void toolbar_destroy (Toolbar *toolbar);
268 void toolbar_set_learn_button (Toolbar *toolbar,
269 LearnButtonType learn_btn_type);
270 const gchar *toolbar_get_short_text (int action);
271 int toolbar_get_icon (int action);
272 gboolean toolbar_check_action_btns (ToolbarType type);
273 #endif /* __CUSTOM_TOOLBAR_H__ */