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.
TwoLaserHead-PushJig/LaiPuLaser/DlgVariableString.cpp

440 lines
11 KiB
C++

// VariableStringDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#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 <20>Ի<EFBFBD><D4BB><EFBFBD>
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 <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if 1//<2F><>ʼ<EFBFBD><CABC>
BOOL CDlgVariableString::OnInitDialog()
{
CDialogEx::OnInitDialog();
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɱ<EFBFBD><C9B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
IniValStrTypeComb();
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɱ<EFBFBD><C9B1>ַ<EFBFBD>list
IniValStrList();
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ֿ<EFBFBD><D6BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
IniFontStyleComb();
UpdateData(FALSE);
return TRUE;
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɱ<EFBFBD><C9B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
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);
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>
void CDlgVariableString::IniCtrVal()
{
m_CurSelListIdx = -1;
m_pObjString = NULL;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
m_bValStr = false;
m_String = "";
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ֿ<EFBFBD><D6BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
void CDlgVariableString::IniFontStyleComb()
{
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pFontTypeMgr.FontTypeNameInsertToComb(m_FontTypeComb);
//<2F><><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>----------------------------------------------------------------------
pFontTypeMgr.UpdateFontNameComb(m_FontNameComb);
}
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CDlgVariableString::Check()
{
if((m_pObjString))
return true;
return false;
}
//DlgValStr <20><><EFBFBD><EFBFBD>
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//<2F>ɱ<EFBFBD><C9B1>ı<EFBFBD>
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɱ<EFBFBD><C9B1>ַ<EFBFBD>list
void CDlgVariableString::IniValStrList()
{
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
m_ValStrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int idx = 0;
m_ValStrList.InsertColumn(idx,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",LVCFMT_CENTER,50,-1);
idx++;
m_ValStrList.InsertColumn(idx,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",LVCFMT_CENTER,90,-1);
}
void CDlgVariableString::RefreshValStrList()
{
m_ValStrList.DeleteAllItems();
m_CurSelListIdx = -1;
if(Check())
{
m_ValString.InsertList(m_ValStrList);
}
UpdateData(FALSE);
}
//<2F><>ȡlist <20><>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
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;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
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)//<2F><><EFBFBD>ӵİ<D3B5><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int idx = m_ValStrTypeComb.GetCurSel();
pDlg = DlgValStrFactory((VAL_STR_TYPR)idx);
}
else//<2F>޸ĵİ<C4B5><C4B0><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
{
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();//Ӧ<><D3A6>
}
}
//<2F><><EFBFBD><EFBFBD>
void CDlgVariableString::OnBnClickedAddValStrBtn()
{
AddOrModif(true);
}
//<2F>޸<EFBFBD>
void CDlgVariableString::OnBnClickedModifValStrBtn()
{
AddOrModif(false);
}
//ɾ<><C9BE>
void CDlgVariableString::OnBnClickedDelValStrBtn()
{
if(!Check())
return;
m_ValString.DelSelValStr(m_CurSelListIdx);
CreatObjUseNewPar();//Ӧ<><D3A6>
RefreshValStrList();
}
void CDlgVariableString::SwapValStr(int NewIdx)
{
if(!Check())
return;
m_ValString.SwapValStr(m_CurSelListIdx,NewIdx);
RefreshValStrList();
//Ӧ<><D3A6>
CreatObjUseNewPar();
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
m_CurSelListIdx = NewIdx;
m_ValStrList.SetItemState(m_CurSelListIdx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_ValStrList.SetFocus();
}
//<2F><><EFBFBD><EFBFBD>
void CDlgVariableString::OnBnClickedUpValStrBtn()
{
int NewIdx = m_CurSelListIdx-1;
SwapValStr(NewIdx);
}
//<2F><><EFBFBD><EFBFBD>
void CDlgVariableString::OnBnClickedDownValStrBtn()
{
int NewIdx = m_CurSelListIdx+1;
SwapValStr(NewIdx);
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ÿɱ<C3BF><C9B1>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>صĿؼ<C4BF>
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);
}
//<2F>л<EFBFBD><D0BB>Ƿ<EFBFBD>Ϊ<EFBFBD>ɱ<EFBFBD><C9B1>ı<EFBFBD>
void CDlgVariableString::OnBnClickedValStrCheck()
{
UpdateData(TRUE);
m_bValStr = m_bValStrCheck.GetCheck();
EnableValStrCtr(m_bValStr);
}
#endif
#if 1
//<2F><><EFBFBD><EFBFBD>text <20><>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD>ʾ
void CDlgVariableString::BindingObjString(CObjString *p)
{
if(!p)
return;
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
m_pObjString = p;
//<2F><><EFBFBD><EFBFBD>p <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
pFontTypeMgr.SetCurFontByName(p->GetFontTypeName(),p->GetFontName());
//<2F><><EFBFBD>ÿɱ<C3BF><C9B1>ı<EFBFBD><C4B1>Ŀ<EFBFBD><C4BF><EFBFBD>
p->GetValStrCopy(m_ValString);
//<2F><>Ӧ<EFBFBD><D3A6><EFBFBD>ؼ<EFBFBD>
m_bValStr = m_ValString.GetbValStr();
m_String = m_ValString.GetString();
//ˢ<>¿ؼ<C2BF><D8BC><EFBFBD>ʾ
RefreshControlVal();
}
//ˢ<>¿ؼ<C2BF><D8BC><EFBFBD>ֵ
void CDlgVariableString::RefreshControlVal()
{
//<2F>Ƿ<EFBFBD><C7B7>ɱ<EFBFBD><C9B1>ı<EFBFBD>check
m_bValStrCheck.SetCheck(m_bValStr);
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ÿɱ<C3BF><C9B1>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>صĿؼ<C4BF>
EnableValStrCtr(m_bValStr);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ֿ<EFBFBD><D6BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
IniFontStyleComb();
UpdateData(FALSE);
//<2F>ɱ<EFBFBD><C9B1>ı<EFBFBD><C4B1>б<EFBFBD>
RefreshValStrList();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ӧ
void CDlgVariableString::OnCbnFontTypeChange()
{
UpdateData(TRUE);
int idx = m_FontTypeComb.GetCurSel();
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
pFontTypeMgr.SetCurFontType(idx);//<2F><><EFBFBD>õ<EFBFBD>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>CComboBox
pFontTypeMgr.UpdateFontNameComb(m_FontNameComb);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ӧ
void CDlgVariableString::OnCbnFontNameChange()
{
UpdateData(TRUE);
int idx = m_FontNameComb.GetCurSel();
CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance();
pFontTypeMgr.GetCurFontName(idx);//<2F><><EFBFBD>õ<EFBFBD>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CDlgVariableString::UnBindingObj()
{
IniCtrVal();
RefreshControlVal();
}
//<2F><><EFBFBD>°󶨶<C2B0><F3B6A8B6><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
void CDlgVariableString::UpdateBindingObjVal()
{
if(!Check())
return;
UpdateData(TRUE);
if(m_String=="")
{
m_String = "TEXT";
}
m_ValString.SetString(m_String);
m_ValString.SetbValStr(m_bValStr);
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ӧ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
m_pObjString->SetValStr(m_ValString);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
m_pObjString->SetUseCurFontName();
}
#endif
#if 1
//Ӧ<><D3A6>
void CDlgVariableString::OnBnClickedCommitBtn()
{
CreatObjUseNewPar();
}
//Ӧ<><D3A6><EFBFBD>͵IJ<CDB5><C4B2><EFBFBD><EFBFBD><EFBFBD>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);//<2F><><EFBFBD><EFBFBD><EFBFBD>ɵIJ<C9B5><C4B2><EFBFBD>
//<2F><><EFBFBD>°󶨶<C2B0><F3B6A8B6><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
UpdateBindingObjVal();
m_pObjString->GetValStrCopy(par.m_ValString);
par.m_FontTypeName = m_pObjString->GetFontTypeName();
par.m_FontName = m_pObjString->GetFontName();
pCmd->SetStringPar(par,false);//<2F><><EFBFBD><EFBFBD><EFBFBD>µIJ<C2B5><C4B2><EFBFBD>
gCommandMgr.AddUndoCommand(pCmd);
pCmd->Excute();
GetCurViewPtr()->RefreshView();
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gMarkObjPropertieMgr->UpdateSelMarkObjPropertie();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD>ť
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();
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gMarkObjPropertieMgr->UpdateSelMarkObjPropertie();
}
}
}
//<2F><><EFBFBD><EFBFBD>
void CDlgVariableString::OnBnClickedFillBtn()
{
if(!Check())
return;
CDlgFill dlg(m_pObjString->GetFillPar());
if(dlg.DoModal()==IDOK)
{
GetCurViewPtr()->RefreshView();
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gMarkObjPropertieMgr->UpdateSelMarkObjPropertie();
}
}
#endif