KiCad PCB EDA Suite
EDA_MSG_PANEL Class Reference

EDA_MSG_PANEL is 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, COLOR4D aColor)
 Function SetMessage sets a message at aXPosition to aUpperText and aLowerText in the message panel. More...
 
void AppendMessage (const wxString &aUpperText, const wxString &aLowerText, COLOR4D aColor, int aPad=6)
 Function AppendMessage appends a message to the message panel. More...
 
void AppendMessage (const MSG_PANEL_ITEM &aMessageItem)
 Function AppendMessage appends aMessageItem to the message panel. More...
 

Static Public Member Functions

static int GetRequiredHeight ()
 Function GetRequiredHeight returns 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...
 

Static Protected Member Functions

static wxSize computeFontSize ()
 Function getFontSize computes the height and width of a 'W' in the system font. More...
 

Protected Attributes

MSG_PANEL_ITEMS m_Items
 
int m_last_x
 the last used x coordinate More...
 
wxSize m_fontSize
 

Detailed Description

EDA_MSG_PANEL is a panel to display various information messages.

Definition at line 112 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 43 of file msgpanel.cpp.

45  :
46  wxPanel( aParent, aId, aPosition, aSize, style, name )
47 {
48  SetFont( wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ) );
49  SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
50  m_last_x = 0;
51 
53 }
wxSize m_fontSize
Definition: msgpanel.h:117
int m_last_x
the last used x coordinate
Definition: msgpanel.h:116
const char * name
Definition: DXF_plotter.cpp:59
static wxSize computeFontSize()
Function getFontSize computes the height and width of a 'W' in the system font.
Definition: msgpanel.cpp:61

◆ ~EDA_MSG_PANEL()

EDA_MSG_PANEL::~EDA_MSG_PANEL ( )

Definition at line 56 of file msgpanel.cpp.

57 {
58 }

Member Function Documentation

◆ AppendMessage() [1/2]

void EDA_MSG_PANEL::AppendMessage ( const wxString &  aUpperText,
const wxString &  aLowerText,
COLOR4D  aColor,
int  aPad = 6 
)

Function AppendMessage appends 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.
aColorA color to use for the message text
aPadNumber of spaces to pad between messages (default = 4).

Definition at line 114 of file msgpanel.cpp.

117 {
118  wxString text;
119  wxSize drawSize = GetClientSize();
120 
121  text = ( aUpperText.Len() > aLowerText.Len() ) ? aUpperText : aLowerText;
122  text.Append( ' ', aPad );
123 
124  MSG_PANEL_ITEM item;
125 
126  /* Don't put the first message a window client position 0. Offset by
127  * one 'W' character width. */
128  if( m_last_x == 0 )
129  m_last_x = m_fontSize.x;
130 
131  item.m_X = m_last_x;
132 
133  item.m_UpperY = ( drawSize.y / 2 ) - m_fontSize.y;
134  item.m_LowerY = drawSize.y - m_fontSize.y;
135 
136  item.m_UpperText = aUpperText;
137  item.m_LowerText = aLowerText;
138  item.m_Color = aColor;
139  m_Items.push_back( item );
140  m_last_x += computeTextSize( text ).x;
141 
142  // Add an extra space between texts for a better look:
143  m_last_x += m_fontSize.x;
144 
145  Refresh();
146 }
COLOR4D m_Color
Definition: msgpanel.h:61
MSG_PANEL_ITEMS m_Items
Definition: msgpanel.h:115
wxString m_LowerText
Definition: msgpanel.h:60
wxSize m_fontSize
Definition: msgpanel.h:117
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...
wxSize computeTextSize(const wxString &text) const
Calculate the width and height of a text string using the system UI font.
Definition: msgpanel.cpp:82
int m_last_x
the last used x coordinate
Definition: msgpanel.h:116
EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:54
wxString m_UpperText
Definition: msgpanel.h:59

References computeTextSize(), MSG_PANEL_ITEM::m_Color, 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().

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

◆ AppendMessage() [2/2]

void EDA_MSG_PANEL::AppendMessage ( const MSG_PANEL_ITEM aMessageItem)
inline

Function AppendMessage appends 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 187 of file msgpanel.h.

188  {
189  AppendMessage( aMessageItem.GetUpperText(), aMessageItem.GetLowerText(),
190  aMessageItem.GetColor(), aMessageItem.GetPadding() );
191  }
COLOR4D GetColor() const
Definition: msgpanel.h:96
const wxString & GetLowerText() const
Definition: msgpanel.h:93
const wxString & GetUpperText() const
Definition: msgpanel.h:90
void AppendMessage(const wxString &aUpperText, const wxString &aLowerText, COLOR4D aColor, int aPad=6)
Function AppendMessage appends a message to the message panel.
Definition: msgpanel.cpp:114
int GetPadding() const
Definition: msgpanel.h:99

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

◆ computeFontSize()

wxSize EDA_MSG_PANEL::computeFontSize ( )
staticprotected

Function getFontSize computes the height and width of a 'W' in the system font.

Definition at line 61 of file msgpanel.cpp.

62 {
63  // Get size of the wxSYS_DEFAULT_GUI_FONT
64  wxSize fontSizeInPixels;
65 
66  wxScreenDC dc;
67 
68  dc.SetFont( wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ) );
69  dc.GetTextExtent( wxT( "W" ), &fontSizeInPixels.x, &fontSizeInPixels.y );
70 
71  return fontSizeInPixels;
72 }

Referenced by GetRequiredHeight().

◆ 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.

Definition at line 82 of file msgpanel.cpp.

