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.
79 lines
1.4 KiB
C++
79 lines
1.4 KiB
C++
#include "stdafx.h"
|
|
#include "ActionComboItem.h"
|
|
#include "Visitor.h"
|
|
#include <algorithm>
|
|
|
|
NAction::CActionComboItem::CActionComboItem()
|
|
: CActionItem(nullptr, 0)
|
|
{
|
|
}
|
|
|
|
NAction::CActionComboItem::CActionComboItem(CSigmaDoc* ppDoc, UINT actionType)
|
|
: CActionItem(ppDoc, actionType)
|
|
{
|
|
}
|
|
|
|
NAction::CActionComboItem::~CActionComboItem()
|
|
{
|
|
}
|
|
|
|
void NAction::CActionComboItem::AddAction(CActionItem* action)
|
|
{
|
|
if (action == nullptr)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_actionItems.emplace_back(action);
|
|
}
|
|
|
|
void NAction::CActionComboItem::RemoveAction(CActionItem* action)
|
|
{
|
|
auto it = FindAction(action);
|
|
if (it != m_actionItems.end())
|
|
{
|
|
m_actionItems.erase(it);
|
|
}
|
|
}
|
|
|
|
int NAction::CActionComboItem::GetCount() const
|
|
{
|
|
return (int)m_actionItems.size();
|
|
}
|
|
|
|
void NAction::CActionComboItem::Clear()
|
|
{
|
|
m_actionItems.clear();
|
|
}
|
|
|
|
void NAction::CActionComboItem::Undo(void)
|
|
{
|
|
for (auto& pActionItem : m_actionItems)
|
|
{
|
|
pActionItem->Undo();
|
|
}
|
|
}
|
|
|
|
void NAction::CActionComboItem::Redo(void)
|
|
{
|
|
for (auto &pActionItem : m_actionItems)
|
|
{
|
|
pActionItem->Redo();
|
|
}
|
|
}
|
|
|
|
void NAction::CActionComboItem::accept(CActionVisitor& visitor)
|
|
{
|
|
visitor.visit(*this);
|
|
}
|
|
|
|
std::list<std::shared_ptr<CActionItem>>::const_iterator NAction::CActionComboItem::FindAction(CActionItem* action) const
|
|
{
|
|
auto compareFun = [action](const std::shared_ptr<CActionItem> ptr)
|
|
{
|
|
return ptr.get() == action;
|
|
};
|
|
|
|
return std::find_if(m_actionItems.begin(), m_actionItems.end(), compareFun);
|
|
}
|