toplevel.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/cocoa/toplevel.h
  3. // Purpose: wxTopLevelWindowCocoa is the Cocoa implementation of wxTLW
  4. // Author: David Elliott
  5. // Modified by:
  6. // Created: 2002/12/08
  7. // Copyright: (c) 2002 David Elliott
  8. // Licence: wxWindows licence
  9. ///////////////////////////////////////////////////////////////////////////////
  10. #ifndef __WX_COCOA_TOPLEVEL_H__
  11. #define __WX_COCOA_TOPLEVEL_H__
  12. #include "wx/hashmap.h"
  13. #include "wx/cocoa/NSWindow.h"
  14. class WXDLLIMPEXP_FWD_CORE wxMenuBar;
  15. // ========================================================================
  16. // wxTopLevelWindowCocoa
  17. // ========================================================================
  18. class WXDLLIMPEXP_CORE wxTopLevelWindowCocoa : public wxTopLevelWindowBase, protected wxCocoaNSWindow
  19. {
  20. DECLARE_EVENT_TABLE();
  21. DECLARE_NO_COPY_CLASS(wxTopLevelWindowCocoa);
  22. // ------------------------------------------------------------------------
  23. // initialization
  24. // ------------------------------------------------------------------------
  25. public:
  26. inline wxTopLevelWindowCocoa()
  27. : wxCocoaNSWindow(this)
  28. { Init(); }
  29. inline wxTopLevelWindowCocoa(wxWindow *parent,
  30. wxWindowID winid,
  31. const wxString& title,
  32. const wxPoint& pos = wxDefaultPosition,
  33. const wxSize& size = wxDefaultSize,
  34. long style = wxDEFAULT_FRAME_STYLE,
  35. const wxString& name = wxFrameNameStr)
  36. : wxCocoaNSWindow(this)
  37. {
  38. Init();
  39. Create(parent, winid, title, pos, size, style, name);
  40. }
  41. bool Create(wxWindow *parent,
  42. wxWindowID winid,
  43. const wxString& title,
  44. const wxPoint& pos = wxDefaultPosition,
  45. const wxSize& size = wxDefaultSize,
  46. long style = wxDEFAULT_FRAME_STYLE,
  47. const wxString& name = wxFrameNameStr);
  48. virtual ~wxTopLevelWindowCocoa();
  49. protected:
  50. // common part of all ctors
  51. void Init();
  52. // ------------------------------------------------------------------------
  53. // Cocoa specifics
  54. // ------------------------------------------------------------------------
  55. public:
  56. inline WX_NSWindow GetNSWindow() { return m_cocoaNSWindow; }
  57. virtual void CocoaDelegate_windowWillClose(void);
  58. virtual bool CocoaDelegate_windowShouldClose(void);
  59. virtual void CocoaDelegate_windowDidBecomeKey(void);
  60. virtual void CocoaDelegate_windowDidResignKey(void);
  61. virtual void CocoaDelegate_windowDidBecomeMain(void);
  62. virtual void CocoaDelegate_windowDidResignMain(void);
  63. virtual void CocoaDelegate_wxMenuItemAction(WX_NSMenuItem sender);
  64. virtual bool CocoaDelegate_validateMenuItem(WX_NSMenuItem sender);
  65. virtual wxMenuBar* GetAppMenuBar(wxCocoaNSWindow *win);
  66. static void DeactivatePendingWindow();
  67. protected:
  68. void SetNSWindow(WX_NSWindow cocoaNSWindow);
  69. WX_NSWindow m_cocoaNSWindow;
  70. static wxCocoaNSWindowHash sm_cocoaHash;
  71. virtual void CocoaReplaceView(WX_NSView oldView, WX_NSView newView);
  72. static unsigned int NSWindowStyleForWxStyle(long style);
  73. static NSRect MakeInitialNSWindowContentRect(const wxPoint& pos, const wxSize& size, unsigned int cocoaStyleMask);
  74. static wxTopLevelWindowCocoa *sm_cocoaDeactivateWindow;
  75. // ------------------------------------------------------------------------
  76. // Implementation
  77. // ------------------------------------------------------------------------
  78. public:
  79. virtual bool Destroy();
  80. // Pure virtuals
  81. virtual void Maximize(bool maximize = true);
  82. virtual bool IsMaximized() const;
  83. virtual void Iconize(bool iconize = true);
  84. virtual bool IsIconized() const;
  85. virtual void Restore();
  86. virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
  87. virtual bool IsFullScreen() const;
  88. // other
  89. virtual bool Show( bool show = true );
  90. virtual bool Close( bool force = false );
  91. virtual void OnCloseWindow(wxCloseEvent& event);
  92. virtual void CocoaSetWxWindowSize(int width, int height);
  93. virtual void DoMoveWindow(int x, int y, int width, int height);
  94. virtual void DoGetSize(int *width, int *height) const;
  95. virtual void DoGetPosition(int *x, int *y) const;
  96. virtual void SetTitle( const wxString& title);
  97. virtual wxString GetTitle() const;
  98. // Default button (item)
  99. wxWindow *SetDefaultItem(wxWindow *win);
  100. // Things I may/may not do
  101. // virtual void SetIcons(const wxIconBundle& icons);
  102. // virtual void Clear() ;
  103. // virtual void Raise();
  104. // virtual void Lower();
  105. protected:
  106. // is the frame currently iconized?
  107. bool m_iconized;
  108. // has the frame been closed
  109. bool m_closed;
  110. // should the frame be maximized when it will be shown? set by Maximize()
  111. // when it is called while the frame is hidden
  112. bool m_maximizeOnShow;
  113. };
  114. // list of all frames and modeless dialogs
  115. extern WXDLLIMPEXP_DATA_CORE(wxWindowList) wxModelessWindows;
  116. #endif // __WX_COCOA_TOPLEVEL_H__