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.

189 lines
6.5 KiB

  1. /*
  2. * This program source code file is part of KiCad, a free EDA CAD application.
  3. *
  4. * Copyright (C) 2016-2019 KiCad Developers, see AUTHORS.txt for contributors.
  5. * Copyright (C) 2013-2019 CERN
  6. * @author Jean-Pierre Charras, jp.charras at wanadoo.fr
  7. *
  8. * This program is free software: you can redistribute it and/or modify it
  9. * under the terms of the GNU General Public License as published by the
  10. * Free Software Foundation, either version 3 of the License, or (at your
  11. * option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful, but
  14. * WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License along
  19. * with this program. If not, see <http://www.gnu.org/licenses/>.
  20. */
  21. #include <bitmaps.h>
  22. #include <tool/action_toolbar.h>
  23. #include <wx/choice.h>
  24. #include "pl_editor_id.h"
  25. #include "pl_editor_frame.h"
  26. #include "tools/pl_actions.h"
  27. void PL_EDITOR_FRAME::ReCreateHToolbar()
  28. {
  29. if( m_mainToolBar )
  30. {
  31. m_mainToolBar->ClearToolbar();
  32. }
  33. else
  34. {
  35. m_mainToolBar = new ACTION_TOOLBAR( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize,
  36. KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_HORIZONTAL );
  37. m_mainToolBar->SetAuiManager( &m_auimgr );
  38. }
  39. m_mainToolBar->Add( ACTIONS::doNew );
  40. m_mainToolBar->Add( ACTIONS::open );
  41. m_mainToolBar->Add( ACTIONS::save );
  42. m_mainToolBar->AddScaledSeparator( this );
  43. m_mainToolBar->Add( ACTIONS::print );
  44. m_mainToolBar->AddScaledSeparator( this );
  45. m_mainToolBar->Add( ACTIONS::undo );
  46. m_mainToolBar->Add( ACTIONS::redo );
  47. m_mainToolBar->AddScaledSeparator( this );
  48. m_mainToolBar->Add( ACTIONS::zoomRedraw );
  49. m_mainToolBar->Add( ACTIONS::zoomInCenter );
  50. m_mainToolBar->Add( ACTIONS::zoomOutCenter );
  51. m_mainToolBar->Add( ACTIONS::zoomFitScreen );
  52. m_mainToolBar->Add( ACTIONS::zoomTool, ACTION_TOOLBAR::TOGGLE, ACTION_TOOLBAR::CANCEL );
  53. m_mainToolBar->AddScaledSeparator( this );
  54. m_mainToolBar->Add( PL_ACTIONS::showInspector );
  55. m_mainToolBar->Add( PL_ACTIONS::previewSettings );
  56. // Display mode switch
  57. m_mainToolBar->AddScaledSeparator( this );
  58. m_mainToolBar->Add( PL_ACTIONS::layoutNormalMode, ACTION_TOOLBAR::TOGGLE );
  59. m_mainToolBar->Add( PL_ACTIONS::layoutEditMode, ACTION_TOOLBAR::TOGGLE );
  60. m_mainToolBar->AddScaledSeparator( this );
  61. wxString choiceList[5] =
  62. {
  63. _("Left Top paper corner"),
  64. _("Right Bottom page corner"),
  65. _("Left Bottom page corner"),
  66. _("Right Top page corner"),
  67. _("Left Top page corner")
  68. };
  69. if( !m_originSelectBox )
  70. {
  71. m_originSelectBox = new wxChoice( m_mainToolBar, ID_SELECT_COORDINATE_ORIGIN,
  72. wxDefaultPosition, wxDefaultSize, 5, choiceList );
  73. }
  74. m_mainToolBar->AddControl( m_originSelectBox );
  75. m_originSelectBox->SetToolTip( _("Origin of coordinates displayed to the status bar") );
  76. int minwidth = 0;
  77. for( int ii = 0; ii < 5; ii++ )
  78. {
  79. int width = KIUI::GetTextSize( choiceList[ii], m_originSelectBox ).x;
  80. minwidth = std::max( minwidth, width );
  81. }
  82. m_originSelectBox->SetMinSize( wxSize( minwidth, -1 ) );
  83. m_originSelectBox->SetSelection( m_originSelectChoice );
  84. wxString pageList[5] =
  85. {
  86. _("Page 1"),
  87. _("Other pages")
  88. };
  89. if( !m_pageSelectBox )
  90. {
  91. m_pageSelectBox = new wxChoice( m_mainToolBar, ID_SELECT_PAGE_NUMBER,
  92. wxDefaultPosition, wxDefaultSize, 2, pageList );
  93. }
  94. m_mainToolBar->AddControl( m_pageSelectBox );
  95. m_pageSelectBox->SetToolTip( _("Simulate page 1 or other pages to show how items\n"\
  96. "which are not on all page are displayed") );
  97. m_pageSelectBox->SetSelection( 0 );
  98. // Go through and ensure the comboboxes are the correct size, since the strings in the
  99. // box could have changed widths.
  100. m_mainToolBar->UpdateControlWidth( ID_SELECT_COORDINATE_ORIGIN );
  101. m_mainToolBar->UpdateControlWidth( ID_SELECT_PAGE_NUMBER );
  102. // after adding the buttons to the toolbar, must call Realize() to reflect the changes
  103. m_mainToolBar->KiRealize();
  104. }
  105. void PL_EDITOR_FRAME::ReCreateVToolbar()
  106. {
  107. if( m_drawToolBar )
  108. {
  109. m_drawToolBar->ClearToolbar();
  110. }
  111. else
  112. {
  113. m_drawToolBar = new ACTION_TOOLBAR( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize,
  114. KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL );
  115. m_drawToolBar->SetAuiManager( &m_auimgr );
  116. }
  117. m_drawToolBar->Add( ACTIONS::selectionTool, ACTION_TOOLBAR::TOGGLE );
  118. m_drawToolBar->AddScaledSeparator( this );
  119. m_drawToolBar->Add( PL_ACTIONS::drawLine, ACTION_TOOLBAR::TOGGLE );
  120. m_drawToolBar->Add( PL_ACTIONS::drawRectangle, ACTION_TOOLBAR::TOGGLE );
  121. m_drawToolBar->Add( PL_ACTIONS::placeText, ACTION_TOOLBAR::TOGGLE );
  122. m_drawToolBar->Add( PL_ACTIONS::placeImage, ACTION_TOOLBAR::TOGGLE );
  123. m_drawToolBar->Add( PL_ACTIONS::appendImportedDrawingSheet, ACTION_TOOLBAR::TOGGLE );
  124. m_drawToolBar->AddScaledSeparator( this );
  125. m_drawToolBar->Add( ACTIONS::deleteTool, ACTION_TOOLBAR::TOGGLE );
  126. m_drawToolBar->KiRealize();
  127. }
  128. void PL_EDITOR_FRAME::ReCreateOptToolbar()
  129. {
  130. if( m_optionsToolBar )
  131. {
  132. m_optionsToolBar->ClearToolbar();
  133. }
  134. else
  135. {
  136. m_optionsToolBar = new ACTION_TOOLBAR( this, ID_OPT_TOOLBAR,
  137. wxDefaultPosition, wxDefaultSize,
  138. KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL );
  139. m_optionsToolBar->SetAuiManager( &m_auimgr );
  140. }
  141. m_optionsToolBar->Add( ACTIONS::toggleGrid, ACTION_TOOLBAR::TOGGLE );
  142. m_optionsToolBar->Add( ACTIONS::inchesUnits, ACTION_TOOLBAR::TOGGLE );
  143. m_optionsToolBar->Add( ACTIONS::milsUnits, ACTION_TOOLBAR::TOGGLE );
  144. m_optionsToolBar->Add( ACTIONS::millimetersUnits, ACTION_TOOLBAR::TOGGLE );
  145. m_optionsToolBar->KiRealize();
  146. }
  147. void PL_EDITOR_FRAME::UpdateToolbarControlSizes()
  148. {
  149. if( m_mainToolBar )
  150. {
  151. // Update the item widths
  152. m_mainToolBar->UpdateControlWidth( ID_SELECT_COORDINATE_ORIGIN );
  153. m_mainToolBar->UpdateControlWidth( ID_SELECT_PAGE_NUMBER );
  154. }
  155. }