diff options
Diffstat (limited to 'src/compose.h')
-rw-r--r-- | src/compose.h | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/src/compose.h b/src/compose.h new file mode 100644 index 00000000..7fe7a294 --- /dev/null +++ b/src/compose.h @@ -0,0 +1,214 @@ +/* + * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client + * Copyright (C) 1999-2004 Hiroyuki Yamamoto + * + * 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 + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * 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. + */ + +#ifndef __COMPOSE_H__ +#define __COMPOSE_H__ + +#include <glib.h> +#include <gtk/gtkwidget.h> +#include <gtk/gtkitemfactory.h> + +typedef struct _Compose Compose; +typedef struct _AttachInfo AttachInfo; + +#include "procmsg.h" +#include "procmime.h" +#include "folder.h" +#include "addressbook.h" +#include "prefs_account.h" +#include "undo.h" + +typedef enum +{ + COMPOSE_ENTRY_TO, + COMPOSE_ENTRY_CC, + COMPOSE_ENTRY_BCC, + COMPOSE_ENTRY_REPLY_TO, + COMPOSE_ENTRY_SUBJECT, + COMPOSE_ENTRY_NEWSGROUPS, + COMPOSE_ENTRY_FOLLOWUP_TO +} ComposeEntryType; + +typedef enum +{ + COMPOSE_REPLY = 1, + COMPOSE_REPLY_TO_SENDER = 2, + COMPOSE_REPLY_TO_ALL = 3, + COMPOSE_REPLY_TO_LIST = 4, + COMPOSE_FORWARD = 5, + COMPOSE_FORWARD_AS_ATTACH = 6, + COMPOSE_NEW = 7, + COMPOSE_REDIRECT = 8, + COMPOSE_REEDIT = 9, + + COMPOSE_WITH_QUOTE = 1 << 16, + COMPOSE_WITHOUT_QUOTE = 2 << 16, + + COMPOSE_MODE_MASK = 0xffff, + COMPOSE_QUOTE_MODE_MASK = 0x30000 +} ComposeMode; + +#define COMPOSE_MODE(mode) ((mode) & COMPOSE_MODE_MASK) +#define COMPOSE_QUOTE_MODE(mode) ((mode) & COMPOSE_QUOTE_MODE_MASK) + +struct _Compose +{ + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *menubar; + + GtkWidget *handlebox; + GtkWidget *toolbar; + GtkWidget *send_btn; + GtkWidget *sendl_btn; + GtkWidget *draft_btn; + GtkWidget *insert_btn; + GtkWidget *attach_btn; + GtkWidget *sig_btn; + GtkWidget *exteditor_btn; + GtkWidget *linewrap_btn; + GtkWidget *addrbook_btn; + + GtkWidget *vbox2; + + GtkWidget *table_vbox; + GtkWidget *table; + GtkWidget *to_hbox; + GtkWidget *to_entry; + GtkWidget *newsgroups_hbox; + GtkWidget *newsgroups_entry; + GtkWidget *subject_entry; + GtkWidget *cc_hbox; + GtkWidget *cc_entry; + GtkWidget *bcc_hbox; + GtkWidget *bcc_entry; + GtkWidget *reply_hbox; + GtkWidget *reply_entry; + GtkWidget *followup_hbox; + GtkWidget *followup_entry; + + GtkWidget *paned; + + GtkWidget *attach_scrwin; + GtkWidget *attach_clist; + + GtkWidget *edit_vbox; + GtkWidget *ruler_hbox; + GtkWidget *ruler; + GtkWidget *scrolledwin; + GtkWidget *text; + + GtkWidget *focused_editable; + + GtkWidget *popupmenu; + + GtkItemFactory *popupfactory; + + GtkWidget *tmpl_menu; + + ComposeMode mode; + + MsgInfo *targetinfo; + MsgInfo *replyinfo; + + gchar *replyto; + gchar *cc; + gchar *bcc; + gchar *newsgroups; + gchar *followup_to; + + gchar *ml_post; + + gchar *inreplyto; + gchar *references; + gchar *msgid; + gchar *boundary; + + gboolean autowrap; + + gboolean use_to; + gboolean use_cc; + gboolean use_bcc; + gboolean use_replyto; + gboolean use_newsgroups; + gboolean use_followupto; + gboolean use_attach; + + /* privacy settings */ + gboolean use_signing; + gboolean use_encryption; + + gboolean modified; + + gboolean paste_as_quotation; + + GSList *to_list; + GSList *newsgroup_list; + + PrefsAccount *account; + + UndoMain *undostruct; + + gchar *sig_str; + + /* external editor */ + gchar *exteditor_file; + pid_t exteditor_pid; + gint exteditor_readdes; + gint exteditor_tag; +}; + +struct _AttachInfo +{ + gchar *file; + gchar *content_type; + EncodingType encoding; + gchar *name; + off_t size; +}; + +void compose_new (PrefsAccount *account, + FolderItem *item, + const gchar *mailto, + GPtrArray *attach_files); + +void compose_reply (MsgInfo *msginfo, + FolderItem *item, + ComposeMode mode, + const gchar *body); +void compose_forward (GSList *mlist, + FolderItem *item, + gboolean as_attach, + const gchar *body); +void compose_redirect (MsgInfo *msginfo, + FolderItem *item); +void compose_reedit (MsgInfo *msginfo); + +GList *compose_get_compose_list (void); + +void compose_entry_set (Compose *compose, + const gchar *text, + ComposeEntryType type); +void compose_entry_append (Compose *compose, + const gchar *text, + ComposeEntryType type); + +void compose_reflect_prefs_all (void); + +#endif /* __COMPOSE_H__ */ |