|
|
#include "StdAfx.h"
|
|
|
//#include "DFDrawProDoc.h"
|
|
|
//#include "DFDrawProView.h"
|
|
|
#include ".\PublicParam.h"
|
|
|
//#include ".\previewviewex.h"
|
|
|
//#include ".\TreePropertySheet.h"
|
|
|
#include "ScaleSelectPage.h"
|
|
|
#include "ScaleUnitPage.h"
|
|
|
#include "ScaleViewPage.h"
|
|
|
//#include ".\mainfrm.h"
|
|
|
|
|
|
|
|
|
CPublicParam theParam;
|
|
|
|
|
|
CPublicParam& CPublicParam::GetParam()
|
|
|
{
|
|
|
return theParam;
|
|
|
}
|
|
|
|
|
|
CPublicParam::CPublicParam(void)
|
|
|
{
|
|
|
m_pPageSetup = NULL;
|
|
|
m_nRefPageSetupCounter = 0;
|
|
|
m_pDocType = NULL;
|
|
|
m_nRefDocTypeCounter = 0;
|
|
|
m_nRefUndoManager = 0;
|
|
|
m_nRefCursorCounter = 0;
|
|
|
}
|
|
|
|
|
|
CPublicParam::~CPublicParam(void)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
CString CPublicParam::GetSaveDefaultExt(void)
|
|
|
{
|
|
|
CString strExt = _T(".kev");
|
|
|
|
|
|
//switch(::GetPreferences().WorkaroundSave.m_nDefaultSaveFormat)
|
|
|
//{
|
|
|
//case 0: strExt=_T(".dfd"); break;
|
|
|
//default:
|
|
|
//case 1: strExt=_T(".dfb"); break;
|
|
|
//case 2: strExt=_T(".dml"); break;
|
|
|
//}
|
|
|
return strExt;
|
|
|
}
|
|
|
|
|
|
// prompt for file name - used for open and save as
|
|
|
BOOL CPublicParam::DoPromptFileNameEx(CString& fileName, UINT nIDSTitle, DWORD lFlags,
|
|
|
BOOL bOpenFileDialog, int* pDocType/*=NULL*/)
|
|
|
{
|
|
|
int nDefaultType= DF_FORMAT_ASCII;
|
|
|
//switch(::GetPreferences().WorkaroundSave.m_nDefaultSaveFormat)
|
|
|
//{
|
|
|
//case 0: nDefaultType=DF_FORMAT_ASCII; break;
|
|
|
//case 1: nDefaultType=DF_FORMAT_BINARY; break;
|
|
|
// //case 2: nDefaultType=DF_FORMAT_DML; break;
|
|
|
//}
|
|
|
|
|
|
CString title=_T("Áí´æÎª");
|
|
|
INT_PTR nResult = m_pDocType->FileDialog(bOpenFileDialog, title, fileName,
|
|
|
lFlags, pDocType, nDefaultType);
|
|
|
|
|
|
return nResult == IDOK ? TRUE:FALSE;
|
|
|
}
|
|
|
|
|
|
BOOL CPublicParam::DoOpenFileDialog(CString strTitle, CStringList& fileNameList,
|
|
|
DWORD lFlags /*=OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT*/,
|
|
|
int* pDocTypeID /*=NULL*/, BOOL bAppendAllFileType/*=TRUE*/,
|
|
|
CWnd* pParentWnd/*=NULL*/, BOOL bVistaStyle/*=TRUE*/)
|
|
|
{
|
|
|
int nDefaultType= DF_FORMAT_ASCII;
|
|
|
//switch(::GetPreferences().WorkaroundSave.m_nDefaultSaveFormat)
|
|
|
//{
|
|
|
//case 0: nDefaultType=DF_FORMAT_ASCII; break;
|
|
|
//case 1: nDefaultType=DF_FORMAT_BINARY; break;
|
|
|
// //case 2: nDefaultType=DF_FORMAT_DML; break;
|
|
|
//}
|
|
|
|
|
|
INT_PTR nResult = m_pDocType->OpenFileDialog(strTitle, fileNameList, lFlags, pDocTypeID,
|
|
|
nDefaultType, bAppendAllFileType, pParentWnd, bVistaStyle);
|
|
|
|
|
|
return nResult == IDOK ? TRUE:FALSE;
|
|
|
}
|
|
|
|
|
|
void CPublicParam::Initial() //³õʼ»¯
|
|
|
{
|
|
|
//m_cursor.InitialCursor();
|
|
|
}
|
|
|
|
|
|
void CPublicParam::refAll() //¶ÔÒÔÏÂÐèÒªÒýÓõÄËùÓвÎÊý½øÐÐÒ»´ÎÒýÓòÙ×÷
|
|
|
{
|
|
|
refDocType();
|
|
|
//refPageSetup();
|
|
|
//refUndoManager();
|
|
|
//refCursor();
|
|
|
}
|
|
|
|
|
|
void CPublicParam::unrefAll()
|
|
|
{
|
|
|
unrefDocType();
|
|
|
//unrefPageSetup();
|
|
|
//unrefUndoManager();
|
|
|
//unrefCursor();
|
|
|
}
|
|
|
|
|
|
void CPublicParam::refCursor()
|
|
|
{
|
|
|
m_nRefCursorCounter++;
|
|
|
}
|
|
|
|
|
|
void CPublicParam::unrefCursor()
|
|
|
{
|
|
|
if(m_nRefCursorCounter <= 0) return;
|
|
|
m_nRefCursorCounter--;
|
|
|
}
|
|
|
|
|
|
void CPublicParam::refPageSetup(void)
|
|
|
{
|
|
|
//m_nRefPageSetupCounter ++;
|
|
|
//if(m_pPageSetup == NULL)
|
|
|
//{
|
|
|
// m_pPageSetup=new CPrintPageSetup;
|
|
|
// ((CPrintPageSetup*)m_pPageSetup)->Read(GetDrawINI());
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
void CPublicParam::unrefPageSetup(void)
|
|
|
{
|
|
|
//if(m_nRefPageSetupCounter <= 0) return;
|
|
|
//m_nRefPageSetupCounter--;
|
|
|
//if(m_nRefPageSetupCounter == 0)
|
|
|
//{
|
|
|
// delete (CPrintPageSetup*)m_pPageSetup;
|
|
|
// m_pPageSetup=NULL;
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
void CPublicParam::refDocType()
|
|
|
{
|
|
|
m_nRefDocTypeCounter++;
|
|
|
if(m_pDocType == NULL)
|
|
|
{
|
|
|
m_pDocType=new CDocType;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void CPublicParam::unrefDocType()
|
|
|
{
|
|
|
if(m_nRefDocTypeCounter <= 0) return;
|
|
|
m_nRefDocTypeCounter--;
|
|
|
if(m_nRefDocTypeCounter == 0)
|
|
|
{
|
|
|
delete (CDocType*)m_pDocType;
|
|
|
m_pDocType = NULL;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void CPublicParam::refUndoManager()
|
|
|
{
|
|
|
m_nRefUndoManager++;
|
|
|
if(m_nRefUndoManager == 1)
|
|
|
{
|
|
|
//CDrawUndoManager::CreateUndoManager();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void CPublicParam::unrefUndoManager()
|
|
|
{
|
|
|
if(m_nRefUndoManager <= 0) return;
|
|
|
|
|
|
m_nRefUndoManager--;
|
|
|
if(m_nRefUndoManager == 0)
|
|
|
{
|
|
|
//CDrawUndoManager::DeleteUndoManager();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void CPublicParam::PrintPageSetup(CWnd* pMainWnd)
|
|
|
{
|
|
|
//CPrintPageSetup* pPageSetup = m_pPageSetup;
|
|
|
|
|
|
//CPropertySheet sheet("Print");
|
|
|
//sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
|
|
|
//sheet.AddPage(pPageSetup);
|
|
|
//if(sheet.DoModal()!=IDOK) return;
|
|
|
//if(pPageSetup->m_bPreview)
|
|
|
//{
|
|
|
// pPageSetup->m_bPreview=FALSE;
|
|
|
// pMainWnd->SendMessage(WM_COMMAND,ID_FILE_PRINT_PREVIEW);
|
|
|
//}
|
|
|
//CMainFrame* pMainFrame = DYNAMIC_DOWNCAST(CMainFrame, pMainWnd);
|
|
|
//if(pMainFrame==NULL) return;
|
|
|
//CFrameWnd* pFrame = pMainFrame->MDIGetActive();
|
|
|
//if(!pFrame)return;
|
|
|
|
|
|
//CDrawDoc* pDoc=NULL;
|
|
|
//NCustomCtrl::CPreviewViewDraw* pView = DYNAMIC_DOWNCAST(NCustomCtrl::CPreviewViewDraw, pFrame->GetActiveView());
|
|
|
//if(pView)
|
|
|
//{
|
|
|
// pDoc=(CDrawDoc *)(pView->GetDocument());
|
|
|
// if(pDoc->m_pItemPrint)
|
|
|
// pDoc->m_pItemPrint->ClearPreviewDC();
|
|
|
// pMainWnd->SendMessage(WM_COMMAND,ID_VIEW_REDRAW);
|
|
|
// return;
|
|
|
//}
|
|
|
//CDrawView* pdv = DYNAMIC_DOWNCAST(CDrawView, pFrame->GetActiveView());
|
|
|
//if(pdv)
|
|
|
//{
|
|
|
// pDoc=pdv->GetDocument();
|
|
|
// if(pDoc->m_pItemPrint)
|
|
|
// pDoc->m_pItemPrint->ClearPreviewDC();
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
//ÉèÖÃȱʡ´òÓ¡»úµÄ´òÓ¡Ö½·½Ïò
|
|
|
void CPublicParam::SetDefaultPrintOrientation(UINT nOrientation)
|
|
|
{
|
|
|
//»ñÈ¡´òÓ¡»úµÄÉ豸ÊôÐÔ
|
|
|
PRINTDLG pd;
|
|
|
pd.lStructSize=(DWORD)sizeof(PRINTDLG);
|
|
|
BOOL bRet=::AfxGetApp()->GetPrinterDeviceDefaults(&pd);
|
|
|
if(bRet)
|
|
|
{
|
|
|
// protect memory handle with ::GlobalLock and ::GlobalUnlock
|
|
|
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(pd.hDevMode);
|
|
|
// set orientation to landscape
|
|
|
//ºáÏò: DMORIENT_LANDSCAPE
|
|
|
//×ÝÏò: DMORIENT_PORTRAIT
|
|
|
pDevMode->dmOrientation=nOrientation;
|
|
|
::GlobalUnlock(pDevMode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
///< ²ÎÊýscaleHeightΪ 1ºÁÃ×´ú±íµÄʵ¼Ê³¤¶È
|
|
|
BOOL CPublicParam::DoScaleSetDialog(CSize8& scale, CSize &unit, bool bSameXY, CWnd* pParentWnd)
|
|
|
{
|
|
|
CPropertySheet sheet(IDS_STRING_SCALE_WIZARD, pParentWnd);
|
|
|
sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
|
|
|
|
|
|
CScaleUnitPage UnitPage;
|
|
|
CScaleSelectPage SelectPage;
|
|
|
sheet.AddPage(&SelectPage);
|
|
|
sheet.AddPage(&UnitPage);
|
|
|
|
|
|
SelectPage.m_bXnotY = !bSameXY;
|
|
|
UnitPage.m_bXnotY = !bSameXY;
|
|
|
UnitPage.m_xunitSel = unit.cx;
|
|
|
UnitPage.m_yunitSel = unit.cy;
|
|
|
|
|
|
///< ת»»Îª1ºÁÃ×´ú±íʵ¼Ê¶àÉÙºÁÃ×
|
|
|
double ddx, ddy;
|
|
|
ddx = scale.cx * UnitPage.GetUnit(unit.cx);
|
|
|
ddy = scale.cy * UnitPage.GetUnit(unit.cy);
|
|
|
|
|
|
AfxGetPublicFunction()->FloatToString(SelectPage.m_xscale, ddx, 10);
|
|
|
AfxGetPublicFunction()->FloatToString(SelectPage.m_yscale, ddy, 10);
|
|
|
|
|
|
INT_PTR rt = sheet.DoModal();
|
|
|
if(rt != IDOK && rt != ID_WIZFINISH) return FALSE;
|
|
|
|
|
|
//ÉèÖÃÐÂÑ¡ÔñµÄµ¥Î»
|
|
|
unit.cx = UnitPage.m_xunitSel;
|
|
|
unit.cy = UnitPage.m_yunitSel;
|
|
|
|
|
|
///< ÉèÖÃбÈÀý
|
|
|
scale.cx = atof(SelectPage.m_xscale); //µ¥Î»£ººÁÃ×
|
|
|
scale.cy = atof(SelectPage.m_yscale); //µ¥Î»£ººÁÃ×
|
|
|
scale.cx /= UnitPage.GetUnit(unit.cx); //µ¥Î»£ºÖ¸¶¨µÄʵ¼Êµ¥Î»
|
|
|
|
|
|
switch(unit.cy)
|
|
|
{
|
|
|
case CUnit::UNIT_SECOND: //Ϊʱ¼äµ¥Î»Ê±
|
|
|
case CUnit::UNIT_MS:
|
|
|
ddy = UnitPage.GetUnit(unit.cy);
|
|
|
break;
|
|
|
default:
|
|
|
scale.cy /= UnitPage.GetUnit(unit.cy); //µ¥Î»£ºÖ¸¶¨µÄʵ¼Êµ¥Î»
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
// < ²ÎÊýscale£ºÒ»¸öʵ¼Êµ¥Î»µÄºÁÃ׳¤¶È
|
|
|
BOOL CPublicParam::DoScaleViewDialog(CSize8& scale, CSize &unit, CWnd* pParentWnd)
|
|
|
{
|
|
|
CPropertySheet sheet(IDS_STRING_PANE_PROPERTIES, pParentWnd);
|
|
|
sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
|
|
|
|
|
|
CScaleViewPage page;
|
|
|
sheet.AddPage(&page);
|
|
|
|
|
|
///< ת»»Îª 1ºÁÃ×´ú±íµÄʵ¼Ê³¤¶È
|
|
|
CSize8 st = scale;
|
|
|
st.cx = 1.0/scale.cx;
|
|
|
st.cy = 1.0/scale.cy;
|
|
|
|
|
|
char s[256];
|
|
|
AfxGetPublicFunction()->FloatToString(s, st.cx, 10); page.m_strPrintX="1"; page.m_strRealX=s;
|
|
|
AfxGetPublicFunction()->FloatToString(s, st.cy, 10); page.m_strPrintY="1"; page.m_strRealY=s;
|
|
|
|
|
|
page.m_unit = unit;
|
|
|
|
|
|
if(sheet.DoModal()!=IDOK) return FALSE;
|
|
|
|
|
|
unit = page.m_unit;
|
|
|
|
|
|
double sr = 1, sp = 1;
|
|
|
sscanf(page.m_strPrintX, "%lf", &sp); sscanf(page.m_strRealX, "%lf", &sr);
|
|
|
if(fabs(sr) > 1e-10) scale.cx = sp/sr; //Ò»¸öʵ¼Êµ¥Î»µÄºÁÃ׳¤¶È
|
|
|
sscanf(page.m_strPrintY, "%lf", &sp); sscanf(page.m_strRealY, "%lf", &sr);
|
|
|
if(fabs(sr) > 1e-10) scale.cy = sp/sr; //Ò»¸öʵ¼Êµ¥Î»µÄºÁÃ׳¤¶È
|
|
|
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
///< »ñµÃÄ£°å´æ´¢µÄ·¾¶
|
|
|
CString CPublicParam::GetTemplatePath()
|
|
|
{
|
|
|
CSplitPath sp;
|
|
|
sp.SetModuleFileName();
|
|
|
return sp.GetPath()+"Template\\";
|
|
|
}
|
|
|
|
|
|
CString CPublicParam::GetTemplatePathPlane()
|
|
|
{
|
|
|
return GetTemplatePath()+"Plane\\";
|
|
|
}
|
|
|
|
|
|
CString CPublicParam::GetTemplatePathColumn()
|
|
|
{
|
|
|
return GetTemplatePath()+"Column\\";
|
|
|
}
|
|
|
|
|
|
CString CPublicParam::GetTemplatePathCorrelation()
|
|
|
{
|
|
|
return GetTemplatePath()+"Correlation\\";
|
|
|
}
|
|
|
|