// Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . /* Copyright, 2000 Nevrax Ltd. * * This file is part of NEVRAX NEL. * NEVRAX NEL is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * NEVRAX NEL 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 more details. * You should have received a copy of the GNU General Public License * along with NEVRAX NEL; see the file COPYING. If not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. */ #ifndef GEORGES_EDIT_ACTION_H #define GEORGES_EDIT_ACTION_H #include "nel/misc/types_nl.h" // Document modification action class IAction { friend class CGeorgesEditDoc; public: // Type of modification performed enum TTypeAction { HeaderVersion, HeaderState, HeaderComments, TypeType, TypeUI, TypeDefault, TypeMin, TypeMax, TypeIncrement, TypePredef, DfnParents, DfnStructure, FormParents, FormArraySize, FormArrayRename, /*FormArrayReplace, FormArrayAppend,*/ FormArrayInsert, FormArrayDelete, FormVirtualDfnName, FormValue, FormTypeValue, FormPaste, }; protected: // Constructor IAction (TTypeAction type, uint selId, uint slot); // Init log label void setLabel (const char *logLabel, CGeorgesEditDoc &doc); public: // Virtual destructor virtual ~IAction () {}; protected: // Action type TTypeAction _Type; // Original value ? bool _Original; // Selection Id of the Undo uint _SelId; // Action slot uint _Slot; // Old and new value bool _LogPresent[2]; std::string _Log[2]; std::string _LogLabel; // Do the modification virtual bool doAction (CGeorgesEditDoc &doc, bool redo, bool &modified, bool firstTime); // Update the views enum TUpdateRightView { DoNothing, UpdateLabels, UpdateValues, Redraw }; void update (bool updateLeftView, TUpdateRightView rightView, CGeorgesEditDoc &doc, const char *_FormName); }; // String modification action class CActionString : public IAction { public: // Constructor CActionString (IAction::TTypeAction type, const char *newValue, CGeorgesEditDoc &doc, const char *formName, const char *userData, uint selId, uint slot); protected: // Old and new value std::string _Value[2]; // The form name std::string _FormName; // The form name std::string _UserData; // Do the modification virtual bool doAction (CGeorgesEditDoc &doc, bool redo, bool &modified, bool firstTime); }; // Vector string modification action class CActionStringVector : public IAction { public: // Constructor CActionStringVector (IAction::TTypeAction type, const std::vector &stringVector, CGeorgesEditDoc &doc, const char *formName, uint selId, uint slot); protected: // Old and new value std::vector _Value[2]; // The form name std::string _FormName; // Do the modification virtual bool doAction (CGeorgesEditDoc &doc, bool redo, bool &modified, bool firstTime); }; // Vector vector string modification action class CActionStringVectorVector : public IAction { public: // Constructor CActionStringVectorVector (IAction::TTypeAction type, const std::vector > &stringVectorVector, CGeorgesEditDoc &doc, uint selId, uint slot); protected: // Old and new value std::vector > _Value[2]; // Do the modification virtual bool doAction (CGeorgesEditDoc &doc, bool redo, bool &modified, bool firstTime); }; // Vector vector string modification action class CActionBuffer : public IAction { public: // Constructor CActionBuffer (IAction::TTypeAction type, const uint8 *buffer, uint bufferSize, CGeorgesEditDoc &doc, const char *formName, const char *userData, uint selId, uint slot); protected: // Old and new value std::vector _Value[2]; // The form name std::string _FormName; // User data std::string _UserData; // Do the modification virtual bool doAction (CGeorgesEditDoc &doc, bool redo, bool &modified, bool firstTime); }; #endif GEORGES_EDIT_ACTION_H