*/
#define wxST_SIZEGRIP 0x0010
+/*
+ * wxStaticText flags
+ */
+#define wxST_NO_AUTORESIZE 0x0001
+
/*
* wxStaticLine flags
*/
void OnPageChanged( wxNotebookEvent &event );
void OnPageChanging( wxNotebookEvent &event );
void OnSliderUpdate( wxCommandEvent &event );
+ void OnUpdateLabel( wxCommandEvent &event );
#if wxUSE_SPINBUTTON
void OnSpinUp( wxSpinEvent &event );
void OnSpinDown( wxSpinEvent &event );
wxTextCtrl *m_text;
wxNotebook *m_notebook;
+ wxStaticText *m_label;
+
private:
DECLARE_EVENT_TABLE()
};
wxMenu *tooltip_menu = new wxMenu;
tooltip_menu->Append(MINIMAL_SET_TOOLTIP_DELAY, "Set &delay\tCtrl-D");
tooltip_menu->AppendSeparator();
- tooltip_menu->Append(MINIMAL_ENABLE_TOOLTIPS, "&Toggle tooltips\tCrtl-T",
+ tooltip_menu->Append(MINIMAL_ENABLE_TOOLTIPS, "&Toggle tooltips\tCtrl-T",
"enable/disable tooltips", TRUE);
tooltip_menu->Check(MINIMAL_ENABLE_TOOLTIPS, TRUE);
menu_bar->Append(tooltip_menu, "&Tooltips");
const int ID_SPIN = 182;
const int ID_BTNPROGRESS = 183;
+const int ID_BUTTON_LABEL = 184;
BEGIN_EVENT_TABLE(MyPanel, wxPanel)
EVT_SIZE ( MyPanel::OnSize)
EVT_UPDATE_UI (ID_BTNPROGRESS, MyPanel::OnUpdateShowProgress)
EVT_BUTTON (ID_BTNPROGRESS, MyPanel::OnShowProgress)
#endif
+EVT_BUTTON (ID_BUTTON_LABEL, MyPanel::OnUpdateLabel)
END_EVENT_TABLE()
MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
dc.DrawText("Bitmap", 20, 20);
dc.SelectObject( wxNullBitmap );
- wxBitmapButton *bmpBtn = new wxBitmapButton
- (
- panel,
- -1,
- bitmap,
- wxPoint(100, 20)
- );
- bmpBtn = NULL; // suppress warning
-
- new wxButton(panel, -1, "Another button", wxPoint(250, 20));
+ (void)new wxBitmapButton(panel, -1, bitmap, wxPoint(100, 20));
+ (void)new wxButton(panel, ID_BUTTON_LABEL, "Toggle label", wxPoint(250, 20));
+ m_label = new wxStaticText(panel, -1, "Label with some long text",
+ wxPoint(250, 60), wxDefaultSize,
+ wxALIGN_RIGHT | wxST_NO_AUTORESIZE);
m_notebook->AddPage(panel, "wxBitmapXXX");
panel->SetAutoLayout( true );
wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
-
+
sizer->Add( new wxButton(panel, -1, "Test Button" ), 3, wxALL, 10 );
sizer->Add( 20,20, 1 );
sizer->Add( new wxButton(panel, -1, "Test Button 2" ), 3, wxGROW|wxALL, 10 );
-
+
panel->SetSizer( sizer );
m_notebook->AddPage(panel, "wxSizer");
m_text->SetFont( *wxITALIC_FONT );
}
+void MyPanel::OnUpdateLabel( wxCommandEvent &WXUNUSED(event) )
+{
+ static bool s_long = TRUE;
+
+ s_long = !s_long;
+ m_label->SetLabel(s_long ? "very very very long text" : "shorter text");
+}
+
void MyPanel::OnSliderUpdate( wxCommandEvent &WXUNUSED(event) )
{
m_gauge->SetValue( m_slider->GetValue() );
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
{
wxFAIL_MSG( wxT("wxXX creation failed") );
- return FALSE;
+ return FALSE;
}
// notice that we call the base class version which will just remove the
// GTK_JUSTIFY_LEFT is 0, RIGHT 1 and CENTER 2
static const float labelAlignments[] = { 0.0, 1.0, 0.5 };
gtk_misc_set_alignment(GTK_MISC(m_widget), labelAlignments[justify], 0.0);
-
+
GtkRequisition req;
(* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
gtk_label_set( GTK_LABEL(m_widget), m_label.mbc_str() );
- // adjust the label size to the new label
-
- // TODO there should be a way to prevent SetLabel() from doing it (an
- // additional parameter?)
- GtkRequisition req;
- (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
+ // adjust the label size to the new label unless disabled
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ GtkRequisition req;
+ (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request )
+ (m_widget, &req );
- SetSize( req.width, req.height );
+ SetSize( req.width, req.height );
+ }
}
void wxStaticText::ApplyWidgetStyle()
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
{
wxFAIL_MSG( wxT("wxXX creation failed") );
- return FALSE;
+ return FALSE;
}
// notice that we call the base class version which will just remove the
// GTK_JUSTIFY_LEFT is 0, RIGHT 1 and CENTER 2
static const float labelAlignments[] = { 0.0, 1.0, 0.5 };
gtk_misc_set_alignment(GTK_MISC(m_widget), labelAlignments[justify], 0.0);
-
+
GtkRequisition req;
(* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
gtk_label_set( GTK_LABEL(m_widget), m_label.mbc_str() );
- // adjust the label size to the new label
-
- // TODO there should be a way to prevent SetLabel() from doing it (an
- // additional parameter?)
- GtkRequisition req;
- (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
+ // adjust the label size to the new label unless disabled
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ GtkRequisition req;
+ (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request )
+ (m_widget, &req );
- SetSize( req.width, req.height );
+ SetSize( req.width, req.height );
+ }
}
void wxStaticText::ApplyWidgetStyle()
void wxListBox::Free()
{
#if wxUSE_OWNER_DRAWN
- size_t uiCount = m_aItems.Count();
- while ( uiCount-- != 0 ) {
- delete m_aItems[uiCount];
- }
+ if ( m_windowStyle & wxLB_OWNERDRAW )
+ {
+ size_t uiCount = m_aItems.Count();
+ while ( uiCount-- != 0 ) {
+ delete m_aItems[uiCount];
+ }
- m_aItems.Clear();
-#else // !wxUSE_OWNER_DRAWN
+ m_aItems.Clear();
+ }
+ else
+#endif // wxUSE_OWNER_DRAWN
if ( HasClientObjectData() )
{
for ( size_t n = 0; n < (size_t)m_noItems; n++ )
delete GetClientObject(n);
}
}
-#endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN
}
void wxListBox::SetSelection(int N, bool select)
{
SetWindowText(GetHwnd(), label);
- // adjust the size of the window to fit to the label (this behaviour is
- // backward compatible and generally makes sense but we might want to still
- // provide the user a way to disable it) (VZ)
- DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+ // adjust the size of the window to fit to the label unless autoresizing is
+ // disabled
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+ }
}
WXHBRUSH wxStaticText::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,