Simplify display option selection mappings using CFG_MAP
Rather than defining static functions to do the mapping, this can be mor concisely done with the UTIL::CFG_MAP utility functions.
This commit is contained in:
parent
8766b475c6
commit
ca75be4b4e
|
@ -33,6 +33,7 @@
|
|||
#include <wxPcbStruct.h>
|
||||
#include <pcbstruct.h>
|
||||
#include <incremental_text_ctrl.h>
|
||||
#include <config_map.h>
|
||||
|
||||
#include <pcbnew_id.h>
|
||||
|
||||
|
@ -55,146 +56,32 @@ static const double gridMinSpacingMin = 5;
|
|||
static const double gridMinSpacingMax = 200;
|
||||
static const double gridMinSpacingStep = 5;
|
||||
|
||||
static void setRadioFromGridStyle( wxRadioBox& aRBox,
|
||||
KIGFX::GRID_STYLE aStyle )
|
||||
|
||||
static const UTIL::CFG_MAP<KIGFX::GRID_STYLE> gridStyleSelectMap =
|
||||
{
|
||||
aRBox.SetSelection( aStyle != KIGFX::GRID_STYLE::DOTS );
|
||||
}
|
||||
{ KIGFX::GRID_STYLE::DOTS, 0 }, // Default
|
||||
{ KIGFX::GRID_STYLE::LINES, 1 },
|
||||
};
|
||||
|
||||
|
||||
static KIGFX::GRID_STYLE getGridStyleFromRadio( const wxRadioBox& aRBox )
|
||||
static const UTIL::CFG_MAP<TRACE_CLEARANCE_DISPLAY_MODE_T> traceClearanceSelectMap =
|
||||
{
|
||||
return aRBox.GetSelection() == 0 ? KIGFX::GRID_STYLE::DOTS : KIGFX::GRID_STYLE::LINES;
|
||||
}
|
||||
{ SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS, 2 }, // Default
|
||||
{ DO_NOT_SHOW_CLEARANCE, 0 },
|
||||
{ SHOW_CLEARANCE_NEW_TRACKS, 1 },
|
||||
{ SHOW_CLEARANCE_NEW_AND_EDITED_TRACKS_AND_VIA_AREAS, 3 },
|
||||
{ SHOW_CLEARANCE_ALWAYS, 4 },
|
||||
};
|
||||
|
||||
|
||||
static void setRadioFromClearanceMode( wxRadioBox& aCtrl,
|
||||
TRACE_CLEARANCE_DISPLAY_MODE_T aClearance )
|
||||
static const UTIL::CFG_MAP<KIGFX::OPENGL_ANTIALIASING_MODE> aaModeSelectMap =
|
||||
{
|
||||
int value = 0;
|
||||
|
||||
switch ( aClearance )
|
||||
{
|
||||
case DO_NOT_SHOW_CLEARANCE:
|
||||
value = 0;
|
||||
break;
|
||||
|
||||
case SHOW_CLEARANCE_NEW_TRACKS:
|
||||
value = 1;
|
||||
break;
|
||||
|
||||
case SHOW_CLEARANCE_NEW_AND_EDITED_TRACKS_AND_VIA_AREAS:
|
||||
value = 3;
|
||||
break;
|
||||
|
||||
case SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS:
|
||||
value = 2;
|
||||
break;
|
||||
|
||||
case SHOW_CLEARANCE_ALWAYS:
|
||||
value = 4;
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
aCtrl.SetSelection( value );
|
||||
}
|
||||
|
||||
|
||||
static TRACE_CLEARANCE_DISPLAY_MODE_T getClearanceModeFromRadio(
|
||||
const wxRadioBox& aCtrl )
|
||||
{
|
||||
TRACE_CLEARANCE_DISPLAY_MODE_T mode = SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS;
|
||||
|
||||
switch ( aCtrl.GetSelection() )
|
||||
{
|
||||
case 0:
|
||||
mode = DO_NOT_SHOW_CLEARANCE;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
mode = SHOW_CLEARANCE_NEW_TRACKS;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
mode = SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
mode = SHOW_CLEARANCE_NEW_AND_EDITED_TRACKS_AND_VIA_AREAS;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
mode = SHOW_CLEARANCE_ALWAYS;
|
||||
break;
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
|
||||
static void setCtrlFromAntiAliasMode( wxChoice& aCtrl,
|
||||
KIGFX::OPENGL_ANTIALIASING_MODE mode )
|
||||
{
|
||||
int value = 0;
|
||||
|
||||
switch( mode )
|
||||
{
|
||||
case KIGFX::OPENGL_ANTIALIASING_MODE::NONE:
|
||||
value = 0;
|
||||
break;
|
||||
|
||||
case KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_HIGH:
|
||||
value = 1;
|
||||
break;
|
||||
|
||||
case KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_ULTRA:
|
||||
value = 2;
|
||||
break;
|
||||
|
||||
case KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X2:
|
||||
value = 3;
|
||||
break;
|
||||
|
||||
case KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X4:
|
||||
value = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
aCtrl.Select( value );
|
||||
}
|
||||
|
||||
static KIGFX::OPENGL_ANTIALIASING_MODE getAntiAliasModeFromRadio(
|
||||
const wxChoice& aCtrl )
|
||||
{
|
||||
auto mode = KIGFX::OPENGL_ANTIALIASING_MODE::NONE;
|
||||
|
||||
switch( aCtrl.GetSelection() )
|
||||
{
|
||||
case 0:
|
||||
mode = KIGFX::OPENGL_ANTIALIASING_MODE::NONE;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_HIGH;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_ULTRA;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X2;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X4;
|
||||
break;
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
{ KIGFX::OPENGL_ANTIALIASING_MODE::NONE, 0 }, // Default
|
||||
{ KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_HIGH, 1 },
|
||||
{ KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_ULTRA, 2 },
|
||||
{ KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X2, 3 },
|
||||
{ KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X4, 4 },
|
||||
};
|
||||
|
||||
|
||||
void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent )
|
||||
|
@ -242,8 +129,8 @@ void DIALOG_DISPLAY_OPTIONS::init()
|
|||
|
||||
m_OptDisplayTracks->SetValue( displ_opts->m_DisplayPcbTrackFill == SKETCH );
|
||||
|
||||
setRadioFromClearanceMode( *m_OptDisplayTracksClearance,
|
||||
displ_opts->m_ShowTrackClearanceMode );
|
||||
m_OptDisplayTracksClearance->SetSelection( UTIL::GetConfigForVal(
|
||||
traceClearanceSelectMap, displ_opts->m_ShowTrackClearanceMode ) );
|
||||
|
||||
m_OptDisplayPads->SetValue( displ_opts->m_DisplayPadFill == SKETCH );
|
||||
m_OptDisplayVias->SetValue( displ_opts->m_DisplayViaFill == SKETCH );
|
||||
|
@ -258,10 +145,11 @@ void DIALOG_DISPLAY_OPTIONS::init()
|
|||
m_OptDisplayDrawings->SetValue( displ_opts->m_DisplayDrawItemsFill == SKETCH );
|
||||
m_ShowNetNamesOption->SetSelection( displ_opts->m_DisplayNetNamesMode );
|
||||
|
||||
setCtrlFromAntiAliasMode( *m_choiceAntialiasing,
|
||||
gal_opts.gl_antialiasing_mode );
|
||||
m_choiceAntialiasing->SetSelection( UTIL::GetConfigForVal(
|
||||
aaModeSelectMap, gal_opts.gl_antialiasing_mode ) );
|
||||
|
||||
setRadioFromGridStyle( *m_gridStyle, gal_opts.m_gridStyle );
|
||||
m_gridStyle->SetSelection( UTIL::GetConfigForVal(
|
||||
gridStyleSelectMap, gal_opts.m_gridStyle ) );
|
||||
|
||||
m_gridSizeIncrementer->SetValue( gal_opts.m_gridLineWidth );
|
||||
|
||||
|
@ -275,7 +163,8 @@ void DIALOG_DISPLAY_OPTIONS::OnCancelClick( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
|
||||
/* Update variables with new options
|
||||
/*
|
||||
* Update variables with new options
|
||||
*/
|
||||
void DIALOG_DISPLAY_OPTIONS::OnOkClick( wxCommandEvent& event )
|
||||
{
|
||||
|
@ -286,8 +175,8 @@ void DIALOG_DISPLAY_OPTIONS::OnOkClick(wxCommandEvent& event)
|
|||
|
||||
displ_opts->m_DisplayPcbTrackFill = not m_OptDisplayTracks->GetValue();
|
||||
|
||||
displ_opts->m_ShowTrackClearanceMode = getClearanceModeFromRadio(
|
||||
*m_OptDisplayTracksClearance );
|
||||
displ_opts->m_ShowTrackClearanceMode = UTIL::GetValFromConfig(
|
||||
traceClearanceSelectMap, m_OptDisplayTracksClearance->GetSelection() );
|
||||
|
||||
displ_opts->m_DisplayModTextFill = not m_OptDisplayModTexts->GetValue();
|
||||
displ_opts->m_DisplayModEdgeFill = not m_OptDisplayModOutlines->GetValue();
|
||||
|
@ -305,10 +194,11 @@ void DIALOG_DISPLAY_OPTIONS::OnOkClick(wxCommandEvent& event)
|
|||
displ_opts->m_DisplayDrawItemsFill = not m_OptDisplayDrawings->GetValue();
|
||||
displ_opts->m_DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection();
|
||||
|
||||
gal_opts.gl_antialiasing_mode = getAntiAliasModeFromRadio(
|
||||
*m_choiceAntialiasing );
|
||||
gal_opts.gl_antialiasing_mode = UTIL::GetValFromConfig(
|
||||
aaModeSelectMap, m_choiceAntialiasing->GetSelection() );
|
||||
|
||||
gal_opts.m_gridStyle = getGridStyleFromRadio( *m_gridStyle );
|
||||
gal_opts.m_gridStyle = UTIL::GetValFromConfig(
|
||||
gridStyleSelectMap, m_gridStyle->GetSelection() );
|
||||
|
||||
gal_opts.m_gridLineWidth = m_gridSizeIncrementer->GetValue();
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
|
||||
* Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 1992-2017 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
|
||||
|
|
Loading…
Reference in New Issue