KiCad PCB EDA Suite
EDA_MSG_PANEL Class Reference

A panel to display various information messages. More...

#include <msgpanel.h>

Inheritance diagram for EDA_MSG_PANEL:

Public Member Functions

 EDA_MSG_PANEL (wxWindow *aParent, int aId, const wxPoint &aPosition, const wxSize &aSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxPanelNameStr)
 
 ~EDA_MSG_PANEL ()
 
void OnPaint (wxPaintEvent &aEvent)
 
void EraseMsgBox ()
 
void SetMessage (int aXPosition, const wxString &aUpperText, const wxString &aLowerText)
 Set a message at aXPosition to aUpperText and aLowerText in the message panel. More...
 
void AppendMessage (const wxString &aUpperText, const wxString &aLowerText, int aPadding=6)
 Append a message to the message panel. More...
 
void AppendMessage (const MSG_PANEL_ITEM &aMessageItem)
 Append aMessageItem to the message panel. More...
 

Static Public Member Functions

static int GetRequiredHeight (wxWindow *aWindow)
 Return the required height (in pixels) of a EDA_MSG_PANEL. More...
 

Protected Member Functions

void showItem (wxDC &dc, const MSG_PANEL_ITEM &aItem)
 
void erase (wxDC *DC)
 
wxSize computeTextSize (const wxString &text) const
 Calculate the width and height of a text string using the system UI font. More...
 

Protected Attributes

std::vector< MSG_PANEL_ITEMm_Items
 
int m_last_x
 the last used x coordinate More...
 
wxSize m_fontSize
 

Detailed Description

A panel to display various information messages.

Definition at line 100 of file msgpanel.h.

Constructor & Destructor Documentation

◆ EDA_MSG_PANEL()

EDA_MSG_PANEL::EDA_MSG_PANEL ( wxWindow *  aParent,
int  aId,
const wxPoint &  aPosition,
const wxSize &  aSize,
long  style = wxTAB_TRAVERSAL,
const wxString &  name = wxPanelNameStr 
)

Definition at line 41 of file msgpanel.cpp.

42 :
43 wxPanel( aParent, aId, aPosition, aSize, style, name )
44{
45 SetFont( KIUI::GetStatusFont( this ) );
46 SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
47
48 // informs wx not to paint the background itself as we will paint it later in erase()
49 SetBackgroundStyle( wxBG_STYLE_PAINT );
50
51 m_last_x = 0;
52
53 m_fontSize = GetTextExtent( wxT( "W" ) );
54}
const char * name
Definition: DXF_plotter.cpp:56
int m_last_x
the last used x coordinate
Definition: msgpanel.h:168
wxSize m_fontSize
Definition: msgpanel.h:169
wxFont GetStatusFont(wxWindow *aWindow)
Definition: ui_common.cpp:132

References KIUI::GetStatusFont().

◆ ~EDA_MSG_PANEL()

EDA_MSG_PANEL::~EDA_MSG_PANEL ( )

Definition at line 57 of file msgpanel.cpp.

58{
59}

Member Function Documentation

◆ AppendMessage() [1/2]

void EDA_MSG_PANEL::AppendMessage ( const MSG_PANEL_ITEM aMessageItem)
inline

Append aMessageItem to the message panel.

Parameters
aMessageItemis a reference to an MSG_PANEL_ITEM containing the message to append to the panel.

Definition at line 148 of file msgpanel.h.

149 {
150 AppendMessage( aMessageItem.GetUpperText(), aMessageItem.GetLowerText(),
151 aMessageItem.GetPadding() );
152 }
void AppendMessage(const wxString &aUpperText, const wxString &aLowerText, int aPadding=6)
Append a message to the message panel.
Definition: msgpanel.cpp:93
const wxString & GetUpperText() const
Definition: msgpanel.h:77
const wxString & GetLowerText() const
Definition: msgpanel.h:80
int GetPadding() const
Definition: msgpanel.h:83

References AppendMessage(), MSG_PANEL_ITEM::GetLowerText(), MSG_PANEL_ITEM::GetPadding(), and MSG_PANEL_ITEM::GetUpperText().

◆ AppendMessage() [2/2]

void EDA_MSG_PANEL::AppendMessage ( const wxString &  aUpperText,
const wxString &  aLowerText,
int  aPadding = 6 
)

Append a message to the message panel.

This method automatically adjusts for the width of the text string. Making consecutive calls to AppendMessage will append each message to the right of the last message. This message is not compatible with Affiche_1_Parametre.

