📄 rulesview.cpp
字号:
//####COPYRIGHTBEGIN####// // ----------------------------------------------------------------------------// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.//// This program is part of the eCos host tools.//// This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License, or (at your option) // any later version.// // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for // more details.// // You should have received a copy of the GNU General Public License along with// this program; if not, write to the Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.//// ----------------------------------------------------------------------------// //####COPYRIGHTEND####// TestViewView.cpp : implementation of the CRulesView class//#include "stdafx.h"#ifndef PLUGIN#include "BCMenu.h"#endif#include "ConfigTool.h"#include "ConfigToolDoc.h"#include "ControlView.h"#include "CTUtils.h"#include "resource.h"#include "RulesList.h"#include "RulesView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CRulesViewIMPLEMENT_DYNCREATE(CRulesView, CView)BEGIN_MESSAGE_MAP(CRulesView, CView) //{{AFX_MSG_MAP(CRulesView) ON_WM_CREATE() ON_WM_SIZE() ON_WM_CONTEXTMENU() ON_COMMAND(ID_LOCATE,OnLocate) ON_COMMAND(ID_RESOLVE,OnResolve) ON_COMMAND(ID_DISABLE_CONFLICT, OnDisable) ON_COMMAND(ID_ENABLE_CONFLICT, OnEnable) ON_WM_HELPINFO() //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CRulesView construction/destructionCRulesView::CRulesView(): m_nContextItem(-1){ CConfigTool::SetRulesView(this);}CRulesView::~CRulesView(){ CConfigTool::SetRulesView(0);}BOOL CRulesView::PreCreateWindow(CREATESTRUCT& cs){ // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CRulesView drawingvoid CRulesView::OnDraw(CDC* pDC){ UNUSED_ALWAYS(pDC);}/////////////////////////////////////////////////////////////////////////////// CRulesView diagnostics#ifdef _DEBUGvoid CRulesView::AssertValid() const{ CView::AssertValid();}void CRulesView::Dump(CDumpContext& dc) const{ CView::Dump(dc);}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CRulesView message handlersint CRulesView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; CRect rect; GetClientRect(rect); m_List.Create(WS_CHILD|WS_VISIBLE,rect,this,1); return 0;}void CRulesView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); CRect rect; GetClientRect(rect); m_List.MoveWindow(rect);}void CRulesView::FillRules() { CdlConfiguration CdlConfig = CConfigTool::GetConfigToolDoc()->GetCdlConfig (); if (CdlConfig) { // if configuration information int nCount=0; bool bRefill=false; CMapPtrToWord arMap; for(int i=0;i<m_List.GetItemCount();i++){ arMap.SetAt((void *)m_List.GetItemData(i),(WORD)i); } WORD w; std::list<CdlConflict>::const_iterator conf_i; const std::list<CdlConflict>& conflicts=CdlConfig->get_all_conflicts(); for (conf_i = conflicts.begin (); conf_i != conflicts.end (); conf_i++) { // for each conflict nCount++; if(!arMap.Lookup(*conf_i,w)){ bRefill=true; break; } } //for (conf_i = CdlConfig->get_structural_conflicts().begin (); conf_i != CdlConfig->get_structural_conflicts().end (); conf_i++) { // for each conflict // nCount++; // if(!arMap.Lookup(*conf_i,w)){ // bRefill=true; // break; // } //} if(bRefill || nCount!=m_List.GetItemCount()){ m_List.DeleteAllItems(); //m_List.AddConflicts(CdlConfig->get_structural_conflicts()); m_List.AddConflicts(CdlConfig->get_all_conflicts()); } }}void CRulesView::OnContextMenu(CWnd*, CPoint pt) { ScreenToClient(&pt); m_nContextItem=m_List.HitTest(pt,NULL); LVHITTESTINFO info; info.pt=pt; m_List.SubItemHitTest(&info); m_nContextRow=info.iSubItem; if(-1!=m_nContextItem){ m_List.SetItemState(m_nContextItem,LVIS_SELECTED,LVIS_SELECTED); Menu menu; menu.CreatePopupMenu(); /* FIXME: Not yet implemented in CDL CdlConflict conflict=(CdlConflict)m_List.GetItemData (m_nContextItem); if(conflict->is_enabled()){ menu.AppendMenu(MF_STRING,ID_DISABLE_CONFLICT,_T("&Disable...")); } else { menu.AppendMenu(MF_STRING,ID_ENABLE_CONFLICT,_T("&Enable...")); } */ menu.AppendMenu(1==m_List.GetSelectedCount() && m_List.AssociatedItem(m_nContextItem,m_nContextRow)?MF_STRING:(MF_STRING|MF_GRAYED),ID_LOCATE,_T("&Locate")); menu.AppendMenu(m_List.AssociatedItem(m_nContextItem,m_nContextRow)?MF_STRING:(MF_STRING|MF_GRAYED),ID_RESOLVE,_T("&Resolve")); ClientToScreen(&pt); menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON, pt.x,pt.y,this); }}void CRulesView::OnDisable(){ CdlConflict conflict=(CdlConflict)m_List.GetItemData (m_nContextItem); if(IDYES==CUtils::MessageBoxFT(MB_YESNO,_T("Are you sure you wish to disable this conflict?"))){ conflict->disable(""); }}void CRulesView::OnEnable(){ CdlConflict conflict=(CdlConflict)m_List.GetItemData (m_nContextItem); if(IDYES==CUtils::MessageBoxF(_T("Are you sure you wish to enable this conflict?"))){ conflict->enable(); }}void CRulesView::OnLocate(){ CConfigItem *pItem=m_List.AssociatedItem(m_nContextItem,m_nContextRow); if (pItem) { CConfigTool::GetControlView()->SelectItem(pItem); }}void CRulesView::OnResolve(){ CConfigToolDoc *pDoc=CConfigTool::GetConfigToolDoc(); CPtrArray arConflictsOfInterest; for(POSITION pos = m_List.GetFirstSelectedItemPosition();pos;){ int nItem = m_List.GetNextSelectedItem(pos); arConflictsOfInterest.Add((void *)m_List.GetItemData(nItem)); } pDoc->ResolveGlobalConflicts(&arConflictsOfInterest);}BOOL CRulesView::OnHelpInfo(HELPINFO*) { return CConfigTool::GetConfigToolDoc()->ShowURL(CUtils::LoadString(IDS_RULES_VIEW_HELP)); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -