]>
git.saurik.com Git - wxWidgets.git/blob - src/gtk1/stattext.cpp
1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
12 #pragma implementation "stattext.h"
15 #include "wx/stattext.h"
20 //-----------------------------------------------------------------------------
22 //-----------------------------------------------------------------------------
24 IMPLEMENT_DYNAMIC_CLASS(wxStaticText
,wxControl
)
26 wxStaticText::wxStaticText()
30 wxStaticText::wxStaticText(wxWindow
*parent
,
32 const wxString
&label
,
38 Create( parent
, id
, label
, pos
, size
, style
, name
);
41 bool wxStaticText::Create(wxWindow
*parent
,
43 const wxString
&label
,
47 const wxString
&name
)
51 if (!PreCreation( parent
, pos
, size
) ||
52 !CreateBase( parent
, id
, pos
, size
, style
, wxDefaultValidator
, name
))
54 wxFAIL_MSG( wxT("wxXX creation failed") );
58 // notice that we call the base class version which will just remove the
59 // '&' characters from the string, but not set the label's text to it
60 // because the label is not yet created and because SetLabel() has a side
61 // effect of changing the control size which might not be desirable
62 wxControl::SetLabel(label
);
63 m_widget
= gtk_label_new( m_label
.mbc_str() );
65 wxControl::SetFont( parent
->GetFont() );
67 GtkJustification justify
;
68 if ( style
& wxALIGN_CENTER
)
69 justify
= GTK_JUSTIFY_CENTER
;
70 else if ( style
& wxALIGN_RIGHT
)
71 justify
= GTK_JUSTIFY_RIGHT
;
72 else // wxALIGN_LEFT is 0
73 justify
= GTK_JUSTIFY_LEFT
;
74 gtk_label_set_justify(GTK_LABEL(m_widget
), justify
);
76 // GTK_JUSTIFY_LEFT is 0, RIGHT 1 and CENTER 2
77 static const float labelAlignments
[] = { 0.0, 1.0, 0.5 };
78 gtk_misc_set_alignment(GTK_MISC(m_widget
), labelAlignments
[justify
], 0.0);
80 // do not move this call elsewhere
81 gtk_label_set_line_wrap( GTK_LABEL(m_widget
), FALSE
);
83 SetSizeOrDefault( size
);
85 m_parent
->DoAddChild( this );
89 SetBackgroundColour( parent
->GetBackgroundColour() );
90 SetForegroundColour( parent
->GetForegroundColour() );
96 wxString
wxStaticText::GetLabel() const
98 char *str
= (char *) NULL
;
99 gtk_label_get( GTK_LABEL(m_widget
), &str
);
101 return wxString(str
);
104 void wxStaticText::SetLabel( const wxString
&label
)
106 wxControl::SetLabel(label
);
108 gtk_label_set( GTK_LABEL(m_widget
), m_label
.mbc_str() );
110 // adjust the label size to the new label unless disabled
111 if (!HasFlag(wxST_NO_AUTORESIZE
))
112 SetSize( GetBestSize() );
115 bool wxStaticText::SetFont( const wxFont
&font
)
117 bool ret
= wxControl::SetFont(font
);
119 // adjust the label size to the new label unless disabled
120 if (!HasFlag(wxST_NO_AUTORESIZE
))
121 SetSize( GetBestSize() );
126 void wxStaticText::ApplyWidgetStyle()
129 gtk_widget_set_style( m_widget
, m_widgetStyle
);
132 wxSize
wxStaticText::DoGetBestSize() const
134 // Do not return any arbitrary default value...
135 wxASSERT_MSG( m_widget
, wxT("wxStaticText::DoGetBestSize called before creation") );
137 // this invalidates the size request
138 gtk_label_set_line_wrap( GTK_LABEL(m_widget
), TRUE
);
139 gtk_label_set_line_wrap( GTK_LABEL(m_widget
), FALSE
);
144 (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget
)->klass
)->size_request
)
147 return wxSize(req
.width
, req
.height
);