set chmod 0600 on log files, history files, saved parts, etc.
[claws.git] / src / toolbar.h
blobef824565623800f21043fd368a5a059692f301c4
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 if (item->file) \
131 g_free(item->file); \
132 if (item->text) \
133 g_free(item->text); \
134 g_free(item);\
136 g_slist_free(item_list);\
139 #define TOOLBAR_DESTROY_ACTIONS(action_list) \
141 ToolbarClawsActions *action; \
142 while (action_list != NULL) { \
143 action = (ToolbarClawsActions*)action_list->data;\
144 action_list = \
145 g_slist_remove(action_list, action);\
146 if (action->name) \
147 g_free(action->name); \
148 g_free(action); \
150 g_slist_free(action_list); \
156 /* enum holds available actions for both
157 Compose Toolbar and Main Toolbar
159 enum {
160 /* main toolbar */
161 A_RECEIVE_ALL = 0,
162 A_RECEIVE_CUR,
163 A_SEND_QUEUED,
164 A_COMPOSE_EMAIL,
165 A_COMPOSE_NEWS,
166 A_REPLY_MESSAGE,
167 A_REPLY_SENDER,
168 A_REPLY_ALL,
169 A_REPLY_ML,
170 A_OPEN_MAIL,
171 A_FORWARD,
172 A_TRASH,
173 A_DELETE_REAL,
174 A_DELETE_DUP,
175 A_EXECUTE,
176 A_GOTO_PREV,
177 A_GOTO_NEXT,
179 A_IGNORE_THREAD,
180 A_WATCH_THREAD,
181 A_MARK,
182 A_UNMARK,
183 A_LOCK,
184 A_UNLOCK,
185 A_ALL_READ,
186 A_ALL_UNREAD,
187 A_READ,
188 A_UNREAD,
190 A_PRINT,
191 A_LEARN_SPAM,
192 A_GO_FOLDERS,
193 A_PREFERENCES,
195 /* compose toolbar */
196 A_SEND,
197 A_SEND_LATER,
198 A_DRAFT,
199 A_INSERT,
200 A_ATTACH,
201 A_SIG,
202 A_REP_SIG,
203 A_EXTEDITOR,
204 A_LINEWRAP_CURRENT,
205 A_LINEWRAP_ALL,
206 A_ADDRBOOK,
207 #ifdef USE_ENCHANT
208 A_CHECK_SPELLING,
209 #endif
210 A_PRIVACY_SIGN,
211 A_PRIVACY_ENCRYPT,
213 /* common items */
214 A_CLAWS_ACTIONS,
215 A_CANCEL_INC,
216 A_CANCEL_SEND,
217 A_CANCEL_ALL,
218 A_CLOSE,
220 A_SEPARATOR,
222 A_CLAWS_PLUGINS,
224 N_ACTION_VAL
227 struct _ToolbarClawsActions {
228 GtkWidget *widget;
229 gchar *name;
233 GList *toolbar_get_action_items (ToolbarType source);
235 void toolbar_save_config_file (ToolbarType source);
236 void toolbar_read_config_file (ToolbarType source);
238 void toolbar_set_default (ToolbarType source);
239 void toolbar_clear_list (ToolbarType source);
241 GSList *toolbar_get_list (ToolbarType source);
242 void toolbar_set_list_item (ToolbarItem *t_item,
243 ToolbarType source);
245 gint toolbar_ret_val_from_descr (const gchar *descr);
246 gchar *toolbar_ret_descr_from_val (gint val);
248 void toolbar_main_set_sensitive (gpointer data);
249 void toolbar_comp_set_sensitive (gpointer data,
250 gboolean sensitive);
252 /* invoked by mainwindow entries and toolbar actions */
253 void delete_msgview_cb (gpointer data,
254 guint action,
255 GtkWidget *widget);
256 void inc_mail_cb (gpointer data,
257 guint action,
258 GtkWidget *widget);
259 void inc_all_account_mail_cb (gpointer data,
260 guint action,
261 GtkWidget *widget);
262 void send_queue_cb (gpointer data,
263 guint action,
264 GtkWidget *widget);
265 void compose_mail_cb (gpointer data,
266 guint action,
267 GtkWidget *widget);
268 void compose_news_cb (gpointer data,
269 guint action,
270 GtkWidget *widget);
271 /* END */
273 void toolbar_toggle (guint action,
274 gpointer data);
275 void toolbar_update (ToolbarType type,
276 gpointer data);
277 Toolbar *toolbar_create (ToolbarType type,
278 GtkWidget *container,
279 gpointer data);
280 void toolbar_set_style (GtkWidget *toolbar_wid,
281 GtkWidget *handlebox_wid,
282 guint action);
283 void toolbar_destroy (Toolbar *toolbar);
284 void toolbar_set_learn_button (Toolbar *toolbar,
285 LearnButtonType learn_btn_type);
286 const gchar *toolbar_get_short_text (int action);
287 int toolbar_get_icon (int action);
288 gboolean toolbar_check_action_btns (ToolbarType type);
289 #endif /* __CUSTOM_TOOLBAR_H__ */