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.

303 lines
8.5 KiB

  1. /*****************************************************************/
  2. /* too_modeit.cpp: construction du menu de l'editeur de modules */
  3. /*****************************************************************/
  4. #include "fctsys.h"
  5. #include "gr_basic.h"
  6. #include "common.h"
  7. #include "pcbnew.h"
  8. #include "protos.h"
  9. #define BITMAP wxBitmap
  10. #include "bitmaps.h"
  11. #include "id.h"
  12. #include "Module_Check.xpm"
  13. #include "Import_Module.xpm"
  14. #include "Export_Module.xpm"
  15. #include "New_FootPrint.xpm"
  16. #include "module_options.xpm"
  17. #include "Load_Module_Board.xpm"
  18. #include "Repl_Module_Board.xpm"
  19. #ifdef __UNIX__
  20. #define LISTBOX_WIDTH 120
  21. #else
  22. #define LISTBOX_WIDTH 100
  23. #endif
  24. /***************************************************/
  25. void WinEDA_ModuleEditFrame::ReCreateHToolbar(void)
  26. /***************************************************/
  27. {
  28. // Cecreate the toolbar
  29. if ( m_HToolBar != NULL ) return;
  30. m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE);
  31. SetToolBar(m_HToolBar);
  32. // Set up toolbar
  33. m_HToolBar->AddTool(ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString,
  34. BITMAP(open_library_xpm),
  35. _("Select working library"));
  36. m_HToolBar->AddTool(ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, BITMAP(save_library_xpm),
  37. _("Save Module in working library"));
  38. m_HToolBar->AddTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString,
  39. BITMAP(new_library_xpm),
  40. _("Create new library and save current module"));
  41. m_HToolBar->AddSeparator();
  42. m_HToolBar->AddTool(ID_LIBEDIT_DELETE_PART, wxEmptyString,
  43. BITMAP(delete_xpm),
  44. _("Delete part in current library"));
  45. m_HToolBar->AddSeparator();
  46. m_HToolBar->AddTool(ID_MODEDIT_NEW_MODULE, wxEmptyString,
  47. BITMAP(new_footprint_xpm),
  48. _("New Module"));
  49. m_HToolBar->AddTool(ID_MODEDIT_LOAD_MODULE, wxEmptyString,
  50. BITMAP(module_xpm),
  51. _("Load module from lib"));
  52. m_HToolBar->AddSeparator();
  53. m_HToolBar->AddTool(ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString,
  54. BITMAP(load_module_board_xpm),
  55. _("Load module from current BOARD"));
  56. m_HToolBar->AddTool(ID_MODEDIT_SAVE_MODULE_IN_BOARD, wxEmptyString,
  57. BITMAP(repl_module_board_xpm),
  58. _("Replace module in current BOARD"));
  59. m_HToolBar->AddSeparator();
  60. m_HToolBar->AddTool(ID_LIBEDIT_IMPORT_PART, wxEmptyString,
  61. BITMAP(import_module_xpm),
  62. _("import module"));
  63. m_HToolBar->AddTool(ID_LIBEDIT_EXPORT_PART, wxEmptyString,
  64. BITMAP(export_module_xpm),
  65. _("export module"));
  66. m_HToolBar->AddSeparator();
  67. m_HToolBar->AddTool(ID_MODEDIT_UNDO, wxEmptyString, BITMAP(undo_xpm),
  68. _("Undo last edition"));
  69. m_HToolBar->AddTool(ID_MODEDIT_REDO, wxEmptyString, BITMAP(redo_xpm),
  70. _("Redo the last undo command"));
  71. m_HToolBar->AddSeparator();
  72. m_HToolBar->AddTool(ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString,
  73. BITMAP(module_options_xpm),
  74. _("Module Properties"));
  75. m_HToolBar->AddSeparator();
  76. m_HToolBar->AddTool(ID_GEN_PRINT, wxEmptyString, BITMAP(print_button),
  77. _("Print Module"));
  78. m_HToolBar->AddSeparator();
  79. m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm),
  80. _("zoom + (F1)"));
  81. m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString,BITMAP(zoom_out_xpm),
  82. _("zoom - (F2)"));
  83. m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString,BITMAP(repaint_xpm),
  84. _("redraw (F3)"));
  85. m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString,BITMAP(zoom_optimal_xpm),
  86. _("auto zoom"));
  87. m_HToolBar->AddSeparator();
  88. m_HToolBar->AddTool(ID_MODEDIT_PAD_SETTINGS, wxEmptyString,
  89. BITMAP(options_pad_xpm),
  90. _("Pad Settings"));
  91. m_HToolBar->AddSeparator();
  92. m_HToolBar->AddTool(ID_MODEDIT_CHECK, wxEmptyString, BITMAP(module_check_xpm),
  93. _("Module Check"));
  94. // after adding the buttons to the toolbar, must call Realize() to reflect
  95. // the changes
  96. m_HToolBar->Realize();
  97. SetToolbars();
  98. }
  99. /********************************************************/
  100. void WinEDA_ModuleEditFrame::ReCreateVToolbar(void)
  101. /********************************************************/
  102. {
  103. if( m_VToolBar ) return;
  104. m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE);
  105. // Set up toolbar
  106. m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString,
  107. BITMAP(cursor_xpm), wxEmptyString, wxITEM_CHECK );
  108. m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE);
  109. m_VToolBar->AddSeparator();
  110. m_VToolBar->AddTool(ID_MODEDIT_ADD_PAD, wxEmptyString,
  111. BITMAP(pad_xpm),
  112. _("Add Pads"), wxITEM_CHECK);
  113. m_VToolBar->AddSeparator();
  114. m_VToolBar->AddTool(ID_LINE_COMMENT_BUTT, wxEmptyString,
  115. BITMAP(add_polygon_xpm),
  116. _("Add graphic line or polygon"), wxITEM_CHECK);
  117. m_VToolBar->AddTool(ID_PCB_CIRCLE_BUTT, wxEmptyString,
  118. BITMAP(add_circle_xpm),
  119. _("Add graphic circle"), wxITEM_CHECK);
  120. m_VToolBar->AddTool(ID_PCB_ARC_BUTT, wxEmptyString,
  121. BITMAP(add_arc_xpm),
  122. _("Add graphic arc"), wxITEM_CHECK);
  123. m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, wxEmptyString,
  124. BITMAP(add_text_xpm),
  125. _("Add Text"), wxITEM_CHECK);
  126. m_VToolBar->AddSeparator();
  127. m_VToolBar->AddTool(ID_MODEDIT_PLACE_ANCHOR, wxEmptyString,
  128. BITMAP(anchor_xpm),
  129. _("Place anchor"), wxITEM_CHECK);
  130. m_VToolBar->AddSeparator();
  131. m_VToolBar->AddTool(ID_MODEDIT_DELETE_ITEM_BUTT, wxEmptyString,
  132. BITMAP(delete_body_xpm),
  133. _("Delete items"), wxITEM_CHECK);
  134. m_VToolBar->Realize();
  135. SetToolbars();
  136. }
  137. /*********************************************************/
  138. void WinEDA_ModuleEditFrame::ReCreateOptToolbar(void)
  139. /*********************************************************/
  140. {
  141. if ( m_OptionsToolBar ) return;
  142. // creation du tool bar options
  143. m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE);
  144. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, BITMAP(grid_xpm),
  145. wxNullBitmap,
  146. TRUE,
  147. -1, -1, (wxObject *) NULL,
  148. _("Display Grid OFF"));
  149. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString,
  150. BITMAP(polar_coord_xpm),
  151. _("Display Polar Coord ON"), wxITEM_CHECK);
  152. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
  153. BITMAP(unit_inch_xpm),
  154. _("Units = Inch"), wxITEM_CHECK );
  155. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
  156. BITMAP(unit_mm_xpm),
  157. _("Units = mm"), wxITEM_CHECK );
  158. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, BITMAP(cursor_shape_xpm),
  159. wxNullBitmap,
  160. TRUE,
  161. -1, -1, (wxObject *) NULL,
  162. _("Change Cursor Shape"));
  163. m_OptionsToolBar->AddSeparator();
  164. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_PADS_SKETCH,
  165. BITMAP(pad_sketch_xpm),
  166. wxNullBitmap,
  167. TRUE,
  168. -1, -1, (wxObject *) NULL,
  169. _("Show Pads Sketch"));
  170. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
  171. BITMAP(text_sketch_xpm),
  172. wxNullBitmap,
  173. TRUE,
  174. -1, -1, (wxObject *) NULL,
  175. _("Show Texts Sketch"));
  176. m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH,
  177. BITMAP(show_mod_edge_xpm),
  178. wxNullBitmap,
  179. TRUE,
  180. -1, -1, (wxObject *) NULL,
  181. _("Show Edges Sketch"));
  182. m_OptionsToolBar->Realize();
  183. SetToolbars();
  184. }
  185. /*********************************************************/
  186. void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar(void)
  187. /*********************************************************/
  188. {
  189. int ii;
  190. wxString msg;
  191. if ( m_AuxiliaryToolBar == NULL )
  192. {
  193. m_AuxiliaryToolBar = new WinEDA_Toolbar(TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE);
  194. // Set up toolbar
  195. m_AuxiliaryToolBar->AddSeparator();
  196. // Boite de selection du pas de grille
  197. m_SelGridBox = new WinEDAChoiceBox(m_AuxiliaryToolBar,
  198. ID_ON_GRID_SELECT,
  199. wxPoint(-1,-1), wxSize(LISTBOX_WIDTH , -1));
  200. m_AuxiliaryToolBar->AddControl( m_SelGridBox);
  201. // Boite de selection du Zoom
  202. m_AuxiliaryToolBar->AddSeparator();
  203. m_SelZoomBox = new WinEDAChoiceBox(m_AuxiliaryToolBar,
  204. ID_ON_ZOOM_SELECT,
  205. wxPoint(-1,-1), wxSize(LISTBOX_WIDTH , -1));
  206. msg = _("Auto");
  207. m_SelZoomBox->Append(msg);
  208. for ( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ )
  209. {
  210. msg.Printf(_("Zoom %d"), ii);
  211. m_SelZoomBox->Append(msg);
  212. }
  213. m_SelZoomBox->Append(wxT(""));
  214. m_AuxiliaryToolBar->AddControl( m_SelZoomBox);
  215. // after adding the buttons to the toolbar, must call Realize() to reflect
  216. // the changes
  217. m_AuxiliaryToolBar->Realize();
  218. }
  219. // mise a jour des affichages
  220. m_SelGridBox->Clear();
  221. for ( ii = 0; g_GridList[ii].x > 0; ii++ )
  222. {
  223. double value = To_User_Unit(g_UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT);
  224. if ( g_UnitMetric == INCHES )
  225. msg.Printf(_("Grid %.1f"), value * 1000);
  226. else
  227. msg.Printf(_("Grid %.3f"), value);
  228. m_SelGridBox->Append(msg);
  229. }
  230. m_SelGridBox->Append( _("User Grid") );
  231. SetToolbars();
  232. }