浏览代码

1、设备管理面基本完成;
2、对话框使用背景图片时,出现滚动条时,绘制不正常。

scbc.sat2 5 年之前
父节点
当前提交
64eb0e5183

+ 220 - 7
SATHelper/SATHelper/DeviceView.cpp

@@ -5,6 +5,7 @@
 #include "SATHelper.h"
 #include "DeviceView.h"
 #include "MainFrm.h"
+#include <filehelper.h>
 extern CMainFrame* g_pMainFrame;
 // CDeviceView
 
@@ -14,6 +15,8 @@ CDeviceView::CDeviceView()
 	: CFormView(DLG_DEVICEMANAGER)
 {
 	ReadBaiduCfg(m_bdcfg);
+	ReadRsRunCfg(m_rscfg);
+	ReadTreePath();
 }
 
 CDeviceView::~CDeviceView()
@@ -36,6 +39,10 @@ BEGIN_MESSAGE_MAP(CDeviceView, CFormView)
 	ON_UPDATE_COMMAND_UI(ID_COMBOX_OCR, &CDeviceView::OnUpdateComboxOcr)
 	ON_UPDATE_COMMAND_UI(ID_COMBO_PRODUCT, &CDeviceView::OnUpdateComboProduct)
 	ON_UPDATE_COMMAND_UI(ID_COMBO_UI, &CDeviceView::OnUpdateComboUi)
+	ON_UPDATE_COMMAND_UI(BTN_DEF_SOUND, &CDeviceView::OnUpdateDefSound)
+	ON_COMMAND(BTN_DEF_SOUND, &CDeviceView::OnDefSound)
+	ON_COMMAND(ID_COMBO_PRODUCT, &CDeviceView::OnComboProduct)
+	ON_COMMAND(ID_COMBO_UI, &CDeviceView::OnComboUi)
 END_MESSAGE_MAP()
 
 
@@ -103,18 +110,139 @@ void CDeviceView::ReadBaiduCfg(BaiduCfg& bdcfg)
 	}
 }
 
