3e84f98ffa
attached to the parent of a window without one. Instead, it is now up to the GetAppMenuBar() function to do so. The new implementation in wxTopLevelWindow does just that. The wxFrame implementation now calls the base class version if it does not have a menubar. Also, it is now invalid to call the function with a NULL window (it is internal anyway). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
121 lines
4.5 KiB
C++
121 lines
4.5 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/cocoa/toplevel.h
|
|
// Purpose: wxTopLevelWindowCocoa is the Cocoa implementation of wxTLW
|
|
// Author: David Elliott
|
|
// Modified by:
|
|
// Created: 2002/12/08
|
|
// RCS-ID: $Id:
|
|
// Copyright: (c) 2002 David Elliott
|
|
// Licence: wxWindows license
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __WX_COCOA_TOPLEVEL_H__
|
|
#define __WX_COCOA_TOPLEVEL_H__
|
|
|
|
#include "wx/hashmap.h"
|
|
#include "wx/cocoa/NSWindow.h"
|
|
|
|
class WXDLLEXPORT wxMenuBar;
|
|
|
|
// ========================================================================
|
|
// wxTopLevelWindowCocoa
|
|
// ========================================================================
|
|
class WXDLLEXPORT wxTopLevelWindowCocoa : public wxTopLevelWindowBase, protected wxCocoaNSWindow
|
|
{
|
|
DECLARE_EVENT_TABLE();
|
|
DECLARE_NO_COPY_CLASS(wxTopLevelWindowCocoa);
|
|
// ------------------------------------------------------------------------
|
|
// initialization
|
|
// ------------------------------------------------------------------------
|
|
public:
|
|
inline wxTopLevelWindowCocoa() { Init(); }
|
|
|
|
inline wxTopLevelWindowCocoa(wxWindow *parent,
|
|
wxWindowID winid,
|
|
const wxString& title,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxDEFAULT_FRAME_STYLE,
|
|
const wxString& name = wxFrameNameStr)
|
|
{
|
|
Init();
|
|
Create(parent, winid, title, pos, size, style, name);
|
|
}
|
|
|
|
bool Create(wxWindow *parent,
|
|
wxWindowID winid,
|
|
const wxString& title,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxDEFAULT_FRAME_STYLE,
|
|
const wxString& name = wxFrameNameStr);
|
|
|
|
virtual ~wxTopLevelWindowCocoa();
|
|
|
|
protected:
|
|
// common part of all ctors
|
|
void Init();
|
|
|
|
// ------------------------------------------------------------------------
|
|
// Cocoa specifics
|
|
// ------------------------------------------------------------------------
|
|
public:
|
|
inline WX_NSWindow GetNSWindow() { return m_cocoaNSWindow; }
|
|
virtual void CocoaDelegate_windowWillClose(void);
|
|
virtual bool CocoaDelegate_windowShouldClose(void);
|
|
virtual void CocoaDelegate_windowDidBecomeKey(void);
|
|
virtual void CocoaDelegate_windowDidResignKey(void);
|
|
virtual void CocoaDelegate_windowDidBecomeMain(void);
|
|
virtual void CocoaDelegate_windowDidResignMain(void);
|
|
virtual wxMenuBar* GetAppMenuBar();
|
|
protected:
|
|
void SetNSWindow(WX_NSWindow cocoaNSWindow);
|
|
WX_NSWindow m_cocoaNSWindow;
|
|
static wxCocoaNSWindowHash sm_cocoaHash;
|
|
virtual void CocoaReplaceView(WX_NSView oldView, WX_NSView newView);
|
|
static unsigned int NSWindowStyleForWxStyle(long style);
|
|
|
|
// ------------------------------------------------------------------------
|
|
// Implementation
|
|
// ------------------------------------------------------------------------
|
|
public:
|
|
// Pure virtuals
|
|
virtual void Maximize(bool maximize = true);
|
|
virtual bool IsMaximized() const;
|
|
virtual void Iconize(bool iconize = true);
|
|
virtual bool IsIconized() const;
|
|
virtual void Restore();
|
|
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
|
|
virtual bool IsFullScreen() const;
|
|
// other
|
|
virtual bool Show( bool show = true );
|
|
virtual bool Close( bool force = false );
|
|
virtual void OnCloseWindow(wxCloseEvent& event);
|
|
virtual void CocoaSetWxWindowSize(int width, int height);
|
|
virtual void DoMoveWindow(int x, int y, int width, int height);
|
|
virtual void DoGetSize(int *width, int *height) const;
|
|
virtual void DoGetPosition(int *x, int *y) const;
|
|
|
|
|
|
// Things I may/may not do
|
|
// virtual void SetIcon(const wxIcon& icon);
|
|
// virtual void SetIcons(const wxIconBundle& icons) { SetIcon( icons.GetIcon( -1 ) ); }
|
|
// virtual void Clear() ;
|
|
// virtual void Raise();
|
|
// virtual void Lower();
|
|
// virtual void SetTitle( const wxString& title);
|
|
protected:
|
|
// is the frame currently iconized?
|
|
bool m_iconized;
|
|
// has the frame been closed
|
|
bool m_closed;
|
|
// should the frame be maximized when it will be shown? set by Maximize()
|
|
// when it is called while the frame is hidden
|
|
bool m_maximizeOnShow;
|
|
};
|
|
|
|
// list of all frames and modeless dialogs
|
|
extern WXDLLEXPORT_DATA(wxWindowList) wxModelessWindows;
|
|
|
|
#endif // __WX_COCOA_TOPLEVEL_H__
|