diff options
| author | randomdan <randomdan@localhost> | 2012-04-28 15:02:14 +0000 | 
|---|---|---|
| committer | randomdan <randomdan@localhost> | 2012-04-28 15:02:14 +0000 | 
| commit | aabce76d60614eabf54246a340498ce6103edf0d (patch) | |
| tree | a76e099d58a8e06a3267c8e59af0aba24ff69347 | |
| parent | Fixed memory leak in HtmlDocument (free doc) (diff) | |
| download | project2-aabce76d60614eabf54246a340498ce6103edf0d.tar.bz2 project2-aabce76d60614eabf54246a340498ce6103edf0d.tar.xz project2-aabce76d60614eabf54246a340498ce6103edf0d.zip  | |
Render subviews in the order they're defined
Add viewGroup for creating arbitrary nesting
Don't error when a previously referenced script file no longer exists, just return not current
| -rw-r--r-- | project2/common/rowView.h | 2 | ||||
| -rw-r--r-- | project2/common/viewGroup.cpp | 27 | ||||
| -rw-r--r-- | project2/xml/xmlScriptParser.cpp | 8 | 
3 files changed, 35 insertions, 2 deletions
diff --git a/project2/common/rowView.h b/project2/common/rowView.h index 9ba4699..534a06f 100644 --- a/project2/common/rowView.h +++ b/project2/common/rowView.h @@ -26,7 +26,7 @@ class RowView : public View, public RowProcessor {  		Columns viewColumns;  		void executeChildren() const; -		typedef ANONSTORAGEOF(View) SubViews; +		typedef ANONORDEREDSTORAGEOF(View) SubViews;  		SubViews subViews;  		typedef ANONSTORAGEOF(ValueAggregate) ValueAggregates;  		ValueAggregates valueAggregates; diff --git a/project2/common/viewGroup.cpp b/project2/common/viewGroup.cpp new file mode 100644 index 0000000..b01f6c8 --- /dev/null +++ b/project2/common/viewGroup.cpp @@ -0,0 +1,27 @@ +#include "view.h" +#include <boost/foreach.hpp> +#include "presenter.h" + +class ViewGroup : public View { +	public: +		ViewGroup(ScriptNodePtr s) : +			SourceObject(s), +			View(s) +		{ +			s->script->loader.addLoadTarget(s, Storer::into<ElementLoader>(&subViews)); +		} + +		void execute(const MultiRowSetPresenter * presenter) const +		{ +			presenter->addNewRowSet(name); +			BOOST_FOREACH(const SubViews::value_type & sq, subViews) { +				sq->execute(presenter); +			} +			presenter->finishRowSet(); +		} + +		typedef ANONORDEREDSTORAGEOF(View) SubViews; +		SubViews subViews; +}; + +DECLARE_LOADER("viewgroup", ViewGroup); diff --git a/project2/xml/xmlScriptParser.cpp b/project2/xml/xmlScriptParser.cpp index ece6701..71c4bb5 100644 --- a/project2/xml/xmlScriptParser.cpp +++ b/project2/xml/xmlScriptParser.cpp @@ -76,7 +76,13 @@ bool  XmlScriptParser::isCurrent() const  {  	BOOST_FOREACH(const Files::value_type & f, files) { -		if (boost::filesystem::last_write_time(f.first) != f.second) { +		try { +			if (boost::filesystem::last_write_time(f.first) != f.second) { +				_root.reset(); +				return false; +			} +		} +		catch (const boost::filesystem::filesystem_error &) {  			_root.reset();  			return false;  		}  | 
