Save annotation settings in preferences.

See comments in issue.

Fixes https://gitlab.com/kicad/code/kicad/issues/8277
This commit is contained in:
Jeff Young 2021-04-26 15:19:11 +01:00
parent 3f040185ce
commit de2f60fe4c
5 changed files with 35 additions and 30 deletions

View File

@ -96,7 +96,7 @@ void SCH_EDIT_FRAME::DeleteAnnotation( bool aCurrentSheetOnly, bool* aAppendUndo
void SCH_EDIT_FRAME::AnnotateSymbols( bool aAnnotateSchematic, void SCH_EDIT_FRAME::AnnotateSymbols( bool aAnnotateSchematic,
ANNOTATE_ORDER_T aSortOption, ANNOTATE_ORDER_T aSortOption,
ANNOTATE_OPTION_T aAlgoOption, ANNOTATE_ALGO_T aAlgoOption,
int aStartNumber, int aStartNumber,
bool aResetAnnotation, bool aResetAnnotation,
bool aRepairTimestamps, bool aRepairTimestamps,

View File

@ -59,18 +59,9 @@ private:
bool GetResetItems(); bool GetResetItems();
bool GetLockUnits(); bool GetLockUnits();
/** ANNOTATE_ORDER_T GetSortOrder();
* @return 0 if annotation by X position,
* 1 if annotation by Y position,
*/
int GetSortOrder();
/** ANNOTATE_ALGO_T GetAnnotateAlgo();
* @return 0 if annotation using first free Id value
* 1 for first free Id value inside sheet num * 100 to sheet num * 100 + 99
* 2 for first free Id value inside sheet num * 1000 to sheet num * 1000 + 999
*/
int GetAnnotateAlgo();
int GetStartNumber(); int GetStartNumber();
@ -117,6 +108,8 @@ DIALOG_ANNOTATE::~DIALOG_ANNOTATE()
cfg->m_AnnotatePanel.sort_order = GetSortOrder(); cfg->m_AnnotatePanel.sort_order = GetSortOrder();
cfg->m_AnnotatePanel.method = GetAnnotateAlgo(); cfg->m_AnnotatePanel.method = GetAnnotateAlgo();
cfg->m_AnnotatePanel.options = m_rbOptions->GetSelection();
cfg->m_AnnotatePanel.scope = m_rbScope->GetSelection();
cfg->m_AnnotatePanel.messages_filter = m_MessageWindow->GetVisibleSeverities(); cfg->m_AnnotatePanel.messages_filter = m_MessageWindow->GetVisibleSeverities();
} }
@ -127,8 +120,8 @@ void DIALOG_ANNOTATE::InitValues()
int option; int option;
// These are always reset to attempt to keep the user out of trouble... // These are always reset to attempt to keep the user out of trouble...
m_rbScope->SetSelection( 0 ); m_rbScope->SetSelection( cfg->m_AnnotatePanel.scope );
m_rbOptions->SetSelection( 0 ); m_rbOptions->SetSelection( cfg->m_AnnotatePanel.options );
option = cfg->m_AnnotatePanel.sort_order; option = cfg->m_AnnotatePanel.sort_order;
@ -179,8 +172,7 @@ void DIALOG_ANNOTATE::OnApplyClick( wxCommandEvent& event )
REPORTER& reporter = m_MessageWindow->Reporter(); REPORTER& reporter = m_MessageWindow->Reporter();
m_MessageWindow->SetLazyUpdate( true ); // Don't update after each message m_MessageWindow->SetLazyUpdate( true ); // Don't update after each message
m_Parent->AnnotateSymbols( GetLevel(), (ANNOTATE_ORDER_T) GetSortOrder(), m_Parent->AnnotateSymbols( GetLevel(), GetSortOrder(), GetAnnotateAlgo(), GetStartNumber(),
(ANNOTATE_OPTION_T) GetAnnotateAlgo(), GetStartNumber(),
GetResetItems(), true, GetLockUnits(), reporter ); GetResetItems(), true, GetLockUnits(), reporter );
m_MessageWindow->Flush( true ); // Now update to show all messages m_MessageWindow->Flush( true ); // Now update to show all messages
@ -237,23 +229,23 @@ bool DIALOG_ANNOTATE::GetLockUnits()
} }
int DIALOG_ANNOTATE::GetSortOrder() ANNOTATE_ORDER_T DIALOG_ANNOTATE::GetSortOrder()
{ {
if( m_rbSortBy_Y_Position->GetValue() ) if( m_rbSortBy_Y_Position->GetValue() )
return 1; return SORT_BY_Y_POSITION;
else else
return 0; return SORT_BY_X_POSITION;
} }
int DIALOG_ANNOTATE::GetAnnotateAlgo() ANNOTATE_ALGO_T DIALOG_ANNOTATE::GetAnnotateAlgo()
{ {
if( m_rbSheetX100->GetValue() ) if( m_rbSheetX100->GetValue() )
return 1; return SHEET_NUMBER_X_100;
else if( m_rbSheetX1000->GetValue() ) else if( m_rbSheetX1000->GetValue() )
return 2; return SHEET_NUMBER_X_1000;
else else
return 0; return INCREMENTAL_BY_REF;
} }

View File

