Files
wxWidgets/src/qt/dialog.cpp
2019-01-21 13:53:59 +00:00

127 lines
2.7 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/qt/dialog.cpp
// Author: Peter Most, Javier Torres, Mariano Reingart, Sean D'Epagnier
// Copyright: (c) 2010 wxWidgets dev team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/modalhook.h"
#include "wx/dialog.h"
#include "wx/qt/private/utils.h"
#include "wx/qt/private/winevent.h"
#include <QtWidgets/QDialog>
class wxQtDialog : public wxQtEventSignalHandler< QDialog, wxDialog >
{
public:
wxQtDialog( wxWindow *parent, wxDialog *handler );
};
wxQtDialog::wxQtDialog( wxWindow *parent, wxDialog *handler )
: wxQtEventSignalHandler< QDialog, wxDialog >( parent, handler )
{
}
wxDialog::wxDialog()
{
}
wxDialog::wxDialog( wxWindow *parent, wxWindowID id,
const wxString &title,
const wxPoint &pos,
const wxSize &size,
long style,
const wxString &name)
{
Create( parent, id, title, pos, size, style, name );
}
wxDialog::~wxDialog()
{
}
bool wxDialog::Create( wxWindow *parent, wxWindowID id,
const wxString &title,
const wxPoint &pos,
const wxSize &size,
long style,
const wxString &name)
{
SetExtraStyle(GetExtraStyle() | wxTOPLEVEL_EX_DIALOG);
// all dialogs should have tab traversal enabled
style |= wxTAB_TRAVERSAL;
m_qtWindow = new wxQtDialog( parent, this );
if ( !wxTopLevelWindow::Create( parent, id, title, pos, size, style, name ) )
return false;
PostCreation();
return true;
}
int wxDialog::ShowModal()
{
WX_HOOK_MODAL_DIALOG();
wxCHECK_MSG( GetHandle() != NULL, -1, "Invalid dialog" );
QDialog *qDialog = GetDialogHandle();
qDialog->setModal(true);
Show(true);
bool ret = qDialog->exec();
if ( GetReturnCode() == 0 )
return ret ? wxID_OK : wxID_CANCEL;
return GetReturnCode();
}
void wxDialog::EndModal(int retCode)
{
wxCHECK_RET( GetDialogHandle() != NULL, "Invalid dialog" );
SetReturnCode(retCode);
GetDialogHandle()->done( QDialog::Accepted );
}
bool wxDialog::IsModal() const
{
wxCHECK_MSG( GetDialogHandle() != NULL, false, "Invalid dialog" );
return GetDialogHandle()->isModal();
}
bool wxDialog::Show(bool show)
{
if ( show == IsShown() )
return false;
if ( !show && IsModal() )
EndModal(wxID_CANCEL);
if ( show && CanDoLayoutAdaptation() )
DoLayoutAdaptation();
const bool ret = wxDialogBase::Show(show);
if (show)
InitDialog();
return ret;
}
QDialog *wxDialog::GetDialogHandle() const
{
return static_cast<QDialog*>(m_qtWindow);
}