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.

166 lines
4.4 KiB
C++

#include "StdAfx.h"
#include ".\itemframe.h"
//#include "DFDrawProDoc.h"
//#include "DFDrawProView.h"
//#include "PropertiesSheet.h"
CItemEditFrame::CItemEditFrame(CSigmaDoc * ppDoc)
: CItemFocusRect(ppDoc)
, m_pFrame(NULL)
, color(0)
, m_bBlackLine(FALSE)
, m_dThickness(0)
{
SetType(ITEM_FRAME);
}
CItemEditFrame::~CItemEditFrame(void)
{
if(m_pFrame)delete m_pFrame;
m_pFrame=NULL;
}
/*
BOOL CItemEditFrame::InitPropertyGrid(CXTPPropertyGrid& grid)
{
if(this->IsEditState())
{
COne* pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos());
CFrame* pValue=(CFrame*)pOne->GetValue();
color=pOne->color;
return InitPropertyGrid(grid, pValue);
}
return InitPropertyGrid(grid, m_pFrame);
}
BOOL CItemEditFrame::InitPropertyGrid(CXTPPropertyGrid& grid, CFrame* pValue)
{
if(pValue==NULL) return FALSE;
CPropertyGridItemAdd ItemAdd(NULL);
CString strFormat=GetFloatFormatString();
CXTPPropertyGridItem* pItem=grid.AddCategory(IDS_STRING_Frame);
ItemAdd.SetItem(pItem); pItem->Expand();
m_rect.SetRect(pValue->x0,pValue->y0+pValue->m_size.cy,pValue->x0+pValue->m_size.cx,pValue->y0);
ItemAdd.AddItemRect (IDS_GI_COORDINATE_RECT,m_rect, &m_rect);
ItemAdd.AddItemSize8(IDS_STRING_SIZE, pValue->m_size, NULL, IDS_STRING_WIDTH, IDS_STRING_HEIGHT);//¸ß¿í
CString name;if(!pValue->IsEmpty()) name=pValue->GetName();
m_bBlackLine=pValue->IsBlackLine();
pItem=ItemAdd.AddItemMark(IDS_GI_MARK_NAME, name, pValue->pDraw); pItem->SetReadOnly(m_bBlackLine);
m_dThickness = GetUnitMode().toPrintUnit(pValue->thickness);
ItemAdd.AddItemUnitDouble(IDS_GI_FRAME_THICKNESS, GetUnit(), m_dThickness, strFormat, &m_dThickness);
ItemAdd.AddItemBool (IDS_GI_FRAME_BLACK, m_bBlackLine, &m_bBlackLine);
ItemAdd.AddItemColor (IDS_GI_COLOR, color, NULL);
CItem::InitPropertyGrid(grid);
return TRUE;
}
BOOL CItemEditFrame::OnGridItemChangeValue(CXTPPropertyGridItem* pItem, CFrame* pValue)
{
if(pValue==NULL) return FALSE;
COne* pOne=NULL;
if(this->IsEditState()) pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos());
BOOL bUpdate=FALSE;
switch(pItem->GetID())
{
case IDS_GI_COORDINATE_RECT:
pValue->x0=m_rect.left;
pValue->y0=m_rect.bottom;
pValue->m_size.cx=m_rect.Width();
pValue->m_size.cy=fabs(m_rect.Height());
bUpdate=TRUE;
break;
case IDS_STRING_SIZE:
pValue->m_size=((CCustomItemPoint*)pItem)->GetValuePoint();
{
CCustomItemRect* pp=(CCustomItemRect*)((CXTPPropertyGridView*)(pItem->GetGrid()))->GetPropertyGrid()->FindItem(IDS_GI_COORDINATE_RECT);
m_rect.SetRect(pValue->x0,pValue->y0+pValue->m_size.cy,pValue->x0+pValue->m_size.cx,pValue->y0);
if(pp)pp->SetRectValue(m_rect);
}
bUpdate=TRUE;
break;
case IDS_GI_COLOR:
color=atol(pItem->GetValue());
if(pOne) pOne->color=color;
bUpdate=TRUE;
break;
case IDS_GI_FRAME_BLACK:
pValue->EnableBlackLine(m_bBlackLine);
{
CXTPPropertyGridItem* pp=FindItem(pItem,IDS_GI_MARK_NAME);
if(pp)pp->SetReadOnly(m_bBlackLine);
}
bUpdate=TRUE;
break;
case IDS_GI_MARK_NAME:
{
CString name=pItem->GetValue();
CString txt=pValue->GetName();
if(name.CollateNoCase(txt)!=0)
{
AfxGetGlobalMark()->BackupMark();
AfxGetGlobalMark()->SetMark(GetDoc()->GetDraw()->GetMark());
pValue->SetName(name);
pValue->PositionNew(0);
AfxGetGlobalMark()->RestoreMark();
}
else
bUpdate=FALSE;
}
bUpdate=TRUE;
break;
case IDS_GI_FRAME_THICKNESS:
pValue->thickness = GetUnitMode().toRealUnit(m_dThickness);
bUpdate=TRUE;
break;
}
return bUpdate | CItem::OnGridItemChangeValue(pItem);
}
*/
/*
BOOL CItemEditFrame::OnGridItemChangeValue(CXTPPropertyGridItem* pItem)
{
if(this->IsEditState())
{
COne* pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos());
CFrame* pValue=(CFrame*)pOne->GetValue();
return OnGridItemChangeValue(pItem, pValue);
}
return OnGridItemChangeValue(pItem, m_pFrame);
}
*/
int NItem::CItemEditFrame::CreateFrame(CFrame& frame, CNet* pNet, COLORREF &col)
{
if(pNet==NULL) return 0;
CRect8 rect=pNet->GetInFrameRect();
rect.InflateRect(pNet->GetFrameWidth()*0.3, pNet->GetFrameWidth()*0.3);
frame.x0=rect.left;
frame.y0=rect.bottom;
frame.m_size=rect.GetSize();
frame.m_size.cy=fabs(frame.m_size.cy);
frame.thickness=pNet->m_szText.cy*0.5;
m_pFrame=&frame;
color=col;
//CPropertiesSheet sheet(IDS_STRING_GRID,GetView(),0,FALSE);
//sheet.SetItem(this);
//if(sheet.DoModal()==IDOK)
//{
// col=color;
// m_pFrame=NULL;
// return 1;
//}
m_pFrame=NULL;
return 0;
}