Move schematic defaults to SCHEMATIC and add some missing settings entries

This commit is contained in:
Jon Evans 2020-05-19 23:34:55 -04:00
parent b074cdf185
commit fbc42a8cb5
18 changed files with 174 additions and 82 deletions

View File

@ -22,6 +22,7 @@
*/ */
#include <fctsys.h> #include <fctsys.h>
#include <eeschema_settings.h>
#include <lib_edit_frame.h> #include <lib_edit_frame.h>
#include <libedit_settings.h> #include <libedit_settings.h>
#include <pgm_base.h> #include <pgm_base.h>

View File

@ -28,6 +28,8 @@
#include <panel_setup_formatting.h> #include <panel_setup_formatting.h>
#include <sch_junction.h> #include <sch_junction.h>
#include <gr_text.h> #include <gr_text.h>
#include <schematic_settings.h>
PANEL_SETUP_FORMATTING::PANEL_SETUP_FORMATTING( wxWindow* aWindow, SCH_EDIT_FRAME* aFrame ) : PANEL_SETUP_FORMATTING::PANEL_SETUP_FORMATTING( wxWindow* aWindow, SCH_EDIT_FRAME* aFrame ) :
PANEL_SETUP_FORMATTING_BASE( aWindow ), PANEL_SETUP_FORMATTING_BASE( aWindow ),
@ -70,7 +72,7 @@ bool PANEL_SETUP_FORMATTING::TransferDataToWindow()
m_busWidth.SetValue( m_frame->GetDefaultBusThickness() ); m_busWidth.SetValue( m_frame->GetDefaultBusThickness() );
m_wireWidth.SetValue( m_frame->GetDefaultWireThickness() ); m_wireWidth.SetValue( m_frame->GetDefaultWireThickness() );
m_pinSymbolSize.SetValue( m_frame->GetPinSymbolSize() ); m_pinSymbolSize.SetValue( m_frame->GetPinSymbolSize() );
m_junctionSize.SetValue( SCH_JUNCTION::g_SymbolSize ); m_junctionSize.SetValue( m_frame->GetDefaults().m_JunctionSize );
wxString offsetRatio = wxString::Format( "%f", m_frame->GetTextOffsetRatio() * 100.0 ); wxString offsetRatio = wxString::Format( "%f", m_frame->GetTextOffsetRatio() * 100.0 );
m_textOffsetRatioCtrl->SetValue( offsetRatio ); m_textOffsetRatioCtrl->SetValue( offsetRatio );
@ -100,7 +102,6 @@ bool PANEL_SETUP_FORMATTING::TransferDataFromWindow()
firstRefId != LIB_PART::GetSubpartFirstId() ) firstRefId != LIB_PART::GetSubpartFirstId() )
{ {
LIB_PART::SetSubpartIdNotation( refSeparator, firstRefId ); LIB_PART::SetSubpartIdNotation( refSeparator, firstRefId );
m_frame->SaveProjectSettings();
} }
m_frame->SetDefaultTextSize( (int) m_textSize.GetValue() ); m_frame->SetDefaultTextSize( (int) m_textSize.GetValue() );
@ -108,7 +109,10 @@ bool PANEL_SETUP_FORMATTING::TransferDataFromWindow()
m_frame->SetDefaultWireThickness( (int) m_wireWidth.GetValue() ); m_frame->SetDefaultWireThickness( (int) m_wireWidth.GetValue() );
m_frame->SetDefaultBusThickness( (int) m_busWidth.GetValue() ); m_frame->SetDefaultBusThickness( (int) m_busWidth.GetValue() );
m_frame->SetPinSymbolSize( (int) m_pinSymbolSize.GetValue() ); m_frame->SetPinSymbolSize( (int) m_pinSymbolSize.GetValue() );
SCH_JUNCTION::g_SymbolSize = (int) m_junctionSize.GetValue();
m_frame->GetDefaults().m_JunctionSize = (int) m_junctionSize.GetValue();
m_frame->SaveProjectSettings();
double dtmp = 0.0; double dtmp = 0.0;
wxString msg = m_textOffsetRatioCtrl->GetValue(); wxString msg = m_textOffsetRatioCtrl->GetValue();
@ -117,9 +121,10 @@ bool PANEL_SETUP_FORMATTING::TransferDataFromWindow()
m_frame->GetRenderSettings()->SetDefaultPenWidth( m_frame->GetDefaultLineWidth() ); m_frame->GetRenderSettings()->SetDefaultPenWidth( m_frame->GetDefaultLineWidth() );
m_frame->GetRenderSettings()->m_DefaultWireThickness = m_frame->GetDefaultWireThickness(); m_frame->GetRenderSettings()->m_DefaultWireThickness = m_frame->GetDefaultWireThickness();
m_frame->GetRenderSettings()->m_DefaultBusThickness = m_frame->GetDefaultBusThickness(); m_frame->GetRenderSettings()->m_DefaultBusThickness = m_frame->GetDefaultBusThickness();
m_frame->GetRenderSettings()->m_TextOffsetRatio = m_frame->GetTextOffsetRatio(); m_frame->GetRenderSettings()->m_TextOffsetRatio = m_frame->GetTextOffsetRatio();
m_frame->GetRenderSettings()->m_PinSymbolSize = m_frame->GetPinSymbolSize(); m_frame->GetRenderSettings()->m_PinSymbolSize = m_frame->GetPinSymbolSize();
m_frame->GetRenderSettings()->m_JunctionSize = m_frame->GetDefaults().m_JunctionSize;
m_frame->GetCanvas()->GetView()->MarkDirty(); m_frame->GetCanvas()->GetView()->MarkDirty();
m_frame->GetCanvas()->GetView()->UpdateAllItems( KIGFX::REPAINT ); m_frame->GetCanvas()->GetView()->UpdateAllItems( KIGFX::REPAINT );

