2006-12-12 [paul] 2.6.1cvs21
[claws.git] / src / toolbar.h
blobf52f5e9444738b6586d8591a0314ff66c5458911
1 /*
2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 2001-2006 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 2 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, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
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 _ToolbarSylpheedActions ToolbarSylpheedActions;
31 typedef enum {
32 TOOLBAR_MAIN = 0,
33 TOOLBAR_COMPOSE,
34 TOOLBAR_MSGVIEW
35 } ToolbarType;
37 typedef enum
39 COMPOSEBUTTON_MAIL,
40 COMPOSEBUTTON_NEWS
41 } ComposeButtonType;
43 typedef enum
45 LEARN_SPAM,
46 LEARN_HAM
47 } LearnButtonType;
49 struct _Toolbar {
50 GtkWidget *toolbar;
52 GtkWidget *get_btn;
53 GtkWidget *getall_btn;
54 ComboButton *getall_combo;
55 GtkWidget *send_btn;
57 GtkWidget *compose_mail_btn;
58 GtkWidget *compose_news_btn;
59 ComboButton *compose_combo;
61 GtkWidget *reply_btn;
62 ComboButton *reply_combo;
63 GtkWidget *replysender_btn;
64 ComboButton *replysender_combo;
65 GtkWidget *replyall_btn;
66 ComboButton *replyall_combo;
67 GtkWidget *replylist_btn;
68 ComboButton *replylist_combo;
70 GtkWidget *fwd_btn;
71 ComboButton *fwd_combo;
73 GtkWidget *trash_btn;
74 GtkWidget *delete_btn;
75 GtkWidget *prev_btn;
76 GtkWidget *next_btn;
77 GtkWidget *exec_btn;
79 GtkWidget *separator;
80 GtkWidget *learn_spam_btn;
81 GtkWidget *learn_ham_btn;
83 ComposeButtonType compose_btn_type;
84 LearnButtonType learn_btn_type;
86 /* compose buttons */
87 GtkWidget *sendl_btn;
88 GtkWidget *draft_btn;
89 GtkWidget *insert_btn;
90 GtkWidget *attach_btn;
91 GtkWidget *sig_btn;
92 GtkWidget *exteditor_btn;
93 GtkWidget *linewrap_current_btn;
94 GtkWidget *linewrap_all_btn;
95 GtkWidget *addrbook_btn;
96 #ifdef USE_ASPELL
97 GtkWidget *spellcheck_btn;
98 #endif
100 GSList *action_list;
101 GSList *item_list;
105 struct _ToolbarItem {
106 gint index;
107 gchar *file;
108 gchar *text;
109 ToolbarType type;
110 gpointer parent;
113 #define TOOLBAR_DESTROY_ITEMS(item_list) \
115 ToolbarItem *item; \
116 while (item_list != NULL) { \
117 item = (ToolbarItem*)item_list->data; \
118 item_list = g_slist_remove(item_list, item); \
119 if (item->file) \
120 g_free(item->file); \
121 if (item->text) \
122 g_free(item->text); \
123 g_free(item);\
125 g_slist_free(item_list);\
128 #define TOOLBAR_DESTROY_ACTIONS(action_list) \
130 ToolbarSylpheedActions *action; \
131 while (action_list != NULL) { \
132 action = (ToolbarSylpheedActions*)action_list->data;\
133 action_list = \
134 g_slist_remove(action_list, action);\
135 if (action->name) \
136 g_free(action->name); \
137 g_free(action); \
139 g_slist_free(action_list); \
145 /* enum holds available actions for both
146 Compose Toolbar and Main Toolbar
148 enum {
149 /* main toolbar */
150 A_RECEIVE_ALL = 0,
151 A_RECEIVE_CUR,
152 A_SEND_QUEUED,
153 A_COMPOSE_EMAIL,
154 A_COMPOSE_NEWS,
155 A_REPLY_MESSAGE,
156 A_REPLY_SENDER,
157 A_REPLY_ALL,
158 A_REPLY_ML,
159 A_FORWARD,
160 A_TRASH,
161 A_DELETE_REAL,
162 A_EXECUTE,
163 A_GOTO_PREV,
164 A_GOTO_NEXT,
165 A_IGNORE_THREAD,
166 A_PRINT,
167 A_LEARN_SPAM,
169 /* compose toolbar */
170 A_SEND,
171 A_SENDL,
172 A_DRAFT,
173 A_INSERT,
174 A_ATTACH,
175 A_SIG,
176 A_EXTEDITOR,
177 A_LINEWRAP_CURRENT,
178 A_LINEWRAP_ALL,
179 A_ADDRBOOK,
180 #ifdef USE_ASPELL
181 A_CHECK_SPELLING,
182 #endif
184 /* common items */
185 A_SYL_ACTIONS,
186 A_SEPARATOR,
188 N_ACTION_VAL
191 struct _ToolbarSylpheedActions {
192 GtkWidget *widget;
193 gchar *name;
197 void toolbar_action_execute (GtkWidget *widget,
198 GSList *action_list,
199 gpointer data,
200 gint source);
202 GList *toolbar_get_action_items (ToolbarType source);
204 void toolbar_save_config_file (ToolbarType source);
205 void toolbar_read_config_file (ToolbarType source);
207 void toolbar_set_default (ToolbarType source);
208 void toolbar_clear_list (ToolbarType source);
210 GSList *toolbar_get_list (ToolbarType source);
211 void toolbar_set_list_item (ToolbarItem *t_item,
212 ToolbarType source);
214 gint toolbar_ret_val_from_descr (const gchar *descr);
215 gchar *toolbar_ret_descr_from_val (gint val);
217 void toolbar_main_set_sensitive (gpointer data);
218 void toolbar_comp_set_sensitive (gpointer data,
219 gboolean sensitive);
221 /* invoked by mainwindow entries and toolbar actions */
222 void delete_msgview_cb (gpointer data,
223 guint action,
224 GtkWidget *widget);
225 void inc_mail_cb (gpointer data,
226 guint action,
227 GtkWidget *widget);
228 void inc_all_account_mail_cb (gpointer data,
229 guint action,
230 GtkWidget *widget);
231 void send_queue_cb (gpointer data,
232 guint action,
233 GtkWidget *widget);
234 void compose_mail_cb (gpointer data,
235 guint action,
236 GtkWidget *widget);
237 void compose_news_cb (gpointer data,
238 guint action,
239 GtkWidget *widget);
240 /* END */
242 void toolbar_toggle (guint action,
243 gpointer data);
244 void toolbar_update (ToolbarType type,
245 gpointer data);
246 Toolbar *toolbar_create (ToolbarType type,
247 GtkWidget *container,
248 gpointer data);
249 void toolbar_set_style (GtkWidget *toolbar_wid,
250 GtkWidget *handlebox_wid,
251 guint action);
252 void toolbar_destroy (Toolbar *toolbar);
253 void toolbar_init (Toolbar *toolbar);
254 void toolbar_set_learn_button (Toolbar *toolbar,
255 LearnButtonType learn_btn_type);
257 #endif /* __CUSTOM_TOOLBAR_H__ */