Files
wxWidgets/src/gtk1/msgdlg.cpp
Ron Lee b63b07a809 More updates to the Debian packaging for wxPython, unicode and
the project name change.

Applied patch from ABX to make tex2rtf unicode compatible, then
removed wxSprintf lameness from it so it might actually work.
Also modified it to return true from tex2rtf OnInit in console
builds so the app will exit with a successful return code rather
than always returning failure even when it succeeds.

Implemented unicode capable wxCtime for glibc systems also needed
by tex2rtf.

Wrapped dde include in tex2rtf in a guard and assert that dde is
MSW only in its forwarding header.

Lowered the limit of maxlen in wxSprintf so it actually has a
chance to segfault on people instead of failing silently and
mysteriously with glibc.

Silenced some other 'potentially uninitialised variable' warnings
from gcc3, most of which were bogus, one potentially not so.

Added missing newline at the end of fontdlg.cpp.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-03-05 17:40:38 +00:00

116 lines
3.3 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: msgdlg.cpp
// Purpose: wxMessageDialog for GTK+2
// Author: Vaclav Slavik
// Modified by:
// Created: 2003/02/28
// RCS-ID: $Id$
// Copyright: (c) Vaclav Slavik, 2003
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "msgdlg.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#if wxUSE_MSGDLG && defined(__WXGTK20__) && !defined(__WXGPE__)
#include "wx/gtk/private.h"
#include <gtk/gtk.h>
#include "wx/msgdlg.h"
#include "wx/intl.h"
IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
wxMessageDialog::wxMessageDialog(wxWindow *parent,
const wxString& message,
const wxString& caption,
long style,
const wxPoint& WXUNUSED(pos))
{
m_caption = caption;
m_message = message;
m_dialogStyle = style;
m_parent = parent;
}
int wxMessageDialog::ShowModal()
{
GtkWidget *dlg;
GtkMessageType type = GTK_MESSAGE_ERROR;
GtkButtonsType buttons = GTK_BUTTONS_OK;
if (m_dialogStyle & wxYES_NO)
{
buttons = GTK_BUTTONS_YES_NO;
}
if (m_dialogStyle & wxOK)
{
if (m_dialogStyle & wxCANCEL)
buttons = GTK_BUTTONS_OK_CANCEL;
else
buttons = GTK_BUTTONS_OK;
}
if (m_dialogStyle & wxICON_EXCLAMATION)
type = GTK_MESSAGE_WARNING;
else if (m_dialogStyle & wxICON_ERROR)
type = GTK_MESSAGE_ERROR;
else if (m_dialogStyle & wxICON_INFORMATION)
type = GTK_MESSAGE_INFO;
else if (m_dialogStyle & wxICON_QUESTION)
type = GTK_MESSAGE_QUESTION;
else
wxFAIL_MSG( _T("Unknown wxMessageDialog type") );
dlg = gtk_message_dialog_new(m_parent ?
GTK_WINDOW(m_parent->m_widget) : NULL,
GTK_DIALOG_MODAL,
type, buttons,
"%s", (const char*)wxGTK_CONV(m_message));
if (m_caption != wxMessageBoxCaptionStr)
gtk_window_set_title(GTK_WINDOW(dlg), wxGTK_CONV(m_caption));
if (m_dialogStyle & wxYES_NO)
{
if (m_dialogStyle & wxCANCEL)
gtk_dialog_add_button(GTK_DIALOG(dlg), GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL);
if (m_dialogStyle & wxNO_DEFAULT)
gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_NO);
else
gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_YES);
}
gint result = gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
switch (result)
{
default:
wxFAIL_MSG(_T("unexpected GtkMessageDialog return code"));
// fall through
case GTK_RESPONSE_CANCEL:
return wxID_CANCEL;
case GTK_RESPONSE_OK:
return wxID_OK;
case GTK_RESPONSE_YES:
return wxID_YES;
case GTK_RESPONSE_NO:
return wxID_NO;
}
}
#endif // wxUSE_MSGDLG && defined(__WXGTK20__)