Break Display Options control value/enum mapping to functions

The mappings from enums to control settings can be done in static
functions, which makes the set/retreive functions more concise, and also
puts the mapping functions in a clearly delineated place.
This commit is contained in:
John Beard 2017-02-14 13:16:47 +08:00 committed by Maciej Suminski
parent ff3bfaf82b
commit 971f2db034
1 changed files with 139 additions and 91 deletions

View File

@ -57,6 +57,135 @@ static KIGFX::GRID_STYLE getGridStyleFromRadio( const wxRadioBox& aRBox )
} }
static void setRadioFromClearanceMode( wxRadioBox& aCtrl,
TRACE_CLEARANCE_DISPLAY_MODE_T aClearance )
{
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;
}
void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent ) void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent )
{ {
DIALOG_DISPLAY_OPTIONS dlg( this ); DIALOG_DISPLAY_OPTIONS dlg( this );
@ -79,34 +208,13 @@ DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( PCB_EDIT_FRAME* parent ) :
void DIALOG_DISPLAY_OPTIONS::init() void DIALOG_DISPLAY_OPTIONS::init()
{ {
SetFocus(); SetFocus();
DISPLAY_OPTIONS* displ_opts = (DISPLAY_OPTIONS*)m_Parent->GetDisplayOptions(); const DISPLAY_OPTIONS* displ_opts = (DISPLAY_OPTIONS*)m_Parent->GetDisplayOptions();
KIGFX::GAL_DISPLAY_OPTIONS& gal_opts = m_Parent->GetGalDisplayOptions(); const KIGFX::GAL_DISPLAY_OPTIONS& gal_opts = m_Parent->GetGalDisplayOptions();
m_OptDisplayTracks->SetValue( displ_opts->m_DisplayPcbTrackFill == SKETCH ); m_OptDisplayTracks->SetValue( displ_opts->m_DisplayPcbTrackFill == SKETCH );
switch ( displ_opts->m_ShowTrackClearanceMode ) setRadioFromClearanceMode( *m_OptDisplayTracksClearance,
{ displ_opts->m_ShowTrackClearanceMode );
case DO_NOT_SHOW_CLEARANCE:
m_OptDisplayTracksClearance->SetSelection( 0 );
break;
case SHOW_CLEARANCE_NEW_TRACKS:
m_OptDisplayTracksClearance->SetSelection( 1 );
break;
case SHOW_CLEARANCE_NEW_AND_EDITED_TRACKS_AND_VIA_AREAS:
m_OptDisplayTracksClearance->SetSelection( 3 );
break;
default:
case SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS:
m_OptDisplayTracksClearance->SetSelection( 2 );
break;
case SHOW_CLEARANCE_ALWAYS:
m_OptDisplayTracksClearance->SetSelection( 4 );
break;
}
m_OptDisplayPads->SetValue( displ_opts->m_DisplayPadFill == SKETCH ); m_OptDisplayPads->SetValue( displ_opts->m_DisplayPadFill == SKETCH );
m_OptDisplayVias->SetValue( displ_opts->m_DisplayViaFill == SKETCH ); m_OptDisplayVias->SetValue( displ_opts->m_DisplayViaFill == SKETCH );
@ -121,28 +229,8 @@ void DIALOG_DISPLAY_OPTIONS::init()
m_OptDisplayDrawings->SetValue( displ_opts->m_DisplayDrawItemsFill == SKETCH ); m_OptDisplayDrawings->SetValue( displ_opts->m_DisplayDrawItemsFill == SKETCH );
m_ShowNetNamesOption->SetSelection( displ_opts->m_DisplayNetNamesMode ); m_ShowNetNamesOption->SetSelection( displ_opts->m_DisplayNetNamesMode );
switch( gal_opts.gl_antialiasing_mode ) setCtrlFromAntiAliasMode( *m_choiceAntialiasing,
{ gal_opts.gl_antialiasing_mode );
case KIGFX::OPENGL_ANTIALIASING_MODE::NONE:
m_choiceAntialiasing->Select( 0 );
break;
case KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_HIGH:
m_choiceAntialiasing->Select( 1 );
break;
case KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_ULTRA:
m_choiceAntialiasing->Select( 2 );
break;
case KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X2:
m_choiceAntialiasing->Select( 3 );
break;
case KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X4:
m_choiceAntialiasing->Select( 4 );
break;
}
setRadioFromGridStyle( *m_gridStyle, gal_opts.m_gridStyle ); setRadioFromGridStyle( *m_gridStyle, gal_opts.m_gridStyle );
} }
@ -165,28 +253,8 @@ void DIALOG_DISPLAY_OPTIONS::OnOkClick(wxCommandEvent& event)
displ_opts->m_DisplayPcbTrackFill = not m_OptDisplayTracks->GetValue(); displ_opts->m_DisplayPcbTrackFill = not m_OptDisplayTracks->GetValue();
switch ( m_OptDisplayTracksClearance->GetSelection() ) displ_opts->m_ShowTrackClearanceMode = getClearanceModeFromRadio(
{ *m_OptDisplayTracksClearance );
case 0:
displ_opts->m_ShowTrackClearanceMode = DO_NOT_SHOW_CLEARANCE;
break;
case 1:
displ_opts->m_ShowTrackClearanceMode = SHOW_CLEARANCE_NEW_TRACKS;
break;
case 2:
displ_opts->m_ShowTrackClearanceMode = SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS;
break;
case 3:
displ_opts->m_ShowTrackClearanceMode = SHOW_CLEARANCE_NEW_AND_EDITED_TRACKS_AND_VIA_AREAS;
break;
case 4:
displ_opts->m_ShowTrackClearanceMode = SHOW_CLEARANCE_ALWAYS;
break;
}
displ_opts->m_DisplayModTextFill = not m_OptDisplayModTexts->GetValue(); displ_opts->m_DisplayModTextFill = not m_OptDisplayModTexts->GetValue();
displ_opts->m_DisplayModEdgeFill = not m_OptDisplayModOutlines->GetValue(); displ_opts->m_DisplayModEdgeFill = not m_OptDisplayModOutlines->GetValue();
@ -204,28 +272,8 @@ void DIALOG_DISPLAY_OPTIONS::OnOkClick(wxCommandEvent& event)
displ_opts->m_DisplayDrawItemsFill = not m_OptDisplayDrawings->GetValue(); displ_opts->m_DisplayDrawItemsFill = not m_OptDisplayDrawings->GetValue();
displ_opts->m_DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection(); displ_opts->m_DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection();
switch( m_choiceAntialiasing->GetSelection() ) gal_opts.gl_antialiasing_mode = getAntiAliasModeFromRadio(
{ *m_choiceAntialiasing );
case 0:
gal_opts.gl_antialiasing_mode = KIGFX::OPENGL_ANTIALIASING_MODE::NONE;
break;
case 1:
gal_opts.gl_antialiasing_mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_HIGH;
break;
case 2:
gal_opts.gl_antialiasing_mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUBSAMPLE_ULTRA;
break;
case 3:
gal_opts.gl_antialiasing_mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X2;
break;
case 4:
gal_opts.gl_antialiasing_mode = KIGFX::OPENGL_ANTIALIASING_MODE::SUPERSAMPLING_X4;
break;
}
gal_opts.m_gridStyle = getGridStyleFromRadio( *m_gridStyle ); gal_opts.m_gridStyle = getGridStyleFromRadio( *m_gridStyle );