|
|
// VariableStringDlg.cpp : ʵÏÖÎļþ
|
|
|
//
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
#include "LaiPuLaser.h"
|
|
|
#include "DlgVariableString.h"
|
|
|
#include "afxdialogex.h"
|
|
|
#include "ValStrFixed.h"
|
|
|
#include "ValStrDate.h"
|
|
|
#include "DlgValStrFixed.h"
|
|
|
#include "DlgValStrDate.h"
|
|
|
#include "DlgValStrTime.h"
|
|
|
#include "DlgValStrSN.h"
|
|
|
#include "DlgFontset.h"
|
|
|
#include "GlobalFunction.h"
|
|
|
#include "ObjTxt.h"
|
|
|
#include "FontTypeMgr.h"
|
|
|
#include "LogMgr.h"
|
|
|
#include "MarkObjPropertieMgr.h"
|
|
|
#include "CommandModifiString.h"
|
|
|
#include "DlgFill.h"
|
|
|
#include "CommandMgr.h"
|
|
|
|
|
|
// CDlgVariableString ¶Ô»°¿ò
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CDlgVariableString, CDialogEx)
|
|
|
|
|
|
CDlgVariableString::CDlgVariableString(CWnd* pParent /*=NULL*/)
|
|
|
{
|
|
|
IniCtrVal();
|
|
|
}
|
|
|
|
|
|
CDlgVariableString::~CDlgVariableString()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void CDlgVariableString::DoDataExchange(CDataExchange* pDX)
|
|
|
{
|
|
|
CDialogEx::DoDataExchange(pDX);
|
|
|
DDX_Control(pDX, IDC_VAL_STR_LIST, m_ValStrList);
|
|
|
DDX_Control(pDX, IDC_VAL_STR_TYPE_COMBO, m_ValStrTypeComb);
|
|
|
DDX_Control(pDX, IDC_FONT_COMBO, m_FontNameComb);
|
|
|
DDX_Control(pDX, IDC_FONT_TYPE_COMBO, m_FontTypeComb);
|
|
|
|
|
|
DDX_Control(pDX, IDC_VAL_STR_CHECK, m_bValStrCheck);
|
|
|
DDX_Text(pDX, IDC_STR_EDIT, m_String);
|
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDlgVariableString, CDialogEx)
|
|
|
ON_BN_CLICKED(IDC_ADD_VAL_STR_BTN, &CDlgVariableString::OnBnClickedAddValStrBtn)
|
|
|
ON_BN_CLICKED(IDC_DEL_VAL_STR_BTN, &CDlgVariableString::OnBnClickedDelValStrBtn)
|
|
|
ON_BN_CLICKED(IDC_UP_VAL_STR_BTN, &CDlgVariableString::OnBnClickedUpValStrBtn)
|
|
|
ON_BN_CLICKED(IDC_DOWN_VAL_STR_BTN, &CDlgVariableString::OnBnClickedDownValStrBtn)
|
|
|
ON_NOTIFY(NM_CLICK, IDC_VAL_STR_LIST, &CDlgVariableString::OnNMClickValStrList)
|
|
|
ON_BN_CLICKED(IDC_MODIF_VAL_STR_BTN, &CDlgVariableString::OnBnClickedModifValStrBtn)
|
|
|
ON_BN_CLICKED(IDC_FONT_BTN, &CDlgVariableString::OnBnClickedFontBtn)
|
|
|
ON_BN_CLICKED(IDC_VAL_STR_CHECK, &CDlgVariableString::OnBnClickedValStrCheck)
|
|
|
ON_BN_CLICKED(IDC_COMMIT_BTN, &CDlgVariableString::OnBnClickedCommitBtn)
|
|
|
ON_CBN_SELCHANGE(IDC_FONT_COMBO,OnCbnFontNameChange)
|
|
|
ON_CBN_SELCHANGE(IDC_FONT_TYPE_COMBO,OnCbnFontTypeChange)
|
|
|
|
|
|
|
|
|
ON_BN_CLICKED(IDC_FILL_BTN, &CDlgVariableString::OnBnClickedFillBtn)
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CDlgVariableString ÏûÏ¢´¦Àí³ÌÐò
|
|
|
#if 1//³õʼ»¯
|
|
|
BOOL CDlgVariableString::OnInitDialog()
|
|
|
{
|
|
|
CDialogEx::OnInitDialog();
|
|
|
//³õʼ»¯¿É±ä×Ö·ûÀàÐÍÏÂÀÁбí
|
|
|
IniValStrTypeComb();
|
|
|
//³õʼ»¯¿É±ä×Ö·ûlist
|
|
|
IniValStrList();
|
|
|
//³õʼ»¯×Ö¿âÎļþÏÂÀÁбí
|
|
|
IniFontStyleComb();
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
return TRUE;
|
|
|
}
|
|
|
//³õʼ»¯¿É±ä×Ö·ûÀàÐÍÏÂÀÁбí
|
|
|
void CDlgVariableString::IniValStrTypeComb()
|
|
|
{
|
|
|
for(VAL_STR_TYPR type = _STR_FIXED;type<_STR_ERROR;type = (VAL_STR_TYPR)(type+1))
|
|
|
{
|
|
|
CValStrBase ValStrBase;
|
|
|
ValStrBase.SetValStrType(type);
|
|
|
m_ValStrTypeComb.InsertString(type,ValStrBase.GetValTypeStr());
|
|
|
}
|
|
|
m_ValStrTypeComb.SetCurSel(0);
|
|
|
}
|
|
|
//³õʼ»¯¿Ø¼þ±äÁ¿
|
|
|
void CDlgVariableString::IniCtrVal()
|
|
|
{
|
|
|
m_CurSelListIdx = -1;
|
|
|
m_pObjString = NULL;//µ±Ç°²Ù×÷¶ÔÏóµÄÖ¸Õë
|
|
|
m_bValStr = false;
|
|
|
m_String = "";
|
|
|
}
|
|
|
//³õʼ»¯×Ö¿âÎļþÏÂÀÁбí
|
|
|
void CDlgVariableString::IniFontStyleComb()
|
|
|
{
|
|
|
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
|
|
|
//×ÖÌåÀàÐÍ
|
|
|
pFontTypeMgr.FontTypeNameInsertToComb(m_FontTypeComb);
|
|
|
//²åÈëµ½ÏÂÀÁбí----------------------------------------------------------------------
|
|
|
pFontTypeMgr.UpdateFontNameComb(m_FontNameComb);
|
|
|
}
|
|
|
#endif
|
|
|
//¼ì²é°ó¶¨
|
|
|
bool CDlgVariableString::Check()
|
|
|
{
|
|
|
if((m_pObjString))
|
|
|
return true;
|
|
|
return false;
|
|
|
}
|
|
|
//DlgValStr ¹¤³§
|
|
|
CDlgValStrBase *CDlgVariableString::DlgValStrFactory(VAL_STR_TYPR type)
|
|
|
{
|
|
|
CDlgValStrBase *p = NULL;
|
|
|
switch(type)
|
|
|
{
|
|
|
case _STR_FIXED:
|
|
|
p = new CDlgValStrFixed;
|
|
|
break;
|
|
|
case _STR_SN:
|
|
|
p = new CDlgValStrSN;
|
|
|
break;
|
|
|
case _STR_DATE:
|
|
|
p = new CDlgValStrDate;
|
|
|
break;
|
|
|
case _STR_TIME:
|
|
|
p = new CDlgValStrTime;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
return p;
|
|
|
}
|
|
|
#if 1//¿É±äÎı¾
|
|
|
//³õʼ»¯¿É±ä×Ö·ûlist
|
|
|
void CDlgVariableString::IniValStrList()
|
|
|
{
|
|
|
//ÉèÖ÷ç¸ñ
|
|
|
m_ValStrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
|
|
|
//ÉèÖÃÁÐ
|
|
|
int idx = 0;
|
|
|
m_ValStrList.InsertColumn(idx,"ÀàÐÍ",LVCFMT_CENTER,50,-1);
|
|
|
idx++;
|
|
|
m_ValStrList.InsertColumn(idx,"ÄÚÈÝ",LVCFMT_CENTER,90,-1);
|
|
|
}
|
|
|
void CDlgVariableString::RefreshValStrList()
|
|
|
{
|
|
|
m_ValStrList.DeleteAllItems();
|
|
|
m_CurSelListIdx = -1;
|
|
|
if(Check())
|
|
|
{
|
|
|
m_ValString.InsertList(m_ValStrList);
|
|
|
}
|
|
|
UpdateData(FALSE);
|
|
|
}
|
|
|
//»ñÈ¡list µ±Ç°Ñ¡ÔñµÄÐкÅ
|
|
|
int CDlgVariableString::GetCurListIdx(CListCtrl &list)
|
|
|
{
|
|
|
POSITION pos = m_ValStrList.GetFirstSelectedItemPosition();
|
|
|
if (pos == NULL)
|
|
|
{
|
|
|
return -1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
while (pos)
|
|
|
{
|
|
|
int nItem = m_ValStrList.GetNextSelectedItem(pos);
|
|
|
return nItem;
|
|
|
}
|
|
|
}
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
//µ¥»÷Áбí
|
|
|
void CDlgVariableString::OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
|
{
|
|
|
*pResult = 0;
|
|
|
m_CurSelListIdx=GetCurListIdx(m_ValStrList);
|
|
|
}
|
|
|
bool CDlgVariableString::AddOrModifValStr(bool bAdd)
|
|
|
{
|
|
|
if(!Check())
|
|
|
return false;
|
|
|
if(!bAdd&&m_CurSelListIdx==-1)
|
|
|
return false;
|
|
|
|
|
|
CDlgValStrBase *pDlg = NULL;
|
|
|
if(bAdd)//Ôö¼ÓµÄ°´ÕÕÏÂÀ¿ò
|
|
|
{
|
|
|
int idx = m_ValStrTypeComb.GetCurSel();
|
|
|
pDlg = DlgValStrFactory((VAL_STR_TYPR)idx);
|
|
|
}
|
|
|
else//Ð޸ĵİ´ÕÕÁбí¿ò
|
|
|
{
|
|
|
pDlg = DlgValStrFactory(m_ValString.GetSelValStrType(m_CurSelListIdx));
|
|
|
}
|
|
|
if(pDlg)
|
|
|
{
|
|
|
pDlg->SetParm(&m_ValString,bAdd,m_CurSelListIdx);
|
|
|
if(pDlg->DoModal() == IDOK)
|
|
|
{
|
|
|
RefreshValStrList();
|
|
|
delete pDlg;
|
|
|
return true;
|
|
|
}
|
|
|
delete pDlg;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
void CDlgVariableString::AddOrModif(bool b)
|
|
|
{
|
|
|
if(AddOrModifValStr(b))
|
|
|
{
|
|
|
CreatObjUseNewPar();//Ó¦ÓÃ
|
|
|
}
|
|
|
}
|
|
|
//Ôö¼Ó
|
|
|
void CDlgVariableString::OnBnClickedAddValStrBtn()
|
|
|
{
|
|
|
AddOrModif(true);
|
|
|
}
|
|
|
//ÐÞ¸Ä
|
|
|
void CDlgVariableString::OnBnClickedModifValStrBtn()
|
|
|
{
|
|
|
AddOrModif(false);
|
|
|
}
|
|
|
//ɾ³ý
|
|
|
void CDlgVariableString::OnBnClickedDelValStrBtn()
|
|
|
{
|
|
|
if(!Check())
|
|
|
return;
|
|
|
m_ValString.DelSelValStr(m_CurSelListIdx);
|
|
|
CreatObjUseNewPar();//Ó¦ÓÃ
|
|
|
RefreshValStrList();
|
|
|
}
|
|
|
void CDlgVariableString::SwapValStr(int NewIdx)
|
|
|
{
|
|
|
if(!Check())
|
|
|
return;
|
|
|
m_ValString.SwapValStr(m_CurSelListIdx,NewIdx);
|
|
|
RefreshValStrList();
|
|
|
//Ó¦ÓÃ
|
|
|
CreatObjUseNewPar();
|
|
|
//ÉèÖÃÁбíµÄÑ¡ÖÐÏî
|
|
|
m_CurSelListIdx = NewIdx;
|
|
|
m_ValStrList.SetItemState(m_CurSelListIdx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
|
|
|
m_ValStrList.SetFocus();
|
|
|
}
|
|
|
|
|
|
//ÉÏÒÆ
|
|
|
void CDlgVariableString::OnBnClickedUpValStrBtn()
|
|
|
{
|
|
|
int NewIdx = m_CurSelListIdx-1;
|
|
|
SwapValStr(NewIdx);
|
|
|
}
|
|
|
//ÏÂÒÆ
|
|
|
void CDlgVariableString::OnBnClickedDownValStrBtn()
|
|
|
{
|
|
|
int NewIdx = m_CurSelListIdx+1;
|
|
|
SwapValStr(NewIdx);
|
|
|
}
|
|
|
//ÊÇ·ñ½ûÓÿɱäÎı¾Ïà¹ØµÄ¿Ø¼þ
|
|
|
void CDlgVariableString::EnableValStrCtr(bool bEnable)
|
|
|
{
|
|
|
m_ValStrList.EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_ADD_VAL_STR_BTN)->EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_DEL_VAL_STR_BTN)->EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_UP_VAL_STR_BTN)->EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_DOWN_VAL_STR_BTN)->EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_MODIF_VAL_STR_BTN)->EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_VAL_STR_TYPE_COMBO)->EnableWindow(bEnable);
|
|
|
GetDlgItem(IDC_STR_EDIT)->EnableWindow(!bEnable);
|
|
|
}
|
|
|
//Çл»ÊÇ·ñΪ¿É±äÎı¾
|
|
|
void CDlgVariableString::OnBnClickedValStrCheck()
|
|
|
{
|
|
|
UpdateData(TRUE);
|
|
|
m_bValStr = m_bValStrCheck.GetCheck();
|
|
|
EnableValStrCtr(m_bValStr);
|
|
|
}
|
|
|
#endif
|
|
|
#if 1
|
|
|
//°ó¶¨text ²¢Ë¢ÐÂÏÔʾ
|
|
|
void CDlgVariableString::BindingObjString(CObjString *p)
|
|
|
{
|
|
|
if(!p)
|
|
|
return;
|
|
|
//°ó¶¨Ö¸Õë
|
|
|
m_pObjString = p;
|
|
|
//ÉèÖÃp ¶ÔÓ¦µÄ×ÖÌåΪµ±Ç°×ÖÌå
|
|
|
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
|
|
|
pFontTypeMgr.SetCurFontByName(p->GetFontTypeName(),p->GetFontName());
|
|
|
//»ñµÃ¿É±äÎı¾µÄ¿½±´
|
|
|
p->GetValStrCopy(m_ValString);
|
|
|
//¶ÔÓ¦µ½¿Ø¼þ
|
|
|
m_bValStr = m_ValString.GetbValStr();
|
|
|
m_String = m_ValString.GetString();
|
|
|
//ˢпؼþÏÔʾ
|
|
|
RefreshControlVal();
|
|
|
}
|
|
|
|
|
|
//ˢпؼþµÄÖµ
|
|
|
void CDlgVariableString::RefreshControlVal()
|
|
|
{
|
|
|
//ÊÇ·ñ¿É±äÎı¾check
|
|
|
m_bValStrCheck.SetCheck(m_bValStr);
|
|
|
//ÊÇ·ñ½ûÓÿɱäÎı¾Ïà¹ØµÄ¿Ø¼þ
|
|
|
EnableValStrCtr(m_bValStr);
|
|
|
//³õʼ»¯×Ö¿âÎļþÏÂÀÁбí
|
|
|
IniFontStyleComb();
|
|
|
UpdateData(FALSE);
|
|
|
//¿É±äÎı¾Áбí
|
|
|
RefreshValStrList();
|
|
|
}
|
|
|
|
|
|
//×ÖÌåÀàÐÍÑ¡ÔñÏàÓ¦
|
|
|
void CDlgVariableString::OnCbnFontTypeChange()
|
|
|
{
|
|
|
UpdateData(TRUE);
|
|
|
int idx = m_FontTypeComb.GetCurSel();
|
|
|
|
|
|
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
|
|
|
pFontTypeMgr.SetCurFontType(idx);//ÉèÖõ±Ç°Ñ¡ÔñµÄ×ÖÌå
|
|
|
//Ë¢ÐÂ×ÖÌåÃû×ÖÏÂÀÁбíCComboBox
|
|
|
pFontTypeMgr.UpdateFontNameComb(m_FontNameComb);
|
|
|
}
|
|
|
//×ÖÌåÃû³ÆÑ¡ÔñÏìÓ¦
|
|
|
void CDlgVariableString::OnCbnFontNameChange()
|
|
|
{
|
|
|
UpdateData(TRUE);
|
|
|
int idx = m_FontNameComb.GetCurSel();
|
|
|
|
|
|
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
|
|
|
pFontTypeMgr.GetCurFontName(idx);//ÉèÖõ±Ç°Ñ¡ÔñµÄ×ÖÌå
|
|
|
}
|
|
|
//È¡Ïû°ó¶¨
|
|
|
void CDlgVariableString::UnBindingObj()
|
|
|
{
|
|
|
IniCtrVal();
|
|
|
RefreshControlVal();
|
|
|
}
|
|
|
//¸üа󶨶ÔÏóµÄ²ÎÊý
|
|
|
void CDlgVariableString::UpdateBindingObjVal()
|
|
|
{
|
|
|
if(!Check())
|
|
|
return;
|
|
|
|
|
|
UpdateData(TRUE);
|
|
|
if(m_String=="")
|
|
|
{
|
|
|
m_String = "TEXT";
|
|
|
}
|
|
|
m_ValString.SetString(m_String);
|
|
|
m_ValString.SetbValStr(m_bValStr);
|
|
|
|
|
|
//ÁÙʱ¶ÔÏóÓ¦Óõ½¶ÔÏó
|
|
|
m_pObjString->SetValStr(m_ValString);
|
|
|
//±£´æÉèÖõÄ×ÖÌå
|
|
|
m_pObjString->SetUseCurFontName();
|
|
|
}
|
|
|
#endif
|
|
|
#if 1
|
|
|
//Ó¦ÓÃ
|
|
|
void CDlgVariableString::OnBnClickedCommitBtn()
|
|
|
{
|
|
|
CreatObjUseNewPar();
|
|
|
}
|
|
|
//Ó¦ÓÃÐ͵IJÎÊýµ½obj
|
|
|
void CDlgVariableString::CreatObjUseNewPar()
|
|
|
{
|
|
|
if(!Check())
|
|
|
return;
|
|
|
|
|
|
CCommandModifiString *pCmd = new CCommandModifiString;
|
|
|
|
|
|
SStringPar par;
|
|
|
m_pObjString->GetValStrCopy(par.m_ValString);
|
|
|
par.m_FontTypeName = m_pObjString->GetFontTypeName();
|
|
|
par.m_FontName = m_pObjString->GetFontName();
|
|
|
pCmd->SetStringPar(par,true);//±£´æ¾ÉµÄ²ÎÊý
|
|
|
|
|
|
//¸üа󶨶ÔÏóµÄ²ÎÊý
|
|
|
UpdateBindingObjVal();
|
|
|
|
|
|
m_pObjString->GetValStrCopy(par.m_ValString);
|
|
|
par.m_FontTypeName = m_pObjString->GetFontTypeName();
|
|
|
par.m_FontName = m_pObjString->GetFontName();
|
|
|
pCmd->SetStringPar(par,false);//±£´æеIJÎÊý
|
|
|
|
|
|
gCommandMgr.AddUndoCommand(pCmd);
|
|
|
pCmd->Excute();
|
|
|
|
|
|
GetCurViewPtr()->RefreshView();
|
|
|
//¸üÐÂͼÐÎÊôÐÔ
|
|
|
gMarkObjPropertieMgr->UpdateSelMarkObjPropertie();
|
|
|
}
|
|
|
//×ÖÌåÉèÖð´Å¥
|
|
|
void CDlgVariableString::OnBnClickedFontBtn()
|
|
|
{
|
|
|
if(!Check())
|
|
|
return;
|
|
|
|
|
|
if(strcmp(typeid(CObjTxt).name(), typeid(*m_pObjString).name()) == 0)
|
|
|
{
|
|
|
CObjTxt *p = dynamic_cast<CObjTxt*>(m_pObjString);
|
|
|
CDlgFontSet dlg(p->GetFontPar());
|
|
|
if(dlg.DoModal()==IDOK)
|
|
|
{
|
|
|
GetCurViewPtr()->RefreshView();
|
|
|
//¸üÐÂͼÐÎÊôÐÔ
|
|
|
gMarkObjPropertieMgr->UpdateSelMarkObjPropertie();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//Ìî³ä
|
|
|
void CDlgVariableString::OnBnClickedFillBtn()
|
|
|
{
|
|
|
if(!Check())
|
|
|
return;
|
|
|
|
|
|
CDlgFill dlg(m_pObjString->GetFillPar());
|
|
|
if(dlg.DoModal()==IDOK)
|
|
|
{
|
|
|
GetCurViewPtr()->RefreshView();
|
|
|
//¸üÐÂͼÐÎÊôÐÔ
|
|
|
gMarkObjPropertieMgr->UpdateSelMarkObjPropertie();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|