1
/////////////////////////////////////////////////////////////////////////////
3
// Purpose: wxTextEntryDialog
4
// Author: Julian Smart
7
// RCS-ID: $Id: textdlgg.cpp,v 1.35 2005/04/02 17:44:12 JS Exp $
8
// Copyright: (c) Julian Smart
9
// Licence: wxWindows licence
10
/////////////////////////////////////////////////////////////////////////////
12
// ============================================================================
14
// ============================================================================
16
// ----------------------------------------------------------------------------
18
// ----------------------------------------------------------------------------
20
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
21
#pragma implementation "textdlgg.h"
24
// For compilers that support precompilation, includes "wx.h".
25
#include "wx/wxprec.h"
35
#include "wx/dialog.h"
36
#include "wx/button.h"
37
#include "wx/stattext.h"
38
#include "wx/textctrl.h"
44
#include "wx/statline.h"
47
#include "wx/generic/textdlgg.h"
49
// ----------------------------------------------------------------------------
51
// ----------------------------------------------------------------------------
53
static const int wxID_TEXT = 3000;
55
// ---------------------------------------------------------------------------
57
// ---------------------------------------------------------------------------
59
/* Macro for avoiding #ifdefs when value have to be different depending on size of
60
device we display on - take it from something like wxDesktopPolicy in the future
63
#if defined(__SMARTPHONE__)
64
#define wxLARGESMALL(large,small) small
66
#define wxLARGESMALL(large,small) large
69
// ============================================================================
71
// ============================================================================
73
// ----------------------------------------------------------------------------
75
// ----------------------------------------------------------------------------
77
BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
78
EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
81
IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
83
wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent,
84
const wxString& message,
85
const wxString& caption,
86
const wxString& value,
89
: wxDialog(parent, wxID_ANY, caption, pos, wxDefaultSize,
90
wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL),
93
m_dialogStyle = style;
98
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
102
topsizer->Add( CreateTextSizer( message ), 0, wxALL, wxLARGESMALL(10,0) );
106
m_textctrl = new wxTextCtrl(this, wxID_TEXT, value,
107
wxDefaultPosition, wxSize(300, wxDefaultCoord),
108
style & ~wxTextEntryDialogStyle);
109
topsizer->Add( m_textctrl, style & wxTE_MULTILINE ? 1 : 0, wxEXPAND | wxLEFT|wxRIGHT, wxLARGESMALL(15,0) );
112
wxTextValidator validator( wxFILTER_NONE, &m_value );
113
m_textctrl->SetValidator( validator );
117
// smart phones does not support or do not waste space for wxButtons
118
#ifdef __SMARTPHONE__
120
SetRightMenu(wxID_CANCEL, _("Cancel"));
122
#else // __SMARTPHONE__/!__SMARTPHONE__
126
topsizer->Add( new wxStaticLine( this, wxID_ANY ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
130
topsizer->Add( CreateButtonSizer( style ), 0, wxEXPAND | wxALL, 10 );
132
#endif // !__SMARTPHONE__
134
SetAutoLayout( true );
135
SetSizer( topsizer );
137
#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
138
topsizer->SetSizeHints( this );
139
topsizer->Fit( this );
141
if ( style & wxCENTRE )
145
m_textctrl->SetSelection(-1, -1);
146
m_textctrl->SetFocus();
151
void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
154
if( Validate() && TransferDataFromWindow() )
159
m_value = m_textctrl->GetValue();
166
void wxTextEntryDialog::SetValue(const wxString& val)
170
m_textctrl->SetValue(val);
174
void wxTextEntryDialog::SetTextValidator( long style )
176
wxTextValidator validator( style, &m_value );
177
m_textctrl->SetValidator( validator );
180
void wxTextEntryDialog::SetTextValidator( wxTextValidator& validator )
182
m_textctrl->SetValidator( validator );
188
// ----------------------------------------------------------------------------
189
// wxPasswordEntryDialog
190
// ----------------------------------------------------------------------------
192
IMPLEMENT_CLASS(wxPasswordEntryDialog, wxTextEntryDialog)
194
wxPasswordEntryDialog::wxPasswordEntryDialog(wxWindow *parent,
195
const wxString& message,
196
const wxString& caption,
197
const wxString& value,
200
: wxTextEntryDialog(parent, message, caption, value,
201
style | wxTE_PASSWORD, pos)
203
// Only change from wxTextEntryDialog is the password style
206
#endif // wxUSE_TEXTDLG