/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2002 Hiroyuki Yamamoto
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2001-2017 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __CUSTOM_TOOLBAR_H__
#define __CUSTOM_TOOLBAR_H__
-#define SEPARATOR "separator"
+#include "gtk/gtkutils.h"
+
#define SEPARATOR_PIXMAP "---"
+typedef struct _Toolbar Toolbar;
+typedef struct _ToolbarItem ToolbarItem;
+typedef struct _ToolbarClawsActions ToolbarClawsActions;
+
typedef enum {
- TOOLBAR_MAIN,
+ TOOLBAR_MAIN = 0,
TOOLBAR_COMPOSE,
-} Toolbar;
+ TOOLBAR_MSGVIEW
+} ToolbarType;
+
+#define NUM_TOOLBARS 3
+
+typedef enum
+{
+ COMPOSEBUTTON_MAIL,
+ COMPOSEBUTTON_NEWS
+} ComposeButtonType;
+
+typedef enum
+{
+ LEARN_SPAM,
+ LEARN_HAM
+} LearnButtonType;
+
+struct _Toolbar {
+ GtkWidget *toolbar;
+
+ GtkWidget *folders_btn;
+ GtkWidget *get_btn;
+ GtkWidget *getall_btn;
+ GtkWidget *send_btn;
-GSList *toolbar_list;
+ GtkWidget *compose_mail_btn;
+ GtkWidget *compose_mail_icon;
+ GtkWidget *compose_news_icon;
-#define TOOLBAR_DESTROY_ITEMS(t_item_list) \
+ GtkWidget *reply_btn;
+ GtkWidget *replysender_btn;
+ GtkWidget *replyall_btn;
+ GtkWidget *replylist_btn;
+
+ GtkWidget *fwd_btn;
+
+ GtkWidget *trash_btn;
+ GtkWidget *delete_btn;
+ GtkWidget *delete_dup_btn;
+ GtkWidget *prev_btn;
+ GtkWidget *next_btn;
+ GtkWidget *exec_btn;
+
+ GtkWidget *separator;
+ GtkWidget *learn_spam_btn;
+ GtkWidget *learn_spam_icon;
+ GtkWidget *learn_ham_icon;
+
+ GtkWidget *cancel_inc_btn;
+ GtkWidget *cancel_send_btn;
+ GtkWidget *cancel_all_btn;
+
+ ComposeButtonType compose_btn_type;
+ LearnButtonType learn_btn_type;
+
+ /* compose buttons */
+ GtkWidget *sendl_btn;
+ GtkWidget *draft_btn;
+ GtkWidget *insert_btn;
+ GtkWidget *attach_btn;
+ GtkWidget *sig_btn;
+ GtkWidget *repsig_btn;
+ GtkWidget *exteditor_btn;
+ GtkWidget *linewrap_current_btn;
+ GtkWidget *linewrap_all_btn;
+ GtkWidget *addrbook_btn;
+
+ GtkWidget *open_mail_btn;
+ GtkWidget *close_window_btn;
+
+ GtkWidget *preferences_btn;
+
+ GSList *action_list;
+ GSList *item_list;
+
+#ifdef USE_ENCHANT
+ GtkWidget *spellcheck_btn;
+#endif
+
+ GtkWidget *privacy_sign_btn;
+ GtkWidget *privacy_encrypt_btn;
+};
+
+struct _ToolbarItem {
+ gint index;
+ gchar *file;
+ gchar *text;
+ ToolbarType type;
+ gpointer parent;
+};
+
+#define TOOLBAR_DESTROY_ITEMS(item_list) \
{ \
- ToolbarItem *t_item; \
- while (t_item_list != NULL) { \
- t_item = (ToolbarItem*)t_item_list->data; \
- t_item_list = g_slist_remove(t_item_list, t_item); \
- if (t_item->file) \
- g_free(t_item->file); \
- if (t_item->text) \
- g_free(t_item->text);\
- g_free(t_item);\
+ ToolbarItem *item; \
+ while (item_list != NULL) { \
+ item = (ToolbarItem*)item_list->data; \
+ item_list = g_slist_remove(item_list, item); \
+ if (item->file) \
+ g_free(item->file); \
+ if (item->text) \
+ g_free(item->text); \
+ g_free(item);\
}\
- g_slist_free(t_item_list);\
+ g_slist_free(item_list);\
}
-#define TOOLBAR_DESTROY_ACTIONS(t_action_list) \
+#define TOOLBAR_DESTROY_ACTIONS(action_list) \
{ \
- ToolbarSylpheedActions *t_action; \
- while (t_action_list != NULL) { \
- t_action = (ToolbarSylpheedActions*)t_action_list->data;\
- t_action_list = \
- g_slist_remove(t_action_list, t_action);\
- if (t_action->name) \
- g_free(t_action->name); \
- g_free(t_action); \
+ ToolbarClawsActions *action; \
+ while (action_list != NULL) { \
+ action = (ToolbarClawsActions*)action_list->data;\
+ action_list = \
+ g_slist_remove(action_list, action);\
+ if (action->name) \
+ g_free(action->name); \
+ g_free(action); \
} \
- g_slist_free(t_action_list); \
+ g_slist_free(action_list); \
}
-typedef struct _ToolbarConfig ToolbarConfig;
-struct _ToolbarConfig {
- const gchar *conf_file;
- GSList *item_list;
-};
-/* enum holds available actions for both
- Compose Toolbar and Main Toolbar
+
+/* enum holds available actions for both
+ Compose Toolbar and Main Toolbar
*/
enum {
/* main toolbar */
A_REPLY_SENDER,
A_REPLY_ALL,
A_REPLY_ML,
+ A_OPEN_MAIL,
A_FORWARD,
- A_DELETE,
+ A_TRASH,
+ A_DELETE_REAL,
+ A_DELETE_DUP,
A_EXECUTE,
+ A_GOTO_PREV,
A_GOTO_NEXT,
+ A_IGNORE_THREAD,
+ A_WATCH_THREAD,
+ A_MARK,
+ A_UNMARK,
+ A_LOCK,
+ A_UNLOCK,
+ A_ALL_READ,
+ A_ALL_UNREAD,
+ A_READ,
+ A_UNREAD,
+
+ A_PRINT,
+ A_LEARN_SPAM,
+ A_GO_FOLDERS,
+ A_PREFERENCES,
+
/* compose toolbar */
A_SEND,
- A_SENDL,
+ A_SEND_LATER,
A_DRAFT,
A_INSERT,
A_ATTACH,
A_SIG,
+ A_REP_SIG,
A_EXTEDITOR,
- A_LINEWRAP,
+ A_LINEWRAP_CURRENT,
+ A_LINEWRAP_ALL,
A_ADDRBOOK,
+#ifdef USE_ENCHANT
+ A_CHECK_SPELLING,
+#endif
+ A_PRIVACY_SIGN,
+ A_PRIVACY_ENCRYPT,
/* common items */
- A_SYL_ACTIONS,
- A_SEPARATOR,
+ A_CLAWS_ACTIONS,
+ A_CANCEL_INC,
+ A_CANCEL_SEND,
+ A_CANCEL_ALL,
+ A_CLOSE,
- N_ACTION_VAL
-};
+ A_SEPARATOR,
-typedef struct _ToolbarText ToolbarText;
-struct _ToolbarText
-{
- gchar *index_str;
- gchar *descr;
-};
+ A_CLAWS_PLUGINS,
-typedef struct _ToolbarItem ToolbarItem;
-struct _ToolbarItem
-{
- gint index;
- gchar *file;
- gchar *text;
- gpointer parent;
+ N_ACTION_VAL
};
-typedef struct _ToolbarSylpheedActions ToolbarSylpheedActions;
-struct _ToolbarSylpheedActions
-{
+struct _ToolbarClawsActions {
GtkWidget *widget;
gchar *name;
};
-void toolbar_action_execute (GtkWidget *widget,
- GSList *action_list,
- gpointer data,
- gint source);
+GList *toolbar_get_action_items (ToolbarType source);
+
+void toolbar_save_config_file (ToolbarType source);
+void toolbar_read_config_file (ToolbarType source);
-GList *toolbar_get_action_items (Toolbar source);
+void toolbar_set_default (ToolbarType source);
+void toolbar_clear_list (ToolbarType source);
-void toolbar_save_config_file (Toolbar source);
-void toolbar_read_config_file (Toolbar source);
+GSList *toolbar_get_list (ToolbarType source);
+void toolbar_set_list_item (ToolbarItem *t_item,
+ ToolbarType source);
-void toolbar_set_default (Toolbar source);
-void toolbar_clear_list (Toolbar source);
+gint toolbar_ret_val_from_descr (const gchar *descr);
+gchar *toolbar_ret_descr_from_val (gint val);
-GSList *toolbar_get_list (Toolbar source);
-void toolbar_set_list_item (ToolbarItem *t_item,
- Toolbar source);
+void toolbar_main_set_sensitive (gpointer data);
+void toolbar_comp_set_sensitive (gpointer data,
+ gboolean sensitive);
-gint toolbar_ret_val_from_descr (const gchar *descr);
-gchar *toolbar_ret_descr_from_val (gint val);
+/* invoked by mainwindow entries and toolbar actions */
+void delete_msgview_cb (gpointer data,
+ guint action,
+ GtkWidget *widget);
+void inc_mail_cb (gpointer data,
+ guint action,
+ GtkWidget *widget);
+void inc_all_account_mail_cb (gpointer data,
+ guint action,
+ GtkWidget *widget);
+void send_queue_cb (gpointer data,
+ guint action,
+ GtkWidget *widget);
+void compose_mail_cb (gpointer data,
+ guint action,
+ GtkWidget *widget);
+void compose_news_cb (gpointer data,
+ guint action,
+ GtkWidget *widget);
+/* END */
-void toolbar_destroy_items (GSList *t_item_list);
+void toolbar_toggle (guint action,
+ gpointer data);
+void toolbar_update (ToolbarType type,
+ gpointer data);
+Toolbar *toolbar_create (ToolbarType type,
+ GtkWidget *container,
+ gpointer data);
+void toolbar_set_style (GtkWidget *toolbar_wid,
+ GtkWidget *handlebox_wid,
+ guint action);
+void toolbar_destroy (Toolbar *toolbar);
+void toolbar_set_learn_button (Toolbar *toolbar,
+ LearnButtonType learn_btn_type);
+const gchar *toolbar_get_short_text (int action);
+int toolbar_get_icon (int action);
+gboolean toolbar_check_action_btns (ToolbarType type);
#endif /* __CUSTOM_TOOLBAR_H__ */