commit - 0a3e9d6735c8a3f3093dac89e2689f5971482f8c
commit + 796e6d93de00cbe420af4ece0a56a2003e8f6704
blob - 0566ba4f03845b9dbd3158f35b71df7126ca2fec
blob + 3b7adf31cb214e02482597e04d5ef23df757b77c
--- src/account.c
+++ src/account.c
#include <stdio.h>
#include <errno.h>
-#include "main.h"
#include "mainwindow.h"
#include "folderview.h"
#include "folder.h"
#include "prefs_actions.h"
#include "hooks.h"
#include "passwordstore.h"
-#include "file-utils.h"
-#include "oauth2.h"
enum {
ACCOUNT_IS_DEFAULT,
account_edit_prefs(NULL, NULL);
}
-gchar *account_get_signature_str(PrefsAccount *account)
-{
- gchar *sig_body = NULL;
- gchar *sig_str = NULL;
- gchar *utf8_sig_str = NULL;
-
- cm_return_val_if_fail(account != NULL, NULL);
-
- if (!account->sig_path)
- return NULL;
-
- if (account->sig_type == SIG_FILE) {
- gchar *sig_full_path;
- if (!g_path_is_absolute(account->sig_path)) {
- sig_full_path = g_build_filename(get_home_dir(), account->sig_path, NULL);
- } else {
- sig_full_path = g_strdup(account->sig_path);
- }
-
- if (!is_file_or_fifo_exist(sig_full_path)) {
- g_warning("can't open signature file: '%s'", sig_full_path);
- g_free(sig_full_path);
- return NULL;
- }
-
- debug_print("Reading signature from file '%s'\n", sig_full_path);
- gchar *tmp = file_read_to_str(sig_full_path);
- g_free(sig_full_path);
-
- if (!tmp)
- return NULL;
-
- sig_body = normalize_newlines(tmp);
- g_free(tmp);
- } else {
- sig_body = get_command_output(account->sig_path);
- }
-
- if (account->sig_sep) {
- sig_str = g_strconcat("\n", account->sig_sep, "\n", sig_body,
- NULL);
- g_free(sig_body);
- } else
- sig_str = g_strconcat("\n", sig_body, NULL);
-
- if (sig_str) {
- if (g_utf8_validate(sig_str, -1, NULL) == TRUE)
- utf8_sig_str = sig_str;
- else {
- utf8_sig_str = conv_codeset_strdup
- (sig_str, conv_get_locale_charset_str_no_utf8(),
- CS_INTERNAL);
- g_free(sig_str);
- }
- }
-
- return utf8_sig_str;
-}
-
PrefsAccount *account_get_cur_account (void)
{
return cur_account;
return FALSE;
}
-static GSList *account_sigsep_list = NULL;
-
-/* create a list of unique signatures from accounts list */
-void account_sigsep_matchlist_create(void)
-{
- GList *cur_ac = NULL;
- PrefsAccount *ac_prefs = NULL;
-
- if (account_sigsep_list)
- return;
-
- account_sigsep_list = g_slist_prepend(account_sigsep_list, g_strdup("-- "));
- for (cur_ac = account_get_list();
- cur_ac != NULL;
- cur_ac = g_list_next(cur_ac)) {
- ac_prefs = (PrefsAccount *)cur_ac->data;
-
- if (ac_prefs->sig_sep && *ac_prefs->sig_sep != '\0') {
- if (!g_slist_find_custom(account_sigsep_list, ac_prefs->sig_sep,
- (GCompareFunc)g_strcmp0)) {
- account_sigsep_list = g_slist_prepend(account_sigsep_list,
- g_strdup(ac_prefs->sig_sep));
- }
- }
- }
-}
-
-/* delete the list of signatures created by account_sigsep_matchlist_create() */
-void account_sigsep_matchlist_delete(void)
-{
- if (account_sigsep_list) {
- slist_free_strings_full(account_sigsep_list);
- account_sigsep_list = NULL;
- }
-}
-
-/* match a string against all signatures in list, using the specified format */
-gboolean account_sigsep_matchlist_str_found(const gchar *str, const gchar *format)
-{
- gchar *tmp = NULL;
- gboolean found = FALSE;
- GSList *item;
-
- for (item = account_sigsep_list;
- item != NULL && !found;
- item = g_slist_next(item)) {
- tmp = g_strdup_printf(format, (gchar *)item->data);
- if (tmp) {
- found = (strcmp(tmp, str) == 0);
- g_free(tmp);
- } else {
- g_warning("account_sigsep_matchlist_str_found: g_strdup_printf failed, check format '%s'",
- format);
- return FALSE;
- }
- }
- return found;
-}
-
-/* match M first char of a string against all signatures in list, using the specified format */
-gboolean account_sigsep_matchlist_nchar_found(const gchar *str, const gchar *format)
-{
- gchar *tmp = NULL;
- gboolean found = FALSE;
- GSList *item;
- gint len;
-
- for (item = account_sigsep_list;
- item != NULL && !found;
- item = g_slist_next(item)) {
- tmp = g_strdup_printf(format, (gchar *)item->data);
- if (tmp) {
- len = strlen(tmp);
- found = (strncmp(tmp, str, len) == 0);
- g_free(tmp);
- } else {
- g_warning("account_sigsep_matchlist_nchar_found: g_strdup_printf failed, check format '%s'",
- format);
- return FALSE;
- }
- }
- return found;
-}
blob - 77a1295c2f5e38291070c49fa9e9174a9f493dd3
blob + 6dc10d75105370913f8e5a641993ef42ca6196ea
--- src/account.h
+++ src/account.h
gboolean reply_autosel);
void account_rename_path (const gchar *old_id,
const gchar *new_id);
-gchar *account_get_signature_str(PrefsAccount *account);
gboolean password_get(const gchar *user,
const gchar *server,
guint16 port,
gchar **password);
-void account_sigsep_matchlist_create (void);
-void account_sigsep_matchlist_delete (void);
-gboolean account_sigsep_matchlist_str_found (const gchar *str, const gchar *format);
-gboolean account_sigsep_matchlist_nchar_found (const gchar *str, const gchar *format);
-
#endif /* __ACCOUNT_H__ */
blob - 8bd128a689ce71dce982a2650be135a81c8f6bda
blob + 83aea785c9ef73d75aee06e47aef722ab135b93a
--- src/compose.c
+++ src/compose.c
static void compose_reedit_set_entry (Compose *compose,
MsgInfo *msginfo);
-static void compose_insert_sig (Compose *compose,
- gboolean replace);
static ComposeInsertResult compose_insert_file (Compose *compose,
const gchar *file);
gpointer data);
static void compose_insert_file_cb (GtkAction *action,
gpointer data);
-static void compose_insert_sig_cb (GtkAction *action,
- gpointer data);
-static void compose_replace_sig_cb (GtkAction *action,
- gpointer data);
static void compose_close_cb (GtkAction *action,
gpointer data);
{"Message/AttachFile", NULL, N_("_Attach file"), "<control>M", NULL, G_CALLBACK(compose_attach_cb) },
{"Message/InsertFile", NULL, N_("_Insert file"), "<control>I", NULL, G_CALLBACK(compose_insert_file_cb) },
- {"Message/InsertSig", NULL, N_("Insert si_gnature"), "<control>G", NULL, G_CALLBACK(compose_insert_sig_cb) },
- {"Message/ReplaceSig", NULL, N_("_Replace signature"), NULL, NULL, G_CALLBACK(compose_replace_sig_cb) },
/* {"Message/---", NULL, "---", NULL, NULL, NULL }, */
{"Message/Save", NULL, N_("_Save"), "<control>S", NULL, G_CALLBACK(compose_save_cb) }, /*COMPOSE_KEEP_EDITING*/
/* {"Message/---", NULL, "---", NULL, NULL, NULL }, */
gchar *mailto_from = NULL;
PrefsAccount *mailto_account = NULL;
MsgInfo* dummyinfo = NULL;
- gint cursor_pos = -1;
MailField mfield = NO_FIELD_PRESENT;
gchar* buf;
GtkTextMark *mark;
undo_block(compose->undostruct);
- if (account->auto_sig)
- compose_insert_sig(compose, FALSE);
gtk_text_buffer_get_start_iter(textbuf, &iter);
gtk_text_buffer_place_cursor(textbuf, &iter);
PrefsAccount *account = NULL;
GtkTextView *textview;
GtkTextBuffer *textbuf;
- gboolean quote = FALSE;
- const gchar *body_fmt = NULL;
gchar *s_system = NULL;
cm_return_val_if_fail(msginfo != NULL, NULL);
cm_return_val_if_fail(msginfo->folder != NULL, NULL);
COMPOSE_PRIVACY_WARNING();
SIGNAL_BLOCK(textbuf);
-
- if (account->auto_sig)
- compose_insert_sig(compose, FALSE);
-
compose_wrap_all(compose);
-
SIGNAL_UNBLOCK(textbuf);
gtk_widget_grab_focus(compose->text);
Compose *compose;
GtkTextView *textview;
GtkTextBuffer *textbuf;
- gint cursor_pos = -1;
ComposeMode mode;
cm_return_val_if_fail(msginfo != NULL, NULL);
}
SIGNAL_BLOCK(textbuf);
-
- if (account->auto_sig)
- compose_insert_sig(compose, FALSE);
-
compose_wrap_all(compose);
-
SIGNAL_UNBLOCK(textbuf);
if (privacy_system_can_sign(compose->privacy_system) == FALSE &&
}
SIGNAL_BLOCK(textbuf);
-
- if (account->auto_sig)
- compose_insert_sig(compose, FALSE);
-
compose_wrap_all(compose);
-
SIGNAL_UNBLOCK(textbuf);
gtk_text_buffer_get_start_iter(textbuf, &iter);
return compose;
}
-static gboolean compose_is_sig_separator(Compose *compose, GtkTextBuffer *textbuf, GtkTextIter *iter)
-{
- GtkTextIter start = *iter;
- GtkTextIter end_iter;
- int start_pos = gtk_text_iter_get_offset(&start);
- gchar *str = NULL;
- if (!compose->account->sig_sep)
- return FALSE;
-
- gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
- start_pos+strlen(compose->account->sig_sep));
-
- /* check sig separator */
- str = gtk_text_iter_get_text(&start, &end_iter);
- if (!strcmp(str, compose->account->sig_sep)) {
- gchar *tmp = NULL;
- /* check end of line (\n) */
- gtk_text_buffer_get_iter_at_offset(textbuf, &start,
- start_pos+strlen(compose->account->sig_sep));
- gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
- start_pos+strlen(compose->account->sig_sep)+1);
- tmp = gtk_text_iter_get_text(&start, &end_iter);
- if (!strcmp(tmp,"\n")) {
- g_free(str);
- g_free(tmp);
- return TRUE;
- }
- g_free(tmp);
- }
- g_free(str);
-
- return FALSE;
-}
-
static gboolean compose_update_folder_hook(gpointer source, gpointer data)
{
FolderUpdateData *hookdata = (FolderUpdateData *)source;
return FALSE;
}
-static void compose_colorize_signature(Compose *compose)
-{
- GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(compose->text));
- GtkTextIter iter;
- GtkTextIter end_iter;
- gtk_text_buffer_get_start_iter(buffer, &iter);
- while (gtk_text_iter_forward_line(&iter))
- if (compose_is_sig_separator(compose, buffer, &iter)) {
- gtk_text_buffer_get_end_iter(buffer, &end_iter);
- gtk_text_buffer_apply_tag_by_name(buffer,"signature",&iter, &end_iter);
- }
-}
-
#define BLOCK_WRAP() { \
prev_autowrap = compose->autowrap; \
buffer = gtk_text_view_get_buffer( \
compose_attach_parts(compose, msginfo);
- compose_colorize_signature(compose);
-
g_signal_handlers_unblock_by_func(G_OBJECT(textbuf),
G_CALLBACK(compose_changed_cb),
compose);
return NULL;
}
- compose->sig_str = account_get_signature_str(compose->account);
-
hooks_invoke(COMPOSE_CREATED_HOOKLIST, compose);
return compose;
gtk_text_view_set_editable(GTK_TEXT_VIEW(compose->text), FALSE);
- compose_colorize_signature(compose);
-
cm_menu_set_sensitive_full(compose->ui_manager, "Popup/Compose/Add", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Popup/Compose/Remove", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Popup/Compose/Properties", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Message/Save", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Message/InsertFile", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Message/AttachFile", FALSE);
- cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Message/InsertSig", FALSE);
- cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Message/ReplaceSig", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Edit", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Options", FALSE);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Tools/Actions", FALSE);
case A_ATTACH:
compose_attach_cb(NULL, compose);
break;
- case A_SIG:
- compose_insert_sig(compose, FALSE);
- break;
- case A_REP_SIG:
- compose_insert_sig(compose, TRUE);
- break;
case A_EXTEDITOR:
compose_ext_editor_cb(NULL, compose);
break;
#undef SET_ENTRY
#undef SET_ADDRESS
-static void compose_insert_sig(Compose *compose, gboolean replace)
-{
- GtkTextView *text = GTK_TEXT_VIEW(compose->text);
- GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
- GtkTextMark *mark;
- GtkTextIter iter, iter_end;
- gint cur_pos, ins_pos;
- gboolean prev_autowrap;
- gboolean found = FALSE;
- gboolean exists = FALSE;
-
- cm_return_if_fail(compose->account != NULL);
-
- BLOCK_WRAP();
-
- g_signal_handlers_block_by_func(G_OBJECT(buffer),
- G_CALLBACK(compose_changed_cb),
- compose);
-
- mark = gtk_text_buffer_get_insert(buffer);
- gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
- cur_pos = gtk_text_iter_get_offset (&iter);
- ins_pos = cur_pos;
-
- gtk_text_buffer_get_end_iter(buffer, &iter);
-
- exists = (compose->sig_str != NULL);
-
- if (replace) {
- GtkTextIter first_iter, start_iter, end_iter;
-
- gtk_text_buffer_get_start_iter(buffer, &first_iter);
-
- if (!exists || compose->sig_str[0] == '\0')
- found = FALSE;
- else
- found = gtk_text_iter_forward_to_tag_toggle(&first_iter,
- compose->signature_tag);
-
- if (found) {
- /* include previous \n\n */
- gtk_text_iter_backward_chars(&first_iter, 1);
- start_iter = first_iter;
- end_iter = first_iter;
- /* skip re-start */
- found = gtk_text_iter_forward_to_tag_toggle(&end_iter,
- compose->signature_tag);
- found &= gtk_text_iter_forward_to_tag_toggle(&end_iter,
- compose->signature_tag);
- if (found) {
- gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
- iter = start_iter;
- }
- }
- }
-
- g_free(compose->sig_str);
- compose->sig_str = account_get_signature_str(compose->account);
-
- cur_pos = gtk_text_iter_get_offset(&iter);
-
- if (!compose->sig_str || (replace && !compose->account->auto_sig)) {
- g_free(compose->sig_str);
- compose->sig_str = NULL;
- } else {
- if (compose->sig_inserted == FALSE)
- gtk_text_buffer_insert(buffer, &iter, "\n", -1);
- compose->sig_inserted = TRUE;
-
- cur_pos = gtk_text_iter_get_offset(&iter);
- gtk_text_buffer_insert(buffer, &iter, compose->sig_str, -1);
- /* remove \n\n */
- gtk_text_buffer_get_iter_at_offset(buffer, &iter, cur_pos);
- gtk_text_iter_forward_chars(&iter, 1);
- gtk_text_buffer_get_end_iter(buffer, &iter_end);
- gtk_text_buffer_apply_tag_by_name(buffer,"signature",&iter, &iter_end);
-
- if (cur_pos > gtk_text_buffer_get_char_count (buffer))
- cur_pos = gtk_text_buffer_get_char_count (buffer);
- }
-
- /* put the cursor where it should be
- * either where the quote_fmt says, either where it was */
- if (compose->set_cursor_pos < 0)
- gtk_text_buffer_get_iter_at_offset(buffer, &iter, ins_pos);
- else
- gtk_text_buffer_get_iter_at_offset(buffer, &iter,
- compose->set_cursor_pos);
-
- compose->set_cursor_pos = -1;
- gtk_text_buffer_place_cursor(buffer, &iter);
- g_signal_handlers_unblock_by_func(G_OBJECT(buffer),
- G_CALLBACK(compose_changed_cb),
- compose);
-
- UNBLOCK_WRAP();
-}
-
static ComposeInsertResult compose_insert_file(Compose *compose, const gchar *file)
{
GtkTextView *text;
return FALSE;
}
- /* don't join signature separator */
- if (compose_is_sig_separator(compose, buffer, &iter_)) {
- return FALSE;
- }
/* delete quote str */
if (quote_len > 0)
gtk_text_buffer_delete(buffer, &iter_, &end);
if (!init && compose->mode != COMPOSE_REDIRECT) {
undo_block(compose->undostruct);
- compose_insert_sig(compose, TRUE);
undo_unblock(compose->undostruct);
}
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "Separator1", "Message/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "AttachFile", "Message/AttachFile", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "InsertFile", "Message/InsertFile", GTK_UI_MANAGER_MENUITEM)
- MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "InsertSig", "Message/InsertSig", GTK_UI_MANAGER_MENUITEM)
- MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "ReplaceSig", "Message/ReplaceSig", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "Separator2", "Message/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "Save", "Message/Save", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Message", "Separator3", "Message/---", GTK_UI_MANAGER_SEPARATOR)
"Menu/Message/Send",
"Menu/Message/SendLater",
"Menu/Message/InsertFile",
- "Menu/Message/InsertSig",
- "Menu/Message/ReplaceSig",
"Menu/Message/Save",
"Menu/Edit",
"Menu/Tools/Actions",
}
}
-static void compose_insert_sig_cb(GtkAction *action, gpointer data)
-{
- Compose *compose = (Compose *)data;
-
- compose_insert_sig(compose, FALSE);
-}
-
-static void compose_replace_sig_cb(GtkAction *action, gpointer data)
-{
- Compose *compose = (Compose *)data;
-
- compose_insert_sig(compose, TRUE);
-}
-
static gint compose_delete_cb(GtkWidget *widget, GdkEventAny *event,
gpointer data)
{
blob - 8519f95a2185b02fb836e75a8abd41d1ceb4f666
blob + df67a3fb609f90a5b65d53bfb334750b0ebc00f1
--- src/prefs_account.c
+++ src/prefs_account.c
typedef struct ComposePage
{
- PrefsPage page;
+ PrefsPage page;
- GtkWidget *vbox;
+ GtkWidget *vbox;
- GtkWidget *sigfile_radiobtn;
- GtkWidget *entry_sigpath;
- GtkWidget *checkbtn_autosig;
- GtkWidget *entry_sigsep;
GtkWidget *autocc_checkbtn;
GtkWidget *autocc_entry;
GtkWidget *autobcc_checkbtn;
};
static PrefParam compose_param[] = {
- {"signature_type", "0", &tmp_ac_prefs.sig_type, P_ENUM,
- &compose_page.sigfile_radiobtn,
- prefs_account_enum_set_data_from_radiobtn,
- prefs_account_enum_set_radiobtn},
- {"signature_path", "~/.signature",
- &tmp_ac_prefs.sig_path, P_STRING, &compose_page.entry_sigpath,
- prefs_set_data_from_entry, prefs_set_entry},
-
- {"auto_signature", "TRUE", &tmp_ac_prefs.auto_sig, P_BOOL,
- &compose_page.checkbtn_autosig,
- prefs_set_data_from_toggle, prefs_set_toggle},
-
- {"signature_separator", "-- ", &tmp_ac_prefs.sig_sep, P_STRING,
- &compose_page.entry_sigsep,
- prefs_set_data_from_entry, prefs_set_entry},
-
{"set_autocc", "FALSE", &tmp_ac_prefs.set_autocc, P_BOOL,
&compose_page.autocc_checkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
PrefsAccount *ac_prefs = (PrefsAccount *) data;
GtkWidget *vbox1;
- GtkWidget *sig_hbox;
GtkWidget *hbox1;
GtkWidget *hbox2;
- GtkWidget *frame_sig;
- GtkWidget *vbox_sig;
- GtkWidget *label_sigpath;
- GtkWidget *checkbtn_autosig;
- GtkWidget *label_sigsep;
- GtkWidget *entry_sigsep;
GtkWidget *frame;
GtkWidget *table;
GtkWidget *autocc_checkbtn;
gtk_widget_show (vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
- vbox_sig = gtkut_get_options_frame(vbox1, &frame_sig, _("Signature"));
+ PACK_FRAME (vbox1, frame, "Automatically set the following addresses");
- PACK_CHECK_BUTTON (vbox_sig, checkbtn_autosig,
- _("Automatically insert signature"));
-
- hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
- gtk_widget_show (hbox1);
- gtk_box_pack_start (GTK_BOX (vbox_sig), hbox1, TRUE, TRUE, 0);
- label_sigsep = gtk_label_new (_("Signature separator"));
- gtk_widget_show (label_sigsep);
- gtk_box_pack_start (GTK_BOX (hbox1), label_sigsep, FALSE, FALSE, 0);
-
- entry_sigsep = gtk_entry_new ();
- gtk_widget_show (entry_sigsep);
- gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
-
- gtk_widget_set_size_request (entry_sigsep, 64, -1);
-
- sig_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
- gtk_widget_show (sig_hbox);
- gtk_box_pack_start (GTK_BOX (vbox_sig), sig_hbox, FALSE, FALSE, 0);
-
- sigfile_radiobtn = gtk_radio_button_new_with_label (NULL, _("File"));
- gtk_widget_show (sigfile_radiobtn);
- gtk_box_pack_start (GTK_BOX (sig_hbox), sigfile_radiobtn,
- FALSE, FALSE, 0);
- g_object_set_data (G_OBJECT (sigfile_radiobtn),
- MENU_VAL_ID,
- GINT_TO_POINTER (SIG_FILE));
- g_signal_connect(G_OBJECT(sigfile_radiobtn), "clicked",
- G_CALLBACK(prefs_account_sigfile_radiobtn_cb), NULL);
-
- sigcmd_radiobtn = gtk_radio_button_new_with_label_from_widget
- (GTK_RADIO_BUTTON(sigfile_radiobtn), _("Command output"));
- gtk_widget_show (sigcmd_radiobtn);
- gtk_box_pack_start (GTK_BOX (sig_hbox), sigcmd_radiobtn,
- FALSE, FALSE, 0);
- g_object_set_data (G_OBJECT (sigcmd_radiobtn),
- MENU_VAL_ID,
- GINT_TO_POINTER (SIG_COMMAND));
- g_signal_connect(G_OBJECT(sigcmd_radiobtn), "clicked",
- G_CALLBACK(prefs_account_sigcmd_radiobtn_cb), NULL);
-
- hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
- gtk_widget_show (hbox2);
- gtk_box_pack_start (GTK_BOX (vbox_sig), hbox2, TRUE, TRUE, 0);
- label_sigpath = gtk_label_new (_("Signature"));
- gtk_widget_show (label_sigpath);
- gtk_box_pack_start (GTK_BOX (hbox2), label_sigpath, FALSE, FALSE, 0);
-
- entry_sigpath = gtk_entry_new ();
- gtk_widget_show (entry_sigpath);
- gtk_box_pack_start (GTK_BOX (hbox2), entry_sigpath, TRUE, TRUE, 0);
-
- signature_browse_button = gtkut_get_browse_file_btn(_("Bro_wse"));
- gtk_widget_show (signature_browse_button);
- gtk_box_pack_start (GTK_BOX (hbox2), signature_browse_button, FALSE, FALSE, 0);
- g_signal_connect(G_OBJECT(signature_browse_button), "clicked",
- G_CALLBACK(prefs_account_signature_browse_cb), NULL);
-
- signature_edit_button = gtk_button_new_with_mnemonic(_("_Edit"));
- gtk_widget_show (signature_edit_button);
- gtk_box_pack_start (GTK_BOX (hbox2), signature_edit_button, FALSE, FALSE, 0);
- g_signal_connect(G_OBJECT(signature_edit_button), "clicked",
- G_CALLBACK(prefs_account_signature_edit_cb), entry_sigpath);
-
- PACK_FRAME (vbox1, frame, _("Automatically set the following addresses"));
-
table = gtk_grid_new();
gtk_widget_show (table);
gtk_container_add (GTK_CONTAINER (frame), table);
SET_TOGGLE_SENSITIVITY (autoreplyto_checkbtn, autoreplyto_entry);
- page->sigfile_radiobtn = sigfile_radiobtn;
- page->entry_sigpath = entry_sigpath;
- page->checkbtn_autosig = checkbtn_autosig;
- page->entry_sigsep = entry_sigsep;
-
page->autocc_checkbtn = autocc_checkbtn;
page->autocc_entry = autocc_entry;
page->autobcc_checkbtn = autobcc_checkbtn;
blob - 054aa006ecefc71f1bc320273de84faa64cb3e12
blob + f1442e9f99b7f513f98b2b1f628c38e2d6adafab
--- src/prefs_account.h
+++ src/prefs_account.h
NUM_RECV_PROTOCOLS
} RecvProtocol;
-typedef enum {
- SIG_FILE,
- SIG_COMMAND,
- SIG_DIRECT
-} SigType;
-
typedef enum
{
POPAUTH_OAUTH2 = 1 << 1
gchar *oauth2_client_secret;
/* Compose */
- SigType sig_type;
- gchar *sig_path;
- gboolean auto_sig;
- gchar *sig_sep;
gboolean set_autocc;
gchar *auto_cc;
gboolean set_autobcc;
blob - bd773a69cdc2b451556339a74c1ade02da2b23e8
blob + 66dfbd400f5e25aebdbb4bd74cb8d17498b392f1
--- src/prefs_other.c
+++ src/prefs_other.c
{"<Actions>/Menu/Message/SendLater", "<shift><control>S"},
{"<Actions>/Menu/Message/AttachFile", "<control>M"},
{"<Actions>/Menu/Message/InsertFile", "<control>I"},
- {"<Actions>/Menu/Message/InsertSig", "<control>G"},
{"<Actions>/Menu/Message/Save", "<control>S"},
{"<Actions>/Menu/Message/Close", "<control>W"},
{"<Actions>/Menu/Edit/Undo", "<control>Z"},
blob - 50ec5a71ec5352fe155adf9eb53e5121c51d12ac
blob + 40c2e3a1f5d476eb3aec3ff79a140b896d1282f3
--- src/procmime.c
+++ src/procmime.c
gint llen = 0; \
strretchomp(lastline); \
llen = strlen(lastline); \
- if (lastline[llen-1] == ' ' && !account_sigsep_matchlist_str_found(lastline, "%s") && \
+ if (lastline[llen-1] == ' ' && \
!(llen >= 2 && lastline[1] == ' ' && strchr(prefs_common.quote_chars, lastline[0]))) { \
/* this is flowed */ \
if (delsp) \
tmp_file = TRUE;
readend = mimeinfo->offset + mimeinfo->length;
- account_sigsep_matchlist_create(); /* FLUSH_LASTLINE will use it */
-
*buf = '\0';
if (encoding == ENC_QUOTED_PRINTABLE) {
while ((ftell(infp) < readend) && (fgets(buf, sizeof(buf), infp) != NULL)) {
fclose(outfp);
fclose(infp);
- account_sigsep_matchlist_delete();
-
if (err == TRUE) {
g_free(tmpfilename);
return FALSE;
blob - ab69d8e8f0b666099b68c8fa6a997302945ac81a
blob + 0db9c31d8ceeb838d59a7b5672c45d0752a798ee
--- src/textview.c
+++ src/textview.c
procmime_decode_content(mimeinfo);
- account_sigsep_matchlist_create();
-
if (textview->messageview->msginfo && textview->messageview->msginfo->folder)
folder_item = textview->messageview->msginfo->folder;
fclose(tmpfp);
waitpid(pid, pfd, 0);
g_unlink(fname);
- account_sigsep_matchlist_delete();
conv_code_converter_destroy(conv);
return;
}
tmpfp = g_fopen(mimeinfo->data.filename, "rb");
if (!tmpfp) {
FILE_OP_ERROR(mimeinfo->data.filename, "g_fopen");
- account_sigsep_matchlist_delete();
conv_code_converter_destroy(conv);
return;
}
if (fseek(tmpfp, mimeinfo->offset, SEEK_SET) < 0) {
FILE_OP_ERROR(mimeinfo->data.filename, "fseek");
fclose(tmpfp);
- account_sigsep_matchlist_delete();
conv_code_converter_destroy(conv);
return;
}
textview_write_line(textview, buf, conv, TRUE);
if (textview->stop_loading) {
fclose(tmpfp);
- account_sigsep_matchlist_delete();
conv_code_converter_destroy(conv);
return;
}
fclose(tmpfp);
}
- account_sigsep_matchlist_delete();
-
conv_code_converter_destroy(conv);
procmime_force_encoding(0);
parser = sc_html_parser_new(fp, conv);
cm_return_if_fail(parser != NULL);
- account_sigsep_matchlist_create();
-
while ((str = sc_html_parse(parser)) != NULL) {
if (parser->state == SC_HTML_HREF) {
/* first time : get and copy the URL */
if (lines % 500 == 0)
GTK_EVENTS_FLUSH();
if (textview->stop_loading) {
- account_sigsep_matchlist_delete();
sc_html_parser_destroy(parser);
return;
}
}
textview_write_line(textview, "\n", NULL, FALSE);
- account_sigsep_matchlist_delete();
-
sc_html_parser_destroy(parser);
}
else if (strncmp(buf, "@@ ", 3) == 0 &&
strstr(&buf[3], " @@"))
fg_color = "diff-hunk";
-
- if (account_sigsep_matchlist_nchar_found(buf, "%s\n")) {
- textview->is_in_git_patch = FALSE;
- textview->is_in_signature = TRUE;
- fg_color = "signature";
- }
- } else if (account_sigsep_matchlist_str_found(buf, "%s\n")
- || account_sigsep_matchlist_str_found(buf, "- %s\n")
- || textview->is_in_signature) {
- fg_color = "signature";
- textview->is_in_signature = TRUE;
} else if (strncmp(buf, "diff --git ", 11) == 0) {
textview->is_in_git_patch = TRUE;
}