From 2fb2ab0d374137d67f7648d602c5b7a6ba40058a Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Thu, 14 Jul 2011 11:42:44 -0400 Subject: [PATCH] Refactor PCBNew selection clarification menu text code. * Move menu text code from base board item object to the appropriate object. * Add helper to get board layer to base board item object. --- include/class_board_item.h | 20 +-- pcbnew/class_board_item.cpp | 221 ++---------------------- pcbnew/class_dimension.cpp | 14 +- pcbnew/class_dimension.h | 4 +- pcbnew/class_drawsegment.cpp | 13 ++ pcbnew/class_drawsegment.h | 12 +- pcbnew/class_edge_mod.cpp | 14 +- pcbnew/class_edge_mod.h | 14 +- pcbnew/class_marker_pcb.cpp | 13 +- pcbnew/class_marker_pcb.h | 2 + pcbnew/class_mire.cpp | 14 ++ pcbnew/class_mire.h | 2 + pcbnew/class_module.cpp | 13 +- pcbnew/class_module.h | 3 +- pcbnew/class_pad.cpp | 27 ++- pcbnew/class_pad.h | 14 +- pcbnew/class_pcb_text.cpp | 17 ++ pcbnew/class_pcb_text.h | 11 +- pcbnew/class_text_mod.cpp | 27 ++- pcbnew/class_text_mod.h | 2 + pcbnew/class_track.cpp | 104 ++++++++++- pcbnew/class_track.h | 16 +- pcbnew/class_zone.cpp | 74 ++++++-- pcbnew/class_zone.h | 25 +-- pcbnew/controle.cpp | 2 +- pcbnew/drc.cpp | 5 +- pcbnew/drc_marker_functions.cpp | 12 +- pcbnew/modedit.cpp | 2 +- pcbnew/onrightclick.cpp | 8 +- pcbnew/zones_test_and_combine_areas.cpp | 32 ++-- 30 files changed, 424 insertions(+), 313 deletions(-) diff --git a/include/class_board_item.h b/include/class_board_item.h index 8bfb5acb07..14bcbe9b20 100644 --- a/include/class_board_item.h +++ b/include/class_board_item.h @@ -151,17 +151,6 @@ public: } - /** - * Function MenuText - * returns the text to use in any menu type UI control which must uniquely - * identify this item. - * @param aPcb The PCB in which this item resides, needed for Net lookup. - * @return wxString - * @todo: maybe: make this virtual and split into each derived class - */ - wxString MenuText( const BOARD* aPcb ) const; - - /** * Function MenuIcon * @return const char** - The XPM to use in any UI control which can help @@ -224,8 +213,17 @@ public: * returns the BOARD in which this BOARD_ITEM resides, or NULL if none. */ virtual BOARD* GetBoard() const; + + /** + * Function GetLayerName + * returns the name of the PCB layer on which the item resides. + * + * @return wxString containing the layer name associated with this item. + */ + wxString GetLayerName() const; }; + class NETCLASS; /** diff --git a/pcbnew/class_board_item.cpp b/pcbnew/class_board_item.cpp index 532f76d780..6fd1c60f8d 100644 --- a/pcbnew/class_board_item.cpp +++ b/pcbnew/class_board_item.cpp @@ -14,9 +14,7 @@ #include "bitmaps.h" -/********************************************************/ wxString BOARD_ITEM::ShowShape( Track_Shapes aShape ) -/********************************************************/ { switch( aShape ) { @@ -31,213 +29,11 @@ wxString BOARD_ITEM::ShowShape( Track_Shapes aShape ) } -/** - * return a specific comment for "this". Used in pop up menus - * @param aPcb = the parent board - */ -wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const -{ - wxString text; - wxString msg; - wxString temp; - NETINFO_ITEM* net; - const BOARD_ITEM* item = this; - D_PAD * pad; - - switch( item->Type() ) - { - case TYPE_MODULE: - text << _( "Footprint" ) << wxT( " " ) << ( (MODULE*) item )->GetReference(); - text << wxT( " (" ) << aPcb->GetLayerName( item->m_Layer ).Trim() << wxT( ")" ); - break; - - case TYPE_PAD: - pad = (D_PAD *) this; - text << _( "Pad" ) << wxT( " \"" ) << pad->ReturnStringPadName() << wxT( "\" (" ); - - if ( (pad->m_Masque_Layer & ALL_CU_LAYERS) == ALL_CU_LAYERS ) - text << _("all copper layers"); - else if( (pad->m_Masque_Layer & LAYER_BACK) == LAYER_BACK ) - text << aPcb->GetLayerName( LAYER_N_BACK ).Trim(); - else if( (pad->m_Masque_Layer & LAYER_FRONT) == LAYER_FRONT ) - text << aPcb->GetLayerName( LAYER_N_FRONT ); - else - text << _("???"); - - text << _( ") of " ) << ( (MODULE*) GetParent() )->GetReference(); - break; - - case TYPE_DRAWSEGMENT: - text << _( "Pcb Graphic" ) << wxT(": ") - << ShowShape( (Track_Shapes) ((DRAWSEGMENT*)item)->m_Shape ) - << wxChar(' ') << _("Length:") << valeur_param( (int) ((DRAWSEGMENT*)item)->GetLength(), temp ) - << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim(); - break; - - case TYPE_TEXTE: - text << _( "Pcb Text" ) << wxT( " " ); - if( ( (TEXTE_PCB*) item )->m_Text.Len() < 12 ) - text << ( (TEXTE_PCB*) item )->m_Text; - else - text += ( (TEXTE_PCB*) item )->m_Text.Left( 10 ) + wxT( ".." ); - text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim(); - break; - - case TYPE_TEXTE_MODULE: - switch( ( (TEXTE_MODULE*) item )->m_Type ) - { - case TEXT_is_REFERENCE: - text << _( "Reference" ) << wxT( " " ) << ( (TEXTE_MODULE*) item )->m_Text; - break; - - case TEXT_is_VALUE: - text << _( "Value" ) << wxT( " " ) << ( (TEXTE_MODULE*) item )->m_Text << _( " of " ) - << ( (MODULE*) GetParent() )->GetReference(); - break; - - default: // wrap this one in quotes: - text << _( "Text" ) << wxT( " \"" ) << ( (TEXTE_MODULE*) item )->m_Text << - wxT( "\"" ) << _( " of " ) - << ( (MODULE*) GetParent() )->GetReference(); - break; - } - break; - - case TYPE_EDGE_MODULE: - text << _( "Graphic" ) << wxT( " " ); - text << ShowShape( (Track_Shapes) ( (EDGE_MODULE*) item )->m_Shape ); - text << wxT( " (" ) << aPcb->GetLayerName( ((EDGE_MODULE*) item )->m_Layer ).Trim() << wxT( ")" ); - text << _( " of " ) - << ( (MODULE*) GetParent() )->GetReference(); - break; - - case TYPE_TRACK: - // deleting tracks requires all the information we can get to - // disambiguate all the choices under the cursor! - text << _( "Track" ) << wxT( " " ) << ((TRACK*)item)->ShowWidth(); - net = aPcb->FindNet( ((TRACK*)item)->GetNet() ); - if( net ) - { - text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); - } - text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim() - << wxT(" ") << _("Net:") << ((TRACK*)item)->GetNet() - << wxT(" ") << _("Length:") << valeur_param( (int) ((TRACK*)item)->GetLength(), temp ); - break; - - case TYPE_ZONE_CONTAINER: - text = _( "Zone Outline" ); - { - ZONE_CONTAINER* area = (ZONE_CONTAINER*) this; - int ncont = area->m_Poly->GetContour(area->m_CornerSelection); - if( ncont ) - text << wxT(" ") << _("(Cutout)"); - } - text << wxT( " " ); - { - wxString TimeStampText; - TimeStampText.Printf( wxT( "(%8.8X)" ), item->m_TimeStamp ); - text << TimeStampText; - } - if ( !((ZONE_CONTAINER*) item)->IsOnCopperLayer() ) - { - text << wxT( " [" ) << _("Not on copper layer") << wxT( "]" ); - } - else if( ((ZONE_CONTAINER*) item)->GetNet() >= 0 ) - { - net = aPcb->FindNet( ( (ZONE_CONTAINER*) item )->GetNet() ); - if( net ) - { - text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); - } - } - else // A netcode < 0 is an error flag (Netname not found or area not initialised) - { - text << wxT( " [" ) << ( (ZONE_CONTAINER*) item )->m_Netname << wxT( "]" ); - text << wxT(" <") << _("Not Found") << wxT(">"); - } - text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim(); - break; - - case TYPE_ZONE: - text = _( "Zone" ); - text << wxT( " " ); - { - wxString TimeStampText; - TimeStampText.Printf( wxT( "(%8.8X)" ), item->m_TimeStamp ); - text << TimeStampText; - } - net = aPcb->FindNet( ( (SEGZONE*) item )->GetNet() ); - if( net ) - { - text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); - } - text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim(); - break; - - case TYPE_VIA: - { - SEGVIA* via = (SEGVIA*) item; - text << _( "Via" ) << wxT( " " ) << via->ShowWidth(); - - int shape = via->Shape(); - if( shape == VIA_BLIND_BURIED ) - text << wxT(" ") << _( "Blind/Buried" ); - else if( shape == VIA_MICROVIA ) - text << wxT(" ") << _("Micro Via"); - // else say nothing about normal (through) vias - - net = aPcb->FindNet( via->GetNet() ); - if( net ) - { - text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); - } - text << wxChar(' ') << _("Net:") << via->GetNet(); - - if( shape != VIA_THROUGH ) - { - // say which layers, only two for now - int topLayer; - int botLayer; - via->ReturnLayerPair( &topLayer, &botLayer ); - text << _( " on " ) << aPcb->GetLayerName( topLayer).Trim() << wxT(" <-> ") - << aPcb->GetLayerName( botLayer ).Trim(); - } - } - break; - - case TYPE_MARKER_PCB: - text << _( "Marker" ) << wxT( " @(" ) << ((MARKER_PCB*)item)->GetPos().x - << wxT(",") << ((MARKER_PCB*)item)->GetPos().y << wxT(")"); - break; - - case TYPE_DIMENSION: - text << _( "Dimension" ) << wxT( " \"" ) << ( (DIMENSION*) item )->GetText() << wxT( "\"" ); - break; - - case TYPE_MIRE: - valeur_param( ((MIREPCB*)item)->m_Size, msg ); - text << _( "Target" ) << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim() - << wxT( " " ) << _( "size" ) << wxT( " " ) << msg - ; - break; - - default: - text << item->GetClass() << wxT( " Unexpected item type: BUG!!" ); - break; - } - - return text; -} - - -/*****************************************/ -const char** BOARD_ITEM::MenuIcon() const -/*****************************************/ /** return a specific icon pointer (an xpm icon) for "this". Used in pop up menus * @return an icon pointer (can be NULL) */ +const char** BOARD_ITEM::MenuIcon() const { const char** xpm; const BOARD_ITEM* item = this; @@ -301,6 +97,7 @@ const char** BOARD_ITEM::MenuIcon() const return (const char**) xpm; } + void BOARD_ITEM::UnLink() { DLIST* list = (DLIST*) GetList(); @@ -323,3 +120,17 @@ BOARD* BOARD_ITEM::GetBoard() const return NULL; } + +wxString BOARD_ITEM::GetLayerName() const +{ + wxString layerName; + BOARD* board = GetBoard(); + + if( board != NULL ) + return board->GetLayerName( m_Layer ).Trim(); + + wxFAIL_MSG( wxT( "No board found for board item type " ) + GetClass() ); + layerName = _( "** undefined layer **" ); + + return layerName; +} diff --git a/pcbnew/class_dimension.cpp b/pcbnew/class_dimension.cpp index 5dd116124f..627747af53 100644 --- a/pcbnew/class_dimension.cpp +++ b/pcbnew/class_dimension.cpp @@ -42,7 +42,7 @@ void DIMENSION::SetText( const wxString& NewText ) /* Return the dimension text */ -wxString DIMENSION::GetText( void ) +wxString DIMENSION::GetText( void ) const { return m_Text->m_Text; } @@ -430,7 +430,7 @@ void DIMENSION::AdjustDimensionDetails( bool aDoNotChangeText ) /* Init layer : */ m_Text->SetLayer( GetLayer() ); - /* calculate the size of the cdimension + /* calculate the size of the dimension * (text + line above the text) */ ii = m_Text->m_Size.y + m_Text->m_Thickness + (m_Width * 3); @@ -777,3 +777,13 @@ EDA_RECT DIMENSION::GetBoundingBox() const return bBox; } + + +wxString DIMENSION::GetSelectMenuText() const +{ + wxString text; + + text << _( "Dimension" ) << wxT( " \"" ) << GetText() << wxT( "\"" ); + + return text; +} diff --git a/pcbnew/class_dimension.h b/pcbnew/class_dimension.h index 8bd05557de..66d43e45d9 100644 --- a/pcbnew/class_dimension.h +++ b/pcbnew/class_dimension.h @@ -59,7 +59,7 @@ public: bool Save( FILE* aFile ) const; void SetText( const wxString& NewText ); - wxString GetText( void ); + wxString GetText( void ) const; void Copy( DIMENSION* source ); @@ -134,6 +134,8 @@ public: } EDA_RECT GetBoundingBox() const; + + virtual wxString GetSelectMenuText() const; }; #endif // #define DIMENSION_H diff --git a/pcbnew/class_drawsegment.cpp b/pcbnew/class_drawsegment.cpp index 710208c53c..845968c29d 100644 --- a/pcbnew/class_drawsegment.cpp +++ b/pcbnew/class_drawsegment.cpp @@ -495,6 +495,19 @@ bool DRAWSEGMENT::HitTest( EDA_RECT& refArea ) } +wxString DRAWSEGMENT::GetSelectMenuText() const +{ + wxString text; + wxString temp; + + text << _( "Pcb Graphic" ) << wxT(": ") << ShowShape( (Track_Shapes)m_Shape ) + << wxChar(' ') << _("Length:") << valeur_param( GetLength(), temp ) + << _( " on " ) << GetLayerName(); + + return text; +} + + #if defined(DEBUG) /** * Function Show diff --git a/pcbnew/class_drawsegment.h b/pcbnew/class_drawsegment.h index a8ad61b0e7..6ad47d2070 100644 --- a/pcbnew/class_drawsegment.h +++ b/pcbnew/class_drawsegment.h @@ -169,12 +169,12 @@ public: * clearance when the circle is approxiamted by segment bigger or equal * to the real clearance value (usually near from 1.0) */ - void TransformShapeWithClearanceToPolygon( - std::vector & aCornerBuffer, - int aClearanceValue, - int - aCircleToSegmentsCount, - double aCorrectionFactor ); + void TransformShapeWithClearanceToPolygon( std::vector & aCornerBuffer, + int aClearanceValue, + int aCircleToSegmentsCount, + double aCorrectionFactor ); + + virtual wxString GetSelectMenuText() const; #if defined(DEBUG) void Show( int nestLevel, std::ostream& os ); diff --git a/pcbnew/class_edge_mod.cpp b/pcbnew/class_edge_mod.cpp index f60eeaf6b5..8783f33385 100644 --- a/pcbnew/class_edge_mod.cpp +++ b/pcbnew/class_edge_mod.cpp @@ -601,8 +601,20 @@ bool EDGE_MODULE::HitTest( EDA_RECT& refArea ) return false; } -#if defined(DEBUG) +wxString EDGE_MODULE::GetSelectMenuText() const +{ + wxString text; + + text << _( "Graphic" ) << wxT( " " ) << ShowShape( (Track_Shapes) m_Shape ); + text << wxT( " (" ) << GetLayerName() << wxT( ")" ); + text << _( " of " ) << ( (MODULE*) GetParent() )->GetReference(); + + return text; +} + + +#if defined(DEBUG) /** * Function Show diff --git a/pcbnew/class_edge_mod.h b/pcbnew/class_edge_mod.h index 50959f62ce..96a49c7ec6 100644 --- a/pcbnew/class_edge_mod.h +++ b/pcbnew/class_edge_mod.h @@ -145,15 +145,15 @@ public: * @param aClearanceValue = the clearance around the pad * @param aCircleToSegmentsCount = the number of segments to approximate a circle * @param aCorrectionFactor = the correction to apply to circles radius to keep - * clearance when the circle is approxiamted by segment bigger or equal + * clearance when the circle is approximated by segment bigger or equal * to the real clearance value (usually near from 1.0) */ - void TransformShapeWithClearanceToPolygon( - std::vector & aCornerBuffer, - int aClearanceValue, - int - aCircleToSegmentsCount, - double aCorrectionFactor ); + void TransformShapeWithClearanceToPolygon( std::vector & aCornerBuffer, + int aClearanceValue, + int aCircleToSegmentsCount, + double aCorrectionFactor ); + + virtual wxString GetSelectMenuText() const; #if defined(DEBUG) diff --git a/pcbnew/class_marker_pcb.cpp b/pcbnew/class_marker_pcb.cpp index 0c0abe37ed..eff7c6e7d6 100644 --- a/pcbnew/class_marker_pcb.cpp +++ b/pcbnew/class_marker_pcb.cpp @@ -1,5 +1,5 @@ /*****************************************************************************/ -/* Functions to handle markers used to show somthing (usually a drc problem) */ +/* Functions to handle markers used to show something (usually a drc problem) */ /*****************************************************************************/ /* file class_marker.cpp */ @@ -93,7 +93,7 @@ void MARKER_PCB::Rotate(const wxPoint& aRotCentre, int aAngle) /** * Function Flip * Flip this object, i.e. change the board side for this object - * this function has not reeally sense for a marker. + * this function has not really sense for a marker. * It moves just the marker to keep its position on board, when the board is flipped * @param aCentre - the rotation point. */ @@ -102,3 +102,12 @@ void MARKER_PCB::Flip(const wxPoint& aCentre ) m_Pos.y = aCentre.y - (m_Pos.y - aCentre.y); } + +wxString MARKER_PCB::GetSelectMenuText() const +{ + wxString text; + + text << _( "Marker" ) << wxT( " @(" ) << GetPos().x << wxT( "," ) << GetPos().y << wxT( ")" ); + + return text; +} diff --git a/pcbnew/class_marker_pcb.h b/pcbnew/class_marker_pcb.h index 1e18d3fab3..a20cea4e12 100644 --- a/pcbnew/class_marker_pcb.h +++ b/pcbnew/class_marker_pcb.h @@ -114,6 +114,8 @@ public: // "pure" virtual-ness return true; } + + virtual wxString GetSelectMenuText() const; }; diff --git a/pcbnew/class_mire.cpp b/pcbnew/class_mire.cpp index af5679d491..dccc74522f 100644 --- a/pcbnew/class_mire.cpp +++ b/pcbnew/class_mire.cpp @@ -234,3 +234,17 @@ EDA_RECT MIREPCB::GetBoundingBox() const return bBox; } + + +wxString MIREPCB::GetSelectMenuText() const +{ + wxString text; + wxString msg; + + valeur_param( m_Size, msg ); + + text << _( "Target" ) << _( " on " ) << GetLayerName() << wxT( " " ) << _( "size" ) + << wxT( " " ) << msg; + + return text; +} diff --git a/pcbnew/class_mire.h b/pcbnew/class_mire.h index c0adc8da06..ff972472c5 100644 --- a/pcbnew/class_mire.h +++ b/pcbnew/class_mire.h @@ -88,6 +88,8 @@ public: bool HitTest( EDA_RECT& refArea ); EDA_RECT GetBoundingBox() const; + + virtual wxString GetSelectMenuText() const; }; diff --git a/pcbnew/class_module.cpp b/pcbnew/class_module.cpp index 7666749710..fbc83324a2 100644 --- a/pcbnew/class_module.cpp +++ b/pcbnew/class_module.cpp @@ -720,7 +720,7 @@ EDA_RECT MODULE::GetFootPrintRect() const for( EDGE_MODULE* edge = (EDGE_MODULE*) m_Drawings.GetFirst(); edge; edge = edge->Next() ) { - if( edge->Type() != TYPE_EDGE_MODULE ) // Shoud not occur + if( edge->Type() != TYPE_EDGE_MODULE ) // Should not occur continue; area.Merge( edge->GetBoundingBox() ); @@ -1004,6 +1004,17 @@ SEARCH_RESULT MODULE::Visit( INSPECTOR* inspector, const void* testData, } +wxString MODULE::GetSelectMenuText() const +{ + wxString text; + + text << _( "Footprint" ) << wxT( " " ) << GetReference(); + text << wxT( " (" ) << GetLayerName() << wxT( ")" ); + + return text; +} + + #if defined(DEBUG) /** diff --git a/pcbnew/class_module.h b/pcbnew/class_module.h index 9b9d8c049c..a515828e60 100644 --- a/pcbnew/class_module.h +++ b/pcbnew/class_module.h @@ -274,7 +274,7 @@ public: * Function GetReference * @return const wxString& - the reference designator text. */ - const wxString& GetReference() + const wxString& GetReference() const { return m_Reference->m_Text; } @@ -328,6 +328,7 @@ public: return wxT( "MODULE" ); } + virtual wxString GetSelectMenuText() const; #if defined(DEBUG) diff --git a/pcbnew/class_pad.cpp b/pcbnew/class_pad.cpp index 048258a6a4..5ed1f85202 100644 --- a/pcbnew/class_pad.cpp +++ b/pcbnew/class_pad.cpp @@ -144,7 +144,7 @@ const wxPoint D_PAD::ReturnShapePos() /* Return pad name as string in a wxString */ -wxString D_PAD::ReturnStringPadName() +wxString D_PAD::ReturnStringPadName() const { wxString name; @@ -155,7 +155,7 @@ wxString D_PAD::ReturnStringPadName() /* Return pad name as string in a buffer */ -void D_PAD::ReturnStringPadName( wxString& text ) +void D_PAD::ReturnStringPadName( wxString& text ) const { int ii; @@ -871,7 +871,7 @@ int D_PAD::Compare( const D_PAD* padref, const D_PAD* padcmp ) #if defined(DEBUG) -// @todo: could this be useable elsewhere also? +// @todo: could this be usable elsewhere also? static const char* ShowPadType( int aPadType ) { switch( aPadType ) @@ -916,6 +916,27 @@ static const char* ShowPadAttr( int aPadAttr ) } +wxString D_PAD::GetSelectMenuText() const +{ + wxString text; + + text << _( "Pad" ) << wxT( " \"" ) << ReturnStringPadName() << wxT( "\" (" ); + + if ( (m_Masque_Layer & ALL_CU_LAYERS) == ALL_CU_LAYERS ) + text << _("all copper layers"); + else if( (m_Masque_Layer & LAYER_BACK) == LAYER_BACK ) + text << GetLayerName(); + else if( (m_Masque_Layer & LAYER_FRONT) == LAYER_FRONT ) + text << GetLayerName(); + else + text << _( "???" ); + + text << _( ") of " ) << ( (MODULE*) GetParent() )->GetReference(); + + return text; +} + + /** * Function Show * is used to output the object tree, currently for debugging only. diff --git a/pcbnew/class_pad.h b/pcbnew/class_pad.h index cfb583a24b..941d3f3021 100644 --- a/pcbnew/class_pad.h +++ b/pcbnew/class_pad.h @@ -26,7 +26,7 @@ class Pcb3D_GLCanvas; #define PAD_HOLE_NOT_PLATED_DEFAULT_LAYERS LAYER_BACK | SILKSCREEN_LAYER_FRONT | \ SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT -// Helper class to staore parameters used to draw a pad +// Helper class to store parameters used to draw a pad class PAD_DRAWINFO { public: @@ -177,7 +177,7 @@ public: * @param aClearanceValue = the clearance around the pad * @param aCircleToSegmentsCount = the number of segments to approximate a circle * @param aCorrectionFactor = the correction to apply to circles radius to keep - * clearance when the circle is approxiamted by segment bigger or equal + * clearance when the circle is approximated by segment bigger or equal * to the real clearance value (usually near from 1.0) */ void TransformShapeWithClearanceToPolygon( std::vector & aCornerBuffer, @@ -272,12 +272,12 @@ public: * @param aRotation = full rotation of the segment * @return the width of the segment */ - int BuildSegmentFromOvalShape(wxPoint& aSegStart, wxPoint& aSegEnd, int aRotation) const; + int BuildSegmentFromOvalShape(wxPoint& aSegStart, wxPoint& aSegEnd, int aRotation) const; // others - void SetPadName( const wxString& name ); // Change pad name - wxString ReturnStringPadName(); // Return pad name as string in a wxString - void ReturnStringPadName( wxString& text ); // Return pad name as string in a buffer + void SetPadName( const wxString& name ); // Change pad name + wxString ReturnStringPadName() const; // Return pad name as string in a wxString + void ReturnStringPadName( wxString& text ) const; // Return pad name as string in a buffer void ComputeShapeMaxRadius(); // compute radius int GetMaxRadius() const; @@ -357,6 +357,8 @@ public: } + virtual wxString GetSelectMenuText() const; + #if defined(DEBUG) /** diff --git a/pcbnew/class_pcb_text.cpp b/pcbnew/class_pcb_text.cpp index 1cd1f7bca4..e35c83e884 100644 --- a/pcbnew/class_pcb_text.cpp +++ b/pcbnew/class_pcb_text.cpp @@ -329,6 +329,23 @@ void TEXTE_PCB::Flip(const wxPoint& aCentre ) } +wxString TEXTE_PCB::GetSelectMenuText() const +{ + wxString text; + + text << _( "Pcb Text" ) << wxT( " " ); + + if( m_Text.Len() < 12 ) + text << m_Text; + else + text += m_Text.Left( 10 ) + wxT( ".." ); + + text << _( " on " ) << GetLayerName(); + + return text; +} + + #if defined(DEBUG) /** diff --git a/pcbnew/class_pcb_text.h b/pcbnew/class_pcb_text.h index 25a8f3456d..0ffad3ac0b 100644 --- a/pcbnew/class_pcb_text.h +++ b/pcbnew/class_pcb_text.h @@ -124,11 +124,12 @@ public: * clearance when the circle is approximated by segment bigger or equal * to the real clearance value (usually near from 1.0) */ - void TransformShapeWithClearanceToPolygon( - std::vector & aCornerBuffer, - int aClearanceValue, - int aCircleToSegmentsCount, - double aCorrectionFactor ); + void TransformShapeWithClearanceToPolygon( std::vector & aCornerBuffer, + int aClearanceValue, + int aCircleToSegmentsCount, + double aCorrectionFactor ); + + virtual wxString GetSelectMenuText() const; #if defined(DEBUG) /** diff --git a/pcbnew/class_text_mod.cpp b/pcbnew/class_text_mod.cpp index 49a8d19fcc..be3678d64d 100644 --- a/pcbnew/class_text_mod.cpp +++ b/pcbnew/class_text_mod.cpp @@ -409,7 +409,7 @@ void TEXTE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, int draw_mode, const w size, m_HJustify, m_VJustify, width, m_Italic, m_Bold ); } -/* Rraws a line from the TEXTE_MODULE origin to parent MODULE origin. +/* Draws a line from the TEXTE_MODULE origin to parent MODULE origin. */ void TEXTE_MODULE::DrawUmbilical( EDA_DRAW_PANEL* aPanel, wxDC* aDC, @@ -544,6 +544,31 @@ bool TEXTE_MODULE::IsOnLayer( int aLayer ) const */ +wxString TEXTE_MODULE::GetSelectMenuText() const +{ + wxString text; + + switch( m_Type ) + { + case TEXT_is_REFERENCE: + text << _( "Reference" ) << wxT( " " ) << m_Text; + break; + + case TEXT_is_VALUE: + text << _( "Value" ) << wxT( " " ) << m_Text << _( " of " ) + << ( (MODULE*) GetParent() )->GetReference(); + break; + + default: // wrap this one in quotes: + text << _( "Text" ) << wxT( " \"" ) << m_Text << wxT( "\"" ) << _( " of " ) + << ( (MODULE*) GetParent() )->GetReference(); + break; + } + + return text; +} + + #if defined(DEBUG) /** diff --git a/pcbnew/class_text_mod.h b/pcbnew/class_text_mod.h index 9e8bd88560..114e93a086 100644 --- a/pcbnew/class_text_mod.h +++ b/pcbnew/class_text_mod.h @@ -159,6 +159,8 @@ public: TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS ); } + virtual wxString GetSelectMenuText() const; + #if defined(DEBUG) /** diff --git a/pcbnew/class_track.cpp b/pcbnew/class_track.cpp index 980c0a7e59..2b93ed9d02 100644 --- a/pcbnew/class_track.cpp +++ b/pcbnew/class_track.cpp @@ -43,9 +43,7 @@ TRACK::TRACK( BOARD_ITEM* aParent, KICAD_T idtype ) : } -/***************************/ -wxString TRACK::ShowWidth() -/***************************/ +wxString TRACK::ShowWidth() const { wxString msg; @@ -61,12 +59,82 @@ SEGZONE::SEGZONE( BOARD_ITEM* aParent ) : } +wxString SEGZONE::GetSelectMenuText() const +{ + wxString text; + NETINFO_ITEM* net; + BOARD* board = GetBoard(); + + text << _( "Zone" ) << wxT( " " ) << wxString::Format( wxT( "(%8.8X)" ), m_TimeStamp ); + + if( board ) + { + net = board->FindNet( GetNet() ); + + if( net ) + text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); + } + else + { + text << _( "** BOARD NOT DEFINED **" ); + } + + text << _( " on " ) << GetLayerName(); + + return text; +} + + SEGVIA::SEGVIA( BOARD_ITEM* aParent ) : TRACK( aParent, TYPE_VIA ) { } +wxString SEGVIA::GetSelectMenuText() const +{ + wxString text; + NETINFO_ITEM* net; + BOARD* board = GetBoard(); + + text << _( "Via" ) << wxT( " " ) << ShowWidth(); + + int shape = Shape(); + + if( shape == VIA_BLIND_BURIED ) + text << wxT( " " ) << _( "Blind/Buried" ); + else if( shape == VIA_MICROVIA ) + text << wxT( " " ) << _( "Micro Via" ); + // else say nothing about normal (through) vias + + if( board ) + { + net = board->FindNet( GetNet() ); + + if( net ) + text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); + + text << wxChar( ' ' ) << _( "Net:" ) << GetNet(); + + if( shape != VIA_THROUGH ) + { + // say which layers, only two for now + int topLayer; + int botLayer; + ReturnLayerPair( &topLayer, &botLayer ); + text << _( " on " ) << board->GetLayerName( topLayer ).Trim() << wxT( " <-> " ) + << board->GetLayerName( botLayer ).Trim(); + } + } + else + { + text << _( "** BOARD NOT DEFINED **" ); + } + + return text; +} + + // Copy constructor TRACK::TRACK( const TRACK& Source ) : BOARD_CONNECTED_ITEM( Source ) @@ -1131,6 +1199,36 @@ bool TRACK::HitTest( EDA_RECT& refArea ) } +wxString TRACK::GetSelectMenuText() const +{ + wxString text; + wxString temp; + NETINFO_ITEM* net; + BOARD* board = GetBoard(); + + // deleting tracks requires all the information we can get to + // disambiguate all the choices under the cursor! + text << _( "Track" ) << wxT( " " ) << ShowWidth(); + + if( board ) + { + net = board->FindNet( GetNet() ); + + if( net ) + text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); + } + else + { + text << _( "** BOARD NOT DEFINED ** " ); + } + + text << _( " on " ) << GetLayerName() << wxT(" ") << _("Net:") << GetNet() + << wxT(" ") << _("Length:") << valeur_param( GetLength(), temp ); + + return text; +} + + #if defined(DEBUG) /** diff --git a/pcbnew/class_track.h b/pcbnew/class_track.h index 5e086eaa0c..2e13f5935a 100644 --- a/pcbnew/class_track.h +++ b/pcbnew/class_track.h @@ -9,10 +9,10 @@ #include "PolyLine.h" -// Via attributes (m_Shape parmeter) +// Via attributes (m_Shape parameter) #define VIA_THROUGH 3 /* Always a through hole via */ #define VIA_BLIND_BURIED 2 /* this via can be on internal layers */ -#define VIA_MICROVIA 1 /* this via which connect from an external layer to the near neightbour internal layer */ +#define VIA_MICROVIA 1 /* this via which connect from an external layer to the near neighbor internal layer */ #define VIA_NOT_DEFINED 0 /* not yet used */ /***/ @@ -52,7 +52,7 @@ public: * will copy this object whether it is a TRACK or a SEGVIA returning * the corresponding type. * @return - TRACK*, SEGVIA*, or SEGZONE*, declared as the least common - * demoninator: TRACK + * denominator: TRACK */ TRACK* Copy() const; @@ -156,7 +156,7 @@ public: * @param aClearanceValue = the clearance around the pad * @param aCircleToSegmentsCount = the number of segments to approximate a circle * @param aCorrectionFactor = the correction to apply to circles radius to keep - * clearance when the circle is approxiamted by segment bigger or equal + * clearance when the circle is approximated by segment bigger or equal * to the real clearance value (usually near from 1.0) */ void TransformShapeWithClearanceToPolygon( std::vector & aCornerBuffer, @@ -228,7 +228,7 @@ public: * Function ShowWidth * returns the width of the track in displayable user units. */ - wxString ShowWidth(); + wxString ShowWidth() const; /** * Function Visit @@ -285,6 +285,7 @@ public: */ virtual int GetClearance( BOARD_CONNECTED_ITEM* aItem = NULL ) const; + virtual wxString GetSelectMenuText() const; #if defined (DEBUG) @@ -326,6 +327,9 @@ public: SEGZONE* Next() const { return (SEGZONE*) Pnext; } + + virtual wxString GetSelectMenuText() const; + }; @@ -380,6 +384,8 @@ public: } + virtual wxString GetSelectMenuText() const; + #if defined (DEBUG) /** diff --git a/pcbnew/class_zone.cpp b/pcbnew/class_zone.cpp index cccae90be0..a4b7e18390 100644 --- a/pcbnew/class_zone.cpp +++ b/pcbnew/class_zone.cpp @@ -113,12 +113,12 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const if( ret < 3 ) return false; - // Save the ouline layer info + // Save the outline layer info ret = fprintf( aFile, "ZLayer %d\n", m_Layer ); if( ret < 1 ) return false; - // Save the ouline aux info + // Save the outline aux info switch( m_Poly->GetHatchStyle() ) { default: @@ -364,7 +364,7 @@ int ZONE_CONTAINER::ReadDescr( LINE_READER* aReader ) m_IsFilled = (fillstate == 'S') ? true : false; } - else if( strnicmp( Line, "ZClearance", 10 ) == 0 ) // Clearence and pad options info found + else if( strnicmp( Line, "ZClearance", 10 ) == 0 ) // Clearance and pad options info found { int clearance = 200; char padoption; @@ -622,11 +622,11 @@ void ZONE_CONTAINER::DrawFilledArea( EDA_DRAW_PANEL* panel, if( (corner->end_contour) || (ic == imax) ) // the last corner of a filled area is found: draw it { - /* Draw the current filled area: draw segments ouline first - * Curiously, draw segments ouline first and after draw filled polygons - * with oulines thickness = 0 is a faster than - * just draw filled polygons but with oulines thickness = m_ZoneMinThickness - * So DO NOT use draw filled polygons with oulines having a thickness > 0 + /* Draw the current filled area: draw segments outline first + * Curiously, draw segments outline first and after draw filled polygons + * with outlines thickness = 0 is a faster than + * just draw filled polygons but with outlines thickness = m_ZoneMinThickness + * So DO NOT use draw filled polygons with outlines having a thickness > 0 * Note: Extra segments ( added by kbool to joint holes with external outline) are not drawn */ { @@ -719,7 +719,7 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( EDA_DRAW_PANEL* panel, wxDC* DC, in * Draws the zone outline when ir is created. * The moving edges (last segment and the closing edge segment) are in XOR graphic mode, * old segment in OR graphic mode - * The closing edge has its owm shape + * The closing edge has its own shape * @param panel = current Draw Panel * @param DC = current Device Context * @param draw_mode = draw mode: OR, XOR .. @@ -762,7 +762,7 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( EDA_DRAW_PANEL* panel, wxDC* DC, in else current_gr_mode = draw_mode; } - else // Draw the line from last corner to the first corner of the current coutour + else // Draw the line from last corner to the first corner of the current contour { is_close_segment = true; current_gr_mode = GR_XOR; @@ -947,7 +947,7 @@ bool ZONE_CONTAINER::HitTestFilledArea( const wxPoint& aRefPos ) break; } - // Prepare test of next area which starts after the current indexend (if exists) + // Prepare test of next area which starts after the current index end (if exists) indexstart = indexend + 1; } } @@ -997,7 +997,7 @@ void ZONE_CONTAINER::DisplayInfo( EDA_DRAW_FRAME* frame ) else frame->AppendMsgPanel( _( "Non Copper Zone" ), wxEmptyString, RED ); - /* Display net code : (usefull in test or debug) */ + /* Display net code : (useful in test or debug) */ msg.Printf( wxT( "%d" ), GetNet() ); frame->AppendMsgPanel( _( "NetCode" ), msg, RED ); @@ -1176,7 +1176,7 @@ void ZONE_CONTAINER::Mirror( const wxPoint& mirror_ref ) /** * Function copy - * copy usefull data from the source. + * copy useful data from the source. * flags and linked list pointers are NOT copied */ void ZONE_CONTAINER::Copy( ZONE_CONTAINER* src ) @@ -1221,3 +1221,51 @@ bool ZONE_CONTAINER::SetNetNameFromNetCode( void ) return false; } + + +wxString ZONE_CONTAINER::GetSelectMenuText() const +{ + wxString text; + NETINFO_ITEM* net; + BOARD* board = GetBoard(); + + text = _( "Zone Outline" ); + + int ncont = m_Poly->GetContour( m_CornerSelection ); + + if( ncont ) + text << wxT( " " ) << _( "(Cutout)" ); + + text << wxT( " " ); + text << wxString::Format( wxT( "(%8.8X)" ), m_TimeStamp ); + + if ( !IsOnCopperLayer() ) + { + text << wxT( " [" ) << _( "Not on copper layer" ) << wxT( "]" ); + } + else if( GetNet() >= 0 ) + { + if( board ) + { + net = board->FindNet( GetNet() ); + + if( net ) + { + text << wxT( " [" ) << net->GetNetname() << wxT( "]" ); + } + } + else + { + text << _( "** NO BOARD DEFINED **" ); + } + } + else // A netcode < 0 is an error flag (Netname not found or area not initialised) + { + text << wxT( " [" ) << m_Netname << wxT( "]" ); + text << wxT( " <" ) << _( "Not Found" ) << wxT( ">" ); + } + + text << _( " on " ) << GetLayerName(); + + return text; +} diff --git a/pcbnew/class_zone.h b/pcbnew/class_zone.h index 02f7f0e2cc..d5d9e10699 100644 --- a/pcbnew/class_zone.h +++ b/pcbnew/class_zone.h @@ -47,8 +47,8 @@ public: int m_ArcToSegmentsCount; // number of segments to convert a circle to a polygon // (uses ARC_APPROX_SEGMENTS_COUNT_LOW_DEF or ARC_APPROX_SEGMENTS_COUNT_HIGHT_DEF) int m_PadOption; // - int m_ThermalReliefGapValue; // tickness of the gap in thermal reliefs - int m_ThermalReliefCopperBridgeValue; // tickness of the copper bridge in thermal reliefs + int m_ThermalReliefGapValue; // thickness of the gap in thermal reliefs + int m_ThermalReliefCopperBridgeValue; // thickness of the copper bridge in thermal reliefs int utility, utility2; // flags used in polygon calculations bool m_IsFilled; // true when a zone was filled, false after deleting the filled areas std::vector m_FilledPolysList; /* set of filled polygons used to draw a zone as a filled area. @@ -56,7 +56,7 @@ public: * In very simple cases m_FilledPolysList is same as m_Poly * In less simple cases (when m_Poly has holes) m_FilledPolysList is a polygon equivalent to m_Poly, without holes * but with extra outline segment connecting "holes" with external main outline - * In complex cases an ouline decribed by m_Poly can have many filled areas + * In complex cases an outline described by m_Poly can have many filled areas */ std::vector m_FillSegmList; /* set of segments used to fill area, when fill zone by segment is used. * ( m_FillMode == 1 ) @@ -88,7 +88,7 @@ public: /** * Function copy - * copy usefull data from the source. + * copy useful data from the source. * flags and linked list pointers are NOT copied */ void Copy( ZONE_CONTAINER* src ); @@ -125,7 +125,7 @@ public: * Function DrawWhileCreateOutline * Draws the zone outline when ir is created. * The moving edges are in XOR graphic mode, old segment in draw_mode graphic mode (usually GR_OR) - * The closing edge has its owm shape + * The closing edge has its own shape * @param panel = current Draw Panel * @param DC = current Device Context * @param draw_mode = draw mode: OR, XOR .. @@ -141,7 +141,7 @@ public: /** * Function Test_For_Copper_Island_And_Remove__Insulated_Islands * Remove insulated copper islands found in m_FilledPolysList. - * @param aPcb = the board to analyse + * @param aPcb = the board to analyze */ void Test_For_Copper_Island_And_Remove_Insulated_Islands( BOARD* aPcb ); @@ -159,7 +159,7 @@ public: * Function IsOnCopperLayer * @return true if this zone is on a copper layer, false if on a technical layer */ - bool IsOnCopperLayer( void ) + bool IsOnCopperLayer( void ) const { return ( GetLayer() < FIRST_NO_COPPER_LAYER ) ? true : false; } @@ -183,7 +183,7 @@ public: /** * Function HitTest * tests if the given wxPoint is within the bounds of this object. - * For zones, this means near an ouline segment + * For zones, this means near an outline segment * @param refPos A wxPoint to test * @return bool - true if a hit, else false */ @@ -211,13 +211,13 @@ public: /** * Function AddClearanceAreasPolygonsToPolysList - * Add non copper areas polygons (pads and tracks with clearence) + * Add non copper areas polygons (pads and tracks with clearance) * to a filled copper area * used in BuildFilledPolysListData when calculating filled areas in a zone * Non copper areas are pads and track and their clearance area * The filled copper area must be computed before * BuildFilledPolysListData() call this function just after creating the - * filled copper area polygon (without clearence areas + * filled copper area polygon (without clearance areas * @param aPcb: the current board */ void AddClearanceAreasPolygonsToPolysList( BOARD* aPcb ); @@ -341,7 +341,7 @@ public: } - /** Acces to m_Poly parameters + /** Access to m_Poly parameters */ int GetNumCorners( void ) const @@ -417,6 +417,9 @@ public: }; unsigned int GetCornerRadius() const { return cornerRadius; }; + + virtual wxString GetSelectMenuText() const; + }; diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp index e6dd05a77e..b478ee4127 100644 --- a/pcbnew/controle.cpp +++ b/pcbnew/controle.cpp @@ -197,7 +197,7 @@ BOARD_ITEM* PCB_BASE_FRAME::PcbGeneralLocateAndDisplay( int aHotKeyCode ) item = (*m_Collector)[i]; - text = item->MenuText( m_Pcb ); + text = item->GetSelectMenuText(); xpm = item->MenuIcon(); ADD_MENUITEM( &itemMenu, ID_POPUP_PCB_ITEM_SELECTION_START + i, text, xpm ); diff --git a/pcbnew/drc.cpp b/pcbnew/drc.cpp index 0c9109633c..a3b5f6e07f 100644 --- a/pcbnew/drc.cpp +++ b/pcbnew/drc.cpp @@ -483,8 +483,9 @@ void DRC::testUnconnected() D_PAD* padEnd = rat->m_PadEnd; DRC_ITEM* uncItem = new DRC_ITEM( DRCE_UNCONNECTED_PADS, - padStart->MenuText( m_pcb ), padEnd->MenuText( m_pcb ), - padStart->GetPosition(), padEnd->GetPosition() ); + padStart->GetSelectMenuText(), + padEnd->GetSelectMenuText(), + padStart->GetPosition(), padEnd->GetPosition() ); m_unconnected.push_back( uncItem ); } diff --git a/pcbnew/drc_marker_functions.cpp b/pcbnew/drc_marker_functions.cpp index 37087584c4..1ebe84dafc 100644 --- a/pcbnew/drc_marker_functions.cpp +++ b/pcbnew/drc_marker_functions.cpp @@ -42,7 +42,7 @@ MARKER_PCB* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, MARKER_PCB* fillMe ) { - wxString textA = aTrack->MenuText( m_pcb ); + wxString textA = aTrack->GetSelectMenuText(); wxString textB; wxPoint position; @@ -50,7 +50,7 @@ MARKER_PCB* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, M if( aItem ) // aItem might be NULL { - textB = aItem->MenuText( m_pcb ); + textB = aItem->GetSelectMenuText(); posB = aItem->GetPosition(); if( aItem->Type() == TYPE_PAD ) @@ -108,8 +108,8 @@ MARKER_PCB* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, M MARKER_PCB* DRC::fillMarker( D_PAD* aPad, D_PAD* bPad, int aErrorCode, MARKER_PCB* fillMe ) { - wxString textA = aPad->MenuText( m_pcb ); - wxString textB = bPad->MenuText( m_pcb ); + wxString textA = aPad->GetSelectMenuText(); + wxString textB = bPad->GetSelectMenuText(); wxPoint posA = aPad->GetPosition(); wxPoint posB = bPad->GetPosition(); @@ -125,7 +125,7 @@ MARKER_PCB* DRC::fillMarker( D_PAD* aPad, D_PAD* bPad, int aErrorCode, MARKER_PC MARKER_PCB* DRC::fillMarker( ZONE_CONTAINER* aArea, int aErrorCode, MARKER_PCB* fillMe ) { - wxString textA = aArea->MenuText( m_pcb ); + wxString textA = aArea->GetSelectMenuText(); wxPoint posA = aArea->GetPosition(); @@ -143,7 +143,7 @@ MARKER_PCB* DRC::fillMarker( const ZONE_CONTAINER* aArea, int aErrorCode, MARKER_PCB* fillMe ) { - wxString textA = aArea->MenuText( m_pcb ); + wxString textA = aArea->GetSelectMenuText(); wxPoint posA = aPos; diff --git a/pcbnew/modedit.cpp b/pcbnew/modedit.cpp index dd1af35762..396e73fa36 100644 --- a/pcbnew/modedit.cpp +++ b/pcbnew/modedit.cpp @@ -99,7 +99,7 @@ BOARD_ITEM* WinEDA_ModuleEditFrame::ModeditLocateAndDisplay( int aHotKeyCode ) item = (*m_Collector)[ii]; - text = item->MenuText( GetBoard() ); + text = item->GetSelectMenuText(); xpm = item->MenuIcon(); ADD_MENUITEM( &itemMenu, diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index 9791054cc2..bcae737aee 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -617,7 +617,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForFootprints( MODULE* aModule, wxMenu* menu sub_menu_footprint = new wxMenu; - msg = aModule->MenuText( GetBoard() ); + msg = aModule->GetSelectMenuText(); ADD_MENUITEM_WITH_SUBMENU( menu, sub_menu_footprint, -1, msg, module_xpm ); if( !flags ) @@ -657,7 +657,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpTexts( TEXTE_MODULE* FpText, wxMenu* me wxMenu* sub_menu_Fp_text; int flags = FpText->m_Flags; - wxString msg = FpText->MenuText( GetBoard() ); + wxString msg = FpText->GetSelectMenuText(); sub_menu_Fp_text = new wxMenu; @@ -717,7 +717,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu ) updateTraceWidthSelectBox(); updateViaSizeSelectBox(); - wxString msg = Pad->MenuText( GetBoard() ); + wxString msg = Pad->GetSelectMenuText(); sub_menu_Pad = new wxMenu; ADD_MENUITEM_WITH_SUBMENU( menu, sub_menu_Pad, -1, msg, pad_xpm ); @@ -767,7 +767,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForTexts( TEXTE_PCB* Text, wxMenu* menu ) wxMenu* sub_menu_Text; int flags = Text->m_Flags; - wxString msg = Text->MenuText( GetBoard() ); + wxString msg = Text->GetSelectMenuText(); sub_menu_Text = new wxMenu; diff --git a/pcbnew/zones_test_and_combine_areas.cpp b/pcbnew/zones_test_and_combine_areas.cpp index d2776208cb..bba711025e 100644 --- a/pcbnew/zones_test_and_combine_areas.cpp +++ b/pcbnew/zones_test_and_combine_areas.cpp @@ -896,11 +896,12 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E // COPPERAREA_COPPERAREA error: copper area ref corner inside copper area if( aCreate_Markers ) { - wxString msg1 = Area_Ref->MenuText( this ); - wxString msg2 = Area_To_Test->MenuText( this ); - MARKER_PCB* marker = new MARKER_PCB( COPPERAREA_INSIDE_COPPERAREA, wxPoint( x, y ), - msg1, wxPoint( x, y ), - msg2, wxPoint( x, y ) ); + wxString msg1 = Area_Ref->GetSelectMenuText(); + wxString msg2 = Area_To_Test->GetSelectMenuText(); + MARKER_PCB* marker = new MARKER_PCB( COPPERAREA_INSIDE_COPPERAREA, + wxPoint( x, y ), + msg1, wxPoint( x, y ), + msg2, wxPoint( x, y ) ); Add( marker ); } nerrors++; @@ -917,11 +918,12 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E // COPPERAREA_COPPERAREA error: copper area corner inside copper area ref if( aCreate_Markers ) { - wxString msg1 = Area_To_Test->MenuText( this ); - wxString msg2 = Area_Ref->MenuText( this ); - MARKER_PCB* marker = new MARKER_PCB( COPPERAREA_INSIDE_COPPERAREA, wxPoint( x, y ), - msg1, wxPoint( x, y ), - msg2, wxPoint( x, y ) ); + wxString msg1 = Area_To_Test->GetSelectMenuText(); + wxString msg2 = Area_Ref->GetSelectMenuText(); + MARKER_PCB* marker = new MARKER_PCB( COPPERAREA_INSIDE_COPPERAREA, + wxPoint( x, y ), + msg1, wxPoint( x, y ), + msg2, wxPoint( x, y ) ); Add( marker ); } nerrors++; @@ -985,12 +987,12 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E // COPPERAREA_COPPERAREA error : intersect or too close if( aCreate_Markers ) { - wxString msg1 = Area_Ref->MenuText( this ); - wxString msg2 = Area_To_Test->MenuText( this ); + wxString msg1 = Area_Ref->GetSelectMenuText(); + wxString msg2 = Area_To_Test->GetSelectMenuText(); MARKER_PCB* marker = new MARKER_PCB( COPPERAREA_CLOSE_TO_COPPERAREA, - wxPoint( x, y ), - msg1, wxPoint( x, y ), - msg2, wxPoint( x, y ) ); + wxPoint( x, y ), + msg1, wxPoint( x, y ), + msg2, wxPoint( x, y ) ); Add( marker ); } nerrors++;