12DIALOG_PNS_SETTINGS_BASE::DIALOG_PNS_SETTINGS_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
14 this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
16 wxBoxSizer* bMainSizer;
17 bMainSizer =
new wxBoxSizer( wxVERTICAL );
20 bColumns =
new wxBoxSizer( wxHORIZONTAL );
22 wxStaticBoxSizer* sbModeSizer;
23 sbModeSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Mode") ), wxVERTICAL );
25 m_rbMarkObstacles =
new wxRadioButton( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Highlight collisions"), wxDefaultPosition, wxDefaultSize, 0 );
29 bSizer2 =
new wxBoxSizer( wxVERTICAL );
31 m_freeAngleMode =
new wxCheckBox( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Free angle mode"), wxDefaultPosition, wxDefaultSize, 0 );
34 m_violateDrc =
new wxCheckBox( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Allow DRC violations"), wxDefaultPosition, wxDefaultSize, 0 );
35 m_violateDrc->SetToolTip(
_(
"(Highlight collisions mode only) - allows one to establish a track even if is violating the DRC rules.") );
37 bSizer2->Add(
m_violateDrc, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
40 sbModeSizer->Add( bSizer2, 0, wxRIGHT|wxLEFT, 20 );
43 sbModeSizer->Add( 0, 15, 1, wxEXPAND, 5 );
45 m_rbShove =
new wxRadioButton( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Shove"), wxDefaultPosition, wxDefaultSize, 0 );
46 sbModeSizer->Add(
m_rbShove, 0, wxRIGHT, 5 );
49 bSizer3 =
new wxBoxSizer( wxVERTICAL );
51 m_shoveVias =
new wxCheckBox( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Shove vias"), wxDefaultPosition, wxDefaultSize, 0 );
52 m_shoveVias->SetToolTip(
_(
"When disabled, vias are treated as un-movable objects and hugged instead of shoved.") );
54 bSizer3->Add(
m_shoveVias, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
56 m_backPressure =
new wxCheckBox( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Jump over obstacles"), wxDefaultPosition, wxDefaultSize, 0 );
57 m_backPressure->SetToolTip(
_(
"When enabled, the router tries to move colliding tracks behind solid obstacles (e.g. pads) instead of \"reflecting\" back the collision") );
62 sbModeSizer->Add( bSizer3, 0, wxRIGHT|wxLEFT, 20 );
65 sbModeSizer->Add( 0, 15, 1, wxEXPAND, 5 );
67 m_rbWalkaround =
new wxRadioButton( sbModeSizer->GetStaticBox(), wxID_ANY,
_(
"Walk around"), wxDefaultPosition, wxDefaultSize, 0 );
71 bColumns->Add( sbModeSizer, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
74 bColumns->Add( 5, 0, 0, 0, 5 );
77 bSizer5 =
new wxBoxSizer( wxVERTICAL );
79 wxStaticBoxSizer* bOptions;
80 bOptions =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Routing") ), wxVERTICAL );
83 gSizer1 =
new wxGridSizer( 0, 1, 2, 0 );
85 m_removeLoops =
new wxCheckBox( bOptions->GetStaticBox(), wxID_ANY,
_(
"Remove redundant tracks"), wxDefaultPosition, wxDefaultSize, 0 );
86 m_removeLoops->SetToolTip(
_(
"If the new track has the same connection as an already existing track, the old track is removed.") );
90 m_smartPads =
new wxCheckBox( bOptions->GetStaticBox(), wxID_ANY,
_(
"Optimize pad connections"), wxDefaultPosition, wxDefaultSize, 0 );
91 m_smartPads->SetToolTip(
_(
"When enabled, the router tries to break out pads/vias in a clean way, avoiding acute angles and jagged breakout tracks.") );
95 m_autoPosture =
new wxCheckBox( bOptions->GetStaticBox(), wxID_ANY,
_(
"Use mouse path to set track posture"), wxDefaultPosition, wxDefaultSize, 0 );
96 m_autoPosture->SetToolTip(
_(
"When enabled, the posture of tracks will be guided by how the mouse is moved from the starting location") );
100 m_fixAllSegments =
new wxCheckBox( bOptions->GetStaticBox(), wxID_ANY,
_(
"Fix all segments on click"), wxDefaultPosition, wxDefaultSize, 0 );
101 m_fixAllSegments->SetToolTip(
_(
"When enabled, all track segments will be fixed in place up to the cursor location. When disabled, the last segment (closest to the cursor) will remain free and follow the cursor.") );
105 m_suggestEnding =
new wxCheckBox( bOptions->GetStaticBox(), wxID_ANY,
_(
"Suggest track finish"), wxDefaultPosition, wxDefaultSize, 0 );
111 bOptions->Add( gSizer1, 1, wxEXPAND, 5 );
114 bSizer5->Add( bOptions, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
116 wxStaticBoxSizer* sbSizer4;
117 sbSizer4 =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Dragging") ), wxVERTICAL );
119 wxGridSizer* gSizer4;
120 gSizer4 =
new wxGridSizer( 0, 1, 2, 0 );
122 m_smoothDragged =
new wxCheckBox( sbSizer4->GetStaticBox(), wxID_ANY,
_(
"Smooth dragged segments"), wxDefaultPosition, wxDefaultSize, 0 );
123 m_smoothDragged->SetToolTip(
_(
"When enabled, the router attempts to merge several jagged segments into a single straight one (dragging mode).") );
127 m_optimizeEntireDraggedTrack =
new wxCheckBox( sbSizer4->GetStaticBox(), wxID_ANY,
_(
"Optimize entire track being dragged"), wxDefaultPosition, wxDefaultSize, 0 );
128 m_optimizeEntireDraggedTrack->SetToolTip(
_(
"When enabled, the entire portion of the track that is visible on the screen will be optimized and re-routed when a segment is dragged. When disabled, only the area near the segment being dragged will be optimized.") );
132 m_restrictAngles =
new wxCheckBox( sbSizer4->GetStaticBox(), wxID_ANY,
_(
"Avoid sharp angles"), wxDefaultPosition, wxDefaultSize, 0 );
133 m_restrictAngles->SetToolTip(
_(
"When enabled, dragged traces will be optimized to avoid creating 90-degree or acute corners in most situations.") );
138 sbSizer4->Add( gSizer4, 0, wxEXPAND, 5 );
141 bSizer5->Add( sbSizer4, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
144 bColumns->Add( bSizer5, 1, wxEXPAND, 5 );
147 bMainSizer->Add( bColumns, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
159 this->SetSizer( bMainSizer );
161 bMainSizer->Fit(
this );