tge/lib/mayasdk7/include/maya/MPxCommand.h
2017-04-17 06:17:10 -06:00

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