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 */
|