]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/extdlgg.cpp
Did somework on the generic dialogs,
[wxWidgets.git] / src / generic / extdlgg.cpp
diff --git a/src/generic/extdlgg.cpp b/src/generic/extdlgg.cpp
deleted file mode 100644 (file)
index 40b7552..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name:        extdlgg.cpp
-// Purpose:     extended generic dialog
-// Author:      Robert Roebling
-// Modified by:
-// Created:     04/01/98
-// RCS-ID:      $Id$
-// Copyright:   (c) Robert Roebling
-// Licence:     wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-#ifdef __GNUG__
-#pragma implementation "extdlgg.h"
-#endif
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/intl.h"
-#include "wx/dialog.h"
-#include "wx/button.h"
-#endif
-
-#if wxUSE_STATLINE
-#include "wx/statline.h"
-#endif
-
-#include "wx/generic/extdlgg.h"
-
-//-----------------------------------------------------------------------------
-// wxExtDialog
-//-----------------------------------------------------------------------------
-
-#define BUTTON_AREA_MARGIN   10
-
-#if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxExtDialog, wxDialog)
-
-BEGIN_EVENT_TABLE(wxExtDialog, wxDialog)
-        EVT_SIZE(wxExtDialog::OnSize)
-        EVT_BUTTON(wxID_YES, wxExtDialog::OnYes)
-        EVT_BUTTON(wxID_NO, wxExtDialog::OnNo)
-        EVT_BUTTON(wxID_CANCEL, wxExtDialog::OnCancel)
-END_EVENT_TABLE()
-#endif
-
-wxExtDialog::wxExtDialog( wxWindow *parent, wxWindowID id,
-        const wxString& title, long extraStyle,
-        const wxPoint& pos,  const wxSize& size,
-        long style, const wxString &name )
-{
-    Create( parent, id, title, extraStyle, pos, size, style, name );
-}
-
-bool wxExtDialog::Create( wxWindow *parent, wxWindowID id,
-        const wxString& title, long extraStyle,
-        const wxPoint& pos,  const wxSize& size,
-        long style, const wxString &name )
-{
-    if (!wxDialog::Create( parent, id, title, pos, size, style, name ))
-      return FALSE;
-
-    m_extraStyle = extraStyle;
-    
-    m_clientWindowMargin = 10;
-    
-    if (m_windowStyle & wxED_BUTTONS_RIGHT)
-    {
-        m_spacePerButton.x = wxButton::GetDefaultSize().x + 18;
-        m_spacePerButton.y = wxButton::GetDefaultSize().y + 8;
-    }
-    else
-    {
-        m_spacePerButton.x = wxButton::GetDefaultSize().x + 8;
-        m_spacePerButton.y = wxButton::GetDefaultSize().y + 18;
-    }
-
-#if defined(__WXGTK__) || defined(__WXMOTIF__)
-    // Under Motif and GTK, the default button has a big frame around
-    // it and to avoid overlapping buttons we make the margin bigger.
-    // We could give other platforms a bigger margin as well, but this
-    // wouldn't be standard L&F.
-    m_spacePerButton.x += 10;
-    m_spacePerButton.y += 10;
-#endif
-       
-    wxButton *ok = (wxButton *) NULL;
-    wxButton *cancel = (wxButton *) NULL;
-    wxButton *yes = (wxButton *) NULL;
-    wxButton *no = (wxButton *) NULL;
-    
-    
-    if (m_extraStyle & wxYES_NO) 
-    {
-        yes = new wxButton( this, wxID_YES, _("Yes") );
-        m_buttons.Append( yes );
-        no = new wxButton( this, wxID_NO, _("No") );
-        m_buttons.Append( no );
-    }
-
-    if (m_extraStyle & wxYES) 
-    {
-        yes = new wxButton( this, wxID_YES, _("Yes") );
-        m_buttons.Append( yes );
-    }
-
-    if (m_extraStyle & wxNO) 
-    {
-        no = new wxButton( this, wxID_NO, _("No") );
-        m_buttons.Append( no );
-    }
-
-    if (m_extraStyle & wxOK) 
-    {
-        ok = new wxButton( this, wxID_OK, _("OK") );
-        m_buttons.Append( ok );
-    }
-
-    if (m_extraStyle & wxFORWARD) 
-        AddButton( new wxButton( this, wxID_FORWARD, _("Forward")  ) );
-
-    if (m_extraStyle & wxBACKWARD) 
-        AddButton( new wxButton( this, wxID_BACKWARD, _("Backward")  ) );
-
-    if (m_extraStyle & wxSETUP) 
-        AddButton( new wxButton( this, wxID_SETUP, _("Setup")  ) );
-
-    if (m_extraStyle & wxMORE) 
-        AddButton( new wxButton( this, wxID_MORE, _("More...")  ) );
-
-    if (m_extraStyle & wxHELP)
-        AddButton( new wxButton( this, wxID_HELP, _("Help")  ) );
-
-    if (m_extraStyle & wxCANCEL) 
-    {
-        cancel = new wxButton( this, wxID_CANCEL, _("Cancel") );
-        m_buttons.Append( cancel );
-    }
-
-    if ((m_extraStyle & wxNO_DEFAULT) == 0)
-    {
-        if (ok)
-        {
-            ok->SetDefault();
-            ok->SetFocus();
-        }
-        else if (yes)
-        {
-            yes->SetDefault();
-            yes->SetFocus();
-        }
-    }
-    
-#if wxUSE_STATLINE
-    if (style & wxED_STATIC_LINE)
-    {
-        int line_style = wxLI_HORIZONTAL;
-        if (style & wxED_BUTTONS_RIGHT) line_style = wxLI_VERTICAL;
-
-        m_statLine = new wxStaticLine( this, -1, wxDefaultPosition, wxDefaultSize, line_style );
-    }
-    else
-        m_statLine = (wxStaticLine*) NULL;
-#endif
-
-    if (m_extraStyle & wxCENTRE)
-        Centre( wxBOTH );
-    
-    return TRUE;
-}
-
-void wxExtDialog::AddButton( wxButton *button )
-{
-    m_buttons.Append( button );
-}
-
-void wxExtDialog::SetDefaultButton( wxWindowID button )
-{
-    wxNode *node = m_buttons.First();
-    while (node)
-    {
-       wxButton *but = (wxButton*) node->Data();
-       if (but->GetId() == button)
-       {
-           but->SetDefault();
-           but->SetFocus();
-          return;
-       }
-    }
-}
-
-void wxExtDialog::EnableButton( wxWindowID button, bool enable )
-{
-    wxNode *node = m_buttons.First();
-    while (node)
-    {
-       wxButton *but = (wxButton*) node->Data();
-       if (but->GetId() == button)
-       {
-           but->Enable(enable);
-          return;
-       }
-    }
-}
-
-bool wxExtDialog::ButtonIsEnabled( wxWindowID button )
-{
-    wxNode *node = m_buttons.First();
-    while (node)
-    {
-       wxButton *but = (wxButton*) node->Data();
-       if (but->GetId() == button)
-          return but->IsEnabled();
-    }
-    return FALSE;
-}
-
-void wxExtDialog::OnSize( wxSizeEvent &WXUNUSED(event) )
-{
-    wxSize client_size( GetClientSize() );
-    wxSize button_area( LayoutButtons() );
-    
-    if (HasFlag(wxED_BUTTONS_RIGHT))
-        client_size.x -= button_area.x;
-    else
-        client_size.y -= button_area.y;
-
-    if (m_clientWindow)
-    {
-        if (m_windowStyle & wxED_CLIENT_MARGIN)
-         m_clientWindow->SetSize( m_clientWindowMargin,
-                                  m_clientWindowMargin,
-                                  client_size.x - 2*m_clientWindowMargin,
-                                  client_size.y - 2*m_clientWindowMargin );
-       else
-          m_clientWindow->SetSize( 0, 0, client_size.x, client_size.y );
-       
-       if (m_clientWindow->GetAutoLayout())
-           m_clientWindow->Layout();
-    }
-}
-
-void wxExtDialog::OnYes(wxCommandEvent& event)
-{
-    EndModal( wxID_YES );
-}
-
-void wxExtDialog::OnNo(wxCommandEvent& event)
-{
-    EndModal( wxID_NO );
-}
-
-void wxExtDialog::OnCancel(wxCommandEvent& event)
-{
-    /* allow cancellation via ESC/Close button except if
-       only YES and NO are specified. */
-    if ((m_extraStyle & wxYES_NO) != wxYES_NO || (m_extraStyle & wxCANCEL))
-    {
-        EndModal( wxID_CANCEL );
-    }
-}
-
-wxSize wxExtDialog::GetButtonAreaSize()
-{
-    if (m_buttons.GetCount() == 0) return wxSize(0,0);
-    
-    wxSize ret(0,0);
-
-    if (m_windowStyle & wxED_BUTTONS_RIGHT)
-    {
-       ret.x = m_spacePerButton.x;
-        ret.y = m_buttons.GetCount()*m_spacePerButton.y + 2*BUTTON_AREA_MARGIN;
-#if wxUSE_STATLINE
-        if (m_statLine)
-           ret.x += wxStaticLine::GetDefaultSize();
-#endif
-    }
-    else
-    {
-        ret.x = m_buttons.GetCount()*m_spacePerButton.x + 2*BUTTON_AREA_MARGIN;
-       ret.y = m_spacePerButton.y;
-#if wxUSE_STATLINE
-        if (m_statLine)
-           ret.y += wxStaticLine::GetDefaultSize();
-#endif
-    }
-    
-    return ret;
-}
-
-wxSize wxExtDialog::LayoutButtons()
-{
-    if (m_buttons.GetCount() == 0) return wxSize(0,0);
-    
-    wxSize area_used( GetButtonAreaSize() );
-    wxSize client_area( GetClientSize() );
-    
-    if (m_windowStyle & wxED_BUTTONS_RIGHT)
-    {
-        area_used.y = client_area.y;
-       wxSize area_used_by_buttons( area_used );
-#if wxUSE_STATLINE
-        if (m_statLine)
-           area_used_by_buttons.x -= wxStaticLine::GetDefaultSize();
-#endif
-
-        int space_for_each_button = (client_area.y-2*BUTTON_AREA_MARGIN) / m_buttons.GetCount();
-        int n = 0;
-        wxNode *node = m_buttons.First();
-        while (node)
-        {
-            wxButton *button = (wxButton*)node->Data();
-           
-           wxSize button_size( button->GetSize() );
-           if (button_size.x < wxButton::GetDefaultSize().x) button_size.x = wxButton::GetDefaultSize().x;
-           
-           int center_of_button_y = n*space_for_each_button + space_for_each_button/2;
-           int button_y = BUTTON_AREA_MARGIN + center_of_button_y - button_size.y/2;
-           
-           int center_of_button_x = client_area.x - area_used_by_buttons.x/2;
-           int button_x = center_of_button_x - button_size.x/2;
-           
-            button->SetSize( button_x, button_y, button_size.x, button_size.y );
-           
-            node = node->Next();
-            n++;
-       }
-       
-#if wxUSE_STATLINE
-        if (m_statLine)
-           m_statLine->SetSize( client_area.x - area_used_by_buttons.x - wxStaticLine::GetDefaultSize(), 
-                                0, 
-                                wxStaticLine::GetDefaultSize(), 
-                                client_area.y );
-#endif
-    }
-    else
-    {
-        area_used.x = client_area.x;
-       wxSize area_used_by_buttons( area_used );
-#if wxUSE_STATLINE
-        if (m_statLine)
-           area_used_by_buttons.y -= wxStaticLine::GetDefaultSize();
-#endif
-
-        int space_for_each_button = (client_area.x-2*BUTTON_AREA_MARGIN) / m_buttons.GetCount();
-        int n = 0;
-        wxNode *node = m_buttons.First();
-        while (node)
-        {
-            wxButton *button = (wxButton*)node->Data();
-           
-           wxSize button_size( button->GetSize() );
-           if (button_size.x < wxButton::GetDefaultSize().x) button_size.x = wxButton::GetDefaultSize().x;
-           
-           int center_of_button_x = n*space_for_each_button + space_for_each_button/2;
-           int button_x = BUTTON_AREA_MARGIN + center_of_button_x - button_size.x/2;
-           
-           int center_of_button_y = client_area.y - area_used_by_buttons.y/2;
-           int button_y = center_of_button_y - button_size.y/2;
-           
-            button->SetSize( button_x, button_y, button_size.x, button_size.y );
-           
-            node = node->Next();
-            n++;
-       }
-       
-#if wxUSE_STATLINE
-        if (m_statLine)
-           m_statLine->SetSize( 0, 
-                                client_area.y - area_used_by_buttons.y - wxStaticLine::GetDefaultSize(),
-                                client_area.x, 
-                                wxStaticLine::GetDefaultSize() );
-#endif
-    }
-    
-    return area_used;
-}
-
-