// Author: Vadim Zeitlin
// Modified by:
// Created: 28.06.99
-// RCS-ID: $Id$
// Copyright: (c) Vadim Zeitlin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/bookctrl.h"
#include "wx/scrolwin.h"
#include "wx/textwrapper.h"
+#include "wx/modalhook.h"
#if wxUSE_DISPLAY
#include "wx/display.h"
#endif
+extern WXDLLEXPORT_DATA(const char) wxDialogNameStr[] = "dialog";
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxDialogStyle )
+wxBEGIN_FLAGS( wxDialogStyle )
+// new style border flags, we put them first to
+// use them for streaming out
+wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+wxFLAGS_MEMBER(wxBORDER_RAISED)
+wxFLAGS_MEMBER(wxBORDER_STATIC)
+wxFLAGS_MEMBER(wxBORDER_NONE)
+
+// old style border flags
+wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+wxFLAGS_MEMBER(wxRAISED_BORDER)
+wxFLAGS_MEMBER(wxSTATIC_BORDER)
+wxFLAGS_MEMBER(wxNO_BORDER)
+
+// standard window styles
+wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+
+// dialog styles
+wxFLAGS_MEMBER(wxWS_EX_VALIDATE_RECURSIVELY)
+wxFLAGS_MEMBER(wxSTAY_ON_TOP)
+wxFLAGS_MEMBER(wxCAPTION)
+#if WXWIN_COMPATIBILITY_2_6
+wxFLAGS_MEMBER(wxTHICK_FRAME)
+#endif // WXWIN_COMPATIBILITY_2_6
+wxFLAGS_MEMBER(wxSYSTEM_MENU)
+wxFLAGS_MEMBER(wxRESIZE_BORDER)
+#if WXWIN_COMPATIBILITY_2_6
+wxFLAGS_MEMBER(wxRESIZE_BOX)
+#endif // WXWIN_COMPATIBILITY_2_6
+wxFLAGS_MEMBER(wxCLOSE_BOX)
+wxFLAGS_MEMBER(wxMAXIMIZE_BOX)
+wxFLAGS_MEMBER(wxMINIMIZE_BOX)
+wxEND_FLAGS( wxDialogStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxDialog, wxTopLevelWindow, "wx/dialog.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxDialog)
+wxPROPERTY( Title, wxString, SetTitle, GetTitle, wxString(), \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+
+wxPROPERTY_FLAGS( WindowStyle, wxDialogStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxDialog)
+
+wxCONSTRUCTOR_6( wxDialog, wxWindow*, Parent, wxWindowID, Id, \
+ wxString, Title, wxPoint, Position, wxSize, Size, long, WindowStyle)
+
// ----------------------------------------------------------------------------
// wxDialogBase
// ----------------------------------------------------------------------------
widthMax = wxSystemSettings::GetMetric( wxSYS_SCREEN_X ) - 25;
}
- // '&' is used as accel mnemonic prefix in the wxWidgets controls but in
- // the static messages created by CreateTextSizer() (used by wxMessageBox,
- // for example), we don't want this special meaning, so we need to quote it
- wxString text(message);
- text.Replace(wxT("&"), wxT("&&"));
-
- return wrapper.CreateSizer(text, widthMax);
+ return wrapper.CreateSizer(message, widthMax);
}
#endif // wxUSE_STATTEXT
if ( !btn || !btn->IsEnabled() || !btn->IsShown() )
return false;
- wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, id);
+ wxCommandEvent event(wxEVT_BUTTON, id);
event.SetEventObject(btn);
btn->GetEventHandler()->ProcessEvent(event);
bool wxDialogBase::IsEscapeKey(const wxKeyEvent& event)
{
- // for most platforms, Esc key is used to close the dialogs
- return event.GetKeyCode() == WXK_ESCAPE &&
- event.GetModifiers() == wxMOD_NONE;
+ // For most platforms, Esc key is used to close the dialogs.
+ //
+ // Notice that we intentionally don't check for modifiers here, Shift-Esc,
+ // Alt-Esc and so on still close the dialog, typically.
+ return event.GetKeyCode() == WXK_ESCAPE;
}
void wxDialogBase::OnCharHook(wxKeyEvent& event)
{
- if ( event.GetKeyCode() == WXK_ESCAPE )
+ if ( IsEscapeKey(event) )
{
if ( SendCloseButtonClickEvent() )
{
else
#endif // wxUSE_BOOKCTRL
{
+#if wxUSE_BUTTON
// If we have an arbitrary dialog, create a scrolling area for the main content, and a button sizer
// for the main buttons.
wxScrolledWindow* scrolledWindow = CreateScrolledWindow(dialog);
scrolledWindow->SetSizer(oldSizer);
FitWithScrolling(dialog, scrolledWindow);
+#endif // wxUSE_BUTTON
}
}
return scrolledWindow;
}
+#if wxUSE_BUTTON
+
/// Find and remove the button sizer, if any
wxSizer* wxStandardDialogLayoutAdapter::FindButtonSizer(bool stdButtonSizer, wxDialog* dialog, wxSizer* sizer, int& retBorder, int accumlatedBorder)
{
return true;
}
+#endif // wxUSE_BUTTON
+
/// Reparent the controls to the scrolled window
void wxStandardDialogLayoutAdapter::ReparentControls(wxWindow* parent, wxWindow* reparentTo, wxSizer* buttonSizer)
{