You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

235 lines
7.1 KiB

17 years ago
16 years ago
18 years ago
18 years ago
18 years ago
18 years ago
18 years ago
18 years ago
18 years ago
18 years ago
18 years ago
18 years ago
16 years ago
18 years ago
16 years ago
16 years ago
16 years ago
16 years ago
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: dialog_general_options.cpp
  3. // Author: jean-pierre Charras
  4. /////////////////////////////////////////////////////////////////////////////
  5. /* functions relatives to the dialogs opened from the main menu :
  6. * Preferences/general
  7. * Preferences/display
  8. */
  9. #include "fctsys.h"
  10. #include "common.h"
  11. #include "class_drawpanel.h"
  12. #include "confirm.h"
  13. #include "pcbnew.h"
  14. #include "wxPcbStruct.h"
  15. #include "class_board_design_settings.h"
  16. #include "dialog_general_options.h"
  17. #include "pcbnew_id.h"
  18. Dialog_GeneralOptions::Dialog_GeneralOptions( WinEDA_PcbFrame* parent ) :
  19. DialogGeneralOptionsBoardEditor_base( parent )
  20. {
  21. m_Parent = parent;
  22. init();
  23. GetSizer()->SetSizeHints( this );
  24. Center();
  25. }
  26. void Dialog_GeneralOptions::init()
  27. {
  28. SetFocus();
  29. m_Board = m_Parent->GetBoard();
  30. /* Set display options */
  31. m_PolarDisplay->SetSelection( DisplayOpt.DisplayPolarCood ? 1 : 0 );
  32. m_UnitsSelection->SetSelection( g_UnitMetric ? 1 : 0 );
  33. m_CursorShape->SetSelection( m_Parent->m_CursorShape ? 1 : 0 );
  34. wxString timevalue;
  35. timevalue << g_TimeOut / 60;
  36. m_SaveTime->SetValue( timevalue );
  37. m_MaxShowLinks->SetValue( g_MaxLinksShowed );
  38. m_DrcOn->SetValue( Drc_On );
  39. m_ShowModuleRatsnest->SetValue( g_Show_Module_Ratsnest );
  40. m_ShowGlobalRatsnest->SetValue( m_Board->IsElementVisible(RATSNEST_VISIBLE) );
  41. m_TrackAutodel->SetValue( g_AutoDeleteOldTrack );
  42. m_Track_45_Only_Ctrl->SetValue( g_Track_45_Only_Allowed );
  43. m_Segments_45_Only_Ctrl->SetValue( Segments_45_Only );
  44. m_AutoPANOpt->SetValue( m_Parent->DrawPanel->m_AutoPAN_Enable );
  45. m_Segments_45_Only_Ctrl->SetValue( Segments_45_Only );
  46. m_Track_DoubleSegm_Ctrl->SetValue( g_TwoSegmentTrackBuild );
  47. m_MagneticPadOptCtrl->SetSelection( g_MagneticPadOption );
  48. m_MagneticTrackOptCtrl->SetSelection( g_MagneticTrackOption );
  49. }
  50. void Dialog_GeneralOptions::OnCancelClick( wxCommandEvent& event )
  51. {
  52. event.Skip();
  53. }
  54. void Dialog_GeneralOptions::OnOkClick( wxCommandEvent& event )
  55. {
  56. int ii;
  57. DisplayOpt.DisplayPolarCood =
  58. ( m_PolarDisplay->GetSelection() == 0 ) ? FALSE : true;
  59. ii = g_UnitMetric;
  60. g_UnitMetric = ( m_UnitsSelection->GetSelection() == 0 ) ? 0 : 1;
  61. if( ii != g_UnitMetric )
  62. m_Parent->ReCreateAuxiliaryToolbar();
  63. m_Parent->m_CursorShape = m_CursorShape->GetSelection();
  64. g_TimeOut = 60 * m_SaveTime->GetValue();
  65. /* Updating the combobox to display the active layer. */
  66. g_MaxLinksShowed = m_MaxShowLinks->GetValue();
  67. Drc_On = m_DrcOn->GetValue();
  68. if( m_Board->IsElementVisible(RATSNEST_VISIBLE) != m_ShowGlobalRatsnest->GetValue() )
  69. {
  70. m_Parent->SetElementVisibility(RATSNEST_VISIBLE, m_ShowGlobalRatsnest->GetValue() );
  71. m_Parent->DrawPanel->Refresh( );
  72. }
  73. g_Show_Module_Ratsnest = m_ShowModuleRatsnest->GetValue();
  74. g_AutoDeleteOldTrack = m_TrackAutodel->GetValue();
  75. Segments_45_Only = m_Segments_45_Only_Ctrl->GetValue();
  76. g_Track_45_Only_Allowed = m_Track_45_Only_Ctrl->GetValue();
  77. m_Parent->DrawPanel->m_AutoPAN_Enable = m_AutoPANOpt->GetValue();
  78. g_TwoSegmentTrackBuild = m_Track_DoubleSegm_Ctrl->GetValue();
  79. g_MagneticPadOption = m_MagneticPadOptCtrl->GetSelection();
  80. g_MagneticTrackOption = m_MagneticTrackOptCtrl->GetSelection();
  81. EndModal( wxID_OK );
  82. }
  83. /* Must be called on a click on the left toolbar (options toolbar
  84. * Update variables according to tools states
  85. */
  86. void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
  87. {
  88. int id = event.GetId();
  89. bool state = m_OptionsToolBar->GetToolState( id );
  90. switch( id )
  91. {
  92. case ID_TB_OPTIONS_DRC_OFF:
  93. Drc_On = state ? FALSE : true;
  94. break;
  95. case ID_TB_OPTIONS_SHOW_GRID:
  96. SetElementVisibility(GRID_VISIBLE, state);
  97. DrawPanel->Refresh();
  98. break;
  99. case ID_TB_OPTIONS_SHOW_RATSNEST:
  100. SetElementVisibility(RATSNEST_VISIBLE, state);
  101. DrawPanel->Refresh( );
  102. break;
  103. case ID_TB_OPTIONS_SHOW_MODULE_RATSNEST:
  104. g_Show_Module_Ratsnest = state; // TODO: use the visibility list
  105. break;
  106. case ID_TB_OPTIONS_SELECT_UNIT_MM:
  107. g_UnitMetric = MILLIMETRE;
  108. case ID_TB_OPTIONS_SELECT_UNIT_INCH:
  109. if( id == ID_TB_OPTIONS_SELECT_UNIT_INCH )
  110. g_UnitMetric = INCHES;
  111. m_TrackAndViasSizesList_Changed = true;
  112. UpdateStatusBar();
  113. ReCreateAuxiliaryToolbar();
  114. DisplayUnitsMsg();
  115. break;
  116. case ID_TB_OPTIONS_SHOW_POLAR_COORD:
  117. Affiche_Message( wxEmptyString );
  118. DisplayOpt.DisplayPolarCood = state;
  119. UpdateStatusBar();
  120. break;
  121. case ID_TB_OPTIONS_SELECT_CURSOR:
  122. m_CursorShape = state;
  123. break;
  124. case ID_TB_OPTIONS_AUTO_DEL_TRACK:
  125. g_AutoDeleteOldTrack = state;
  126. break;
  127. case ID_TB_OPTIONS_SHOW_ZONES:
  128. DisplayOpt.DisplayZonesMode = 0;
  129. DrawPanel->Refresh();
  130. break;
  131. case ID_TB_OPTIONS_SHOW_ZONES_DISABLE:
  132. DisplayOpt.DisplayZonesMode = 1;
  133. DrawPanel->Refresh();
  134. break;
  135. case ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY:
  136. DisplayOpt.DisplayZonesMode = 2;
  137. DrawPanel->Refresh();
  138. break;
  139. case ID_TB_OPTIONS_SHOW_PADS_SKETCH:
  140. if( state )
  141. {
  142. m_DisplayPadFill = DisplayOpt.DisplayPadFill = false;
  143. }
  144. else
  145. {
  146. m_DisplayPadFill = DisplayOpt.DisplayPadFill = true;
  147. }
  148. DrawPanel->Refresh();
  149. break;
  150. case ID_TB_OPTIONS_SHOW_VIAS_SKETCH:
  151. if( state )
  152. {
  153. m_DisplayViaFill = DisplayOpt.DisplayViaFill = false;
  154. }
  155. else
  156. {
  157. m_DisplayViaFill = DisplayOpt.DisplayViaFill = true;
  158. }
  159. DrawPanel->Refresh();
  160. break;
  161. case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
  162. m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = !state;
  163. DrawPanel->Refresh();
  164. break;
  165. case ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE:
  166. DisplayOpt.ContrastModeDisplay = state;
  167. DrawPanel->Refresh();
  168. break;
  169. case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1:
  170. m_show_microwave_tools = state;
  171. m_auimgr.GetPane( wxT( "m_AuxVToolBar" ) ).Show( m_show_microwave_tools );
  172. m_auimgr.Update();
  173. break;
  174. case ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR:
  175. // show auxiliary Vertical layers and visibility manager toolbar
  176. m_show_layer_manager_tools = state;
  177. m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
  178. m_auimgr.Update();
  179. if( m_show_layer_manager_tools )
  180. GetMenuBar()->SetLabel(ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
  181. _("Hide &Layers Manager" ) );
  182. else
  183. GetMenuBar()->SetLabel(ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
  184. _("Show &Layers Manager" ) );
  185. break;
  186. default:
  187. DisplayError( this,
  188. wxT( "WinEDA_PcbFrame::OnSelectOptionToolbar error \n (event not handled!)" ) );
  189. break;
  190. }
  191. SetToolbars();
  192. }