initial message templates support
[claws.git] / src / compose.h
blob6418862b8900c409087279a41577892732780fb9
1 /*
2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2001 Hiroyuki Yamamoto
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #ifndef __COMPOSE_H__
21 #define __COMPOSE_H__
23 #include <glib.h>
24 #include <gtk/gtkwidget.h>
25 #include <gtk/gtkitemfactory.h>
27 typedef struct _Compose Compose;
28 typedef struct _AttachInfo AttachInfo;
30 #include "procmsg.h"
31 #include "procmime.h"
32 #include "addressbook.h"
33 #include "prefs_account.h"
35 typedef enum
37 COMPOSE_MAIL,
38 COMPOSE_NEWS
39 } ComposeMode;
41 typedef enum
43 COMPOSE_TO,
44 COMPOSE_CC,
45 COMPOSE_BCC,
46 COMPOSE_NEWSGROUPS
47 } ComposeEntryType;
49 typedef enum
51 COMPOSE_REPLY,
52 COMPOSE_REPLY_WITH_QUOTE,
53 COMPOSE_REPLY_WITHOUT_QUOTE,
54 COMPOSE_REPLY_TO_SENDER,
55 COMPOSE_FOLLOWUP_AND_REPLY_TO,
56 COMPOSE_REPLY_TO_SENDER_WITH_QUOTE,
57 COMPOSE_REPLY_TO_SENDER_WITHOUT_QUOTE,
58 COMPOSE_REPLY_TO_ALL,
59 COMPOSE_REPLY_TO_ALL_WITH_QUOTE,
60 COMPOSE_REPLY_TO_ALL_WITHOUT_QUOTE,
61 COMPOSE_FORWARD,
62 COMPOSE_FORWARD_AS_ATTACH,
63 COMPOSE_NEW,
64 COMPOSE_REEDIT_DRAFT
65 } ComposeReplyMode;
67 struct _Compose
69 GtkWidget *window;
70 GtkWidget *vbox;
71 GtkWidget *menubar;
73 GtkWidget *handlebox;
74 GtkWidget *toolbar;
75 GtkWidget *send_btn;
76 GtkWidget *sendl_btn;
77 GtkWidget *draft_btn;
78 GtkWidget *insert_btn;
79 GtkWidget *attach_btn;
80 GtkWidget *sig_btn;
81 GtkWidget *exteditor_btn;
82 GtkWidget *linewrap_btn;
83 GtkWidget *addrbook_btn;
85 GtkWidget *vbox2;
87 GtkWidget *table_vbox;
88 GtkWidget *table;
89 GtkWidget *to_hbox;
90 GtkWidget *to_entry;
91 GtkWidget *newsgroups_hbox;
92 GtkWidget *newsgroups_entry;
93 GtkWidget *subject_entry;
94 GtkWidget *cc_hbox;
95 GtkWidget *cc_entry;
96 GtkWidget *bcc_hbox;
97 GtkWidget *bcc_entry;
98 GtkWidget *reply_hbox;
99 GtkWidget *reply_entry;
100 GtkWidget *followup_hbox;
101 GtkWidget *followup_entry;
103 GtkWidget *paned;
105 GtkWidget *attach_scrwin;
106 GtkWidget *attach_clist;
108 GtkWidget *edit_vbox;
109 GtkWidget *ruler_hbox;
110 GtkWidget *ruler;
111 GtkWidget *scrolledwin;
112 GtkWidget *text;
114 GtkWidget *focused_editable;
116 GtkWidget *popupmenu;
118 GtkItemFactory *popupfactory;
120 ComposeReplyMode mode;
122 MsgInfo *targetinfo;
123 MsgInfo *replyinfo;
125 gchar *replyto;
126 gchar *cc;
127 gchar *bcc;
128 gchar *newsgroups;
129 gchar *followup_to;
131 gchar *inreplyto;
132 gchar *references;
133 gchar *msgid;
134 gchar *boundary;
136 gboolean use_to;
137 gboolean use_cc;
138 gboolean use_bcc;
139 gboolean use_replyto;
140 gboolean use_followupto;
141 gboolean use_attach;
143 /* privacy settings */
144 gboolean use_signing;
145 gboolean use_encryption;
147 gboolean modified;
149 gboolean return_receipt;
151 GSList *to_list;
152 GSList *newsgroup_list;
154 PrefsAccount *account;
155 PrefsAccount *orig_account;
157 /* external editor */
158 gchar *exteditor_file;
159 pid_t exteditor_pid;
160 gint exteditor_readdes;
161 gint exteditor_tag;
164 struct _AttachInfo
166 gchar *file;
167 gchar *content_type;
168 EncodingType encoding;
169 gchar *name;
170 off_t size;
173 Compose * compose_new (PrefsAccount *account);
175 Compose * compose_new_with_recipient (PrefsAccount *account,
176 const gchar *to);
178 Compose * compose_new_with_folderitem (PrefsAccount *account,
179 FolderItem *item);
181 void compose_followup_and_reply_to (MsgInfo *msginfo,
182 gboolean quote,
183 gboolean to_all,
184 gboolean ignore_replyto);
185 void compose_reply (MsgInfo *msginfo,
186 gboolean quote,
187 gboolean to_all,
188 gboolean ignore_replyto);
189 Compose * compose_forward (PrefsAccount *account,
190 MsgInfo *msginfo,
191 gboolean as_attach);
192 Compose * compose_forward_multiple(PrefsAccount * account,
193 GSList *msginfo_list);
195 void compose_reedit (MsgInfo *msginfo);
197 GList *compose_get_compose_list (void);
199 void compose_entry_append (Compose *compose,
200 const gchar *address,
201 ComposeEntryType type);
202 gint compose_send(Compose *compose);
204 #endif /* __COMPOSE_H__ */