]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/stattext.cpp
Added OLE automation sample, changed BC++ makefiles
[wxWidgets.git] / src / gtk1 / stattext.cpp
index 6f931be64a786277ebd98f5c61fe77afa1390f62..d753dc015563c2425e36bf17894776c40c0b31d1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        stattext.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $Id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -23,18 +22,18 @@ IMPLEMENT_DYNAMIC_CLASS(wxStaticText,wxControl)
 
 wxStaticText::wxStaticText(void)
 {
-};
+}
 
 wxStaticText::wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label, 
       const wxPoint &pos, const wxSize &size, 
-      const long style, const wxString &name )
+      long style, const wxString &name )
 {
   Create( parent, id, label, pos, size, style, name );
-};
+}
 
 bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &label, 
       const wxPoint &pos, const wxSize &size, 
-      const long style, const wxString &name )
+      long style, const wxString &name )
 {
   m_needParent = TRUE;
   
@@ -42,7 +41,9 @@ bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &labe
   
   PreCreation( parent, id, pos, size, style, name );
   
-  m_widget = gtk_label_new( label );
+  wxControl::SetLabel(label);
+  m_widget = gtk_label_new( m_label );
+
   GtkJustification justify;
   if ( style & wxALIGN_CENTER )
     justify = GTK_JUSTIFY_CENTER;
@@ -52,26 +53,77 @@ bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &labe
     justify = GTK_JUSTIFY_LEFT;
   gtk_label_set_justify(GTK_LABEL(m_widget), justify);
   
-  if (newSize.x == -1) newSize.x = gdk_string_measure( m_widget->style->font, label );
-  if (newSize.y == -1) newSize.y = 26;
+   int y = 1;
+   if (newSize.x == -1) 
+   {
+     char *s = WXSTRINGCAST m_label;
+     char *nl = strchr(s, '\n');
+     if (nl) 
+     {
+       do 
+       {
+         *nl = 0;
+         int x = gdk_string_measure( m_widget->style->font, s ) + 4;
+         if (x > newSize.x) newSize.x = x;
+         *nl++ = '\n';
+         if ((nl = strchr(s = nl, '\n'))) 
+        {
+           ++y;
+         } 
+        else 
+        {
+           int x = gdk_string_measure( m_widget->style->font, s ) + 4;
+           if (x > newSize.x) newSize.x = x;
+         }
+       } while (nl);
+     } 
+     else 
+     {
+       newSize.x = gdk_string_measure( m_widget->style->font, label ) + 4;
+     }
+   }
+   if (newSize.y == -1) 
+   {
+     if (y == 1) 
+       newSize.y = 26;
+     else
+       newSize.y = 4 + y * (m_widget->style->font->ascent + 2*m_widget->style->font->descent);
+   }
+  
   SetSize( newSize.x, newSize.y );
   
+  m_parent->AddChild( this );
+
+  (m_parent->m_insertCallback)( m_parent, this );
+  
   PostCreation();
   
+  SetBackgroundColour( parent->GetBackgroundColour() );
+  SetForegroundColour( parent->GetForegroundColour() );
+
   Show( TRUE );
     
   return TRUE;
-};
+}
 
 wxString wxStaticText::GetLabel(void) const
 {
-  char *str = NULL;
+  char *str = (char *) NULL;
   gtk_label_get( GTK_LABEL(m_widget), &str );
   wxString tmp( str );
   return tmp;
-};
+}
 
 void wxStaticText::SetLabel( const wxString &label )
 {
-  gtk_label_set( GTK_LABEL(m_widget), label );
-};
+  wxControl::SetLabel(label);
+
+  gtk_label_set( GTK_LABEL(m_widget), m_label );
+}
+
+void wxStaticText::ApplyWidgetStyle()
+{
+  SetWidgetStyle();
+  gtk_widget_set_style( m_widget, m_widgetStyle );
+}
+