View File

@ -93,7 +93,7 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( int aType )
textItem->SetBold( lastTextBold ); textItem->SetBold( lastTextBold );
textItem->SetItalic( lastTextItalic ); textItem->SetItalic( lastTextItalic );
textItem->SetLabelSpinStyle( lastTextOrientation ); textItem->SetLabelSpinStyle( lastTextOrientation );
textItem->SetTextSize( wxSize( m_defaultTextSize, m_defaultTextSize ) ); textItem->SetTextSize( wxSize( GetDefaultTextSize(), GetDefaultTextSize() ) );
textItem->SetFlags( IS_NEW | IS_MOVED ); textItem->SetFlags( IS_NEW | IS_MOVED );
if( InvokeDialogLabelEditor( this, textItem ) != wxID_OK || textItem->GetText().IsEmpty() ) if( InvokeDialogLabelEditor( this, textItem ) != wxID_OK || textItem->GetText().IsEmpty() )

View File

@ -244,38 +244,40 @@ void SCH_EDIT_FRAME::AddFormattingParameters( std::vector<PARAM_CFG*>& params )
wxCHECK( appSettings, /*void*/ ); wxCHECK( appSettings, /*void*/ );
SCHEMATIC_SETTINGS& settings = Schematic().Settings();
params.push_back( new PARAM_CFG_INT( wxT( "SubpartIdSeparator" ), params.push_back( new PARAM_CFG_INT( wxT( "SubpartIdSeparator" ),
LIB_PART::SubpartIdSeparatorPtr(), 0, 0, 126 ) ); LIB_PART::SubpartIdSeparatorPtr(), 0, 0, 126 ) );
params.push_back( new PARAM_CFG_INT( wxT( "SubpartFirstId" ), params.push_back( new PARAM_CFG_INT( wxT( "SubpartFirstId" ),
LIB_PART::SubpartFirstIdPtr(), 'A', '1', 'z' ) ); LIB_PART::SubpartFirstIdPtr(), 'A', '1', 'z' ) );
params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "LabSize" ), params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "LabSize" ),
&m_defaultTextSize, &settings.m_DefaultTextSize,
Mils2iu( DEFAULT_SIZE_TEXT ), Mils2iu( DEFAULT_SIZE_TEXT ),
Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) ); Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) );
params.push_back( new PARAM_CFG_DOUBLE( wxT( "TextOffsetRatio" ), params.push_back( new PARAM_CFG_DOUBLE( wxT( "TextOffsetRatio" ),
&m_textOffsetRatio, &settings.m_TextOffsetRatio,
(double) TXT_MARGIN / DEFAULT_SIZE_TEXT, (double) TXT_MARGIN / DEFAULT_SIZE_TEXT,
-200.0, 200.0 ) ); -200.0, 200.0 ) );
params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "LineThickness" ), params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "LineThickness" ),
&m_defaultLineWidth, &settings.m_DefaultLineWidth,
Mils2iu( appSettings->m_Drawing.default_line_thickness ), Mils2iu( appSettings->m_Drawing.default_line_thickness ),
Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) ); Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) );
params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "BusThickness" ), params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "BusThickness" ),
&m_defaultBusThickness, &settings.m_DefaultBusThickness,
Mils2iu( appSettings->m_Drawing.default_bus_thickness ), Mils2iu( appSettings->m_Drawing.default_bus_thickness ),
Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) ); Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) );
params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "WireThickness" ), params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "WireThickness" ),
&m_defaultWireThickness, &settings.m_DefaultWireThickness,
Mils2iu( appSettings->m_Drawing.default_wire_thickness ), Mils2iu( appSettings->m_Drawing.default_wire_thickness ),
Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) ); Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) );
params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PinSymbolSize" ), params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PinSymbolSize" ),
&m_pinSymbolSize, &settings.m_PinSymbolSize,
Mils2iu( appSettings->m_Drawing.pin_symbol_size ), Mils2iu( appSettings->m_Drawing.pin_symbol_size ),
Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) ); Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) );
params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "JunctionSize" ), params.push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "JunctionSize" ),
&SCH_JUNCTION::g_SymbolSize, &settings.m_JunctionSize,
Mils2iu( appSettings->m_Drawing.default_junction_size ), Mils2iu( appSettings->m_Drawing.default_junction_size ),
Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) ); Mils2iu( 5 ), Mils2iu( 1000 ), nullptr, 1 / IU_PER_MILS ) );
} }
@ -322,9 +324,10 @@ bool SCH_EDIT_FRAME::LoadProjectFile()
GetRenderSettings()->SetDefaultPenWidth( GetDefaultLineWidth() ); GetRenderSettings()->SetDefaultPenWidth( GetDefaultLineWidth() );
GetRenderSettings()->m_DefaultWireThickness = GetDefaultWireThickness(); GetRenderSettings()->m_DefaultWireThickness = GetDefaultWireThickness();
GetRenderSettings()->m_DefaultBusThickness = GetDefaultBusThickness(); GetRenderSettings()->m_DefaultBusThickness = GetDefaultBusThickness();
GetRenderSettings()->m_TextOffsetRatio = m_textOffsetRatio; GetRenderSettings()->m_TextOffsetRatio = m_defaults->m_TextOffsetRatio;
GetRenderSettings()->m_PinSymbolSize = m_pinSymbolSize; GetRenderSettings()->m_PinSymbolSize = m_defaults->m_PinSymbolSize;
GetRenderSettings()->m_JunctionSize = m_defaults->m_JunctionSize;
// Verify some values, because the config file can be edited by hand, // Verify some values, because the config file can be edited by hand,
// and have bad values: // and have bad values:

