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