/****************************************************************************
 *   Copyright (C) 2004 by Arboretum Systems, Inc.                          *
 *   Technical administrator: Alain Mazy, hav@mazy.be                       *
 *   Lead program designer: Georges Jaroslaw, gjaro@arboretum.com           *
 *                                                                          *
 *   HyperEngine-AV is a video, audio and text editor that can be used to   *
 *   record, import, edit, process and arrange together video, sound and    *
 *   text. These are all achieved in the program's free-form document       *
 *   window, with no limitations to the number of tracks.                   *
 *   The purpose of this program is to provide to users at all levels of    *
 *   expertise a readily accessible tool enabling them to create movies,    *
 *   slide shows or presentations.                                          *
 *                                                                          *
 *   HyperEngine-AV itself is free software. However, plug-ins that can be  *
 *   used as add-ons to HyperEngine-AV may or may not be free software, at  *
 *   the discretion of each plug-in developer and as specified by these     *
 *   plug-ins' respective licenses.                                         *
 *   You can redistribute HyperEngine-AV itself and/or modify it under the  *
 *   terms of the GNU General Public License as published by the Free       *
 *   Software Foundation; either version 2 of the License, or (at your      *
 *   option) any later version.                                             *
 *                                                                          *
 *   HyperEngine-AV is distributed in the hope that it will be useful, but  *
 *   WITHOUT ANY WARRANTY; without even the implied warranty of             *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
 *   GNU General Public License for all applicable details.                 *
 *                                                                          *
 *   You should have received a copy of the GNU General Public License      *
 *   along with this program; if not, write to:                             *
 *   Free Software Foundation, Inc.,                                        *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.              *
 ****************************************************************************/

#import "MontageVerbose.h"
#import "MIWSSelection.h"
#import "MIObjectRep.h"
#import "MIObject.h"

#ifdef LOG_USER_COMMAND_TO_STANDARD_OUTPUT || LOG_USER_COMMAND_TO_LOG_FILE

void PrintSelection(MIWSSelection* sel)
{
	if ([sel count] == 0)
	{
		VUSERCMD("- no selection");
		return;
	}

	if ([sel type] == kMIWSSelectionTypeTimeSlice)
	{
		VUSERCMD2("- Selection (slice) from %d to %d in", (int)([sel startTime].data), (int)([sel endxTime].data));
	}
	else
	{
		VUSERCMD("- Selection (objects) : ");
	}
	
	NSEnumerator*	objEnum = [sel objectEnumerator];
	MIObjectRep*	objRep;
	while (objRep = [objEnum nextObject])
	{
		PrintObject([objRep representedObject]);
	}
}

void PrintObject(MIObject* obj)
{
	char typeString[64];
	switch ([obj WSObject]->GetType())
	{
		case TArmeWSObj::kAudioClip :
			sprintf(typeString, "audio clip");
			break;
		case TArmeWSObj::kVideoClip :
			sprintf(typeString, "video clip");
			break;
		case TArmeWSObj::kContainer :
			sprintf(typeString, "group");
			break;
		case TArmeWSObj::kVideoEffect :
			sprintf(typeString, "video effect");
			break;
		case TArmeWSObj::kVideoXFadeEffect :
			sprintf(typeString, "video transition");
			break;
		case TArmeWSObj::kTextClip :
			sprintf(typeString, "text clip");
			break;
		case TArmeWSObj::kMIDIClip :
			sprintf(typeString, "midi clip");
			break;
		case TArmeWSObj::kAudioProcessor :
			sprintf(typeString, "audio proc");
			break;
		case TArmeWSObj::kTLC :
			sprintf(typeString, "tlc");
			break;
		case TArmeWSObj::kArmeWSObj :
		default :
			sprintf(typeString, "unknown type");
	}
	VUSERCMD2("-- %s (%s)", [obj WSObject]->GetName(), typeString);
}

#else //(LOG_USER_COMMAND_TO_STANDARD_OUTPUT || LOG_USER_COMMAND_TO_LOG_FILE)

#endif //(LOG_USER_COMMAND_TO_STANDARD_OUTPUT || LOG_USER_COMMAND_TO_LOG_FILE)
