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.
124 lines
3.0 KiB
C++
124 lines
3.0 KiB
C++
// XTPFlowGraphEditItem.cpp : implementation of the CXTPFlowGraphEditItem class.
|
|
//
|
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
|
//
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
|
//
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
|
// SINGLE COMPUTER.
|
|
//
|
|
// CONTACT INFORMATION:
|
|
// support@codejock.com
|
|
// http://www.codejock.com
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "Common/XTPDrawHelpers.h"
|
|
|
|
#include "XTPFlowGraphElement.h"
|
|
#include "XTPFlowGraphPage.h"
|
|
#include "XTPFlowGraphNode.h"
|
|
#include "XTPFlowGraphPaintManager.h"
|
|
#include "XTPFlowGraphControl.h"
|
|
#include "XTPFlowGraphEditItem.h"
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CXTPFlowGraphEditItem
|
|
|
|
IMPLEMENT_DYNAMIC(CXTPFlowGraphEditItem, CEdit)
|
|
|
|
CXTPFlowGraphEditItem::CXTPFlowGraphEditItem()
|
|
{
|
|
m_bEscapeKey = FALSE;
|
|
m_pElement = NULL;
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CXTPFlowGraphEditItem, CEdit)
|
|
//{{AFX_MSG_MAP(CXTPFlowGraphEditItem)
|
|
ON_WM_KILLFOCUS()
|
|
ON_WM_CHAR()
|
|
ON_WM_GETDLGCODE()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
UINT CXTPFlowGraphEditItem::OnGetDlgCode()
|
|
{
|
|
return DLGC_WANTALLKEYS;
|
|
}
|
|
|
|
void CXTPFlowGraphEditItem::OnKillFocus(CWnd* /*pNewWnd*/)
|
|
{
|
|
PostMessage(WM_CLOSE);
|
|
|
|
if (!m_pElement)
|
|
return;
|
|
|
|
if (!m_bEscapeKey)
|
|
{
|
|
CString str;
|
|
GetWindowText(str);
|
|
|
|
m_pElement->GetControl()->OnEndLabelEdit(m_pElement, str);
|
|
}
|
|
else
|
|
{
|
|
m_pElement->GetControl()->OnEndLabelEdit(m_pElement, m_pElement->GetCaption());
|
|
}
|
|
m_pElement = NULL;
|
|
}
|
|
|
|
void CXTPFlowGraphEditItem::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
|
|
{
|
|
if (nChar == VK_ESCAPE || nChar == VK_RETURN)
|
|
{
|
|
m_bEscapeKey = (nChar == VK_ESCAPE);
|
|
OnKillFocus(NULL);
|
|
|
|
return;
|
|
}
|
|
CEdit::OnChar(nChar, nRepCnt, nFlags);
|
|
}
|
|
|
|
void CXTPFlowGraphEditItem::PostNcDestroy()
|
|
{
|
|
delete this;
|
|
}
|
|
|
|
BOOL CXTPFlowGraphEditItem::Create(CXTPFlowGraphElement* pElement)
|
|
{
|
|
m_pElement = pElement;
|
|
CXTPFlowGraphControl* pControl = pElement->GetControl();
|
|
|
|
LOGFONT lf = pControl->GetPaintManager()->m_lfText;
|
|
lf.lfHeight = LONG(lf.lfHeight * pControl->GetZoomLevel());
|
|
|
|
m_fnt.CreateFontIndirect(&lf);
|
|
|
|
UINT nFormat = pElement->IsKindOf(RUNTIME_CLASS(CXTPFlowGraphNode)) ? DT_CENTER : DT_LEFT;
|
|
|
|
CRect rc = pElement->GetControl()->GetPaintManager()->GetCaptionRect(pElement);
|
|
rc = pElement->GetPage()->PageToScreen(rc);
|
|
|
|
CString strText = pElement->GetCaption();
|
|
UINT nCenter = nFormat & DT_CENTER ? ES_CENTER : 0;
|
|
|
|
if (!CEdit::Create(WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | nCenter, rc, pControl, 0))
|
|
return FALSE;
|
|
|
|
SetFont(&m_fnt);
|
|
SetMargins(0, 0);
|
|
SetWindowText(strText);
|
|
SetFocus();
|
|
SetSel(0, -1);
|
|
|
|
return TRUE;
|
|
}
|