KiCad PCB EDA Suite
menus_helpers.h File Reference

Usefull macros and inline functions to create menus items in menubars or popup menus. More...

#include <wx/menu.h>
#include <wx/menuitem.h>
#include <bitmaps.h>

Go to the source code of this file.

Functions

void AddMenuLanguageList (CONDITIONAL_MENU *aMasterMenu, TOOL_INTERACTIVE *aControlTool)
 Function AddMenuLanguageList creates a menu list for language choice, and add it as submenu to MasterMenu. More...
 
void AddBitmapToMenuItem (wxMenuItem *aMenu, const wxBitmap &aImage)
 Add a bitmap to a menuitem. More...
 
wxMenuItem * AddMenuItem (wxMenu *aMenu, int aId, const wxString &aText, const wxBitmap &aImage, wxItemKind aType=wxITEM_NORMAL)
 Function AddMenuItem is an inline helper function to create and insert a menu item with an icon into aMenu. More...
 
wxMenuItem * AddMenuItem (wxMenu *aMenu, int aId, const wxString &aText, const wxString &aHelpText, const wxBitmap &aImage, wxItemKind aType=wxITEM_NORMAL)
 Function AddMenuItem is an inline helper function to create and insert a menu item with an icon and a help message string into aMenu. More...
 
wxMenuItem * AddMenuItem (wxMenu *aMenu, wxMenu *aSubMenu, int aId, const wxString &aText, const wxBitmap &aImage)
 Function AddMenuItem is an inline helper function to create and insert a menu item with an icon into aSubMenu in aMenu. More...
 
wxMenuItem * AddMenuItem (wxMenu *aMenu, wxMenu *aSubMenu, int aId, const wxString &aText, const wxString &aHelpText, const wxBitmap &aImage)
 Function AddMenuItem is an inline helper function to create and insert a menu item with an icon and a help message string into aSubMenu in aMenu. More...
 

Detailed Description

Usefull macros and inline functions to create menus items in menubars or popup menus.

Definition in file menus_helpers.h.

Function Documentation

◆ AddBitmapToMenuItem()

void AddBitmapToMenuItem ( wxMenuItem *  aMenu,
const wxBitmap &  aImage 
)

Add a bitmap to a menuitem.

Parameters
aMenuis the menuitem.
aImageis the icon to add to aMenu. It is added only if use images in menus config option allows it. For wxITEM_CHECK or wxITEM_RADIO menuitems, the bitmap is added only on Windows, other platforms do not support it

Definition at line 223 of file bitmap.cpp.

224 {
225  // Retrieve the global applicaton show icon option:
226  bool useImagesInMenus;
227  Pgm().CommonSettings()->Read( USE_ICONS_IN_MENUS_KEY, &useImagesInMenus );
228 
229  wxItemKind menu_type = aMenu->GetKind();
230 
231  if( useImagesInMenus )
232  {
233  if( menu_type == wxITEM_CHECK || menu_type == wxITEM_RADIO )
234  {
235  #if defined( __WINDOWS__ )
236  aMenu->SetBitmaps( KiBitmap( checked_ok_xpm ), aImage );
237  // A workaround to a strange bug on Windows, wx Widgets 3.0:
238  // size of bitmaps is not taken in account for wxITEM_{CHECK,RADIO} menu
239  // unless we call SetFont
240  aMenu->SetFont( *wxNORMAL_FONT );
241  #endif
242  }
243  else if( menu_type != wxITEM_RADIO )
244  {
245  aMenu->SetBitmap( aImage );
246  }
247  }
248 }
PGM_BASE & Pgm()
The global Program "get" accessor.
Definition: kicad.cpp:65
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:79
VTBL_ENTRY wxConfigBase * CommonSettings() const
Definition: pgm_base.h:204
#define USE_ICONS_IN_MENUS_KEY
Definition: pgm_base.h:46

References PGM_BASE::CommonSettings(), KiBitmap(), Pgm(), and USE_ICONS_IN_MENUS_KEY.

Referenced by ACTION_MENU::Add(), CONDITIONAL_MENU::AddCheckItem(), CONDITIONAL_MENU::AddItem(), AddMenuItem(), ACTION_MENU::appendCopy(), ACTION_MENU::DisplayTitle(), CONDITIONAL_MENU::Evaluate(), and SIM_PLOT_FRAME::setIconsForMenuItems().

