From 1ee86d4a5252df28aa1138a8c129089a3fc5ef62 Mon Sep 17 00:00:00 2001 From: charras Date: Tue, 16 Feb 2010 10:42:57 +0000 Subject: [PATCH] code cleanup and enhancements about hotkeys --- common/hotkeys_basic.cpp | 63 ++++--- eeschema/hotkeys.cpp | 32 +++- eeschema/hotkeys.h | 1 + eeschema/menubar.cpp | 15 +- eeschema/tool_lib.cpp | 12 +- eeschema/tool_sch.cpp | 16 +- eeschema/tool_viewlib.cpp | 8 +- include/hotkeys_basic.h | 51 +++++- internat/fr/kicad.mo | Bin 222997 -> 223150 bytes internat/fr/kicad.po | 331 ++++++++++++++++++------------------ pcbnew/hotkeys.cpp | 12 ++ pcbnew/menubar_pcbframe.cpp | 27 +-- pcbnew/tool_modedit.cpp | 8 +- pcbnew/tool_pcb.cpp | 18 +- 14 files changed, 320 insertions(+), 274 deletions(-) diff --git a/common/hotkeys_basic.cpp b/common/hotkeys_basic.cpp index f0f18a4f92..0351da5086 100644 --- a/common/hotkeys_basic.cpp +++ b/common/hotkeys_basic.cpp @@ -199,22 +199,22 @@ static struct hotkey_name_descr s_Hotkey_Name_List[] = * return the key name from the key code * Only some wxWidgets key values are handled for function key ( see * s_Hotkey_Name_List[] ) - * @param key = key code (ascii value, or wxWidgets value for function keys) + * @param aKeycode = key code (ascii value, or wxWidgets value for function keys) * @return the key name in a wxString */ -wxString ReturnKeyNameFromKeyCode( int keycode ) +wxString ReturnKeyNameFromKeyCode( int aKeycode ) { wxString keyname, modifier, fullkeyname; int ii; - if( (keycode & GR_KB_CTRL) != 0 ) + if( (aKeycode & GR_KB_CTRL) != 0 ) modifier << wxT( "Ctrl+" ); - if( (keycode & GR_KB_ALT) != 0 ) + if( (aKeycode & GR_KB_ALT) != 0 ) modifier << wxT( "Alt+" ); - if( (keycode & GR_KB_SHIFT) != 0 ) + if( (aKeycode & GR_KB_SHIFT) != 0 ) modifier << wxT( "Shift+" ); - keycode &= ~( GR_KB_CTRL | GR_KB_ALT | GR_KB_SHIFT ); + aKeycode &= ~( GR_KB_CTRL | GR_KB_ALT | GR_KB_SHIFT ); for( ii = 0; ; ii++ ) { if( s_Hotkey_Name_List[ii].m_KeyCode == 0 ) @@ -222,7 +222,7 @@ wxString ReturnKeyNameFromKeyCode( int keycode ) keyname = wxT( "" ); break; } - if( s_Hotkey_Name_List[ii].m_KeyCode == keycode ) + if( s_Hotkey_Name_List[ii].m_KeyCode == aKeycode ) { keyname = s_Hotkey_Name_List[ii].m_Name; break; @@ -236,12 +236,15 @@ wxString ReturnKeyNameFromKeyCode( int keycode ) /** function AddHotkeyName * Add the key name from the Command id value ( m_Idcommand member value) - * @param List = pointer to a Ki_HotkeyInfo list of commands - * @param CommandId = Command Id value - * @return text (key name) in a wxString if found or text without modification + * @param aText = a wxString. returns aText + key name + * @param aList = pointer to a Ki_HotkeyInfo list of commands + * @param aCommandId = Command Id value + * @param aIsShortCut = true to add (active shortcuts in menus) + * = false to add <(keyname)> + * @return a wxString (aTest + key name) if key found or aText without modification */ wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList, - int aCommandId ) + int aCommandId , bool aIsShortCut ) { wxString msg = aText; wxString keyname; @@ -249,21 +252,28 @@ wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList, keyname = ReturnKeyNameFromCommandId( aList, aCommandId ); if( !keyname.IsEmpty() ) - msg << wxT( "\t" ) << keyname; + { + if ( aIsShortCut ) + msg << wxT( "\t" ) << keyname; + else + msg << wxT( " <" ) << keyname << wxT(">"); + } return msg; } - /** function AddHotkeyName * Add the key name from the Command id value ( m_Idcommand member value) - * @param List = pointer to a Ki_HotkeyInfoSectionDescriptor* DescrList of - * commands - * @param CommandId = Command Id value - * @return text (key name) in a wxString if found or text without modification + * @param aText = a wxString. returns aText + key name + * @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands + * @param aCommandId = Command Id value + * @param aIsShortCut = true to add (active shortcuts in menus) + * = false to add <(keyname)> + * @return a wxString (aTest + key name) if key found or aText without modification */ wxString AddHotkeyName( const wxString& aText, struct Ki_HotkeyInfoSectionDescriptor* aDescList, - int aCommandId ) + int aCommandId, + bool aIsShortCut ) { wxString msg = aText; wxString keyname; @@ -277,7 +287,10 @@ wxString AddHotkeyName( const wxString& aText, keyname = ReturnKeyNameFromCommandId( List, aCommandId ); if( !keyname.IsEmpty() ) { - msg << wxT( "\t" ) << keyname; + if ( aIsShortCut ) + msg << wxT( "\t" ) << keyname; + else + msg << wxT( " <" ) << keyname << wxT(">"); break; } } @@ -289,18 +302,18 @@ wxString AddHotkeyName( const wxString& aText, /** function ReturnKeyNameFromCommandId * return the key name from the Command id value ( m_Idcommand member value) - * @param List = pointer to a Ki_HotkeyInfo list of commands - * @param CommandId = Command Id value + * @param aList = pointer to a Ki_HotkeyInfo list of commands + * @param aCommandId = Command Id value * @return the key name in a wxString */ -wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId ) +wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** aList, int aCommandId ) { wxString keyname; - for( ; *List != NULL; List++ ) + for( ; *aList != NULL; aList++ ) { - Ki_HotkeyInfo* hk_decr = *List; - if( hk_decr->m_Idcommand == CommandId ) + Ki_HotkeyInfo* hk_decr = *aList; + if( hk_decr->m_Idcommand == aCommandId ) { keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode ); break; diff --git a/eeschema/hotkeys.cpp b/eeschema/hotkeys.cpp index 2a92921aee..182fa82b77 100644 --- a/eeschema/hotkeys.cpp +++ b/eeschema/hotkeys.cpp @@ -52,13 +52,20 @@ */ /* Fit on Screen */ -static Ki_HotkeyInfo HkZoomAuto( wxT( "Fit on Screen" ), HK_ZOOM_AUTO, - WXK_HOME ); +#if !defined( __WXMAC__ ) +static Ki_HotkeyInfo HkZoomAuto( wxT( "Fit on Screen" ), HK_ZOOM_AUTO, WXK_HOME ); +#else +static Ki_HotkeyInfo HkZoomAuto( wxT( "Zoom Auto" ), HK_ZOOM_AUTO, GR_KB_CTRL + '0' ); +#endif -static Ki_HotkeyInfo HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, - WXK_F4 ); -static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, - WXK_F3 ); +static Ki_HotkeyInfo HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 ); + +/* Refresh Screen */ +#if !defined( __WXMAC__ ) +static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 ); +#else +static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, GR_KB_CTRL + 'R' ); +#endif /* Zoom In */ #if !defined( __WXMAC__ ) @@ -127,6 +134,9 @@ static Ki_HotkeyInfo HkMove2Drag( wxT( "Switch move block to drag block" ), static Ki_HotkeyInfo HkInsert( wxT( "Repeat Last Item" ), HK_REPEAT_LAST, WXK_INSERT ); static Ki_HotkeyInfo HkDelete( wxT( "Delete Item" ), HK_DELETE, WXK_DELETE ); + +static Ki_HotkeyInfo HkFindItem( wxT( "Find Item" ), HK_FIND_ITEM, 'F' + + GR_KB_CTRL ); static Ki_HotkeyInfo HkNextSearch( wxT( "Next Search" ), HK_NEXT_SEARCH, WXK_F5 ); @@ -156,6 +166,7 @@ Ki_HotkeyInfo* s_Common_Hotkey_List[] = // List of hotkey descriptors for schematic Ki_HotkeyInfo* s_Schematic_Hotkey_List[] = { + &HkFindItem, &HkNextSearch, &HkDelete, &HkInsert, @@ -325,6 +336,15 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, RepeatDrawItem( DC ); break; + case HK_FIND_ITEM: + if( !ItemInEdit ) + { + wxCommandEvent evt; + evt.SetId( ID_FIND_ITEMS ); + Process_Special_Functions( evt ); + } + break; + case HK_NEXT_SEARCH: if( !ItemInEdit ) { diff --git a/eeschema/hotkeys.h b/eeschema/hotkeys.h index 0a77d84d40..c03f41ee9a 100644 --- a/eeschema/hotkeys.h +++ b/eeschema/hotkeys.h @@ -11,6 +11,7 @@ // for shared hotkeys id enum hotkey_id_commnand { HK_NEXT_SEARCH = HK_COMMON_END, + HK_FIND_ITEM, HK_DELETE, HK_REPEAT_LAST, HK_EDIT_PIN, diff --git a/eeschema/menubar.cpp b/eeschema/menubar.cpp index b9dddf2555..ebe772c443 100644 --- a/eeschema/menubar.cpp +++ b/eeschema/menubar.cpp @@ -79,7 +79,7 @@ void WinEDA_SchematicFrame::ReCreateMenuBar() /* Save as... */ item = new wxMenuItem( filesMenu, ID_SAVE_ONE_SHEET_AS, - _( "Save Current Sheet &as\tShift+Ctrl+S" ), + _( "Save Current Sheet &as" ), _( "Save current schematic sheet as..." ) ); item->SetBitmap( save_as_xpm ); filesMenu->Append( item ); @@ -88,7 +88,7 @@ void WinEDA_SchematicFrame::ReCreateMenuBar() filesMenu->AppendSeparator(); /* Print */ - item = new wxMenuItem( filesMenu, wxID_PRINT, _( "P&rint\tCtrl+P" ), + item = new wxMenuItem( filesMenu, wxID_PRINT, _( "P&rint" ), _( "Print schematic" ) ); item->SetBitmap( print_button ); filesMenu->Append( item ); @@ -181,7 +181,8 @@ void WinEDA_SchematicFrame::ReCreateMenuBar() editMenu->AppendSeparator(); /* Find */ - item = new wxMenuItem( editMenu, ID_FIND_ITEMS, _( "&Find\tCtrl+F" ), + text = AddHotkeyName( _( "&Find" ), s_Schematic_Hokeys_Descr, HK_FIND_ITEM ); + item = new wxMenuItem( editMenu, ID_FIND_ITEMS, text, _( "Find components and texts" ), wxITEM_NORMAL ); item->SetBitmap( find_xpm ); editMenu->Append( item ); @@ -229,12 +230,8 @@ void WinEDA_SchematicFrame::ReCreateMenuBar() viewMenu->Append( item ); /* Fit on screen */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "Fit on Screen" ), s_Schematic_Hokeys_Descr, HK_ZOOM_AUTO ); -#else - text = _( "Fit on Screen\tCtrl+0" ); -#endif item = new wxMenuItem( viewMenu, ID_ZOOM_PAGE, text, _( "Fit the schematic sheet on the screen" ), @@ -245,12 +242,8 @@ void WinEDA_SchematicFrame::ReCreateMenuBar() viewMenu->AppendSeparator(); /* Redraw view */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "Redraw" ), s_Schematic_Hokeys_Descr, HK_ZOOM_REDRAW ); -#else - text = _( "Redraw\tCtrl+R" ); -#endif item = new wxMenuItem( viewMenu, ID_ZOOM_REDRAW, text, _( "Redraw the schematic view" ), diff --git a/eeschema/tool_lib.cpp b/eeschema/tool_lib.cpp index 40dedca203..f4744b13d2 100644 --- a/eeschema/tool_lib.cpp +++ b/eeschema/tool_lib.cpp @@ -133,11 +133,11 @@ void WinEDA_LibeditFrame::ReCreateHToolbar() m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Undo last command" ), s_Schematic_Hokeys_Descr, - HK_UNDO ); + HK_UNDO, false ); m_HToolBar->AddTool( wxID_UNDO, wxEmptyString, wxBitmap( undo_xpm ), msg ); msg = AddHotkeyName( _( "Redo the last command" ), s_Schematic_Hokeys_Descr, - HK_REDO ); + HK_REDO, false ); m_HToolBar->AddTool( wxID_REDO, wxEmptyString, wxBitmap( redo_xpm ), msg ); @@ -156,20 +156,20 @@ void WinEDA_LibeditFrame::ReCreateHToolbar() _( "Test for duplicate pins and off grid pins" ) ); m_HToolBar->AddSeparator(); - msg = AddHotkeyName( _( "Zoom in" ), s_Libedit_Hokeys_Descr, HK_ZOOM_IN ); + msg = AddHotkeyName( _( "Zoom in" ), s_Libedit_Hokeys_Descr, HK_ZOOM_IN, false ); m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, wxBitmap( zoom_in_xpm ), msg ); - msg = AddHotkeyName( _( "Zoom out" ), s_Libedit_Hokeys_Descr, HK_ZOOM_OUT ); + msg = AddHotkeyName( _( "Zoom out" ), s_Libedit_Hokeys_Descr, HK_ZOOM_OUT, false ); m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, wxBitmap( zoom_out_xpm ), msg ); msg = AddHotkeyName( _( "Redraw view" ), s_Libedit_Hokeys_Descr, - HK_ZOOM_REDRAW ); + HK_ZOOM_REDRAW, false ); m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, wxBitmap( zoom_redraw_xpm ), msg ); - msg = AddHotkeyName( _( "Zoom auto" ), s_Libedit_Hokeys_Descr, HK_ZOOM_AUTO ); + msg = AddHotkeyName( _( "Zoom auto" ), s_Libedit_Hokeys_Descr, HK_ZOOM_AUTO, false ); m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, wxBitmap( zoom_auto_xpm ), msg ); diff --git a/eeschema/tool_sch.cpp b/eeschema/tool_sch.cpp index 0c182943b6..eb6b470e86 100644 --- a/eeschema/tool_sch.cpp +++ b/eeschema/tool_sch.cpp @@ -66,12 +66,12 @@ void WinEDA_SchematicFrame::ReCreateHToolbar() m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Undo last edition" ), s_Schematic_Hokeys_Descr, - HK_UNDO ); + HK_UNDO, false ); m_HToolBar->AddTool( wxID_UNDO, wxEmptyString, wxBitmap( undo_xpm ), msg ); msg = AddHotkeyName( _( "Redo the last undo command" ), - s_Schematic_Hokeys_Descr, HK_REDO ); + s_Schematic_Hokeys_Descr, HK_REDO, false ); m_HToolBar->AddTool( wxID_REDO, wxEmptyString, wxBitmap( redo_xpm ), msg ); @@ -87,28 +87,30 @@ void WinEDA_SchematicFrame::ReCreateHToolbar() _( "Run pcbnew" ) ); m_HToolBar->AddSeparator(); - msg = AddHotkeyName( _( "Zoom in" ), s_Schematic_Hokeys_Descr, HK_ZOOM_IN ); + msg = AddHotkeyName( _( "Zoom in" ), s_Schematic_Hokeys_Descr, HK_ZOOM_IN, false ); m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, wxBitmap( zoom_in_xpm ), msg ); msg = AddHotkeyName( _( "Zoom out" ), s_Schematic_Hokeys_Descr, - HK_ZOOM_OUT ); + HK_ZOOM_OUT, false ); m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, wxBitmap( zoom_out_xpm ), msg ); msg = AddHotkeyName( _( "Redraw view" ), s_Schematic_Hokeys_Descr, - HK_ZOOM_REDRAW ); + HK_ZOOM_REDRAW, false ); m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, wxBitmap( zoom_redraw_xpm ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), s_Schematic_Hokeys_Descr, - HK_ZOOM_AUTO ); + HK_ZOOM_AUTO, false ); m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, wxBitmap( zoom_auto_xpm ), msg ); m_HToolBar->AddSeparator(); + msg = AddHotkeyName( _( "Find components and texts" ), s_Schematic_Hokeys_Descr, + HK_FIND_ITEM, false ); m_HToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, wxBitmap( find_xpm ), - _( "Find components and texts" ) ); + msg ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, wxBitmap( netlist_xpm ), diff --git a/eeschema/tool_viewlib.cpp b/eeschema/tool_viewlib.cpp index deb8713734..a35ed6923f 100644 --- a/eeschema/tool_viewlib.cpp +++ b/eeschema/tool_viewlib.cpp @@ -48,22 +48,22 @@ void WinEDA_ViewlibFrame::ReCreateHToolbar() m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Zoom in" ), s_Viewlib_Hokeys_Descr, - HK_ZOOM_IN ); + HK_ZOOM_IN, false ); m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, wxBitmap( zoom_in_xpm ), msg ); msg = AddHotkeyName( _( "Zoom out" ), s_Viewlib_Hokeys_Descr, - HK_ZOOM_OUT ); + HK_ZOOM_OUT, false ); m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, wxBitmap( zoom_out_xpm ), msg ); msg = AddHotkeyName( _( "Redraw view" ), s_Viewlib_Hokeys_Descr, - HK_ZOOM_REDRAW ); + HK_ZOOM_REDRAW, false ); m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, wxBitmap( zoom_redraw_xpm ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), s_Viewlib_Hokeys_Descr, - HK_ZOOM_AUTO ); + HK_ZOOM_AUTO, false ); m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, wxBitmap( zoom_auto_xpm ), msg ); diff --git a/include/hotkeys_basic.h b/include/hotkeys_basic.h index cadecbc2e9..48d4455bf3 100644 --- a/include/hotkeys_basic.h +++ b/include/hotkeys_basic.h @@ -64,12 +64,51 @@ extern int g_ConfigFileLocationChoice; wxString ReturnHotkeyConfigFilePath( int choice ); void AddHotkeyConfigMenu( wxMenu* menu ); void HandleHotkeyConfigMenuSelection( WinEDA_DrawFrame* frame, int id ); -wxString ReturnKeyNameFromKeyCode( int keycode ); -wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId ); -wxString AddHotkeyName( const wxString& text, Ki_HotkeyInfo** List, int CommandId ); -wxString AddHotkeyName( const wxString& text, - struct Ki_HotkeyInfoSectionDescriptor* DescrList, - int CommandId ); + +/** function ReturnKeyNameFromKeyCode + * return the key name from the key code + * Only some wxWidgets key values are handled for function key ( see + * s_Hotkey_Name_List[] ) + * @param aKeycode = key code (ascii value, or wxWidgets value for function keys) + * @return the key name in a wxString + */ +wxString ReturnKeyNameFromKeyCode( int aKeycode ); + +/** function ReturnKeyNameFromCommandId + * return the key name from the Command id value ( m_Idcommand member value) + * @param aList = pointer to a Ki_HotkeyInfo list of commands + * @param aCommandId = Command Id value + * @return the key name in a wxString + */ +wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** aList, int aCommandId ); + +/** function AddHotkeyName + * Add the key name from the Command id value ( m_Idcommand member value) + * @param aText = a wxString. returns aText + key name + * @param aList = pointer to a Ki_HotkeyInfo list of commands + * @param aCommandId = Command Id value + * @param aIsShortCut = true to add (active shortcuts in menus) + * = false to add <(keyname)> + * @return a wxString (aTest + key name) if key found or aText without modification + */ +wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList, + int aCommandId, + bool aIsShortCut = true); + +/** function AddHotkeyName + * Add the key name from the Command id value ( m_Idcommand member value) + * @param aText = a wxString. returns aText + key name + * @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands + * @param aCommandId = Command Id value + * @param aIsShortCut = true to add (active shortcuts in menus) + * = false to add <(keyname)> + * @return a wxString (aTest + key name) if key found or aText without modification + */ +wxString AddHotkeyName( const wxString& aText, + struct Ki_HotkeyInfoSectionDescriptor* aDescrList, + int aCommandId, + bool aIsShortCut = true); + void DisplayHotkeyList( WinEDA_DrawFrame* frame, struct Ki_HotkeyInfoSectionDescriptor* List ); Ki_HotkeyInfo* GetDescriptorFromHotkey( int key, Ki_HotkeyInfo** List ); diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index e87f38518e4b3eb9b54f05868bbfe3ab8a9edd97..e72bc4c242accd27b0af1cc45a8e03109808a004 100644 GIT binary patch delta 58969 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 diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 1a06ccf7cd..53b39d7506 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-15 08:46+0100\n" -"PO-Revision-Date: 2010-02-15 09:19+0100\n" +"POT-Creation-Date: 2010-02-16 11:02+0100\n" +"PO-Revision-Date: 2010-02-16 11:04+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -744,12 +744,12 @@ msgstr "X Pos" msgid "Y pos" msgstr "Y pos" -#: pcbnew/hotkeys.cpp:595 +#: pcbnew/hotkeys.cpp:607 #, c-format msgid "Footprint %s found, but locked" msgstr "Module %s trouvé, mais verrouillé" -#: pcbnew/hotkeys.cpp:789 +#: pcbnew/hotkeys.cpp:801 msgid "Delete module?" msgstr "Effacer Module?" @@ -5942,8 +5942,8 @@ msgid "Supplier and ref" msgstr "Fournisseur et réf." #: pcbnew/menubar_pcbframe.cpp:39 -msgid "&New\tCtrl+N" -msgstr "&Nouveau\tCtrl+N" +msgid "&New" +msgstr "&Nouveau" #: pcbnew/menubar_pcbframe.cpp:40 msgid "Clear current board and initialize a new one" @@ -5982,8 +5982,8 @@ msgid "Save current board" msgstr "Sauver le C.I. actuel" #: pcbnew/menubar_pcbframe.cpp:76 -msgid "Save as...\tShift+Ctrl+S" -msgstr "Sauver sous...\tCtrl S" +msgid "Save as..." +msgstr "Sauver sous..." #: pcbnew/menubar_pcbframe.cpp:77 msgid "Save the current board as.." @@ -6094,8 +6094,8 @@ msgid "Export board" msgstr "Exporter le C.I." #: pcbnew/menubar_pcbframe.cpp:189 -msgid "&Print\tCtrl+P" -msgstr "Imprime&r\tCtrl+O" +msgid "&Print" +msgstr "&Imprimer" #: pcbnew/menubar_pcbframe.cpp:190 msgid "Print pcb board" @@ -6149,230 +6149,209 @@ msgstr "&Quitter" msgid "Quit PCBNew" msgstr "Quitter PCBnew" -#: pcbnew/menubar_pcbframe.cpp:244 +#: pcbnew/menubar_pcbframe.cpp:243 msgid "Undo" msgstr "Undo" -#: pcbnew/menubar_pcbframe.cpp:246 -#, fuzzy -msgid "Undo\tCtrl+Z" -msgstr "&Ouvrir\tCtrl+O" - -#: pcbnew/menubar_pcbframe.cpp:255 +#: pcbnew/menubar_pcbframe.cpp:250 msgid "Redo" msgstr "Redo" -#: pcbnew/menubar_pcbframe.cpp:257 -msgid "Redo\tShift+Ctrl+Z" -msgstr "" - -#: pcbnew/menubar_pcbframe.cpp:269 +#: pcbnew/menubar_pcbframe.cpp:260 msgid "&Find" msgstr "&Chercher" -#: pcbnew/menubar_pcbframe.cpp:271 -msgid "Find\tCtrl+F" -msgstr "Chercher\tCtrl+F" - -#: pcbnew/menubar_pcbframe.cpp:275 +#: pcbnew/menubar_pcbframe.cpp:262 msgid "Find components and text in current loaded board" msgstr "Recherche de composants et textes sur le circuit" -#: pcbnew/menubar_pcbframe.cpp:284 +#: pcbnew/menubar_pcbframe.cpp:271 msgid "Global &Deletions" msgstr "Effacements &Généraux" -#: pcbnew/menubar_pcbframe.cpp:285 +#: pcbnew/menubar_pcbframe.cpp:272 msgid "Delete tracks, modules, texts... on board" msgstr "Effacer pistes, modules, textes... sur le C.I." -#: pcbnew/menubar_pcbframe.cpp:291 +#: pcbnew/menubar_pcbframe.cpp:278 msgid "&Cleanup Tracks and Vias" msgstr "&Nettoyer Pistes et Vias" -#: pcbnew/menubar_pcbframe.cpp:292 +#: pcbnew/menubar_pcbframe.cpp:279 msgid "Clean stubs, vias, delete break points, or connect dangling tracks to pads and vias" msgstr "Nettoyer bouts de pistes, vias, points inutiles, ou connecter extrémités de pistes mal connectées au centre de pads ou vias" -#: pcbnew/menubar_pcbframe.cpp:298 +#: pcbnew/menubar_pcbframe.cpp:285 msgid "&Swap Layers" msgstr "&Permutte Couches" -#: pcbnew/menubar_pcbframe.cpp:299 +#: pcbnew/menubar_pcbframe.cpp:286 msgid "Swap tracks on copper layers or drawings on others layers" msgstr "Permutation de couches" -#: pcbnew/menubar_pcbframe.cpp:321 -#: pcbnew/menubar_pcbframe.cpp:322 +#: pcbnew/menubar_pcbframe.cpp:308 +#: pcbnew/menubar_pcbframe.cpp:309 msgid "Zoom In" msgstr "Zoom +" -#: pcbnew/menubar_pcbframe.cpp:329 +#: pcbnew/menubar_pcbframe.cpp:316 msgid "Zoom Out" msgstr "Zoom -" -#: pcbnew/menubar_pcbframe.cpp:336 +#: pcbnew/menubar_pcbframe.cpp:322 msgid "Fit on Screen" msgstr "Ajuster à l'Ecran " -#: pcbnew/menubar_pcbframe.cpp:339 -msgid "Fit on Screen\tCtrl+0" -msgstr "" - -#: pcbnew/menubar_pcbframe.cpp:343 +#: pcbnew/menubar_pcbframe.cpp:326 msgid "Zoom to fit the board on the screen" msgstr "Zoom pour ajuster le circuit impriméà l'écran" -#: pcbnew/menubar_pcbframe.cpp:352 +#: pcbnew/menubar_pcbframe.cpp:334 msgid "Redraw" msgstr "Redessin de l'écran" -#: pcbnew/menubar_pcbframe.cpp:355 -msgid "Redraw\tCtrl+R" -msgstr "Redessiner\tCtrl+R" - -#: pcbnew/menubar_pcbframe.cpp:359 +#: pcbnew/menubar_pcbframe.cpp:338 msgid "Redraw the screen of the board" msgstr "Redessiner l'écran du circuit imprimé" -#: pcbnew/menubar_pcbframe.cpp:368 +#: pcbnew/menubar_pcbframe.cpp:347 msgid "&List Nets" msgstr "Liste Equipots" -#: pcbnew/menubar_pcbframe.cpp:369 +#: pcbnew/menubar_pcbframe.cpp:348 msgid "View a list of nets with names and id's" msgstr "Lister les équipotentielles (noms et numéros d'identification)" -#: pcbnew/menubar_pcbframe.cpp:388 +#: pcbnew/menubar_pcbframe.cpp:367 msgid "&Library" msgstr "&Librairie" -#: pcbnew/menubar_pcbframe.cpp:389 +#: pcbnew/menubar_pcbframe.cpp:368 msgid "Setting libraries, directories and others..." msgstr "Sélectionner les librairies, répertoires et autres" -#: pcbnew/menubar_pcbframe.cpp:397 +#: pcbnew/menubar_pcbframe.cpp:376 #: pcbnew/dialog_general_options.cpp:251 msgid "Hide &Layers Manager" msgstr "Cacher le &Gestionnaire de Couches" -#: pcbnew/menubar_pcbframe.cpp:403 +#: pcbnew/menubar_pcbframe.cpp:382 msgid "&General" msgstr "&Général " -#: pcbnew/menubar_pcbframe.cpp:404 +#: pcbnew/menubar_pcbframe.cpp:383 msgid "Select general options for PCBnew" msgstr " Sélection options générales pour PCBNEW" -#: pcbnew/menubar_pcbframe.cpp:410 +#: pcbnew/menubar_pcbframe.cpp:389 msgid "&Display" msgstr "&Affichage" -#: pcbnew/menubar_pcbframe.cpp:411 +#: pcbnew/menubar_pcbframe.cpp:390 msgid "Select how items (pads, tracks texts ... ) are displayed" msgstr "Sélectionner comment les éléments (pads, pistes, textes ...) sont affichés" -#: pcbnew/menubar_pcbframe.cpp:420 +#: pcbnew/menubar_pcbframe.cpp:399 msgid "Adjust user grid dimensions" msgstr "Ajuster taille grille utilisateur" -#: pcbnew/menubar_pcbframe.cpp:426 +#: pcbnew/menubar_pcbframe.cpp:405 msgid "Texts and Drawings" msgstr "Textes et Tracés" -#: pcbnew/menubar_pcbframe.cpp:427 +#: pcbnew/menubar_pcbframe.cpp:406 msgid "Adjust dimensions for texts and drawings" msgstr "Ajuster dimensions pour textes et graphiques" -#: pcbnew/menubar_pcbframe.cpp:433 +#: pcbnew/menubar_pcbframe.cpp:412 msgid "Adjust default pad characteristics" msgstr "Ajuster les caractéristiques par défaut des pads" -#: pcbnew/menubar_pcbframe.cpp:439 +#: pcbnew/menubar_pcbframe.cpp:418 msgid "Pads Mask Clearance" msgstr "Marge Masque des Pads" -#: pcbnew/menubar_pcbframe.cpp:440 +#: pcbnew/menubar_pcbframe.cpp:419 msgid "Adjust the global clearance between pads and the solder resist mask" msgstr "Ajuster la marge globale entre pads et le masque de vernis épargne" -#: pcbnew/menubar_pcbframe.cpp:447 +#: pcbnew/menubar_pcbframe.cpp:426 msgid "&Save" msgstr "&Sauver" -#: pcbnew/menubar_pcbframe.cpp:448 +#: pcbnew/menubar_pcbframe.cpp:427 msgid "Save dimension preferences" msgstr "Sauver les préférences de dimension" -#: pcbnew/menubar_pcbframe.cpp:454 +#: pcbnew/menubar_pcbframe.cpp:433 msgid "Di&mensions" msgstr "Di&mensions" -#: pcbnew/menubar_pcbframe.cpp:455 +#: pcbnew/menubar_pcbframe.cpp:434 msgid "Global dimensions preferences" msgstr "Préférences générales de dimensions" -#: pcbnew/menubar_pcbframe.cpp:468 +#: pcbnew/menubar_pcbframe.cpp:447 msgid "&Save Preferences" msgstr "&Sauver Préférences" -#: pcbnew/menubar_pcbframe.cpp:469 +#: pcbnew/menubar_pcbframe.cpp:448 msgid "Save application preferences" msgstr "Sauver les préférences de l'application" -#: pcbnew/menubar_pcbframe.cpp:474 +#: pcbnew/menubar_pcbframe.cpp:453 msgid "&Read Preferences" msgstr "&Lire Préférences" -#: pcbnew/menubar_pcbframe.cpp:475 +#: pcbnew/menubar_pcbframe.cpp:454 msgid "Read application preferences" msgstr "Lire les préférences de l'application" -#: pcbnew/menubar_pcbframe.cpp:487 +#: pcbnew/menubar_pcbframe.cpp:466 msgid "Design Rules" msgstr "Règles de Conception" -#: pcbnew/menubar_pcbframe.cpp:488 +#: pcbnew/menubar_pcbframe.cpp:467 msgid "Open the design rules editor" msgstr "Ouvrir la fenêtre de dialogue de l'éditeur de règles de conception" -#: pcbnew/menubar_pcbframe.cpp:493 +#: pcbnew/menubar_pcbframe.cpp:472 msgid "&Layers Setup" msgstr "&Options Couches" -#: pcbnew/menubar_pcbframe.cpp:494 +#: pcbnew/menubar_pcbframe.cpp:473 msgid "Enable and set layer properties" msgstr "Activer les couches et ajuster leur propriétés" -#: pcbnew/menubar_pcbframe.cpp:504 +#: pcbnew/menubar_pcbframe.cpp:483 msgid "Open the PCBnew manual" msgstr "Ouvrir la documentation de PCPnew" -#: pcbnew/menubar_pcbframe.cpp:512 +#: pcbnew/menubar_pcbframe.cpp:491 msgid "&About" msgstr "&Au Sujet de" -#: pcbnew/menubar_pcbframe.cpp:513 +#: pcbnew/menubar_pcbframe.cpp:492 msgid "About PCBnew printed circuit board designer" msgstr "Au Sujet de PCBnew outil de conception de C.I." -#: pcbnew/menubar_pcbframe.cpp:522 +#: pcbnew/menubar_pcbframe.cpp:501 msgid "&File" msgstr "&Fichiers" -#: pcbnew/menubar_pcbframe.cpp:523 +#: pcbnew/menubar_pcbframe.cpp:502 msgid "&Edit" msgstr "&Editer" -#: pcbnew/menubar_pcbframe.cpp:524 +#: pcbnew/menubar_pcbframe.cpp:503 msgid "&View" msgstr "&Affichage" -#: pcbnew/menubar_pcbframe.cpp:525 +#: pcbnew/menubar_pcbframe.cpp:504 msgid "&Preferences" msgstr "&Préférences" -#: pcbnew/menubar_pcbframe.cpp:526 +#: pcbnew/menubar_pcbframe.cpp:505 msgid "&Design Rules" msgstr "&Règles de Conception" @@ -8249,11 +8228,11 @@ msgstr "&Fermer" msgid "&Accept Offset" msgstr "&Accepter Offset" -#: eeschema/hotkeys.cpp:344 +#: eeschema/hotkeys.cpp:364 msgid "Add Component" msgstr "Ajout Composant" -#: eeschema/hotkeys.cpp:369 +#: eeschema/hotkeys.cpp:389 msgid "Add Wire" msgstr "Ajouter Fils" @@ -8410,12 +8389,12 @@ msgid "Place a bus" msgstr "Placer un bus" #: eeschema/tool_sch.cpp:175 -#: eeschema/menubar.cpp:296 +#: eeschema/menubar.cpp:289 msgid "Place a wire to bus entry" msgstr "Placer une Entrée de Bus (type fil vers bus)" #: eeschema/tool_sch.cpp:179 -#: eeschema/menubar.cpp:303 +#: eeschema/menubar.cpp:296 msgid "Place a bus to bus entry" msgstr "Placer une Entrée de Bus (type bus vers bus)" @@ -8424,7 +8403,7 @@ msgid "Place no connect flag" msgstr "Placer symbole de non connexion" #: eeschema/tool_sch.cpp:188 -#: eeschema/menubar.cpp:315 +#: eeschema/menubar.cpp:308 msgid "Place net name" msgstr "Place nom de net" @@ -8441,7 +8420,7 @@ msgid "Place a junction" msgstr "Placer une jonction" #: eeschema/tool_sch.cpp:202 -#: eeschema/menubar.cpp:338 +#: eeschema/menubar.cpp:331 msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol" msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole" @@ -8855,6 +8834,10 @@ msgstr "Miroir Bloc ||" msgid "Copy to Clipboard" msgstr "Copie dans Presse papier" +#: eeschema/menubar.cpp:44 +msgid "&New\tCtrl+N" +msgstr "&Nouveau\tCtrl+N" + #: eeschema/menubar.cpp:52 msgid "Open an existing schematic project" msgstr "Ouvrir un projet schématique existant" @@ -8880,17 +8863,16 @@ msgid "Save only current schematic sheet" msgstr "Sauver seulement la feuille active" #: eeschema/menubar.cpp:82 -msgid "Save Current Sheet &as\tShift+Ctrl+S" -msgstr "Sauver Feuille Courante &sous\tShift+Ctrl+S" +msgid "Save Current Sheet &as" +msgstr "Sauver la Feuille &Courante sous" #: eeschema/menubar.cpp:83 msgid "Save current schematic sheet as..." msgstr "Sauver la feuille active sous ..." #: eeschema/menubar.cpp:91 -#, fuzzy -msgid "P&rint\tCtrl+P" -msgstr "&Ouvrir\tCtrl+O" +msgid "P&rint" +msgstr "Imp&rimer" #: eeschema/menubar.cpp:99 msgid "Plot PostScript" @@ -8940,175 +8922,171 @@ msgstr "Tracer les feuilles schématiques en format HPGL, POSTSCRIPT ou SVG" msgid "Quit EESchema" msgstr "Quitter EESchema" -#: eeschema/menubar.cpp:184 -msgid "&Find\tCtrl+F" -msgstr "&Chercher\tCtrl+F" - -#: eeschema/menubar.cpp:193 +#: eeschema/menubar.cpp:194 msgid "Backannotate" msgstr "Rétro Annotation" -#: eeschema/menubar.cpp:194 +#: eeschema/menubar.cpp:195 msgid "Back annotated footprint fields" msgstr "Rétroannotation des champs modules" -#: eeschema/menubar.cpp:240 +#: eeschema/menubar.cpp:237 msgid "Fit the schematic sheet on the screen" msgstr "Ajuster la feuille de schéma à l'écran" -#: eeschema/menubar.cpp:256 +#: eeschema/menubar.cpp:249 msgid "Redraw the schematic view" msgstr "Redessin de l'écran" -#: eeschema/menubar.cpp:270 +#: eeschema/menubar.cpp:263 msgid "&Component" msgstr "&Composant" -#: eeschema/menubar.cpp:271 +#: eeschema/menubar.cpp:264 msgid "Place the component" msgstr "Placer le Composant" -#: eeschema/menubar.cpp:276 +#: eeschema/menubar.cpp:269 msgid "&Power port" msgstr "Power Symbole" -#: eeschema/menubar.cpp:277 +#: eeschema/menubar.cpp:270 msgid "Place the power port" msgstr "Placer le Symbole Power" -#: eeschema/menubar.cpp:282 +#: eeschema/menubar.cpp:275 msgid "&Wire" msgstr "&Fil" -#: eeschema/menubar.cpp:283 +#: eeschema/menubar.cpp:276 msgid "Place the wire" msgstr "Place fil" -#: eeschema/menubar.cpp:288 +#: eeschema/menubar.cpp:281 msgid "&Bus" msgstr "&Bus" -#: eeschema/menubar.cpp:289 +#: eeschema/menubar.cpp:282 msgid "Place bus" msgstr "Place bus" -#: eeschema/menubar.cpp:295 +#: eeschema/menubar.cpp:288 msgid "W&ire to bus entry" msgstr "Entrées de bus (type fil vers bus)" -#: eeschema/menubar.cpp:302 +#: eeschema/menubar.cpp:295 msgid "B&us to bus entry" msgstr "Entrées de bus (type bus vers bus)" -#: eeschema/menubar.cpp:308 +#: eeschema/menubar.cpp:301 msgid "No connect flag" msgstr "Symbole de Non Connexion" -#: eeschema/menubar.cpp:309 +#: eeschema/menubar.cpp:302 msgid "Place a no connect flag" msgstr "Placer un Symbole de Non Connexion" -#: eeschema/menubar.cpp:314 +#: eeschema/menubar.cpp:307 msgid "Net name" msgstr "Net Name" -#: eeschema/menubar.cpp:320 +#: eeschema/menubar.cpp:313 msgid "Global label" msgstr "Label Global" -#: eeschema/menubar.cpp:321 +#: eeschema/menubar.cpp:314 msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy" msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hiérarchie" -#: eeschema/menubar.cpp:327 +#: eeschema/menubar.cpp:320 msgid "Junction" msgstr "Jonction" -#: eeschema/menubar.cpp:328 +#: eeschema/menubar.cpp:321 msgid "Place junction" msgstr "Place jonction" -#: eeschema/menubar.cpp:337 +#: eeschema/menubar.cpp:330 msgid "Hierarchical label" msgstr "Label Hiérarchique" -#: eeschema/menubar.cpp:345 +#: eeschema/menubar.cpp:338 msgid "Hierarchical sheet" msgstr "Feuille Hiérrachique" -#: eeschema/menubar.cpp:346 +#: eeschema/menubar.cpp:339 msgid "Create a hierarchical sheet" msgstr "Créer une Feuille Hiérachique" -#: eeschema/menubar.cpp:352 +#: eeschema/menubar.cpp:345 msgid "Import Hierarchical Label" msgstr "Importer Label Hiérarchique" -#: eeschema/menubar.cpp:353 +#: eeschema/menubar.cpp:346 msgid "Place a pin sheet created by importing a hierarchical label from sheet" msgstr "Placer une pin hiérarchique créée par importation d'un label hiérarchique de la feuille" -#: eeschema/menubar.cpp:360 +#: eeschema/menubar.cpp:353 msgid "Add Hierarchical Pin to Sheet" msgstr "Ajouter Pins de Hiérarchie dans feuille" -#: eeschema/menubar.cpp:361 +#: eeschema/menubar.cpp:354 msgid "Place a hierarchical pin to sheet" msgstr "Addition de pins de hiérarchie dans les feuilles symboles de hiérarchie" -#: eeschema/menubar.cpp:371 +#: eeschema/menubar.cpp:364 msgid "Graphic line or polygon" msgstr "Ligne ou polygone graphique" -#: eeschema/menubar.cpp:372 +#: eeschema/menubar.cpp:365 msgid "Place graphic lines or polygons" msgstr "Placer lignes ou polygones graphiques" -#: eeschema/menubar.cpp:379 +#: eeschema/menubar.cpp:372 msgid "Graphic text" msgstr "Texte graphique" -#: eeschema/menubar.cpp:380 +#: eeschema/menubar.cpp:373 msgid "Place graphic text for comment" msgstr "Placer textes graphiques en commentaire." -#: eeschema/menubar.cpp:394 +#: eeschema/menubar.cpp:387 msgid "Library preferences" msgstr "Préférences pour Librairie" -#: eeschema/menubar.cpp:399 +#: eeschema/menubar.cpp:392 msgid "&Colors" msgstr "&Couleurs" -#: eeschema/menubar.cpp:400 +#: eeschema/menubar.cpp:393 msgid "Color preferences" msgstr "Préférences de couleurs" -#: eeschema/menubar.cpp:405 +#: eeschema/menubar.cpp:398 msgid "&Options" msgstr "&Options" -#: eeschema/menubar.cpp:406 +#: eeschema/menubar.cpp:399 msgid "Eeschema general options and preferences" msgstr "Options et préférences générales de Eeschema" -#: eeschema/menubar.cpp:420 +#: eeschema/menubar.cpp:413 msgid "&Save preferences" msgstr "&Sauver Préférences" -#: eeschema/menubar.cpp:426 +#: eeschema/menubar.cpp:419 msgid "&Read preferences" msgstr "&Lire Préférences" -#: eeschema/menubar.cpp:438 +#: eeschema/menubar.cpp:431 msgid "Open the eeschema manual" msgstr "Ouvrir la documentation de eeschema" -#: eeschema/menubar.cpp:446 +#: eeschema/menubar.cpp:439 msgid "About eeschema schematic designer" msgstr "Au sujet de Eeschema (outil de conception schématique)" -#: eeschema/menubar.cpp:459 +#: eeschema/menubar.cpp:452 msgid "&Place" msgstr "&Placer" @@ -9869,11 +9847,11 @@ msgstr "Conflit en librairie <%s>" #: eeschema/class_library.cpp:274 #, c-format msgid "and appears in alias list of current component <%s>." -msgstr "" +msgstr "et apparait sur la liste d'alias du composant courant <%s>." #: eeschema/class_library.cpp:277 msgid "All old aliases will be removed. Continue ?" -msgstr "" +msgstr "Tous les anciens alias vont être supprimés. Continuer ?" #: eeschema/class_library.cpp:531 msgid "The component library file name is not set." @@ -10350,67 +10328,67 @@ msgstr "" "(Comme sm* pour autoriser tous les noms d'empreintes commençant par sm)." #: eeschema/dialog_edit_component_in_lib_base.cpp:228 -#: eeschema/edit_component_in_lib.cpp:476 +#: eeschema/edit_component_in_lib.cpp:416 msgid "Footprint Filter" msgstr "Filtrage Modules" -#: eeschema/edit_component_in_lib.cpp:145 +#: eeschema/edit_component_in_lib.cpp:85 #, c-format msgid "Alias <%s> not found for component <%s> in library <%s>." msgstr "Alias <%s> non trouvé pour le component <%s> en librairie <%s>." -#: eeschema/edit_component_in_lib.cpp:150 +#: eeschema/edit_component_in_lib.cpp:90 msgid "Component Library Error" msgstr "Erreur en Librairie de Composanr" -#: eeschema/edit_component_in_lib.cpp:266 -#: eeschema/edit_component_in_lib.cpp:336 +#: eeschema/edit_component_in_lib.cpp:206 +#: eeschema/edit_component_in_lib.cpp:276 #, c-format msgid "Alias <%s> cannot be removed while it is being edited!" msgstr "L'alias <%s> ne peut être supprimé tant qu'il est en cours d'édition!" -#: eeschema/edit_component_in_lib.cpp:275 +#: eeschema/edit_component_in_lib.cpp:215 msgid "Remove all aliases from list?" msgstr "Supprimer tous les alias de la liste?" -#: eeschema/edit_component_in_lib.cpp:300 +#: eeschema/edit_component_in_lib.cpp:240 msgid "New alias:" msgstr "Nouvel alias" -#: eeschema/edit_component_in_lib.cpp:301 +#: eeschema/edit_component_in_lib.cpp:241 msgid "Component Alias" msgstr "Alias de Composant" -#: eeschema/edit_component_in_lib.cpp:311 +#: eeschema/edit_component_in_lib.cpp:251 #, c-format msgid "Alias or component name <%s> already exists in library <%s>." msgstr "Alias ou nom de composant <%s> déjà existant en librairie <%s>." -#: eeschema/edit_component_in_lib.cpp:365 +#: eeschema/edit_component_in_lib.cpp:305 msgid "Delete extra parts from component?" msgstr "Supprimer les parts supplémentaires du composant?" -#: eeschema/edit_component_in_lib.cpp:386 +#: eeschema/edit_component_in_lib.cpp:326 msgid "Add new pins for alternate body style ( DeMorgan ) to component?" msgstr "Ajouter les nouvelles pins pour la forme alternative (DeMorgan) au composant?" -#: eeschema/edit_component_in_lib.cpp:393 +#: eeschema/edit_component_in_lib.cpp:333 msgid "Delete alternate body style (DeMorgan) draw items from component?" msgstr "Supprimer les éléments de la représentation alternative (DeMorgan) du composant?" -#: eeschema/edit_component_in_lib.cpp:417 +#: eeschema/edit_component_in_lib.cpp:357 msgid "Doc Files" msgstr "Fichiers de Doc" -#: eeschema/edit_component_in_lib.cpp:453 +#: eeschema/edit_component_in_lib.cpp:393 msgid "Ok to Delete FootprintFilter LIST" msgstr "Ok pour effacer la LISTE des filtres de modules" -#: eeschema/edit_component_in_lib.cpp:476 +#: eeschema/edit_component_in_lib.cpp:416 msgid "Add Footprint Filter" msgstr "Ajouter Filtre Modules" -#: eeschema/edit_component_in_lib.cpp:489 +#: eeschema/edit_component_in_lib.cpp:429 #, c-format msgid "Foot print filter <%s> is already defined." msgstr "Filtre de module <%s> déjà défini." @@ -10489,15 +10467,15 @@ msgstr "&Nom de la feuille:" msgid "&Text size:" msgstr "&Taille du texte:" -#: eeschema/dialog_edit_component_in_lib.cpp:51 +#: eeschema/dialog_edit_component_in_lib.cpp:52 msgid "Library Component Properties" msgstr "Propriétés du Composant Librairie" -#: eeschema/dialog_edit_component_in_lib.cpp:55 +#: eeschema/dialog_edit_component_in_lib.cpp:56 msgid "Properties for " msgstr "Propriétés pour " -#: eeschema/dialog_edit_component_in_lib.cpp:59 +#: eeschema/dialog_edit_component_in_lib.cpp:60 msgid " (alias of " msgstr " (alias de " @@ -11986,10 +11964,6 @@ msgstr "Sauver Couches sous..." msgid "Save current layers as.." msgstr "Sauver couches courantes sous.." -#: gerbview/tool_gerber.cpp:67 -msgid "P&rint" -msgstr "Imp&rimer" - #: gerbview/tool_gerber.cpp:67 msgid "Print gerber" msgstr "Imprimer gerber" @@ -12184,7 +12158,7 @@ msgstr "DCodes" #: gerbview/class_gerbview_layer_widget.cpp:65 msgid "Show DCodes identification" -msgstr "" +msgstr "Afficher numéros de D-Code" #: gerbview/class_gerbview_layer_widget.cpp:118 msgid "Show All Layers" @@ -13054,6 +13028,27 @@ msgstr "Options d'Affichage" msgid "Page Settings" msgstr "Ajustage opt Page" +#~ msgid "Save as...\tShift+Ctrl+S" +#~ msgstr "Sauver sous...\tCtrl S" +#~ msgid "&Print\tCtrl+P" +#~ msgstr "Imprime&r\tCtrl+P" +#~ msgid "Save Current Sheet &as\tShift+Ctrl+S" +#~ msgstr "Sauver Feuille Courante &sous\tShift+Ctrl+S" + +#, fuzzy +#~ msgid "P&rint\tCtrl+P" +#~ msgstr "&Ouvrir\tCtrl+O" +#~ msgid "&Find\tCtrl+F" +#~ msgstr "&Chercher\tCtrl+F" + +#, fuzzy +#~ msgid "Undo\tCtrl+Z" +#~ msgstr "&Ouvrir\tCtrl+O" +#~ msgid "Find\tCtrl+F" +#~ msgstr "Chercher\tCtrl+F" +#~ msgid "Redraw\tCtrl+R" +#~ msgstr "Redessiner\tCtrl+R" + #, fuzzy #~ msgid "Zoom In\tCtrl++" #~ msgstr "Zoom +" @@ -13249,10 +13244,6 @@ msgstr "Ajustage opt Page" #~ msgstr "&Chercher" #~ msgid "&Tracks" #~ msgstr "&Pistes" -#~ msgid "&New" -#~ msgstr "&Nouveau" -#~ msgid "Save as..." -#~ msgstr "Sauver sous..." #~ msgid "Show board in the 3D viewer" #~ msgstr "Visualisation du circuit en 3D" #~ msgid "Show No Copper Layers" diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index 24524a351a..01ae16627b 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -87,9 +87,21 @@ static Ki_HotkeyInfo HkDelete( wxT( "Delete Track or Footprint" ), HK_DELETE, static Ki_HotkeyInfo HkResetLocalCoord( wxT( "Reset local coord." ), HK_RESET_LOCAL_COORD, ' ' ); +/* Fit on Screen */ +#if !defined( __WXMAC__ ) static Ki_HotkeyInfo HkZoomAuto( wxT( "Zoom Auto" ), HK_ZOOM_AUTO, WXK_HOME ); +#else +static Ki_HotkeyInfo HkZoomAuto( wxT( "Zoom Auto" ), HK_ZOOM_AUTO, GR_KB_CTRL + '0' ); +#endif + static Ki_HotkeyInfo HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 ); + +/* Refresh Screen */ +#if !defined( __WXMAC__ ) static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 ); +#else +static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, GR_KB_CTRL + 'R' ); +#endif /* Zoom In */ #if !defined( __WXMAC__ ) diff --git a/pcbnew/menubar_pcbframe.cpp b/pcbnew/menubar_pcbframe.cpp index a072d31513..b0ab9ad9bb 100644 --- a/pcbnew/menubar_pcbframe.cpp +++ b/pcbnew/menubar_pcbframe.cpp @@ -36,7 +36,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar() wxMenu* filesMenu = new wxMenu; /* New Board */ - item = new wxMenuItem( filesMenu, ID_NEW_BOARD, _( "&New\tCtrl+N" ), + item = new wxMenuItem( filesMenu, ID_NEW_BOARD, _( "&New" ), _( "Clear current board and initialize a new one" ) ); item->SetBitmap( new_xpm ); filesMenu->Append( item ); @@ -73,7 +73,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar() /* Save As */ item = new wxMenuItem( filesMenu, ID_SAVE_BOARD_AS, - _( "Save as...\tShift+Ctrl+S" ), + _( "Save as..." ), _( "Save the current board as.." ) ); item->SetBitmap( save_as_xpm ); filesMenu->Append( item ); @@ -186,7 +186,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar() filesMenu->AppendSeparator(); /* Print */ - item = new wxMenuItem( filesMenu, ID_GEN_PRINT, _( "&Print\tCtrl+P" ), + item = new wxMenuItem( filesMenu, ID_GEN_PRINT, _( "&Print" ), _( "Print pcb board" ) ); item->SetBitmap( print_button ); filesMenu->Append( item ); @@ -240,22 +240,14 @@ void WinEDA_PcbFrame::ReCreateMenuBar() wxMenu* editMenu = new wxMenu; /* Undo */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "Undo" ), s_Pcbnew_Editor_Hokeys_Descr, HK_UNDO ); -#else - text = _( "Undo\tCtrl+Z" ); -#endif item = new wxMenuItem( editMenu, wxID_UNDO, text, _( "Undo last edition" ), wxITEM_NORMAL ); item->SetBitmap( undo_xpm ); editMenu->Append( item ); /* Redo */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "Redo" ), s_Pcbnew_Editor_Hokeys_Descr, HK_REDO ); -#else - text = _( "Redo\tShift+Ctrl+Z" ); -#endif item = new wxMenuItem( editMenu, wxID_REDO, text, _( "Redo the last undo command" ), wxITEM_NORMAL ); item->SetBitmap( redo_xpm ); @@ -265,12 +257,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar() editMenu->AppendSeparator(); /* Find */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "&Find" ), s_Pcbnew_Editor_Hokeys_Descr, HK_FIND_ITEM ); -#else - text = _( "Find\tCtrl+F" ); -#endif - item = new wxMenuItem( editMenu, ID_FIND_ITEMS, text, _( "Find components and text in current loaded board" ) ); item->SetBitmap( find_xpm ); @@ -332,12 +319,8 @@ void WinEDA_PcbFrame::ReCreateMenuBar() viewMenu->Append( item ); /* Fit on Screen */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "Fit on Screen" ), s_Pcbnew_Editor_Hokeys_Descr, HK_ZOOM_AUTO ); -#else - text = _( "Fit on Screen\tCtrl+0" ); -#endif item = new wxMenuItem( viewMenu, ID_ZOOM_PAGE, text, _( "Zoom to fit the board on the screen" ), @@ -348,12 +331,8 @@ void WinEDA_PcbFrame::ReCreateMenuBar() viewMenu->AppendSeparator(); /* Redraw view */ -#if !defined( __WXMAC__) text = AddHotkeyName( _( "Redraw" ), s_Pcbnew_Editor_Hokeys_Descr, HK_ZOOM_REDRAW ); -#else - text = _( "Redraw\tCtrl+R" ); -#endif item = new wxMenuItem( viewMenu, ID_ZOOM_REDRAW, text, _( "Redraw the screen of the board" ), diff --git a/pcbnew/tool_modedit.cpp b/pcbnew/tool_modedit.cpp index fefcffbb21..b1ea3a91d6 100644 --- a/pcbnew/tool_modedit.cpp +++ b/pcbnew/tool_modedit.cpp @@ -101,22 +101,22 @@ void WinEDA_ModuleEditFrame::ReCreateHToolbar() m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Zoom in" ), s_Module_Editor_Hokeys_Descr, - HK_ZOOM_IN ); + HK_ZOOM_IN, false ); m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, wxBitmap( zoom_in_xpm ), msg ); msg = AddHotkeyName( _( "Zoom out" ), s_Module_Editor_Hokeys_Descr, - HK_ZOOM_OUT ); + HK_ZOOM_OUT, false ); m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, wxBitmap( zoom_out_xpm ), msg ); msg = AddHotkeyName( _( "Redraw view" ), s_Module_Editor_Hokeys_Descr, - HK_ZOOM_REDRAW ); + HK_ZOOM_REDRAW, false ); m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, wxBitmap( zoom_redraw_xpm ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), s_Module_Editor_Hokeys_Descr, - HK_ZOOM_AUTO ); + HK_ZOOM_AUTO, false ); m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, wxBitmap( zoom_auto_xpm ), msg ); diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index 9788af0060..0288d90568 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -236,29 +236,29 @@ void WinEDA_PcbFrame::ReCreateHToolbar() m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Zoom in" ), s_Board_Editor_Hokeys_Descr, - HK_ZOOM_IN ); + HK_ZOOM_IN, false ); m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, wxBitmap( zoom_in_xpm ), msg ); msg = AddHotkeyName( _( "Zoom out" ), s_Board_Editor_Hokeys_Descr, - HK_ZOOM_OUT ); + HK_ZOOM_OUT, false ); m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, wxBitmap( zoom_out_xpm ), msg ); msg = AddHotkeyName( _( "Redraw view" ), s_Board_Editor_Hokeys_Descr, - HK_ZOOM_REDRAW ); + HK_ZOOM_REDRAW, false ); m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, wxBitmap( zoom_redraw_xpm ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), s_Board_Editor_Hokeys_Descr, - HK_ZOOM_AUTO ); + HK_ZOOM_AUTO, false ); m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, wxBitmap( zoom_auto_xpm ), msg ); m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Find components and texts" ), s_Board_Editor_Hokeys_Descr, - HK_FIND_ITEM ); + HK_FIND_ITEM, false ); m_HToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, wxBitmap( find_xpm ), msg ); @@ -740,14 +740,10 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) if( g_TabOneLayerMask[layer] & layer_mask ) { wxString msg = GetBoard()->GetLayerName( layer ); + msg << wxT(" "); msg = AddHotkeyName( msg, s_Board_Editor_Hokeys_Descr, - HK_SwitchLayer[layer] ); + HK_SwitchLayer[layer], false ); - /* we are using tabs in AddHotkeyName message. - * this is not handled by m_SelLayerBox. - * so we replace them by 3 spaces - */ - msg.Replace( wxT( "\t"), wxT( " " ) ); m_SelLayerBox->Append( msg ); //D(printf("appending layername=%s, ndx=%d, layer=%d\n", CONV_TO_UTF8(msg), listNdx, layer );)