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.

330 lines
9.7 KiB
C++

This file contains ambiguous Unicode 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.

#include "stdafx.h"
#include "LaiPuLaser.h"
#include "afxdialogex.h"
#include "DlgGraphEdit.h"
#include "PropertieMgr.h"
#include "ModuleDeviceMgr.h"
#include "ModuleDrawMgr.h"
#include "GlobalFunction.h"
#include "ObjSortMgr.h"
#include "AuthorityMgr.h"
#include "GlobalDrawMgr.h"
#include "LogMgr.h"
#include "WorkFileMgr.h"
#include "MsgBox.h"
#include "DlgChildRecipe.h"
#include "LanguageMgr.h"
#include "DlgDeviceMain.h"
#include "Layer.h"
#include "DlgMapHistory.h"
#define OPEN_MAIN_DLG_TIMER 1
#define OPEN_MAIN_DLG_TIMER_DELAY 300
IMPLEMENT_DYNAMIC(CDlgGraphEdit, CMyDlgView)
BEGIN_MESSAGE_MAP(CDlgGraphEdit, CMyDlgView)
ON_WM_TIMER()
ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED,OnPropertyChanged)
ON_BN_CLICKED(IDC_PER_OBJ, OnBnClickedPerObjBtn)
ON_BN_CLICKED(IDC_NEXT_OBJ,OnBnClickedNextObjBtn)
ON_BN_CLICKED(IDC_FRIST_OBJ,OnBnClickedFristObjBtn)
ON_BN_CLICKED(IDC_SHOW_OBJ_IDX,OnBnClickedShowObjIdx)
ON_BN_CLICKED(IDC_INSERT,OnBnClickedInsertBtn)
ON_BN_CLICKED(IDC_REVERSE_ORDER,OnBnClickedReverseOrderBtn)
ON_BN_CLICKED(IDC_OBJ_SORT_BTN,OnBnClickedObjSortBtn)
ON_BN_CLICKED(ID_OPEN_OBJ_BTN, OnBnClickedOpenObjBtn)
ON_BN_CLICKED(ID_SAVE_OBJ_BTN, OnBnClickedSaveObjBtn)
ON_BN_CLICKED(NEW_ZOOM_FULL_BTN, &CDlgGraphEdit::OnBnClickedZoomFullBtn)
ON_BN_CLICKED(NEW_ZOOM_IN_BTN, &CDlgGraphEdit::OnBnClickedZoomInBtn)
ON_BN_CLICKED(NEW_ZOOM_OUT_BTN, &CDlgGraphEdit::OnBnClickedZoomOutBtn)
ON_STN_CLICKED(NEW_OPEN_MAIN_DLG_BTN, &CDlgGraphEdit::OnStnClickedOpenMainDlg)
ON_BN_CLICKED(IDC_CREAT_AREA_BTN, &CDlgGraphEdit::OnBnClickedCreatAreaBtn)
ON_BN_CLICKED(ID_OPEN_TXT_BTN, &CDlgGraphEdit::OnBnClickedOpenTxtBtn)
ON_BN_CLICKED(ID_SAVE_TXT_BTN, &CDlgGraphEdit::OnBnClickedSaveTxtBtn)
ON_BN_CLICKED(IDC_SHOW_OBJ_PT_COORD, &CDlgGraphEdit::OnBnClickedShowObjPtCoord)
ON_BN_CLICKED(NEW_OPEN_MAP_HISTORY_BTN, &CDlgGraphEdit::OnBnClickedOpenMapHistoryBtn)
END_MESSAGE_MAP()
CDlgGraphEdit::CDlgGraphEdit(CWnd* pParent /*=NULL*/)
: CMyDlgView(CDlgGraphEdit::IDD, pParent)
{
m_InsertIdx = 1;//<2F><><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
m_AreaCrossPtRange = 10;//<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>Χ
m_CreatAreaGap = 2;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>mm
}
CDlgGraphEdit::~CDlgGraphEdit()
{
}
void CDlgGraphEdit::DoDataExchange(CDataExchange* pDX)
{
CMyDlgView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SCAN_DIR_COMBO2, m_ObjSortDirComb);
DDX_Control(pDX, IDC_PROPERTY_OBJ, m_ObjPropList);
DDX_Text(pDX, IDC_INSERT_IDX, m_InsertIdx);
DDX_Text(pDX, IDC_CROSS_PT_RANGE, m_AreaCrossPtRange);
DDX_Text(pDX, IDC_CREAT_AREA_GAP, m_CreatAreaGap);
}
BOOL CDlgGraphEdit::OnInitDialog()
{
CMyDlgView::OnInitDialog();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::DeleteObject(m_fntPropList.Detach());
LOGFONT lf;
afxGlobalData.fontRegular.GetLogFont(&lf);
NONCLIENTMETRICS info;
info.cbSize = sizeof(info);
afxGlobalData.GetNonClientMetrics(info);
lf.lfHeight = info.lfMenuFont.lfHeight;
lf.lfWeight = info.lfMenuFont.lfWeight;
lf.lfItalic = info.lfMenuFont.lfItalic;
m_fntPropList.CreateFontIndirect(&lf);
InitObjSortDirComb();
InitPropList(m_ObjPropList);
((CButton *)GetDlgItem(IDC_SHOW_OBJ_PT_COORD))->SetCheck(TRUE);
SetTimer(OPEN_MAIN_DLG_TIMER,OPEN_MAIN_DLG_TIMER_DELAY,NULL);
UpdateData(FALSE);
return TRUE;
}
void CDlgGraphEdit::OnTimer(UINT nIDEvent)
{
if(nIDEvent == OPEN_MAIN_DLG_TIMER)
{
KillTimer(OPEN_MAIN_DLG_TIMER);
OnStnClickedOpenMainDlg();
}
CDialog::OnTimer(nIDEvent);
}
void CDlgGraphEdit::ShowAllItem()
{
GetDlgItem(ID_OPEN_OBJ_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(ID_SAVE_OBJ_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_SHOW_OBJ_IDX)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_FRIST_OBJ)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_PER_OBJ)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_NEXT_OBJ)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_INSERT_IDX)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_INSERT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_REVERSE_ORDER)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_SORT_DIR)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_OBJ_SORT_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(NEW_ZOOM_IN_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(NEW_ZOOM_OUT_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(NEW_ZOOM_FULL_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(NEW_OPEN_MAIN_DLG_BTN)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_PROPERTY_OBJ)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_OBJ_PAR)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_GROUP_S_SORT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_SCAN_DIR_COMBO2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_INSERT_IDX)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_GROUP_SORT_ADJUST)->ShowWindow(SW_SHOW);
gDraw->SetbObjEditMode(true);
}
void CDlgGraphEdit::UpdateLanguageTxt()
{
}
#if 1
void CDlgGraphEdit::InitPropList(CMFCPropertyGridCtrl &PropertyGridCtrl)
{
PropertyGridCtrl.SetFont(&m_fntPropList);
PropertyGridCtrl.SetVSDotNetLook();
HDITEM item;
item.cxy=220;//<2F><>һ<EFBFBD>еĿ<D0B5><C4BF><EFBFBD>
item.mask=HDI_WIDTH;
PropertyGridCtrl.GetHeaderCtrl().SetItem(0, new HDITEM(item));
}
//<2F><><EFBFBD>Ըı<D4B8><C4B1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ
LRESULT CDlgGraphEdit::OnPropertyChanged(WPARAM,LPARAM lParam)
{
gDrawPropertieMgr.OnPropertyChanged(lParam);
return 0;
}
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
void CDlgGraphEdit::UpdateObjPropList()
{
m_ObjPropList.RemoveAll();
gDrawPropertieMgr.DelAllPropertie();
gModuleDrawMgr.InsertModuleGridProperty(0,m_ObjPropList);
//<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_ObjPropList.AdjustLayout();
}
#endif
#if 1
void CDlgGraphEdit::InitObjSortDirComb()
{
int idx = 0;
m_ObjSortDirComb.InsertString(idx++,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_ObjSortDirComb.InsertString(idx++,"<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>");
m_ObjSortDirComb.InsertString(idx++,"<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>");
m_ObjSortDirComb.InsertString(idx++,"<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD>");
m_ObjSortDirComb.SetCurSel(0);
}
//ѡ<><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>obj
void CDlgGraphEdit::OnBnClickedFristObjBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedFristObjBtn");
CLayer &layer = gLayer;
layer.SelFirstObj();
}
void CDlgGraphEdit::OnBnClickedPerObjBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedPerObjBtn");
CLayer &layer = gLayer;
layer.SelborderObj(false);
}
void CDlgGraphEdit::OnBnClickedNextObjBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedNextObjBtn");
CLayer &layer = gLayer;
layer.SelborderObj(true);
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
void CDlgGraphEdit::OnBnClickedShowObjIdx()
{
gLayer.SetbShowObjIdx(((CButton*)GetDlgItem(IDC_SHOW_OBJ_IDX))->GetCheck());
GetCurViewPtr()->RefreshView();
}
//<2F><><EFBFBD>뵽λ<EBB5BD><CEBB>
void CDlgGraphEdit::OnBnClickedInsertBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedInsertBtn");
if(!UpdateData(TRUE))
return;
CLayer &layer = gLayer;
CObjContainer &ObjContainer = layer.GetObjContainer();
int SelObjCnt = ObjContainer.GetSelObjCnt();
layer.SelectedObjInsertToIdx(m_InsertIdx);
m_InsertIdx += SelObjCnt;
UpdateData(FALSE);
}
//<2F><><EFBFBD><EFBFBD>
void CDlgGraphEdit::OnBnClickedReverseOrderBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedReverseOrderBtn");
CLayer &layer = gLayer;
layer.ReverseSelObj();
}
//S <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CDlgGraphEdit::OnBnClickedObjSortBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedObjSortBtn");
int SortDirIdx = m_ObjSortDirComb.GetCurSel();//ɨ<><EFBFBD><E8B7BD>
DIRECTION SortDir;
switch(SortDirIdx)
{
case 0://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SortDir = _DIR_R;
break;
case 1://<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>
SortDir = _DIR_L;
break;
case 2://<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
SortDir = _DIR_D;
break;
case 3://<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD>
SortDir = _DIR_U;
break;
default:
return;
}
CObjSortMgr ObjSortMgr;
ObjSortMgr.SortObjByDir(SortDir);
GetCurViewPtr()->RefreshView();
}
#endif
#if 1
void CDlgGraphEdit::OnBnClickedOpenObjBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedOpenObjBtn");
CWorkFileMgr WorkFileMgr;
WorkFileMgr.OpenObjFile();
}
void CDlgGraphEdit::OnBnClickedSaveObjBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedSaveObjBtn");
CWorkFileMgr WorkFileMgr;
WorkFileMgr.SaveObjFile();
}
void CDlgGraphEdit::OnBnClickedOpenTxtBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedOpenTxtBtn");
CWorkFileMgr WorkFileMgr;
WorkFileMgr.OpenObjTxtFile();
}
void CDlgGraphEdit::OnBnClickedSaveTxtBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedSaveTxtBtn");
CWorkFileMgr WorkFileMgr;
WorkFileMgr.SaveObjTxtFile();
}
#endif
#if 1
void CDlgGraphEdit::OnBnClickedZoomFullBtn()
{
m_pView->DoZoomFull();
}
void CDlgGraphEdit::OnBnClickedZoomInBtn()
{
m_pView->OnZoomIn();
}
void CDlgGraphEdit::OnBnClickedZoomOutBtn()
{
m_pView->OnZoomOut();
}
#endif
#define MAIN_DLG_SIZE_Y 1050
void CDlgGraphEdit::OnStnClickedOpenMainDlg()
{
if(gDlgDeviceMain)
{
gDraw->SetbObjEditMode(false);//<2F>رձ༭ģʽ
gDlgDeviceMain->ShowWindow(SW_SHOW);
//ȫ<><C8AB><EFBFBD><EFBFBD>ʾ(<28><>Ӱ<EFBFBD><EFBFBD><ECB5AF><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>)
gDlgDeviceMain->MoveWindow(CRect(0,0,1950,MAIN_DLG_SIZE_Y));
}
}
void CDlgGraphEdit::OnBnClickedCreatAreaBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedCreatAreaBtn");
UpdateData(TRUE);
if(m_AreaCrossPtRange<1)
{
CMsgBox MsgBox;
MsgBox.Show("ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>1");
return;
}
gLayer.SetAreaCrossPtRange(m_AreaCrossPtRange);
gLayer.QuickCreatScanArea(m_CreatAreaGap);
}
void CDlgGraphEdit::OnBnClickedShowObjPtCoord()
{
gLayer.SetbShowObjPtCoord(((CButton*)GetDlgItem(IDC_SHOW_OBJ_PT_COORD))->GetCheck());
GetCurViewPtr()->RefreshView();
}
void CDlgGraphEdit::OnBnClickedOpenMapHistoryBtn()
{
CDlgMapHistory dlg;
dlg.DoModal();
}