View File

@ -93,6 +93,9 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() : APP_SETTINGS_BASE( "eeschema", eeschema
m_params.emplace_back( new PARAM<int>( "drawing.pin_symbol_size", m_params.emplace_back( new PARAM<int>( "drawing.pin_symbol_size",
&m_Drawing.pin_symbol_size, DEFAULT_TEXT_SIZE / 2 ) ); &m_Drawing.pin_symbol_size, DEFAULT_TEXT_SIZE / 2 ) );
m_params.emplace_back(
new PARAM<double>( "drawing.text_offset_ratio", &m_Drawing.text_offset_ratio, 0.08 ) );
m_params.emplace_back( new PARAM<int>( "drawing.default_line_thickness", m_params.emplace_back( new PARAM<int>( "drawing.default_line_thickness",
&m_Drawing.default_line_thickness, DEFAULT_LINE_THICKNESS ) ); &m_Drawing.default_line_thickness, DEFAULT_LINE_THICKNESS ) );
@ -105,6 +108,9 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() : APP_SETTINGS_BASE( "eeschema", eeschema
m_params.emplace_back( new PARAM<int>( "drawing.default_wire_thickness", m_params.emplace_back( new PARAM<int>( "drawing.default_wire_thickness",
&m_Drawing.default_wire_thickness, DEFAULT_WIRE_THICKNESS ) ); &m_Drawing.default_wire_thickness, DEFAULT_WIRE_THICKNESS ) );
m_params.emplace_back( new PARAM<int>(
"drawing.default_text_size", &m_Drawing.default_text_size, DEFAULT_TEXT_SIZE ) );
m_params.emplace_back( new PARAM<wxString>( "drawing.field_names", m_params.emplace_back( new PARAM<wxString>( "drawing.field_names",
&m_Drawing.field_names, "" ) ); &m_Drawing.field_names, "" ) );

View File

@ -59,18 +59,20 @@ public:
struct DRAWING struct DRAWING
{ {
int default_bus_thickness; int default_bus_thickness;
int default_junction_size; int default_junction_size;
int default_line_thickness; int default_line_thickness;
int default_repeat_offset_x; int default_repeat_offset_x;
int default_repeat_offset_y; int default_repeat_offset_y;
int default_wire_thickness; int default_wire_thickness;
int pin_symbol_size; int default_text_size;
COLOR4D default_sheet_border_color; int pin_symbol_size;
COLOR4D default_sheet_background_color; double text_offset_ratio;
COLOR4D default_sheet_border_color;
COLOR4D default_sheet_background_color;
wxString field_names; wxString field_names;
bool hv_lines_only; bool hv_lines_only;
int repeat_label_increment; int repeat_label_increment;
}; };
struct INPUT struct INPUT

View File

@ -26,6 +26,7 @@
#include <kiway.h> #include <kiway.h>
#include <pgm_base.h> #include <pgm_base.h>
#include <eeschema_settings.h> #include <eeschema_settings.h>
#include <libedit_settings.h>
#include <sch_draw_panel.h> #include <sch_draw_panel.h>
#include <sch_view.h> #include <sch_view.h>
#include <sch_painter.h> #include <sch_painter.h>
@ -83,13 +84,8 @@ SCH_BASE_FRAME::SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aWindo
const wxString& aTitle, const wxPoint& aPosition, const wxString& aTitle, const wxPoint& aPosition,
const wxSize& aSize, long aStyle, const wxString& aFrameName ) : const wxSize& aSize, long aStyle, const wxString& aFrameName ) :
EDA_DRAW_FRAME( aKiway, aParent, aWindowType, aTitle, aPosition, aSize, aStyle, aFrameName ), EDA_DRAW_FRAME( aKiway, aParent, aWindowType, aTitle, aPosition, aSize, aStyle, aFrameName ),
m_defaultLineWidth( DEFAULT_LINE_THICKNESS * IU_PER_MILS ), m_showPinElectricalTypeName( false ),
m_defaultWireThickness( DEFAULT_WIRE_THICKNESS * IU_PER_MILS ), m_defaults( &m_base_frame_defaults )
m_defaultBusThickness( DEFAULT_BUS_THICKNESS * IU_PER_MILS ),
m_defaultTextSize( DEFAULT_TEXT_SIZE * IU_PER_MILS ),
m_textOffsetRatio( 0.08 ),
m_pinSymbolSize( DEFAULT_TEXT_SIZE * IU_PER_MILS / 2 ),
m_showPinElectricalTypeName( false )
{ {
createCanvas(); createCanvas();
@ -122,6 +118,18 @@ void SCH_BASE_FRAME::SetScreen( BASE_SCREEN* aScreen )
} }
EESCHEMA_SETTINGS* SCH_BASE_FRAME::eeconfig() const
{
return dynamic_cast<EESCHEMA_SETTINGS*>( config() );
}
LIBEDIT_SETTINGS* SCH_BASE_FRAME::libeditconfig() const
{
return dynamic_cast<LIBEDIT_SETTINGS*>( config() );
}
const wxString SCH_BASE_FRAME::GetZoomLevelIndicator() const const wxString SCH_BASE_FRAME::GetZoomLevelIndicator() const
{ {
return EDA_DRAW_FRAME::GetZoomLevelIndicator(); return EDA_DRAW_FRAME::GetZoomLevelIndicator();
@ -130,28 +138,28 @@ const wxString SCH_BASE_FRAME::GetZoomLevelIndicator() const
void SCH_BASE_FRAME::SetDefaultLineWidth( int aWidth ) void SCH_BASE_FRAME::SetDefaultLineWidth( int aWidth )
{ {
m_defaultLineWidth = aWidth; m_defaults->m_DefaultLineWidth = aWidth;
GetRenderSettings()->SetDefaultPenWidth( aWidth ); GetRenderSettings()->SetDefaultPenWidth( aWidth );
} }
void SCH_BASE_FRAME::SetDefaultWireThickness( int aThickness ) void SCH_BASE_FRAME::SetDefaultWireThickness( int aThickness )
{ {
m_defaultWireThickness = aThickness; m_defaults->m_DefaultWireThickness = aThickness;
GetRenderSettings()->m_DefaultWireThickness = aThickness; GetRenderSettings()->m_DefaultWireThickness = aThickness;
} }
void SCH_BASE_FRAME::SetDefaultBusThickness( int aThickness ) void SCH_BASE_FRAME::SetDefaultBusThickness( int aThickness )
{ {
m_defaultBusThickness = aThickness; m_defaults->m_DefaultBusThickness = aThickness;
GetRenderSettings()->m_DefaultBusThickness = aThickness; GetRenderSettings()->m_DefaultBusThickness = aThickness;
} }
void SCH_BASE_FRAME::SetPinSymbolSize( int aSize ) void SCH_BASE_FRAME::SetPinSymbolSize( int aSize )
{ {
m_pinSymbolSize = aSize; m_defaults->m_PinSymbolSize = aSize;
GetRenderSettings()->m_PinSymbolSize = aSize; GetRenderSettings()->m_PinSymbolSize = aSize;
} }

View File

@ -31,7 +31,7 @@
#include <page_info.h> #include <page_info.h>
#include <sch_draw_panel.h> #include <sch_draw_panel.h>
#include <sch_screen.h> #include <sch_screen.h>
#include <eeschema_settings.h> #include <schematic_settings.h>
#include <stddef.h> #include <stddef.h>
#include <utility> #include <utility>
@ -57,6 +57,8 @@ class PART_LIB;
class SCHLIB_FILTER; class SCHLIB_FILTER;
class LIB_ID; class LIB_ID;
class SYMBOL_LIB_TABLE; class SYMBOL_LIB_TABLE;
class EESCHEMA_SETTINGS;
class LIBEDIT_SETTINGS;
/** /**
* Load symbol from symbol library table. * Load symbol from symbol library table.
@ -88,17 +90,15 @@ LIB_PART* SchGetLibPart( const LIB_ID& aLibId, SYMBOL_LIB_TABLE* aLibTable,
class SCH_BASE_FRAME : public EDA_DRAW_FRAME class SCH_BASE_FRAME : public EDA_DRAW_FRAME
{ {
protected: protected:
int m_defaultLineWidth;
int m_defaultWireThickness;
int m_defaultBusThickness;
int m_defaultTextSize;
double m_textOffsetRatio;
int m_pinSymbolSize;
TEMPLATES m_templateFieldNames; TEMPLATES m_templateFieldNames;
bool m_showPinElectricalTypeName; bool m_showPinElectricalTypeName;
/// These are only used by libedit. Eeschema should be using the one inside the SCHEMATIC.
SCHEMATIC_SETTINGS m_base_frame_defaults;
SCHEMATIC_SETTINGS* m_defaults;
public: public:
SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent, SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent,
FRAME_T aWindowType, FRAME_T aWindowType,
@ -114,13 +114,20 @@ public:
SCH_SCREEN* GetScreen() const override; SCH_SCREEN* GetScreen() const override;
void SetScreen( BASE_SCREEN* aScreen ) override; void SetScreen( BASE_SCREEN* aScreen ) override;
EESCHEMA_SETTINGS* eeconfig() const { return dynamic_cast<EESCHEMA_SETTINGS*>( config() ); } EESCHEMA_SETTINGS* eeconfig() const;
LIBEDIT_SETTINGS* libeditconfig() const;
void LoadSettings( APP_SETTINGS_BASE* aCfg ) override; void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
void SaveSettings( APP_SETTINGS_BASE* aCfg ) override; void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
KIGFX::SCH_RENDER_SETTINGS* GetRenderSettings(); KIGFX::SCH_RENDER_SETTINGS* GetRenderSettings();
SCHEMATIC_SETTINGS& GetDefaults()
{
return *m_defaults;
}
/** /**
* Allow some frames to show/hide hidden pins. The default impl shows all pins. * Allow some frames to show/hide hidden pins. The default impl shows all pins.
*/ */
@ -132,23 +139,23 @@ public:
bool GetShowElectricalType() { return m_showPinElectricalTypeName; } bool GetShowElectricalType() { return m_showPinElectricalTypeName; }
void SetShowElectricalType( bool aShow ) { m_showPinElectricalTypeName = aShow; } void SetShowElectricalType( bool aShow ) { m_showPinElectricalTypeName = aShow; }
int GetDefaultLineWidth() const { return m_defaultLineWidth; } virtual int GetDefaultLineWidth() const { return m_defaults->m_DefaultLineWidth; }
void SetDefaultLineWidth( int aWidth ); virtual void SetDefaultLineWidth( int aWidth );
int GetDefaultWireThickness() const { return m_defaultWireThickness; } virtual int GetDefaultWireThickness() const { return m_defaults->m_DefaultWireThickness; }
void SetDefaultWireThickness( int aThickness ); virtual void SetDefaultWireThickness( int aThickness );
int GetDefaultBusThickness() const { return m_defaultBusThickness; } virtual int GetDefaultBusThickness() const { return m_defaults->m_DefaultBusThickness; }
void SetDefaultBusThickness( int aThickness ); virtual void SetDefaultBusThickness( int aThickness );
int GetPinSymbolSize() const { return m_pinSymbolSize; } virtual int GetPinSymbolSize() const { return m_defaults->m_PinSymbolSize; }
void SetPinSymbolSize( int aSize ); virtual void SetPinSymbolSize( int aSize );
int GetDefaultTextSize() const { return m_defaultTextSize; } virtual int GetDefaultTextSize() const { return m_defaults->m_DefaultTextSize; }
void SetDefaultTextSize( int aSize ) { m_defaultTextSize = aSize; } virtual void SetDefaultTextSize( int aSize ) { m_defaults->m_DefaultTextSize = aSize; }
double GetTextOffsetRatio() const { return m_textOffsetRatio; } virtual double GetTextOffsetRatio() const { return m_defaults->m_TextOffsetRatio; }
void SetTextOffsetRatio( double aRatio ) { m_textOffsetRatio = aRatio; } virtual void SetTextOffsetRatio( double aRatio ) { m_defaults->m_TextOffsetRatio = aRatio; }
/** /**
* Function GetZoomLevelIndicator * Function GetZoomLevelIndicator

View File

@ -210,6 +210,8 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ):
{ {
m_schematic = new SCHEMATIC(); m_schematic = new SCHEMATIC();
m_defaults = &m_schematic->Settings();
m_showBorderAndTitleBlock = true; // true to show sheet references m_showBorderAndTitleBlock = true; // true to show sheet references
m_hasAutoSave = true; m_hasAutoSave = true;
m_AboutTitle = "Eeschema"; m_AboutTitle = "Eeschema";

View File

@ -38,6 +38,7 @@
#include <core/typeinfo.h> #include <core/typeinfo.h>
#include <eda_base_frame.h> #include <eda_base_frame.h>
#include <erc_settings.h> #include <erc_settings.h>
#include <eeschema_settings.h>
#include <math/box2.h> #include <math/box2.h>
#include <sch_base_frame.h> #include <sch_base_frame.h>
#include <sch_text.h> // enum PINSHEETLABEL_SHAPE #include <sch_text.h> // enum PINSHEETLABEL_SHAPE
@ -46,7 +47,6 @@
class STATUS_TEXT_POPUP; class STATUS_TEXT_POPUP;
class APP_SETTINGS_BASE;
class SCH_ITEM; class SCH_ITEM;
class EDA_ITEM; class EDA_ITEM;
class SCH_LINE; class SCH_LINE;

View File

@ -38,18 +38,10 @@
#include <sch_junction.h> #include <sch_junction.h>
#include <netlist_object.h> #include <netlist_object.h>
#include <sch_connection.h> #include <sch_connection.h>
#include <schematic.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
int SCH_JUNCTION::g_SymbolSize = Mils2iu( 40 ); // Default diameter of the junction symbol
int SCH_JUNCTION::GetSymbolSize()
{
return g_SymbolSize;
}
SCH_JUNCTION::SCH_JUNCTION( const wxPoint& pos, SCH_LAYER_ID aLayer ) : SCH_JUNCTION::SCH_JUNCTION( const wxPoint& pos, SCH_LAYER_ID aLayer ) :
SCH_ITEM( NULL, SCH_JUNCTION_T ) SCH_ITEM( NULL, SCH_JUNCTION_T )
{ {
@ -86,8 +78,11 @@ const EDA_RECT SCH_JUNCTION::GetBoundingBox() const
{ {
EDA_RECT rect; EDA_RECT rect;
int size =
Schematic() ? Schematic()->Settings().m_JunctionSize : Mils2iu( DEFAULT_JUNCTION_DIAM );
rect.SetOrigin( m_pos ); rect.SetOrigin( m_pos );
rect.Inflate( ( GetPenWidth() + GetSymbolSize() ) / 2 ); rect.Inflate( ( GetPenWidth() + size ) / 2 );
return rect; return rect;
} }
@ -98,8 +93,8 @@ void SCH_JUNCTION::Print( RENDER_SETTINGS* aSettings, const wxPoint& aOffset )
wxDC* DC = aSettings->GetPrintDC(); wxDC* DC = aSettings->GetPrintDC();
COLOR4D color = aSettings->GetLayerColor( GetLayer() ); COLOR4D color = aSettings->GetLayerColor( GetLayer() );
GRFilledCircle( nullptr, DC, m_pos.x + aOffset.x, m_pos.y + aOffset.y, GetSymbolSize() / 2, GRFilledCircle( nullptr, DC, m_pos.x + aOffset.x, m_pos.y + aOffset.y,
0, color, color ); Schematic()->Settings().m_JunctionSize / 2, 0, color, color );
} }
@ -195,7 +190,7 @@ bool SCH_JUNCTION::doIsConnected( const wxPoint& aPosition ) const
void SCH_JUNCTION::Plot( PLOTTER* aPlotter ) void SCH_JUNCTION::Plot( PLOTTER* aPlotter )
{ {
aPlotter->SetColor( aPlotter->RenderSettings()->GetLayerColor( GetLayer() ) ); aPlotter->SetColor( aPlotter->RenderSettings()->GetLayerColor( GetLayer() ) );
aPlotter->Circle( m_pos, GetSymbolSize(), FILLED_SHAPE ); aPlotter->Circle( m_pos, Schematic()->Settings().m_JunctionSize, FILLED_SHAPE );
} }

View File

@ -33,9 +33,6 @@ class SCH_JUNCTION : public SCH_ITEM
{ {
wxPoint m_pos; // Position of the junction. wxPoint m_pos; // Position of the junction.
public:
static int g_SymbolSize; // diameter of the junction graphic symbol
public: public:
SCH_JUNCTION( const wxPoint& pos = wxPoint( 0, 0 ), SCH_LAYER_ID aLayer = LAYER_JUNCTION ); SCH_JUNCTION( const wxPoint& pos = wxPoint( 0, 0 ), SCH_LAYER_ID aLayer = LAYER_JUNCTION );
@ -53,8 +50,6 @@ public:
return wxT( "SCH_JUNCTION" ); return wxT( "SCH_JUNCTION" );
} }
static int GetSymbolSize();
void SwapData( SCH_ITEM* aItem ) override; void SwapData( SCH_ITEM* aItem ) override;
void ViewGetLayers( int aLayers[], int& aCount ) const override; void ViewGetLayers( int aLayers[], int& aCount ) const override;

View File

@ -79,7 +79,8 @@ SCH_RENDER_SETTINGS::SCH_RENDER_SETTINGS() :
m_TextOffsetRatio( 0.08 ), m_TextOffsetRatio( 0.08 ),
m_DefaultWireThickness( DEFAULT_WIRE_THICKNESS * IU_PER_MILS ), m_DefaultWireThickness( DEFAULT_WIRE_THICKNESS * IU_PER_MILS ),
m_DefaultBusThickness( DEFAULT_BUS_THICKNESS * IU_PER_MILS ), m_DefaultBusThickness( DEFAULT_BUS_THICKNESS * IU_PER_MILS ),
m_PinSymbolSize( DEFAULT_TEXT_SIZE * IU_PER_MILS / 2 ) m_PinSymbolSize( DEFAULT_TEXT_SIZE * IU_PER_MILS / 2 ),
m_JunctionSize( DEFAULT_JUNCTION_DIAM * IU_PER_MILS )
{ {
SetDefaultPenWidth( DEFAULT_LINE_THICKNESS * IU_PER_MILS ); SetDefaultPenWidth( DEFAULT_LINE_THICKNESS * IU_PER_MILS );
} }
@ -1177,7 +1178,7 @@ void SCH_PAINTER::draw( SCH_JUNCTION *aJct, int aLayer )
m_gal->SetStrokeColor( color ); m_gal->SetStrokeColor( color );
m_gal->SetIsFill( !drawingShadows ); m_gal->SetIsFill( !drawingShadows );
m_gal->SetFillColor( color ); m_gal->SetFillColor( color );
m_gal->DrawCircle( aJct->GetPosition(), SCH_JUNCTION::GetSymbolSize() / 2.0 ); m_gal->DrawCircle( aJct->GetPosition(), m_schSettings.m_JunctionSize / 2.0 );
} }

View File

@ -117,6 +117,7 @@ public:
int m_DefaultWireThickness; int m_DefaultWireThickness;
int m_DefaultBusThickness; int m_DefaultBusThickness;
int m_PinSymbolSize; int m_PinSymbolSize;
int m_JunctionSize;
}; };

View File

@ -561,7 +561,7 @@ bool SCH_SCREEN::IsTerminalPoint( const wxPoint& aPosition, int aLayer )
if( GetItem( aPosition, Mils2iu( 6 ), SCH_BUS_BUS_ENTRY_T) ) if( GetItem( aPosition, Mils2iu( 6 ), SCH_BUS_BUS_ENTRY_T) )
return true; return true;
if( GetItem( aPosition, SCH_JUNCTION::GetSymbolSize(), SCH_JUNCTION_T ) ) if( GetItem( aPosition, Schematic()->Settings().m_JunctionSize, SCH_JUNCTION_T ) )
return true; return true;
if( GetPin( aPosition, NULL, true ) ) if( GetPin( aPosition, NULL, true ) )

View File

@ -22,6 +22,7 @@
#include <base_struct.h> #include <base_struct.h>
#include <sch_sheet_path.h> #include <sch_sheet_path.h>
#include <schematic_settings.h>
class BUS_ALIAS; class BUS_ALIAS;
@ -57,6 +58,9 @@ private:
/// Holds and calculates connectivity information of this schematic /// Holds and calculates connectivity information of this schematic
CONNECTION_GRAPH* m_connectionGraph; CONNECTION_GRAPH* m_connectionGraph;
/// Project-specific schematic settings
SCHEMATIC_SETTINGS m_settings;
/// Holds this schematic's ERC settings /// Holds this schematic's ERC settings
// TODO: This should be moved to project settings, not schematic // TODO: This should be moved to project settings, not schematic
ERC_SETTINGS* m_ercSettings; ERC_SETTINGS* m_ercSettings;
@ -121,6 +125,11 @@ public:
return m_connectionGraph; return m_connectionGraph;
} }
SCHEMATIC_SETTINGS& Settings()
{
return m_settings;
}
/** /**
* Returns a pointer to a bus alias object for the given label, * Returns a pointer to a bus alias object for the given label,
* or null if one doesn't exist * or null if one doesn't exist

View File

@ -0,0 +1,55 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef KICAD_SCHEMATIC_SETTINGS_H
#define KICAD_SCHEMATIC_SETTINGS_H
#include <convert_to_biu.h>
#include <default_values.h>
/**
* These settings were stored in SCH_BASE_FRAME previously.
* The backing store is currently the project file.
* They should likely move to a project settings file (JSON) once that framework exists.
*
* These are loaded from eeschema settings but then overwritten by the project settings.
* All of the values are stored in IU, but the backing file stores in mils.
*/
struct SCHEMATIC_SETTINGS
{
SCHEMATIC_SETTINGS() :
m_DefaultLineWidth( DEFAULT_LINE_THICKNESS * IU_PER_MILS ),
m_DefaultWireThickness( DEFAULT_WIRE_THICKNESS * IU_PER_MILS ),
m_DefaultBusThickness( DEFAULT_BUS_THICKNESS * IU_PER_MILS ),
m_DefaultTextSize( DEFAULT_TEXT_SIZE * IU_PER_MILS ),
m_TextOffsetRatio( 0.08 ),
m_PinSymbolSize( DEFAULT_TEXT_SIZE * IU_PER_MILS / 2 ),
m_JunctionSize( DEFAULT_JUNCTION_DIAM * IU_PER_MILS )
{}
int m_DefaultLineWidth;
int m_DefaultWireThickness;
int m_DefaultBusThickness;
int m_DefaultTextSize;
double m_TextOffsetRatio;
int m_PinSymbolSize;
int m_JunctionSize;
};
#endif

View File

@ -473,6 +473,8 @@ int SCH_DRAWING_TOOLS::SingleClickPlace( const TOOL_EVENT& aEvent )
return 0; return 0;
} }
previewItem->SetParent( m_frame->GetScreen() );
m_view->ClearPreview(); m_view->ClearPreview();
m_view->AddToPreview( previewItem->Clone() ); m_view->AddToPreview( previewItem->Clone() );