You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
880 B
C++

#pragma once
#include "actionitem.h"
namespace NAction
{
class CActionAddItem :
public CActionItem
{
public:
CActionAddItem();
CActionAddItem(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list);
CActionAddItem(CSigmaDoc * ppDoc, UINT actionType, COne* pOne);
virtual ~CActionAddItem(void);
std::string GetActionName() const override
{
return typeid(*this).name();
}
bool IsOwnCOnes() const override
{
return true;
}
virtual void Undo(void);
virtual void Redo(void);
virtual void Finish();
void accept(CActionVisitor& visitor) override;
// FIXME: 这是一种丑陋的访问成员变量的方式,不过暂时想不到更好的办法
friend class BlobSerializer;
protected:
std::vector<long> m_pos;
bool m_bAdded;
virtual void PerformOperation();
void AddOperation(void);
void RemoveOperation(void);
int CreatePos(void); //为了在REDO时可以正确插入到合适位置
};
};