221 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			221 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| 
 | |
| #ifndef _MPxCommand
 | |
| #define _MPxCommand
 | |
| //
 | |
| //-
 | |
| // ==========================================================================
 | |
| // Copyright (C) 1995 - 2005 Alias Systems Corp. and/or its licensors.  All 
 | |
| // rights reserved.
 | |
| // 
 | |
| // The coded instructions, statements, computer programs, and/or related 
 | |
| // material (collectively the "Data") in these files contain unpublished 
 | |
| // information proprietary to Alias Systems Corp. ("Alias") and/or its 
 | |
| // licensors, which is protected by Canadian and US federal copyright law and 
 | |
| // by international treaties.
 | |
| // 
 | |
| // The Data may not be disclosed or distributed to third parties or be copied 
 | |
| // or duplicated, in whole or in part, without the prior written consent of 
 | |
| // Alias.
 | |
| // 
 | |
| // THE DATA IS PROVIDED "AS IS". ALIAS HEREBY DISCLAIMS ALL WARRANTIES RELATING 
 | |
| // TO THE DATA, INCLUDING, WITHOUT LIMITATION, ANY AND ALL EXPRESS OR IMPLIED 
 | |
| // WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND/OR FITNESS FOR A 
 | |
| // PARTICULAR PURPOSE. IN NO EVENT SHALL ALIAS BE LIABLE FOR ANY DAMAGES 
 | |
| // WHATSOEVER, WHETHER DIRECT, INDIRECT, SPECIAL, OR PUNITIVE, WHETHER IN AN 
 | |
| // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, OR IN EQUITY, 
 | |
| // ARISING OUT OF ACCESS TO, USE OF, OR RELIANCE UPON THE DATA.
 | |
| // ==========================================================================
 | |
| //+
 | |
| //
 | |
| // CLASS:    MPxCommand
 | |
| //
 | |
| // *****************************************************************************
 | |
| //
 | |
| // CLASS DESCRIPTION (MPxCommand)
 | |
| //
 | |
| //	This is the proxy class for creating MEL commands through the API.
 | |
| //
 | |
| //	Each command is derived from this one, and must have a doIt method,
 | |
| //	and optionally undoIt, and redoIt methods.
 | |
| //
 | |
| //	The doIt method should collect whatever information is required to
 | |
| //	do the task, and store it in local class data.  It should finally
 | |
| //	call redoIt to make the command happen.  The redoIt method should
 | |
| //	do the actual work, using only the local class data.  The undoIt
 | |
| //	method should undo the actual work, again using only the local
 | |
| //	class data.
 | |
| //
 | |
| //	Maya contains support for infinite levels of undo.  If a command
 | |
| //	written in a plug-in changes the state of anything in Maya, it
 | |
| //	should implement undoIt and redoIt methods.  As well, if the doIt
 | |
| //	method returns successfully, Maya will call the method's isUndoable
 | |
| //	method immediately afterwards.  If that method returns true, the
 | |
| //	instance of this class is retained and passed to Maya's undo
 | |
| //	manager so that the undoIt and redoIt methods can be called when
 | |
| //	appropriate.  If isUndoable returns false, the command instance is
 | |
| //	destroyed right away.
 | |
| //
 | |
| //	So, for example, if a command supports both query and edit modes,
 | |
| //	in query mode the command should set a flag so that the isUndoable
 | |
| //	method returns false to prevent that command instance from being
 | |
| //	retained by the undo manager.  In edit mode, where the state of
 | |
| //	Maya is changed, isUndoable should return true to enable undo and
 | |
| //	redo.
 | |
| //
 | |
| // *****************************************************************************
 | |
| 
 | |
| #if defined __cplusplus
 | |
| 
 | |
| // *****************************************************************************
 | |
| 
 | |
| // INCLUDED HEADER FILES
 | |
| 
 | |
| 
 | |
| 
 | |
| #include <maya/MStatus.h>
 | |
| #include <maya/MTypes.h>
 | |
| #include <maya/MString.h>
 | |
| 
 | |
| // *****************************************************************************
 | |
| 
 | |
| // DECLARATIONS
 | |
| 
 | |
| class MFileObject;
 | |
| class MArgList;
 | |
| class MIntArray;
 | |
| class MDoubleArray;
 | |
| class MStringArray;
 | |
| class MSyntax;
 | |
| 
 | |
| // *****************************************************************************
 | |
| 
 | |
| // CLASS DECLARATION (MPxCommand)
 | |
| 
 | |
| /// Base class for user commands
 | |
| /**
 | |
|   Base class for creating user defined Maya commands.
 | |
| */
 | |
