Fix "Properties" not appearing in right click menu for graphic line.
This commit is contained in:
parent
d4dee3c5a0
commit
d3edeaec50
|
@ -2216,7 +2216,7 @@ void SCH_LEGACY_PLUGIN::saveLine( SCH_LINE* aLine )
|
||||||
m_out->Print( 0, "Wire %s %s", layer, width );
|
m_out->Print( 0, "Wire %s %s", layer, width );
|
||||||
|
|
||||||
// Write line style (width, type, color) only for non default values
|
// Write line style (width, type, color) only for non default values
|
||||||
if( aLine->GetLayer() == LAYER_NOTES )
|
if( aLine->IsGraphicLine() )
|
||||||
{
|
{
|
||||||
if( aLine->GetPenSize() != aLine->GetDefaultWidth() )
|
if( aLine->GetPenSize() != aLine->GetDefaultWidth() )
|
||||||
m_out->Print( 0, " %s %d", T_WIDTH, aLine->GetLineSize() );
|
m_out->Print( 0, " %s %d", T_WIDTH, aLine->GetLineSize() );
|
||||||
|
|
|
@ -270,7 +270,7 @@ COLOR4D SCH_LINE::GetLineColor() const
|
||||||
|
|
||||||
int SCH_LINE::GetDefaultStyle() const
|
int SCH_LINE::GetDefaultStyle() const
|
||||||
{
|
{
|
||||||
if( m_Layer == LAYER_NOTES )
|
if( IsGraphicLine() )
|
||||||
return PLOTDASHTYPE_DASH;
|
return PLOTDASHTYPE_DASH;
|
||||||
|
|
||||||
return PLOTDASHTYPE_SOLID;
|
return PLOTDASHTYPE_SOLID;
|
||||||
|
@ -520,7 +520,7 @@ SCH_LINE* SCH_LINE::MergeOverlap( SCH_LINE* aLine )
|
||||||
|
|
||||||
void SCH_LINE::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList )
|
void SCH_LINE::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList )
|
||||||
{
|
{
|
||||||
if( GetLayer() == LAYER_NOTES )
|
if( IsGraphicLine() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( ( GetLayer() == LAYER_BUS ) || ( GetLayer() == LAYER_WIRE ) )
|
if( ( GetLayer() == LAYER_BUS ) || ( GetLayer() == LAYER_WIRE ) )
|
||||||
|
@ -565,7 +565,7 @@ bool SCH_LINE::UpdateDanglingState( std::vector<DANGLING_END_ITEM>& aItemList )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( GetLayer() == LAYER_BUS || GetLayer() == LAYER_NOTES )
|
else if( GetLayer() == LAYER_BUS || IsGraphicLine() )
|
||||||
{
|
{
|
||||||
// Lines on the notes layer and the bus layer cannot be tested for dangling ends.
|
// Lines on the notes layer and the bus layer cannot be tested for dangling ends.
|
||||||
previousStartState = previousEndState = m_startIsDangling = m_endIsDangling = false;
|
previousStartState = previousEndState = m_startIsDangling = m_endIsDangling = false;
|
||||||
|
@ -663,7 +663,7 @@ void SCH_LINE::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
SCH_SHEET_PATH* aSheetPath )
|
SCH_SHEET_PATH* aSheetPath )
|
||||||
{
|
{
|
||||||
// Net list item not required for graphic lines.
|
// Net list item not required for graphic lines.
|
||||||
if( (GetLayer() != LAYER_BUS) && (GetLayer() != LAYER_WIRE) )
|
if( IsGraphicLine() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
|
@ -813,3 +813,8 @@ void SCH_LINE::GetMsgPanelInfo( EDA_UNITS aUnits, MSG_PANEL_ITEMS& aList )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::IsGraphicLine() const
|
||||||
|
{
|
||||||
|
return ( GetLayer() == LAYER_NOTES );
|
||||||
|
}
|
|
@ -219,6 +219,13 @@ public:
|
||||||
void Show( int nestLevel, std::ostream& os ) const override;
|
void Show( int nestLevel, std::ostream& os ) const override;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns if the line is a graphic (non electrical line)
|
||||||
|
*
|
||||||
|
* Currently, anything on the internal NOTES layer is a graphic line
|
||||||
|
*/
|
||||||
|
bool IsGraphicLine() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool doIsConnected( const wxPoint& aPosition ) const override;
|
bool doIsConnected( const wxPoint& aPosition ) const override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -175,21 +175,30 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
auto propertiesCondition = [] ( const SELECTION& aSel ) {
|
auto propertiesCondition = []( const SELECTION& aSel ) {
|
||||||
if( aSel.GetSize() != 1 )
|
if( aSel.GetSize() != 1 )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch( static_cast<EDA_ITEM*>( aSel.Front() )->Type() )
|
auto item = static_cast<EDA_ITEM*>( aSel.Front() );
|
||||||
|
switch( item->Type() )
|
||||||
{
|
{
|
||||||
case SCH_MARKER_T:
|
case SCH_MARKER_T:
|
||||||
case SCH_JUNCTION_T:
|
case SCH_JUNCTION_T:
|
||||||
case SCH_NO_CONNECT_T:
|
case SCH_NO_CONNECT_T:
|
||||||
case SCH_BUS_WIRE_ENTRY_T:
|
case SCH_BUS_WIRE_ENTRY_T:
|
||||||
case SCH_BUS_BUS_ENTRY_T:
|
case SCH_BUS_BUS_ENTRY_T:
|
||||||
case SCH_LINE_T:
|
|
||||||
case SCH_SHEET_PIN_T:
|
case SCH_SHEET_PIN_T:
|
||||||
case SCH_PIN_T:
|
case SCH_PIN_T:
|
||||||
return false;
|
return false;
|
||||||
|
case SCH_LINE_T:
|
||||||
|
{
|
||||||
|
SCH_LINE* line = static_cast<SCH_LINE*>( item );
|
||||||
|
|
||||||
|
assert( line != nullptr );
|
||||||
|
|
||||||
|
// Only graphic lines support properties in the file format
|
||||||
|
return line->IsGraphicLine();
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1282,10 +1291,10 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
case SCH_LINE_T:
|
case SCH_LINE_T:
|
||||||
{
|
{
|
||||||
SCH_LINE* line = (SCH_LINE*) item;
|
SCH_LINE* line = static_cast<SCH_LINE*>( item );
|
||||||
|
|
||||||
// We purposely disallow editing everything except graphic lines
|
// We purposely disallow editing everything except graphic lines
|
||||||
if( line->GetLayer() != LAYER_NOTES )
|
if( !line->IsGraphicLine() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
DIALOG_EDIT_LINE_STYLE dlg( m_frame, line );
|
DIALOG_EDIT_LINE_STYLE dlg( m_frame, line );
|
||||||
|
|
Loading…
Reference in New Issue