@ -193,6 +193,12 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM<int>( "annotation.method", m_params.emplace_back( new PARAM<int>( "annotation.method",
&m_AnnotatePanel.method, 0, 0, 2 ) ); &m_AnnotatePanel.method, 0, 0, 2 ) );
m_params.emplace_back( new PARAM<int>( "annotation.scope",
&m_AnnotatePanel.scope, 0, 0, 2 ) );
m_params.emplace_back( new PARAM<int>( "annotation.options",
&m_AnnotatePanel.options, 0, 0, 2 ) );
m_params.emplace_back( new PARAM<int>( "annotation.messages_filter", m_params.emplace_back( new PARAM<int>( "annotation.messages_filter",
&m_AnnotatePanel.messages_filter, -1 ) ); &m_AnnotatePanel.messages_filter, -1 ) );

View File

@ -132,6 +132,8 @@ public:
struct PANEL_ANNOTATE struct PANEL_ANNOTATE
{ {
int scope;
int options;
int method; int method;
int messages_filter; int messages_filter;
int sort_order; int sort_order;

View File

@ -65,7 +65,8 @@ class HIERARCHY_NAVIG_DLG;
// @todo Move this to transform alone with all of the transform manipulation code. // @todo Move this to transform alone with all of the transform manipulation code.
/// enum used in RotationMiroir() /// enum used in RotationMiroir()
enum COMPONENT_ORIENTATION_T { enum COMPONENT_ORIENTATION_T
{
CMP_NORMAL, // Normal orientation, no rotation or mirror CMP_NORMAL, // Normal orientation, no rotation or mirror
CMP_ROTATE_CLOCKWISE, // Rotate -90 CMP_ROTATE_CLOCKWISE, // Rotate -90
CMP_ROTATE_COUNTERCLOCKWISE, // Rotate +90 CMP_ROTATE_COUNTERCLOCKWISE, // Rotate +90
@ -79,7 +80,8 @@ enum COMPONENT_ORIENTATION_T {
/** Schematic annotation order options. */ /** Schematic annotation order options. */
enum ANNOTATE_ORDER_T { enum ANNOTATE_ORDER_T
{
SORT_BY_X_POSITION, ///< Annotate by X position from left to right. SORT_BY_X_POSITION, ///< Annotate by X position from left to right.
SORT_BY_Y_POSITION, ///< Annotate by Y position from top to bottom. SORT_BY_Y_POSITION, ///< Annotate by Y position from top to bottom.
UNSORTED, ///< Annotate by position of component in the schematic sheet UNSORTED, ///< Annotate by position of component in the schematic sheet
@ -88,7 +90,8 @@ enum ANNOTATE_ORDER_T {
/** Schematic annotation type options. */ /** Schematic annotation type options. */
enum ANNOTATE_OPTION_T { enum ANNOTATE_ALGO_T
{
INCREMENTAL_BY_REF, ///< Annotate incrementally using the first free reference number. INCREMENTAL_BY_REF, ///< Annotate incrementally using the first free reference number.
SHEET_NUMBER_X_100, ///< Annotate using the first free reference number starting at SHEET_NUMBER_X_100, ///< Annotate using the first free reference number starting at
///< the sheet number * 100. ///< the sheet number * 100.
@ -98,13 +101,15 @@ enum ANNOTATE_OPTION_T {
/// Schematic search type used by the socket link with Pcbnew /// Schematic search type used by the socket link with Pcbnew
enum SCH_SEARCH_T { enum SCH_SEARCH_T
{
HIGHLIGHT_PIN, HIGHLIGHT_PIN,
HIGHLIGHT_COMPONENT HIGHLIGHT_COMPONENT
}; };
enum SCH_CLEANUP_FLAGS { enum SCH_CLEANUP_FLAGS
{
NO_CLEANUP, NO_CLEANUP,
LOCAL_CLEANUP, LOCAL_CLEANUP,
GLOBAL_CLEANUP GLOBAL_CLEANUP
@ -369,7 +374,7 @@ public:
* @param aAnnotateSchematic Annotate the entire schematic if true. Otherwise annotate * @param aAnnotateSchematic Annotate the entire schematic if true. Otherwise annotate
* the current sheet only. * the current sheet only.
* @param aSortOption Define the annotation order. See #ANNOTATE_ORDER_T. * @param aSortOption Define the annotation order. See #ANNOTATE_ORDER_T.
* @param aAlgoOption Define the annotation style. See #ANNOTATE_OPTION_T. * @param aAlgoOption Define the annotation style. See #ANNOTATE_ALGO_T.
* @param aStartNumber The start number for non-sheet-based annotation styles. * @param aStartNumber The start number for non-sheet-based annotation styles.
* @param aResetAnnotation Clear any previous annotation if true. Otherwise, keep the * @param aResetAnnotation Clear any previous annotation if true. Otherwise, keep the
* existing component annotation. * existing component annotation.
@ -391,7 +396,7 @@ public:
* 200 to 299, and so on. * 200 to 299, and so on.
*/ */
void AnnotateSymbols( bool aAnnotateSchematic, ANNOTATE_ORDER_T aSortOption, void AnnotateSymbols( bool aAnnotateSchematic, ANNOTATE_ORDER_T aSortOption,
ANNOTATE_OPTION_T aAlgoOption, int aStartNumber, bool aResetAnnotation, ANNOTATE_ALGO_T aAlgoOption, int aStartNumber, bool aResetAnnotation,
bool aRepairTimestamps, bool aLockUnits, REPORTER& aReporter ); bool aRepairTimestamps, bool aLockUnits, REPORTER& aReporter );
/** /**