diff host/tools/configtool/common/win32/DescView.cpp @ 76:435cced73e2f ecos-v1_3_1-release

eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
author jlarmour
date Tue, 28 Mar 2000 14:10:45 +0000
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/host/tools/configtool/common/win32/DescView.cpp
@@ -0,0 +1,219 @@
+//####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####
+// DescView.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "DescView.h"
+#include "ConfigItem.h"
+#include "ConfigTool.h"
+#include "ControlView.h"
+#include "ConfigToolDoc.h"
+#include "CTUtils.h"
+#include "resource.h"
+
+#ifndef PLUGIN
+#include "MainFrm.h"
+#endif
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CDescView
+
+IMPLEMENT_DYNCREATE(CDescView, CScrollView)
+
+CDescView::CDescView():
+m_pti(NULL)
+{
+    CConfigTool::SetDescView(this);
+}
+
+CDescView::~CDescView()
+{
+    CConfigTool::SetDescView(0);
+}
+
+
+BEGIN_MESSAGE_MAP(CDescView, CScrollView)
+	//{{AFX_MSG_MAP(CDescView)
+	ON_WM_ERASEBKGND()
+	ON_WM_SIZE()
+	ON_WM_CREATE()
+	ON_WM_HELPINFO()
+	//}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CDescView drawing
+
+void CDescView::OnInitialUpdate()
+{
+	CScrollView::OnInitialUpdate();
+    CControlView *pControlView=CConfigTool::GetControlView();
+    if(pControlView){
+        HTREEITEM hItem = pControlView->GetSelectedItem();
+        if(NULL!=hItem){
+            OnUpdate(this,(LPARAM)CConfigToolDoc::SelChanged,(CObject *)&(pControlView->TI(hItem)));
+        }
+    }
+	// TODO: calculate the total size of this view
+	SIZE sizeTotal;
+	sizeTotal.cx = sizeTotal.cy = 100;
+	SetScrollSizes(MM_TEXT, sizeTotal);
+}
+
+void CDescView::OnDraw(CDC* pDC)
+{
+	if(m_pti){
+		CRect rcClient;
+		GetClientRect(rcClient);
+		rcClient.bottom=m_nTotalHeight;
+        #ifdef PLUGIN
+        CFont *pOldFont=pDC->SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));
+        #else
+		CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd();
+		CFont *pOldFont=pDC->SelectObject(&pMain->GetPaneFont(CMainFrame::ShortDesc));
+        #endif
+		pDC->SetBkColor(GetSysColor(COLOR_INFOBK));
+        pDC->SetBkMode(TRANSPARENT);
+		pDC->DrawText(m_pti->Desc(),rcClient,DT_NOPREFIX|DT_WORDBREAK);
+		pDC->SelectObject(pOldFont);
+    }
+}
+/////////////////////////////////////////////////////////////////////////////
+// CDescView diagnostics
+
+#ifdef _DEBUG
+void CDescView::AssertValid() const
+{
+	CScrollView::AssertValid();
+}
+
+void CDescView::Dump(CDumpContext& dc) const
+{
+	CScrollView::Dump(dc);
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CDescView message handlers
+
+void CDescView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
+{
+	CConfigToolDoc* pDoc = CConfigTool::GetConfigToolDoc();
+	// For all known hints we redraw everything
+	// The Selchanged hint tells us what to redraw
+	switch(lHint){
+		case CConfigToolDoc::SelChanged:
+			if(pDoc->ItemCount()>0){
+				m_pti=(CConfigItem *)pHint;
+			} else {
+				// In process of destroying configitems - no nothing
+				m_pti=NULL;
+			}
+			break;
+		case CConfigToolDoc::Clear:
+			m_pti=NULL;
+			break;
+		default:
+			return;
+	}
+	SetScrollInfo();
+	Invalidate();
+
+	UNUSED_ALWAYS(pSender);
+}
+
+BOOL CDescView::OnEraseBkgnd(CDC* pDC) 
+{
+	CRect rcClient;
+	pDC->GetClipBox(rcClient);
+	pDC->FillSolidRect(rcClient,GetSysColor(COLOR_INFOBK));
+		
+	return TRUE;//return CScrollView::OnEraseBkgnd(pDC);
+}
+
+
+void CDescView::SetScrollInfo()
+{
+	CSize sizePage,sizeLine,sizeTotal;
+	if(m_pti){
+		CDC *pDC=GetDC();
+		CRect rcClient;
+		GetClientRect(rcClient);
+        #ifdef PLUGIN
+        CFont *pOldFont=pDC->SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));
+        #else
+		CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd();
+		CFont *pOldFont=pDC->SelectObject(&pMain->GetPaneFont(CMainFrame::ShortDesc));
+        #endif
+		//pDC->DrawText(m_pti->Desc(),rcClient,DT_NOPREFIX|DT_WORDBREAK);
+		sizeTotal.cx=0;
+		m_nTotalHeight=sizeTotal.cy=pDC->DrawText(m_pti->Desc(),rcClient,DT_NOPREFIX|DT_CALCRECT|DT_WORDBREAK);
+		TEXTMETRIC tm;
+		pDC->GetTextMetrics(&tm);
+		sizeLine.cx=0;
+		sizeLine.cy=tm.tmHeight;
+		sizePage.cx=0;
+		sizePage.cy=sizeTotal.cy-sizeLine.cy;
+		pDC->SelectObject(pOldFont);
+		ReleaseDC(pDC);
+	} else {
+		sizeTotal=CSize(0,0);
+		sizePage=sizeDefault;
+		sizeLine=sizeDefault;
+	}
+	SetScrollSizes(MM_TEXT,sizeTotal,sizePage,sizeLine);
+
+}
+
+void CDescView::OnSize(UINT nType, int cx, int cy) 
+{
+	CScrollView::OnSize(nType, cx, cy);
+	
+	SetScrollInfo();	
+}
+
+int CDescView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
+{
+	if (CScrollView::OnCreate(lpCreateStruct) == -1)
+		return -1;
+	
+	
+	SendMessage(WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0);	
+	return 0;
+}
+
+
+      
+BOOL CDescView::OnHelpInfo(HELPINFO*) 
+{
+  return CConfigTool::GetConfigToolDoc()->ShowURL(CUtils::LoadString(IDS_DESC_VIEW_HELP));	
+}