]> git.saurik.com Git - wxWidgets.git/blob - src/gtk/statbox.cpp
the app doesn't exit any more if a dialog is shown (and destroyed) while
[wxWidgets.git] / src / gtk / statbox.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: gtk/statbox.cpp
3 // Purpose:
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifdef __GNUG__
11 #pragma implementation "statbox.h"
12 #endif
13
14 #include "wx/defs.h"
15
16 #if wxUSE_STATBOX
17
18 #include "wx/statbox.h"
19 #include "wx/gtk/private.h"
20
21 #include "gdk/gdk.h"
22 #include "gtk/gtk.h"
23
24 //-----------------------------------------------------------------------------
25 // wxStaticBox
26 //-----------------------------------------------------------------------------
27
28 IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl)
29
30 wxStaticBox::wxStaticBox()
31 {
32 }
33
34 wxStaticBox::wxStaticBox( wxWindow *parent,
35 wxWindowID id,
36 const wxString &label,
37 const wxPoint& pos,
38 const wxSize& size,
39 long style,
40 const wxString& name )
41 {
42 Create( parent, id, label, pos, size, style, name );
43 }
44
45 bool wxStaticBox::Create( wxWindow *parent,
46 wxWindowID id,
47 const wxString& label,
48 const wxPoint& pos,
49 const wxSize& size,
50 long style,
51 const wxString& name )
52 {
53 m_needParent = TRUE;
54
55 if (!PreCreation( parent, pos, size ) ||
56 !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
57 {
58 wxFAIL_MSG( wxT("wxStaticBox creation failed") );
59 return FALSE;
60 }
61
62 wxControl::SetLabel(label);
63
64 m_widget = gtk_frame_new(m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
65
66 m_parent->DoAddChild( this );
67
68 PostCreation();
69
70 InheritAttributes();
71
72 // need to set non default alignment?
73 gfloat xalign;
74 if ( style & wxALIGN_CENTER )
75 xalign = 0.5;
76 else if ( style & wxALIGN_RIGHT )
77 xalign = 1.0;
78 else // wxALIGN_LEFT
79 xalign = 0.0;
80
81 if ( xalign )
82 gtk_frame_set_label_align(GTK_FRAME( m_widget ), xalign, 0.0);
83
84 Show( TRUE );
85
86 return TRUE;
87 }
88
89 void wxStaticBox::SetLabel( const wxString &label )
90 {
91 wxControl::SetLabel( label );
92
93 gtk_frame_set_label( GTK_FRAME( m_widget ),
94 m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
95 }
96
97 void wxStaticBox::ApplyWidgetStyle()
98 {
99 SetWidgetStyle();
100 gtk_widget_set_style( m_widget, m_widgetStyle );
101 }
102
103 #endif // wxUSE_STATBOX