]> git.saurik.com Git - wxWidgets.git/blame - src/generic/textdlgg.cpp
Allow wxMac to have HRULE/VRULEs for wxListCtrl too.
[wxWidgets.git] / src / generic / textdlgg.cpp
CommitLineData
c801d85f
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: textdlgg.cpp
3// Purpose: wxTextEntryDialog
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
6aa89a22 8// Copyright: (c) Julian Smart
65571936 9// Licence: wxWindows licence
c801d85f
KB
10/////////////////////////////////////////////////////////////////////////////
11
c50f1fb9
VZ
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ----------------------------------------------------------------------------
17// headers
18// ----------------------------------------------------------------------------
19
14f355c2 20#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
c50f1fb9 21 #pragma implementation "textdlgg.h"
c801d85f
KB
22#endif
23
24// For compilers that support precompilation, includes "wx.h".
25#include "wx/wxprec.h"
26
27#ifdef __BORLANDC__
c50f1fb9 28 #pragma hdrstop
c801d85f
KB
29#endif
30
1e6feb95
VZ
31#if wxUSE_TEXTDLG
32
c801d85f 33#ifndef WX_PRECOMP
c50f1fb9
VZ
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"
92afa2b1 40 #include "wx/sizer.h"
dcf924a3
RR
41#endif
42
43#if wxUSE_STATLINE
c50f1fb9 44 #include "wx/statline.h"
c801d85f
KB
45#endif
46
47#include "wx/generic/textdlgg.h"
48
c50f1fb9
VZ
49// ----------------------------------------------------------------------------
50// constants
51// ----------------------------------------------------------------------------
52
c49245f8 53static const int wxID_TEXT = 3000;
dcf924a3 54
0d1f53ca
WS
55// ---------------------------------------------------------------------------
56// macros
57// ---------------------------------------------------------------------------
58
59/* Macro for avoiding #ifdefs when value have to be different depending on size of
9a357011 60 device we display on - take it from something like wxDesktopPolicy in the future
0d1f53ca
WS
61 */
62
63#if defined(__SMARTPHONE__)
64 #define wxLARGESMALL(large,small) small
65#else
66 #define wxLARGESMALL(large,small) large
67#endif
68
c50f1fb9
VZ
69// ============================================================================
70// implementation
71// ============================================================================
72
73// ----------------------------------------------------------------------------
c801d85f 74// wxTextEntryDialog
c50f1fb9 75// ----------------------------------------------------------------------------
c801d85f 76
c801d85f 77BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
c50f1fb9 78 EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
c801d85f
KB
79END_EVENT_TABLE()
80
81IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
c801d85f 82
c50f1fb9
VZ
83wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent,
84 const wxString& message,
85 const wxString& caption,
86 const wxString& value,
87 long style,
88 const wxPoint& pos)
ca65c044 89 : wxDialog(parent, wxID_ANY, caption, pos, wxDefaultSize,
c50f1fb9
VZ
90 wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL),
91 m_value(value)
c801d85f 92{
92afa2b1
RR
93 m_dialogStyle = style;
94 m_value = value;
95
96 wxBeginBusyCursor();
479cd5de 97
92afa2b1
RR
98 wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
99
132422c4 100#if wxUSE_STATTEXT
92afa2b1 101 // 1) text message
0d1f53ca 102 topsizer->Add( CreateTextSizer( message ), 0, wxALL, wxLARGESMALL(10,0) );
132422c4 103#endif
479cd5de 104
92afa2b1 105 // 2) text ctrl
a294c6d5 106 m_textctrl = new wxTextCtrl(this, wxID_TEXT, value,
422d0ff0 107 wxDefaultPosition, wxSize(300, wxDefaultCoord),
a294c6d5 108 style & ~wxTextEntryDialogStyle);
aa66250b 109 topsizer->Add( m_textctrl, style & wxTE_MULTILINE ? 1 : 0, wxEXPAND | wxLEFT|wxRIGHT, wxLARGESMALL(15,0) );
92afa2b1 110
fc0d5b6b
JS
111#if wxUSE_VALIDATORS
112 wxTextValidator validator( wxFILTER_NONE, &m_value );
113 m_textctrl->SetValidator( validator );
114#endif
115 // wxUSE_VALIDATORS
116
9a357011 117 // smart phones does not support or do not waste space for wxButtons
0d1f53ca
WS
118#ifdef __SMARTPHONE__
119
120 SetRightMenu(wxID_CANCEL, _("Cancel"));
121
122#else // __SMARTPHONE__/!__SMARTPHONE__
123
92afa2b1
RR
124#if wxUSE_STATLINE
125 // 3) static line
ca65c044 126 topsizer->Add( new wxStaticLine( this, wxID_ANY ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
92afa2b1
RR
127#endif
128
129 // 4) buttons
acf2ac37 130 topsizer->Add( CreateButtonSizer( style ), 0, wxEXPAND | wxALL, 10 );
479cd5de 131
0d1f53ca
WS
132#endif // !__SMARTPHONE__
133
ca65c044 134 SetAutoLayout( true );
8b17ba72 135 SetSizer( topsizer );
479cd5de 136
aa66250b 137#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
92afa2b1
RR
138 topsizer->SetSizeHints( this );
139 topsizer->Fit( this );
92afa2b1 140
01e13147 141 if ( style & wxCENTRE )
13d13a9e 142 Centre( wxBOTH );
aa66250b 143#endif
c801d85f 144
19de4eec 145 m_textctrl->SetSelection(-1, -1);
c50f1fb9 146 m_textctrl->SetFocus();
92afa2b1
RR
147
148 wxEndBusyCursor();
c801d85f
KB
149}
150
151void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
152{
fc0d5b6b 153#if wxUSE_VALIDATORS
ca65c044 154 if( Validate() && TransferDataFromWindow() )
fc0d5b6b
JS
155 {
156 EndModal( wxID_OK );
157 }
158#else
c50f1fb9 159 m_value = m_textctrl->GetValue();
c801d85f 160
c50f1fb9 161 EndModal(wxID_OK);
fc0d5b6b
JS
162#endif
163 // wxUSE_VALIDATORS
c801d85f 164}
1e6feb95 165
a8f6ef51
VZ
166void wxTextEntryDialog::SetValue(const wxString& val)
167{
168 m_value = val;
169
170 m_textctrl->SetValue(val);
171}
172
fc0d5b6b
JS
173#if wxUSE_VALIDATORS
174void wxTextEntryDialog::SetTextValidator( long style )
175{
176 wxTextValidator validator( style, &m_value );
177 m_textctrl->SetValidator( validator );
178}
179
180void wxTextEntryDialog::SetTextValidator( wxTextValidator& validator )
181{
182 m_textctrl->SetValidator( validator );
183}
184
185#endif
186 // wxUSE_VALIDATORS
187
e9f4948e
KH
188// ----------------------------------------------------------------------------
189// wxPasswordEntryDialog
190// ----------------------------------------------------------------------------
191
192IMPLEMENT_CLASS(wxPasswordEntryDialog, wxTextEntryDialog)
193
194wxPasswordEntryDialog::wxPasswordEntryDialog(wxWindow *parent,
195 const wxString& message,
196 const wxString& caption,
197 const wxString& value,
198 long style,
199 const wxPoint& pos)
200 : wxTextEntryDialog(parent, message, caption, value,
201 style | wxTE_PASSWORD, pos)
202{
203 // Only change from wxTextEntryDialog is the password style
204}
205
1e6feb95 206#endif // wxUSE_TEXTDLG