From 163ba39823ee4087079fa9e99822ba64cdb4bf10 Mon Sep 17 00:00:00 2001 From: lifekidyeaa Date: Thu, 21 Jun 2007 15:14:38 +0000 Subject: [PATCH] pcbnew: added ctrl-o,s,f added buttons for insert and replace module in the module editor with a new bitmap. restored JP's original functionality for the insert button, replace linked to the new code. --- change_log.txt | 8 +++ include/common.h | 26 +++---- include/id.h | 3 +- include/wxstruct.h | 16 ++--- pcbnew/bitmaps/Insert_Module_Board.xpm | 68 +++++++++++++++++++ ...dule_Board.xpm => Update_Module_Board.xpm} | 2 +- pcbnew/controle.cpp | 2 +- pcbnew/dialog_general_options.cpp | 2 +- pcbnew/hotkeys.cpp | 65 +++++++++++++----- pcbnew/menubarpcb.cpp | 4 +- pcbnew/modedit.cpp | 12 ++-- pcbnew/moduleframe.cpp | 10 +-- pcbnew/tool_modedit.cpp | 11 ++- pcbnew/tool_pcb.cpp | 2 +- 14 files changed, 174 insertions(+), 57 deletions(-) create mode 100644 pcbnew/bitmaps/Insert_Module_Board.xpm rename pcbnew/bitmaps/{Repl_Module_Board.xpm => Update_Module_Board.xpm} (97%) diff --git a/change_log.txt b/change_log.txt index 54c4710d3c..da5648ca35 100644 --- a/change_log.txt +++ b/change_log.txt @@ -4,6 +4,14 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2007-June-21 UPDATE Tim Hanson +================================================================================ ++ pcbnew + 1. added button to 'update' as well as 'insert' modules into main PCB + from within the module editor. Made them functional, of course. + 2. added control-o, control-s & control-f to pcbnew, + though I'm not perfectly happy with the implementation -- wxwidgets puts + the control-characters in alphabetical order! 2007-June-21 UPDATE Jean-Pierre Charras ================================================================================ diff --git a/include/common.h b/include/common.h index 6ad95c9fcb..12e0595689 100644 --- a/include/common.h +++ b/include/common.h @@ -12,7 +12,7 @@ #define COMMON_GLOBL extern #endif -/* Numero de ports TCP/IP utilisés par KICAD */ +/* Numero de ports TCP/IP utilis�s par KICAD */ #define KICAD_PCB_PORT_SERVICE_NUMBER 4242 @@ -208,7 +208,7 @@ private: }; -/* Gestion des feuilles de tracé: +/* Gestion des feuilles de trac�: */ class Ki_PageDescr { @@ -257,7 +257,7 @@ extern Ki_PageDescr g_Sheet_user ; #endif -COMMON_GLOBL int g_LastKey; /* code de la derniere touche actionnéé */ +COMMON_GLOBL int g_LastKey; /* code de la derniere touche actionn�� */ COMMON_GLOBL wxString g_ProductName #ifdef EDA_BASE = wxT("KiCad E.D.A. ") @@ -500,32 +500,32 @@ wxString DateAndTime(void); int StrLenNumCmp(const wxChar *str1,const wxChar *str2, int NbMax); /* - routine (compatible qsort() ) de comparaision pour classement alphab‚tique - Analogue a strncmp() mais les nombres sont compar‚s selon leur valeur num‚rique + routine (compatible qsort() ) de comparaision pour classement alphab�tique + Analogue a strncmp() mais les nombres sont compar�s selon leur valeur num�rique et non pas par leur code ascii */ int StrNumICmp(const wxChar *str1,const wxChar *str2); - /* routine (compatible qsort() ) de comparaison pour classement alphab‚tique, + /* routine (compatible qsort() ) de comparaison pour classement alphab�tique, avec lower case == upper case. - Analogue a stricmp() mais les nombres sont compar‚s selon leur valeur num‚rique + Analogue a stricmp() mais les nombres sont compar�s selon leur valeur num�rique et non pas par leur code ascii */ int StrLenNumICmp(const wxChar *str1,const wxChar *str2, int NbMax); - /* routine (compatible qsort() ) de comparaison pour classement alphab‚tique, + /* routine (compatible qsort() ) de comparaison pour classement alphab�tique, avec lower case == upper case. - Analogue a stricmp() mais les nombres sont compar‚s selon leur valeur num‚rique + Analogue a stricmp() mais les nombres sont compar�s selon leur valeur num�rique et non pas par leur code ascii */ bool WildCompareString(const wxString & pattern, const wxString & string_to_tst, bool case_sensitive = TRUE); /* compare 2 noms de composants, selon regles usuelles - ( Jokers * , ? , autoris‚s). + ( Jokers * , ? , autoris�s). la chaine de reference est "pattern" si case_sensitive == TRUE (default), comparaison exacte retourne TRUE si match FALSE si differences */ char * to_point(char * Text); - /* convertit les , en . dans une chaine. utilisé pour compenser la fct printf + /* convertit les , en . dans une chaine. utilis� pour compenser la fct printf qui genere les flottants avec une virgule au lieu du point en mode international */ /****************/ @@ -598,8 +598,8 @@ int KeyWordOk(const wxString & KeyList, const wxString & Database ); cles donnes dans KeyList ( KeyList = suite de mots cles separes par des espaces Retourne: - 0 si aucun mot cle trouvé - 1 si mot cle trouvé + 0 si aucun mot cle trouv� + 1 si mot cle trouv� */ bool GetAssociatedDocument(wxFrame * frame, const wxString & LibPath, const wxString & DocName); diff --git a/include/id.h b/include/id.h index 0bc9401897..f260fa25dd 100644 --- a/include/id.h +++ b/include/id.h @@ -738,7 +738,8 @@ enum main_id { ID_MODEDIT_DELETE_ITEM_BUTT, ID_MODEDIT_PAD_SETTINGS, ID_MODEDIT_LOAD_MODULE_FROM_BOARD, - ID_MODEDIT_SAVE_MODULE_IN_BOARD, + ID_MODEDIT_INSERT_MODULE_IN_BOARD, + ID_MODEDIT_UPDATE_MODULE_IN_BOARD, ID_MODEDIT_EDIT_MODULE_PROPERTIES, ID_MODEDIT_TRANSFORM_MODULE, ID_MODEDIT_MODULE_ROTATE, diff --git a/include/wxstruct.h b/include/wxstruct.h index 90b9bbfbf5..66a10012e3 100644 --- a/include/wxstruct.h +++ b/include/wxstruct.h @@ -63,7 +63,7 @@ class WinEDAChoiceBox; #define WinEDA_Menu wxMenu #define WinEDA_MenuItem wxMenuItem -// Utilisées mais non definies ici : +// Utilis�es mais non definies ici : class LibraryStruct; class EDA_LibComponentStruct; class LibEDA_BaseStruct; @@ -195,7 +195,7 @@ public: WinEDA_Toolbar * m_VToolBar; // Vertical (right side) Toolbar WinEDA_Toolbar * m_AuxVToolBar; // Auxiliary Vertical (right side) Toolbar WinEDA_Toolbar * m_OptionsToolBar; // Options Toolbar (left side) - WinEDA_Toolbar * m_AuxiliaryToolBar; // Toolbar auxiliaire (utilisé dans pcbnew) + WinEDA_Toolbar * m_AuxiliaryToolBar; // Toolbar auxiliaire (utilis� dans pcbnew) WinEDAChoiceBox * m_SelGridBox; // Dialog box to choose the grid size WinEDAChoiceBox * m_SelZoomBox; // Dialog box to choose the Zoom value @@ -212,9 +212,9 @@ public: int m_UnitType; // Internal Unit type (0 = inch) bool m_Draw_Axis; // TRUE pour avoir les axes dessines bool m_Draw_Grid; // TRUE pour avoir la grille dessinee - bool m_Draw_Sheet_Ref; // TRUE pour avoir le cartouche dessiné + bool m_Draw_Sheet_Ref; // TRUE pour avoir le cartouche dessin� - bool m_Print_Sheet_Ref; // TRUE pour avoir le cartouche imprimé + bool m_Print_Sheet_Ref; // TRUE pour avoir le cartouche imprim� bool m_Draw_Auxiliary_Axis; // TRUE pour avoir les axes auxiliaires dessines wxPoint m_Auxiliary_Axis_Position; /* origine de l'axe auxiliaire (app: dans la generation les fichiers de positionnement @@ -809,7 +809,7 @@ public: /*********************************************************/ /* class WinEDA_ModuleEditFrame: public WinEDA_DrawFrame */ -/* Class de la fenetre d'édition des modules pour PCB */ +/* Class de la fenetre d'�dition des modules pour PCB */ /*********************************************************/ class WinEDA_ModuleEditFrame: public WinEDA_BasePcbFrame @@ -890,7 +890,7 @@ public: /* class WinEDA_SchematicFrame */ /*******************************/ -/* enum utilisé dans RotationMiroir() */ +/* enum utilis� dans RotationMiroir() */ enum fl_rot_cmp { CMP_NORMAL, // orientation normale (O, pas de miroir) @@ -1318,7 +1318,7 @@ public: /*****************************************************************/ -/* Classe pour afficher et editer une coordonnée en INCHES ou MM */ +/* Classe pour afficher et editer une coordonn�e en INCHES ou MM */ /*****************************************************************/ class WinEDA_PositionCtrl { @@ -1346,7 +1346,7 @@ public: }; /*****************************************************************/ -/* Classe pour afficher et editer une coordonnée en INCHES ou MM */ +/* Classe pour afficher et editer une coordonn�e en INCHES ou MM */ /*****************************************************************/ class WinEDA_SizeCtrl: public WinEDA_PositionCtrl { diff --git a/pcbnew/bitmaps/Insert_Module_Board.xpm b/pcbnew/bitmaps/Insert_Module_Board.xpm new file mode 100644 index 0000000000..d7573f81fa --- /dev/null +++ b/pcbnew/bitmaps/Insert_Module_Board.xpm @@ -0,0 +1,68 @@ +/* XPM */ +static char * insert_module_board_xpm[] = { +"16 16 49 1", +" c None", +". c #000000", +"+ c #0F0F0E", +"@ c #FFF000", +"# c #FEFEFF", +"$ c #F9AB7F", +"% c #F55A00", +"& c #888883", +"* c #FFFFFF", +"= c #C8C36C", +"- c #8F8926", +"; c #D79B76", +"> c #DE5B0B", +", c #FDFDFE", +"' c #918800", +") c #2E2C10", +"! c #040404", +"~ c #E65400", +"{ c #DE6013", +"] c #BDB8B6", +"^ c #050506", +"/ c #F9F9FF", +"( c #F5F5FF", +"_ c #F1F1FF", +": c #EEEEFF", +"< c #CFCFE2", +"[ c #FCFCFF", +"} c #F8F8FF", +"| c #F1A37F", +"1 c #ED9F7F", +"2 c #DADAF7", +"3 c #060606", +"4 c #DEDEFF", +"5 c #070708", +"6 c #FBFBFF", +"7 c #F7F7FF", +"8 c #F4F4FF", +"9 c #F0F0FF", +"0 c #ECECFF", +"a c #E9E9FF", +"b c #E99B7F", +"c c #DADAFF", +"d c #F3F3FF", +"e c #E8E8FF", +"f c #E4E4FF", +"g c #E1E1FF", +"h c #DDDDFF", +"i c #D9D9FF", +"j c #D5D5FF", +"...........+@+ ", +".#$%$###&++@@@++", +".#%*%%%%+=@@@@@@", +".#$%$##*&+-@@@-+", +".######;>;+@@@+ ", +".#%%%%>>*+@@-@@+", +".#####,;>'@+++@'", +".#$%$##**)+! +)", +".#%*%%%%~{]^ ", +".#$%$/(_:<]^ ", +".##[}(_|%123 ", +".#%%%%%%*%45 ", +".67890a1%bc5 ", +".7d90efghij5 ", +"............ ", +" "}; diff --git a/pcbnew/bitmaps/Repl_Module_Board.xpm b/pcbnew/bitmaps/Update_Module_Board.xpm similarity index 97% rename from pcbnew/bitmaps/Repl_Module_Board.xpm rename to pcbnew/bitmaps/Update_Module_Board.xpm index 5cb23b55b1..b2698eed30 100644 --- a/pcbnew/bitmaps/Repl_Module_Board.xpm +++ b/pcbnew/bitmaps/Update_Module_Board.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * repl_module_board_xpm[] = { +static char * update_module_board_xpm[] = { "16 16 81 1", " c None", ". c #000000", diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp index 218142a65f..951d8f9fa1 100644 --- a/pcbnew/controle.cpp +++ b/pcbnew/controle.cpp @@ -2,7 +2,7 @@ /* Routines generales de gestion des commandes usuelles */ /********************************************************/ - /* fichier controle.cpp */ +/* fichier controle.cpp */ /* Routines d'affichage grille, Boite de coordonnees, Curseurs, marqueurs ... */ diff --git a/pcbnew/dialog_general_options.cpp b/pcbnew/dialog_general_options.cpp index 05fa9b622a..e747b58493 100644 --- a/pcbnew/dialog_general_options.cpp +++ b/pcbnew/dialog_general_options.cpp @@ -137,7 +137,7 @@ wxClientDC dc(DrawPanel); break; default: - DisplayError(this, wxT("WinEDA_PcbFrame::OnSelectOptionToolbar error")); + DisplayError(this, wxT("WinEDA_PcbFrame::OnSelectOptionToolbar error \n (event not handled!)")); break; } diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index 7e1680c235..b458c72225 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -79,7 +79,16 @@ sous le courseur souris DrawPanel->MouseToCursorSchema(); End_Route( (TRACK *) (GetScreen()->m_CurrentItem), DC); break; - + + case (int('f') + GR_KB_CTRL) : + case (int('F') + GR_KB_CTRL) : + case 1030:{ // f = letter 6 in the alphabet + 1024 = 1030 + wxCommandEvent evt; + evt.SetId(ID_FIND_ITEMS); + Process_Special_Functions(evt); + } + break; + case 'v': // Switch to alternate layer and Place a via if a track is in progress case 'V': if ( m_ID_current_state != ID_TRACK_BUTT ) return; @@ -97,6 +106,18 @@ sous le courseur souris GetScreen()->SetRefreshReq(); break; + case 'o': + case 'O': + case (int('o') + GR_KB_CTRL) : + case (int('O') + GR_KB_CTRL) : + case 1039: //o is the 15th letter in the alphabet + 1024 = 1039 + if( hotkey & GR_KB_CTRL ){ + //try not to duplicate save, load code etc. + wxCommandEvent evt; + evt.SetId(ID_LOAD_FILE); + Files_io(evt); + } + break; case 'r': // Rotation case 'R': if ( ItemFree ) @@ -119,22 +140,32 @@ sous le courseur souris case 's': // move to other side case 'S': - if ( ItemFree ) - module = Locate_Prefered_Module(m_Pcb, - CURSEUR_ON_GRILLE | IGNORE_LOCKED | MATCH_LAYER ); - else if (GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE) - { - module = (MODULE*)GetScreen()->m_CurrentItem; - // @todo: might need to add a layer check in if() below - if( module->IsLocked() ) - module = 0; // do not move it. - } - if ( module ) - { - GetScreen()->m_CurrentItem = module; - module->Display_Infos(this); - Change_Side_Module(module, DC); - } + case (int('s') + GR_KB_CTRL) : + case (int('S') + GR_KB_CTRL) : + case 1043: //as before, 19th letter.. + if( hotkey & GR_KB_CTRL ){ + //try not to duplicate save, load code etc. + wxCommandEvent evt; + evt.SetId(ID_SAVE_BOARD); + Files_io(evt); + }else{ + if ( ItemFree ) + module = Locate_Prefered_Module(m_Pcb, + CURSEUR_ON_GRILLE | IGNORE_LOCKED | MATCH_LAYER ); + else if (GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE) + { + module = (MODULE*)GetScreen()->m_CurrentItem; + // @todo: might need to add a layer check in if() below + if( module->IsLocked() ) + module = 0; // do not move it. + } + if ( module ) + { + GetScreen()->m_CurrentItem = module; + module->Display_Infos(this); + Change_Side_Module(module, DC); + } + } break; case 'L': // toggle module "MODULE_is_LOCKED" status: diff --git a/pcbnew/menubarpcb.cpp b/pcbnew/menubarpcb.cpp index 6dbd382fbb..5e8d3dcb30 100644 --- a/pcbnew/menubarpcb.cpp +++ b/pcbnew/menubarpcb.cpp @@ -38,7 +38,7 @@ wxMenuBar * menuBar = GetMenuBar(); ////////////////// m_FilesMenu = new wxMenu; wxMenuItem *item = new wxMenuItem(m_FilesMenu, ID_MENU_LOAD_FILE, - _("Load Board"), + _("Load Board Ctrl-O"), _("Delete old Board and Load new Board")); item->SetBitmap(open_xpm); m_FilesMenu->Append(item); @@ -70,7 +70,7 @@ wxMenuBar * menuBar = GetMenuBar(); // Add save menu m_FilesMenu->AppendSeparator(); item = new wxMenuItem(m_FilesMenu, ID_MENU_SAVE_BOARD, - _("&Save board"), + _("&Save board Ctrl-S"), _("Save current board") ); item->SetBitmap(save_xpm); m_FilesMenu->Append(item); diff --git a/pcbnew/modedit.cpp b/pcbnew/modedit.cpp index 885b088638..1be3071c38 100644 --- a/pcbnew/modedit.cpp +++ b/pcbnew/modedit.cpp @@ -149,8 +149,8 @@ wxClientDC dc(DrawPanel); if ( m_Draw3DFrame ) m_Draw3DFrame->NewDisplay(); break; - case ID_MODEDIT_SAVE_MODULE_IN_BOARD:{ - // seems that this should update modules in the current board, + case ID_MODEDIT_UPDATE_MODULE_IN_BOARD:{ + // update modules in the current board, // not just add it to the board with total disregard for the // netlist...? WinEDA_PcbFrame * pcbframe = m_Parent->m_PcbFrame; @@ -234,7 +234,7 @@ wxClientDC dc(DrawPanel); mainpcb->m_Status_Pcb = 0; } break; - /*case ID_MODEDIT_SAVE_MODULE_IN_BOARD: + case ID_MODEDIT_INSERT_MODULE_IN_BOARD: { WinEDA_PcbFrame * pcbframe = m_Parent->m_PcbFrame; BOARD * mainpcb = pcbframe->m_Pcb; @@ -249,6 +249,8 @@ wxClientDC dc(DrawPanel); // Recherche de l'ancien module correspondant //(qui a pu changer ou disparaitre a la suite d'�ditions) //locate the corresponding former unit, which may have a different revision. + // I've taken this out, as it is superceded by 'update' above. + /* if ( module_in_edit->m_Link ) { oldmodule = mainpcb->m_Modules; @@ -258,7 +260,7 @@ wxClientDC dc(DrawPanel); break; } } - + */ // Placement du module dans la liste des modules du PCB. newmodule->Pnext = mainpcb->m_Modules; mainpcb->m_Modules = newmodule; @@ -282,7 +284,7 @@ wxClientDC dc(DrawPanel); pcbframe->GetScreen()->m_CurrentItem = NULL; mainpcb->m_Status_Pcb = 0; } - break;*/ + break; case ID_LIBEDIT_IMPORT_PART: GetScreen()->ClearUndoRedoList(); diff --git a/pcbnew/moduleframe.cpp b/pcbnew/moduleframe.cpp index 6621409776..744103aa17 100644 --- a/pcbnew/moduleframe.cpp +++ b/pcbnew/moduleframe.cpp @@ -44,7 +44,8 @@ BEGIN_EVENT_TABLE(WinEDA_ModuleEditFrame, wxFrame) EVT_TOOL(ID_MODEDIT_CHECK, WinEDA_ModuleEditFrame::Process_Special_Functions) EVT_TOOL(ID_MODEDIT_PAD_SETTINGS, WinEDA_ModuleEditFrame::Process_Special_Functions) EVT_TOOL(ID_MODEDIT_LOAD_MODULE_FROM_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions) - EVT_TOOL(ID_MODEDIT_SAVE_MODULE_IN_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions) + EVT_TOOL(ID_MODEDIT_INSERT_MODULE_IN_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions) + EVT_TOOL(ID_MODEDIT_UPDATE_MODULE_IN_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions) EVT_TOOL(ID_MODEDIT_EDIT_MODULE_PROPERTIES, WinEDA_ModuleEditFrame::Process_Special_Functions) EVT_TOOL(ID_MODEDIT_UNDO, WinEDA_ModuleEditFrame::Process_Special_Functions) EVT_TOOL(ID_MODEDIT_REDO, WinEDA_ModuleEditFrame::Process_Special_Functions) @@ -93,7 +94,7 @@ BEGIN_EVENT_TABLE(WinEDA_ModuleEditFrame, wxFrame) // Menu 3D Frame EVT_MENU(ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_ModuleEditFrame::Show3D_Frame) - // PopUp Menu Zoom traités dans drawpanel.cpp + // PopUp Menu Zoom trait�s dans drawpanel.cpp END_EVENT_TABLE() @@ -111,7 +112,7 @@ WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame(wxWindow * father, WinEDA_App *pa m_FrameName = wxT("ModEditFrame"); m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines m_Draw_Grid = TRUE; // TRUE pour avoir la axes dessinee - m_Draw_Sheet_Ref = FALSE; // TRUE pour avoir le cartouche dessiné + m_Draw_Sheet_Ref = FALSE; // TRUE pour avoir le cartouche dessin� m_ZoomMaxValue = 1024; // Give an icon SetIcon(wxICON(icon_modedit)); @@ -208,7 +209,8 @@ bool active, islib = TRUE; m_HToolBar->EnableTool(ID_LIBEDIT_EXPORT_PART,active); m_HToolBar->EnableTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART,active); m_HToolBar->EnableTool(ID_MODEDIT_SAVE_LIBMODULE,active && islib); - m_HToolBar->EnableTool(ID_MODEDIT_SAVE_MODULE_IN_BOARD,active); + m_HToolBar->EnableTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD,active); + m_HToolBar->EnableTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD,active); if ( GetScreen() ) { m_HToolBar->EnableTool(ID_MODEDIT_UNDO,GetScreen()->m_UndoList && active); diff --git a/pcbnew/tool_modedit.cpp b/pcbnew/tool_modedit.cpp index fc4156ce79..ab0935b3c6 100644 --- a/pcbnew/tool_modedit.cpp +++ b/pcbnew/tool_modedit.cpp @@ -22,7 +22,8 @@ #include "New_FootPrint.xpm" #include "module_options.xpm" #include "Load_Module_Board.xpm" -#include "Repl_Module_Board.xpm" +#include "Insert_Module_Board.xpm" +#include "Update_Module_Board.xpm" #ifdef __UNIX__ #define LISTBOX_WIDTH 120 @@ -72,9 +73,13 @@ void WinEDA_ModuleEditFrame::ReCreateHToolbar(void) BITMAP(load_module_board_xpm), _("Load module from current board")); - m_HToolBar->AddTool(ID_MODEDIT_SAVE_MODULE_IN_BOARD, wxEmptyString, - BITMAP(repl_module_board_xpm), + m_HToolBar->AddTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD, wxEmptyString, + BITMAP(update_module_board_xpm), _("Update module in current board")); + + m_HToolBar->AddTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD, wxEmptyString, + BITMAP(insert_module_board_xpm), + _("Insert module into current board")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_LIBEDIT_IMPORT_PART, wxEmptyString, diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index 99d8d093e0..414bd339c9 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -246,7 +246,7 @@ int ii; m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP(zoom_optimal_xpm), _("auto zoom")); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool(ID_FIND_ITEMS, wxEmptyString, BITMAP(find_xpm), _("Find components and texts")); + m_HToolBar->AddTool(ID_FIND_ITEMS, wxEmptyString, BITMAP(find_xpm), _("Find components and texts (Ctrl-F)")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GET_NETLIST, wxEmptyString, BITMAP(netlist_xpm), _("Read Netlist"));