Files
wxWidgets/src/gtk/textdlg.cpp
Robert Roebling 073478b3d0 Updates for makefile.unx
Converted numdlg to use wxSizer
  Corrcted bug in default size of wxStaticLine
  Other optical corrections


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-08-10 11:23:46 +00:00

147 lines
3.5 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: textdlgg.cpp
// Purpose: wxTextEntryDialog
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "textdlgg.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/utils.h"
#include "wx/dialog.h"
#include "wx/button.h"
#include "wx/stattext.h"
#include "wx/textctrl.h"
#include "wx/intl.h"
#include "wx/sizer.h"
#endif
#if wxUSE_STATLINE
#include "wx/statline.h"
#endif
#include "wx/gtk/textdlg.h"
static void wxSplitMessage2( const wxString &message, wxWindow *parent, wxSizer* sizer )
{
wxString line;
for (size_t pos = 0; pos < message.Len(); pos++)
{
if (message[pos] == _T('\n'))
{
if (!line.IsEmpty())
{
wxStaticText *s1 = new wxStaticText( parent, -1, line );
sizer->Add( s1 );
line = _T("");
}
}
else
{
line += message[pos];
}
}
// remaining text behind last '\n'
if (!line.IsEmpty())
{
wxStaticText *s2 = new wxStaticText( parent, -1, line );
sizer->Add( s2 );
}
}
// wxTextEntryDialog
#if !USE_SHARED_LIBRARY
BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
END_EVENT_TABLE()
IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
#endif
wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption,
const wxString& value, long style, const wxPoint& pos):
wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
{
m_dialogStyle = style;
m_value = value;
wxBeginBusyCursor();
wxBox *topsizer = new wxBox( wxVERTICAL );
// 1) text message
wxBox *textsizer = new wxBox( wxVERTICAL );
wxSplitMessage2( message, this, textsizer );
topsizer->Add( textsizer, 0, wxALL, 10 );
// 2) text ctrl
wxTextCtrl *textCtrl = new wxTextCtrl(this, wxID_TEXT, value, wxDefaultPosition, wxSize(300, -1));
topsizer->Add( textCtrl, 1, wxEXPAND | wxLEFT|wxRIGHT, 15 );
#if wxUSE_STATLINE
// 3) static line
topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
#endif
// 4) buttons
wxBox *buttonsizer = new wxBox( wxHORIZONTAL );
wxButton *ok = (wxButton *) NULL;
if (style & wxOK)
{
ok = new wxButton( this, wxID_OK, _("OK") );
buttonsizer->Add( ok, 0, wxLEFT|wxRIGHT, 10 );
}
wxButton *cancel = (wxButton *) NULL;
if (style & wxCANCEL)
{
cancel = new wxButton( this, wxID_CANCEL, _("Cancel") );
buttonsizer->Add( cancel, 0, wxLEFT|wxRIGHT, 10 );
}
topsizer->Add( buttonsizer, 0, wxCENTRE | wxALL, 10 );
topsizer->SetSizeHints( this );
topsizer->Fit( this );
SetSizer( topsizer );
SetAutoLayout( TRUE );
Centre( wxBOTH );
if (ok)
ok->SetDefault();
textCtrl->SetFocus();
wxEndBusyCursor();
}
void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
{
wxTextCtrl *textCtrl = (wxTextCtrl *)FindWindow(wxID_TEXT);
if ( textCtrl )
m_value = textCtrl->GetValue();
EndModal(wxID_OK);
}