// EXTERNAL INCLUDES
#include <sys/stat.h>
+#include <boost/function.hpp>
#include <sstream>
// INTERNAL INCLUDES
extern bool SetPropertyFromNode( const TreeNode& node, Property::Value& value, const Replacement& replacements );
extern bool SetPropertyFromNode( const TreeNode& node, Property::Type type, Property::Value& value );
extern bool SetPropertyFromNode( const TreeNode& node, Property::Type type, Property::Value& value, const Replacement& replacements );
-extern Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor);
-extern Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor);
+extern Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction);
+extern Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction);
extern Actor SetupActor( const TreeNode& node, Actor& actor, const Replacement& constant );
#if defined(DEBUG_ENABLED)
}
}
+struct QuitAction
+{
+public:
+ QuitAction( Builder& builder )
+ : mBuilder( builder )
+ {
+ }
+
+ void operator()(void)
+ {
+ mBuilder.EmitQuitSignal();
+ }
+
+private:
+ Builder& mBuilder;
+};
+
} // namespace anon
/*
SetupActor( node, actor, constant );
// add signals
- SetupSignalAction( mSlotDelegate.GetConnectionTracker(), root, node, actor );
-
- SetupPropertyNotification( mSlotDelegate.GetConnectionTracker(), root, node, actor );
+ QuitAction quitAction( *this );
+ SetupSignalAction( mSlotDelegate.GetConnectionTracker(), root, node, actor, quitAction );
+ SetupPropertyNotification( mSlotDelegate.GetConnectionTracker(), root, node, actor, quitAction );
}
}
else
}
}
- ApplyProperties( root, node, handle, replacements );
-
- if( actor)
+ if( actor )
{
// add children of all the styles
if( OptionalChild actors = IsChild( node, KEYNAME_ACTORS ) )
parent.Add( actor );
}
}
-
+ else
+ {
+ ApplyProperties( root, node, handle, replacements );
+ }
}
else
{
return ret;
}
+Toolkit::Builder::Signal& Builder::QuitSignal()
+{
+ return mQuitSignal;
+}
+
+void Builder::EmitQuitSignal()
+{
+ mQuitSignal.Emit();
+}
+
void Builder::AddActors( Actor toActor )
{
// 'stage' is the default/by convention section to add from