259 lines
7.5 KiB
C++
259 lines
7.5 KiB
C++
/************************/
|
|
/* File options.cpp */
|
|
/************************/
|
|
|
|
/*
|
|
* Set some general options of Gerbview
|
|
*/
|
|
|
|
|
|
#include "fctsys.h"
|
|
#include "common.h"
|
|
#include "class_drawpanel.h"
|
|
#include "confirm.h"
|
|
|
|
#include "pcbplot.h"
|
|
#include "gerbview.h"
|
|
#include "protos.h"
|
|
|
|
#include "gerbview_id.h"
|
|
|
|
|
|
/** Function OnSelectOptionToolbar
|
|
* called to validate current choices
|
|
*/
|
|
void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
|
|
{
|
|
int id = event.GetId();
|
|
bool state;
|
|
switch( id )
|
|
{
|
|
case ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG:
|
|
state = ! m_show_layer_manager_tools;
|
|
id = ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR;
|
|
break;
|
|
|
|
default:
|
|
state = m_OptionsToolBar->GetToolState( id );
|
|
break;
|
|
}
|
|
|
|
switch( id )
|
|
{
|
|
case ID_TB_OPTIONS_SHOW_GRID:
|
|
SetGridVisibility( state );
|
|
DrawPanel->Refresh( TRUE );
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SELECT_UNIT_MM:
|
|
g_UserUnit = MILLIMETRES;
|
|
UpdateStatusBar();
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SELECT_UNIT_INCH:
|
|
g_UserUnit = INCHES;
|
|
UpdateStatusBar();
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SHOW_POLAR_COORD:
|
|
Affiche_Message( wxEmptyString );
|
|
DisplayOpt.DisplayPolarCood = state;
|
|
UpdateStatusBar();
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SELECT_CURSOR:
|
|
m_CursorShape = state;
|
|
DrawPanel->Refresh( TRUE );
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SHOW_PADS_SKETCH:
|
|
if( state )
|
|
{
|
|
DisplayOpt.DisplayPadFill = m_DisplayPadFill = false;
|
|
}
|
|
else
|
|
{
|
|
DisplayOpt.DisplayPadFill = m_DisplayPadFill = true;
|
|
}
|
|
DrawPanel->Refresh( TRUE );
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SHOW_VIAS_SKETCH:
|
|
if( state )
|
|
{
|
|
DisplayOpt.DisplayViaFill = m_DisplayViaFill = false;
|
|
}
|
|
else
|
|
{
|
|
DisplayOpt.DisplayViaFill = m_DisplayViaFill = true;
|
|
}
|
|
DrawPanel->Refresh( TRUE );
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
|
|
if(state )
|
|
{
|
|
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( state ) // Polygons filled asked
|
|
g_DisplayPolygonsModeSketch = 1;
|
|
else
|
|
g_DisplayPolygonsModeSketch = 0;
|
|
DrawPanel->Refresh( TRUE );
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SHOW_DCODES:
|
|
SetElementVisibility( DCODES_VISIBLE, state );
|
|
DrawPanel->Refresh( TRUE );
|
|
break;
|
|
|
|
case ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR:
|
|
// show/hide auxiliary Vertical layers and visibility manager toolbar
|
|
m_show_layer_manager_tools = state;
|
|
m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
|
|
m_auimgr.Update();
|
|
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;
|
|
|
|
public:
|
|
WinEDA_GerberGeneralOptionsFrame( WinEDA_BasePcbFrame* parent );
|
|
~WinEDA_GerberGeneralOptionsFrame() {};
|
|
|
|
private:
|
|
void OnOkClick( wxCommandEvent& event );
|
|
void OnCancelClick( wxCommandEvent& event );
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
|
|
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 ) :
|
|
wxDialog( parent, -1, _( "Gerbview Options" ),
|
|
wxDefaultPosition, wxSize( 300, 240 ),
|
|
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 );
|
|
|
|
/* 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_UserUnit ? 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_UserUnit = (m_BoxUnits->GetSelection() == 0) ? INCHES : MILLIMETRES;
|
|
m_Parent->m_CursorShape = m_CursorShape->GetSelection();
|
|
g_Default_GERBER_Format =
|
|
(m_GerberDefaultScale->GetSelection() == 0) ? 23 : 34;
|
|
|
|
EndModal( 1 );
|
|
}
|
|
|
|
|
|
void WinEDA_GerberFrame::InstallGerberGeneralOptionsFrame( wxCommandEvent& event )
|
|
{
|
|
WinEDA_GerberGeneralOptionsFrame dlg( this );
|
|
dlg.ShowModal();
|
|
}
|