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.
kev/Drawer/Module/GeoSigmaDraw/ActionComboItem.cpp

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);
}