caption.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "pch.h"
  2. //////////////////////////////////////////////////////////////////////////////
  3. //
  4. //
  5. //
  6. //////////////////////////////////////////////////////////////////////////////
  7. class CaptionImpl :
  8. public ICaption,
  9. public EventTargetContainer<CaptionImpl>
  10. {
  11. private:
  12. TRef<ButtonPane> m_pbuttonClose;
  13. TRef<ButtonPane> m_pbuttonRestore;
  14. TRef<ButtonPane> m_pbuttonMinimize;
  15. TRef<Pane> m_ppane;
  16. TRef<ICaptionSite> m_psite;
  17. void DoCreateButton(
  18. Modeler* pmodeler,
  19. TRef<ButtonPane>& pbuttonPane,
  20. const ZString& str,
  21. const WinPoint& offset,
  22. Pane* ppane
  23. ) {
  24. TRef<ButtonFacePane> pface =
  25. CreateButtonFacePane(
  26. pmodeler->LoadSurface(str, false),
  27. ButtonFaceUp | ButtonFaceDown
  28. );
  29. pbuttonPane = CreateButton(pface);
  30. pbuttonPane->SetOffset(offset);
  31. ppane->InsertAtTop(pbuttonPane);
  32. }
  33. public:
  34. CaptionImpl(Modeler* pmodeler, Pane* ppane, ICaptionSite* psite) :
  35. m_ppane(ppane),
  36. m_psite(psite)
  37. {
  38. DoCreateButton(pmodeler, m_pbuttonClose, "btnclosebmp", WinPoint(780, 5), ppane);
  39. DoCreateButton(pmodeler, m_pbuttonRestore, "btnrestorebmp", WinPoint(761, 5), ppane);
  40. DoCreateButton(pmodeler, m_pbuttonMinimize, "btnminimizebmp", WinPoint(744, 5), ppane);
  41. AddEventTarget(OnClose, m_pbuttonClose->GetEventSource());
  42. AddEventTarget(OnRestore, m_pbuttonRestore->GetEventSource());
  43. AddEventTarget(OnMinimize, m_pbuttonMinimize->GetEventSource());
  44. }
  45. bool OnClose()
  46. {
  47. m_psite->OnCaptionClose();
  48. return true;
  49. }
  50. bool OnMinimize()
  51. {
  52. m_psite->OnCaptionMinimize();
  53. return true;
  54. }
  55. bool OnRestore()
  56. {
  57. m_psite->OnCaptionRestore();
  58. return true;
  59. }
  60. void SetFullscreen(bool bFullscreen)
  61. {
  62. m_pbuttonClose->SetHidden(!bFullscreen);
  63. m_pbuttonRestore->SetHidden(!bFullscreen);
  64. m_pbuttonMinimize->SetHidden(!bFullscreen);
  65. }
  66. };
  67. //////////////////////////////////////////////////////////////////////////////
  68. //
  69. //
  70. //
  71. //////////////////////////////////////////////////////////////////////////////
  72. TRef<ICaption> CreateCaption(Modeler* pmodeler, Pane* ppane, ICaptionSite* psite)
  73. {
  74. return new CaptionImpl(pmodeler, ppane, psite);
  75. }