]> git.saurik.com Git - wxWidgets.git/blob - src/generic/textdlgg.cpp
Added extra hit test style for more accurate reporting
[wxWidgets.git] / src / generic / textdlgg.cpp
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$
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
45 const wxChar wxGetTextFromUserPromptStr[] = wxT("Input Text");
46 const wxChar wxGetPasswordFromUserPromptStr[] = wxT("Enter Password");
47
48 // ----------------------------------------------------------------------------
49 // constants
50 // ----------------------------------------------------------------------------
51
52 static const int wxID_TEXT = 3000;
53
54 // ============================================================================
55 // implementation
56 // ============================================================================
57
58 // ----------------------------------------------------------------------------
59 // wxTextEntryDialog
60 // ----------------------------------------------------------------------------
61
62 BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
63 EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
64 END_EVENT_TABLE()
65
66 IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
67
68 wxTextEntryDialog::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
130 void 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
145 void wxTextEntryDialog::SetValue(const wxString& val)
146 {
147 m_value = val;
148
149 m_textctrl->SetValue(val);
150 }
151
152 #if wxUSE_VALIDATORS
153 void wxTextEntryDialog::SetTextValidator( long style )
154 {
155 wxTextValidator validator( style, &m_value );
156 m_textctrl->SetValidator( validator );
157 }
158
159 void wxTextEntryDialog::SetTextValidator( const wxTextValidator& validator )
160 {
161 m_textctrl->SetValidator( validator );
162 }
163
164 #endif
165 // wxUSE_VALIDATORS
166
167 // ----------------------------------------------------------------------------
168 // wxPasswordEntryDialog
169 // ----------------------------------------------------------------------------
170
171 IMPLEMENT_CLASS(wxPasswordEntryDialog, wxTextEntryDialog)
172
173 wxPasswordEntryDialog::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