URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [tools/] [src/] [tools/] [configtool/] [common/] [win32/] [RulesView.cpp] - Rev 574
Go to most recent revision | Compare with Previous | Blame | View Log
//####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_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CRulesView IMPLEMENT_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_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRulesView construction/destruction CRulesView::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 drawing void CRulesView::OnDraw(CDC* pDC) { UNUSED_ALWAYS(pDC); } ///////////////////////////////////////////////////////////////////////////// // CRulesView diagnostics #ifdef _DEBUG void CRulesView::AssertValid() const { CView::AssertValid(); } void CRulesView::Dump(CDumpContext& dc) const { CView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CRulesView message handlers int 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)); }
Go to most recent revision | Compare with Previous | Blame | View Log