From 04706d9d0278c602aff3f3480c0e8df7680f0438 Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Sun, 13 May 2018 20:22:11 -0700 Subject: [PATCH] pcbnew: Add placement hotkeys Assigns configurable hotkeys to the placement commands. Fixes: lp:1712629 * https://bugs.launchpad.net/kicad/+bug/1712629 Fixes: lp:1167895 * https://bugs.launchpad.net/kicad/+bug/1167895 --- pcbnew/hotkeys.cpp | 61 +++++++++++-- pcbnew/hotkeys.h | 16 +++- pcbnew/menubar_footprint_editor.cpp | 24 ++++-- pcbnew/menubar_pcb_editor.cpp | 129 ++++++++++++++-------------- pcbnew/tools/drawing_tool.cpp | 51 +++++++---- 5 files changed, 187 insertions(+), 94 deletions(-) diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index 7723abed2b..da9b0d1cbe 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -148,6 +148,24 @@ static EDA_HOTKEY HkDelete( _HKI( "Delete Track or Footprint" ), HK_DELETE, WXK_ static EDA_HOTKEY HkResetLocalCoord( _HKI( "Reset Local Coordinates" ), HK_RESET_LOCAL_COORD, ' ' ); static EDA_HOTKEY HkSwitchHighContrastMode( _HKI( "Toggle High Contrast Mode" ), HK_SWITCH_HIGHCONTRAST_MODE,'H'); +static EDA_HOTKEY HkAddLine( _HKI( "Draw Line" ), HK_ADD_LINE, 'L' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddPolygon( _HKI( "Draw Graphic Polygon" ), HK_ADD_POLYGON, 'P' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddCircle( _HKI( "Draw Circle" ), HK_ADD_CIRCLE, 'C' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddArc( _HKI( "Draw Arc" ), HK_ADD_ARC, 'A' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddText( _HKI( "Add Text" ), HK_ADD_TEXT, 'T' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddDimension( _HKI( "Add Dimension" ), HK_ADD_DIMENSION, 'H' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddFilledZone( _HKI( "Add Filled Zone" ), HK_ADD_ZONE, 'Z' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddFreeVia( _HKI( "Add Vias" ), HK_ADD_FREE_VIA, 'V' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddKeepout( _HKI( "Add Keepout Area" ), HK_ADD_KEEPOUT, 'K' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddZoneCutout( _HKI( "Add a Zone Cutout" ), HK_ADD_CUTOUT, 'C' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddSimilarZone( _HKI( "Add a Similar Zone" ), HK_ADD_SIMILAR_ZONE, '.' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddDXF( _HKI( "Place DXF" ), HK_ADD_DXF, 'D' + GR_KB_SHIFTCTRL ); +static EDA_HOTKEY HkAddAnchor( _HKI( "Place the Footprint Anchor" ), HK_ADD_ANCHOR, 'N' + GR_KB_SHIFTCTRL ); + +static EDA_HOTKEY HkIncreaseLineWidth( _HKI( "Increase Line Width" ), HK_INC_LINE_WIDTH, '+' + GR_KB_CTRL ); +static EDA_HOTKEY HkDecreaseLineWidth( _HKI( "Decrease Line Width" ), HK_DEC_LINE_WIDTH, '-' + GR_KB_CTRL ); + + static EDA_HOTKEY HkSetGridOrigin( _HKI( "Set Grid Origin" ), HK_SET_GRID_ORIGIN, 'S' ); static EDA_HOTKEY HkResetGridOrigin( _HKI( "Reset Grid Origin" ), HK_RESET_GRID_ORIGIN, 'Z' ); @@ -257,7 +275,7 @@ static EDA_HOTKEY HkRoutingOptions( _HKI( "Routing Options" ), HK_ROUTING_OPTION static EDA_HOTKEY HkCustomTrackWidth( _HKI( "Custom Track/Via Size" ), HK_CUSTOM_TRACK_WIDTH, 'Q' ); -static EDA_HOTKEY HkDpDimension( _HKI( "Differential Pair Dimensions" ), HK_DP_DIMENSIONS, 'P' ); +static EDA_HOTKEY HkDpDimension( _HKI( "Differential Pair Dimensions" ), HK_DP_DIMENSIONS, 'R' + GR_KB_SHIFTCTRL ); static EDA_HOTKEY HkViaSizeInc( _HKI( "Increase Via Size" ), HK_VIA_SIZE_INC, '\'' ); @@ -326,6 +344,18 @@ EDA_HOTKEY* board_edit_Hotkey_List[] = // Adding Items &HkPlaceItem, &HkAddModule, + &HkAddFreeVia, + &HkAddFilledZone, + &HkAddKeepout, + &HkAddZoneCutout, + &HkAddSimilarZone, + &HkAddLine, + &HkAddCircle, + &HkAddArc, + &HkAddPolygon, + &HkAddText, + &HkAddDimension, + &HkAddDXF, // Routing and options during routing &HkAddNewTrack, @@ -422,10 +452,31 @@ EDA_HOTKEY* board_edit_Hotkey_List[] = // List of hotkey descriptors for the module editor EDA_HOTKEY* module_edit_Hotkey_List[] = { - &HkMoveItem, &HkRotateItem, &HkEditBoardItem, - &HkMoveItemExact, &HkDuplicateItem, &HkDuplicateItemAndIncrement, - &HkCreateArray, &HkDelete, &HkSwitchHighContrastMode, - &HkCanvasDefault, &HkCanvasCairo, &HkCanvasOpenGL, + // Add Items + &HkAddLine, + &HkAddCircle, + &HkAddArc, + &HkAddPolygon, + &HkAddText, + &HkAddAnchor, + + // Delete/Move + &HkDelete, + &HkMoveItem, + &HkMoveItemExact, + &HkRotateItem, + + // Edit/Duplicate + &HkEditBoardItem, + &HkDuplicateItem, + &HkDuplicateItemAndIncrement, + &HkCreateArray, + + // Display + &HkSwitchHighContrastMode, + &HkCanvasDefault, + &HkCanvasCairo, + &HkCanvasOpenGL, NULL }; diff --git a/pcbnew/hotkeys.h b/pcbnew/hotkeys.h index 4225661d06..f4e6fa4468 100644 --- a/pcbnew/hotkeys.h +++ b/pcbnew/hotkeys.h @@ -99,7 +99,21 @@ enum hotkey_id_commnand { HK_SWITCH_LAYER_TO_INNER13, HK_SWITCH_LAYER_TO_INNER14, HK_ADD_MODULE, - HK_SLIDE_TRACK, + HK_ADD_LINE, + HK_ADD_POLYGON, + HK_ADD_CIRCLE, + HK_ADD_ARC, + HK_ADD_TEXT, + HK_ADD_DIMENSION, + HK_ADD_ZONE, + HK_ADD_FREE_VIA, + HK_ADD_KEEPOUT, + HK_ADD_CUTOUT, + HK_ADD_SIMILAR_ZONE, + HK_ADD_DXF, + HK_ADD_ANCHOR, + HK_INC_LINE_WIDTH, + HK_DEC_LINE_WIDTH, HK_SWITCH_HIGHCONTRAST_MODE, HK_HIGHCONTRAST_INC, HK_HIGHCONTRAST_DEC, diff --git a/pcbnew/menubar_footprint_editor.cpp b/pcbnew/menubar_footprint_editor.cpp index 39b6989d94..95710ee90c 100644 --- a/pcbnew/menubar_footprint_editor.cpp +++ b/pcbnew/menubar_footprint_editor.cpp @@ -357,36 +357,41 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() placeMenu->AppendSeparator(); // Text + text = AddHotkeyName( _( "&Text" ), m_hotkeysDescrList, HK_ADD_TEXT ); AddMenuItem( placeMenu, ID_MODEDIT_TEXT_TOOL, - _( "&Text" ), _( "Add graphic text" ), + text, _( "Add graphic text" ), KiBitmap( text_xpm ) ); // Arc + text = AddHotkeyName( _( "&Arc" ), m_hotkeysDescrList, HK_ADD_ARC ); AddMenuItem( placeMenu, ID_MODEDIT_ARC_TOOL, - _( "&Arc" ), _( "Add graphic arc" ), + text, _( "Add graphic arc" ), KiBitmap( add_arc_xpm ) ); // Circle + text = AddHotkeyName( _( "&Circle" ), m_hotkeysDescrList, HK_ADD_CIRCLE ); AddMenuItem( placeMenu, ID_MODEDIT_CIRCLE_TOOL, - _( "&Circle" ), _( "Add graphic circle" ), + text, _( "Add graphic circle" ), KiBitmap( add_circle_xpm ) ); // Line + text = AddHotkeyName( _( "&Line" ), m_hotkeysDescrList, HK_ADD_LINE ); AddMenuItem( placeMenu, ID_MODEDIT_LINE_TOOL, - _( "&Line" ), _( "Add graphic line" ), + text, _( "Add graphic line" ), KiBitmap( add_graphical_segments_xpm ) ); // Polygon + text = AddHotkeyName( _( "&Polygon" ), m_hotkeysDescrList, HK_ADD_POLYGON ); AddMenuItem( placeMenu, ID_MODEDIT_POLYGON_TOOL, - _( "&Polygon" ), _( "Add graphic polygon" ), + text, _( "Add graphic polygon" ), KiBitmap( add_graphical_polygon_xpm ) ); placeMenu->AppendSeparator(); // Anchor + text = AddHotkeyName( _( "A&nchor" ), m_hotkeysDescrList, HK_ADD_ANCHOR ); AddMenuItem( placeMenu, ID_MODEDIT_ANCHOR_TOOL, - _( "A&nchor" ), - _( "Place footprint reference anchor" ), + text, _( "Place footprint reference anchor" ), KiBitmap( anchor_xpm ) ); // Origin @@ -399,9 +404,10 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() //----- Inspect menu --------------------- wxMenu* inspectMenu = new wxMenu; + + text = AddHotkeyName( _( "&Measure" ), m_hotkeysDescrList, HK_MEASURE_TOOL ); AddMenuItem( inspectMenu, ID_MODEDIT_MEASUREMENT_TOOL, - _( "&Measure" ), - _( "Measure distance" ), + text, _( "Measure distance" ), KiBitmap( measurement_xpm ) ); //----- Tools menu --------------------- diff --git a/pcbnew/menubar_pcb_editor.cpp b/pcbnew/menubar_pcb_editor.cpp index f06f0b2ceb..e50ee29805 100644 --- a/pcbnew/menubar_pcb_editor.cpp +++ b/pcbnew/menubar_pcb_editor.cpp @@ -213,19 +213,19 @@ void preparePreferencesMenu( PCB_EDIT_FRAME* aFrame, wxMenu* aParentMenu ) _( "Graphics acceleration, grid, cursor, annotation and clearance outline settings." ), KiBitmap( display_options_xpm ) ); - text = AddHotkeyName( _( "Legacy Tool&set" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Legacy Tool&set" ), g_Board_Editor_Hotkeys_Descr, HK_CANVAS_LEGACY ); AddMenuItem( aParentMenu, ID_MENU_CANVAS_LEGACY, text, _( "Use Legacy Toolset (not all features will be available)" ), KiBitmap( tools_xpm ), wxITEM_RADIO ); - text = AddHotkeyName( _( "Modern Toolset (&Accelerated)" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Modern Toolset (&Accelerated)" ), g_Board_Editor_Hotkeys_Descr, HK_CANVAS_OPENGL ); AddMenuItem( aParentMenu, ID_MENU_CANVAS_OPENGL, text, _( "Use Modern Toolset with hardware-accelerated graphics (recommended)" ), KiBitmap( tools_xpm ), wxITEM_RADIO ); - text = AddHotkeyName( _( "Modern Toolset (Fallba&ck)" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Modern Toolset (Fallba&ck)" ), g_Board_Editor_Hotkeys_Descr, HK_CANVAS_CAIRO ); AddMenuItem( aParentMenu, ID_MENU_CANVAS_CAIRO, text, _( "Use Modern Toolset with software graphics (fall-back)" ), @@ -258,13 +258,13 @@ void prepareRouteMenu( wxMenu* aParentMenu ) { wxString text; - text = AddHotkeyName( _( "&Single Track" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&Single Track" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_NEW_TRACK, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_TRACK_BUTT, text, _( "Interactively route single track" ), KiBitmap( add_tracks_xpm ) ); - text = AddHotkeyName( _( "&Differential Pair" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&Differential Pair" ), g_Board_Editor_Hotkeys_Descr, HK_ROUTE_DIFF_PAIR, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_DIFF_PAIR_BUTT, text, _( "Interactively route differential pair" ), @@ -272,19 +272,19 @@ void prepareRouteMenu( wxMenu* aParentMenu ) aParentMenu->AppendSeparator(); - text = AddHotkeyName( _( "&Tune Track Length" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&Tune Track Length" ), g_Board_Editor_Hotkeys_Descr, HK_ROUTE_TUNE_SINGLE, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_TUNE_SINGLE_TRACK_LEN_BUTT, text, _( "Tune length of single track" ), KiBitmap( ps_tune_length_xpm ) ); - text = AddHotkeyName( _( "Tune Differential Pair &Length" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Tune Differential Pair &Length" ), g_Board_Editor_Hotkeys_Descr, HK_ROUTE_TUNE_DIFF_PAIR, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_TUNE_DIFF_PAIR_LEN_BUTT, text, _( "Tune length of differential pair" ), KiBitmap( ps_diff_pair_tune_length_xpm ) ); - text = AddHotkeyName( _( "Tune Differential Pair &Skew/Phase" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Tune Differential Pair &Skew/Phase" ), g_Board_Editor_Hotkeys_Descr, HK_ROUTE_TUNE_SKEW, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_TUNE_DIFF_PAIR_SKEW_BUTT, text, _( "Tune skew/phase of a differential pair" ), @@ -292,7 +292,7 @@ void prepareRouteMenu( wxMenu* aParentMenu ) aParentMenu->AppendSeparator(); - text = AddHotkeyName( _( "&Interactive Router Settings..." ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&Interactive Router Settings..." ), g_Board_Editor_Hotkeys_Descr, HK_ROUTING_OPTIONS, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_MENU_INTERACTIVE_ROUTER_SETTINGS, text, _( "Configure interactive router" ), @@ -303,13 +303,15 @@ void prepareRouteMenu( wxMenu* aParentMenu ) // Build the inspect menu void prepareInspectMenu( wxMenu* aParentMenu ) { + wxString text; + AddMenuItem( aParentMenu, ID_MENU_LIST_NETS, _( "&List Nets" ), _( "View list of nets with names and IDs" ), KiBitmap( list_nets_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_MEASUREMENT_TOOL, - _( "&Measure" ), + text = AddHotkeyName( _( "&Measure" ), g_Board_Editor_Hotkeys_Descr, HK_MEASURE_TOOL ); + AddMenuItem( aParentMenu, ID_PCB_MEASUREMENT_TOOL, text, _( "Measure distance" ), KiBitmap( measurement_xpm ) ); @@ -350,51 +352,50 @@ void preparePlaceMenu( wxMenu* aParentMenu ) { wxString text; - text = AddHotkeyName( _( "&Footprint" ), g_Pcbnew_Editor_Hotkeys_Descr, - HK_ADD_MODULE ); - AddMenuItem( aParentMenu, ID_PCB_MODULE_BUTT, text, - _( "Add footprint" ), KiBitmap( module_xpm ) ); + text = AddHotkeyName( _( "&Footprint" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_MODULE ); + AddMenuItem( aParentMenu, ID_PCB_MODULE_BUTT, text, _( "Add footprint" ), + KiBitmap( module_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_DRAW_VIA_BUTT, - _( "&Via" ), - _( "Add via" ), KiBitmap( add_via_xpm ) ); + text = AddHotkeyName( _( "&Via" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_FREE_VIA ); + AddMenuItem( aParentMenu, ID_PCB_DRAW_VIA_BUTT, text, _( "Add via" ), + KiBitmap( add_via_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_ZONES_BUTT, - _( "&Zone" ), _( "Add filled zone" ), KiBitmap( add_zone_xpm ) ); + text = AddHotkeyName( _( "&Zone" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_ZONE ); + AddMenuItem( aParentMenu, ID_PCB_ZONES_BUTT, text, _( "Add filled zone" ), + KiBitmap( add_zone_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_KEEPOUT_AREA_BUTT, - _( "&Keepout Area" ), _( "Add keepout area" ), KiBitmap( add_keepout_area_xpm ) ); + text = AddHotkeyName( _( "&Keepout Area" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_KEEPOUT ); + AddMenuItem( aParentMenu, ID_PCB_KEEPOUT_AREA_BUTT, text, _( "Add keepout area" ), + KiBitmap( add_keepout_area_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_ADD_TEXT_BUTT, - _( "Te&xt" ), _( "Add text on copper layers or graphic text" ), - KiBitmap( text_xpm ) ); + text = AddHotkeyName( _( "Te&xt" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_TEXT ); + AddMenuItem( aParentMenu, ID_PCB_ADD_TEXT_BUTT, text, + _( "Add text on copper layers or graphic text" ), KiBitmap( text_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_ARC_BUTT, - _( "&Arc" ), _( "Add graphic arc" ),KiBitmap( add_arc_xpm ) ); + text = AddHotkeyName( _( "&Arc" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_ARC ); + AddMenuItem( aParentMenu, ID_PCB_ARC_BUTT, text, _( "Add graphic arc" ), + KiBitmap( add_arc_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_CIRCLE_BUTT, - _( "&Circle" ), _( "Add graphic circle" ), + text = AddHotkeyName( _( "&Circle" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_CIRCLE ); + AddMenuItem( aParentMenu, ID_PCB_CIRCLE_BUTT, text, _( "Add graphic circle" ), KiBitmap( add_circle_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_ADD_LINE_BUTT, - _( "&Line" ), - _( "Add graphic line" ), + text = AddHotkeyName( _( "&Line" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_LINE ); + AddMenuItem( aParentMenu, ID_PCB_ADD_LINE_BUTT, text, _( "Add graphic line" ), KiBitmap( add_graphical_segments_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_ADD_POLYGON_BUTT, - _( "&Polygon" ), - _( "Add graphic polygon" ), - KiBitmap( add_graphical_polygon_xpm ) ); + text = AddHotkeyName( _( "&Polygon" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_POLYGON ); + AddMenuItem( aParentMenu, ID_PCB_ADD_POLYGON_BUTT, text, _( "Add graphic polygon" ), + KiBitmap( add_graphical_polygon_xpm ) ); aParentMenu->AppendSeparator(); - AddMenuItem( aParentMenu, ID_PCB_DIMENSION_BUTT, - _( "&Dimension" ), _( "Add dimension" ), + text = AddHotkeyName( _( "&Dimension" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_DIMENSION ); + AddMenuItem( aParentMenu, ID_PCB_DIMENSION_BUTT, text, _( "Add dimension" ), KiBitmap( add_dimension_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_TARGET_BUTT, - _( "La&yer Alignment Target" ), _( "Add layer alignment target" ), - KiBitmap( add_pcb_target_xpm ) ); + AddMenuItem( aParentMenu, ID_PCB_TARGET_BUTT, _( "La&yer Alignment Target" ), + _( "Add layer alignment target" ), KiBitmap( add_pcb_target_xpm ) ); aParentMenu->AppendSeparator(); @@ -478,7 +479,7 @@ void prepareHelpMenu( wxMenu* aParentMenu ) _( "Open \"Getting Started in KiCad\" guide for beginners" ), KiBitmap( help_xpm ) ); - wxString text = AddHotkeyName( _( "&List Hotkeys..." ), g_Pcbnew_Editor_Hotkeys_Descr, HK_HELP ); + wxString text = AddHotkeyName( _( "&List Hotkeys..." ), g_Board_Editor_Hotkeys_Descr, HK_HELP ); AddMenuItem( aParentMenu, ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST, text, _( "Display current hotkeys list and corresponding commands" ), @@ -505,27 +506,27 @@ void prepareEditMenu( wxMenu* aParentMenu, bool aUseGal ) { wxString text; - text = AddHotkeyName( _( "&Undo" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_UNDO ); + text = AddHotkeyName( _( "&Undo" ), g_Board_Editor_Hotkeys_Descr, HK_UNDO ); AddMenuItem( aParentMenu, wxID_UNDO, text, HELP_UNDO, KiBitmap( undo_xpm ) ); - text = AddHotkeyName( _( "&Redo" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_REDO ); + text = AddHotkeyName( _( "&Redo" ), g_Board_Editor_Hotkeys_Descr, HK_REDO ); AddMenuItem( aParentMenu, wxID_REDO, text, HELP_REDO, KiBitmap( redo_xpm ) ); aParentMenu->AppendSeparator(); if( aUseGal ) { - text = AddHotkeyName( _( "&Cut" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_EDIT_CUT ); + text = AddHotkeyName( _( "&Cut" ), g_Board_Editor_Hotkeys_Descr, HK_EDIT_CUT ); AddMenuItem( aParentMenu, ID_EDIT_CUT, text, _( "Cuts the selected item(s) to the Clipboard" ), KiBitmap( cut_xpm ) ); - text = AddHotkeyName( _( "&Copy" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_EDIT_COPY ); + text = AddHotkeyName( _( "&Copy" ), g_Board_Editor_Hotkeys_Descr, HK_EDIT_COPY ); AddMenuItem( aParentMenu, ID_EDIT_COPY, text, _( "Copies the selected item(s) to the Clipboard" ), KiBitmap( copy_xpm ) ); - text = AddHotkeyName( _( "&Paste" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_EDIT_PASTE ); + text = AddHotkeyName( _( "&Paste" ), g_Board_Editor_Hotkeys_Descr, HK_EDIT_PASTE ); AddMenuItem( aParentMenu, ID_EDIT_PASTE, text, _( "Pastes item(s) from the Clipboard" ), KiBitmap( paste_xpm ) ); @@ -537,7 +538,7 @@ void prepareEditMenu( wxMenu* aParentMenu, bool aUseGal ) aParentMenu->AppendSeparator(); - text = AddHotkeyName( _( "&Find..." ), g_Pcbnew_Editor_Hotkeys_Descr, HK_FIND_ITEM ); + text = AddHotkeyName( _( "&Find..." ), g_Board_Editor_Hotkeys_Descr, HK_FIND_ITEM ); AddMenuItem( aParentMenu, ID_FIND_ITEMS, text, HELP_FIND , KiBitmap( find_xpm ) ); aParentMenu->AppendSeparator(); @@ -592,7 +593,7 @@ void prepareViewMenu( wxMenu* aParentMenu, bool aUseGal ) _( "Open the Library Browser" ), KiBitmap( modview_icon_xpm ) ); - text = AddHotkeyName( _( "&3D Viewer" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_3D_VIEWER ); + text = AddHotkeyName( _( "&3D Viewer" ), g_Board_Editor_Hotkeys_Descr, HK_3D_VIEWER ); AddMenuItem( aParentMenu, ID_MENU_PCB_SHOW_3D_FRAME, text, _( "Show board in 3D viewer" ), KiBitmap( three_d_xpm ) ); @@ -610,24 +611,24 @@ void prepareViewMenu( wxMenu* aParentMenu, bool aUseGal ) * in other words HK_ZOOM_IN and HK_ZOOM_OUT *are NOT* accelerators * for Zoom in and Zoom out sub menus */ - text = AddHotkeyName( _( "Zoom &In" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Zoom &In" ), g_Board_Editor_Hotkeys_Descr, HK_ZOOM_IN, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_ZOOM_IN, text, HELP_ZOOM_IN, KiBitmap( zoom_in_xpm ) ); - text = AddHotkeyName( _( "Zoom &Out" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Zoom &Out" ), g_Board_Editor_Hotkeys_Descr, HK_ZOOM_OUT, IS_ACCELERATOR ); AddMenuItem( aParentMenu, ID_ZOOM_OUT, text, HELP_ZOOM_OUT, KiBitmap( zoom_out_xpm ) ); - text = AddHotkeyName( _( "Zoom to &Fit" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Zoom to &Fit" ), g_Board_Editor_Hotkeys_Descr, HK_ZOOM_AUTO ); AddMenuItem( aParentMenu, ID_ZOOM_PAGE, text, HELP_ZOOM_FIT, KiBitmap( zoom_fit_in_page_xpm ) ); - text = AddHotkeyName( _( "Zoom to Selection" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Zoom to Selection" ), g_Board_Editor_Hotkeys_Descr, HK_ZOOM_SELECTION ); AddMenuItem( aParentMenu, ID_ZOOM_SELECTION, text, KiBitmap( zoom_area_xpm ), wxITEM_CHECK ); - text = AddHotkeyName( _( "&Redraw" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_ZOOM_REDRAW ); + text = AddHotkeyName( _( "&Redraw" ), g_Board_Editor_Hotkeys_Descr, HK_ZOOM_REDRAW ); AddMenuItem( aParentMenu, ID_ZOOM_REDRAW, text, HELP_ZOOM_REDRAW, KiBitmap( zoom_redraw_xpm ) ); @@ -707,7 +708,7 @@ void prepareViewMenu( wxMenu* aParentMenu, bool aUseGal ) _( "Sketch &Vias" ), _( "Show vias in outline mode" ), KiBitmap( via_sketch_xpm ), wxITEM_CHECK ); - text = AddHotkeyName( _( "Sketch &Tracks" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "Sketch &Tracks" ), g_Board_Editor_Hotkeys_Descr, HK_SWITCH_TRACK_DISPLAY_MODE ); AddMenuItem( drawingModeSubMenu, ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, text, _( "Show tracks in outline mode" ), @@ -733,7 +734,7 @@ void prepareViewMenu( wxMenu* aParentMenu, bool aUseGal ) // Contrast Mode Submenu wxMenu* contrastModeSubMenu = new wxMenu; - text = AddHotkeyName( _( "&High Contrast Mode" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&High Contrast Mode" ), g_Board_Editor_Hotkeys_Descr, HK_SWITCH_HIGHCONTRAST_MODE ); AddMenuItem( contrastModeSubMenu, ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE, text, _( "Use high contrast display mode" ), @@ -741,13 +742,13 @@ void prepareViewMenu( wxMenu* aParentMenu, bool aUseGal ) contrastModeSubMenu->AppendSeparator(); - text = AddHotkeyName( _( "&Decrease Layer Opacity" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&Decrease Layer Opacity" ), g_Board_Editor_Hotkeys_Descr, HK_DEC_LAYER_ALPHA ); AddMenuItem( contrastModeSubMenu, ID_DEC_LAYER_ALPHA, text, _( "Make the current layer more transparent" ), KiBitmap( contrast_mode_xpm ) ); - text = AddHotkeyName( _( "&Increase Layer Opacity" ), g_Pcbnew_Editor_Hotkeys_Descr, + text = AddHotkeyName( _( "&Increase Layer Opacity" ), g_Board_Editor_Hotkeys_Descr, HK_INC_LAYER_ALPHA ); AddMenuItem( contrastModeSubMenu, ID_INC_LAYER_ALPHA, text, _( "Make the current layer less transparent" ), @@ -794,12 +795,12 @@ void prepareFilesMenu( wxMenu* aParentMenu, bool aIsOutsideProject ) if( aIsOutsideProject ) { - text = AddHotkeyName( _( "&New" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_NEW ); + text = AddHotkeyName( _( "&New" ), g_Board_Editor_Hotkeys_Descr, HK_NEW ); AddMenuItem( aParentMenu, ID_NEW_BOARD, text, _( "Create new board" ), KiBitmap( new_board_xpm ) ); - text = AddHotkeyName( _( "&Open..." ), g_Pcbnew_Editor_Hotkeys_Descr, HK_OPEN ); + text = AddHotkeyName( _( "&Open..." ), g_Board_Editor_Hotkeys_Descr, HK_OPEN ); AddMenuItem( aParentMenu, ID_LOAD_FILE, text, _( "Open existing board" ), KiBitmap( open_brd_file_xpm ) ); @@ -812,7 +813,7 @@ void prepareFilesMenu( wxMenu* aParentMenu, bool aIsOutsideProject ) aParentMenu->AppendSeparator(); } - text = AddHotkeyName( _( "&Save" ), g_Pcbnew_Editor_Hotkeys_Descr, HK_SAVE ); + text = AddHotkeyName( _( "&Save" ), g_Board_Editor_Hotkeys_Descr, HK_SAVE ); AddMenuItem( aParentMenu, ID_SAVE_BOARD, text, _( "Save current board" ), KiBitmap( save_xpm ) ); @@ -824,7 +825,7 @@ void prepareFilesMenu( wxMenu* aParentMenu, bool aIsOutsideProject ) // when not under a project mgr, we are free to change filenames, cwd ... if( Kiface().IsSingle() ) // not when under a project mgr (pcbnew is run as stand alone) { - text = AddHotkeyName( _( "Sa&ve As..." ), g_Pcbnew_Editor_Hotkeys_Descr, HK_SAVEAS ); + text = AddHotkeyName( _( "Sa&ve As..." ), g_Board_Editor_Hotkeys_Descr, HK_SAVEAS ); AddMenuItem( aParentMenu, ID_SAVE_BOARD_AS, text, _( "Save current board with new name" ), KiBitmap( save_as_xpm ) ); @@ -833,7 +834,7 @@ void prepareFilesMenu( wxMenu* aParentMenu, bool aIsOutsideProject ) // but do not change the current board file name else { - text = AddHotkeyName( _( "Sa&ve Copy As..." ), g_Pcbnew_Editor_Hotkeys_Descr, HK_SAVEAS ); + text = AddHotkeyName( _( "Sa&ve Copy As..." ), g_Board_Editor_Hotkeys_Descr, HK_SAVEAS ); AddMenuItem( aParentMenu, ID_COPY_BOARD_AS, text, _( "Save copy of the current board" ), KiBitmap( save_as_xpm ) ); @@ -932,7 +933,7 @@ void prepareFilesMenu( wxMenu* aParentMenu, bool aIsOutsideProject ) _( "Settings for sheet size and frame references" ), KiBitmap( sheetset_xpm ) ); - text = AddHotkeyName( _( "&Print..." ), g_Pcbnew_Editor_Hotkeys_Descr, HK_PRINT ); + text = AddHotkeyName( _( "&Print..." ), g_Board_Editor_Hotkeys_Descr, HK_PRINT ); AddMenuItem( aParentMenu, wxID_PRINT, text, _( "Print board" ), KiBitmap( print_button_xpm ) ); diff --git a/pcbnew/tools/drawing_tool.cpp b/pcbnew/tools/drawing_tool.cpp index d2a89feec9..bba26afe3e 100644 --- a/pcbnew/tools/drawing_tool.cpp +++ b/pcbnew/tools/drawing_tool.cpp @@ -67,66 +67,66 @@ using SCOPED_DRAW_MODE = SCOPED_SET_RESET; // Drawing tool actions TOOL_ACTION PCB_ACTIONS::drawLine( "pcbnew.InteractiveDrawing.line", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_LINE ), _( "Draw Line" ), _( "Draw a line" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawGraphicPolygon( "pcbnew.InteractiveDrawing.graphicPolygon", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_POLYGON ), _( "Draw Graphic Polygon" ), _( "Draw a graphic polygon" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawCircle( "pcbnew.InteractiveDrawing.circle", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_CIRCLE ), _( "Draw Circle" ), _( "Draw a circle" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawArc( "pcbnew.InteractiveDrawing.arc", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_ARC ), _( "Draw Arc" ), _( "Draw an arc" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::placeText( "pcbnew.InteractiveDrawing.text", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_LINE ), _( "Add Text" ), _( "Add a text" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawDimension( "pcbnew.InteractiveDrawing.dimension", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_DIMENSION ), _( "Add Dimension" ), _( "Add a dimension" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawZone( "pcbnew.InteractiveDrawing.zone", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_ZONE ), _( "Add Filled Zone" ), _( "Add a filled zone" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawVia( "pcbnew.InteractiveDrawing.via", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_FREE_VIA ), _( "Add Vias" ), _( "Add free-standing vias" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawZoneKeepout( "pcbnew.InteractiveDrawing.keepout", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_KEEPOUT ), _( "Add Keepout Area" ), _( "Add a keepout area" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawZoneCutout( "pcbnew.InteractiveDrawing.zoneCutout", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_CUTOUT ), _( "Add a Zone Cutout" ), _( "Add a cutout area of an existing zone" ), add_zone_cutout_xpm, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::drawSimilarZone( "pcbnew.InteractiveDrawing.similarZone", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_SIMILAR_ZONE ), _( "Add a Similar Zone" ), _( "Add a zone with the same settings as an existing zone" ), add_zone_xpm, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::placeDXF( "pcbnew.InteractiveDrawing.placeDXF", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_DXF ), "Place DXF", "", NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::setAnchor( "pcbnew.InteractiveDrawing.setAnchor", - AS_GLOBAL, 0, + AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_ADD_ANCHOR ), _( "Place the Footprint Anchor" ), _( "Place the footprint anchor" ), NULL, AF_ACTIVATE ); TOOL_ACTION PCB_ACTIONS::incWidth( "pcbnew.InteractiveDrawing.incWidth", - AS_CONTEXT, '+', + AS_CONTEXT, TOOL_ACTION::LegacyHotKey( HK_INC_LINE_WIDTH ), _( "Increase Line Width" ), _( "Increase the line width" ) ); TOOL_ACTION PCB_ACTIONS::decWidth( "pcbnew.InteractiveDrawing.decWidth", - AS_CONTEXT, '-', + AS_CONTEXT, TOOL_ACTION::LegacyHotKey( HK_DEC_LINE_WIDTH ), _( "Decrease Line Width" ), _( "Decrease the line width" ) ); TOOL_ACTION PCB_ACTIONS::arcPosture( "pcbnew.InteractiveDrawing.arcPosture", @@ -218,6 +218,9 @@ DRAWING_TOOL::MODE DRAWING_TOOL::GetDrawingMode() const int DRAWING_TOOL::DrawLine( const TOOL_EVENT& aEvent ) { + if( m_editModules && !m_frame->GetModel() ) + return 0; + BOARD_ITEM_CONTAINER* parent = m_frame->GetModel(); DRAWSEGMENT* line = m_editModules ? new EDGE_MODULE( (MODULE*) parent ) : new DRAWSEGMENT; @@ -254,6 +257,9 @@ int DRAWING_TOOL::DrawLine( const TOOL_EVENT& aEvent ) int DRAWING_TOOL::DrawCircle( const TOOL_EVENT& aEvent ) { + if( m_editModules && !m_frame->GetModel() ) + return 0; + BOARD_ITEM_CONTAINER* parent = m_frame->GetModel(); DRAWSEGMENT* circle = m_editModules ? new EDGE_MODULE( (MODULE*) parent ) : new DRAWSEGMENT; BOARD_COMMIT commit( m_frame ); @@ -283,6 +289,9 @@ int DRAWING_TOOL::DrawCircle( const TOOL_EVENT& aEvent ) int DRAWING_TOOL::DrawArc( const TOOL_EVENT& aEvent ) { + if( m_editModules && !m_frame->GetModel() ) + return 0; + BOARD_ITEM_CONTAINER* parent = m_frame->GetModel(); DRAWSEGMENT* arc = m_editModules ? new EDGE_MODULE( (MODULE*) parent ) : new DRAWSEGMENT; BOARD_COMMIT commit( m_frame ); @@ -312,6 +321,9 @@ int DRAWING_TOOL::DrawArc( const TOOL_EVENT& aEvent ) int DRAWING_TOOL::PlaceText( const TOOL_EVENT& aEvent ) { + if( m_editModules && !m_frame->GetModel() ) + return 0; + BOARD_ITEM* text = NULL; const BOARD_DESIGN_SETTINGS& dsnSettings = m_frame->GetDesignSettings(); SELECTION_TOOL* selTool = m_toolMgr->GetTool(); @@ -474,6 +486,9 @@ void DRAWING_TOOL::constrainDimension( DIMENSION* dimension ) int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent ) { + if( m_editModules && !m_frame->GetModel() ) + return 0; + DIMENSION* dimension = NULL; BOARD_COMMIT commit( m_frame ); int maxThickness; @@ -691,6 +706,9 @@ int DRAWING_TOOL::DrawZoneCutout( const TOOL_EVENT& aEvent ) int DRAWING_TOOL::DrawGraphicPolygon( const TOOL_EVENT& aEvent ) { + if( m_editModules && !m_frame->GetModel() ) + return 0; + SCOPED_DRAW_MODE scopedDrawMode( m_mode, MODE::GRAPHIC_POLYGON ); m_frame->SetToolID( m_editModules ? ID_MODEDIT_POLYGON_TOOL : ID_PCB_ADD_POLYGON_BUTT, @@ -893,6 +911,9 @@ int DRAWING_TOOL::SetAnchor( const TOOL_EVENT& aEvent ) { assert( m_editModules ); + if( !m_frame->GetModel() ) + return 0; + SCOPED_DRAW_MODE scopedDrawMode( m_mode, MODE::ANCHOR ); Activate();