⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rulesview.cpp

📁 eCos1.31版
💻 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 + -