#pragma once #include "ActionItem.h" #include "WellPoleLib/WellBaseObj.h" #include "WellPoleLib/WellClassObjGroup.h" #include "WellPoleLib/TrackObj.h" #include "WellPoleLib/TrackGroup.h" #include "../Visitor.h" namespace NAction { typedef struct _delTrackInfo { _delTrackInfo(){ pDelTrack = NULL; pParentGroup = NULL; m_iDelTrackPos = m_iDelParentGroupPos = -1; }; CTrackObj *pDelTrack; int m_iDelTrackPos; CTrackGroup* pParentGroup; //当此父对象指针为空时,表示是只是删除单道,不影响父亲道。 int m_iDelParentGroupPos; TRACKLIST groupTrackTrackList; } DELTRACKINFO; class CActionWellTrackDeleteItem : public CActionItem { public: CActionWellTrackDeleteItem(CSigmaDoc* ppDoc, UINT actionType, TRACKLIST& delTrackList); virtual ~CActionWellTrackDeleteItem(void); std::string GetActionName() const override { return typeid(*this).name(); } virtual void accept(CActionVisitor& visitor); virtual void Undo(void); virtual void Redo(void); virtual void Finish(); virtual void AddOperation(); virtual void RemoveOperation(); BOOL m_bPerformOperation; protected: bool m_bDeleted; //virtual void PerformOperation(); void GetTrackInfo(TRACKLIST& AddTrackList); //std::vector m_iTracksPos; //TRACKLIST m_DelTrackList; std::vector< DELTRACKINFO>m_DelTrackInfos; }; };