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.

307 lines
9.4 KiB

17 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
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
  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. /***********************************************************************************/
  19. Dialog_GeneralOptions::Dialog_GeneralOptions( WinEDA_PcbFrame* parent, wxDC* DC ) :
  20. DialogGeneralOptionsBoardEditor_base( parent )
  21. /***********************************************************************************/
  22. {
  23. m_Parent = parent;
  24. m_DC = DC;
  25. init();
  26. }
  27. /********************************************************************/
  28. void Dialog_GeneralOptions::init()
  29. /********************************************************************/
  30. {
  31. SetFocus();
  32. /* Set display options */
  33. m_PolarDisplay->SetSelection( DisplayOpt.DisplayPolarCood ? 1 : 0 );
  34. m_UnitsSelection->SetSelection( g_UnitMetric ? 1 : 0 );
  35. m_CursorShape->SetSelection( m_Parent->m_CursorShape ? 1 : 0 );
  36. wxString timevalue;
  37. timevalue << g_TimeOut / 60;
  38. m_SaveTime->SetValue( timevalue );
  39. /*
  40. int layer_count[] = {1,2,4,6,8,10,12,14,16};
  41. m_LayerNumber->SetSelection(1);
  42. for ( unsigned ii = 0; ii < sizeof(layer_count); ii++ )
  43. {
  44. if ( g_DesignSettings.m_CopperLayerCount != layer_count[ii] )
  45. continue;
  46. m_LayerNumber->SetSelection(ii);
  47. break;
  48. }
  49. */
  50. m_MaxShowLinks->SetValue( g_MaxLinksShowed );
  51. m_DrcOn->SetValue( Drc_On );
  52. m_ShowModuleRatsnest->SetValue( g_Show_Module_Ratsnest );
  53. m_ShowGlobalRatsnest->SetValue( g_Show_Ratsnest );
  54. m_TrackAutodel->SetValue( g_AutoDeleteOldTrack );
  55. m_Track_45_Only_Ctrl->SetValue( Track_45_Only );
  56. m_Segments_45_Only_Ctrl->SetValue( Segments_45_Only );
  57. m_AutoPANOpt->SetValue( m_Parent->DrawPanel->m_AutoPAN_Enable );
  58. m_Segments_45_Only_Ctrl->SetValue( Segments_45_Only );
  59. m_Track_DoubleSegm_Ctrl->SetValue( g_TwoSegmentTrackBuild );
  60. m_MagneticPadOptCtrl->SetSelection( g_MagneticPadOption );
  61. m_MagneticTrackOptCtrl->SetSelection( g_MagneticTrackOption );
  62. if( GetSizer() )
  63. {
  64. GetSizer()->SetSizeHints( this );
  65. }
  66. }
  67. /*****************************************************************/
  68. void Dialog_GeneralOptions::OnCancelClick( wxCommandEvent& event )
  69. /*****************************************************************/
  70. {
  71. event.Skip();
  72. }
  73. /**************************************************************************/
  74. void Dialog_GeneralOptions::OnOkClick( wxCommandEvent& event )
  75. /**************************************************************************/
  76. {
  77. int ii;
  78. DisplayOpt.DisplayPolarCood =
  79. (m_PolarDisplay->GetSelection() == 0) ? FALSE : true;
  80. ii = g_UnitMetric;
  81. g_UnitMetric = (m_UnitsSelection->GetSelection() == 0) ? 0 : 1;
  82. if( ii != g_UnitMetric )
  83. m_Parent->ReCreateAuxiliaryToolbar();
  84. m_Parent->m_CursorShape = m_CursorShape->GetSelection();
  85. g_TimeOut = 60 * m_SaveTime->GetValue();
  86. /* Mise a jour de la combobox d'affichage de la couche active */
  87. g_MaxLinksShowed = m_MaxShowLinks->GetValue();
  88. Drc_On = m_DrcOn->GetValue();
  89. if( g_Show_Ratsnest != m_ShowGlobalRatsnest->GetValue() )
  90. {
  91. g_Show_Ratsnest = m_ShowGlobalRatsnest->GetValue();
  92. m_Parent->Ratsnest_On_Off( m_DC );
  93. m_Parent->RedrawActiveWindow( m_DC, true);
  94. }
  95. g_Show_Module_Ratsnest = m_ShowModuleRatsnest->GetValue();
  96. g_AutoDeleteOldTrack = m_TrackAutodel->GetValue();
  97. Segments_45_Only = m_Segments_45_Only_Ctrl->GetValue();
  98. Track_45_Only = m_Track_45_Only_Ctrl->GetValue();
  99. m_Parent->DrawPanel->m_AutoPAN_Enable = m_AutoPANOpt->GetValue();
  100. g_TwoSegmentTrackBuild = m_Track_DoubleSegm_Ctrl->GetValue();
  101. g_MagneticPadOption = m_MagneticPadOptCtrl->GetSelection();
  102. g_MagneticTrackOption = m_MagneticTrackOptCtrl->GetSelection();
  103. EndModal( 1 );
  104. }
  105. #include "dialog_graphic_items_options.cpp"
  106. /*****************************************************************/
  107. void WinEDA_PcbFrame::InstallPcbOptionsFrame( const wxPoint& pos,
  108. wxDC* DC, int id )
  109. /*****************************************************************/
  110. {
  111. switch( id )
  112. {
  113. case ID_PCB_DRAWINGS_WIDTHS_SETUP:
  114. {
  115. WinEDA_GraphicItemsOptionsDialog dlg( this );
  116. dlg.ShowModal();
  117. }
  118. break;
  119. default:
  120. wxMessageBox(wxT("InstallPcbOptionsFrame() id error"));
  121. break;
  122. }
  123. }
  124. /*******************************************************************/
  125. void WinEDA_ModuleEditFrame::InstallOptionsFrame( const wxPoint& pos )
  126. /*******************************************************************/
  127. {
  128. WinEDA_GraphicItemsOptionsDialog dlg( this );
  129. dlg.ShowModal();
  130. }
  131. /*****************************************************************/
  132. void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
  133. /*****************************************************************/
  134. /* Must be called on a click on the left toolbar (options toolbar
  135. * Update variables according to the tools states
  136. */
  137. {
  138. int id = event.GetId();
  139. switch( id )
  140. {
  141. case ID_TB_OPTIONS_DRC_OFF:
  142. Drc_On = m_OptionsToolBar->GetToolState( id ) ? FALSE : true;
  143. break;
  144. case ID_TB_OPTIONS_SHOW_GRID:
  145. m_Draw_Grid = m_OptionsToolBar->GetToolState( id );
  146. DrawPanel->Refresh( );
  147. break;
  148. case ID_TB_OPTIONS_SHOW_RATSNEST:
  149. g_Show_Ratsnest = m_OptionsToolBar->GetToolState( id );
  150. {
  151. wxClientDC dc( DrawPanel );
  152. DrawPanel->PrepareGraphicContext( &dc );
  153. Ratsnest_On_Off( &dc );
  154. RedrawActiveWindow( &dc, true);
  155. }
  156. break;
  157. case ID_TB_OPTIONS_SHOW_MODULE_RATSNEST:
  158. g_Show_Module_Ratsnest = m_OptionsToolBar->GetToolState( id );
  159. break;
  160. case ID_TB_OPTIONS_SELECT_UNIT_MM:
  161. g_UnitMetric = MILLIMETRE;
  162. case ID_TB_OPTIONS_SELECT_UNIT_INCH:
  163. if( id == ID_TB_OPTIONS_SELECT_UNIT_INCH )
  164. g_UnitMetric = INCHES;
  165. m_TrackAndViasSizesList_Changed = true;
  166. UpdateStatusBar(); /* Reaffichage des coord curseur */
  167. ReCreateAuxiliaryToolbar();
  168. DisplayUnitsMsg();
  169. break;
  170. case ID_TB_OPTIONS_SHOW_POLAR_COORD:
  171. Affiche_Message( wxEmptyString );
  172. DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState( id );
  173. UpdateStatusBar(); /* Reaffichage des coord curseur */
  174. break;
  175. case ID_TB_OPTIONS_SELECT_CURSOR:
  176. m_CursorShape = m_OptionsToolBar->GetToolState( id );
  177. break;
  178. case ID_TB_OPTIONS_AUTO_DEL_TRACK:
  179. g_AutoDeleteOldTrack = m_OptionsToolBar->GetToolState( id );
  180. break;
  181. case ID_TB_OPTIONS_SHOW_ZONES:
  182. DisplayOpt.DisplayZonesMode = 0;
  183. DrawPanel->Refresh( );
  184. break;
  185. case ID_TB_OPTIONS_SHOW_ZONES_DISABLE:
  186. DisplayOpt.DisplayZonesMode = 1;
  187. DrawPanel->Refresh( );
  188. break;
  189. case ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY:
  190. DisplayOpt.DisplayZonesMode = 2;
  191. DrawPanel->Refresh( );
  192. break;
  193. case ID_TB_OPTIONS_SHOW_PADS_SKETCH:
  194. if( m_OptionsToolBar->GetToolState( id ) )
  195. {
  196. m_DisplayPadFill = DisplayOpt.DisplayPadFill = false;
  197. }
  198. else
  199. {
  200. m_DisplayPadFill = DisplayOpt.DisplayPadFill = true;
  201. }
  202. DrawPanel->Refresh( );
  203. break;
  204. case ID_TB_OPTIONS_SHOW_VIAS_SKETCH:
  205. if( m_OptionsToolBar->GetToolState( id ) )
  206. {
  207. m_DisplayViaFill = DisplayOpt.DisplayViaFill = false;
  208. }
  209. else
  210. {
  211. m_DisplayViaFill = DisplayOpt.DisplayViaFill = true;
  212. }
  213. DrawPanel->Refresh( );
  214. break;
  215. case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
  216. m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill =
  217. !m_OptionsToolBar->GetToolState( id );
  218. DrawPanel->Refresh( );
  219. break;
  220. case ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE:
  221. DisplayOpt.ContrastModeDisplay =
  222. m_OptionsToolBar->GetToolState( id );
  223. DrawPanel->Refresh( );
  224. break;
  225. case ID_TB_OPTIONS_SHOW_INVISIBLE_TEXT_MODE:
  226. g_DesignSettings.SetElementVisibility( MODULE_TEXT_NOV_VISIBLE,
  227. m_OptionsToolBar->GetToolState( id ));
  228. DrawPanel->Refresh( );
  229. break;
  230. case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1:
  231. #if !defined(KICAD_AUIMANAGER)
  232. if( m_OptionsToolBar->GetToolState( id ) ) // show aux V toolbar (Microwave tool)
  233. ReCreateAuxVToolbar();
  234. else
  235. {
  236. delete m_AuxVToolBar;
  237. m_AuxVToolBar = NULL;
  238. }
  239. {
  240. wxSizeEvent SizeEv( GetSize() );
  241. OnSize( SizeEv );
  242. }
  243. #else
  244. m_auimgr.GetPane(wxT("m_AuxVToolBar")).Show( m_OptionsToolBar->GetToolState( id ) );
  245. m_auimgr.Update();
  246. #endif
  247. break;
  248. default:
  249. DisplayError( this,
  250. wxT( "WinEDA_PcbFrame::OnSelectOptionToolbar error \n (event not handled!)" ) );
  251. break;
  252. }
  253. SetToolbars();
  254. }