# include <iostream>
# include <vector>
# include <algorithm>
# include <random>
# include <ctime>
# include <memory>
# include <gtkmm.h>
# include <boost/filesystem.hpp>
# include "astroid.hh"
# include "config.hh"
# include "account_manager.hh"
# include "edit_message.hh"
# include "compose_message.hh"
# include "db.hh"
# include "thread_view/thread_view.hh"
# include "raw_message.hh"
# include "main_window.hh"
# include "message_thread.hh"
# include "chunk.hh"
# include "utils/utils.hh"
# include "utils/ustring_utils.hh"
# include "utils/resource.hh"
# include "utils/gmime/gmime-compat.h"
# include "actions/onmessage.hh"
# include "editor/plugin.hh"
# include "editor/external.hh"
using namespace std;
using namespace boost::filesystem;
namespace Astroid {
int EditMessage::edit_id = 0;
EditMessage::EditMessage (MainWindow * mw, ustring _to, ustring _from, ustring _cc, ustring _bcc, ustring _subject, ustring _body) :
EditMessage (mw, false) { // {{{
in_read = false;
to = _to;
cc = _cc;
bcc = _bcc;
subject = _subject;
body = _body;
if (!_from.empty ()) {
set_from (Address (_from));
}
/* reload message */
prepare_message ();
read_edited_message ();
edit_when_ready ();
}
EditMessage::EditMessage (MainWindow * mw, refptr<Message> msg) :
EditMessage (mw, false) {
/* load draft */
LOG (info) << "em: loading draft from: " <<