]> git.saurik.com Git - wxWidgets.git/blob - src/generic/textdlgg.cpp
use best size instead of hard coded 80*26 in SetSize(wxSIZE_AUTO)
[wxWidgets.git] / src / generic / textdlgg.cpp
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
53 static const int wxID_TEXT = 3000;
54
55 // ============================================================================
56 // implementation
57 // ============================================================================
58
59 // ----------------------------------------------------------------------------
60 // wxTextEntryDialog
61 // ----------------------------------------------------------------------------
62
63 BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
64 EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
65 END_EVENT_TABLE()
66
67 IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
68
69 wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent,
70 const wxString& message,
71 const wxString& caption,
72 const wxString& value,
73 long style,
74 const wxPoint& pos)
75 : wxDialog(parent, -1, caption, pos, wxDefaultSize,
76 wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL),
77 m_value(value)
78 {
79 m_dialogStyle = style;
80 m_value = value;
81
82 wxBeginBusyCursor();
83
84 wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
85
86 // 1) text message
87 topsizer->Add( CreateTextSizer( message ), 0, wxALL, 10 );
88
89 // 2) text ctrl
90 m_textctrl = new wxTextCtrl(this, wxID_TEXT, value,
91 wxDefaultPosition, wxSize(300, -1),
92 style & ~wxTextEntryDialogStyle);
93 topsizer->Add( m_textctrl, 1, wxEXPAND | wxLEFT|wxRIGHT, 15 );
94
95 #if wxUSE_VALIDATORS
96 wxTextValidator validator( wxFILTER_NONE, &m_value );
97 m_textctrl->SetValidator( validator );
98 #endif
99 // wxUSE_VALIDATORS
100
101 #if wxUSE_STATLINE
102 // 3) static line
103 topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
104 #endif
105
106 // 4) buttons
107 topsizer->Add( CreateButtonSizer( style ), 0, wxCENTRE | wxALL, 10 );
108
109 SetAutoLayout( TRUE );
110 SetSizer( topsizer );
111
112 topsizer->SetSizeHints( this );
113 topsizer->Fit( this );
114
115 Centre( wxBOTH );
116
117 m_textctrl->SetSelection(-1, -1);
118 m_textctrl->SetFocus();
119
120 wxEndBusyCursor();
121 }
122
123 void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
124 {
125 #if wxUSE_VALIDATORS
126 if( Validate() && TransferDataFromWindow() )
127 {
128 EndModal( wxID_OK );
129 }
130 #else
131 m_value = m_textctrl->GetValue();
132
133 EndModal(wxID_OK);
134 #endif
135 // wxUSE_VALIDATORS
136 }
137
138 void wxTextEntryDialog::SetValue(const wxString& val)
139 {
140 m_value = val;
141
142 m_textctrl->SetValue(val);
143 }
144
145 #if wxUSE_VALIDATORS
146 void wxTextEntryDialog::SetTextValidator( long style )
147 {
148 wxTextValidator validator( style, &m_value );
149 m_textctrl->SetValidator( validator );
150 }
151
152 void wxTextEntryDialog::SetTextValidator( wxTextValidator& validator )
153 {
154 m_textctrl->SetValidator( validator );
155 }
156
157 #endif
158 // wxUSE_VALIDATORS
159
160 #endif // wxUSE_TEXTDLG