]> git.kernelconcepts.de Git - karo-tx-redboot.git/blobdiff - tools/src/tools/configtool/standalone/wxwin/msgdlgex.cpp
Initial revision
[karo-tx-redboot.git] / tools / src / tools / configtool / standalone / wxwin / msgdlgex.cpp
diff --git a/tools/src/tools/configtool/standalone/wxwin/msgdlgex.cpp b/tools/src/tools/configtool/standalone/wxwin/msgdlgex.cpp
new file mode 100644 (file)
index 0000000..9e44fbc
--- /dev/null
@@ -0,0 +1,302 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        msgdlgex.cpp
+// Purpose:     wxMessageDialogEx
+// Author:      Julian Smart
+// Modified by:
+// Created:     12/12/2000
+// RCS-ID:      $Id$
+// Copyright:   (c) Julian Smart
+//
+// This program is part of the eCos host tools.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 of the License, or (at your option)
+// any later version.
+//
+// This program is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+// more details.
+//
+// You should have received a copy of the GNU General Public License along with
+// this program; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef __GNUG__
+    #pragma implementation "msgdlgex.cpp"
+#endif
+
+// For compilers that support precompilation, includes "wx/wx.h".
+//#include "wx/wxprec.h"
+#include "ecpch.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "msgdlgex.h"
+
+// Include wxWindow's headers
+
+#include "wx/sizer.h"
+#include "wx/statline.h"
+#include "wx/statbox.h"
+#include "wx/stattext.h"
+#include "wx/statbmp.h"
+#include "wx/bmpbuttn.h"
+
+//----------------------------------------------------------------------------
+// wxMessageDialogEx
+//----------------------------------------------------------------------------
+
+IMPLEMENT_CLASS(wxMessageDialogEx,wxDialog)
+
+BEGIN_EVENT_TABLE(wxMessageDialogEx,wxDialog)
+    EVT_BUTTON( -1, wxMessageDialogEx::OnCommand )
+END_EVENT_TABLE()
+
+wxMessageDialogEx::wxMessageDialogEx( wxWindow *parent, const wxString& message, const wxString &caption,
+    long style, const wxPoint& position) :
+    wxDialog( parent, -1, caption, position, wxDefaultSize, wxDEFAULT_DIALOG_STYLE )
+{
+    m_dialogStyle = style;
+
+    wxBeginBusyCursor();
+
+    wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
+
+    wxBoxSizer *icon_text = new wxBoxSizer( wxHORIZONTAL );
+
+    // 1) icon
+    if (style & wxICON_MASK)
+    {
+         wxStaticBitmap *icon = new wxStaticBitmap(
+            this, -1, wxTheApp->GetStdIcon((int)(style & wxICON_MASK)));
+         icon_text->Add( icon, 0, wxCENTER );
+    }
+
+    // 2) text
+    icon_text->Add( CreateTextSizer( message ), 0, wxCENTER | wxLEFT, 10 );
+
+    topsizer->Add( icon_text, 0, wxCENTER | wxLEFT|wxRIGHT|wxTOP, 10 );
+
+#if wxUSE_STATLINE
+    // 3) static line
+    topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
+#endif
+
+    // 4) buttons
+    topsizer->Add( CreateButtonSizer( style ), 0, wxCENTRE | wxALL, 10 );
+
+    SetAutoLayout( TRUE );
+    SetSizer( topsizer );
+
+    topsizer->SetSizeHints( this );
+    topsizer->Fit( this );
+    wxSize size( GetSize() );
+    if (size.x < size.y*3/2)
+    {
+        size.x = size.y*3/2;
+        SetSize( size );
+    }
+
+    Centre( wxBOTH | wxCENTER_FRAME);
+
+    wxEndBusyCursor();
+}
+
+wxMessageDialogEx::wxMessageDialogEx()
+{
+    m_dialogStyle = 0;
+}
+
+wxMessageDialogEx::~wxMessageDialogEx()
+{
+}
+
+void wxMessageDialogEx::OnCommand(wxCommandEvent &event)
+{
+    EndModal(event.GetId());
+}
+
+wxSizer *wxMessageDialogEx::CreateButtonSizer( long flags )
+{
+    wxBoxSizer *box = new wxBoxSizer( wxHORIZONTAL );
+
+#if defined(__WXMSW__) || defined(__WXMAC__)
+    static const int margin = 6;
+#else
+    static const int margin = 10;
+#endif
+
+    wxButton *ok = (wxButton *) NULL;
+    wxButton *cancel = (wxButton *) NULL;
+    wxButton *yes = (wxButton *) NULL;
+    wxButton *no = (wxButton *) NULL;
+    wxButton *yestoall = (wxButton *) NULL;
+    wxButton *notoall = (wxButton *) NULL;
+    wxButton *abort = (wxButton *) NULL;
+    wxButton *retry = (wxButton *) NULL;
+    wxButton *ignore = (wxButton *) NULL;
+
+    // always show an OK button, unless only YES_NO is given
+    // NO, not in this dialog.
+    //if ((flags & wxYES_NO) == 0) flags = flags | wxOK;
+
+    if (flags & wxMD_YES_NO)
+    {
+        yes = new wxButton( this, wxID_YES, _("Yes") );
+        box->Add( yes, 0, wxLEFT|wxRIGHT, margin );
+        no = new wxButton( this, wxID_NO, _("No") );
+        box->Add( no, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_YES)
+    {
+        if (!yes)
+        {
+            yes = new wxButton( this, wxID_YES, _("Yes") );
+            box->Add( yes, 0, wxLEFT|wxRIGHT, margin );
+        }
+    }
+
+    if (flags & wxMD_YESTOALL)
+    {
+        yestoall = new wxButton( this, wxID_YESTOALL, _("Yes to All") );
+        box->Add( yestoall, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_NO)
+    {
+        if (!no)
+        {
+            no = new wxButton( this, wxID_NO, _("No") );
+            box->Add( no, 0, wxLEFT|wxRIGHT, margin );
+        }
+    }
+
+    if (flags & wxMD_NOTOALL)
+    {
+        notoall = new wxButton( this, wxID_NOTOALL, _("No to All") );
+        box->Add( notoall, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_ABORT)
+    {
+        abort = new wxButton( this, wxID_ABORT, _("Abort") );
+        box->Add( abort, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_RETRY)
+    {
+        retry = new wxButton( this, wxID_RETRY, _("Retry") );
+        box->Add( retry, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_IGNORE)
+    {
+        ignore = new wxButton( this, wxID_IGNORE, _("Ignore") );
+        box->Add( ignore, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_OK)
+    {
+        ok = new wxButton( this, wxID_OK, _("OK") );
+        box->Add( ok, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_CANCEL)
+    {
+        cancel = new wxButton( this, wxID_CANCEL, _("Cancel") );
+        box->Add( cancel, 0, wxLEFT|wxRIGHT, margin );
+    }
+
+    if (flags & wxMD_HELP)
+        box->Add( new wxButton( this, wxID_HELP, _("Help")  ), 0, wxLEFT|wxRIGHT, margin );
+
+    bool setDefault = FALSE;
+
+    if (flags & wxMD_NO_DEFAULT)
+    {
+        if (no)
+        {
+            no->SetDefault();
+            no->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+    else if (flags & wxMD_YES_DEFAULT)
+    {
+        if (yes)
+        {
+            yes->SetDefault();
+            yes->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+    else if (flags & wxMD_YESTOALL_DEFAULT)
+    {
+        if (yestoall)
+        {
+            yestoall->SetDefault();
+            yestoall->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+    else if (flags & wxMD_NOTOALL_DEFAULT)
+    {
+        if (notoall)
+        {
+            notoall->SetDefault();
+            notoall->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+    else if (flags & wxMD_ABORT_DEFAULT)
+    {
+        if (abort)
+        {
+            abort->SetDefault();
+            abort->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+    else if (flags & wxMD_RETRY_DEFAULT)
+    {
+        if (retry)
+        {
+            retry->SetDefault();
+            retry->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+    else if (flags & wxMD_IGNORE_DEFAULT)
+    {
+        if (ignore)
+        {
+            ignore->SetDefault();
+            ignore->SetFocus();
+            setDefault = TRUE;
+        }
+    }
+
+    if (!setDefault)
+    {
+        if (ok)
+        {
+            ok->SetDefault();
+            ok->SetFocus();
+        }
+        else if (yes)
+        {
+            yes->SetDefault();
+            yes->SetFocus();
+        }
+    }
+
+    return box;
+}
+