424 lines
10 KiB
C++
424 lines
10 KiB
C++
// LeaderTextDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "LeaderTextDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLeaderDlg dialog
|
|
const int maxHisList = 10;
|
|
extern double g_nHeight;
|
|
static int g_nArrowStyle = 1;
|
|
static TDbSymbMultiLeader::TArrowStyle
|
|
g_ArrowStyle[] = {TDbSymbMultiLeader::kArrow,
|
|
TDbSymbMultiLeader::kDote, TDbSymbMultiLeader::kCrossing, TDbSymbMultiLeader::kNone};
|
|
CString CLeaderDlg::g_csArrowSize=_T("3.0");
|
|
CString CLeaderDlg::m_strInputUp = _T("");
|
|
CString CLeaderDlg::m_strInputDown = _T("");
|
|
// add by cwk on 060706
|
|
extern CString g_sLeadFixAngle = _T("45");
|
|
extern BOOL g_bLeadFixAngle = FALSE;
|
|
|
|
//add by lgy 20120206 固定转角不能记忆
|
|
CString CLeaderDlg::m_sFixAngle = _T("45");
|
|
BOOL CLeaderDlg::m_bFixAngle= FALSE;
|
|
|
|
BOOL CLeaderDlg::m_bContinue = TRUE; // Add by lcf on 2005-06-29
|
|
BOOL CLeaderDlg::m_bAllPtsOnLine = FALSE; // sg add 090327
|
|
int CLeaderDlg::m_nTextAlign = 2; // sg add 090402
|
|
int CLeaderDlg::s_iLeaderStyle = 0;
|
|
|
|
IMPLEMENT_DYNAMIC(CLeaderDlg, CBaseTextDlg)
|
|
CLeaderDlg::CLeaderDlg(BOOL bEdit, CWnd* pParent /*=NULL*/)
|
|
: CBaseTextDlg(CLeaderDlg::IDD, pParent), m_bEditObj(bEdit)
|
|
{
|
|
//注释 by lgy 20120206 固定转角不能记忆
|
|
// add by cwk on 060706
|
|
//m_sFixAngle = g_sLeadFixAngle;
|
|
//m_bFixAngle = g_bLeadFixAngle;
|
|
}
|
|
|
|
CLeaderDlg::CLeaderDlg(BOOL bEdit, UINT resID,CWnd* pParent /*=NULL*/)
|
|
: CBaseTextDlg(resID, pParent), m_bEditObj(bEdit)
|
|
{
|
|
//注释 by lgy 20120206 固定转角不能记忆
|
|
// add by cwk on 060706
|
|
//m_sFixAngle = g_sLeadFixAngle;
|
|
//m_bFixAngle = g_bLeadFixAngle;
|
|
}
|
|
|
|
void CLeaderDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CBaseTextDlg::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CLeaderDlg)
|
|
// sg modify 090507,仿照图名标注,试着解决“对象编辑中,有时候文字显示有问题”的BUG
|
|
if (pDX->m_bSaveAndValidate)
|
|
{
|
|
DDX_CBString(pDX, IDC_COMBO_INPUTTEXT, m_strInputUp);
|
|
DDX_CBString(pDX, IDC_COMBO_INPUTTEXT1, m_strInputDown);
|
|
}
|
|
else
|
|
{
|
|
GetDlgItem(IDC_COMBO_INPUTTEXT)->SetWindowText(m_strInputUp);
|
|
GetDlgItem(IDC_COMBO_INPUTTEXT1)->SetWindowText(m_strInputDown);
|
|
}
|
|
DDX_Control(pDX, IDC_COMBO_INPUTTEXT, m_comboInputText);
|
|
DDX_Control(pDX, IDC_COMBO_INPUTTEXT1, m_comboInputText1);
|
|
DDX_Text(pDX, IDC_EDIT1, m_sFixAngle);
|
|
DDX_CBIndex(pDX, IDC_COMBO_STYLE, g_nArrowStyle);
|
|
DDX_CBString(pDX, IDC_ARROW_SIZE, g_csArrowSize);
|
|
if (pDX->m_bSaveAndValidate && _tstof(g_csArrowSize)<1.0E-3)
|
|
pDX->Fail();
|
|
DDX_Check(pDX, IDC_CONTINUE, m_bContinue);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bFixAngle);
|
|
DDX_Check(pDX, IDC_CHECK_ONLINE, m_bAllPtsOnLine); // sg add 090327
|
|
DDX_CBIndex(pDX, IDC_COMBO_TEXTALIGN, m_nTextAlign); // sg add 090402
|
|
DDX_Check(pDX,IDC_CHK_LERDER,s_iLeaderStyle); // add by lxb on 111229
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CLeaderDlg, CBaseTextDlg)
|
|
//{{AFX_MSG_MAP(CLeaderDlg)
|
|
ON_BN_CLICKED(IDC_CHECK1, OnUnChangeAngle)
|
|
ON_BN_CLICKED(IDC_CHECK_ONLINE,OnCHKOnline)
|
|
ON_BN_CLICKED(IDC_CHK_LERDER,OnCHKLeader)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLeaderDlg message handlers
|
|
BOOL CLeaderDlg::OnInitDialog()
|
|
{
|
|
CBaseTextDlg::OnInitDialog();
|
|
LoadHisText();
|
|
UpdateData(FALSE);
|
|
GetDlgItem(IDC_COMBO_INPUTTEXT)->SetFocus();
|
|
// add by cwk on 060705
|
|
if (!m_bEditObj)
|
|
{
|
|
GetDlgItem(IDC_EDIT1)->EnableWindow(m_bFixAngle);
|
|
}
|
|
else
|
|
{
|
|
GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);
|
|
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
return FALSE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
// Modify by lcf On 2005-07-05
|
|
CWnd* CLeaderDlg::GetCurWnd()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd = this->GetFocus();
|
|
CWnd *pWnd2 = NULL;
|
|
|
|
if (m_comboInputText.m_hWnd == pWnd->GetParent()->m_hWnd)
|
|
{
|
|
pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT); // 把CWnd 回传给基类
|
|
m_strInputText = m_strInputUp;
|
|
}
|
|
else if(m_comboInputText1.m_hWnd == pWnd->GetParent()->m_hWnd)
|
|
{
|
|
pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT1); // 把CWnd 回传给基类
|
|
m_strInputText = m_strInputDown;
|
|
}
|
|
else
|
|
{
|
|
int nSel = m_comboInputText.GetWindowTextLength();
|
|
m_comboInputText.SetEditSel(nSel, nSel);
|
|
pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT);
|
|
}
|
|
return(pWnd2);
|
|
}
|
|
|
|
void CLeaderDlg::UpdateInputText()
|
|
{
|
|
CWnd *pWnd = this->GetFocus();
|
|
if (m_comboInputText.m_hWnd == pWnd->GetParent()->m_hWnd)
|
|
{
|
|
m_strInputUp = m_strInputText;
|
|
}
|
|
if (m_comboInputText1.m_hWnd == pWnd->GetParent()->m_hWnd)
|
|
{
|
|
m_strInputDown = m_strInputText;
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CLeaderDlg::Dlg2Obj(TDbSymbMultiLeader *pText)
|
|
{
|
|
CBaseTextDlg::Dlg2Obj(pText);
|
|
pText->SetText1(m_strInputUp);
|
|
pText->SetText2(m_strInputDown);
|
|
pText->SetArrow(g_ArrowStyle[g_nArrowStyle]);
|
|
double nSize = _tstof(g_csArrowSize);
|
|
if (nSize>1.0E-3)
|
|
pText->SetArrowSize(nSize);
|
|
|
|
// sg add 090402,增加文字相对于基线的对齐方式
|
|
TDbSymbMultiLeader::TSymbMLTextAlign nAlign = (TDbSymbMultiLeader::TSymbMLTextAlign)(m_nTextAlign + 1);
|
|
pText->SetTextAlign(nAlign);
|
|
|
|
//引线平行 add by lxb on 111229
|
|
pText->SetLeaderParalle(s_iLeaderStyle);
|
|
}
|
|
|
|
void CLeaderDlg::Obj2Dlg(TDbSymbMultiLeader *pText)
|
|
{
|
|
CBaseTextDlg::Obj2Dlg(pText);
|
|
m_strInputUp = pText->GetText1();
|
|
m_strInputDown = pText->GetText2();
|
|
TDbSymbMultiLeader::TArrowStyle Style = pText->GetArrow();
|
|
for(int i = 0; i < 4; i++)
|
|
{
|
|
if(Style == g_ArrowStyle[i])
|
|
g_nArrowStyle = i;
|
|
}
|
|
g_csArrowSize.Format(_T("%.1f"), pText->GetArrowSize());
|
|
|
|
// sg add 090402,增加文字相对于基线的对齐方式
|
|
m_nTextAlign = (int)(pText->GetTextAlign() - 1);
|
|
|
|
//是否为引线平行 add by lxb on 111229
|
|
s_iLeaderStyle = pText->IsLeaderParall();
|
|
|
|
if (s_iLeaderStyle)
|
|
m_bAllPtsOnLine = FALSE;
|
|
}
|
|
|
|
void CLeaderDlg::OnOK()
|
|
{
|
|
AddToRecent();
|
|
CBaseTextDlg::OnOK();
|
|
}
|
|
|
|
// Add by lcf on 20050708
|
|
void CLeaderDlg::AddToRecent()
|
|
{
|
|
{
|
|
UpdateData(TRUE);
|
|
int len = m_lstHistory.Length();
|
|
TCHAR strTmpPath[256] = _T("");
|
|
GetTempPath(255, strTmpPath);
|
|
_tcscat(strTmpPath, _T("leader.his"));
|
|
#if (ADS>15)
|
|
std::
|
|
#endif
|
|
ofstream out(strTmpPath);
|
|
|
|
if (m_strInputUp != _T(""))
|
|
{
|
|
out << (const char *)_AS(m_strInputUp) <<"\n";
|
|
int index = m_lstHistory.Index(m_strInputUp);
|
|
if (index >= 0)
|
|
{
|
|
m_lstHistory.Remove(index);
|
|
len --;
|
|
}
|
|
if (len > maxHisList-1)
|
|
len = maxHisList - 1;
|
|
}
|
|
for (int i=0; i < len; i++)
|
|
out << _AS(m_lstHistory[i]) << "\n";
|
|
|
|
len = m_lstHistory1.Length();
|
|
TCHAR strTmpPath1[256] = _T("");
|
|
GetTempPath(255, strTmpPath1);
|
|
_tcscat(strTmpPath1, _T("leader1.his"));
|
|
#if (ADS>15)
|
|
std::
|
|
#endif
|
|
ofstream out1(strTmpPath1);
|
|
|
|
if (m_strInputDown != _T(""))
|
|
{
|
|
out1 << (const char *)_AS(m_strInputDown) << "\n";
|
|
int index = m_lstHistory1.Index(m_strInputDown);
|
|
if (index >= 0)
|
|
{
|
|
m_lstHistory1.Remove(index);
|
|
len --;
|
|
}
|
|
if (len > maxHisList-1)
|
|
len = maxHisList - 1;
|
|
}
|
|
|
|
for (i=0; i < len; i++)
|
|
out1 << _AS(m_lstHistory1[i]) << "\n";
|
|
}
|
|
|
|
m_lstHistory.Reset();
|
|
m_lstHistory1.Reset();
|
|
m_comboInputText.ResetContent();
|
|
m_comboInputText1.ResetContent();
|
|
LoadHisText();
|
|
}
|
|
|
|
void CLeaderDlg::LoadHisText()
|
|
{
|
|
TCHAR strTmpPath[256] = _T("");
|
|
GetTempPath(255, strTmpPath);
|
|
_tcscat(strTmpPath, _T("leader.his"));
|
|
#if (ADS>15)
|
|
std::
|
|
#endif
|
|
ifstream in(strTmpPath);
|
|
|
|
while(!(!in))
|
|
{
|
|
char line[256];
|
|
in.getline(line, 255);
|
|
if (!in)
|
|
break;
|
|
m_lstHistory.Append(tstrnew(TString(line)));
|
|
}
|
|
|
|
for (int m =0; m < m_lstHistory.Length(); m++)
|
|
m_comboInputText.AddString(m_lstHistory[m]);
|
|
|
|
TCHAR strTmpPath1[256] = _T("");
|
|
GetTempPath(255, strTmpPath1);
|
|
_tcscat(strTmpPath1, _T("leader1.his"));
|
|
#if (ADS>15)
|
|
std::
|
|
#endif
|
|
ifstream in1(strTmpPath1);
|
|
|
|
while(!(!in1))
|
|
{
|
|
char line[256];
|
|
in1.getline(line, 255);
|
|
if(!in1)
|
|
break;
|
|
m_lstHistory1.Append(tstrnew(TString(line)));
|
|
}
|
|
|
|
for (m =0; m < m_lstHistory1.Length(); m++)
|
|
m_comboInputText1.AddString(m_lstHistory1[m]);
|
|
UpdateData(false);
|
|
}
|
|
|
|
// add by cwk on 060705
|
|
void CLeaderDlg::OnUnChangeAngle()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (!m_bEditObj)
|
|
{
|
|
if (m_bFixAngle)
|
|
{
|
|
m_bFixAngle = FALSE;
|
|
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
|
|
}
|
|
else
|
|
{
|
|
m_bFixAngle = TRUE;
|
|
GetDlgItem(IDC_EDIT1)->EnableWindow();
|
|
}
|
|
}
|
|
}
|
|
|
|
//add by lxb 111228
|
|
void CLeaderDlg::OnCHKOnline()
|
|
{
|
|
CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE));
|
|
CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER));
|
|
if (pBtn1->GetCheck() == BST_CHECKED)
|
|
{
|
|
pBtn2->SetCheck(BST_UNCHECKED);
|
|
}
|
|
UpdateData();
|
|
}
|
|
|
|
//add by lxb 111228
|
|
void CLeaderDlg::OnCHKLeader()
|
|
{
|
|
CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE));
|
|
CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER));
|
|
if (pBtn2->GetCheck() == BST_CHECKED)
|
|
{
|
|
pBtn1->SetCheck(BST_UNCHECKED);
|
|
}
|
|
UpdateData();
|
|
}
|
|
|
|
//add by lxb 111228
|
|
void CLeaderDlg::SetCheckBoxStatus(BOOL bEnableFlag)
|
|
{
|
|
if (!bEnableFlag)
|
|
{
|
|
if (s_iLeaderStyle == 1)
|
|
{
|
|
((CButton*)GetDlgItem(IDC_CHECK_ONLINE))->EnableWindow(FALSE);
|
|
((CButton*)GetDlgItem(IDC_CHK_LERDER))->EnableWindow(FALSE);
|
|
}
|
|
else
|
|
{
|
|
((CButton*)GetDlgItem(IDC_CHK_LERDER))->EnableWindow(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
((CButton*)GetDlgItem(IDC_CHECK_ONLINE))->EnableWindow(TRUE);
|
|
((CButton*)GetDlgItem(IDC_CHK_LERDER))->EnableWindow(TRUE);
|
|
}
|
|
}
|
|
|
|
int CLeaderDlg::GetLeaderStyle()
|
|
{
|
|
return s_iLeaderStyle;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////
|
|
IMPLEMENT_DYNAMIC(CEditLeaderDlg, CLeaderDlg)
|
|
CEditLeaderDlg::CEditLeaderDlg(CWnd *pParent)
|
|
: CLeaderDlg(TRUE, CEditLeaderDlg::IDD, pParent)
|
|
{
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CEditLeaderDlg, CLeaderDlg)
|
|
ON_BN_CLICKED(IDC_ADDDIM, OnBnClickedAdddim)
|
|
ON_BN_CLICKED(IDC_CHECK_ONLINE, OnBnClickedCheckOnline)
|
|
ON_BN_CLICKED(IDC_CHK_LERDER, OnBnClickedChkEditleaer)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CEditLeaderDlg::OnBnClickedAdddim()
|
|
{
|
|
EndDialog(1000);
|
|
}
|
|
|
|
//add by lxb 111228
|
|
void CEditLeaderDlg::OnBnClickedCheckOnline()
|
|
{
|
|
CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE));
|
|
CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER));
|
|
if (pBtn1->GetCheck() == BST_CHECKED)
|
|
{
|
|
pBtn2->SetCheck(BST_UNCHECKED);
|
|
}
|
|
UpdateData();
|
|
}
|
|
|
|
//add by lxb 111228
|
|
void CEditLeaderDlg::OnBnClickedChkEditleaer()
|
|
{
|
|
CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE));
|
|
CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER));
|
|
if (pBtn2->GetCheck() == BST_CHECKED)
|
|
{
|
|
pBtn1->SetCheck(BST_UNCHECKED);
|
|
}
|
|
UpdateData();
|
|
}
|