1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/cocoa/dialog.h
3// Purpose:     wxDialog class
4// Author:      David Elliott
5// Modified by:
6// Created:     2002/12/15
7// RCS-ID:      $Id: dialog.h 41020 2006-09-05 20:47:48Z VZ $
8// Copyright:   David Elliott
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_COCOA_DIALOG_H_
13#define _WX_COCOA_DIALOG_H_
14
15#include "wx/defs.h"
16// NOTE: we don't need panel.h, but other things expect it to be included
17#include "wx/panel.h"
18#include "wx/cocoa/NSPanel.h"
19
20WXDLLEXPORT_DATA(extern const wxChar) wxDialogNameStr[];
21
22// ========================================================================
23// wxDialog
24// ========================================================================
25class WXDLLEXPORT wxDialog : public wxDialogBase, protected wxCocoaNSPanel
26{
27    DECLARE_DYNAMIC_CLASS(wxDialog)
28    WX_DECLARE_COCOA_OWNER(NSPanel,NSWindow,NSWindow)
29// ------------------------------------------------------------------------
30// initialization
31// ------------------------------------------------------------------------
32public:
33    wxDialog() { Init(); }
34
35#if WXWIN_COMPATIBILITY_2_6
36    // Constructor with a modal flag, but no window id - the old convention
37    wxDialog(wxWindow *parent,
38            const wxString& title, bool WXUNUSED(modal),
39            int x = wxDefaultCoord, int y= wxDefaultCoord, int width = 500, int height = 500,
40            long style = wxDEFAULT_DIALOG_STYLE,
41            const wxString& name = wxDialogNameStr)
42    {
43        Init();
44        Create(parent, wxID_ANY, title, wxPoint(x, y), wxSize(width, height),
45               style, name);
46    }
47#endif // WXWIN_COMPATIBILITY_2_6
48
49    // Constructor with no modal flag - the new convention.
50    wxDialog(wxWindow *parent, wxWindowID winid,
51             const wxString& title,
52             const wxPoint& pos = wxDefaultPosition,
53             const wxSize& size = wxDefaultSize,
54             long style = wxDEFAULT_DIALOG_STYLE,
55             const wxString& name = wxDialogNameStr)
56    {
57        Init();
58        Create(parent, winid, title, pos, size, style, name);
59    }
60
61    bool Create(wxWindow *parent, wxWindowID winid,
62                const wxString& title,
63                const wxPoint& pos = wxDefaultPosition,
64                const wxSize& size = wxDefaultSize,
65                long style = wxDEFAULT_DIALOG_STYLE,
66                const wxString& name = wxDialogNameStr);
67
68    virtual ~wxDialog();
69protected:
70    void Init();
71
72// ------------------------------------------------------------------------
73// Cocoa specifics
74// ------------------------------------------------------------------------
75protected:
76    virtual void CocoaDelegate_windowWillClose(void);
77    virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
78    {   canBecome = true; return true; }
79
80// ------------------------------------------------------------------------
81// Implementation
82// ------------------------------------------------------------------------
83public:
84    virtual bool Show(bool show = true);
85
86    void SetModal(bool flag);
87    virtual bool IsModal() const { return m_isModal; }
88    bool m_isModal;
89
90    // For now, same as Show(true) but returns return code
91    virtual int ShowModal();
92
93    // may be called to terminate the dialog with the given return code
94    virtual void EndModal(int retCode);
95};
96
97#endif // _WX_COCOA_DIALOG_H_
98