home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / TBEXPERT.PAK / GADGTMGR.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  2.1 KB  |  89 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (c) 1995, 1995 by Borland International, All Rights Reserved
  4. //
  5. // Filename:    gadgtmgr.cpp
  6. //
  7. // Date:        27-Sep-95
  8. //
  9. // Description:
  10. //----------------------------------------------------------------------------
  11. #include <owl/pch.h>
  12. #include "TBExpert.h"
  13.  
  14. TGadgetManager::TGadgetManager(TWindow* parent, TTileDirection  direction,
  15.                                TFont* font, TModule* module)
  16. :
  17.   TGadgetWindow(parent, direction, font, module),
  18.   LastGadget(0),
  19.   StatusManager(0)
  20. {
  21.  
  22.   for (int i = 0; i < CountOfGadgetFactories; i++)
  23.     Insert(*GadgetFactories[i]->CreateGadget(i));
  24. }
  25.  
  26. TGadgetManager::~TGadgetManager()
  27. {
  28.  
  29. }
  30.  
  31. DEFINE_RESPONSE_TABLE1(TGadgetManager, TGadgetWindow)
  32.   EV_WM_LBUTTONDOWN,
  33.   EV_WM_MOUSEMOVE,
  34.   EV_WM_KILLFOCUS,
  35. END_RESPONSE_TABLE;
  36.  
  37. void
  38. TGadgetManager::SetupWindow()
  39. {
  40.   TGadgetWindow::SetupWindow();
  41.   TTBExpertWindow* window = TYPESAFE_DOWNCAST(Parent->GetParentO(), TTBExpertWindow);
  42.   if (window)
  43.     StatusManager = window->GetStatusManager();
  44. }
  45.  
  46. void
  47. TGadgetManager::EvKillFocus(THandle handle)
  48. {
  49.   if (LastGadget) {
  50.     TRect lastBounds = LastGadget->GetBounds();
  51.     InvalidateRect(lastBounds);
  52.   }
  53.   TGadgetWindow::EvKillFocus(handle);
  54. }
  55.  
  56. void
  57. TGadgetManager::EvLButtonDown(uint /*modKeys*/, TPoint& point)
  58. {
  59.   if (StatusManager) {
  60.     TGadget* gadget = GadgetFromPoint(point);
  61.     if (gadget) {
  62.       StatusManager->SetDragStatus(TStatusManager::ModifyGadget,
  63.         gadget->GetId()-DummyGadgetIdBase);
  64.     }
  65.   }
  66. }
  67.  
  68. void
  69. TGadgetManager::EvMouseMove(uint /*modKeys*/, TPoint& point)
  70. {
  71.   SetFocus();
  72.   TGadget* gadget = GadgetFromPoint(point);
  73.   if (gadget) {
  74.     if (gadget != LastGadget) {
  75.       // invalidate LastGadget;
  76.       //
  77.       if (LastGadget) {
  78.         TRect lastBounds = LastGadget->GetBounds();
  79.         InvalidateRect(lastBounds, true);
  80.       }
  81.       LastGadget = gadget;
  82.     }
  83.     TRect bounds = gadget->GetBounds();
  84.     bounds.Inflate(-1, -1);
  85.     TClientDC dc(*this);
  86.     dc.DrawFocusRect(bounds);
  87.   }
  88. }
  89.