+void CDeviceView::ReadRsRunCfg(RsRunCfg& rscfg)
+{
+	TCHAR szValue[MAX_PATH] = { 0 };
+	TCHAR szBuffer[1024] = { 0 };
+	_stprintf_s(m_szRsCfgPath, _T("%s%s"), Global::g_szPython27Dir, _T("Lib\\site-packages\\ssat_sdk\\config\\resource_run.cfg"));
+
+	GetPrivateProfileString(_T("Sound"), _T("sound_list"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.sound_list = szValue;
+
+	GetPrivateProfileString(_T("COMM"), _T("issendkeytakepicture_tester"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.full_cut = szValue;
+
+	GetPrivateProfileString(_T("COMM"), _T("tg39_port"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.tg39_port = szValue;
+
+	GetPrivateProfileString(_T("COMM"), _T("sat_home"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.sat_home = szValue;
+
+	GetPrivateProfileString(_T("COMM"), _T("sat_result_dir"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.sat_result_dir = szValue;
+
+	GetPrivateProfileString(_T("COMM"), _T("chroma22293"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.chroma22293 = szValue;
+
+	//...
+	GetPrivateProfileString(_T("MenuTree"), _T("menutreeselectedchip"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.menutree_chip = szValue;
+
+	GetPrivateProfileString(_T("MenuTree"), _T("menutreeselectedstyle"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.menutree_style = szValue;
+
+	GetPrivateProfileString(_T("MenuTree"), _T("menutreeselectedchannel"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
+	rscfg.menutree_channel = szValue;
+}
+
+void CDeviceView::ReadTreePath()
+{
+	// 必须在ReadRsRunCfg之后调用;
+	TCHAR szRootDir[MAX_PATH] = {0};
+	_stprintf_s(szRootDir, _T("%s%s"), m_rscfg.sat_home.c_str(), _T("resource\\MenuTree\\") );
+
+
+	auto _get_dir = [](std::string dir){
+		int nIndex = dir.find_last_of('\\');
+		if (nIndex != std::string::npos)
+		{
+			return dir.substr(nIndex+1);
+		}
+
+		return dir;
+	};
+
+	// 查找根目录下的目录;
+	filehelper fh;
+	STR_VEC vt_dir;
+	fh.getsubfolder(szRootDir, &vt_dir);
+	for (auto it : vt_dir )
+	{
+		STR_VEC vt_subdir;
+		fh.getsubfolder(it.c_str(), &vt_subdir);
+		m_map_tree.insert(std::pair<std::string, std::vector<std::string>>(_get_dir(it), vt_subdir));
+	}
+
+	// 去除目录级;
+	for (std::map<std::string, std::vector<std::string>>::iterator it = m_map_tree.begin(); it != m_map_tree.end(); it++ )
+	{
+		for (std::vector<std::string>::iterator itd = it->second.begin(); itd != it->second.end(); itd++ )
+		{
+			*itd = _get_dir(*itd);
+		}
+	}
+}
+
 void CDeviceView::OnInitialUpdate()
 {
 	CFormView::OnInitialUpdate();
 
-	// TODO: 在此添加专用代码和/或调用基类
+	// Ribbon Combobox添加默认项;
 	CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
 	ASSERT_VALID(pRibbon);
-	CMFCRibbonComboBox* pSizeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBOX_OCR));
-	if ( pSizeCombo )
+	CMFCRibbonComboBox* pOcrCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBOX_OCR));
+	if (pOcrCombo)
+	{
+		for ( auto it : m_bdcfg.list_count )
+		{
+			pOcrCombo->AddItem(it.first.c_str());
+		}
+
+		// 选择默认项;
+		pOcrCombo->SetEditText(m_bdcfg.cur_count.c_str());
+	}
+
+	// 剩余次数;
+	CMFCRibbonEdit *pOcrCount = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbon->FindByID(ID_EDIT_COUNT));
+	if (pOcrCount)
 	{
-		pSizeCombo->AddItem("dfdfdfd");
-		pSizeCombo->AddItem("dfdfdfd4444444");
+		pOcrCount->SetEditText(m_bdcfg.reset_time.c_str());
+	}
+
+	// 声音等级;
+	CMFCRibbonEdit* pSoundLevel = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbon->FindByID(ID_EDIT_SOUND_LEVEL));
+	if (pSoundLevel)
+	{
+		pSoundLevel->SetEditText(m_bdcfg.reset_time.c_str());
+	}
+
+	// 全步骤截图;
+// 	CMFCRibbonCheckBox* pCheckFullCut = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_CHECK_FULL_CUT));
+// 	if (pCheckFullCut)
+// 	{
+// 		pCheckFullCut->SetCheck();
+// 	}
+
+	// MenuTree;
+	CMFCRibbonComboBox* pChipCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_PRODUCT));
+	if (pChipCombo)
+	{
+		for (auto it : m_map_tree)
+		{
+			pChipCombo->AddItem(it.first.c_str());
+		}
+
+		// 选择默认项;
+		pChipCombo->SetEditText(m_rscfg.menutree_chip.c_str());
+
+		// UI下拉框;
+		CString curText = pChipCombo->GetEditText();
+		CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
+		for ( auto it : m_map_tree.find(curText.GetString())->second )
+		{
+			pStyleCombo->AddItem(it.c_str());
+		}
+		pStyleCombo->SetEditText(m_rscfg.menutree_style.c_str());
 	}
 }
 
@@ -133,9 +261,18 @@ void CDeviceView::OnPaint()
 
 	CRect rc;
 	GetWindowRect(&rc);
-	CImage mImage;
-	if (mImage.Load(_T("bk.jpg")) == S_OK)
+	static CImage mImage;
+	static BOOL bLoad = FALSE;
+	if (!bLoad)
+	{
+		bLoad = mImage.Load(_T("bk.jpg")) == S_OK;
+	}
+	else
 	{
+		// 缩放到最小后再拉大,区域为Null;
+		if (rc.IsRectEmpty() || rc.IsRectNull())
+			return;
+		//...BUG,当出现滚动条时,绘制的内容出错;
 		//这里让图片绘制区域和窗口大小一致
 		mImage.Draw(GetDC()->GetSafeHdc(), CRect(0, 0, rc.Width(), rc.Height()));
 	}
@@ -160,6 +297,14 @@ HBRUSH CDeviceView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 void CDeviceView::OnCheckFullCut()
 {
 	// TODO: 在此添加命令处理程序代码
+	CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
+	ASSERT_VALID(pRibbon);
+	CMFCRibbonButton* pFullCutCheck = DYNAMIC_DOWNCAST(CMFCRibbonButton, pRibbon->FindByID(ID_CHECK_FULL_CUT));
+	if (pFullCutCheck)
+	{
+		WritePrivateProfileString(_T("COMM"), _T("issendkeytakepicture_tester"), !pFullCutCheck->IsChecked() ? _T("True") : _T("False"), m_szRsCfgPath);
+		m_rscfg.full_cut = !pFullCutCheck->IsChecked() ? _T("True") : _T("False");
+	}
 }
 
 
@@ -172,12 +317,23 @@ void CDeviceView::OnHadSound()
 void CDeviceView::OnComboxOcr()
 {
 	// TODO: 在此添加命令处理程序代码
+	CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
+	ASSERT_VALID(pRibbon);
+	CMFCRibbonComboBox* pOcrCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBOX_OCR));
+	if (pOcrCombo)
+	{
+		// 获取当前文本项;
+		CString strOcr = pOcrCombo->GetEditText();
+		WritePrivateProfileString(_T("CurStatus"), _T("Cur_Count"), strOcr, m_szBaiduCfgPath);
+	}
 }
 
 
 void CDeviceView::OnUpdateCheckFullCut(CCmdUI* pCmdUI)
 {
 	// TODO: 在此添加命令更新用户界面处理程序代码
+	pCmdUI->SetCheck(!_tcsicmp(m_rscfg.full_cut.c_str(), _T("True")));
+
 }
 
 
@@ -196,10 +352,67 @@ void CDeviceView::OnUpdateComboxOcr(CCmdUI* pCmdUI)
 void CDeviceView::OnUpdateComboProduct(CCmdUI* pCmdUI)
 {
 	// TODO: 在此添加命令更新用户界面处理程序代码
+	
 }
 
 
 void CDeviceView::OnUpdateComboUi(CCmdUI* pCmdUI)
 {
 	// TODO: 在此添加命令更新用户界面处理程序代码
+	
+}
+
+
+void CDeviceView::OnUpdateDefSound(CCmdUI* pCmdUI)
+{
+	// TODO: 在此添加命令更新用户界面处理程序代码
+}
+
+
+void CDeviceView::OnDefSound()
+{
+	// TODO: 在此添加命令处理程序代码
+}
+
+
+void CDeviceView::OnComboProduct()
+{
+	// TODO: 在此添加命令处理程序代码
+	CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
+	ASSERT_VALID(pRibbon);
+	CMFCRibbonComboBox* pChipCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_PRODUCT));
+	if (pChipCombo)
+	{
+		// UI下拉框;
+		CString curText = pChipCombo->GetEditText();
+		CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
+		pStyleCombo->RemoveAllItems();
+		for (auto it : m_map_tree.find(curText.GetString())->second)
+		{
+			pStyleCombo->AddItem(it.c_str());
+		}
+		pStyleCombo->SelectItem(0);
+
+		// 保存结果;
+		CString strCurChip = pChipCombo->GetEditText();
+		WritePrivateProfileString(_T("MenuTree"), _T("menutreeselectedchip"), strCurChip, m_szRsCfgPath);
+
+		CString strCurStyle = pStyleCombo->GetEditText();
+		WritePrivateProfileString(_T("MenuTree"), _T("menutreeselectedstyle"), strCurStyle, m_szRsCfgPath);
+	}
+}
+
+
+void CDeviceView::OnComboUi()
+{
+	// TODO: 在此添加命令处理程序代码
+	CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
+	ASSERT_VALID(pRibbon);
+	CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
+	if (pStyleCombo)
+	{
+		// UI下拉框;
+		CString strCurStyle = pStyleCombo->GetEditText();
+		WritePrivateProfileString(_T("MenuTree"), _T("menutreeselectedstyle"), strCurStyle, m_szRsCfgPath);
+	}
 }

+ 29 - 0
SATHelper/SATHelper/DeviceView.h

@@ -51,6 +51,31 @@ public:
 	TCHAR m_szBaiduCfgPath[MAX_PATH];
 	void ReadBaiduCfg(BaiduCfg &bdcfg);
 
+	//////////////////////////////////////////////////////////////////////////
+	// 读取resource_run.cfg配置文件内容;
+	typedef struct __RS_RUN_CFG__
+	{
+		std::string sound_list;	// 声音级别;
+		std::string full_cut;	// 是否全步骤截图;('True/False')
+		//....
+		std::string tg39_port;
+		std::string sat_home;
+		std::string sat_result_dir;
+		std::string chroma22293;
+		//...
+		std::string menutree_chip;
+		std::string menutree_style;
+		std::string menutree_channel;
+	}RsRunCfg, *pRsRunCfg;
+
+	RsRunCfg m_rscfg;
+	TCHAR m_szRsCfgPath[MAX_PATH];
+	void ReadRsRunCfg(RsRunCfg &rscfg);
+
+	//////////////////////////////////////////////////////////////////////////
+	// 读取menutree目录;
+	std::map<std::string, std::vector<std::string>> m_map_tree;
+	void ReadTreePath();
 public:
 	virtual void OnInitialUpdate();
 	virtual void OnDraw(CDC* /*pDC*/);
@@ -64,6 +89,10 @@ public:
 	afx_msg void OnUpdateComboxOcr(CCmdUI* pCmdUI);
 	afx_msg void OnUpdateComboProduct(CCmdUI* pCmdUI);
 	afx_msg void OnUpdateComboUi(CCmdUI* pCmdUI);
+	afx_msg void OnUpdateDefSound(CCmdUI* pCmdUI);
+	afx_msg void OnDefSound();
+	afx_msg void OnComboProduct();
+	afx_msg void OnComboUi();
 };
 
 

+ 2 - 2
SATHelper/SATHelper/Resource.h

@@ -147,19 +147,19 @@
 #define ID_CHECK_SUPORT_GPU             32804
 #define ID_CHECK_FORMAT_AVI             32805
 #define ID_BUTTON6                      32805
-#define ID_BUTTON2                      32807
 #define BTN_HAD_SOUND                   32807
 #define ID_COMBO_PRODUCT                32808
 #define ID_COMBO_UI                     32809
 #define ID_COMBOX_OCR                   32810
 #define ID_EDIT_COUNT                   32811
+#define BTN_DEF_SOUND                   32812
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        316
-#define _APS_NEXT_COMMAND_VALUE         32812
+#define _APS_NEXT_COMMAND_VALUE         32813
 #define _APS_NEXT_CONTROL_VALUE         1007
 #define _APS_NEXT_SYMED_VALUE           310
 #endif

文件差异内容过多而无法显示
+ 0 - 0
SATHelper/SATHelper/res/ribbon.mfcribbon-ms


部分文件因为文件数量过多而无法显示