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++

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 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