178 lines
4.9 KiB
C++
178 lines
4.9 KiB
C++
// SheetTitlePage.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "SheetTitlePage.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
extern const TCHAR *g_szLineWidths[];
|
|
extern int g_nLineWidthNum;
|
|
//extern XString GetSymbolName(AcDbObjectId idSymbolRec);
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSheetTitlePage dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CSheetTitlePage, CGridStylePage)
|
|
|
|
CSheetTitlePage::CSheetTitlePage()
|
|
: CGridStylePage(CSheetTitlePage::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CSheetTitlePage)
|
|
m_bNoDivider = FALSE;
|
|
m_divLineWidth = _T("");
|
|
m_csTitleHeight = _T("");
|
|
m_bTitleInVisible = FALSE;
|
|
m_csText = _T("");
|
|
m_nLTItem=-1;
|
|
//}}AFX_DATA_INIT
|
|
m_nLineColor=0;
|
|
for(int i=0; i<g_nLineWidthNum; i++)
|
|
m_lstLineWidths.Append(new XString(g_szLineWidths[i]));
|
|
XSymbolList lstLineTypes(_T("LTYPE"));
|
|
for(i=0; i<lstLineTypes.Length(); i++)
|
|
m_lstLinetypes.Append(new XString(lstLineTypes[i]));
|
|
}
|
|
|
|
CSheetTitlePage::~CSheetTitlePage()
|
|
{
|
|
}
|
|
|
|
|
|
void CSheetTitlePage::Obj2Dlg(const TDbSheet *pSheet)
|
|
{
|
|
ASSERT(pSheet);
|
|
const TSheetTitle title=pSheet->GetTitle();
|
|
const TGridStyle &gridStyle=title.GetGridStyle();
|
|
CGridStylePage::Obj2Dlg(gridStyle);
|
|
|
|
|
|
const TDividerStyle &style=title.GetDividerStyle();
|
|
// 是否包含边框
|
|
m_bNoDivider=(style.GetDividerFlag()==TDividerStyle::kNone);
|
|
|
|
// 线宽
|
|
m_divLineWidth.Format(_T("%.2f"), style.GetLineWidth());
|
|
for(int i=0; i<m_lstLineWidths.Length(); i++) {
|
|
if(fabs(_tstof(*m_lstLineWidths[i])-style.GetLineWidth())<1.0E-5) {
|
|
m_divLineWidth=*m_lstLineWidths[i];
|
|
}
|
|
}
|
|
|
|
// 线颜色
|
|
m_nLineColor=style.GetColor();
|
|
|
|
// LINETYPE
|
|
AcDbObjectId idLineType=style.GetLineTypeId();
|
|
XString sName=GetSymbolName(idLineType);
|
|
if(!sName)
|
|
sName=_T("CONTINUOUS");
|
|
for(i=0; i<m_lstLinetypes.Length(); i++) {
|
|
if(_tcsicmp(sName, *m_lstLinetypes[i])==0) {
|
|
m_nLTItem=i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 标题可见性
|
|
m_bTitleInVisible=!title.IsVisible();
|
|
m_csText = title.GetText();
|
|
m_csTitleHeight.Format(_T("%.2f"), title.GetHeight());
|
|
}
|
|
|
|
void CSheetTitlePage::Dlg2Obj(TDbSheet *pSheet) const
|
|
{
|
|
ASSERT(pSheet);
|
|
TSheetTitle &title=pSheet->GetTitle();
|
|
pSheet->assertWriteEnabled();
|
|
TGridStyle &gridStyle=title.GetGridStyle();
|
|
gridStyle.SetOverrideAll(TRUE);
|
|
CGridStylePage::Dlg2Obj(gridStyle);
|
|
|
|
TDividerStyle &style=title.GetDividerStyle();
|
|
if(m_bNoDivider)
|
|
style.SetDividerFlag(TDividerStyle::kNone);
|
|
else
|
|
style.SetDividerFlag(TDividerStyle::kLocal);
|
|
if(_tstof(m_divLineWidth)>-1.0E-3)
|
|
style.SetLineWidth(_tstof(m_divLineWidth));
|
|
style.SetColor(m_nLineColor);
|
|
// LINETYPE
|
|
if(m_nLTItem>=0) {
|
|
style.SetLineTypeId(GetLinetypeIdFromString(m_lstLinetypes[m_nLTItem]));
|
|
}
|
|
|
|
|
|
|
|
// 标题可见性
|
|
title.SetVisible(!m_bTitleInVisible);
|
|
title.SetText(m_csText);
|
|
if(_tstof(m_csTitleHeight)>1.0E-3)
|
|
title.SetHeight(_tstof(m_csTitleHeight));
|
|
}
|
|
|
|
|
|
void CSheetTitlePage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CGridStylePage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSheetTitlePage)
|
|
DDX_Control(pDX, IDC_DIVIDER_LINEWIDTH, m_lineWidthBox);
|
|
DDX_Control(pDX, IDC_DIVIDER_LINETYPE, m_divLinetypeBox);
|
|
DDX_Control(pDX, IDC_DIVIDER_COLOR, m_divColorBox);
|
|
DDX_Check(pDX, IDC_NODIVIDER, m_bNoDivider);
|
|
DDX_CBString(pDX, IDC_DIVIDER_LINEWIDTH, m_divLineWidth);
|
|
DDX_Text(pDX, IDC_TITLE_HEIGHT, m_csTitleHeight);
|
|
DDX_Check(pDX, IDC_TITLE_INVISIBLE, m_bTitleInVisible);
|
|
DDX_Text(pDX, IDC_TEXT, m_csText);
|
|
DDX_CBIndex(pDX, IDC_DIVIDER_LINETYPE, m_nLTItem);
|
|
//}}AFX_DATA_MAP
|
|
if(pDX->m_bSaveAndValidate) {
|
|
// Check value
|
|
// ...
|
|
int nIndex=m_divColorBox.GetCurrentItemColorIndex();
|
|
if(nIndex>=0)
|
|
m_nLineColor=nIndex;
|
|
if(_tstof(m_csTitleHeight)<1.0E-3 || _tstof(m_divLineWidth)<-1.0E-3)
|
|
pDX->Fail();
|
|
}
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CSheetTitlePage, CGridStylePage)
|
|
//{{AFX_MSG_MAP(CSheetTitlePage)
|
|
ON_WM_CLOSE()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSheetTitlePage message handlers
|
|
BOOL CSheetTitlePage::OnInitDialog()
|
|
{
|
|
CGridStylePage::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
int nItem=m_divColorBox.FindItemByColorIndex(m_nLineColor);
|
|
if(nItem<0) {
|
|
m_divColorBox.AddColorToMRU(m_nLineColor);
|
|
nItem=m_divColorBox.FindItemByColorIndex(m_nLineColor);
|
|
}
|
|
if(nItem>=0) m_divColorBox.SetCurSel(nItem);
|
|
|
|
InitComBox(m_lineWidthBox, m_lstLineWidths);
|
|
InitComBox(m_divLinetypeBox, m_lstLinetypes);
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CSheetTitlePage::OnClose()
|
|
{
|
|
CGridStylePage::OnClose();
|
|
}
|
|
|