]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/generic/textdlgg.cpp
make it clear which GL(U) library we can't find in error messages, otherwise the...
[wxWidgets.git] / src / generic / textdlgg.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: 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#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
21 #pragma implementation "textdlgg.h"
22#endif
23
24// For compilers that support precompilation, includes "wx.h".
25#include "wx/wxprec.h"
26
27#ifdef __BORLANDC__
28 #pragma hdrstop
29#endif
30
31#if wxUSE_TEXTDLG
32
33#ifndef WX_PRECOMP
34 #include "wx/utils.h"
35 #include "wx/dialog.h"
36 #include "wx/button.h"
37 #include "wx/stattext.h"
38 #include "wx/textctrl.h"
39 #include "wx/intl.h"
40 #include "wx/sizer.h"
41#endif
42
43#if wxUSE_STATLINE
44 #include "wx/statline.h"
45#endif
46
47#include "wx/generic/textdlgg.h"
48
49// ----------------------------------------------------------------------------
50// constants
51// ----------------------------------------------------------------------------
52
53static const int wxID_TEXT = 3000;
54
55// ---------------------------------------------------------------------------
56// macros
57// ---------------------------------------------------------------------------
58
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
61 */
62
63#if defined(__SMARTPHONE__)
64 #define wxLARGESMALL(large,small) small
65#else
66 #define wxLARGESMALL(large,small) large
67#endif
68
69// ============================================================================
70// implementation
71// ============================================================================
72
73// ----------------------------------------------------------------------------
74// wxTextEntryDialog
75// ----------------------------------------------------------------------------
76
77BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
78 EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
79END_EVENT_TABLE()
80
81IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
82
83wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent,
84 const wxString& message,
85 const wxString& caption,
86 const wxString& value,
87 long style,
88 const wxPoint& pos)
89 : wxDialog(parent, wxID_ANY, caption, pos, wxDefaultSize,
90 wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL),
91 m_value(value)
92{
93 m_dialogStyle = style;
94 m_value = value;
95
96 wxBeginBusyCursor();
97
98 wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
99
100#if wxUSE_STATTEXT
101 // 1) text message
102 topsizer->Add( CreateTextSizer( message ), 0, wxALL, wxLARGESMALL(10,0) );
103#endif
104
105 // 2) text ctrl
106 m_textctrl = new wxTextCtrl(this, wxID_TEXT, value,
107 wxDefaultPosition, wxSize(300, wxDefaultCoord),
108 style & ~wxTextEntryDialogStyle);
109 topsizer->Add( m_textctrl, 1, wxEXPAND | wxLEFT|wxRIGHT, wxLARGESMALL(15,0) );
110
111#if wxUSE_VALIDATORS
112 wxTextValidator validator( wxFILTER_NONE, &m_value );
113 m_textctrl->SetValidator( validator );
114#endif
115 // wxUSE_VALIDATORS
116
117 // smart phones does not support or do not waste space for wxButtons
118#ifdef __SMARTPHONE__
119
120 SetRightMenu(wxID_CANCEL, _("Cancel"));
121
122#else // __SMARTPHONE__/!__SMARTPHONE__
123
124#if wxUSE_STATLINE
125 // 3) static line
126 topsizer->Add( new wxStaticLine( this, wxID_ANY ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
127#endif
128
129 // 4) buttons
130 topsizer->Add( CreateButtonSizer( style ), 0, wxEXPAND | wxALL, 10 );
131
132#endif // !__SMARTPHONE__
133
134 SetAutoLayout( true );
135 SetSizer( topsizer );
136
137 topsizer->SetSizeHints( this );
138 topsizer->Fit( this );
139
140 if ( style & wxCENTRE )
141 Centre( wxBOTH );
142
143 m_textctrl->SetSelection(-1, -1);
144 m_textctrl->SetFocus();
145
146 wxEndBusyCursor();
147}
148
149void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
150{
151#if wxUSE_VALIDATORS
152 if( Validate() && TransferDataFromWindow() )
153 {
154 EndModal( wxID_OK );
155 }
156#else
157 m_value = m_textctrl->GetValue();
158
159 EndModal(wxID_OK);
160#endif
161 // wxUSE_VALIDATORS
162}
163
164void wxTextEntryDialog::SetValue(const wxString& val)
165{
166 m_value = val;
167
168 m_textctrl->SetValue(val);
169}
170
171#if wxUSE_VALIDATORS
172void wxTextEntryDialog::SetTextValidator( long style )
173{
174 wxTextValidator validator( style, &m_value );
175 m_textctrl->SetValidator( validator );
176}
177
178void wxTextEntryDialog::SetTextValidator( wxTextValidator& validator )
179{
180 m_textctrl->SetValidator( validator );
181}
182
183#endif
184 // wxUSE_VALIDATORS
185
186// ----------------------------------------------------------------------------
187// wxPasswordEntryDialog
188// ----------------------------------------------------------------------------
189
190IMPLEMENT_CLASS(wxPasswordEntryDialog, wxTextEntryDialog)
191
192wxPasswordEntryDialog::wxPasswordEntryDialog(wxWindow *parent,
193 const wxString& message,
194 const wxString& caption,
195 const wxString& value,
196 long style,
197 const wxPoint& pos)
198 : wxTextEntryDialog(parent, message, caption, value,
199 style | wxTE_PASSWORD, pos)
200{
201 // Only change from wxTextEntryDialog is the password style
202}
203
204#endif // wxUSE_TEXTDLG