]>
git.saurik.com Git - wxWidgets.git/blob - src/gtk/stattext.cpp
1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
12 #pragma implementation "stattext.h"
19 #include "wx/stattext.h"
20 #include "wx/gtk/private.h"
25 //-----------------------------------------------------------------------------
27 //-----------------------------------------------------------------------------
29 IMPLEMENT_DYNAMIC_CLASS(wxStaticText
,wxControl
)
31 wxStaticText::wxStaticText()
35 wxStaticText::wxStaticText(wxWindow
*parent
,
37 const wxString
&label
,
43 Create( parent
, id
, label
, pos
, size
, style
, name
);
46 bool wxStaticText::Create(wxWindow
*parent
,
48 const wxString
&label
,
52 const wxString
&name
)
56 if (!PreCreation( parent
, pos
, size
) ||
57 !CreateBase( parent
, id
, pos
, size
, style
, wxDefaultValidator
, name
))
59 wxFAIL_MSG( wxT("wxXX creation failed") );
63 // notice that we call the base class version which will just remove the
64 // '&' characters from the string, but not set the label's text to it
65 // because the label is not yet created and because SetLabel() has a side
66 // effect of changing the control size which might not be desirable
67 wxControl::SetLabel(label
);
68 m_widget
= gtk_label_new( wxGTK_CONV( m_label
) );
70 GtkJustification justify
;
71 if ( style
& wxALIGN_CENTER
)
72 justify
= GTK_JUSTIFY_CENTER
;
73 else if ( style
& wxALIGN_RIGHT
)
74 justify
= GTK_JUSTIFY_RIGHT
;
75 else // wxALIGN_LEFT is 0
76 justify
= GTK_JUSTIFY_LEFT
;
77 gtk_label_set_justify(GTK_LABEL(m_widget
), justify
);
79 // GTK_JUSTIFY_LEFT is 0, RIGHT 1 and CENTER 2
80 static const float labelAlignments
[] = { 0.0, 1.0, 0.5 };
81 gtk_misc_set_alignment(GTK_MISC(m_widget
), labelAlignments
[justify
], 0.0);
83 // do not move this call elsewhere
84 gtk_label_set_line_wrap( GTK_LABEL(m_widget
), FALSE
);
86 m_parent
->DoAddChild( this );
92 wxControl::SetFont( parent
->GetFont() );
94 wxSize
size_best( DoGetBestSize() );
95 wxSize
new_size( size
);
97 new_size
.x
= size_best
.x
;
99 new_size
.y
= size_best
.y
;
100 if ((new_size
.x
!= size
.x
) || (new_size
.y
!= size
.y
))
101 SetSize( new_size
.x
, new_size
.y
);
103 SetBackgroundColour( parent
->GetBackgroundColour() );
104 SetForegroundColour( parent
->GetForegroundColour() );
110 wxString
wxStaticText::GetLabel() const
112 GtkLabel
*label
= GTK_LABEL(m_widget
);
115 wxString str
= wxGTK_CONV_BACK( gtk_label_get_text( label
) );
117 wxString str
= wxString( label
->label
);
120 return wxString(str
);
123 void wxStaticText::SetLabel( const wxString
&label
)
125 wxControl::SetLabel(label
);
127 gtk_label_set( GTK_LABEL(m_widget
), wxGTK_CONV( m_label
) );
129 // adjust the label size to the new label unless disabled
130 if (!HasFlag(wxST_NO_AUTORESIZE
))
131 SetSize( GetBestSize() );
134 bool wxStaticText::SetFont( const wxFont
&font
)
136 bool ret
= wxControl::SetFont(font
);
138 // adjust the label size to the new label unless disabled
139 if (!HasFlag(wxST_NO_AUTORESIZE
))
140 SetSize( GetBestSize() );
145 void wxStaticText::ApplyWidgetStyle()
148 gtk_widget_set_style( m_widget
, m_widgetStyle
);
151 wxSize
wxStaticText::DoGetBestSize() const
153 // Do not return any arbitrary default value...
154 wxASSERT_MSG( m_widget
, wxT("wxStaticText::DoGetBestSize called before creation") );
156 // this invalidates the size request
157 gtk_label_set_line_wrap( GTK_LABEL(m_widget
), TRUE
);
158 gtk_label_set_line_wrap( GTK_LABEL(m_widget
), FALSE
);
163 (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget
) )->size_request
)
166 return wxSize(req
.width
, req
.height
);
169 #endif // wxUSE_STATTEXT