736 lines
20 KiB
C++
736 lines
20 KiB
C++
|
|
// ActionPaneView.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "EtActionTool.h"
|
|||
|
|
#include "ActionPaneView.h"
|
|||
|
|
#include "UserMessage.h"
|
|||
|
|
#include "ActionBase.h"
|
|||
|
|
#include "GlobalValue.h"
|
|||
|
|
#include "AddActionDlg.h"
|
|||
|
|
#include "resource.h"
|
|||
|
|
#include "MainFrm.h"
|
|||
|
|
#include "PaneDefine.h"
|
|||
|
|
#include "SignalManager.h"
|
|||
|
|
#include "ActionElement.h"
|
|||
|
|
#include "ActionSignal.h"
|
|||
|
|
#include "../Common/Utility/CSVWriter.h"
|
|||
|
|
#include "SignalListViewDlg.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CActionPaneView
|
|||
|
|
|
|||
|
|
IMPLEMENT_DYNCREATE(CActionPaneView, CFormView)
|
|||
|
|
|
|||
|
|
CActionPaneView::CActionPaneView()
|
|||
|
|
: CFormView(CActionPaneView::IDD)
|
|||
|
|
{
|
|||
|
|
m_bActivate = false;
|
|||
|
|
|
|||
|
|
m_pContextMenu = new CMenu;
|
|||
|
|
m_pContextMenu->LoadMenu( IDR_CONTEXT );
|
|||
|
|
|
|||
|
|
m_hRootItem = 0;
|
|||
|
|
/*
|
|||
|
|
m_pDragImage = NULL;
|
|||
|
|
m_bDragging = false;
|
|||
|
|
m_hDrag = 0;
|
|||
|
|
m_hDrop = 0;
|
|||
|
|
*/
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CActionPaneView::~CActionPaneView()
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pContextMenu );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::DoDataExchange(CDataExchange* pDX)
|
|||
|
|
{
|
|||
|
|
CFormView::DoDataExchange(pDX);
|
|||
|
|
DDX_Control(pDX, IDC_TREE1, m_TreeCtrl);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BEGIN_MESSAGE_MAP(CActionPaneView, CFormView)
|
|||
|
|
ON_WM_SIZE()
|
|||
|
|
ON_WM_ERASEBKGND()
|
|||
|
|
ON_MESSAGE( UM_REFRESH_PANE, OnRefresh )
|
|||
|
|
ON_MESSAGE( UM_ACTION_PANE_ADD, OnAdd )
|
|||
|
|
ON_WM_CREATE()
|
|||
|
|
ON_COMMAND(ID_ACTION_REMOVE_ELEMENT, &CActionPaneView::OnActionRemoveElement)
|
|||
|
|
ON_COMMAND(ID_ACTION_ADD_ELEMENT, &CActionPaneView::OnActionAddElement)
|
|||
|
|
ON_COMMAND(ID_ACTION_CLONE_ELEMENT, &CActionPaneView::OnActionCloneElement)
|
|||
|
|
ON_UPDATE_COMMAND_UI(ID_ACTION_ADD_ELEMENT, &CActionPaneView::OnUpdateActionAddElement)
|
|||
|
|
ON_UPDATE_COMMAND_UI(ID_ACTION_REMOVE_ELEMENT, &CActionPaneView::OnUpdateActionRemoveElement)
|
|||
|
|
ON_UPDATE_COMMAND_UI(ID_ACTION_CLONE_ELEMENT, &CActionPaneView::OnUpdateActionCloneElement)
|
|||
|
|
ON_WM_CONTEXTMENU()
|
|||
|
|
ON_COMMAND(ID_ACTION_ADD_DLG, &CActionPaneView::OnActionAddDlg)
|
|||
|
|
ON_UPDATE_COMMAND_UI(ID_ACTION_ADD_DLG, &CActionPaneView::OnUpdateActionAddDlg)
|
|||
|
|
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CActionPaneView::OnTvnSelchangedTree1)
|
|||
|
|
ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_TREE1, &CActionPaneView::OnTvnBeginlabeleditTree1)
|
|||
|
|
ON_NOTIFY(TVN_ENDLABELEDIT, IDC_TREE1, &CActionPaneView::OnTvnEndlabeleditTree1)
|
|||
|
|
/*
|
|||
|
|
ON_WM_MOUSEMOVE()
|
|||
|
|
ON_WM_LBUTTONUP()
|
|||
|
|
ON_NOTIFY(TVN_BEGINDRAG, IDC_TREE1, &CActionPaneView::OnTvnBegindragTree1)
|
|||
|
|
*/
|
|||
|
|
ON_COMMAND(ID_ACTIONPANECONTEXT_EXPORTEXCEL, &CActionPaneView::OnActionpanecontextExportexcel)
|
|||
|
|
END_MESSAGE_MAP()
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CActionPaneView <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
void CActionPaneView::AssertValid() const
|
|||
|
|
{
|
|||
|
|
CFormView::AssertValid();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifndef _WIN32_WCE
|
|||
|
|
void CActionPaneView::Dump(CDumpContext& dc) const
|
|||
|
|
{
|
|||
|
|
CFormView::Dump(dc);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
#endif //_DEBUG
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CActionPaneView <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnInitialUpdate()
|
|||
|
|
{
|
|||
|
|
CFormView::OnInitialUpdate();
|
|||
|
|
|
|||
|
|
// TODO: <20><><EFBFBD> Ư<><C6AF>ȭ<EFBFBD><C8AD> <20>ڵ带 <20>߰<EFBFBD> <20><>/<2F>Ǵ<EFBFBD> <20>⺻ Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
|
|||
|
|
if( m_bActivate == true ) return;
|
|||
|
|
m_bActivate = true;
|
|||
|
|
|
|||
|
|
m_TreeCtrl.EnableMultiSelect();
|
|||
|
|
|
|||
|
|
CBitmap bitmap;
|
|||
|
|
bitmap.LoadBitmap( IDB_ACTIONICON );
|
|||
|
|
|
|||
|
|
m_ImageList.Create( 16, 16, ILC_COLOR24|ILC_MASK, 4, 1 );
|
|||
|
|
m_ImageList.Add( &bitmap, RGB(0,255,0) );
|
|||
|
|
|
|||
|
|
m_TreeCtrl.SetImageList( &m_ImageList, TVSIL_NORMAL );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnSize(UINT nType, int cx, int cy)
|
|||
|
|
{
|
|||
|
|
CFormView::OnSize(nType, cx, cy);
|
|||
|
|
|
|||
|
|
// TODO: <20><><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
int nTop = 0;
|
|||
|
|
if( m_wndToolBar.GetSafeHwnd() )
|
|||
|
|
{
|
|||
|
|
CSize sz = m_wndToolBar.CalcDockingLayout(cx, LM_HORZDOCK|LM_HORZ | LM_COMMIT);
|
|||
|
|
|
|||
|
|
m_wndToolBar.MoveWindow(0, 0, cx, sz.cy);
|
|||
|
|
m_wndToolBar.Invalidate(FALSE);
|
|||
|
|
nTop += sz.cy;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( m_TreeCtrl ) {
|
|||
|
|
m_TreeCtrl.MoveWindow( 0, nTop, cx, cy - nTop );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL CActionPaneView::OnEraseBkgnd(CDC* pDC)
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD> <20><>/<2F>Ǵ<EFBFBD> <20>⺻<EFBFBD><E2BABB><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
|
|||
|
|
|
|||
|
|
return FALSE;
|
|||
|
|
// return CFormView::OnEraseBkgnd(pDC);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LRESULT CActionPaneView::OnRefresh( WPARAM wParam, LPARAM lParam )
|
|||
|
|
{
|
|||
|
|
CActionBase *pBase = (CActionBase *)wParam;
|
|||
|
|
|
|||
|
|
if( pBase ) {
|
|||
|
|
SendMessage( UM_ACTION_PANE_ADD, (WPARAM)pBase );
|
|||
|
|
|
|||
|
|
for( DWORD i=0; i<pBase->GetChildCount(); i++ ) {
|
|||
|
|
CActionBase *pChild = pBase->GetChild(i);
|
|||
|
|
SendMessage( UM_ACTION_PANE_ADD, (WPARAM)pChild );
|
|||
|
|
}
|
|||
|
|
// m_TreeCtrl.SortChildren( pBase->GetTreeItemID() );
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
m_TreeCtrl.DeleteAllItems();
|
|||
|
|
m_hRootItem = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return S_OK;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LRESULT CActionPaneView::OnAdd( WPARAM wParam, LPARAM lParam )
|
|||
|
|
{
|
|||
|
|
CActionBase *pBase = (CActionBase *)wParam;
|
|||
|
|
int nIconID = 0;
|
|||
|
|
switch( pBase->GetType() ) {
|
|||
|
|
case CActionBase::OBJECT:
|
|||
|
|
m_hRootItem = 0;
|
|||
|
|
m_TreeCtrl.DeleteAllItems();
|
|||
|
|
nIconID = 0;
|
|||
|
|
break;
|
|||
|
|
case CActionBase::ELEMENT:
|
|||
|
|
nIconID = 2;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
m_TreeCtrl.SetImageList( &m_ImageList, TVSIL_NORMAL );
|
|||
|
|
HTREEITEM hParent = ( pBase->GetParent() ) ? pBase->GetParent()->GetTreeItemID() : NULL ;
|
|||
|
|
HTREEITEM hti = m_TreeCtrl.InsertItem( pBase->GetName(), nIconID, nIconID+1, hParent ? hParent : 0 );
|
|||
|
|
if( hParent == NULL ) m_hRootItem = hti;
|
|||
|
|
pBase->SetTreeCtrl( &m_TreeCtrl );
|
|||
|
|
pBase->SetTreeItemID( hti );
|
|||
|
|
|
|||
|
|
m_TreeCtrl.Expand( hParent, TVE_EXPAND );
|
|||
|
|
m_TreeCtrl.SelectItems( hti, hti, TRUE );
|
|||
|
|
m_TreeCtrl.FocusItem( hti );
|
|||
|
|
|
|||
|
|
m_TreeCtrl.SortChildren( hParent );
|
|||
|
|
return S_OK;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::CalcSelectItemList()
|
|||
|
|
{
|
|||
|
|
m_SelectItemList.RemoveAll();
|
|||
|
|
m_TreeCtrl.GetSelectedList( m_SelectItemList );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CActionPaneView::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|||
|
|
{
|
|||
|
|
if (CFormView::OnCreate(lpCreateStruct) == -1)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
// TODO: <20><><EFBFBD> Ư<><C6AF>ȭ<EFBFBD><C8AD> <20>ۼ<EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
m_wndToolBar.CreateToolBar(WS_VISIBLE|WS_CHILD|CBRS_TOOLTIPS, this);
|
|||
|
|
m_wndToolBar.LoadToolBar(IDR_ACTION_TOOLBAR);
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnActionRemoveElement()
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext(p);
|
|||
|
|
CGlobalValue::GetInstance().RemoveElement( hti );
|
|||
|
|
m_TreeCtrl.DeleteItem( hti );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnActionAddElement()
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
CString szName = CGlobalValue::GetInstance().GetUniqueName( CActionBase::ELEMENT );
|
|||
|
|
|
|||
|
|
CGlobalValue::GetInstance().AddElement( szName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnActionCloneElement()
|
|||
|
|
{
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
if( m_SelectItemList.GetCount() != 1 ) return;
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
CString szCloneName;
|
|||
|
|
|
|||
|
|
CActionBase *pRoot = CGlobalValue::GetInstance().GetRootObject();
|
|||
|
|
bool bFirst = true;
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext(p);
|
|||
|
|
CActionBase *pBase = CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti );
|
|||
|
|
if( pBase == NULL ) continue;
|
|||
|
|
|
|||
|
|
int nCount = 0;
|
|||
|
|
while(1) {
|
|||
|
|
nCount++;
|
|||
|
|
szCloneName.Format( "%s_Clone[%d]", pBase->GetName(), nCount );
|
|||
|
|
|
|||
|
|
if( CGlobalValue::GetInstance().IsSameName( pRoot, szCloneName ) == FALSE ) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CGlobalValue::GetInstance().AddElement( szCloneName );
|
|||
|
|
CActionBase *pClone = CGlobalValue::GetInstance().GetObjectFromName( pRoot, szCloneName );
|
|||
|
|
|
|||
|
|
*(CActionElement*)pClone = *(CActionElement*)pBase;
|
|||
|
|
|
|||
|
|
if( bFirst ) {
|
|||
|
|
m_TreeCtrl.SelectItems( pClone->GetTreeItemID(), pClone->GetTreeItemID(), TRUE );
|
|||
|
|
m_TreeCtrl.FocusItem( hti );
|
|||
|
|
bFirst = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnActionAddDlg()
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
CAddActionDlg Dlg;
|
|||
|
|
if( Dlg.DoModal() != IDOK ) return;
|
|||
|
|
|
|||
|
|
switch( Dlg.m_nType ) {
|
|||
|
|
case 0: // Define String
|
|||
|
|
CGlobalValue::GetInstance().AddElement( Dlg.GetResultString() );
|
|||
|
|
break;
|
|||
|
|
case 1: // Package
|
|||
|
|
{
|
|||
|
|
int nIndex = CSignalManager::GetInstance().GetDefineCategoryIndex( Dlg.GetResultString() );
|
|||
|
|
if( nIndex == -1 ) break;
|
|||
|
|
|
|||
|
|
for( DWORD i=0; i<CSignalManager::GetInstance().GetDefineStringCount( (DWORD)nIndex ); i++ ) {
|
|||
|
|
CString szStr = CSignalManager::GetInstance().GetDefineString( (DWORD)nIndex, i );
|
|||
|
|
CGlobalValue::GetInstance().AddElement( szStr );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 2: // Custom
|
|||
|
|
CGlobalValue::GetInstance().AddElement( Dlg.GetResultString() );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnUpdateActionAddElement(CCmdUI *pCmdUI)
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ UI ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
pCmdUI->Enable( CGlobalValue::GetInstance().IsOpenAction() );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnUpdateActionRemoveElement(CCmdUI *pCmdUI)
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ UI ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
BOOL bEnable = FALSE;
|
|||
|
|
if( CGlobalValue::GetInstance().IsOpenAction() ) bEnable = TRUE;
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
CActionBase *pRoot = CGlobalValue::GetInstance().GetRootObject();
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext(p);
|
|||
|
|
if( !CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti ) ||
|
|||
|
|
CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti )->GetType() != CActionBase::ELEMENT ) {
|
|||
|
|
bEnable = FALSE;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pCmdUI->Enable( bEnable );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnUpdateActionCloneElement(CCmdUI *pCmdUI)
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ UI ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
pCmdUI->Enable( ( m_SelectItemList.GetCount() == 1 ) ? TRUE : FALSE );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnUpdateActionAddDlg(CCmdUI *pCmdUI)
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ UI ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
pCmdUI->Enable( CGlobalValue::GetInstance().IsOpenAction() );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
CMenu *pMenu = m_pContextMenu->GetSubMenu(0);
|
|||
|
|
|
|||
|
|
UINT nEnable;
|
|||
|
|
if( CGlobalValue::GetInstance().IsOpenAction() )
|
|||
|
|
nEnable = MF_BYCOMMAND | MF_ENABLED;
|
|||
|
|
else nEnable = MF_BYCOMMAND | MF_DISABLED | MF_GRAYED;
|
|||
|
|
|
|||
|
|
pMenu->EnableMenuItem( ID_ACTION_ADD_ELEMENT, nEnable );
|
|||
|
|
pMenu->EnableMenuItem( ID_ACTION_REMOVE_ELEMENT, nEnable );
|
|||
|
|
pMenu->EnableMenuItem( ID_ACTION_ADD_DLG, nEnable );
|
|||
|
|
|
|||
|
|
if( m_SelectItemList.GetCount() == 1 )
|
|||
|
|
pMenu->EnableMenuItem( ID_ACTION_CLONE_ELEMENT, MF_BYCOMMAND | MF_ENABLED );
|
|||
|
|
else
|
|||
|
|
pMenu->EnableMenuItem( ID_ACTION_CLONE_ELEMENT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
|
|||
|
|
|
|||
|
|
pMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
|
|||
|
|
}
|
|||
|
|
void CActionPaneView::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
|
|||
|
|
{
|
|||
|
|
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
|
|||
|
|
// TODO: <20><><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
*pResult = 0;
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD> <20>۾<EFBFBD> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҽ<EFBFBD><D2BD><EFBFBD> */
|
|||
|
|
|
|||
|
|
CActionBase *pRoot = CGlobalValue::GetInstance().GetRootObject();
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext( p );
|
|||
|
|
CActionBase *pBase = CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti );
|
|||
|
|
if( pBase ) pBase->SetFocus( false );
|
|||
|
|
}
|
|||
|
|
CGlobalValue::GetInstance().SetControlObject( NULL );
|
|||
|
|
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext( p );
|
|||
|
|
CActionBase *pBase = CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti );
|
|||
|
|
if( pBase ) pBase->SetFocus( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int nCount = (int)m_SelectItemList.GetCount();
|
|||
|
|
if( nCount == 0 ) {
|
|||
|
|
CWnd *pWnd = GetPaneWnd( PROPERTY_PANE );
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE, 0, NULL );
|
|||
|
|
pWnd = GetPaneWnd( EVENT_PANE );
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE, NULL );
|
|||
|
|
}
|
|||
|
|
else if( nCount > 1 ) {
|
|||
|
|
CWnd *pWnd = GetPaneWnd( PROPERTY_PANE );
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE );
|
|||
|
|
pWnd = GetPaneWnd( EVENT_PANE );
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE );
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
HTREEITEM hti = m_SelectItemList.GetHead();
|
|||
|
|
CString szName = m_TreeCtrl.GetItemText( m_SelectItemList.GetHead() );
|
|||
|
|
CActionBase *pBase = CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti );
|
|||
|
|
|
|||
|
|
CGlobalValue::GetInstance().SetControlObject( pBase );
|
|||
|
|
pBase->InitPropertyInfo();
|
|||
|
|
|
|||
|
|
CWnd *pWnd = GetPaneWnd( PROPERTY_PANE );
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE, 0, (LPARAM)pBase );
|
|||
|
|
|
|||
|
|
pWnd = GetPaneWnd( EVENT_PANE );
|
|||
|
|
switch( pBase->GetType() ) {
|
|||
|
|
case CActionBase::OBJECT:
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE, NULL );
|
|||
|
|
break;
|
|||
|
|
case CActionBase::ELEMENT:
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE, (WPARAM)pBase );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//CFile pStream;
|
|||
|
|
|
|||
|
|
//TCHAR szFileter[] = _T("Excel File (*.csv) | *.csv|All File (*.*)|*.*||");
|
|||
|
|
//CFileDialog dlg( FALSE, _T("csv"), _T("*.csv"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING, szFileter, NULL );
|
|||
|
|
|
|||
|
|
//CString str;
|
|||
|
|
|
|||
|
|
//if( dlg.DoModal() == IDOK )
|
|||
|
|
//{
|
|||
|
|
// MessageBox("Test", "Success", MB_OK);
|
|||
|
|
// str = dlg.GetPathName();
|
|||
|
|
//}
|
|||
|
|
//else
|
|||
|
|
//{
|
|||
|
|
// MessageBox("Test", "Failed", MB_OK);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//if(! pStream.Open( str.GetBuffer(), CFile::modeReadWrite ) )
|
|||
|
|
//{
|
|||
|
|
// AfxMessageBox(_T("could not open file"));
|
|||
|
|
// return;
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//int fsize = (int)pStream.GetLength();
|
|||
|
|
|
|||
|
|
//pStream.Read( str.GetBuffer(fsize), fsize);
|
|||
|
|
|
|||
|
|
//MessageBox( str.GetBuffer(), "<22><><EFBFBD><EFBFBD><EFBFBD>༮<EFBFBD><E0BCAE>", MB_OK);
|
|||
|
|
|
|||
|
|
//pStream.Close();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnTvnBeginlabeleditTree1(NMHDR *pNMHDR, LRESULT *pResult)
|
|||
|
|
{
|
|||
|
|
LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
|
|||
|
|
// TODO: <20><><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
*pResult = 0;
|
|||
|
|
|
|||
|
|
m_szPrevLabelString = pTVDispInfo->item.pszText;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnTvnEndlabeleditTree1(NMHDR *pNMHDR, LRESULT *pResult)
|
|||
|
|
{
|
|||
|
|
LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
|
|||
|
|
// TODO: <20><><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
*pResult = 0;
|
|||
|
|
|
|||
|
|
if( pTVDispInfo->item.pszText == NULL ) return;
|
|||
|
|
|
|||
|
|
CActionBase *pRoot = CGlobalValue::GetInstance().GetRootObject();
|
|||
|
|
if( CGlobalValue::GetInstance().GetObjectFromName( pRoot, CString( pTVDispInfo->item.pszText ) ) ) return;
|
|||
|
|
|
|||
|
|
CActionBase *pBase = CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, pTVDispInfo->item.hItem );
|
|||
|
|
if( pBase == NULL ) return;
|
|||
|
|
if( pBase->GetType() != CActionBase::ELEMENT ) return;
|
|||
|
|
|
|||
|
|
pBase->SetName( CString( pTVDispInfo->item.pszText ) );
|
|||
|
|
m_TreeCtrl.SetItemText( pTVDispInfo->item.hItem, pTVDispInfo->item.pszText );
|
|||
|
|
|
|||
|
|
CActionBase *pParent = pBase->GetParent();
|
|||
|
|
for( DWORD i=0; i<pParent->GetChildCount(); i++ ) {
|
|||
|
|
((CActionElement*)pParent->GetChild(i))->ChangeNextActionName( m_szPrevLabelString, pTVDispInfo->item.pszText );
|
|||
|
|
}
|
|||
|
|
pBase->InitPropertyInfo();
|
|||
|
|
CWnd *pWnd = GetPaneWnd( PROPERTY_PANE );
|
|||
|
|
if( pWnd ) pWnd->SendMessage( UM_REFRESH_PANE, 0, (LPARAM)pBase );
|
|||
|
|
|
|||
|
|
m_TreeCtrl.SortChildren( pRoot->GetTreeItemID() );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
void CActionPaneView::OnTvnBegindragTree1(NMHDR *pNMHDR, LRESULT *pResult)
|
|||
|
|
{
|
|||
|
|
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
|
|||
|
|
|
|||
|
|
// TODO: Add your control notification handler code here
|
|||
|
|
if( m_TreeCtrl.GetParentItem(pNMTreeView->itemNew.hItem) == NULL ) return;
|
|||
|
|
|
|||
|
|
m_hDrag = pNMTreeView->itemNew.hItem;
|
|||
|
|
|
|||
|
|
m_pDragImage = m_TreeCtrl.CreateDragImage( m_hDrag );
|
|||
|
|
|
|||
|
|
m_bDragging = true;
|
|||
|
|
m_pDragImage->BeginDrag( 0, CPoint(-15,0) );
|
|||
|
|
|
|||
|
|
POINT pt = pNMTreeView->ptDrag;
|
|||
|
|
ClientToScreen( &pt );
|
|||
|
|
|
|||
|
|
if( m_wndToolBar.GetSafeHwnd() ) {
|
|||
|
|
RECT wndRect;
|
|||
|
|
GetWindowRect( &wndRect );
|
|||
|
|
CSize sz = m_wndToolBar.CalcDockingLayout(wndRect.right - wndRect.left, LM_HORZDOCK|LM_HORZ | LM_COMMIT);
|
|||
|
|
pt.y += sz.cy;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pDragImage->DragEnter( NULL, pt );
|
|||
|
|
SetCapture();
|
|||
|
|
|
|||
|
|
*pResult = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnMouseMove(UINT nFlags, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
HTREEITEM hitem;
|
|||
|
|
UINT flags;
|
|||
|
|
|
|||
|
|
if( m_bDragging ) {
|
|||
|
|
POINT pt = point;
|
|||
|
|
ClientToScreen( &pt );
|
|||
|
|
CImageList::DragMove(pt);
|
|||
|
|
|
|||
|
|
pt = point;
|
|||
|
|
if( m_wndToolBar.GetSafeHwnd() ) {
|
|||
|
|
RECT wndRect;
|
|||
|
|
GetWindowRect( &wndRect );
|
|||
|
|
CSize sz = m_wndToolBar.CalcDockingLayout(wndRect.right - wndRect.left, LM_HORZDOCK|LM_HORZ | LM_COMMIT);
|
|||
|
|
pt.y -= sz.cy;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( (hitem = m_TreeCtrl.HitTest(pt, &flags) ) != NULL ) {
|
|||
|
|
CImageList::DragShowNolock(FALSE);
|
|||
|
|
|
|||
|
|
if( m_hRootItem == hitem ) {
|
|||
|
|
m_TreeCtrl.SelectDropTarget(hitem);
|
|||
|
|
m_hDrop = hitem;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
m_TreeCtrl.SelectDropTarget(NULL);
|
|||
|
|
m_hDrop = NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CImageList::DragShowNolock( TRUE );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CFormView::OnMouseMove(nFlags, point);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionPaneView::OnLButtonUp(UINT nFlags, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
if( m_bDragging ) {
|
|||
|
|
m_bDragging = false;
|
|||
|
|
CImageList::DragLeave(this);
|
|||
|
|
CImageList::EndDrag();
|
|||
|
|
ReleaseCapture();
|
|||
|
|
|
|||
|
|
if( m_pDragImage != NULL ) {
|
|||
|
|
delete m_pDragImage;
|
|||
|
|
m_pDragImage = NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_TreeCtrl.SelectDropTarget(NULL);
|
|||
|
|
|
|||
|
|
if( m_hDrag != m_hDrop ) {
|
|||
|
|
HTREEITEM hitem;
|
|||
|
|
POINT pt2 = point;
|
|||
|
|
if( m_wndToolBar.GetSafeHwnd() ) {
|
|||
|
|
RECT wndRect;
|
|||
|
|
GetWindowRect( &wndRect );
|
|||
|
|
CSize sz = m_wndToolBar.CalcDockingLayout(wndRect.right - wndRect.left, LM_HORZDOCK|LM_HORZ | LM_COMMIT);
|
|||
|
|
pt2.y -= sz.cy;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( ((hitem = m_TreeCtrl.HitTest(pt2, &nFlags)) == NULL) ) return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CFormView::OnLButtonUp(nFlags, point);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL CActionPaneView::PreTranslateMessage(MSG* pMsg)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your specialized code here and/or call the base class
|
|||
|
|
return CFormView::PreTranslateMessage(pMsg);
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
void CActionPaneView::GetSelectActionList( std::vector<std::string> &szVecList )
|
|||
|
|
{
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext(p);
|
|||
|
|
if( m_hRootItem == hti ) continue;
|
|||
|
|
|
|||
|
|
CActionBase *pBase = CGlobalValue::GetInstance().GetObjectFromTreeID( CGlobalValue::GetInstance().GetRootObject(), hti );
|
|||
|
|
if( !pBase ) continue;
|
|||
|
|
if( pBase->GetType() != CActionBase::ELEMENT ) continue;
|
|||
|
|
|
|||
|
|
szVecList.push_back( pBase->GetName().GetBuffer() );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifdef _EXPORT_EXCEL_ACTION_SIGNAL
|
|||
|
|
void CActionPaneView::OnActionpanecontextExportexcel()
|
|||
|
|
{
|
|||
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
if( ! CGlobalValue::GetInstance().IsOpenAction() ){
|
|||
|
|
::MessageBox( NULL, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>", "Error", MB_OK );
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CActionBase* pRoot = CGlobalValue::GetInstance().GetRootObject();
|
|||
|
|
CActionBase* pAction = NULL;
|
|||
|
|
CActionElement* pActionElement = NULL;
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
while(p){
|
|||
|
|
hti = m_SelectItemList.GetNext(p);
|
|||
|
|
|
|||
|
|
pAction = CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti );
|
|||
|
|
|
|||
|
|
if( pAction == NULL )
|
|||
|
|
continue;
|
|||
|
|
|
|||
|
|
if( pAction->GetType() == CActionBase::ELEMENT ) {
|
|||
|
|
pActionElement = dynamic_cast<CActionElement*>( CGlobalValue::GetInstance().GetObjectFromTreeID( pRoot, hti ) );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( ! pActionElement->IsStop() ) {
|
|||
|
|
::MessageBox( NULL,"<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּ<EFBFBD><D6BC><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK) ;
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TCHAR szFileter[] = _T("Excel File (*.csv) | *.csv|All File (*.*)|*.*||");
|
|||
|
|
CFileDialog dlg( FALSE, _T("csv"), _T("*.csv"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING, szFileter, NULL );
|
|||
|
|
|
|||
|
|
if( dlg.DoModal() != IDOK )
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
|
|||
|
|
SignalListViewDlg SignalListdlg;
|
|||
|
|
|
|||
|
|
if( SignalListdlg.DoModal() == IDOK ){
|
|||
|
|
|
|||
|
|
std::wstring wsFileName;
|
|||
|
|
ToWideString( (LPSTR) dlg.GetPathName().GetString(), wsFileName);
|
|||
|
|
|
|||
|
|
CSVWriter Writer;
|
|||
|
|
if( ! Writer.Initialize( wsFileName.c_str(), L";") ){
|
|||
|
|
::MessageBox(NULL, "could not open file", "Error", MB_OK );
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CActionSignal* pActionSignal = NULL;
|
|||
|
|
char sTemp[_MAX_PATH] = {0, };
|
|||
|
|
int nCount = 1;
|
|||
|
|
int nSignalIndex = 0, i = 0;
|
|||
|
|
bool bFlag = FALSE;
|
|||
|
|
|
|||
|
|
Writer.StartWrite();
|
|||
|
|
|
|||
|
|
ZeroMemory( sTemp, _MAX_PATH );
|
|||
|
|
fprintf_s( Writer.GetStream(), "<EFBFBD>Ǹ<EFBFBD>\n");
|
|||
|
|
sprintf_s( sTemp, "%s,", pActionElement->GetName() );
|
|||
|
|
fprintf_s( Writer.GetStream(), "%s,", sTemp );
|
|||
|
|
fprintf_s( Writer.GetStream(), "\n\n");
|
|||
|
|
|
|||
|
|
for( nSignalIndex = 0; nSignalIndex < pActionElement->GetChildCount(); nSignalIndex++ )
|
|||
|
|
{
|
|||
|
|
pActionSignal= dynamic_cast<CActionSignal*>( pActionElement->GetChild( nSignalIndex ) );
|
|||
|
|
|
|||
|
|
if( ! pActionSignal )
|
|||
|
|
continue;
|
|||
|
|
|
|||
|
|
if( SignalListdlg.m_strSignalTypeName.Compare( pActionSignal->GetProperty( 0 )->GetCategory() ) != 0)
|
|||
|
|
continue;
|
|||
|
|
|
|||
|
|
if( ! bFlag ) {
|
|||
|
|
ZeroMemory( sTemp, _MAX_PATH );
|
|||
|
|
sprintf_s( sTemp, "%s", pActionSignal->GetProperty( 0 )->GetCategory() );
|
|||
|
|
fprintf_s( Writer.GetStream(), "%s", sTemp );
|
|||
|
|
fprintf_s( Writer.GetStream(), ",");
|
|||
|
|
|
|||
|
|
for( i = 0; i < pActionSignal->GetPropertyList()->size(); i++ ){
|
|||
|
|
ZeroMemory( sTemp, _MAX_PATH );
|
|||
|
|
sprintf_s( sTemp, "%s", pActionSignal->GetProperty( i )->GetDescription() );
|
|||
|
|
fprintf_s( Writer.GetStream(), "%s,", sTemp );
|
|||
|
|
}
|
|||
|
|
bFlag = TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pActionSignal->ExportSignal( Writer.GetStream(), nCount++);
|
|||
|
|
}
|
|||
|
|
SignalListdlg.m_strSignalTypeName.Empty();
|
|||
|
|
|
|||
|
|
Writer.AddField(3);
|
|||
|
|
Writer.EndWrite();
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endif
|