| #ifdef _WIN32
 | |
| #pragma warning(disable: 4522)
 | |
| #endif // _WIN32
 | |
| 
 | |
| class OPENMAYA_EXPORT MPxCommand  
 | |
| {
 | |
| public:
 | |
| 	///
 | |
| 						MPxCommand();
 | |
| 	///
 | |
| 	virtual 			~MPxCommand();
 | |
| 	/// Pure virtual
 | |
| 	virtual MStatus   	doIt( const MArgList& args ) = 0;
 | |
| 	///
 | |
| 	virtual MStatus   	undoIt( );
 | |
| 	///
 | |
| 	virtual MStatus   	redoIt( );
 | |
| 	///
 | |
| 	virtual bool		isUndoable() const;
 | |
| 	///
 | |
| 	virtual bool		hasSyntax() const;
 | |
| 	///
 | |
| 	MSyntax				syntax() const;
 | |
| 	///
 | |
| 	bool                isHistoryOn() const;
 | |
| 	///
 | |
| 	MString      		commandString() const;
 | |
| 	///
 | |
| 	MStatus            	setHistoryOn( bool state );
 | |
| 	///
 | |
| 	MStatus            	setCommandString( const MString & );
 | |
| 
 | |
| 
 | |
| 	///
 | |
| 	static void			displayInfo( const MString & theInfo );
 | |
| 	///
 | |
| 	static void			displayWarning( const MString & theWarning );
 | |
| 	///
 | |
| 	static void			displayError( const MString & theError );
 | |
| 
 | |
| 	///
 | |
| 	static void			displayWarning( const MString & theWarning, bool wantDisplayLineNumber );
 | |
| 	///
 | |
| 	static void			displayError( const MString & theError, bool wantDisplayLineNumber );
 | |
| 
 | |
| 	///
 | |
| 	enum MResultType {
 | |
| 		///
 | |
| 		kLong,
 | |
| 		///
 | |
| 		kDouble,
 | |
| 		///
 | |
| 		kString,
 | |
| 		///
 | |
| 		kNoArg
 | |
| 	};
 | |
| 
 | |
| 	///
 | |
| 	static void         clearResult();
 | |
| 
 | |
| 	///
 | |
| 	static void         setResult( int val );
 | |
| 	///
 | |
| 	static void         setResult( double val );
 | |
| 	///
 | |
| 	static void         setResult( bool val );
 | |
| 	///
 | |
| 	static void         setResult( const char* val );
 | |
| 	///
 | |
| 	static void         setResult( const MString& val );
 | |
| 	///
 | |
| 	static void         setResult( const MIntArray& val );
 | |
| 	///
 | |
| 	static void         setResult( const MDoubleArray& val );
 | |
| 	///
 | |
| 	static void         setResult( const MStringArray& val );
 | |
| 
 | |
| 	///
 | |
| 	static void         appendToResult( int val );
 | |
| 	///
 | |
| 	static void         appendToResult( double val );
 | |
| 	///
 | |
| 	static void         appendToResult( bool val );
 | |
| 	///
 | |
| 	static void         appendToResult( const char* val );
 | |
| 	///
 | |
| 	static void         appendToResult( const MString& val );
 | |
| 	///
 | |
| 	static void         appendToResult( const MStringArray& val );
 | |
| 
 | |
| 	///
 | |
| 	static MResultType  currentResultType();
 | |
| 	///
 | |
| 	static MStatus      getCurrentResult( int& val );
 | |
| 	///
 | |
| 	static MStatus      getCurrentResult( double& val );
 | |
| 	///
 | |
| 	static MStatus      getCurrentResult( MString& val );
 | |
| 	///
 | |
| 	static MStatus      getCurrentResult( MIntArray& val );
 | |
| 	///
 | |
| 	static MStatus      getCurrentResult( MDoubleArray& val );
 | |
| 	///
 | |
| 	static MStatus      getCurrentResult( MStringArray& val );
 | |
| 
 | |
| 	/// OBSOLETE
 | |
| 	MStatus            	setUndoable( bool state );
 | |
| 
 | |
| protected:
 | |
| 	static const char*	className();
 | |
| 	void setData( void * ptr );
 | |
| 	void*				instance;
 | |
| private:
 | |
| 	MString command;
 | |
| };
 | |
| 
 | |
| #ifdef _WIN32
 | |
| #pragma warning(default: 4522)
 | |
| #endif // _WIN32
 | |
| 
 | |
| // *****************************************************************************
 | |
| #endif /* __cplusplus */
 | |
| #endif /* _MPxCommand */
 | 
