341 lines
13 KiB
C++
341 lines
13 KiB
C++
/******************************************************************/
|
|
/* menubarpcb.cpp - creation du menu general de l'editeur de board*/
|
|
/******************************************************************/
|
|
|
|
#ifdef __GNUG__
|
|
#pragma implementation
|
|
#endif
|
|
|
|
#include "fctsys.h"
|
|
#include "common.h"
|
|
|
|
#include "pcbnew.h"
|
|
|
|
#include "bitmaps.h"
|
|
#include "protos.h"
|
|
#include "hotkeys.h"
|
|
#include "id.h"
|
|
|
|
/***********************************************/
|
|
void WinEDA_PcbFrame::ReCreateMenuBar()
|
|
/***********************************************/
|
|
|
|
/* Cree ou reinitialise le menu du haut d'ecran
|
|
*/
|
|
{
|
|
int ii;
|
|
wxMenuBar * menuBar = GetMenuBar();
|
|
|
|
if( menuBar == NULL )
|
|
{
|
|
menuBar = new wxMenuBar();
|
|
|
|
//////////////////
|
|
// Menu "Files" //
|
|
//////////////////
|
|
m_FilesMenu = new wxMenu;
|
|
wxMenuItem *item = new wxMenuItem(m_FilesMenu, ID_MENU_LOAD_FILE,
|
|
_("Load Board Ctrl-O"),
|
|
_("Delete old Board and Load new Board"));
|
|
item->SetBitmap(open_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_MENU_APPEND_FILE,
|
|
_("Append Board"),
|
|
_("Add Board to old Board"));
|
|
item->SetBitmap(import_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_MENU_NEW_BOARD,
|
|
_("&New board"),
|
|
_("Clear old PCB and init a new one"));
|
|
item->SetBitmap(new_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_MENU_RECOVER_BOARD,
|
|
_("&Rescue"),
|
|
_("Clear old board and get last rescue file"));
|
|
item->SetBitmap(hammer_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_MENU_READ_LAST_SAVED_VERSION_BOARD,
|
|
_("&Previous version"),
|
|
_("Clear old board and get old version of board") );
|
|
item->SetBitmap(jigsaw_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
// Add save menu
|
|
m_FilesMenu->AppendSeparator();
|
|
item = new wxMenuItem(m_FilesMenu, ID_MENU_SAVE_BOARD,
|
|
_("&Save board Ctrl-S"),
|
|
_("Save current board") );
|
|
item->SetBitmap(save_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_MENU_SAVE_BOARD_AS,
|
|
_("Save Board as.."),
|
|
_("Save current board as..") );
|
|
item->SetBitmap(save_as_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
// Add print menu
|
|
m_FilesMenu->AppendSeparator();
|
|
item = new wxMenuItem(m_FilesMenu, ID_GEN_PRINT,
|
|
_("P&rint"), _("Print on current printer"));
|
|
item->SetBitmap(print_button);
|
|
m_FilesMenu->Append(item);
|
|
|
|
// Add plot menu
|
|
item = new wxMenuItem(m_FilesMenu, ID_GEN_PLOT, _("&Plot"),
|
|
_("Plot (HPGL, PostScript, or Gerber format)"));
|
|
item->SetBitmap(plot_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
// Add Export menu
|
|
m_FilesMenu->AppendSeparator();
|
|
wxMenu * submenuexport = new wxMenu();
|
|
|
|
item = new wxMenuItem(submenuexport, ID_GEN_EXPORT_SPECCTRA,
|
|
_("&Specctra DSN"), _("Export the current board to a \"Specctra DSN\" file") );
|
|
item->SetBitmap(export_xpm);
|
|
submenuexport->Append(item);
|
|
|
|
item = new wxMenuItem(submenuexport, ID_GEN_EXPORT_FILE_GENCADFORMAT,
|
|
_("&GenCAD"), _("Export GenCAD Format") );
|
|
item->SetBitmap(export_xpm);
|
|
submenuexport->Append(item);
|
|
|
|
item = new wxMenuItem(submenuexport, ID_GEN_EXPORT_FILE_MODULE_REPORT,
|
|
_("&Module report"), _("Create a pcb report (footprint report)") );
|
|
item->SetBitmap(tools_xpm);
|
|
submenuexport->Append(item);
|
|
ADD_MENUITEM_WITH_HELP_AND_SUBMENU(m_FilesMenu, submenuexport,
|
|
ID_GEN_EXPORT_FILE, _("E&xport"), _("Export board"), export_xpm);
|
|
|
|
|
|
//-----<Add import menu>-----------------------------------------------
|
|
// no separator, keep it next to Import
|
|
wxMenu * submenuImport = new wxMenu();
|
|
|
|
item = new wxMenuItem(submenuImport, ID_GEN_IMPORT_SPECCTRA_SESSION,
|
|
_("&Specctra Session"), _("Import a routed \"Specctra Session\" (*.ses) file") );
|
|
item->SetBitmap(import_xpm); // @todo need better bitmap
|
|
submenuImport->Append(item);
|
|
|
|
/* would be implemented in WinEDA_PcbFrame::ImportSpecctraDesign() in specctra_import.cpp
|
|
item = new wxMenuItem(submenuImport, ID_GEN_IMPORT_SPECCTRA_DESIGN,
|
|
_("&Specctra Design"), _("Import a \"Specctra Design\" (*.dsn) file") );
|
|
item->SetBitmap(export_xpm); // @todo need better bitmap
|
|
submenuImport->Append(item);
|
|
*/
|
|
|
|
ADD_MENUITEM_WITH_HELP_AND_SUBMENU(m_FilesMenu, submenuImport,
|
|
ID_GEN_IMPORT_FILE, _("Import"), _("Import files"), import_xpm);
|
|
//-----</Add import menu>----------------------------------------------
|
|
|
|
// Add archive footprints menu
|
|
m_FilesMenu->AppendSeparator();
|
|
wxMenu * submenuarchive = new wxMenu();
|
|
item = new wxMenuItem(submenuarchive, ID_MENU_ARCHIVE_NEW_MODULES,
|
|
_("Add new footprints"),
|
|
_("Archive new footprints only in a library (keep other footprints in this lib)") );
|
|
item->SetBitmap(library_update_xpm);
|
|
submenuarchive->Append(item);
|
|
item = new wxMenuItem(submenuarchive, ID_MENU_ARCHIVE_ALL_MODULES,
|
|
_("Create footprint archive"),
|
|
_("Archive all footprints in a library(old lib will be deleted)") );
|
|
item->SetBitmap(library_xpm);
|
|
submenuarchive->Append(item);
|
|
ADD_MENUITEM_WITH_HELP_AND_SUBMENU(m_FilesMenu, submenuarchive,
|
|
ID_MENU_ARCHIVE_MODULES,
|
|
_("Archive footprints"),
|
|
_("Archive or Add footprints in a library file"), library_xpm);
|
|
|
|
// Add exit menu
|
|
m_FilesMenu->AppendSeparator();
|
|
item = new wxMenuItem(m_FilesMenu, ID_EXIT, _("E&xit"), _("Quit pcbnew") );
|
|
item->SetBitmap(exit_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
|
|
// Creation des selections des anciens fichiers
|
|
m_FilesMenu->AppendSeparator();
|
|
int max_file = m_Parent->m_LastProjectMaxCount;
|
|
for ( ii = 0; ii < max_file; ii++ )
|
|
{
|
|
if ( GetLastProject(ii).IsEmpty() ) break;
|
|
m_FilesMenu->Append(ID_LOAD_FILE_1 + ii, GetLastProject(ii) );
|
|
}
|
|
|
|
///////////////////////////////////
|
|
// Configuration et preferences: //
|
|
///////////////////////////////////
|
|
wxMenu * configmenu = new wxMenu;
|
|
item = new wxMenuItem(configmenu, ID_CONFIG_REQ, _("&Libs and Dir"),
|
|
_("Setting Libraries, Directories and others..."));
|
|
item->SetBitmap(library_xpm);
|
|
configmenu->Append(item);
|
|
|
|
item = new wxMenuItem(configmenu, ID_COLORS_SETUP, _("&Colors"),
|
|
_("Select Colors and Display for PCB items"));
|
|
item->SetBitmap(palette_xpm);
|
|
configmenu->Append(item);
|
|
|
|
item = new wxMenuItem(configmenu, ID_OPTIONS_SETUP, _("&General Options"),
|
|
_("Select general options for pcbnew"));
|
|
item->SetBitmap(preference_xpm);
|
|
configmenu->Append(item);
|
|
|
|
item = new wxMenuItem(configmenu, ID_PCB_LOOK_SETUP, _("&Display Options"),
|
|
_("Select what items are displayed"));
|
|
item->SetBitmap(display_options_xpm);
|
|
configmenu->Append(item);
|
|
|
|
// Font selection and setup
|
|
AddFontSelectionMenu(configmenu);
|
|
|
|
m_Parent->SetLanguageList(configmenu);
|
|
|
|
configmenu->AppendSeparator();
|
|
item = new wxMenuItem(configmenu, ID_CONFIG_SAVE, _("&Save preferences"),
|
|
_("Save application preferences"));
|
|
item->SetBitmap(save_setup_xpm);
|
|
configmenu->Append(item);
|
|
|
|
item = new wxMenuItem(configmenu, ID_CONFIG_READ, _("&Read preferences"),
|
|
_("Read application preferences"));
|
|
item->SetBitmap(read_setup_xpm);
|
|
configmenu->Append(item);
|
|
|
|
configmenu->AppendSeparator();
|
|
AddHotkeyConfigMenu( configmenu );
|
|
|
|
/////////////////////////////
|
|
// Ajustage de dimensions: //
|
|
/////////////////////////////
|
|
wxMenu * sizes_menu = new wxMenu;
|
|
|
|
item = new wxMenuItem(sizes_menu, ID_PCB_TRACK_SIZE_SETUP, _("Tracks and Vias"),
|
|
_("Adjust size and width for tracks, vias"));
|
|
item->SetBitmap(showtrack_xpm);
|
|
sizes_menu->Append(item);
|
|
|
|
item = new wxMenuItem(sizes_menu, ID_PCB_USER_GRID_SETUP, _("User Grid Size"),
|
|
_("Adjust User Grid"));
|
|
item->SetBitmap(grid_xpm);
|
|
sizes_menu->Append(item);
|
|
|
|
item = new wxMenuItem(sizes_menu, ID_PCB_DRAWINGS_WIDTHS_SETUP, _("Texts and Drawings"),
|
|
_("Adjust width for texts and drawings"));
|
|
item->SetBitmap(options_text_xpm);
|
|
sizes_menu->Append(item);
|
|
|
|
item = new wxMenuItem(sizes_menu, ID_PCB_PAD_SETUP, _("Pad Settings"),
|
|
_("Adjust size,shape,layers... for Pads"));
|
|
item->SetBitmap(pad_xpm);
|
|
sizes_menu->Append(item);
|
|
|
|
sizes_menu->AppendSeparator();
|
|
item = new wxMenuItem(sizes_menu, ID_CONFIG_SAVE, _("&Save Setup"),
|
|
_("Save options in current directory"));
|
|
item->SetBitmap(save_xpm);
|
|
sizes_menu->Append(item);
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Menu postprocess ( generation fichiers percage, placement... //
|
|
//////////////////////////////////////////////////////////////////
|
|
wxMenu *postprocess_menu = new wxMenu;
|
|
item = new wxMenuItem(postprocess_menu, ID_PCB_GEN_POS_MODULES_FILE,
|
|
_("Create &Modules Pos"),
|
|
_("Gen Position modules file"));
|
|
item->SetBitmap(post_compo_xpm);
|
|
postprocess_menu->Append(item);
|
|
|
|
item = new wxMenuItem(postprocess_menu, ID_PCB_GEN_DRILL_FILE, _("Create &Drill file"),
|
|
_("Gen Drill (EXCELLON] file and/or Drill sheet"));
|
|
item->SetBitmap(post_drill_xpm);
|
|
postprocess_menu->Append(item);
|
|
|
|
item = new wxMenuItem(postprocess_menu, ID_PCB_GEN_CMP_FILE, _("Create &Cmp file"),
|
|
_("Recreate .cmp file for CvPcb"));
|
|
item->SetBitmap(save_cmpstuff_xpm);
|
|
postprocess_menu->Append(item);
|
|
|
|
//////////////////////////
|
|
// Menu d'outils divers //
|
|
//////////////////////////
|
|
wxMenu *miscellaneous_menu = new wxMenu;
|
|
item = new wxMenuItem(miscellaneous_menu, ID_PCB_GLOBAL_DELETE, _("Global &Deletions"),
|
|
_("Delete Tracks, Modules, Texts... on Board"));
|
|
item->SetBitmap(general_deletions_xpm);
|
|
miscellaneous_menu->Append(item);
|
|
|
|
item = new wxMenuItem(miscellaneous_menu, ID_MENU_LIST_NETS, _("&List nets"),
|
|
_("List nets (names and id)"));
|
|
item->SetBitmap(tools_xpm);
|
|
miscellaneous_menu->Append(item);
|
|
|
|
item = new wxMenuItem(miscellaneous_menu, ID_MENU_PCB_CLEAN, _("&Track operations"),
|
|
_("Clean stubs, vias, delete break points, or connect dangling tracks to pads and vias"));
|
|
item->SetBitmap(delete_body_xpm);
|
|
miscellaneous_menu->Append(item);
|
|
|
|
item = new wxMenuItem(miscellaneous_menu, ID_MENU_PCB_SWAP_LAYERS, _("&Swap layers"),
|
|
_("Swap tracks on copper layers or drawings on others layers"));
|
|
item->SetBitmap(swap_layer_xpm);
|
|
miscellaneous_menu->Append(item);
|
|
|
|
////////////////
|
|
// Menu Help: //
|
|
////////////////
|
|
wxMenu *helpMenu = new wxMenu;
|
|
item = new wxMenuItem(helpMenu , ID_GENERAL_HELP, _("&Contents"), _("Open the pcbnew manual"));
|
|
item->SetBitmap(help_xpm);
|
|
helpMenu->Append(item);
|
|
|
|
item = new wxMenuItem(helpMenu , ID_KICAD_ABOUT, _("&About"), _("About this application"));
|
|
item->SetBitmap(info_xpm);
|
|
helpMenu->Append(item);
|
|
|
|
//////////////////////
|
|
// Menu Display 3D: //
|
|
//////////////////////
|
|
wxMenu *Display3DMenu = new wxMenu;
|
|
item = new wxMenuItem(Display3DMenu , ID_MENU_PCB_SHOW_3D_FRAME, _("3D Display"), _("Show Board in 3D Mode"));
|
|
item->SetBitmap(show_3d_xpm);
|
|
Display3DMenu->Append(item);
|
|
|
|
menuBar->Append(m_FilesMenu, _("&File"));
|
|
menuBar->Append(configmenu, _("&Preferences"));
|
|
menuBar->Append(sizes_menu, _("&Dimensions"));
|
|
menuBar->Append(miscellaneous_menu, _("&Miscellaneous"));
|
|
menuBar->Append(postprocess_menu, _("P&ostprocess"));
|
|
menuBar->Append(Display3DMenu, _("&3D Display"));
|
|
menuBar->Append(helpMenu, _("&Help"));
|
|
|
|
// Associate the menu bar with the frame
|
|
SetMenuBar(menuBar);
|
|
}
|
|
|
|
else // simple mise a jour de la liste des fichiers anciens
|
|
{
|
|
wxMenuItem * item;
|
|
int max_file = m_Parent->m_LastProjectMaxCount;
|
|
for ( ii = max_file-1; ii >=0 ; ii-- )
|
|
{
|
|
if( m_FilesMenu->FindItem(ID_LOAD_FILE_1 + ii) )
|
|
{
|
|
item = m_FilesMenu->Remove(ID_LOAD_FILE_1 + ii);
|
|
if ( item ) delete item;
|
|
}
|
|
}
|
|
for ( ii = 0; ii < max_file; ii++ )
|
|
{
|
|
if ( GetLastProject(ii).IsEmpty() ) break;
|
|
m_FilesMenu->Append(ID_LOAD_FILE_1 + ii, GetLastProject(ii) );
|
|
}
|
|
}
|
|
}
|
|
|
|
|