◆ AddMenuItem() [1/4]

wxMenuItem* AddMenuItem ( wxMenu *  aMenu,
int  aId,
const wxString &  aText,
const wxBitmap &  aImage,
wxItemKind  aType = wxITEM_NORMAL 
)

Function AddMenuItem is an inline helper function to create and insert a menu item with an icon into aMenu.

Parameters
aMenuis the menu to add the new item.
aIdis the command ID for the new menu item.
aTextis the string for the new menu item.
aImageis the icon to add to the new menu item.
aTypeis the type of menu :wxITEM_NORMAL (default), wxITEM_CHECK ...
Returns
a pointer to the new created wxMenuItem

Definition at line 251 of file bitmap.cpp.

253 {
254  wxMenuItem* item = new wxMenuItem( aMenu, aId, aText, wxEmptyString, aType );
255  AddBitmapToMenuItem( item, aImage );
256 
257  aMenu->Append( item );
258 
259  return item;
260 }
void AddBitmapToMenuItem(wxMenuItem *aMenu, const wxBitmap &aImage)
Add a bitmap to a menuitem.
Definition: bitmap.cpp:223

References AddBitmapToMenuItem().

Referenced by PCB_LAYER_WIDGET::AddRightClickMenuItems(), GERBER_LAYER_WIDGET::AddRightClickMenuItems(), DIALOG_CONFIGURE_PATHS::OnGridCellRightClick(), TREE_PROJECT_FRAME::OnRight(), EDA_3D_CANVAS::OnRightClick(), LAYER_WIDGET::OnRightDownLayer(), LAYER_WIDGET::OnRightDownRender(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), and SIM_PLOT_FRAME::SIGNAL_CONTEXT_MENU::SIGNAL_CONTEXT_MENU().

◆ AddMenuItem() [2/4]

wxMenuItem* AddMenuItem ( wxMenu *  aMenu,
int  aId,
const wxString &  aText,
const wxString &  aHelpText,
const wxBitmap &  aImage,
wxItemKind  aType = wxITEM_NORMAL 
)

Function AddMenuItem is an inline helper function to create and insert a menu item with an icon and a help message string into aMenu.

Parameters
aMenuis the menu to add the new item.
aIdis the command ID for the new menu item.
aTextis the string for the new menu item.
aHelpTextis the help message string for the new menu item.
aImageis the icon to add to the new menu item.
aTypeis the type of menu :wxITEM_NORMAL (default), wxITEM_CHECK ...
Returns
a pointer to the new created wxMenuItem

Definition at line 263 of file bitmap.cpp.

266 {
267  wxMenuItem* item = new wxMenuItem( aMenu, aId, aText, aHelpText, aType );
268  AddBitmapToMenuItem( item, aImage );
269 
270  aMenu->Append( item );
271 
272  return item;
273 }
void AddBitmapToMenuItem(wxMenuItem *aMenu, const wxBitmap &aImage)
Add a bitmap to a menuitem.
Definition: bitmap.cpp:223

References AddBitmapToMenuItem().

◆ AddMenuItem() [3/4]

wxMenuItem* AddMenuItem ( wxMenu *  aMenu,
wxMenu *  aSubMenu,
int  aId,
const wxString &  aText,
const wxBitmap &  aImage 
)

Function AddMenuItem is an inline helper function to create and insert a menu item with an icon into aSubMenu in aMenu.

Parameters
aMenuis the menu to add the new submenu item.
aSubMenuis the submenu to add the new menu.
aIdis the command ID for the new menu item.
aTextis the string for the new menu item.
aImageis the icon to add to the new menu item.
Returns
a pointer to the new created wxMenuItem

Definition at line 276 of file bitmap.cpp.

278 {
279  wxMenuItem* item = new wxMenuItem( aMenu, aId, aText );
280  item->SetSubMenu( aSubMenu );
281  AddBitmapToMenuItem( item, aImage );
282 
283  aMenu->Append( item );
284 
285  return item;
286 }
void AddBitmapToMenuItem(wxMenuItem *aMenu, const wxBitmap &aImage)
Add a bitmap to a menuitem.
Definition: bitmap.cpp:223

References AddBitmapToMenuItem().

◆ AddMenuItem() [4/4]

