]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dialog.h
don't draw borders for bitmap buttons with wxBORDER_NONE style
[wxWidgets.git] / include / wx / dialog.h
index 9eee12da29ea6843403c2b8e230a3b008e6e49a5..ef747fe24680f1de4bbc7b2153ed17004bbde781 100644 (file)
@@ -53,6 +53,13 @@ enum wxDialogLayoutAdaptationMode
     wxDIALOG_ADAPTATION_MODE_DISABLED = 2   // disable this dialog overriding global status
 };
 
     wxDIALOG_ADAPTATION_MODE_DISABLED = 2   // disable this dialog overriding global status
 };
 
+enum wxDialogModality
+{
+    wxDIALOG_MODALITY_NONE = 0,             
+    wxDIALOG_MODALITY_WINDOW_MODAL = 1,      
+    wxDIALOG_MODALITY_APP_MODAL = 2         
+};
+
 extern WXDLLIMPEXP_DATA_CORE(const char) wxDialogNameStr[];
 
 class WXDLLIMPEXP_CORE wxDialogBase : public wxTopLevelWindow
 extern WXDLLIMPEXP_DATA_CORE(const char) wxDialogNameStr[];
 
 class WXDLLIMPEXP_CORE wxDialogBase : public wxTopLevelWindow
@@ -71,7 +78,10 @@ public:
     virtual int ShowModal() = 0;
     virtual void EndModal(int retCode) = 0;
     virtual bool IsModal() const = 0;
     virtual int ShowModal() = 0;
     virtual void EndModal(int retCode) = 0;
     virtual bool IsModal() const = 0;
-
+    // show the dialog frame-modally (needs a parent), using app-modal
+    // dialogs on platforms that don't support it
+    virtual bool ShowWindowModal () ;
+    virtual void SendWindowModalDialogEvent ( wxEventType type );
 
     // Modal dialogs have a return code - usually the id of the last
     // pressed button
 
     // Modal dialogs have a return code - usually the id of the last
     // pressed button
@@ -90,8 +100,11 @@ public:
     void SetEscapeId(int escapeId);
     int GetEscapeId() const { return m_escapeId; }
 
     void SetEscapeId(int escapeId);
     int GetEscapeId() const { return m_escapeId; }
 
-    // Returns the parent to use for modal dialogs if the user did not specify it
-    // explicitly
+    // Find the parent to use for modal dialog: try to use the specified parent
+    // but fall back to the current active window or main application window as
+    // last resort if it is unsuitable.
+    //
+    // This function always returns a valid top level window or NULL.
     wxWindow *GetParentForModalDialog(wxWindow *parent = NULL) const;
 
 #if wxUSE_STATTEXT // && wxUSE_TEXTCTRL
     wxWindow *GetParentForModalDialog(wxWindow *parent = NULL) const;
 
 #if wxUSE_STATTEXT // && wxUSE_TEXTCTRL
@@ -156,6 +169,8 @@ public:
     static bool IsLayoutAdaptationEnabled() { return sm_layoutAdaptation; }
     static void EnableLayoutAdaptation(bool enable) { sm_layoutAdaptation = enable; }
 
     static bool IsLayoutAdaptationEnabled() { return sm_layoutAdaptation; }
     static void EnableLayoutAdaptation(bool enable) { sm_layoutAdaptation = enable; }
 
+    // modality kind
+    wxDialogModality GetModality() const;
 protected:
     // emulate click of a button with the given id if it's present in the dialog
     //
 protected:
     // emulate click of a button with the given id if it's present in the dialog
     //
@@ -178,7 +193,6 @@ protected:
     // wxID_OK return code
     void AcceptAndClose();
 
     // wxID_OK return code
     void AcceptAndClose();
 
-
     // The return code from modal dialog
     int m_returnCode;
 
     // The return code from modal dialog
     int m_returnCode;
 
@@ -211,6 +225,10 @@ private:
     // common part of all ctors
     void Init();
 
     // common part of all ctors
     void Init();
 
+    // helper of GetParentForModalDialog(): returns the passed in window if it
+    // can be used as our parent or NULL if it can't
+    wxWindow *CheckIfCanBeUsedAsParent(wxWindow *parent) const;
+
     // handle Esc key presses
     void OnCharHook(wxKeyEvent& event);
 
     // handle Esc key presses
     void OnCharHook(wxKeyEvent& event);
 
@@ -224,7 +242,7 @@ private:
     void OnSysColourChanged(wxSysColourChangedEvent& event);
 
 
     void OnSysColourChanged(wxSysColourChangedEvent& event);
 
 
-    DECLARE_NO_COPY_CLASS(wxDialogBase)
+    wxDECLARE_NO_COPY_CLASS(wxDialogBase);
     DECLARE_EVENT_TABLE()
 };
 
     DECLARE_EVENT_TABLE()
 };
 
@@ -314,7 +332,7 @@ public:
     #elif defined(__WXGTK__)
         #include "wx/gtk1/dialog.h"
     #elif defined(__WXMAC__)
     #elif defined(__WXGTK__)
         #include "wx/gtk1/dialog.h"
     #elif defined(__WXMAC__)
-        #include "wx/mac/dialog.h"
+        #include "wx/osx/dialog.h"
     #elif defined(__WXCOCOA__)
         #include "wx/cocoa/dialog.h"
     #elif defined(__WXPM__)
     #elif defined(__WXCOCOA__)
         #include "wx/cocoa/dialog.h"
     #elif defined(__WXPM__)
@@ -322,5 +340,30 @@ public:
     #endif
 #endif
 
     #endif
 #endif
 
+class WXDLLIMPEXP_CORE wxWindowModalDialogEvent  : public wxCommandEvent
+{
+public:
+    wxWindowModalDialogEvent (wxEventType commandType = wxEVT_NULL, int id = 0)
+        : wxCommandEvent(commandType, id) { }
+
+    wxDialog *GetDialog() const
+        { return wxStaticCast(GetEventObject(), wxDialog); }
+        
+    int GetReturnCode() const 
+        { return GetDialog()->GetReturnCode(); }
+
+    virtual wxEvent *Clone() const { return new wxWindowModalDialogEvent (*this); }
+
+private:
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxWindowModalDialogEvent )
+};
+
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_WINDOW_MODAL_DIALOG_CLOSED , wxWindowModalDialogEvent );
+
+typedef void (wxEvtHandler::*wxWindowModalDialogEventFunction)(wxWindowModalDialogEvent &);
+
+#define wxWindowModalDialogEventHandler(func) \
+    wxEVENT_HANDLER_CAST(wxWindowModalDialogEventFunction, func)
+
 #endif
     // _WX_DIALOG_H_BASE_
 #endif
     // _WX_DIALOG_H_BASE_