summaryrefslogtreecommitdiff
path: root/project2/view.h
blob: 9bd88ed2747103cee27923c6aeb563dcee741cce (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
#ifndef VIEW_H
#define VIEW_H

#include <libxml++/nodes/element.h>
#include <boost/shared_ptr.hpp>
#include <map>
#include "sourceObject.h"
#include "xmlObjectLoader.h"
#include "perRowValues.h"

class ApplicationEngine;
class _View;
typedef boost::shared_ptr<_View> View;
typedef std::map<std::string, View> Views;

class _View : public virtual _SourceObject, public PerRowValues {
	public:
		_View(const xmlpp::Element * p);
		virtual ~_View();
		virtual void execute(xmlpp::Element *, const ApplicationEngine *, const _View * parent = NULL) const = 0;
		virtual Glib::ustring getCurrentValue(const Glib::ustring & id) const = 0;
		const Glib::ustring recordName;

		static void AddLoaders(Loaders & l, Views & vs);
	protected:
		void executeChildren(xmlpp::Element *, const ApplicationEngine *, const _View * parent = NULL) const;
		Views subViews;
};

#endif