wxMenuItem* AddMenuItem ( wxMenu *  aMenu,
wxMenu *  aSubMenu,
int  aId,
const wxString &  aText,
const wxString &  aHelpText,
const wxBitmap &  aImage 
)

Function AddMenuItem is an inline helper function to create and insert a menu item with an icon and a help message string into aSubMenu in aMenu.

Parameters
aMenuis the menu to add the new submenu item.
aSubMenuis the submenu to add the new menu.
aIdis the command ID for the new menu item.
aTextis the string for the new menu item.
aHelpTextis the help message string for the new menu item.
aImageis the icon to add to the new menu item.
Returns
a pointer to the new created wxMenuItem

Definition at line 289 of file bitmap.cpp.

292 {
293  wxMenuItem* item = new wxMenuItem( aMenu, aId, aText, aHelpText );
294  item->SetSubMenu( aSubMenu );
295  AddBitmapToMenuItem( item, aImage );
296 
297  aMenu->Append( item );
298 
299  return item;
300 }
void AddBitmapToMenuItem(wxMenuItem *aMenu, const wxBitmap &aImage)
Add a bitmap to a menuitem.
Definition: bitmap.cpp:223

References AddBitmapToMenuItem().

◆ AddMenuLanguageList()

void AddMenuLanguageList ( CONDITIONAL_MENU aMasterMenu,
TOOL_INTERACTIVE aControlTool 
)

Function AddMenuLanguageList creates a menu list for language choice, and add it as submenu to MasterMenu.

Parameters
aMasterMenuThe main menu.

Definition at line 50 of file languages_menu.cpp.

51 {
52  CONDITIONAL_MENU* langsMenu = new CONDITIONAL_MENU( false, aControlTool );
53  langsMenu->SetTitle( _( "Set Language" ) );
54  langsMenu->SetIcon( language_xpm );
55  aMasterMenu->AddMenu( langsMenu );
56  wxString tooltip;
57 
58  auto isCurrentLang = [] ( int aLangIdentifier ) {
59  return Pgm().GetSelectedLanguageIdentifier() == aLangIdentifier;
60  };
61 
62  for( unsigned ii = 0; LanguagesList[ii].m_KI_Lang_Identifier != 0; ii++ )
63  {
64  wxString label;
65 
66  if( LanguagesList[ii].m_DoNotTranslate )
67  label = LanguagesList[ii].m_Lang_Label;
68  else
69  label = wxGetTranslation( LanguagesList[ii].m_Lang_Label );
70 
71  langsMenu->AddCheckItem( LanguagesList[ii].m_KI_Lang_Identifier, // wxMenuItem wxID
72  label, tooltip, LanguagesList[ii].m_Lang_Icon,
73  std::bind( isCurrentLang, LanguagesList[ii].m_WX_Lang_Identifier ) );
74  }
75 }
void AddMenu(ACTION_MENU *aMenu, const SELECTION_CONDITION &aCondition=SELECTION_CONDITIONS::ShowAlways, int aOrder=ANY_ORDER)
Function AddMenu()
int m_KI_Lang_Identifier
KiCad identifier used in menu selection (See id.h)
Definition: pgm_base.h:84
void AddCheckItem(const TOOL_ACTION &aAction, const SELECTION_CONDITION &aCondition, int aOrder=ANY_ORDER)
Function AddCheckItem()
PGM_BASE & Pgm()
The global Program "get" accessor.
Definition: kicad.cpp:65
LANGUAGE_DESCR LanguagesList[]
Definition: pgm_base.cpp:80
VTBL_ENTRY int GetSelectedLanguageIdentifier() const
Definition: pgm_base.h:282
void SetIcon(const BITMAP_OPAQUE *aIcon)
Function SetIcon() Assigns an icon for the entry.
Definition: action_menu.cpp:68
wxString m_Lang_Label
Labels used in menus.
Definition: pgm_base.h:90
#define _(s)
void SetTitle(const wxString &aTitle) override
Function SetTitle() Sets title for the menu.
Definition: action_menu.cpp:86

References _, CONDITIONAL_MENU::AddCheckItem(), CONDITIONAL_MENU::AddMenu(), PGM_BASE::GetSelectedLanguageIdentifier(), LanguagesList, LANGUAGE_DESCR::m_KI_Lang_Identifier, LANGUAGE_DESCR::m_Lang_Label, Pgm(), ACTION_MENU::SetIcon(), and ACTION_MENU::SetTitle().