diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 6caca78ea1..fa7d78323e 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -87,9 +87,6 @@ class PCB_EDIT_FRAME : public PCB_BASE_EDIT_FRAME /// The auxiliary right vertical tool bar used to access the microwave tools. wxAuiToolBar* m_microWaveToolBar; - /// User defined rotation angle (in tenths of a degree). - int m_rotationAngle; - /** * Function loadFootprints * loads the footprints for each #COMPONENT in \a aNetlist from the list of libraries. @@ -315,9 +312,6 @@ public: */ virtual void SetGridColor(EDA_COLOR_T aColor); - int GetRotationAngle() const { return m_rotationAngle; } - void SetRotationAngle( int aRotationAngle ); - // Configurations: void Process_Config( wxCommandEvent& event ); diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index 3bb9580e90..2884741b8a 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -160,6 +160,7 @@ set( PCBNEW_CLASS_SRCS tool_modview.cpp modview_frame.cpp pcbframe.cpp + pcb_base_edit_frame.cpp attribut.cpp board_items_to_polygon_shape_transform.cpp board_undo_redo.cpp diff --git a/pcbnew/pcb_base_edit_frame.cpp b/pcbnew/pcb_base_edit_frame.cpp new file mode 100644 index 0000000000..e4aa24108b --- /dev/null +++ b/pcbnew/pcb_base_edit_frame.cpp @@ -0,0 +1,33 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2014 CERN + * @author Maciej Suminski + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +void PCB_BASE_EDIT_FRAME::SetRotationAngle( int aRotationAngle ) +{ + wxCHECK2_MSG( aRotationAngle > 0 && aRotationAngle <= 900, aRotationAngle = 900, + wxT( "Invalid rotation angle, defaulting to 90." ) ); + + m_rotationAngle = aRotationAngle; +} diff --git a/pcbnew/pcb_base_edit_frame.h b/pcbnew/pcb_base_edit_frame.h index f1c66e160f..3d867874d6 100644 --- a/pcbnew/pcb_base_edit_frame.h +++ b/pcbnew/pcb_base_edit_frame.h @@ -36,7 +36,8 @@ public: PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType, const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize, long aStyle, const wxString& aFrameName ) : - PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ) + PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ), + m_rotationAngle( 900 ) {} virtual ~PCB_BASE_EDIT_FRAME() {}; @@ -64,6 +65,13 @@ public: * - Get an old version of the data from Undo list */ virtual void RestoreCopyFromUndoList( wxCommandEvent& aEvent ) = 0; + + int GetRotationAngle() const { return m_rotationAngle; } + void SetRotationAngle( int aRotationAngle ); + +protected: + /// User defined rotation angle (in tenths of a degree). + int m_rotationAngle; }; #endif diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index f744584e6c..45267d2e0a 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -1021,13 +1021,3 @@ void PCB_EDIT_FRAME::ToPlotter( wxCommandEvent& event ) dlg.ShowModal(); } - - -void PCB_EDIT_FRAME::SetRotationAngle( int aRotationAngle ) -{ - wxCHECK2_MSG( aRotationAngle > 0 && aRotationAngle <= 900, aRotationAngle = 900, - wxT( "Invalid rotation angle, defaulting to 90." ) ); - - m_rotationAngle = aRotationAngle; -} - diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp index 4d33c1ec07..5fa5359fe5 100644 --- a/pcbnew/tools/edit_tool.cpp +++ b/pcbnew/tools/edit_tool.cpp @@ -286,7 +286,7 @@ int EDIT_TOOL::Properties( TOOL_EVENT& aEvent ) int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent ) { const SELECTION_TOOL::SELECTION& selection = m_selectionTool->GetSelection(); - PCB_BASE_FRAME* editFrame = getEditFrame(); + PCB_BASE_EDIT_FRAME* editFrame = getEditFrame(); // Shall the selection be cleared at the end? bool unselect = selection.Empty(); @@ -310,7 +310,7 @@ int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent ) { BOARD_ITEM* item = selection.Item( i ); - item->Rotate( rotatePoint, 900.0 /*m_frame->GetRotationAngle()*/ ); + item->Rotate( rotatePoint, editFrame->GetRotationAngle() ); if( !m_dragging ) item->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );