Rewrite unit/convert handling so it also works for LibEdit.

This commit is contained in:
Jeff Young 2018-09-02 21:19:22 +01:00
parent e9c974fcdc
commit 1c52824913
12 changed files with 153 additions and 78 deletions

View File

@ -159,12 +159,6 @@ public:
*/ */
wxString GetUnitReference( int aUnit ) override; wxString GetUnitReference( int aUnit ) override;
/**
* A temporary unit designation for rendering, preview, etc.
*/
void SetTmpUnit( int aUnit ) { tmpUnit = aUnit; }
int GetTmpUnit() { return tmpUnit; }
/** /**
* A temporary conversion (deMorgan) designation for rendering, preview, etc. * A temporary conversion (deMorgan) designation for rendering, preview, etc.
*/ */

View File

@ -110,11 +110,10 @@ bool PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow()
m_frame->SetShowPageLimits( m_checkPageLimits->GetValue() ); m_frame->SetShowPageLimits( m_checkPageLimits->GetValue() );
m_frame->SetFootprintPreview( m_footprintPreview->GetValue() ); m_frame->SetFootprintPreview( m_footprintPreview->GetValue() );
SCH_DRAW_PANEL* canvas = m_frame->GetCanvas(); // Update canvas
auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( canvas->GetView()->GetPainter() ); m_frame->GetRenderSettings()->m_ShowHiddenPins = m_checkShowHiddenPins->GetValue();
KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings(); m_frame->GetCanvas()->GetView()->MarkDirty();
settings->SetShowHiddenPins( m_checkShowHiddenPins->GetValue() ); m_frame->GetCanvas()->Refresh();
canvas->ForceRefresh();
return true; return true;
} }

View File

@ -83,11 +83,8 @@ bool PANEL_LIBEDIT_SETTINGS::TransferDataFromWindow()
m_frame->SetShowElectricalType( m_checkShowPinElectricalType->GetValue() ); m_frame->SetShowElectricalType( m_checkShowPinElectricalType->GetValue() );
SCH_DRAW_PANEL* canvas = m_frame->GetCanvas(); m_frame->GetRenderSettings()->m_ShowPinsElectricalType = m_frame->GetShowElectricalType();
auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( canvas->GetView()->GetPainter() ); m_frame->GetCanvas()->Refresh();
KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings();
settings->SetShowPinsElectricalType( m_checkShowPinElectricalType->GetValue() );
canvas->ForceRefresh();
return true; return true;
} }

View File

@ -492,8 +492,8 @@ void SCH_EDIT_FRAME::LoadSettings( wxConfigBase* aCfg )
auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( GetCanvas()->GetView()->GetPainter() ); auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( GetCanvas()->GetView()->GetPainter() );
KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings(); KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings();
settings->SetShowPinsElectricalType( false ); settings->m_ShowPinsElectricalType = false ;
settings->SetShowHiddenPins( m_showAllPins ); settings->m_ShowHiddenPins = m_showAllPins;
} }
@ -608,11 +608,11 @@ void LIB_EDIT_FRAME::LoadSettings( wxConfigBase* aCfg )
auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( GetCanvas()->GetView()->GetPainter() ); auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( GetCanvas()->GetView()->GetPainter() );
KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings(); KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings();
settings->SetShowPinsElectricalType( m_showPinElectricalTypeName ); settings->m_ShowPinsElectricalType = m_showPinElectricalTypeName;
// Hidden elements must be editable // Hidden elements must be editable
settings->SetShowHiddenText( true ); settings->m_ShowHiddenText = true;
settings->SetShowHiddenPins( true ); settings->m_ShowHiddenPins = true;
} }

View File

@ -621,8 +621,6 @@ void DrawMovingBlockOutlines( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint&
if( component == NULL ) if( component == NULL )
return; return;
int unit = parent->GetUnit();
int convert = parent->GetConvert();
auto cp = parent->GetCrossHairPosition( true ); auto cp = parent->GetCrossHairPosition( true );
auto lcp = block->GetLastCursorPosition(); auto lcp = block->GetLastCursorPosition();

View File

@ -68,6 +68,7 @@
#include <wx/progdlg.h> #include <wx/progdlg.h>
#include <tool/context_menu.h> #include <tool/context_menu.h>
#include <sch_view.h> #include <sch_view.h>
#include <sch_painter.h>
int LIB_EDIT_FRAME:: m_unit = 1; int LIB_EDIT_FRAME:: m_unit = 1;
int LIB_EDIT_FRAME:: m_convert = 1; int LIB_EDIT_FRAME:: m_convert = 1;
@ -377,7 +378,11 @@ void LIB_EDIT_FRAME::UpdatePartSelectList()
void LIB_EDIT_FRAME::OnShowElectricalType( wxCommandEvent& event ) void LIB_EDIT_FRAME::OnShowElectricalType( wxCommandEvent& event )
{ {
SetShowElectricalType( not GetShowElectricalType() ); m_showPinElectricalTypeName = !m_showPinElectricalTypeName;
// Update canvas
GetRenderSettings()->m_ShowPinsElectricalType = m_showPinElectricalTypeName;
GetCanvas()->GetView()->MarkDirty();
GetCanvas()->Refresh(); GetCanvas()->Refresh();
} }
@ -568,7 +573,12 @@ void LIB_EDIT_FRAME::OnSelectPart( wxCommandEvent& event )
m_lastDrawItem = NULL; m_lastDrawItem = NULL;
m_unit = i + 1; m_unit = i + 1;
m_canvas->Refresh();
// Update canvas
GetRenderSettings()->m_ShowUnit = m_unit;
GetCanvas()->GetView()->MarkDirty();
GetCanvas()->Refresh();
DisplayCmpDoc(); DisplayCmpDoc();
} }
@ -621,7 +631,11 @@ void LIB_EDIT_FRAME::OnSelectBodyStyle( wxCommandEvent& event )
m_convert = 2; m_convert = 2;
m_lastDrawItem = NULL; m_lastDrawItem = NULL;
m_canvas->Refresh();
// Update canvas
GetRenderSettings()->m_ShowConvert = m_convert;
GetCanvas()->GetView()->MarkDirty();
GetCanvas()->Refresh();
} }
@ -1691,9 +1705,15 @@ void LIB_EDIT_FRAME::SetScreen( BASE_SCREEN* aScreen )
void LIB_EDIT_FRAME::RebuildView() void LIB_EDIT_FRAME::RebuildView()
{ {
auto view = GetCanvas()->GetView(); KIGFX::SCH_VIEW* view = GetCanvas()->GetView();
view->Clear(); view->Clear();
GetRenderSettings()->m_ShowUnit = m_unit;
GetRenderSettings()->m_ShowConvert = m_convert;
view->DisplayComponent( m_my_part ); view->DisplayComponent( m_my_part );
view->HideWorksheet(); view->HideWorksheet();
view->ClearHiddenFlags(); view->ClearHiddenFlags();
} }

View File

@ -409,12 +409,19 @@ void SCH_BASE_FRAME::RedrawScreen2( const wxPoint& posBefore )
GetGalCanvas()->Refresh(); GetGalCanvas()->Refresh();
} }
SCH_DRAW_PANEL *SCH_BASE_FRAME::GetCanvas() const SCH_DRAW_PANEL* SCH_BASE_FRAME::GetCanvas() const
{ {
return static_cast<SCH_DRAW_PANEL*>( GetGalCanvas() ); return static_cast<SCH_DRAW_PANEL*>( GetGalCanvas() );
} }
KIGFX::SCH_RENDER_SETTINGS* SCH_BASE_FRAME::GetRenderSettings()
{
KIGFX::PAINTER* painter = GetGalCanvas()->GetView()->GetPainter();
return static_cast<KIGFX::SCH_RENDER_SETTINGS*>( painter->GetSettings() );
}
bool SCH_BASE_FRAME::HandleBlockBegin( wxDC* aDC, EDA_KEY aKey, const wxPoint& aPosition, bool SCH_BASE_FRAME::HandleBlockBegin( wxDC* aDC, EDA_KEY aKey, const wxPoint& aPosition,
int aExplicitCommand ) int aExplicitCommand )
{ {

View File

@ -33,6 +33,11 @@
#include "template_fieldnames.h" #include "template_fieldnames.h"
namespace KIGFX
{
class SCH_RENDER_SETTINGS;
}
class PAGE_INFO; class PAGE_INFO;
class TITLE_BLOCK; class TITLE_BLOCK;
class LIB_VIEW_FRAME; class LIB_VIEW_FRAME;
@ -97,9 +102,11 @@ public:
virtual ~SCH_BASE_FRAME(); virtual ~SCH_BASE_FRAME();
SCH_DRAW_PANEL *GetCanvas() const override; SCH_DRAW_PANEL* GetCanvas() const override;
SCH_SCREEN* GetScreen() const override; SCH_SCREEN* GetScreen() const override;
KIGFX::SCH_RENDER_SETTINGS* GetRenderSettings();
/** /**
* @return the increment value of the position of an item * @return the increment value of the position of an item
* for the repeat command * for the repeat command

View File

@ -75,7 +75,9 @@ namespace KIGFX {
}; };
SCH_RENDER_SETTINGS::SCH_RENDER_SETTINGS() SCH_RENDER_SETTINGS::SCH_RENDER_SETTINGS() :
m_ShowUnit( 0 ),
m_ShowConvert( 0 )
{ {
ImportLegacyColors( nullptr ); ImportLegacyColors( nullptr );
} }
@ -209,9 +211,35 @@ bool SCH_PAINTER::Draw( const VIEW_ITEM *aItem, int aLayer )
} }
bool SCH_PAINTER::isUnitAndConversionShown( const LIB_ITEM* aItem )
{
if( m_schSettings.m_ShowUnit // showing a specific unit
&& aItem->GetUnit() // item is unit-specific
&& aItem->GetUnit() != m_schSettings.m_ShowUnit )
{
return false;
}
if( m_schSettings.m_ShowConvert // showing a specific conversion
&& aItem->GetConvert() // item is conversion-specific
&& aItem->GetConvert() != m_schSettings.m_ShowConvert )
{
return false;
}
return true;
}
void SCH_PAINTER::draw( LIB_PART *aComp, int aLayer, bool aDrawFields, int aUnit, int aConvert, void SCH_PAINTER::draw( LIB_PART *aComp, int aLayer, bool aDrawFields, int aUnit, int aConvert,
std::vector<bool>* danglingPinFlags ) std::vector<bool>* danglingPinFlags )
{ {
if( !aUnit )
aUnit = m_schSettings.m_ShowUnit;
if( !aConvert )
aConvert = m_schSettings.m_ShowConvert;
size_t pinIndex = 0; size_t pinIndex = 0;
auto visitItem = [&]( LIB_ITEM& item, bool aBackground ) auto visitItem = [&]( LIB_ITEM& item, bool aBackground )
@ -258,7 +286,7 @@ void SCH_PAINTER::draw( LIB_ALIAS *aAlias, int aLayer )
{ {
LIB_PART* comp = aAlias->GetPart(); LIB_PART* comp = aAlias->GetPart();
draw( comp, aLayer, false, aAlias->GetTmpUnit(), aAlias->GetTmpConversion() ); draw( comp, aLayer, false );
LIB_FIELDS fields; LIB_FIELDS fields;
comp->GetFields( fields ); comp->GetFields( fields );
@ -281,13 +309,16 @@ static VECTOR2D mapCoords( const wxPoint& aCoord )
} }
void SCH_PAINTER::draw ( LIB_RECTANGLE *aComp, int aLayer ) void SCH_PAINTER::draw( LIB_RECTANGLE *aRect, int aLayer )
{ {
defaultColors(aComp); if( !isUnitAndConversionShown( aRect ) )
return;
defaultColors(aRect);
//m_gal->SetIsStroke( true ); //m_gal->SetIsStroke( true );
m_gal->SetLineWidth( aComp->GetPenSize() ); m_gal->SetLineWidth( aRect->GetPenSize() );
m_gal->DrawRectangle( mapCoords( aComp->GetPosition() ), m_gal->DrawRectangle( mapCoords( aRect->GetPosition() ), mapCoords( aRect->GetEnd() ) );
mapCoords( aComp->GetEnd() ) );
} }
@ -322,37 +353,46 @@ void SCH_PAINTER::defaultColors ( const LIB_ITEM *aItem )
} }
} }
void SCH_PAINTER::draw ( LIB_CIRCLE *aCircle, int aLayer ) void SCH_PAINTER::draw( LIB_CIRCLE *aCircle, int aLayer )
{ {
defaultColors(aCircle); if( !isUnitAndConversionShown( aCircle ) )
m_gal->DrawCircle( mapCoords( aCircle->GetPosition() ), aCircle->GetRadius() ); return;
defaultColors(aCircle);
m_gal->DrawCircle( mapCoords( aCircle->GetPosition() ), aCircle->GetRadius() );
} }
void SCH_PAINTER::draw ( LIB_ARC *aArc, int aLayer ) void SCH_PAINTER::draw( LIB_ARC *aArc, int aLayer )
{ {
defaultColors(aArc); if( !isUnitAndConversionShown( aArc ) )
return;
int sai = aArc->GetFirstRadiusAngle(); defaultColors(aArc);
int eai = aArc->GetSecondRadiusAngle();
if (TRANSFORM().MapAngles( &sai, &eai )) int sai = aArc->GetFirstRadiusAngle();
std::swap(sai, eai); int eai = aArc->GetSecondRadiusAngle();
double sa = (double) sai * M_PI / 1800.0; if (TRANSFORM().MapAngles( &sai, &eai ))
double ea = (double) eai * M_PI / 1800.0 ; std::swap(sai, eai);
VECTOR2D pos = mapCoords( aArc->GetPosition() ); double sa = (double) sai * M_PI / 1800.0;
double ea = (double) eai * M_PI / 1800.0 ;
m_gal->DrawArc( pos, aArc->GetRadius(), sa, ea); VECTOR2D pos = mapCoords( aArc->GetPosition() );
/*m_gal->SetStrokeColor(COLOR4D(1.0,0,0,1.0));
m_gal->DrawLine ( pos - VECTOR2D(20, 20), pos + VECTOR2D(20, 20));
m_gal->DrawLine ( pos - VECTOR2D(-20, 20), pos + VECTOR2D(-20, 20));*/
m_gal->DrawArc( pos, aArc->GetRadius(), sa, ea);
/*m_gal->SetStrokeColor(COLOR4D(1.0,0,0,1.0));
m_gal->DrawLine ( pos - VECTOR2D(20, 20), pos + VECTOR2D(20, 20));
m_gal->DrawLine ( pos - VECTOR2D(-20, 20), pos + VECTOR2D(-20, 20));*/
} }
void SCH_PAINTER::draw( LIB_FIELD *aField, int aLayer ) void SCH_PAINTER::draw( LIB_FIELD *aField, int aLayer )
{ {
if( !isUnitAndConversionShown( aField ) )
return;
COLOR4D color; COLOR4D color;
switch( aField->GetId() ) switch( aField->GetId() )
@ -364,7 +404,7 @@ void SCH_PAINTER::draw( LIB_FIELD *aField, int aLayer )
if( !aField->IsVisible() ) if( !aField->IsVisible() )
{ {
if( m_schSettings.m_showHiddenText ) if( m_schSettings.m_ShowHiddenText )
color = m_schSettings.GetLayerColor( LAYER_HIDDEN ); color = m_schSettings.GetLayerColor( LAYER_HIDDEN );
else else
return; return;
@ -395,7 +435,11 @@ void SCH_PAINTER::draw( LIB_FIELD *aField, int aLayer )
void SCH_PAINTER::draw( LIB_POLYLINE *aLine, int aLayer ) void SCH_PAINTER::draw( LIB_POLYLINE *aLine, int aLayer )
{ {
if( !isUnitAndConversionShown( aLine ) )
return;
defaultColors( aLine ); defaultColors( aLine );
std::deque<VECTOR2D> vtx; std::deque<VECTOR2D> vtx;
for( auto p : aLine->GetPolyPoints() ) for( auto p : aLine->GetPolyPoints() )
@ -410,11 +454,14 @@ void SCH_PAINTER::draw( LIB_POLYLINE *aLine, int aLayer )
void SCH_PAINTER::draw( LIB_TEXT *aText, int aLayer ) void SCH_PAINTER::draw( LIB_TEXT *aText, int aLayer )
{ {
if( !isUnitAndConversionShown( aText ) )
return;
COLOR4D color; COLOR4D color;
if( aText->IsVisible() ) if( aText->IsVisible() )
color = m_schSettings.GetLayerColor( LAYER_NOTES ); color = m_schSettings.GetLayerColor( LAYER_NOTES );
else if( m_schSettings.m_showHiddenText ) else if( m_schSettings.m_ShowHiddenText )
color = m_schSettings.GetLayerColor( LAYER_HIDDEN ); color = m_schSettings.GetLayerColor( LAYER_HIDDEN );
else else
return; return;
@ -454,13 +501,16 @@ static int ExternalPinDecoSize( const LIB_PIN &aPin )
void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer, bool isDangling ) void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer, bool isDangling )
{ {
if( !isUnitAndConversionShown( aPin ) )
return;
COLOR4D color = m_schSettings.GetLayerColor( LAYER_PIN ); COLOR4D color = m_schSettings.GetLayerColor( LAYER_PIN );
if( !aPin->IsVisible() ) if( !aPin->IsVisible() )
{ {
color = m_schSettings.GetLayerColor( LAYER_HIDDEN ); color = m_schSettings.GetLayerColor( LAYER_HIDDEN );
if( !m_schSettings.m_showHiddenPins ) if( !m_schSettings.m_ShowHiddenPins )
return; return;
} }
@ -639,7 +689,7 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer, bool isDangling )
text [BELOW] = aPin->GetNumber(); text [BELOW] = aPin->GetNumber();
} }
if( m_schSettings.m_showPinsElectricalType ) if( m_schSettings.m_ShowPinsElectricalType )
{ {
size [OUTSIDE] = std::max( aPin->GetNameTextSize() * 3 / 4, Millimeter2iu( 0.7 ) ); size [OUTSIDE] = std::max( aPin->GetNameTextSize() * 3 / 4, Millimeter2iu( 0.7 ) );
thickness[OUTSIDE] = size[OUTSIDE] / 6; thickness[OUTSIDE] = size[OUTSIDE] / 6;
@ -844,7 +894,7 @@ void SCH_PAINTER::draw( SCH_TEXT *aText, int aLayer )
if( !aText->IsVisible() ) if( !aText->IsVisible() )
{ {
if( m_schSettings.m_showHiddenText ) if( m_schSettings.m_ShowHiddenText )
color = m_schSettings.GetLayerColor( LAYER_HIDDEN ); color = m_schSettings.GetLayerColor( LAYER_HIDDEN );
else else
return; return;
@ -975,7 +1025,7 @@ void SCH_PAINTER::draw( SCH_FIELD *aField, int aLayer )
if( !aField->IsVisible() ) if( !aField->IsVisible() )
{ {
if( m_schSettings.m_showHiddenText ) if( m_schSettings.m_ShowHiddenText )
color = m_schSettings.GetLayerColor( LAYER_HIDDEN ); color = m_schSettings.GetLayerColor( LAYER_HIDDEN );
else else
return; return;

View File

@ -38,7 +38,6 @@ class LIB_ARC;
class LIB_FIELD; class LIB_FIELD;
class LIB_TEXT; class LIB_TEXT;
class SCH_COMPONENT; class SCH_COMPONENT;
class SCH_PIN;
class SCH_FIELD; class SCH_FIELD;
class SCH_JUNCTION; class SCH_JUNCTION;
class SCH_LABEL; class SCH_LABEL;
@ -77,10 +76,6 @@ public:
/// @copydoc RENDER_SETTINGS::GetColor() /// @copydoc RENDER_SETTINGS::GetColor()
virtual const COLOR4D& GetColor( const VIEW_ITEM* aItem, int aLayer ) const override; virtual const COLOR4D& GetColor( const VIEW_ITEM* aItem, int aLayer ) const override;
void SetShowHiddenText( bool aShow ) { m_showHiddenText = aShow; }
void SetShowHiddenPins( bool aShow ) { m_showHiddenPins = aShow; }
void SetShowPinsElectricalType( bool aShow ) { m_showPinsElectricalType = aShow; }
bool IsBackgroundDark() const override bool IsBackgroundDark() const override
{ {
auto luma = m_layerColors[ LAYER_SCHEMATIC_BACKGROUND ].GetBrightness(); auto luma = m_layerColors[ LAYER_SCHEMATIC_BACKGROUND ].GetBrightness();
@ -88,10 +83,12 @@ public:
return luma < 0.5; return luma < 0.5;
} }
private: int m_ShowUnit; // Show all units if 0
bool m_showHiddenText; int m_ShowConvert; // Show all conversions if 0
bool m_showHiddenPins;
bool m_showPinsElectricalType; bool m_ShowHiddenText;
bool m_ShowHiddenPins;
bool m_ShowPinsElectricalType;
}; };
@ -132,7 +129,6 @@ private:
void draw( LIB_FIELD *, int ); void draw( LIB_FIELD *, int );
void draw( LIB_TEXT *, int ); void draw( LIB_TEXT *, int );
void draw( SCH_COMPONENT *, int ); void draw( SCH_COMPONENT *, int );
void draw( SCH_PIN *, int );
void draw( SCH_JUNCTION *, int ); void draw( SCH_JUNCTION *, int );
void draw( SCH_FIELD *, int ); void draw( SCH_FIELD *, int );
void draw( SCH_TEXT *, int ); void draw( SCH_TEXT *, int );
@ -147,8 +143,9 @@ private:
void draw( SCH_LINE *, int ); void draw( SCH_LINE *, int );
void draw( SCH_BUS_ENTRY_BASE *aEntry, int aLayer ); void draw( SCH_BUS_ENTRY_BASE *aEntry, int aLayer );
bool isUnitAndConversionShown( const LIB_ITEM* aItem );
void defaultColors( const LIB_ITEM *aItem ); void defaultColors( const LIB_ITEM* aItem );
void triLine ( const VECTOR2D &a, const VECTOR2D &b, const VECTOR2D &c ); void triLine ( const VECTOR2D &a, const VECTOR2D &b, const VECTOR2D &c );

View File

@ -218,7 +218,11 @@ void LIB_VIEW_FRAME::SetUnitAndConvert( int aUnit, int aConvert )
m_convert = aConvert > 0 ? aConvert : 1; m_convert = aConvert > 0 ? aConvert : 1;
m_selection_changed = false; m_selection_changed = false;
updatePreviewSymbol(); // Update canvas
GetRenderSettings()->m_ShowUnit = m_unit;
GetRenderSettings()->m_ShowConvert = m_convert;
GetCanvas()->GetView()->MarkDirty();
GetCanvas()->Refresh();
} }
@ -262,8 +266,8 @@ void LIB_VIEW_FRAME::updatePreviewSymbol()
if( alias ) if( alias )
{ {
alias->SetTmpUnit( m_unit ); GetRenderSettings()->m_ShowUnit = m_unit;
alias->SetTmpConversion( m_convert ); GetRenderSettings()->m_ShowConvert = m_convert;
view->Add( alias ); view->Add( alias );
m_previewItem = alias; m_previewItem = alias;
@ -339,12 +343,12 @@ void LIB_VIEW_FRAME::OnSetRelativeOffset( wxCommandEvent& event )
void LIB_VIEW_FRAME::OnShowElectricalType( wxCommandEvent& event ) void LIB_VIEW_FRAME::OnShowElectricalType( wxCommandEvent& event )
{ {
SetShowElectricalType( not GetShowElectricalType() ); m_showPinElectricalTypeName = !m_showPinElectricalTypeName;
auto painter = dynamic_cast<KIGFX::SCH_PAINTER*>( GetCanvas()->GetView()->GetPainter() ); // Update canvas
KIGFX::SCH_RENDER_SETTINGS* settings = painter->GetSettings(); GetRenderSettings()->m_ShowPinsElectricalType = m_showPinElectricalTypeName;
settings->SetShowPinsElectricalType( GetShowElectricalType() ); GetCanvas()->GetView()->MarkDirty();
GetCanvas()->ForceRefresh(); GetCanvas()->Refresh();
} }

View File

@ -27,6 +27,7 @@
#include <symbol_lib_table.h> #include <symbol_lib_table.h>
#include <sch_preview_panel.h> #include <sch_preview_panel.h>
#include <pgm_base.h> #include <pgm_base.h>
#include <sch_painter.h>
SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET( wxWindow* aParent, KIWAY& aKiway ) : SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET( wxWindow* aParent, KIWAY& aKiway ) :
wxPanel( aParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ), wxPanel( aParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ),
@ -80,6 +81,7 @@ void SYMBOL_PREVIEW_WIDGET::SetStatusText( wxString const& aText )
void SYMBOL_PREVIEW_WIDGET::DisplaySymbol( const LIB_ID& aSymbolID, int aUnit ) void SYMBOL_PREVIEW_WIDGET::DisplaySymbol( const LIB_ID& aSymbolID, int aUnit )
{ {
KIGFX::VIEW* view = m_preview->GetView(); KIGFX::VIEW* view = m_preview->GetView();
auto settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
LIB_ALIAS* alias = nullptr; LIB_ALIAS* alias = nullptr;
try try
@ -109,7 +111,7 @@ void SYMBOL_PREVIEW_WIDGET::DisplaySymbol( const LIB_ID& aSymbolID, int aUnit )
if( part->IsMulti() && aUnit == 0 ) if( part->IsMulti() && aUnit == 0 )
aUnit = 1; aUnit = 1;
alias->SetTmpUnit( aUnit ); settings->m_ShowUnit = aUnit;
view->Add( alias ); view->Add( alias );
m_previewItem = alias; m_previewItem = alias;