83 {
84  // Get size of the wxSYS_DEFAULT_GUI_FONT
85  wxSize textSizeInPixels;
86 
87  wxScreenDC dc;
88 
89  dc.SetFont( wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ) );
90  dc.GetTextExtent( aText, &textSizeInPixels.x, &textSizeInPixels.y );
91 
92  return textSizeInPixels;
93 }

Referenced by AppendMessage().

◆ erase()

void EDA_MSG_PANEL::erase ( wxDC *  DC)
protected

Definition at line 228 of file msgpanel.cpp.

229 {
230  wxPen pen;
231  wxBrush brush;
232 
233  wxSize size = GetClientSize();
234  wxColour color = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE );
235 
236  pen.SetColour( color );
237 
238  brush.SetColour( color );
239  brush.SetStyle( wxBRUSHSTYLE_SOLID );
240 
241  aDC->SetPen( pen );
242  aDC->SetBrush( brush );
243  aDC->DrawRectangle( 0, 0, size.x, size.y );
244 }
int color
Definition: DXF_plotter.cpp:60

References color.

Referenced by OnPaint().

◆ EraseMsgBox()

void EDA_MSG_PANEL::EraseMsgBox ( )

Definition at line 220 of file msgpanel.cpp.

221 {
222  m_Items.clear();
223  m_last_x = 0;
224  Refresh();
225 }
MSG_PANEL_ITEMS m_Items
Definition: msgpanel.h:115
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...
int m_last_x
the last used x coordinate
Definition: msgpanel.h:116

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 ( )
static

Function GetRequiredHeight returns 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 75 of file msgpanel.cpp.

76 {
77  // make space for two rows of text plus a number of pixels between them.
78  return 2 * computeFontSize().y + 0;
79 }
static wxSize computeFontSize()
Function getFontSize computes the height and width of a 'W' in the system font.
Definition: msgpanel.cpp:61

References computeFontSize().

Referenced by EDA_DRAW_FRAME::EDA_DRAW_FRAME().

◆ OnPaint()

void EDA_MSG_PANEL::OnPaint ( wxPaintEvent &  aEvent)

Definition at line 96 of file msgpanel.cpp.

97 {
98  wxPaintDC dc( this );
99 
100  erase( &dc );
101 
102  dc.SetBackground( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
103  dc.SetBackgroundMode( wxSOLID );
104  dc.SetTextBackground( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
105  dc.SetFont( wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ) );
106 
107  for( unsigned i=0; i<m_Items.size(); ++i )
108  showItem( dc, m_Items[i] );
109 
110  aEvent.Skip();
111 }
void showItem(wxDC &dc, const MSG_PANEL_ITEM &aItem)
Definition: msgpanel.cpp:201
MSG_PANEL_ITEMS m_Items
Definition: msgpanel.h:115
void erase(wxDC *DC)
Definition: msgpanel.cpp:228

References erase(), m_Items, and showItem().

◆ SetMessage()

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

Function SetMessage sets 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.
aColorColor of the text to display.

Definition at line 149 of file msgpanel.cpp.

151 {
152  wxPoint pos;
153  wxSize drawSize = GetClientSize();
154 
155  if( aXPosition >= 0 )
156  m_last_x = pos.x = aXPosition * (m_fontSize.x + 2);
157  else
158  pos.x = m_last_x;
159 
160  MSG_PANEL_ITEM item;
161 
162  item.m_X = pos.x;
163 
164  item.m_UpperY = (drawSize.y / 2) - m_fontSize.y;
165  item.m_LowerY = drawSize.y - m_fontSize.y;
166 
167  item.m_UpperText = aUpperText;
168  item.m_LowerText = aLowerText;
169  item.m_Color = aColor;
170 
171  int ndx;
172 
173  // update the vector, which is sorted by m_X
174  int limit = m_Items.size();
175 
176  for( ndx=0; ndx<limit; ++ndx )
177  {
178  // replace any item with same X
179  if( m_Items[ndx].m_X == item.m_X )
180  {
181  m_Items[ndx] = item;
182  break;
183  }
184 
185  if( m_Items[ndx].m_X > item.m_X )
186  {
187  m_Items.insert( m_Items.begin() + ndx, item );
188  break;
189  }
190  }
191 
192  if( ndx == limit ) // mutually exclusive with two above if tests
193  {
194  m_Items.push_back( item );
195  }
196 
197  Refresh();
198 }
COLOR4D m_Color
Definition: msgpanel.h:61
MSG_PANEL_ITEMS m_Items
Definition: msgpanel.h:115
wxString m_LowerText
Definition: msgpanel.h:60
wxSize m_fontSize
Definition: msgpanel.h:117
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...
int m_last_x
the last used x coordinate
Definition: msgpanel.h:116
EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:54
wxString m_UpperText
Definition: msgpanel.h:59

References MSG_PANEL_ITEM::m_Color, 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 201 of file msgpanel.cpp.

202 {
203  // COLOR4D color = aItem.m_Color;
204  COLOR4D color = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT );
205 
206  aDC.SetTextForeground( color.ToColour() );
207 
208  if( !aItem.m_UpperText.IsEmpty() )
209  {
210  aDC.DrawText( aItem.m_UpperText, aItem.m_X, aItem.m_UpperY );
211  }
212 
213  if( !aItem.m_LowerText.IsEmpty() )
214  {
215  aDC.DrawText( aItem.m_LowerText, aItem.m_X, aItem.m_LowerY );
216  }
217 }
int color
Definition: DXF_plotter.cpp:60
wxString m_LowerText
Definition: msgpanel.h:60
wxString m_UpperText
Definition: msgpanel.h:59
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

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 117 of file msgpanel.h.

Referenced by AppendMessage(), and SetMessage().

◆ m_Items

MSG_PANEL_ITEMS EDA_MSG_PANEL::m_Items
protected

Definition at line 115 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 116 of file msgpanel.h.

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


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