//-------------------------------------------------------------------------------
//
// PIUActionsPlayByName
//
// Play an action given the name of the set and the name of the action.
// Returns any errors immediately.
//-------------------------------------------------------------------------------
SPErr PIUActionsPlayByName(char* setName, char* actionName)
{
	SPErr error = kSPNoError;
	PIActionDescriptor result = NULL;
	PIActionDescriptor descriptor = NULL;
	PIActionReference reference = NULL;
	
	error = sPSActionReference->Make(&reference);
	if (error) goto returnError;

	error = sPSActionReference->PutName(reference, 
 	                                    classAction, 
										actionName);
	if (error) goto returnError;

	error = sPSActionReference->PutName(reference, 
										classActionSet, 
										setName);
	if (error) goto returnError;

	error = sPSActionDescriptor->Make(&descriptor);
	if (error) goto returnError;

	error = sPSActionDescriptor->PutReference(descriptor, 
											  keyNull, 
											  reference);
	if (error) goto returnError;

	error = sPSActionControl->Play(&result, 
		                           eventPlay, 
								   descriptor, 
								   plugInDialogSilent);
	if (error) goto returnError;

	error = PIUCheckPlayResult(result);
	if (error) goto returnError;

returnError:
	if (reference != NULL)
		sPSActionReference->Free(reference);
	if (descriptor != NULL)
		sPSActionDescriptor->Free(descriptor);
	if (result != NULL)
		sPSActionDescriptor->Free(result);
	
	return error;
}
Example #2
0
//-------------------------------------------------------------------------------
//
//	PIUSelectByIndex
//
// Given a class and an index. This routine will force focus on that Object.
//
//-------------------------------------------------------------------------------
SPErr PIUSelectByIndex(DescriptorClassID desiredClass, uint32 value)
{
	SPErr error = kSPNoError;
	PIActionReference reference = NULL;
	PIActionDescriptor descriptor = NULL;
	PIActionDescriptor result = NULL;

	error = sPSActionReference->Make(&reference);
	if (error) goto returnError;

	error = sPSActionReference->PutIndex(reference,
										 desiredClass,
										 value);
	if (error) goto returnError;
	
	error = sPSActionDescriptor->Make(&descriptor);
	if (error) goto returnError;
	
	error = sPSActionDescriptor->PutReference(descriptor, 
		                                      keyNull, 
											  reference);
	if (error) goto returnError;
	
	error = sPSActionControl->Play(&result,
								   eventSelect,
								   descriptor, 
								   plugInDialogSilent);
	if (error) goto returnError;
	
	error = PIUCheckPlayResult(result);

returnError:
	if (reference != NULL)
		sPSActionReference->Free(reference);
	if (descriptor != NULL)
		sPSActionDescriptor->Free(descriptor);
	if (result != NULL)
		sPSActionDescriptor->Free(result);
	
	return error;
}