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.

122 lines
4.0 KiB

  1. /**
  2. * @file event_handlers_tracks_vias_sizes.cpp
  3. * @brief Handlers for popup and toolbars events relative to the tracks and vias sizes.
  4. */
  5. #include <fctsys.h>
  6. #include <class_drawpanel.h>
  7. #include <confirm.h>
  8. #include <wxPcbStruct.h>
  9. #include <dialog_helpers.h>
  10. #include <pcbnew_id.h>
  11. #include <pcbnew.h>
  12. #include <class_board.h>
  13. #include <class_module.h>
  14. /**
  15. * Function Tracks_and_Vias_Size_Event
  16. * Event handler for tracks and vias size selection (and some options)
  17. * relative to toolbars and popup events
  18. */
  19. void PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event( wxCommandEvent& event )
  20. {
  21. int ii;
  22. int id = event.GetId();
  23. /* Note: none of these events require aborting the current command (if any)
  24. * (like move, edit or block command)
  25. * so we do not test for a current command in progress and call
  26. * m_canvas->m_endMouseCaptureCallback( m_canvas, &dc );
  27. */
  28. switch( id )
  29. {
  30. case ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH:
  31. GetDesignSettings().m_UseConnectedTrackWidth =
  32. not GetDesignSettings().m_UseConnectedTrackWidth;
  33. break;
  34. case ID_POPUP_PCB_SELECT_USE_NETCLASS_VALUES:
  35. GetDesignSettings().m_UseConnectedTrackWidth = false;
  36. GetBoard()->SetTrackWidthIndex( 0 );
  37. GetBoard()->SetViaSizeIndex( 0 );
  38. break;
  39. case ID_POPUP_PCB_SELECT_AUTO_WIDTH:
  40. m_canvas->MoveCursorToCrossHair();
  41. GetDesignSettings().m_UseConnectedTrackWidth = true;
  42. break;
  43. case ID_POPUP_PCB_SELECT_WIDTH1: // this is the default Netclass selection
  44. case ID_POPUP_PCB_SELECT_WIDTH2: // this is a custom value selection
  45. case ID_POPUP_PCB_SELECT_WIDTH3:
  46. case ID_POPUP_PCB_SELECT_WIDTH4:
  47. case ID_POPUP_PCB_SELECT_WIDTH5:
  48. case ID_POPUP_PCB_SELECT_WIDTH6:
  49. case ID_POPUP_PCB_SELECT_WIDTH7:
  50. case ID_POPUP_PCB_SELECT_WIDTH8:
  51. case ID_POPUP_PCB_SELECT_WIDTH9:
  52. case ID_POPUP_PCB_SELECT_WIDTH10:
  53. case ID_POPUP_PCB_SELECT_WIDTH11:
  54. case ID_POPUP_PCB_SELECT_WIDTH12:
  55. case ID_POPUP_PCB_SELECT_WIDTH13:
  56. case ID_POPUP_PCB_SELECT_WIDTH14:
  57. case ID_POPUP_PCB_SELECT_WIDTH15:
  58. case ID_POPUP_PCB_SELECT_WIDTH16:
  59. m_canvas->MoveCursorToCrossHair();
  60. GetDesignSettings().m_UseConnectedTrackWidth = false;
  61. ii = id - ID_POPUP_PCB_SELECT_WIDTH1;
  62. GetBoard()->SetTrackWidthIndex( ii );
  63. break;
  64. case ID_POPUP_PCB_SELECT_VIASIZE1: // this is the default Netclass selection
  65. case ID_POPUP_PCB_SELECT_VIASIZE2: // this is a custom value selection
  66. case ID_POPUP_PCB_SELECT_VIASIZE3:
  67. case ID_POPUP_PCB_SELECT_VIASIZE4:
  68. case ID_POPUP_PCB_SELECT_VIASIZE5:
  69. case ID_POPUP_PCB_SELECT_VIASIZE6:
  70. case ID_POPUP_PCB_SELECT_VIASIZE7:
  71. case ID_POPUP_PCB_SELECT_VIASIZE8:
  72. case ID_POPUP_PCB_SELECT_VIASIZE9:
  73. case ID_POPUP_PCB_SELECT_VIASIZE10:
  74. case ID_POPUP_PCB_SELECT_VIASIZE11:
  75. case ID_POPUP_PCB_SELECT_VIASIZE12:
  76. case ID_POPUP_PCB_SELECT_VIASIZE13:
  77. case ID_POPUP_PCB_SELECT_VIASIZE14:
  78. case ID_POPUP_PCB_SELECT_VIASIZE15:
  79. case ID_POPUP_PCB_SELECT_VIASIZE16:
  80. // select the new current value for via size (via diameter)
  81. m_canvas->MoveCursorToCrossHair();
  82. ii = id - ID_POPUP_PCB_SELECT_VIASIZE1;
  83. GetBoard()->SetViaSizeIndex( ii );
  84. break;
  85. case ID_AUX_TOOLBAR_PCB_TRACK_WIDTH:
  86. ii = m_SelTrackWidthBox->GetCurrentSelection();
  87. GetBoard()->SetTrackWidthIndex( ii );
  88. break;
  89. case ID_AUX_TOOLBAR_PCB_VIA_SIZE:
  90. ii = m_SelViaSizeBox->GetCurrentSelection();
  91. GetBoard()->SetViaSizeIndex( ii );
  92. break;
  93. default:
  94. wxMessageBox( wxT( "PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event() error") );
  95. break;
  96. }
  97. // Refresh track in progress, if any, by forcing a mouse event,
  98. // to call the current function attached to the mouse
  99. /*if( m_canvas->IsMouseCaptured() )
  100. {
  101. wxMouseEvent event(wxEVT_MOTION);
  102. wxPostEvent( m_canvas, event );
  103. }*/
  104. //+hp
  105. //Refresh canvas, that we can see changes instantly. I use this because it dont,t throw mouse up-left corner.
  106. m_canvas->Refresh();
  107. }