Parameters
aUpperTextThe message upper text.
aLowerTextThe message lower text.
aPaddingNumber of spaces to pad between messages (default = 4).

Definition at line 93 of file msgpanel.cpp.

95{
96 wxString text;
97 wxSize drawSize = GetClientSize();
98
99 text = ( aUpperText.Len() > aLowerText.Len() ) ? aUpperText : aLowerText;
100 text.Append( ' ', aPadding );
101
102 MSG_PANEL_ITEM item;
103
104 /* Don't put the first message a window client position 0. Offset by
105 * one 'W' character width. */
106 if( m_last_x == 0 )
108
109 item.m_X = m_last_x;
110
111 item.m_UpperY = ( drawSize.y / 2 ) - m_fontSize.y;
112 item.m_LowerY = drawSize.y - m_fontSize.y;
113
114 item.m_UpperText = aUpperText;
115 item.m_LowerText = aLowerText;
116 m_Items.push_back( item );
117 m_last_x += GetTextExtent( text ).x;
118
119 // Add an extra space between texts for a better look:
120 m_last_x += m_fontSize.x;
121
122 Refresh();
123}
std::vector< MSG_PANEL_ITEM > m_Items
Definition: msgpanel.h:167
EDA_MSG_PANEL items for displaying messages.
Definition: msgpanel.h:54
wxString m_UpperText
Definition: msgpanel.h:91
wxString m_LowerText
Definition: msgpanel.h:92
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...

References m_fontSize, m_Items, m_last_x, MSG_PANEL_ITEM::m_LowerText, MSG_PANEL_ITEM::m_LowerY, MSG_PANEL_ITEM::m_UpperText, MSG_PANEL_ITEM::m_UpperY, MSG_PANEL_ITEM::m_X, Refresh(), and text.

Referenced by AppendMessage(), EDA_DRAW_FRAME::AppendMsgPanel(), and EDA_DRAW_FRAME::SetMsgPanel().

◆ computeTextSize()

wxSize EDA_MSG_PANEL::computeTextSize ( const wxString &  text) const
protected

Calculate the width and height of a text string using the system UI font.

◆ erase()

void EDA_MSG_PANEL::erase ( wxDC *  DC)
protected

Definition at line 205 of file msgpanel.cpp.

206{
207 wxPen pen;
208 wxBrush brush;
209
210 wxSize size = GetClientSize();
211 wxColour color = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE );
212
213 pen.SetColour( color );
214
215 brush.SetColour( color );
216 brush.SetStyle( wxBRUSHSTYLE_SOLID );
217
218 aDC->SetPen( pen );
219 aDC->SetBrush( brush );
220 aDC->DrawRectangle( 0, 0, size.x, size.y );
221}
int color
Definition: DXF_plotter.cpp:57

References color.

Referenced by OnPaint().

◆ EraseMsgBox()

void EDA_MSG_PANEL::EraseMsgBox ( )

Definition at line 197 of file msgpanel.cpp.

198{
199 m_Items.clear();
200 m_last_x = 0;
201 Refresh();
202}

References m_Items, m_last_x, and Refresh().

Referenced by EDA_DRAW_FRAME::ClearMsgPanel(), EDA_DRAW_FRAME::EraseMsgBox(), and EDA_DRAW_FRAME::SetMsgPanel().

◆ GetRequiredHeight()

int EDA_MSG_PANEL::GetRequiredHeight ( wxWindow *  aWindow)
static

Return the required height (in pixels) of a EDA_MSG_PANEL.

This takes into consideration the system gui font, wxSYS_DEFAULT_GUI_FONT.

Definition at line 62 of file msgpanel.cpp.

63{
64 wxSize fontSizeInPixels;
65 wxWindowDC dc( aWindow );
66
67 dc.SetFont( KIUI::GetControlFont( aWindow ) );
68 dc.GetTextExtent( wxT( "W" ), &fontSizeInPixels.x, &fontSizeInPixels.y );
69
70 // make space for two rows of text plus a number of pixels between them.
71 return 2 * fontSizeInPixels.y + 0;
72}
wxFont GetControlFont(wxWindow *aWindow)
Definition: ui_common.cpp:150

References KIUI::GetControlFont().

Referenced by EDA_DRAW_FRAME::EDA_DRAW_FRAME().

◆ OnPaint()

void EDA_MSG_PANEL::OnPaint ( wxPaintEvent &  aEvent)

Definition at line 75 of file msgpanel.cpp.

