From 64fa400b196dfb879207c5cece70637b8d3aad04 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sat, 19 Sep 2020 17:12:00 +0100 Subject: [PATCH] Ease translation a bit. Also improves the SNR and consistency of the menu item text. For instance, a position is rarely useful, while relative sizes can be. Also removes some unnecessary repitition, such as "Graphic Rectangle" when "Rectangle" communicates the necessary information. --- common/page_layout/ws_draw_item.cpp | 31 +++++-------- eeschema/lib_arc.cpp | 4 +- eeschema/lib_circle.cpp | 4 +- eeschema/lib_field.cpp | 4 +- eeschema/lib_pin.cpp | 19 ++++++-- eeschema/lib_polyline.cpp | 4 +- eeschema/lib_rectangle.cpp | 8 ++-- eeschema/sch_component.cpp | 6 +-- eeschema/sch_field.cpp | 2 +- eeschema/sch_line.cpp | 39 ++++++++++------ eeschema/sch_sheet.cpp | 3 +- eeschema/sch_text.cpp | 6 +-- include/class_board_item.h | 2 +- pcbnew/class_board_item.cpp | 27 +++++------ pcbnew/class_dimension.cpp | 4 +- pcbnew/class_drawsegment.cpp | 2 +- pcbnew/class_edge_mod.cpp | 3 +- pcbnew/class_module.cpp | 2 +- pcbnew/class_pad.cpp | 6 +-- pcbnew/class_pcb_group.cpp | 8 ++-- pcbnew/class_pcb_target.cpp | 2 +- pcbnew/class_pcb_text.cpp | 2 +- pcbnew/class_text_mod.cpp | 5 +-- pcbnew/class_track.cpp | 69 ++++++++++------------------- pcbnew/class_track.h | 3 ++ 25 files changed, 124 insertions(+), 141 deletions(-) diff --git a/common/page_layout/ws_draw_item.cpp b/common/page_layout/ws_draw_item.cpp index b444e84030..f1fc8faedc 100644 --- a/common/page_layout/ws_draw_item.cpp +++ b/common/page_layout/ws_draw_item.cpp @@ -182,10 +182,8 @@ bool WS_DRAW_ITEM_TEXT::HitTest( const EDA_RECT& aRect, bool aContains, int aAcc wxString WS_DRAW_ITEM_TEXT::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Text %s at (%s, %s)" ), - GetShownText(), - MessageTextFromValue( aUnits, GetTextPos().x ), - MessageTextFromValue( aUnits, GetTextPos().y ) ); + return wxString::Format( _( "Text \"%s\"" ), + GetShownText() ); } @@ -288,9 +286,7 @@ bool WS_DRAW_ITEM_POLYPOLYGONS::HitTest( const EDA_RECT& aRect, bool aContained, wxString WS_DRAW_ITEM_POLYPOLYGONS::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Imported shape at (%s, %s)" ), - MessageTextFromValue( aUnits, GetPosition().x ), - MessageTextFromValue( aUnits, GetPosition().y ) ); + return wxString::Format( _( "Imported Shape" ) ); } @@ -349,11 +345,9 @@ bool WS_DRAW_ITEM_RECT::HitTest( const wxPoint& aPosition, int aAccuracy ) const wxString WS_DRAW_ITEM_RECT::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Rectangle from (%s, %s) to (%s, %s)" ), - MessageTextFromValue( aUnits, GetStart().x ), - MessageTextFromValue( aUnits, GetStart().y ), - MessageTextFromValue( aUnits, GetEnd().x ), - MessageTextFromValue( aUnits, GetEnd().y ) ); + return wxString::Format( _( "Rectangle, width %s height %s" ), + MessageTextFromValue( aUnits, std::abs( GetStart().x - GetEnd().x ) ), + MessageTextFromValue( aUnits, std::abs( GetStart().y - GetEnd().y ) ) ); } @@ -384,11 +378,8 @@ bool WS_DRAW_ITEM_LINE::HitTest( const wxPoint& aPosition, int aAccuracy ) const wxString WS_DRAW_ITEM_LINE::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Line from (%s, %s) to (%s, %s)" ), - MessageTextFromValue( aUnits, GetStart().x ), - MessageTextFromValue( aUnits, GetStart().y ), - MessageTextFromValue( aUnits, GetEnd().x ), - MessageTextFromValue( aUnits, GetEnd().y ) ); + return wxString::Format( _( "Line, length %s" ), + MessageTextFromValue( aUnits, EuclideanNorm( GetStart() - GetEnd() ) ) ); } @@ -437,15 +428,13 @@ bool WS_DRAW_ITEM_BITMAP::HitTest( const EDA_RECT& aRect, bool aContains, int aA wxString WS_DRAW_ITEM_BITMAP::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Image at (%s, %s)" ), - MessageTextFromValue( aUnits, GetPosition().x ), - MessageTextFromValue( aUnits, GetPosition().y ) ); + return wxString::Format( _( "Image" ) ); } wxString WS_DRAW_ITEM_PAGE::GetSelectMenuText( EDA_UNITS aUnits ) const { - wxString txt( "Page limits" ); + wxString txt( "Page Limits" ); return txt; } diff --git a/eeschema/lib_arc.cpp b/eeschema/lib_arc.cpp index 057c7dc735..b2b89840a0 100644 --- a/eeschema/lib_arc.cpp +++ b/eeschema/lib_arc.cpp @@ -412,9 +412,7 @@ void LIB_ARC::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vectorGetShownText() ); + return wxString::Format( _( "Symbol %s [%s]" ), + GetField( REFERENCE )->GetShownText(), + GetLibId().GetLibItemName().wx_str() ); } diff --git a/eeschema/sch_field.cpp b/eeschema/sch_field.cpp index 1ef9c18817..e8ff1acdea 100644 --- a/eeschema/sch_field.cpp +++ b/eeschema/sch_field.cpp @@ -429,7 +429,7 @@ void SCH_FIELD::Rotate( wxPoint aPosition ) wxString SCH_FIELD::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Field %s (%s)" ), + return wxString::Format( "%s \"%s\"", GetName(), ShortenedShownText() ); } diff --git a/eeschema/sch_line.cpp b/eeschema/sch_line.cpp index eb14c8bd0d..fa5c7d1497 100644 --- a/eeschema/sch_line.cpp +++ b/eeschema/sch_line.cpp @@ -642,24 +642,35 @@ wxString SCH_LINE::GetSelectMenuText( EDA_UNITS aUnits ) const wxString txtfmt, orient; if( m_start.x == m_end.x ) - orient = _( "Vertical" ); - else if( m_start.y == m_end.y ) - orient = _( "Horizontal" ); - - switch( m_Layer ) { - case LAYER_NOTES: txtfmt = _( "%s Graphic Line from (%s, %s) to (%s, %s)" ); break; - case LAYER_WIRE: txtfmt = _( "%s Wire from (%s, %s) to (%s, %s)" ); break; - case LAYER_BUS: txtfmt = _( "%s Bus from (%s, %s) to (%s, %s)" ); break; - default: txtfmt = _( "%s Line on Unknown Layer from (%s, %s) to (%s, %s)" ); break; + switch( m_Layer ) + { + case LAYER_WIRE: txtfmt = _( "Vertical Wire, length %s" ); break; + case LAYER_BUS: txtfmt = _( "Vertical Bus, length %s" ); break; + default: txtfmt = _( "Vertical Graphic Line, length %s" ); break; + } + } + else if( m_start.y == m_end.y ) + { + switch( m_Layer ) + { + case LAYER_WIRE: txtfmt = _( "Horizontal Wire, length %s" ); break; + case LAYER_BUS: txtfmt = _( "Horizontal Bus, length %s" ); break; + default: txtfmt = _( "Horizontal Graphic Line, length %s" ); break; + } + } + else + { + switch( m_Layer ) + { + case LAYER_WIRE: txtfmt = _( "Wire, length %s" ); break; + case LAYER_BUS: txtfmt = _( "Bus, length %s" ); break; + default: txtfmt = _( "Graphic Line, length %s" ); break; + } } return wxString::Format( txtfmt, - orient, - MessageTextFromValue( aUnits, m_start.x ), - MessageTextFromValue( aUnits, m_start.y ), - MessageTextFromValue( aUnits, m_end.x ), - MessageTextFromValue( aUnits, m_end.y ) ); + MessageTextFromValue( aUnits, EuclideanNorm( m_start - m_end ) ) ); } diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp index 8e43b7723f..bb2c442a0e 100644 --- a/eeschema/sch_sheet.cpp +++ b/eeschema/sch_sheet.cpp @@ -906,7 +906,8 @@ SEARCH_RESULT SCH_SHEET::Visit( INSPECTOR aInspector, void* testData, const KICA wxString SCH_SHEET::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Hierarchical Sheet %s" ), m_fields[ SHEETNAME ].GetText() ); + return wxString::Format( _( "Hierarchical Sheet %s" ), + m_fields[ SHEETNAME ].GetText() ); } diff --git a/eeschema/sch_text.cpp b/eeschema/sch_text.cpp index 491f7ccdf0..50eeb74811 100644 --- a/eeschema/sch_text.cpp +++ b/eeschema/sch_text.cpp @@ -792,7 +792,7 @@ const EDA_RECT SCH_LABEL::GetBoundingBox() const wxString SCH_LABEL::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Label %s" ), ShortenedShownText() ); + return wxString::Format( _( "Label \"%s\"" ), ShortenedShownText() ); } @@ -1034,7 +1034,7 @@ const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const wxString SCH_GLOBALLABEL::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Global Label %s" ), ShortenedShownText() ); + return wxString::Format( _( "Global Label \"%s\"" ), ShortenedShownText() ); } @@ -1223,7 +1223,7 @@ wxPoint SCH_HIERLABEL::GetSchematicTextOffset( RENDER_SETTINGS* aSettings ) cons wxString SCH_HIERLABEL::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Hierarchical Label %s" ), ShortenedShownText() ); + return wxString::Format( _( "Hierarchical Label \"%s\"" ), ShortenedShownText() ); } diff --git a/include/class_board_item.h b/include/class_board_item.h index 681a7c02b9..38d79b1fd1 100644 --- a/include/class_board_item.h +++ b/include/class_board_item.h @@ -395,7 +395,7 @@ protected: * Return a string (to be shown to the user) describing a layer mask. * The BOARD is needed because layer names are (somewhat) customizable */ - static wxString LayerMaskDescribe( const BOARD* aBoard, LSET aMask ); + virtual wxString LayerMaskDescribe() const; }; #ifndef SWIG diff --git a/pcbnew/class_board_item.cpp b/pcbnew/class_board_item.cpp index 264c08a005..c6cea0cc4d 100644 --- a/pcbnew/class_board_item.cpp +++ b/pcbnew/class_board_item.cpp @@ -71,35 +71,32 @@ wxString BOARD_ITEM::GetLayerName() const } -wxString BOARD_ITEM::LayerMaskDescribe( const BOARD* aBoard, LSET aMask ) +wxString BOARD_ITEM::LayerMaskDescribe() const { + BOARD* board = GetBoard(); + LSET layers = GetLayerSet(); + // Try to be smart and useful. Check all copper first. - if( aMask[F_Cu] && aMask[B_Cu] ) - return _( "All copper layers" ); + if( layers[F_Cu] && layers[B_Cu] ) + return _( "all copper layers" ); - // Check for copper. - auto layer = aBoard->GetEnabledLayers().AllCuMask() & aMask; + LSET copperLayers = layers & board->GetEnabledLayers().AllCuMask(); + LSET techLayers = layers & board->GetEnabledLayers().AllTechMask(); - for( int i = 0; i < 3; i++ ) + for( LSET testLayers : { copperLayers, techLayers, layers } ) { for( int bit = PCBNEW_LAYER_ID_START; bit < PCB_LAYER_ID_COUNT; ++bit ) { - if( layer[ bit ] ) + if( testLayers[ bit ] ) { - wxString layerInfo = aBoard->GetLayerName( static_cast( bit ) ); + wxString layerInfo = board->GetLayerName( static_cast( bit ) ); - if( aMask.count() > 1 ) + if( testLayers.count() > 1 ) layerInfo << _( " and others" ); return layerInfo; } } - - // No copper; first, check for technicals and then for all layers. - if( i < 1 ) // first, check for technicals - layer = aBoard->GetEnabledLayers().AllTechMask() & aMask; - else // then check for all other layers - layer = aMask; } // No copper, no technicals: no layer diff --git a/pcbnew/class_dimension.cpp b/pcbnew/class_dimension.cpp index 37a9c3b1a1..f210a10cdc 100644 --- a/pcbnew/class_dimension.cpp +++ b/pcbnew/class_dimension.cpp @@ -402,7 +402,9 @@ const EDA_RECT DIMENSION::GetBoundingBox() const wxString DIMENSION::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Dimension \"%s\" on %s" ), GetText(), GetLayerName() ); + return wxString::Format( _( "Dimension \"%s\" on %s" ), + GetText(), + GetLayerName() ); } diff --git a/pcbnew/class_drawsegment.cpp b/pcbnew/class_drawsegment.cpp index 0210d27636..216de870d3 100644 --- a/pcbnew/class_drawsegment.cpp +++ b/pcbnew/class_drawsegment.cpp @@ -915,7 +915,7 @@ bool DRAWSEGMENT::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy wxString DRAWSEGMENT::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Pcb Graphic %s on %s" ), + return wxString::Format( _( "%s on %s" ), ShowShape( m_Shape ), GetLayerName() ); } diff --git a/pcbnew/class_edge_mod.cpp b/pcbnew/class_edge_mod.cpp index 2de6da752d..bd04756a94 100644 --- a/pcbnew/class_edge_mod.cpp +++ b/pcbnew/class_edge_mod.cpp @@ -131,9 +131,8 @@ void EDGE_MODULE::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vectorGetReference(), GetLayerName() ); } diff --git a/pcbnew/class_module.cpp b/pcbnew/class_module.cpp index 58e7e24e8b..0ff56c183e 100644 --- a/pcbnew/class_module.cpp +++ b/pcbnew/class_module.cpp @@ -977,7 +977,7 @@ wxString MODULE::GetSelectMenuText( EDA_UNITS aUnits ) const if( reference.IsEmpty() ) reference = _( "" ); - return wxString::Format( _( "Footprint %s on %s" ), reference, GetLayerName() ); + return wxString::Format( _( "Footprint %s" ), reference ); } diff --git a/pcbnew/class_pad.cpp b/pcbnew/class_pad.cpp index 0dbd9ae76f..36ff6c5d4c 100644 --- a/pcbnew/class_pad.cpp +++ b/pcbnew/class_pad.cpp @@ -815,7 +815,7 @@ void D_PAD::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector aList.emplace_back( _( "NetClass" ), msg, CYAN ); - aList.emplace_back( _( "Layer" ), LayerMaskDescribe( board, m_layerMask ), DARKGREEN ); + aList.emplace_back( _( "Layer" ), LayerMaskDescribe(), DARKGREEN ); // Show the pad shape, attribute and property wxString props = ShowPadAttr(); @@ -1064,14 +1064,14 @@ wxString D_PAD::GetSelectMenuText( EDA_UNITS aUnits ) const { return wxString::Format( _( "Pad of %s on %s" ), GetParent()->GetReference(), - LayerMaskDescribe( GetBoard(), m_layerMask ) ); + LayerMaskDescribe() ); } else { return wxString::Format( _( "Pad %s of %s on %s" ), GetName(), GetParent()->GetReference(), - LayerMaskDescribe( GetBoard(), m_layerMask ) ); + LayerMaskDescribe() ); } } diff --git a/pcbnew/class_pcb_group.cpp b/pcbnew/class_pcb_group.cpp index ef490440cd..66334730ee 100644 --- a/pcbnew/class_pcb_group.cpp +++ b/pcbnew/class_pcb_group.cpp @@ -272,11 +272,13 @@ wxString PCB_GROUP::GetSelectMenuText( EDA_UNITS aUnits ) const { if( m_name.empty() ) { - return wxString::Format( _( "Anonymous group %s with %zu members" ), - m_Uuid.AsString(), m_items.size() ); + return wxString::Format( _( "Anonymous Group, %zu members" ), + m_items.size() ); } - return wxString::Format( _( "Group \"%s\" with %zu members" ), m_name, m_items.size() ); + return wxString::Format( _( "Group \"%s\", %zu members" ), + m_name, + m_items.size() ); } diff --git a/pcbnew/class_pcb_target.cpp b/pcbnew/class_pcb_target.cpp index 36904d04e3..17f69f56a6 100644 --- a/pcbnew/class_pcb_target.cpp +++ b/pcbnew/class_pcb_target.cpp @@ -119,7 +119,7 @@ const EDA_RECT PCB_TARGET::GetBoundingBox() const wxString PCB_TARGET::GetSelectMenuText( EDA_UNITS aUnits ) const { // Targets are on *every* layer by definition - return wxString::Format( _( "Target size %s" ), MessageTextFromValue( aUnits, m_Size ) ); + return _( "Target" ); } diff --git a/pcbnew/class_pcb_text.cpp b/pcbnew/class_pcb_text.cpp index 7f6306e5de..fa9a9a90ee 100644 --- a/pcbnew/class_pcb_text.cpp +++ b/pcbnew/class_pcb_text.cpp @@ -216,7 +216,7 @@ void TEXTE_PCB::Flip( const wxPoint& aCentre, bool aFlipLeftRight ) wxString TEXTE_PCB::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _( "Pcb Text \"%s\" on %s"), ShortenedShownText(), GetLayerName() ); + return wxString::Format( _( "PCB Text \"%s\" on %s"), ShortenedShownText(), GetLayerName() ); } diff --git a/pcbnew/class_text_mod.cpp b/pcbnew/class_text_mod.cpp index a1b16fd23e..6e6a7df331 100644 --- a/pcbnew/class_text_mod.cpp +++ b/pcbnew/class_text_mod.cpp @@ -339,10 +339,9 @@ wxString TEXTE_MODULE::GetSelectMenuText( EDA_UNITS aUnits ) const static_cast( GetParent() )->GetReference() ); default: // wrap this one in quotes: - return wxString::Format( _( "Text \"%s\" of %s on %s" ), + return wxString::Format( _( "Footprint Text \"%s\" of %s" ), ShortenedShownText(), - static_cast( GetParent() )->GetReference(), - GetLayerName() ); + static_cast( GetParent() )->GetReference() ); } } diff --git a/pcbnew/class_track.cpp b/pcbnew/class_track.cpp index 0952eb8bb1..7f21c38e8f 100644 --- a/pcbnew/class_track.cpp +++ b/pcbnew/class_track.cpp @@ -82,9 +82,9 @@ wxString VIA::GetSelectMenuText( EDA_UNITS aUnits ) const switch( GetViaType() ) { - case VIATYPE::BLIND_BURIED: viaType = _( "Blind/Buried Via" ); break; - case VIATYPE::MICROVIA: viaType = _( "Micro Via" ); break; - default: viaType = _( "Via" ); break; + case VIATYPE::BLIND_BURIED: viaType = _( "Blind/Buried Via" ); break; + case VIATYPE::MICROVIA: viaType = _( "Micro Via" ); break; + default: viaType = _( "Via" ); break; } // say which layers, only two for now @@ -94,12 +94,10 @@ wxString VIA::GetSelectMenuText( EDA_UNITS aUnits ) const LayerPair( &topLayer, &botLayer ); - return wxString::Format( _( "%s %s %s on %s - %s" ), + return wxString::Format( _( "%s %s on %s" ), viaType, - MessageTextFromValue( aUnits, m_Width ), GetNetnameMsg(), - board ? board->GetLayerName( topLayer ) : wxT( "??" ), - board ? board->GetLayerName( botLayer ) : wxT( "??" ) ); + LayerMaskDescribe( board, GetLayerSet() ) ); } @@ -631,10 +629,7 @@ void TRACK::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector GetMsgPanelInfoBase_Common( aFrame, aList ); // Display layer - if( board ) - msg = board->GetLayerName( m_Layer ); - else - msg.Printf(wxT("%d"), m_Layer ); + aList.emplace_back( _( "Layer" ), LayerMaskDescribe( board, GetLayerSet() ), DARKGREEN ); // Display width msg = MessageTextFromValue( aFrame->GetUserUnits(), m_Width, true ); @@ -689,24 +684,10 @@ void VIA::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector& // Display basic infos switch( GetViaType() ) { - default: - case VIATYPE::MICROVIA: - msg = _( "Micro Via" ); // from external layer (TOP or BOTTOM) from - // the near neighbor inner layer only - break; - - case VIATYPE::BLIND_BURIED: - msg = _( "Blind/Buried Via" ); // from inner or external to inner - // or external layer (no restriction) - break; - - case VIATYPE::THROUGH: - msg = _( "Through Via" ); // Usual via (from TOP to BOTTOM layer only ) - break; - - case VIATYPE::NOT_DEFINED: - msg = wxT( "???" ); // Not used yet, does not exist currently - break; + case VIATYPE::MICROVIA: msg = _( "Micro Via" ); break; + case VIATYPE::BLIND_BURIED: msg = _( "Blind/Buried Via" ); break; + case VIATYPE::THROUGH: msg = _( "Through Via" ); break; + default: msg = _( "Via" ); break; } aList.emplace_back( _( "Type" ), msg, DARKCYAN ); @@ -714,16 +695,7 @@ void VIA::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector& GetMsgPanelInfoBase_Common( aFrame, aList ); // Display layer pair - PCB_LAYER_ID top_layer, bottom_layer; - - LayerPair( &top_layer, &bottom_layer ); - - if( board ) - msg = board->GetLayerName( top_layer ) + wxT( "/" ) + board->GetLayerName( bottom_layer ); - else - msg.Printf( wxT( "%d/%d" ), top_layer, bottom_layer ); - - aList.emplace_back( _( "Layers" ), msg, BROWN ); + aList.emplace_back( _( "Layer" ), LayerMaskDescribe( board, GetLayerSet() ), DARKGREEN ); // Display width msg = MessageTextFromValue( aFrame->GetUserUnits(), m_Width, true ); @@ -812,6 +784,18 @@ void TRACK::GetMsgPanelInfoBase_Common( EDA_DRAW_FRAME* aFrame, std::vectorGetLayerName( top_layer ) + wxT( " - " ) + board->GetLayerName( bottom_layer ); +} + + bool TRACK::HitTest( const wxPoint& aPosition, int aAccuracy ) const { return TestSegmentHit( aPosition, m_Start, m_End, aAccuracy + ( m_Width / 2 ) ); @@ -898,20 +882,15 @@ bool VIA::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const box.Inflate( GetWidth() / 2 ); if( aContained ) - { return arect.Contains( box ); - } else - { return arect.IntersectsCircle( GetStart(), GetWidth() / 2 ); - } } wxString TRACK::GetSelectMenuText( EDA_UNITS aUnits ) const { - return wxString::Format( _("Track %s %s on %s, length: %s" ), - MessageTextFromValue( aUnits, m_Width ), + return wxString::Format( _("Track %s on %s, length %s" ), GetNetnameMsg(), GetLayerName(), MessageTextFromValue( aUnits, GetLength() ) ); diff --git a/pcbnew/class_track.h b/pcbnew/class_track.h index 093d81c44d..61607915f3 100644 --- a/pcbnew/class_track.h +++ b/pcbnew/class_track.h @@ -514,6 +514,9 @@ public: // @copydoc BOARD_ITEM::GetEffectiveShape virtual std::shared_ptr GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER ) const override; +protected: + wxString LayerMaskDescribe() const override; + private: /// The bottom layer of the via (the top layer is in m_Layer) PCB_LAYER_ID m_BottomLayer;