File: toplevel.h

package info (click to toggle)
wxwidgets3.0 3.0.5.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 120,464 kB
  • sloc: cpp: 896,633; makefile: 52,303; ansic: 21,971; sh: 5,713; python: 2,940; xml: 1,534; perl: 264; javascript: 33
file content (130 lines) | stat: -rw-r--r-- 5,107 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
///////////////////////////////////////////////////////////////////////////////
// Name:        wx/cocoa/toplevel.h
// Purpose:     wxTopLevelWindowCocoa is the Cocoa implementation of wxTLW
// Author:      David Elliott
// Modified by:
// Created:     2002/12/08
// Copyright:   (c) 2002 David Elliott
// Licence:     wxWindows licence
///////////////////////////////////////////////////////////////////////////////

#ifndef __WX_COCOA_TOPLEVEL_H__
#define __WX_COCOA_TOPLEVEL_H__

#include "wx/hashmap.h"
#include "wx/cocoa/NSWindow.h"

class WXDLLIMPEXP_FWD_CORE wxMenuBar;

// ========================================================================
// wxTopLevelWindowCocoa
// ========================================================================
class WXDLLIMPEXP_CORE wxTopLevelWindowCocoa : public wxTopLevelWindowBase, protected wxCocoaNSWindow
{
    DECLARE_EVENT_TABLE();
    DECLARE_NO_COPY_CLASS(wxTopLevelWindowCocoa);
// ------------------------------------------------------------------------
// initialization
// ------------------------------------------------------------------------
public:
    inline wxTopLevelWindowCocoa()
    :   wxCocoaNSWindow(this)
    {   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)
    :   wxCocoaNSWindow(this)
    {
        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 void CocoaDelegate_wxMenuItemAction(WX_NSMenuItem sender);
    virtual bool CocoaDelegate_validateMenuItem(WX_NSMenuItem sender);
    virtual wxMenuBar* GetAppMenuBar(wxCocoaNSWindow *win);
    static void DeactivatePendingWindow();
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);
    static NSRect MakeInitialNSWindowContentRect(const wxPoint& pos, const wxSize& size, unsigned int cocoaStyleMask);

    static wxTopLevelWindowCocoa *sm_cocoaDeactivateWindow;
// ------------------------------------------------------------------------
// Implementation
// ------------------------------------------------------------------------
public:
    virtual bool Destroy();
    // 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;
    virtual void SetTitle( const wxString& title);
    virtual wxString GetTitle() const;

    // Default button (item)
    wxWindow *SetDefaultItem(wxWindow *win);

// Things I may/may not do
//    virtual void SetIcons(const wxIconBundle& icons);
//    virtual void Clear() ;
//    virtual void Raise();
//    virtual void Lower();
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 WXDLLIMPEXP_DATA_CORE(wxWindowList) wxModelessWindows;

#endif // __WX_COCOA_TOPLEVEL_H__