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.

244 lines
9.5 KiB

16 years ago
15 years ago
15 years ago
  1. /***********************************************/
  2. /* tool_modeit.cpp: footprint editor toolbars. */
  3. /***********************************************/
  4. #include "fctsys.h"
  5. #include "common.h"
  6. #include "pcbnew.h"
  7. #include "wxPcbStruct.h"
  8. #include "module_editor_frame.h"
  9. #include "dialog_helpers.h"
  10. #include "bitmaps.h"
  11. #include "pcbnew_id.h"
  12. #include "hotkeys.h"
  13. //#include "protos.h"
  14. #ifdef __UNIX__
  15. #define LISTBOX_WIDTH 140
  16. #else
  17. #define LISTBOX_WIDTH 120
  18. #endif
  19. /* Create the main horizontal toolbar for the footprint editor */
  20. void WinEDA_ModuleEditFrame::ReCreateHToolbar()
  21. {
  22. if( m_HToolBar != NULL )
  23. return;
  24. wxString msg;
  25. m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, true );
  26. // Set up toolbar
  27. m_HToolBar->AddTool( ID_MODEDIT_SELECT_CURRENT_LIB, wxEmptyString,
  28. wxBitmap( open_library_xpm ),
  29. _( "Select working library" ) );
  30. m_HToolBar->AddTool( ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, wxBitmap( save_library_xpm ),
  31. _( "Save Module in working library" ) );
  32. m_HToolBar->AddTool( ID_MODEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString,
  33. wxBitmap( new_library_xpm ),
  34. _( "Create new library and save current module" ) );
  35. m_HToolBar->AddSeparator();
  36. m_HToolBar->AddTool( ID_MODEDIT_DELETE_PART, wxEmptyString, wxBitmap( delete_xpm ),
  37. _( "Delete part in current library" ) );
  38. m_HToolBar->AddSeparator();
  39. m_HToolBar->AddTool( ID_MODEDIT_NEW_MODULE, wxEmptyString, wxBitmap( new_footprint_xpm ),
  40. _( "New Module" ) );
  41. m_HToolBar->AddTool( ID_MODEDIT_LOAD_MODULE, wxEmptyString, wxBitmap( module_xpm ),
  42. _( "Load module from lib" ) );
  43. m_HToolBar->AddSeparator();
  44. m_HToolBar->AddTool( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString,
  45. wxBitmap( load_module_board_xpm ),
  46. _( "Load module from current board" ) );
  47. m_HToolBar->AddTool( ID_MODEDIT_UPDATE_MODULE_IN_BOARD, wxEmptyString,
  48. wxBitmap( update_module_board_xpm ),
  49. _( "Update module in current board" ) );
  50. m_HToolBar->AddTool( ID_MODEDIT_INSERT_MODULE_IN_BOARD, wxEmptyString,
  51. wxBitmap( insert_module_board_xpm ),
  52. _( "Insert module into current board" ) );
  53. m_HToolBar->AddSeparator();
  54. m_HToolBar->AddTool( ID_MODEDIT_IMPORT_PART, wxEmptyString, wxBitmap( import_module_xpm ),
  55. _( "import module" ) );
  56. m_HToolBar->AddTool( ID_MODEDIT_EXPORT_PART, wxEmptyString, wxBitmap( export_module_xpm ),
  57. _( "export module" ) );
  58. m_HToolBar->AddSeparator();
  59. m_HToolBar->AddTool( wxID_UNDO, wxEmptyString, wxBitmap( undo_xpm ),
  60. _( "Undo last edition" ) );
  61. m_HToolBar->AddTool( wxID_REDO, wxEmptyString, wxBitmap( redo_xpm ),
  62. _( "Redo the last undo command" ) );
  63. m_HToolBar->AddSeparator();
  64. m_HToolBar->AddTool( ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString,
  65. wxBitmap( module_options_xpm ),
  66. _( "Module Properties" ) );
  67. m_HToolBar->AddSeparator();
  68. m_HToolBar->AddTool( wxID_PRINT, wxEmptyString, wxBitmap( print_button ),
  69. _( "Print Module" ) );
  70. m_HToolBar->AddSeparator();
  71. msg = AddHotkeyName( _( "Zoom in" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_IN, false );
  72. m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, wxBitmap( zoom_in_xpm ), msg );
  73. msg = AddHotkeyName( _( "Zoom out" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_OUT, false );
  74. m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, wxBitmap( zoom_out_xpm ), msg );
  75. msg = AddHotkeyName( _( "Redraw view" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_REDRAW, false );
  76. m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, wxBitmap( zoom_redraw_xpm ), msg );
  77. msg = AddHotkeyName( _( "Zoom auto" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_AUTO, false );
  78. m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, wxBitmap( zoom_auto_xpm ), msg );
  79. m_HToolBar->AddSeparator();
  80. m_HToolBar->AddTool( ID_MODEDIT_PAD_SETTINGS, wxEmptyString, wxBitmap( options_pad_xpm ),
  81. _( "Pad Settings" ) );
  82. m_HToolBar->AddSeparator();
  83. m_HToolBar->AddTool( ID_MODEDIT_CHECK, wxEmptyString,
  84. wxBitmap( module_check_xpm ),
  85. _( "Module Check" ) );
  86. // after adding the buttons to the toolbar, must call Realize() to reflect
  87. // the changes
  88. m_HToolBar->Realize();
  89. }
  90. void WinEDA_ModuleEditFrame::ReCreateVToolbar()
  91. {
  92. if( m_VToolBar )
  93. return;
  94. m_VToolBar = new WinEDA_Toolbar( TOOLBAR_TOOL, this, ID_V_TOOLBAR, false );
  95. // Set up toolbar
  96. m_VToolBar->AddTool( ID_MODEDIT_NO_TOOL, wxEmptyString, wxBitmap( cursor_xpm ),
  97. wxEmptyString, wxITEM_CHECK );
  98. m_VToolBar->AddSeparator();
  99. m_VToolBar->AddTool( ID_MODEDIT_PAD_TOOL, wxEmptyString, wxBitmap( pad_xpm ),
  100. _( "Add pads" ), wxITEM_CHECK );
  101. m_VToolBar->AddSeparator();
  102. m_VToolBar->AddTool( ID_MODEDIT_LINE_TOOL, wxEmptyString, wxBitmap( add_polygon_xpm ),
  103. _( "Add graphic line or polygon" ), wxITEM_CHECK );
  104. m_VToolBar->AddTool( ID_MODEDIT_CIRCLE_TOOL, wxEmptyString, wxBitmap( add_circle_xpm ),
  105. _( "Add graphic circle" ), wxITEM_CHECK );
  106. m_VToolBar->AddTool( ID_MODEDIT_ARC_TOOL, wxEmptyString, wxBitmap( add_arc_xpm ),
  107. _( "Add graphic arc" ), wxITEM_CHECK );
  108. m_VToolBar->AddTool( ID_MODEDIT_TEXT_TOOL, wxEmptyString, wxBitmap( add_text_xpm ),
  109. _( "Add Text" ), wxITEM_CHECK );
  110. m_VToolBar->AddSeparator();
  111. m_VToolBar->AddTool( ID_MODEDIT_ANCHOR_TOOL, wxEmptyString, wxBitmap( anchor_xpm ),
  112. _( "Place the footprint module reference anchor" ),
  113. wxITEM_CHECK );
  114. m_VToolBar->AddSeparator();
  115. m_VToolBar->AddTool( ID_MODEDIT_DELETE_TOOL, wxEmptyString, wxBitmap( delete_body_xpm ),
  116. _( "Delete items" ), wxITEM_CHECK );
  117. m_VToolBar->AddTool( ID_MODEDIT_PLACE_GRID_COORD, wxEmptyString,
  118. wxBitmap( grid_select_axis_xpm ),
  119. _( "Set the origin point for the grid" ),
  120. wxITEM_CHECK );
  121. m_VToolBar->Realize();
  122. }
  123. void WinEDA_ModuleEditFrame::ReCreateOptToolbar()
  124. {
  125. if( m_OptionsToolBar )
  126. return;
  127. // Create options tool bar.
  128. m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, false );
  129. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, wxBitmap( grid_xpm ),
  130. _( "Hide grid" ), wxITEM_CHECK );
  131. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString,
  132. wxBitmap( polar_coord_xpm ),
  133. _( "Display Polar Coord ON" ), wxITEM_CHECK );
  134. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
  135. wxBitmap( unit_inch_xpm ),
  136. _( "Units in inches" ), wxITEM_CHECK );
  137. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
  138. wxBitmap( unit_mm_xpm ),
  139. _( "Units in millimeters" ), wxITEM_CHECK );
  140. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString,
  141. wxBitmap( cursor_shape_xpm ),
  142. _( "Change Cursor Shape" ), wxITEM_CHECK );
  143. m_OptionsToolBar->AddSeparator();
  144. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString,
  145. wxBitmap( pad_sketch_xpm ),
  146. _( "Show Pads Sketch" ), wxITEM_CHECK );
  147. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH, wxEmptyString,
  148. wxBitmap( text_sketch_xpm ),
  149. _( "Show Texts Sketch" ), wxITEM_CHECK );
  150. m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH, wxEmptyString,
  151. wxBitmap( show_mod_edge_xpm ),
  152. _( "Show Edges Sketch" ), wxITEM_CHECK );
  153. m_OptionsToolBar->Realize();
  154. }
  155. void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar()
  156. {
  157. wxString msg;
  158. if( m_AuxiliaryToolBar )
  159. return;
  160. m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, ID_AUX_TOOLBAR, true );
  161. // Set up toolbar
  162. m_AuxiliaryToolBar->AddSeparator();
  163. // Grid selection choice box.
  164. m_SelGridBox = new WinEDAChoiceBox( m_AuxiliaryToolBar,
  165. ID_ON_GRID_SELECT,
  166. wxPoint( -1, -1 ),
  167. wxSize( LISTBOX_WIDTH, -1 ) );
  168. m_AuxiliaryToolBar->AddControl( m_SelGridBox );
  169. // Zoom selection choice box.
  170. m_AuxiliaryToolBar->AddSeparator();
  171. m_SelZoomBox = new WinEDAChoiceBox( m_AuxiliaryToolBar,
  172. ID_ON_ZOOM_SELECT,
  173. wxPoint( -1, -1 ),
  174. wxSize( LISTBOX_WIDTH, -1 ) );
  175. m_AuxiliaryToolBar->AddControl( m_SelZoomBox );
  176. // Update tool bar to reflect setting.
  177. updateGridSelectBox();
  178. updateZoomSelectBox();
  179. // after adding the buttons to the toolbar, must call Realize() to reflect the changes
  180. m_AuxiliaryToolBar->Realize();
  181. }