Simulates the effect of the user issuing a command to the item. See \helpref{wxCommandEvent}{wxcommandevent}.
-\membersection{wxControl::GetAdjustMinSizeFlag}\label{wxcontrolgetadjustminsizeflag}
-
-\func{bool}{GetAdjustMinSizeFlag}{}
-
-Returns whether the minsize should be adjusted for this control when
-SetLabel or SetFont are called.
-
-
\membersection{wxControl::GetLabel}\label{wxcontrolgetlabel}
\func{wxString\&}{GetLabel}{\void}
Returns the control's text.
-\membersection{wxControl::SetAdjustMinSizeFlag}\label{wxcontrolsetadjustminsizeflag}
-
-\func{void}{SetAdjustMinSizeFlag}{\param{bool }{adjust}}
-
-By default controls will readjust their size and minsize when
-SetLabel or SetFont are called. This flag will allow you to
-control this behavior.
-
\membersection{wxControl::SetLabel}\label{wxcontrolsetlabel}
\func{void}{SetLabel}{\param{const wxString\& }{label}}
// wxControl is the base class for all controls
// ----------------------------------------------------------------------------
-
class WXDLLEXPORT wxControlBase : public wxWindow
{
public:
- wxControlBase() { Init(); }
+ wxControlBase() { }
virtual ~wxControlBase();
// if the button was clicked)
virtual void Command(wxCommandEvent &event);
-
- virtual void SetLabel(const wxString& label);
- virtual bool SetFont(const wxFont& font);
- virtual bool GetAdjustMinSizeFlag() const { return m_adjustMinSize; }
- void SetAdjustMinSizeFlag(bool adjust) { m_adjustMinSize = adjust; }
-
-
protected:
- void Init();
-
// creates the control (calls wxWindowBase::CreateBase inside) and adds it
// to the list of parents children
bool CreateControl(wxWindowBase *parent,
SetBestSize(size);
}
- // should minsize and size be adjusted when font or label change?
- bool m_adjustMinSize;
-
DECLARE_NO_COPY_CLASS(wxControlBase)
};
protected:
virtual wxSize DoGetBestSize() const;
void PostCreation(const wxSize& size);
- void PostSetLabel();
#ifdef __WXGTK20__
wxString PrepareLabelMnemonics( const wxString &label ) const;
wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on
- bool m_createComplete;
private:
DECLARE_DYNAMIC_CLASS(wxControl)
wxString GetLabel() const;
void SetLabel( const wxString &label );
- bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
-
+ bool SetFont( const wxFont &font );
bool SetForegroundColour( const wxColour& colour );
static wxVisualAttributes
protected:
virtual wxSize DoGetBestSize() const;
void PostCreation(const wxSize& size);
- void PostSetLabel();
#ifdef __WXGTK20__
wxString PrepareLabelMnemonics( const wxString &label ) const;
wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on
- bool m_createComplete;
private:
DECLARE_DYNAMIC_CLASS(wxControl)
wxString GetLabel() const;
void SetLabel( const wxString &label );
- bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
-
+ bool SetFont( const wxFont &font );
bool SetForegroundColour( const wxColour& colour );
static wxVisualAttributes
// accessors
void SetLabel( const wxString &str ) ;
+ bool SetFont( const wxFont &font );
protected :
// accessors
void SetLabel( const wxString &str ) ;
+ bool SetFont( const wxFont &font );
// operations
virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
long style = 0,
const wxString& name = wxStaticTextNameStr);
+ // override some methods to resize the window properly
+ virtual void SetLabel(const wxString& label);
+ virtual bool SetFont( const wxFont &font );
+
protected:
// implement/override some base class virtuals
virtual wxBorder GetDefaultBorder() const;
virtual void ApplyParentThemeBackground(const wxColour& bg)
{ SetBackgroundColour(bg); }
- bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
-
private:
DECLARE_NO_COPY_CLASS(wxStaticTextBase)
};
{
m_imageList = NULL;
m_ownsImageList = false;
- // Unlike most controls, we don't want to adjust the min size
- // when we set the font, since the page size is not related to
- // the font size.
- m_adjustMinSize = false;
}
bool
return ret;
}
-
-void wxControlBase::Init()
-{
- m_adjustMinSize = true;
-}
-
-
bool wxControlBase::CreateControl(wxWindowBase *parent,
wxWindowID id,
const wxPoint& pos,
}
}
-void wxControlBase::SetLabel(const wxString& label)
-{
- wxWindow::SetLabel(label);
- if (GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
-}
-
-
-bool wxControlBase::SetFont(const wxFont& font)
-{
- bool ret = wxWindow::SetFont(font);
-
- if (GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
-
- return ret;
-}
-
// ----------------------------------------------------------------------------
// wxStaticBitmap
// ----------------------------------------------------------------------------
wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
wxControl::SetLabel( label );
- PostSetLabel();
}
wxString wxBitmapButton::GetLabel() const
#else
gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) );
#endif
-
- PostSetLabel();
}
bool wxButton::Enable( bool enable )
#else
gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
#endif
-
- PostSetLabel();
}
bool wxCheckBox::Enable( bool enable )
wxControl::wxControl()
{
m_needParent = TRUE;
- m_createComplete = false;
}
bool wxControl::Create( wxWindow *parent,
const wxValidator& validator,
const wxString &name )
{
- m_createComplete = false;
bool ret = wxWindow::Create(parent, id, pos, size, style, name);
#if wxUSE_VALIDATORS
}
}
-void wxControl::PostSetLabel()
-{
- // make sure the widget has been created, and that PostCreate has already
- // been called
- if (m_widget && m_createComplete && GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
-}
-
wxString wxControl::GetLabel() const
{
return m_label;
InheritAttributes();
ApplyWidgetStyle();
SetInitialBestSize(size);
- m_createComplete = true;
}
wxControl::SetLabel( label );
gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) );
-
- PostSetLabel();
}
void wxRadioBox::SetString( int item, const wxString& label )
#else
gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
#endif
-
- PostSetLabel();
}
void wxRadioButton::SetValue( bool val )
gtk_frame_set_label( GTK_FRAME( m_widget ),
m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
- PostSetLabel();
}
// static
#else
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
#endif
-
- PostSetLabel();
+
+ // adjust the label size to the new label unless disabled
+ if (!HasFlag(wxST_NO_AUTORESIZE))
+ {
+ SetSize( GetBestSize() );
+ SetSizeHints(GetSize());
+ }
}
+bool wxStaticText::SetFont( const wxFont &font )
+{
+ bool ret = wxControl::SetFont(font);
+
+ // adjust the label size to the new label unless disabled
+ if (!HasFlag(wxST_NO_AUTORESIZE))
+ {
+ SetSize( GetBestSize() );
+ SetSizeHints(GetSize());
+ }
+ return ret;
+}
wxSize wxStaticText::DoGetBestSize() const
{
wxControl::SetLabel(label);
gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) );
-
- PostSetLabel();
}
bool wxToggleButton::Enable(bool enable /*=TRUE*/)
wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
wxControl::SetLabel( label );
- PostSetLabel();
}
wxString wxBitmapButton::GetLabel() const
#else
gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) );
#endif
-
- PostSetLabel();
}
bool wxButton::Enable( bool enable )
#else
gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
#endif
-
- PostSetLabel();
}
bool wxCheckBox::Enable( bool enable )
wxControl::wxControl()
{
m_needParent = TRUE;
- m_createComplete = false;
}
bool wxControl::Create( wxWindow *parent,
const wxValidator& validator,
const wxString &name )
{
- m_createComplete = false;
bool ret = wxWindow::Create(parent, id, pos, size, style, name);
#if wxUSE_VALIDATORS
}
}
-void wxControl::PostSetLabel()
-{
- // make sure the widget has been created, and that PostCreate has already
- // been called
- if (m_widget && m_createComplete && GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
-}
-
wxString wxControl::GetLabel() const
{
return m_label;
InheritAttributes();
ApplyWidgetStyle();
SetInitialBestSize(size);
- m_createComplete = true;
}
wxControl::SetLabel( label );
gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) );
-
- PostSetLabel();
}
void wxRadioBox::SetString( int item, const wxString& label )
#else
gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
#endif
-
- PostSetLabel();
}
void wxRadioButton::SetValue( bool val )
gtk_frame_set_label( GTK_FRAME( m_widget ),
m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
- PostSetLabel();
}
// static
#else
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
#endif
-
- PostSetLabel();
+
+ // adjust the label size to the new label unless disabled
+ if (!HasFlag(wxST_NO_AUTORESIZE))
+ {
+ SetSize( GetBestSize() );
+ SetSizeHints(GetSize());
+ }
}
+bool wxStaticText::SetFont( const wxFont &font )
+{
+ bool ret = wxControl::SetFont(font);
+
+ // adjust the label size to the new label unless disabled
+ if (!HasFlag(wxST_NO_AUTORESIZE))
+ {
+ SetSize( GetBestSize() );
+ SetSizeHints(GetSize());
+ }
+ return ret;
+}
wxSize wxStaticText::DoGetBestSize() const
{
wxControl::SetLabel(label);
gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) );
-
- PostSetLabel();
}
bool wxToggleButton::Enable(bool enable /*=TRUE*/)
SetControlData( *m_peer, kControlEntireControl , kControlStaticTextCFStringTag, sizeof( CFStringRef ),
&ref );
- if (GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ SetSize( GetBestSize() ) ;
+ SetSizeHints(GetSize());
+ }
Update() ;
}
+bool wxStaticText::SetFont(const wxFont& font)
+{
+ bool ret = wxControl::SetFont(font);
+
+ if ( ret )
+ {
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ SetSize( GetBestSize() );
+ SetSizeHints(GetSize());
+ }
+ }
+
+ return ret;
+}
{
SetTitle( st ) ;
m_label = st ;
-
- if (GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
-
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ // temporary fix until layout measurement and drawing are in synch again
+ Refresh() ;
+ SetSize( GetBestSize() ) ;
+ }
Refresh() ;
Update() ;
}
+bool wxStaticText::SetFont(const wxFont& font)
+{
+ bool ret = wxControl::SetFont(font);
+
+ if ( ret )
+ {
+ // adjust the size of the window to fit to the label unless autoresizing is
+ // disabled
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ // temporary fix until layout measurement and drawing are in synch again
+ Refresh() ;
+ SetSize( GetBestSize() );
+ }
+ }
+
+ return ret;
+}
Refresh();
}
+void wxStaticText::SetLabel(const wxString& label)
+{
+ wxStaticTextBase::SetLabel(label);
+
+ // 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);
+ SetSizeHints(GetSize());
+ }
+}
+
+
+bool wxStaticText::SetFont(const wxFont& font)
+{
+ bool ret = wxControl::SetFont(font);
+
+ // 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);
+ SetSizeHints(GetSize());
+ }
+
+ return ret;
+}
#endif // wxUSE_STATTEXT