1///////////////////////////////////////////////////////////////////////////// 2// Name: src/generic/textdlgg.cpp 3// Purpose: wxTextEntryDialog 4// Author: Julian Smart 5// Modified by: 6// Created: 04/01/98 7// RCS-ID: $Id: textdlgg.cpp 41838 2006-10-09 21:08:45Z VZ $ 8// Copyright: (c) Julian Smart 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12// ============================================================================ 13// declarations 14// ============================================================================ 15 16// ---------------------------------------------------------------------------- 17// headers 18// ---------------------------------------------------------------------------- 19 20// For compilers that support precompilation, includes "wx.h". 21#include "wx/wxprec.h" 22 23#ifdef __BORLANDC__ 24 #pragma hdrstop 25#endif 26 27#if wxUSE_TEXTDLG 28 29#include "wx/generic/textdlgg.h" 30 31#ifndef WX_PRECOMP 32 #include "wx/utils.h" 33 #include "wx/dialog.h" 34 #include "wx/button.h" 35 #include "wx/stattext.h" 36 #include "wx/textctrl.h" 37 #include "wx/intl.h" 38 #include "wx/sizer.h" 39#endif 40 41#if wxUSE_STATLINE 42 #include "wx/statline.h" 43#endif 44 45const wxChar wxGetTextFromUserPromptStr[] = wxT("Input Text"); 46const wxChar wxGetPasswordFromUserPromptStr[] = wxT("Enter Password"); 47 48// ---------------------------------------------------------------------------- 49// constants 50// ---------------------------------------------------------------------------- 51 52static const int wxID_TEXT = 3000; 53 54// ============================================================================ 55// implementation 56// ============================================================================ 57 58// ---------------------------------------------------------------------------- 59// wxTextEntryDialog 60// ---------------------------------------------------------------------------- 61 62BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog) 63 EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK) 64END_EVENT_TABLE() 65 66IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog) 67 68wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, 69 const wxString& message, 70 const wxString& caption, 71 const wxString& value, 72 long style, 73 const wxPoint& pos) 74 : wxDialog(parent, wxID_ANY, caption, pos, wxDefaultSize, 75 wxDEFAULT_DIALOG_STYLE), 76 m_value(value) 77{ 78 m_dialogStyle = style; 79 m_value = value; 80 81 wxBeginBusyCursor(); 82 83 wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); 84 85 wxSizerFlags flagsBorder2; 86 flagsBorder2.DoubleBorder(); 87 88#if wxUSE_STATTEXT 89 // 1) text message 90 topsizer->Add(CreateTextSizer(message), flagsBorder2); 91#endif 92 93 // 2) text ctrl 94 m_textctrl = new wxTextCtrl(this, wxID_TEXT, value, 95 wxDefaultPosition, wxSize(300, wxDefaultCoord), 96 style & ~wxTextEntryDialogStyle); 97 98 topsizer->Add(m_textctrl, 99 wxSizerFlags(style & wxTE_MULTILINE ? 1 : 0). 100 Expand(). 101 TripleBorder(wxLEFT | wxRIGHT)); 102 103#if wxUSE_VALIDATORS 104 wxTextValidator validator( wxFILTER_NONE, &m_value ); 105 m_textctrl->SetValidator( validator ); 106#endif // wxUSE_VALIDATORS 107 108 // 3) buttons if any 109 wxSizer *buttonSizer = CreateSeparatedButtonSizer(style & ButtonSizerFlags); 110 if ( buttonSizer ) 111 { 112 topsizer->Add(buttonSizer, wxSizerFlags(flagsBorder2).Expand()); 113 } 114 115 SetAutoLayout( true ); 116 SetSizer( topsizer ); 117 118 topsizer->SetSizeHints( this ); 119 topsizer->Fit( this ); 120 121 if ( style & wxCENTRE ) 122 Centre( wxBOTH ); 123 124 m_textctrl->SetSelection(-1, -1); 125 m_textctrl->SetFocus(); 126 127 wxEndBusyCursor(); 128} 129 130void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) ) 131{ 132#if wxUSE_VALIDATORS 133 if( Validate() && TransferDataFromWindow() ) 134 { 135 EndModal( wxID_OK ); 136 } 137#else 138 m_value = m_textctrl->GetValue(); 139 140 EndModal(wxID_OK); 141#endif 142 // wxUSE_VALIDATORS 143} 144 145void wxTextEntryDialog::SetValue(const wxString& val) 146{ 147 m_value = val; 148 149 m_textctrl->SetValue(val); 150} 151 152#if wxUSE_VALIDATORS 153void wxTextEntryDialog::SetTextValidator( long style ) 154{ 155 wxTextValidator validator( style, &m_value ); 156 m_textctrl->SetValidator( validator ); 157} 158 159void wxTextEntryDialog::SetTextValidator( const wxTextValidator& validator ) 160{ 161 m_textctrl->SetValidator( validator ); 162} 163 164#endif 165 // wxUSE_VALIDATORS 166 167// ---------------------------------------------------------------------------- 168// wxPasswordEntryDialog 169// ---------------------------------------------------------------------------- 170 171IMPLEMENT_CLASS(wxPasswordEntryDialog, wxTextEntryDialog) 172 173wxPasswordEntryDialog::wxPasswordEntryDialog(wxWindow *parent, 174 const wxString& message, 175 const wxString& caption, 176 const wxString& value, 177 long style, 178 const wxPoint& pos) 179 : wxTextEntryDialog(parent, message, caption, value, 180 style | wxTE_PASSWORD, pos) 181{ 182 // Only change from wxTextEntryDialog is the password style 183} 184 185#endif // wxUSE_TEXTDLG 186