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.

58 lines
1.2 KiB
C

1 month ago
#pragma once
#pragma once
#include "actionitem.h"
#include <set>
#include <memory>
namespace NAction
{
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Action<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>γ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Action<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>и<EFBFBD> CActionListItem ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ж<EFBFBD>Ϊһ<EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD>԰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD> Action <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class CActionComboItem : public CActionItem
{
public:
CActionComboItem();
CActionComboItem(CSigmaDoc* ppDoc, UINT actionType);
~CActionComboItem();
std::string GetActionName() const override
{
return typeid(*this).name();
}
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ACtion<EFBFBD><EFBFBD>ע<EFBFBD>action <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>󣬸<EFBFBD> action <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD>ӹܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ͷţ<EFBFBD>ͬʱ<EFBFBD><EFBFBD>Ҫ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> action<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> double free
*
* \param action
*/
void AddAction(CActionItem* action);
/**
* <EFBFBD>Ƴ<EFBFBD>ָ<EFBFBD><EFBFBD> ACtion
*
* \param action
*/
void RemoveAction(CActionItem* action);
int GetCount() const;
void Clear();
void Undo(void) override;
void Redo(void) override;
void accept(CActionVisitor& visitor) override;
friend class BlobSerializer;
private:
std::list<std::shared_ptr<CActionItem>>::const_iterator FindAction(CActionItem* action) const;
std::list<std::shared_ptr<CActionItem>> m_actionItems;
std::set<CActionItem*> m_cache;
};
}