OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [host/] [tools/] [configtool/] [common/] [win32/] [DescView.cpp] - Rev 790

Go to most recent revision | Compare with Previous | Blame | View Log

// ####ECOSHOSTGPLCOPYRIGHTBEGIN####                                        
// -------------------------------------------                              
// This file is part of the eCos host tools.                                
// Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.            
//
// 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 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., 51 Franklin Street,                      
// Fifth Floor, Boston, MA  02110-1301, USA.                                
// -------------------------------------------                              
// ####ECOSHOSTGPLCOPYRIGHTEND####                                          
// 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));	
}
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.