76{
77 wxPaintDC dc( this );
78
79 erase( &dc );
80
81 dc.SetBackground( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
82 dc.SetBackgroundMode( wxSOLID );
83 dc.SetTextBackground( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
84 dc.SetFont( KIUI::GetControlFont( this ) );
85
86 for( const MSG_PANEL_ITEM& item : m_Items )
87 showItem( dc, item );
88
89 aEvent.Skip();
90}
void showItem(wxDC &dc, const MSG_PANEL_ITEM &aItem)
Definition: msgpanel.cpp:175
void erase(wxDC *DC)
Definition: msgpanel.cpp:205

References erase(), KIUI::GetControlFont(), m_Items, and showItem().

◆ SetMessage()

void EDA_MSG_PANEL::SetMessage ( int  aXPosition,
const wxString &  aUpperText,
const wxString &  aLowerText 
)

Set a message at aXPosition to aUpperText and aLowerText in the message panel.

Parameters
aXPositionThe horizontal position to display the message or less than zero to set the message using the last message position.
aUpperTextThe text to be displayed in top line.
aLowerTextThe text to be displayed in bottom line.

Definition at line 126 of file msgpanel.cpp.

128{
129 wxPoint pos;
130 wxSize drawSize = GetClientSize();
131
132 if( aXPosition >= 0 )
133 m_last_x = pos.x = aXPosition * (m_fontSize.x + 2);
134 else
135 pos.x = m_last_x;
136
137 MSG_PANEL_ITEM item;
138
139 item.m_X = pos.x;
140
141 item.m_UpperY = (drawSize.y / 2) - m_fontSize.y;
142 item.m_LowerY = drawSize.y - m_fontSize.y;
143
144 item.m_UpperText = aUpperText;
145 item.m_LowerText = aLowerText;
146
147 int ndx;
148
149 // update the vector, which is sorted by m_X
150 int limit = m_Items.size();
151
152 for( ndx = 0; ndx < limit; ++ndx )
153 {
154 // replace any item with same X
155 if( m_Items[ndx].m_X == item.m_X )
156 {
157 m_Items[ndx] = item;
158 break;
159 }
160
161 if( m_Items[ndx].m_X > item.m_X )
162 {
163 m_Items.insert( m_Items.begin() + ndx, item );
164 break;
165 }
166 }
167
168 if( ndx == limit ) // mutually exclusive with two above if tests
169 m_Items.push_back( item );
170
171 Refresh();
172}

References m_fontSize, m_Items, m_last_x, MSG_PANEL_ITEM::m_LowerText, MSG_PANEL_ITEM::m_LowerY, MSG_PANEL_ITEM::m_UpperText, MSG_PANEL_ITEM::m_UpperY, MSG_PANEL_ITEM::m_X, and Refresh().

◆ showItem()

void EDA_MSG_PANEL::showItem ( wxDC &  dc,
const MSG_PANEL_ITEM aItem 
)
protected

Definition at line 175 of file msgpanel.cpp.

176{
178
179 // Change the text to a disabled color when the window isn't active
180 wxTopLevelWindow* tlw = dynamic_cast<wxTopLevelWindow*>( wxGetTopLevelParent( this ) );
181
182 if( tlw && !tlw->IsActive() )
183 color = wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT );
184 else
185 color = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT );
186
187 aDC.SetTextForeground( color.ToColour() );
188
189 if( !aItem.m_UpperText.IsEmpty() )
190 aDC.DrawText( aItem.m_UpperText, aItem.m_X, aItem.m_UpperY );
191
192 if( !aItem.m_LowerText.IsEmpty() )
193 aDC.DrawText( aItem.m_LowerText, aItem.m_X, aItem.m_LowerY );
194}
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104

References color, MSG_PANEL_ITEM::m_LowerText, MSG_PANEL_ITEM::m_LowerY, MSG_PANEL_ITEM::m_UpperText, MSG_PANEL_ITEM::m_UpperY, and MSG_PANEL_ITEM::m_X.

Referenced by OnPaint().

Member Data Documentation

◆ m_fontSize

wxSize EDA_MSG_PANEL::m_fontSize
protected

Definition at line 169 of file msgpanel.h.

Referenced by AppendMessage(), and SetMessage().

◆ m_Items

std::vector<MSG_PANEL_ITEM> EDA_MSG_PANEL::m_Items
protected

Definition at line 167 of file msgpanel.h.

Referenced by AppendMessage(), EraseMsgBox(), OnPaint(), and SetMessage().

◆ m_last_x

int EDA_MSG_PANEL::m_last_x
protected

the last used x coordinate

Definition at line 168 of file msgpanel.h.

Referenced by AppendMessage(), EraseMsgBox(), and SetMessage().


The documentation for this class was generated from the following files: