summaryrefslogtreecommitdiff
path: root/project2/common/appEngine.cpp
blob: b5db2cf0c8eb6e15e92360080aa78e6bf055b68d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <pch.hpp>
#include "appEngine.h"
#include "logger.h"
#include "presenter.h"
#include <stdexcept>
#include <boost/foreach.hpp>

ApplicationEngine * ApplicationEngine::currentEngine = NULL;

ApplicationEngine::ApplicationEngine()
{
	if (currentEngine) {
		throw std::runtime_error("One application at a time, please");
	}
	currentEngine = this;
}

ApplicationEngine::~ApplicationEngine()
{
	currentEngine = NULL;
}

void
ApplicationEngine::logMessage(bool writeLog, const Glib::ustring & g, const Glib::ustring & m)
{
	if (writeLog) {
		Logger()->messagef(LOG_NOTICE, "%s: %s: %s", __PRETTY_FUNCTION__, g.c_str(), m.c_str());
	}
	appMessages.push_back(new Message(g, m));
}

void
ApplicationEngine::addCoreAppData(const MultiRowSetPresenter * p) const
{
	// Message log
	p->addNewRowSet("messages", env()->scriptNamespacePrefix);
	BOOST_FOREACH(const Messages::value_type & m, appMessages) {
		p->addNewRow("message");
		p->addAttribute("group", m->group);
		p->addAttribute("text", m->message);
		p->finishRow();
	}
	p->finishRowSet();
}

ApplicationEngine::Message::Message(const Glib::ustring & g, const Glib::ustring & m) :
	group(g),
	message(m)
{
}