mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-20 19:22:47 +01:00
169 lines
4.0 KiB
C++
169 lines
4.0 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/generic/stattextg.cpp
|
|
// Purpose: wxGenericStaticText
|
|
// Author: Marcin Wojdyr
|
|
// Created: 2008-06-26
|
|
// Copyright: Marcin Wojdyr
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#if wxUSE_STATTEXT
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/dcclient.h"
|
|
#include "wx/settings.h"
|
|
#include "wx/validate.h"
|
|
#endif
|
|
|
|
#include "wx/generic/stattextg.h"
|
|
|
|
#if wxUSE_MARKUP
|
|
#include "wx/generic/private/markuptext.h"
|
|
#endif // wxUSE_MARKUP
|
|
|
|
IMPLEMENT_DYNAMIC_CLASS(wxGenericStaticText, wxStaticTextBase)
|
|
|
|
|
|
bool wxGenericStaticText::Create(wxWindow *parent,
|
|
wxWindowID id,
|
|
const wxString &label,
|
|
const wxPoint &pos,
|
|
const wxSize &size,
|
|
long style,
|
|
const wxString &name)
|
|
{
|
|
if ( !wxControl::Create(parent, id, pos, size, style,
|
|
wxDefaultValidator, name) )
|
|
return false;
|
|
|
|
SetLabel(label);
|
|
SetInitialSize(size);
|
|
Connect(wxEVT_PAINT, wxPaintEventHandler(wxGenericStaticText::OnPaint));
|
|
return true;
|
|
}
|
|
|
|
wxGenericStaticText::~wxGenericStaticText()
|
|
{
|
|
#if wxUSE_MARKUP
|
|
delete m_markupText;
|
|
#endif // wxUSE_MARKUP
|
|
}
|
|
|
|
void wxGenericStaticText::DoDrawLabel(wxDC& dc, const wxRect& rect)
|
|
{
|
|
#if wxUSE_MARKUP
|
|
if ( m_markupText )
|
|
m_markupText->Render(dc, rect, wxMarkupText::Render_ShowAccels);
|
|
else
|
|
#endif // wxUSE_MARKUP
|
|
dc.DrawLabel(m_label, rect, GetAlignment(), m_mnemonic);
|
|
}
|
|
|
|
void wxGenericStaticText::OnPaint(wxPaintEvent& WXUNUSED(event))
|
|
{
|
|
wxPaintDC dc(this);
|
|
|
|
wxRect rect = GetClientRect();
|
|
if ( IsEnabled() )
|
|
{
|
|
dc.SetTextForeground(
|
|
wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT));
|
|
}
|
|
else // paint disabled text
|
|
{
|
|
// draw shadow of the text
|
|
dc.SetTextForeground(
|
|
wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT));
|
|
wxRect rectShadow = rect;
|
|
rectShadow.Offset(1, 1);
|
|
DoDrawLabel(dc, rectShadow);
|
|
dc.SetTextForeground(
|
|
wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW));
|
|
}
|
|
DoDrawLabel(dc, rect);
|
|
}
|
|
|
|
|
|
wxSize wxGenericStaticText::DoGetBestClientSize() const
|
|
{
|
|
wxClientDC dc(wxConstCast(this, wxGenericStaticText));
|
|
|
|
#if wxUSE_MARKUP
|
|
if ( m_markupText )
|
|
return m_markupText->Measure(dc);
|
|
#endif // wxUSE_MARKUP
|
|
|
|
return dc.GetMultiLineTextExtent(GetLabel());
|
|
}
|
|
|
|
void wxGenericStaticText::SetLabel(const wxString& label)
|
|
{
|
|
wxControl::SetLabel(label);
|
|
DoSetLabel(GetEllipsizedLabel());
|
|
if ( !HasFlag(wxST_NO_AUTORESIZE) && !IsEllipsized() )
|
|
InvalidateBestSize();
|
|
|
|
#if wxUSE_MARKUP
|
|
if ( m_markupText )
|
|
{
|
|
delete m_markupText;
|
|
m_markupText = NULL;
|
|
}
|
|
#endif // wxUSE_MARKUP
|
|
|
|
Refresh();
|
|
}
|
|
|
|
void wxGenericStaticText::DoSetLabel(const wxString& label)
|
|
{
|
|
m_mnemonic = FindAccelIndex(label, &m_label);
|
|
}
|
|
|
|
#if wxUSE_MARKUP
|
|
|
|
bool wxGenericStaticText::DoSetLabelMarkup(const wxString& markup)
|
|
{
|
|
if ( !wxStaticTextBase::DoSetLabelMarkup(markup) )
|
|
return false;
|
|
|
|
if ( !m_markupText )
|
|
m_markupText = new wxMarkupText(markup);
|
|
else
|
|
m_markupText->SetMarkup(markup);
|
|
|
|
if ( !HasFlag(wxST_NO_AUTORESIZE) )
|
|
InvalidateBestSize();
|
|
|
|
Refresh();
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif // wxUSE_MARKUP
|
|
|
|
bool wxGenericStaticText::SetFont(const wxFont &font)
|
|
{
|
|
if ( !wxControl::SetFont(font) )
|
|
return false;
|
|
if ( !HasFlag(wxST_NO_AUTORESIZE) )
|
|
InvalidateBestSize();
|
|
Refresh();
|
|
return true;
|
|
}
|
|
|
|
void wxGenericStaticText::DoSetSize(int x, int y, int width, int height,
|
|
int sizeFlags)
|
|
{
|
|
wxStaticTextBase::DoSetSize(x, y, width, height, sizeFlags);
|
|
UpdateLabel();
|
|
}
|
|
|
|
|
|
#endif // wxUSE_STATTEXT
|