/********************************************/ /* GERBVIEW - Gestion des Options et Reglages */ /********************************************/ /* File options.cpp */ /* * Set the display options for Gerbview */ #include "fctsys.h" #include "common.h" #include "class_drawpanel.h" #include "confirm.h" #include "gerbview.h" #include "pcbplot.h" #include "id.h" #include "protos.h" #include /*****************************************************************/ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event ) /*****************************************************************/ /** Function OnSelectOptionToolbar * called to validate current choices */ { int id = event.GetId(); switch( id ) { case ID_TB_OPTIONS_SHOW_GRID: m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState( id ); DrawPanel->Refresh( TRUE ); break; case ID_TB_OPTIONS_SELECT_UNIT_MM: g_UnitMetric = MILLIMETRE; UpdateStatusBar(); break; case ID_TB_OPTIONS_SELECT_UNIT_INCH: g_UnitMetric = INCHES; UpdateStatusBar(); break; case ID_TB_OPTIONS_SHOW_POLAR_COORD: Affiche_Message( wxEmptyString ); DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState( id ); UpdateStatusBar(); break; case ID_TB_OPTIONS_SELECT_CURSOR: m_CursorShape = m_OptionsToolBar->GetToolState( id ); DrawPanel->Refresh( TRUE ); break; case ID_TB_OPTIONS_SHOW_PADS_SKETCH: if( m_OptionsToolBar->GetToolState( id ) ) { m_DisplayPadFill = FALSE; DisplayOpt.DisplayPadFill = FALSE; } else { m_DisplayPadFill = TRUE; DisplayOpt.DisplayPadFill = TRUE; } DrawPanel->Refresh( TRUE ); break; case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH: if( m_OptionsToolBar->GetToolState( id ) ) { m_DisplayPcbTrackFill = FALSE; DisplayOpt.DisplayPcbTrackFill = FALSE; } else { m_DisplayPcbTrackFill = TRUE; DisplayOpt.DisplayPcbTrackFill = TRUE; } DrawPanel->Refresh( TRUE ); break; case ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH: if( m_OptionsToolBar->GetToolState( id ) ) // Polygons filled asked g_DisplayPolygonsModeSketch = 1; else g_DisplayPolygonsModeSketch = 0; DrawPanel->Refresh( TRUE ); break; case ID_TB_OPTIONS_SHOW_DCODES: DisplayOpt.DisplayPadNum = m_OptionsToolBar->GetToolState( id ); DrawPanel->Refresh( TRUE ); break; default: DisplayError( this, wxT( "WinEDA_PcbFrame::OnSelectOptionToolbar error" ) ); break; } SetToolbars(); } /******************************************************/ class WinEDA_GerberGeneralOptionsFrame : public wxDialog /******************************************************/ { private: WinEDA_BasePcbFrame* m_Parent; wxRadioBox* m_PolarDisplay; wxRadioBox* m_BoxUnits; wxRadioBox* m_CursorShape; wxRadioBox* m_GerberDefaultScale; // Constructor and destructor public: WinEDA_GerberGeneralOptionsFrame( WinEDA_BasePcbFrame* parent, const wxPoint& pos ); ~WinEDA_GerberGeneralOptionsFrame() {}; private: void OnOkClick( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event ); DECLARE_EVENT_TABLE() }; /* Events table for WinEDA_GerberGeneralOptionsFrame */ BEGIN_EVENT_TABLE( WinEDA_GerberGeneralOptionsFrame, wxDialog ) EVT_BUTTON( wxID_OK, WinEDA_GerberGeneralOptionsFrame::OnOkClick ) EVT_BUTTON( wxID_CANCEL, WinEDA_GerberGeneralOptionsFrame::OnCancelClick ) END_EVENT_TABLE() /**********************************************************************************************/ WinEDA_GerberGeneralOptionsFrame::WinEDA_GerberGeneralOptionsFrame( WinEDA_BasePcbFrame* parent, const wxPoint& framepos ) : wxDialog( parent, -1, _( "Gerbview Options" ), framepos, wxSize( 300, 240 ), wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT ) /**********************************************************************************************/ /** WinEDA_GerberGeneralOptionsFrame Constructor */ { m_Parent = parent; wxBoxSizer* MainBoxSizer = new wxBoxSizer( wxHORIZONTAL ); SetSizer( MainBoxSizer ); wxBoxSizer* RightBoxSizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* MiddleBoxSizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* LeftBoxSizer = new wxBoxSizer( wxVERTICAL ); MainBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 ); MainBoxSizer->Add( MiddleBoxSizer, 0, wxGROW | wxALL, 5 ); MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); wxButton* Button = new wxButton( this, wxID_OK, _( "OK" ) ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); /* Display / not display polar coordinates: */ wxString list_coord[2] = { _( "No Display" ), _( "Display" ) }; m_PolarDisplay = new wxRadioBox( this, -1, _( "Display Polar Coord" ), wxDefaultPosition, wxDefaultSize, 2, list_coord, 1 ); m_PolarDisplay->SetSelection( DisplayOpt.DisplayPolarCood ? 1 : 0 ); LeftBoxSizer->Add( m_PolarDisplay, 0, wxGROW | wxALL, 5 ); /* Selection of units */ wxString list_units[2] = { _( "Inches" ), _( "millimeters" ) }; m_BoxUnits = new wxRadioBox( this, -1, _( "Units" ), wxDefaultPosition, wxDefaultSize, 2, list_units, 1 ); m_BoxUnits->SetSelection( g_UnitMetric ? 1 : 0 ); LeftBoxSizer->Add( m_BoxUnits, 0, wxGROW | wxALL, 5 ); /* Selection of cursor shape */ wxString list_cursors[2] = { _( "Small" ), _( "Big" ) }; m_CursorShape = new wxRadioBox( this, -1, _( "Cursor" ), wxDefaultPosition, wxDefaultSize, 2, list_cursors, 1 ); m_CursorShape->SetSelection( parent->m_CursorShape ? 1 : 0 ); MiddleBoxSizer->Add( m_CursorShape, 0, wxGROW | wxALL, 5 ); /* Selection Default Scale (i.e. format 2.3 ou 3.4) */ wxString list_scales[2] = { _( "format: 2.3" ), _( "format 3.4" ) }; m_GerberDefaultScale = new wxRadioBox( this, -1, _( "Default format" ), wxDefaultPosition, wxDefaultSize, 2, list_scales, 1 ); m_GerberDefaultScale->SetSelection( (g_Default_GERBER_Format == 23) ? 0 : 1 ); MiddleBoxSizer->Add( m_GerberDefaultScale, 0, wxGROW | wxALL, 5 ); GetSizer()->Fit( this ); GetSizer()->SetSizeHints( this ); } /************************************************************************/ void WinEDA_GerberGeneralOptionsFrame::OnCancelClick( wxCommandEvent& WXUNUSED(event) ) /************************************************************************/ { EndModal( -1 ); } /*****************************************************************************/ void WinEDA_GerberGeneralOptionsFrame::OnOkClick( wxCommandEvent& event ) /*****************************************************************************/ { DisplayOpt.DisplayPolarCood = (m_PolarDisplay->GetSelection() == 0) ? FALSE : TRUE; g_UnitMetric = (m_BoxUnits->GetSelection() == 0) ? 0 : 1; m_Parent->m_CursorShape = m_CursorShape->GetSelection(); g_Default_GERBER_Format = (m_GerberDefaultScale->GetSelection() == 0) ? 23 : 34; EndModal( 1 ); } /*******************************************/ /* Dialog frame to select deisplay options */ /*******************************************/ class WinEDA_LookFrame : public wxDialog { private: WinEDA_BasePcbFrame* m_Parent; wxRadioBox* m_OptDisplayLines; wxRadioBox* m_OptDisplayFlashes; wxRadioBox* m_OptDisplayPolygons; wxCheckBox* m_OptDisplayDCodes; wxRadioBox* m_OptDisplayDrawings; public: // Constructor and destructor WinEDA_LookFrame( WinEDA_BasePcbFrame* parent, const wxPoint& pos ); ~WinEDA_LookFrame() {}; private: void OnOkClick( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event ); DECLARE_EVENT_TABLE() }; /* Construction de la table des evenements pour WinEDA_LookFrame */ BEGIN_EVENT_TABLE( WinEDA_LookFrame, wxDialog ) EVT_BUTTON( wxID_OK, WinEDA_LookFrame::OnOkClick ) EVT_BUTTON( wxID_CANCEL, WinEDA_LookFrame::OnCancelClick ) END_EVENT_TABLE() /*******************************************************************************/ WinEDA_LookFrame::WinEDA_LookFrame( WinEDA_BasePcbFrame* parent, const wxPoint& framepos ) : wxDialog( parent, -1, _( "Gerbview Draw Options" ), framepos, wxSize( 350, 200 ), wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT ) /*******************************************************************************/ { m_Parent = parent; wxBoxSizer* MainBoxSizer = new wxBoxSizer( wxHORIZONTAL ); SetSizer( MainBoxSizer ); wxBoxSizer* RightBoxSizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* MiddleBoxSizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* LeftBoxSizer = new wxBoxSizer( wxVERTICAL ); MainBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 ); MainBoxSizer->Add( MiddleBoxSizer, 0, wxGROW | wxALL, 5 ); MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); wxButton* Button = new wxButton( this, wxID_OK, _( "OK" ) ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); // Show Option Draw Tracks wxString list_opt2[2] = { _( "Sketch" ), _( "Filled" ) }; m_OptDisplayLines = new wxRadioBox( this, -1, _( "Lines:" ), wxDefaultPosition, wxDefaultSize, 2, list_opt2, 1 ); if( DisplayOpt.DisplayPcbTrackFill ) m_OptDisplayLines->SetSelection( 1 ); LeftBoxSizer->Add( m_OptDisplayLines, 0, wxGROW | wxALL, 5 ); m_OptDisplayFlashes = new wxRadioBox( this, -1, _( "Spots:" ), wxDefaultPosition, wxDefaultSize, 2, list_opt2, 1 ); if( DisplayOpt.DisplayPadFill ) m_OptDisplayFlashes->SetSelection( 1 ); LeftBoxSizer->Add( m_OptDisplayFlashes, 0, wxGROW | wxALL, 5 ); // Show Option Draw polygons m_OptDisplayPolygons = new wxRadioBox( this, -1, _( "Polygons:" ), wxDefaultPosition, wxDefaultSize, 2, list_opt2, 1 ); if( g_DisplayPolygonsModeSketch == 0 ) m_OptDisplayPolygons->SetSelection( 1 ); LeftBoxSizer->Add( m_OptDisplayPolygons, 0, wxGROW | wxALL, 5 ); wxString list_opt3[3] = { _( "Sketch" ), _( "Filled" ), _( "Line" ) }; m_OptDisplayDrawings = new wxRadioBox( this, -1, _( "Display other items:" ), wxDefaultPosition, wxDefaultSize, 3, list_opt3, 1 ); m_OptDisplayDrawings->SetSelection( DisplayOpt.DisplayDrawItems ); MiddleBoxSizer->Add( m_OptDisplayDrawings, 0, wxGROW | wxALL, 5 ); m_OptDisplayDCodes = new wxCheckBox( this, -1, _( "Show D codes" ) ); if( DisplayOpt.DisplayPadNum ) m_OptDisplayDCodes->SetValue( TRUE ); MiddleBoxSizer->Add( m_OptDisplayDCodes, 0, wxGROW | wxALL, 5 ); GetSizer()->Fit( this ); GetSizer()->SetSizeHints( this ); } /**************************************************************/ void WinEDA_LookFrame::OnCancelClick( wxCommandEvent& WXUNUSED(event) ) /**************************************************************/ { EndModal( -1 ); } /*************************************************************/ void WinEDA_LookFrame::OnOkClick( wxCommandEvent& event ) /*************************************************************/ /* Met a jour les options */ { if( m_OptDisplayLines->GetSelection() == 1 ) DisplayOpt.DisplayPcbTrackFill = TRUE; else DisplayOpt.DisplayPcbTrackFill = FALSE; if( m_OptDisplayFlashes->GetSelection() == 1 ) DisplayOpt.DisplayPadFill = TRUE; else DisplayOpt.DisplayPadFill = FALSE; if( m_OptDisplayPolygons->GetSelection() == 0 ) g_DisplayPolygonsModeSketch = 1; else g_DisplayPolygonsModeSketch = 0; DisplayOpt.DisplayPadNum = m_OptDisplayDCodes->GetValue(); DisplayOpt.DisplayDrawItems = m_OptDisplayDrawings->GetSelection(); m_Parent->m_DisplayPadFill = DisplayOpt.DisplayPadFill; m_Parent->m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill; m_Parent->GetScreen()->SetRefreshReq(); EndModal( 1 ); } /***************************************************************************/ void WinEDA_GerberFrame::InstallPcbOptionsFrame( const wxPoint& pos, int id ) /***************************************************************************/ { switch( id ) { case ID_PCB_LOOK_SETUP: { WinEDA_LookFrame* OptionsFrame = new WinEDA_LookFrame( this, pos ); OptionsFrame->ShowModal(); OptionsFrame->Destroy(); } break; case ID_OPTIONS_SETUP: { WinEDA_GerberGeneralOptionsFrame* OptionsFrame = new WinEDA_GerberGeneralOptionsFrame( this, pos ); OptionsFrame->ShowModal(); OptionsFrame->Destroy(); } break; } }