]> git.saurik.com Git - wxWidgets.git/blob - src/univ/stattext.cpp
Yielding from a non-gui thread needs to bail out, otherwise we end up
[wxWidgets.git] / src / univ / stattext.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/univ/stattext.cpp
3 // Purpose: wxStaticText
4 // Author: Vadim Zeitlin
5 // Modified by:
6 // Created: 14.08.00
7 // RCS-ID: $Id$
8 // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 // ============================================================================
13 // declarations
14 // ============================================================================
15
16 // ----------------------------------------------------------------------------
17 // headers
18 // ----------------------------------------------------------------------------
19
20 #include "wx/wxprec.h"
21
22 #ifdef __BORLANDC__
23 #pragma hdrstop
24 #endif
25
26 #if wxUSE_STATTEXT
27
28 #include "wx/stattext.h"
29
30 #ifndef WX_PRECOMP
31 #include "wx/dcclient.h"
32 #include "wx/validate.h"
33 #endif
34
35 #include "wx/univ/renderer.h"
36 #include "wx/univ/theme.h"
37
38 // ============================================================================
39 // implementation
40 // ============================================================================
41
42 IMPLEMENT_ABSTRACT_CLASS(wxStaticText, wxControl)
43
44 // ----------------------------------------------------------------------------
45 // creation
46 // ----------------------------------------------------------------------------
47
48 bool wxStaticText::Create(wxWindow *parent,
49 wxWindowID id,
50 const wxString &label,
51 const wxPoint &pos,
52 const wxSize &size,
53 long style,
54 const wxString &name)
55 {
56 if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
57 return false;
58
59 SetLabel(label);
60 SetInitialSize(size);
61
62 return true;
63 }
64
65 // ----------------------------------------------------------------------------
66 // size management
67 // ----------------------------------------------------------------------------
68
69 wxSize wxStaticText::DoGetBestClientSize() const
70 {
71 wxStaticText *self = wxConstCast(this, wxStaticText);
72 wxClientDC dc(self);
73 dc.SetFont(GetFont());
74 wxCoord width, height;
75 dc.GetMultiLineTextExtent(GetLabel(), &width, &height);
76
77 return wxSize(width, height);
78 }
79
80 // ----------------------------------------------------------------------------
81 // drawing
82 // ----------------------------------------------------------------------------
83
84 void wxStaticText::DoDraw(wxControlRenderer *renderer)
85 {
86 renderer->DrawLabel();
87 }
88
89 void wxStaticText::SetLabel(const wxString& str)
90 {
91 // save original label
92 m_labelOrig = str;
93
94 // draw as real label the result of GetEllipsizedLabelWithoutMarkup:
95 DoSetLabel(GetEllipsizedLabelWithoutMarkup());
96 }
97
98 void wxStaticText::DoSetLabel(const wxString& str)
99 {
100 UnivDoSetLabel(str);
101 }
102
103 wxString wxStaticText::DoGetLabel() const
104 {
105 return wxControl::GetLabel();
106 }
107
108 /*
109 FIXME: UpdateLabel() should be called on size events to allow correct
110 dynamic ellipsizing of the label
111 */
112
113 #endif // wxUSE_STATTEXT