|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "WellPoleLib/TrackGroup.h"
|
|
|
|
|
|
#include "WellPoleLib/WellPole.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "ActionWellTrackDeleteItem.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CActionWellTrackDeleteItem::CActionWellTrackDeleteItem(CSigmaDoc* ppDoc, UINT actionType, TRACKLIST& delTrackList)
|
|
|
|
|
|
: CActionItem(ppDoc, actionType)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bDeleted = false;
|
|
|
|
|
|
m_bPerformOperation = false;
|
|
|
|
|
|
|
|
|
|
|
|
GetTrackInfo(delTrackList);
|
|
|
|
|
|
|
|
|
|
|
|
RemoveOperation();//ִ<><D6B4>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>Ͳ<EFBFBD>Ҫʹ<D2AA><CAB9>itemSingelWell<6C>е<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>
|
|
|
|
|
|
//PerformOperation();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CActionWellTrackDeleteItem::~CActionWellTrackDeleteItem(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_bDeleted == true)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int ii =0; ii< int(m_DelTrackInfos.size()); ii++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_DelTrackInfos[ii].pDelTrack)
|
|
|
|
|
|
delete m_DelTrackInfos[ii].pDelTrack;
|
|
|
|
|
|
if (m_DelTrackInfos[ii].pParentGroup)
|
|
|
|
|
|
delete m_DelTrackInfos[ii].pParentGroup;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_DelTrackInfos.clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CActionWellTrackDeleteItem::Undo(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
CActionItem::Undo();
|
|
|
|
|
|
AddOperation();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CActionWellTrackDeleteItem::Redo(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
CActionItem::Redo();
|
|
|
|
|
|
RemoveOperation();
|
|
|
|
|
|
}
|
|
|
|
|
|
void CActionWellTrackDeleteItem::Finish()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!m_bPerformOperation)
|
|
|
|
|
|
RemoveOperation();
|
|
|
|
|
|
CActionItem::Finish();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CActionWellTrackDeleteItem::AddOperation()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bDeleted = false;
|
|
|
|
|
|
|
|
|
|
|
|
if (m_DelTrackInfos.size() < 1)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
for (int ii = 0; ii < int(m_DelTrackInfos.size()); ii++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_DelTrackInfos[ii].pParentGroup)
|
|
|
|
|
|
{
|
|
|
|
|
|
CTrackObj* pBrotherTrack = NULL;
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵܵ<D6B5><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>丸<EFBFBD><E4B8B8><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ɾ<EFBFBD><C9BE>
|
|
|
|
|
|
if ((*m_DelTrackInfos[ii].groupTrackTrackList.begin()) == m_DelTrackInfos[ii].pDelTrack)
|
|
|
|
|
|
{
|
|
|
|
|
|
pBrotherTrack = *m_DelTrackInfos[ii].groupTrackTrackList.end();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
pBrotherTrack = *m_DelTrackInfos[ii].groupTrackTrackList.begin();
|
|
|
|
|
|
CTrackGroup* ppTrackG = (CTrackGroup*)pBrotherTrack->GetParent();
|
|
|
|
|
|
ppTrackG->RemoveTrack(ppTrackG);
|
|
|
|
|
|
|
|
|
|
|
|
m_DelTrackInfos[ii].pParentGroup->GetTrackList().clear();
|
|
|
|
|
|
m_DelTrackInfos[ii].pParentGroup->GetTrackList().assign(m_DelTrackInfos[ii].groupTrackTrackList.begin(), m_DelTrackInfos[ii].groupTrackTrackList.end());
|
|
|
|
|
|
ppTrackG = (CTrackGroup*)m_DelTrackInfos[ii].pParentGroup->GetParent();
|
|
|
|
|
|
ppTrackG->AddTarckToPos(m_DelTrackInfos[ii].m_iDelParentGroupPos, m_DelTrackInfos[ii].pParentGroup);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
CTrackGroup* ppTrackG = (CTrackGroup*)m_DelTrackInfos[ii].pDelTrack->GetParent();
|
|
|
|
|
|
ppTrackG->AddTarckToPos(m_DelTrackInfos[ii].m_iDelTrackPos,m_DelTrackInfos[ii].pDelTrack);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CTrackGroup* pTrackG = (CTrackGroup*)(m_DelTrackInfos[0].pDelTrack->GetParent());
|
|
|
|
|
|
CWellPole* pWell = pTrackG->GetWell();
|
|
|
|
|
|
CPoint2D ptf = pWell->GetAnchorPoint(); //->GetPos().TopLeft();
|
|
|
|
|
|
pWell->CalculateSize(ptf);
|
|
|
|
|
|
}
|
|
|
|
|
|
void CActionWellTrackDeleteItem::RemoveOperation()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bDeleted = true;
|
|
|
|
|
|
|
|
|
|
|
|
if (m_DelTrackInfos.size() < 1)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
for (int ii = 0; ii < int(m_DelTrackInfos.size()); ii++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_DelTrackInfos[ii].pParentGroup)
|
|
|
|
|
|
{
|
|
|
|
|
|
CTrackGroup* ppTrackG = (CTrackGroup*)m_DelTrackInfos[ii].pParentGroup;
|
|
|
|
|
|
ppTrackG->RemoveTrack(m_DelTrackInfos[ii].pParentGroup);
|
|
|
|
|
|
m_DelTrackInfos[ii].pParentGroup->GetTrackList().clear(); //<2F><><EFBFBD>߸<EFBFBD><DFB8><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
CTrackObj* pBrotherTrack = NULL;
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵܵ<D6B5><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>븸<EFBFBD><EBB8B8><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
if ((*m_DelTrackInfos[ii].groupTrackTrackList.begin()) == m_DelTrackInfos[ii].pDelTrack)
|
|
|
|
|
|
{
|
|
|
|
|
|
pBrotherTrack = *m_DelTrackInfos[ii].groupTrackTrackList.end();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
pBrotherTrack = *m_DelTrackInfos[ii].groupTrackTrackList.begin();
|
|
|
|
|
|
|
|
|
|
|
|
ppTrackG->AddTarckToPos(m_DelTrackInfos[ii].m_iDelParentGroupPos, pBrotherTrack);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
CTrackGroup* ppTrackG =(CTrackGroup*)m_DelTrackInfos[ii].pDelTrack->GetParent();
|
|
|
|
|
|
ppTrackG->RemoveTrack(m_DelTrackInfos[ii].pDelTrack);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
CTrackGroup* pTrackG = (CTrackGroup*)(m_DelTrackInfos[0].pDelTrack->GetParent());
|
|
|
|
|
|
CWellPole* pWell = pTrackG->GetWell();
|
|
|
|
|
|
CPoint2D ptf = pWell->GetAnchorPoint(); //->GetPos().TopLeft();
|
|
|
|
|
|
pWell->CalculateSize(ptf);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CActionWellTrackDeleteItem::GetTrackInfo(TRACKLIST& delTrackList)
|
|
|
|
|
|
{
|
|
|
|
|
|
DELTRACKINFO delTrackInfo;
|
|
|
|
|
|
|
|
|
|
|
|
TRACKLIST::iterator it = delTrackList.begin();
|
|
|
|
|
|
for (; it != delTrackList.end(); it++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CTrackGroup* pTrackG = (CTrackGroup*)(*it)->GetParent();
|
|
|
|
|
|
|
|
|
|
|
|
if (pTrackG->GetTrackList().size() == 2 && pTrackG->GetType() != KEP_WELL)
|
|
|
|
|
|
{//<2F><>ʱɾ<CAB1><C9BE>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>丸<EFBFBD><E4B8B8><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵܵ<D6B5><DCB5>油<EFBFBD><E6B2B9><EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>Ϊ,<2C><><EFBFBD>˼<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
delTrackInfo.pDelTrack = *it;
|
|
|
|
|
|
delTrackInfo.m_iDelTrackPos = pTrackG->GetTrackPosInList(*it);
|
|
|
|
|
|
delTrackInfo.pParentGroup = pTrackG;
|
|
|
|
|
|
|
|
|
|
|
|
CTrackGroup* ppTrackG = (CTrackGroup*)pTrackG->GetParent();
|
|
|
|
|
|
delTrackInfo.m_iDelParentGroupPos = ppTrackG->GetTrackPosInList(pTrackG);
|
|
|
|
|
|
delTrackInfo.groupTrackTrackList.clear();
|
|
|
|
|
|
delTrackInfo.groupTrackTrackList.assign(pTrackG->GetTrackList().begin(), pTrackG->GetTrackList().end());//<2F><><EFBFBD><EFBFBD><EFBFBD>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
m_DelTrackInfos.push_back(delTrackInfo);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
delTrackInfo.pDelTrack = *it;
|
|
|
|
|
|
delTrackInfo.m_iDelTrackPos = pTrackG->GetTrackPosInList(*it);
|
|
|
|
|
|
delTrackInfo.pParentGroup = NULL;
|
|
|
|
|
|
delTrackInfo.m_iDelParentGroupPos = -1;
|
|
|
|
|
|
delTrackInfo.groupTrackTrackList.clear();
|
|
|
|
|
|
|
|
|
|
|
|
m_DelTrackInfos.push_back(delTrackInfo);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void NAction::CActionWellTrackDeleteItem::accept(CActionVisitor& visitor)
|
|
|
|
|
|
{
|
|
|
|
|
|
//visitor.visit(*this);
|
|
|
|
|
|
}
|