示例#1
0
bool	CPart::SetTextContents( const std::string& inString )
{
	CPartContents*	contents = GetContentsOnCurrentCard();
	if( contents )
		contents->SetText( inString );
	else
	{
		CCard	*	currCard = GetStack()->GetCurrentCard();
		bool		isBgPart = dynamic_cast<CBackground*>(mOwner) != NULL;
		bool 		bgPartWithNonSharedText = (isBgPart && !GetSharedText());
		contents = new CPartContents( bgPartWithNonSharedText ? currCard : mOwner );
		contents->SetID( mID );
		contents->SetText( inString );
		contents->SetIsOnBackground( isBgPart );
		if( bgPartWithNonSharedText )	// We're on the background layer, not on the card? But we don't have shared text? Add the contents to the current *card*!
		{
			currCard->AddPartContents( contents );
		}
		else	// Otherwise, we're on the card, or on the background with shared text, add the contents to that.
		{
			mOwner->AddPartContents( contents );
		}
	}
	return true;
}
示例#2
0
CPartContents*	CPart::GetContentsOnCurrentCard()
{
	CPartContents*	contents = NULL;
	CStack		*	currStack = GetStack();
	if( !currStack )
		return NULL;
	CCard		*	currCard = currStack->GetCurrentCard();
	if( !currCard )
		return NULL;
	bool	isBgPart = dynamic_cast<CBackground*>(mOwner) != NULL;
	bool 	bgPartWithNonSharedText = (isBgPart && !GetSharedText());
	if( isBgPart && !GetSharedText() )	// We're on the background layer, not on the card, and don't have shared text?
	{
		contents = currCard->GetPartContentsByID( GetID(), isBgPart );
	}
	else
	{
		contents = mOwner->GetPartContentsByID( GetID(), isBgPart );
	}
	
	if( !contents )
	{
		contents = new CPartContents( currCard );
		contents->SetID( mID );
		contents->SetIsOnBackground( isBgPart );
		if( bgPartWithNonSharedText )
			currCard->AddPartContents( contents );
		else
			mOwner->AddPartContents( contents );
	}

	return contents;
}