X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=base%2Fdali-toolkit%2Finternal%2Fbuilder%2Fbuilder-impl.cpp;h=ee8f8fcc063d0c6474e039b7028c32da08cabd6c;hp=06e95e6a5c85b27d5ef2f2b07067e579794882af;hb=c11191b4322a0687606b3e7f05db0a31f85403cc;hpb=a36bb59e13fb8f984d0aad09bad0dca259aeff4c diff --git a/base/dali-toolkit/internal/builder/builder-impl.cpp b/base/dali-toolkit/internal/builder/builder-impl.cpp index 06e95e6..ee8f8fc 100644 --- a/base/dali-toolkit/internal/builder/builder-impl.cpp +++ b/base/dali-toolkit/internal/builder/builder-impl.cpp @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include +#include #include // INTERNAL INCLUDES @@ -49,8 +50,8 @@ extern bool SetPropertyFromNode( const TreeNode& node, Property::Value& value ); 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 quitAction); +extern Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function quitAction); extern Actor SetupActor( const TreeNode& node, Actor& actor, const Replacement& constant ); #if defined(DEBUG_ENABLED) @@ -208,6 +209,23 @@ void CollectAllStyles( const TreeNode& stylesCollection, const TreeNode& style, } } +struct QuitAction +{ +public: + QuitAction( Builder& builder ) + : mBuilder( builder ) + { + } + + void operator()(void) + { + mBuilder.EmitQuitSignal(); + } + +private: + Builder& mBuilder; +}; + } // namespace anon /* @@ -335,9 +353,9 @@ void Builder::ApplyProperties( const TreeNode& root, const TreeNode& node, 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 @@ -726,6 +744,16 @@ FrameBufferImage Builder::GetFrameBufferImage( const std::string &name, const Re 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 @@ -982,7 +1010,6 @@ bool Builder::ApplyStyle( const std::string& styleName, Handle& handle, const Re } else { - DALI_SCRIPT_WARNING("No styles section to create style '%s'\n", styleName.c_str()); return false; } } @@ -1030,6 +1057,44 @@ BaseHandle Builder::Create( const std::string& templateName, const Replacement& return baseHandle; } +BaseHandle Builder::CreateFromJson( const std::string& json ) +{ + BaseHandle ret; + + // merge in new template, hoping no one else has one named '@temp@' + std::string newTemplate = + std::string("{\"templates\":{\"@temp@\":") + \ + json + \ + std::string("}}"); + + if( mParser.Parse(newTemplate) ) + { + Replacement replacement( mReplacementMap ); + ret = Create( "@temp@", replacement ); + } + + return ret; +} + +bool Builder::ApplyFromJson( Handle& handle, const std::string& json ) +{ + bool ret = false; + + // merge new style, hoping no one else has one named '@temp@' + std::string newStyle = + std::string("{\"styles\":{\"@temp@\":") + \ + json + \ + std::string("}}"); + + if( mParser.Parse(newStyle) ) + { + Replacement replacement( mReplacementMap ); + ret = ApplyStyle( "@temp@", handle, replacement ); + } + + return ret; +} + BaseHandle Builder::Create( const std::string& templateName ) {