]>
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" 
  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