]> git.kernelconcepts.de Git - karo-tx-redboot.git/blobdiff - tools/src/tools/configtool/common/win32/DescView.cpp
Initial revision
[karo-tx-redboot.git] / tools / src / tools / configtool / common / win32 / DescView.cpp
diff --git a/tools/src/tools/configtool/common/win32/DescView.cpp b/tools/src/tools/configtool/common/win32/DescView.cpp
new file mode 100644 (file)
index 0000000..d4c49a5
--- /dev/null
@@ -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));     
+}