Move Circle, Arc, Rectangle and PolyLine tools to modern toolset.
This commit is contained in:
parent
a3483f44d2
commit
40f41133b3
|
@ -106,8 +106,7 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( int aType )
|
||||||
*/
|
*/
|
||||||
void SCH_EDIT_FRAME::ConvertTextType( SCH_TEXT* aText, KICAD_T aType )
|
void SCH_EDIT_FRAME::ConvertTextType( SCH_TEXT* aText, KICAD_T aType )
|
||||||
{
|
{
|
||||||
SCH_SCREEN* screen = GetScreen();
|
bool selected = aText->IsSelected();
|
||||||
bool selected = aText->IsSelected();
|
|
||||||
|
|
||||||
wxCHECK_RET( aText->CanIncrementLabel(), "Cannot convert text type." );
|
wxCHECK_RET( aText->CanIncrementLabel(), "Cannot convert text type." );
|
||||||
|
|
||||||
|
|
|
@ -230,7 +230,6 @@ enum id_eeschema_frm
|
||||||
ID_POPUP_LIBEDIT_BODY_EDIT_ITEM,
|
ID_POPUP_LIBEDIT_BODY_EDIT_ITEM,
|
||||||
ID_POPUP_LIBEDIT_DELETE_ITEM,
|
ID_POPUP_LIBEDIT_DELETE_ITEM,
|
||||||
ID_POPUP_LIBEDIT_MODIFY_ITEM,
|
ID_POPUP_LIBEDIT_MODIFY_ITEM,
|
||||||
ID_POPUP_LIBEDIT_END_CREATE_ITEM,
|
|
||||||
ID_POPUP_LIBEDIT_CANCEL_EDITING,
|
ID_POPUP_LIBEDIT_CANCEL_EDITING,
|
||||||
ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST,
|
ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST,
|
||||||
ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM,
|
ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM,
|
||||||
|
|
|
@ -473,8 +473,7 @@ BITMAP_DEF LIB_ARC::GetMenuImage() const
|
||||||
|
|
||||||
void LIB_ARC::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
void LIB_ARC::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
LIB_ITEM::BeginEdit( aEditMode, aPosition );
|
||||||
wxT( "Invalid edit mode for LIB_ARC object." ) );
|
|
||||||
|
|
||||||
if( aEditMode == IS_NEW )
|
if( aEditMode == IS_NEW )
|
||||||
{
|
{
|
||||||
|
@ -516,17 +515,12 @@ void LIB_ARC::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
|
|
||||||
m_editState = 0;
|
m_editState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = aEditMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LIB_ARC::ContinueEdit( const wxPoint aPosition )
|
bool LIB_ARC::ContinueEdit( const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0, false,
|
if( IsNew() )
|
||||||
wxT( "Bad call to ContinueEdit(). LIB_ARC is not being edited." ) );
|
|
||||||
|
|
||||||
if( m_Flags == IS_NEW )
|
|
||||||
{
|
{
|
||||||
if( m_editState == 1 ) // Second position yields the arc segment length.
|
if( m_editState == 1 ) // Second position yields the arc segment length.
|
||||||
{
|
{
|
||||||
|
@ -540,20 +534,18 @@ bool LIB_ARC::ContinueEdit( const wxPoint aPosition )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_ARC::EndEdit( const wxPoint& aPosition, bool aAbort )
|
void LIB_ARC::EndEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
LIB_ITEM::EndEdit( aPosition );
|
||||||
wxT( "Bad call to EndEdit(). LIB_ARC is not being edited." ) );
|
|
||||||
|
|
||||||
m_lastEditState = 0;
|
m_lastEditState = 0;
|
||||||
m_editState = 0;
|
m_editState = 0;
|
||||||
m_Flags = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_ARC::CalcEdit( const wxPoint& aPosition )
|
void LIB_ARC::CalcEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
if( m_Flags == IS_RESIZED )
|
if( IsResized() )
|
||||||
{
|
{
|
||||||
wxPoint newCenterPoint, startPos, endPos;
|
wxPoint newCenterPoint, startPos, endPos;
|
||||||
|
|
||||||
|
@ -627,7 +619,7 @@ void LIB_ARC::CalcEdit( const wxPoint& aPosition )
|
||||||
m_Pos = newCenterPoint;
|
m_Pos = newCenterPoint;
|
||||||
CalcRadiusAngles();
|
CalcRadiusAngles();
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_NEW )
|
else if( IsNew() )
|
||||||
{
|
{
|
||||||
if( m_editState == 1 )
|
if( m_editState == 1 )
|
||||||
{
|
{
|
||||||
|
@ -664,7 +656,7 @@ void LIB_ARC::CalcEdit( const wxPoint& aPosition )
|
||||||
CalcRadiusAngles();
|
CalcRadiusAngles();
|
||||||
|
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_MOVED )
|
else if( IsMoving() )
|
||||||
{
|
{
|
||||||
Move( m_initialPos + aPosition - m_initialCursorPos );
|
Move( m_initialPos + aPosition - m_initialCursorPos );
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,16 +63,6 @@ class LIB_ARC : public LIB_ITEM
|
||||||
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
||||||
const TRANSFORM& aTransform ) override;
|
const TRANSFORM& aTransform ) override;
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculates the center, radius, and angles at \a aPosition when the arc is being edited.
|
|
||||||
*
|
|
||||||
* Note: The center may not necessarily be on the grid.
|
|
||||||
*
|
|
||||||
* @param aPosition - The current mouse position in drawing coordinates.
|
|
||||||
*/
|
|
||||||
void CalcEdit( const wxPoint& aPosition ) override;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LIB_ARC( LIB_PART * aParent );
|
LIB_ARC( LIB_PART * aParent );
|
||||||
|
|
||||||
|
@ -99,9 +89,10 @@ public:
|
||||||
|
|
||||||
int GetPenSize() const override;
|
int GetPenSize() const override;
|
||||||
|
|
||||||
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint = wxPoint( 0, 0 ) ) override;
|
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint ) override;
|
||||||
|
void CalcEdit( const wxPoint& aPosition ) override;
|
||||||
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
||||||
void EndEdit( const wxPoint& aPosition, bool aAbort = false ) override;
|
void EndEdit( const wxPoint& aPosition ) override;
|
||||||
|
|
||||||
void SetOffset( const wxPoint& aOffset ) override;
|
void SetOffset( const wxPoint& aOffset ) override;
|
||||||
|
|
||||||
|
|
|
@ -255,8 +255,7 @@ BITMAP_DEF LIB_CIRCLE::GetMenuImage() const
|
||||||
|
|
||||||
void LIB_CIRCLE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
void LIB_CIRCLE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
LIB_ITEM::BeginEdit( aEditMode, aPosition );
|
||||||
wxT( "Invalid edit mode for LIB_CIRCLE object." ) );
|
|
||||||
|
|
||||||
if( aEditMode == IS_NEW )
|
if( aEditMode == IS_NEW )
|
||||||
{
|
{
|
||||||
|
@ -267,32 +266,12 @@ void LIB_CIRCLE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
m_initialPos = m_Pos;
|
m_initialPos = m_Pos;
|
||||||
m_initialCursorPos = aPosition;
|
m_initialCursorPos = aPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = aEditMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool LIB_CIRCLE::ContinueEdit( const wxPoint aPosition )
|
|
||||||
{
|
|
||||||
wxCHECK_MSG( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0, false,
|
|
||||||
wxT( "Bad call to ContinueEdit(). LIB_CIRCLE is not being edited." ) );
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LIB_CIRCLE::EndEdit( const wxPoint& aPosition, bool aAbort )
|
|
||||||
{
|
|
||||||
wxCHECK_RET( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
|
||||||
wxT( "Bad call to EndEdit(). LIB_CIRCLE is not being edited." ) );
|
|
||||||
|
|
||||||
m_Flags = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_CIRCLE::CalcEdit( const wxPoint& aPosition )
|
void LIB_CIRCLE::CalcEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
if( m_Flags == IS_NEW || m_Flags == IS_RESIZED )
|
if( IsNew() || IsResized() )
|
||||||
{
|
{
|
||||||
m_Radius = KiROUND( GetLineLength( m_Pos, aPosition ) );
|
m_Radius = KiROUND( GetLineLength( m_Pos, aPosition ) );
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,6 @@ class LIB_CIRCLE : public LIB_ITEM
|
||||||
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
||||||
const TRANSFORM& aTransform ) override;
|
const TRANSFORM& aTransform ) override;
|
||||||
|
|
||||||
void CalcEdit( const wxPoint& aPosition ) override;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LIB_CIRCLE( LIB_PART * aParent );
|
LIB_CIRCLE( LIB_PART * aParent );
|
||||||
|
|
||||||
|
@ -69,9 +67,8 @@ public:
|
||||||
|
|
||||||
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
||||||
|
|
||||||
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint = wxPoint( 0, 0 ) ) override;
|
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint ) override;
|
||||||
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
void CalcEdit( const wxPoint& aPosition ) override;
|
||||||
void EndEdit( const wxPoint& aPosition, bool aAbort = false ) override;
|
|
||||||
|
|
||||||
void SetOffset( const wxPoint& aOffset ) override;
|
void SetOffset( const wxPoint& aOffset ) override;
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,10 @@ public:
|
||||||
* started. This may or may not be required depending on the item
|
* started. This may or may not be required depending on the item
|
||||||
* being edited and the edit mode.
|
* being edited and the edit mode.
|
||||||
*/
|
*/
|
||||||
virtual void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition = wxPoint( 0, 0 ) ) {}
|
virtual void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
|
{
|
||||||
|
SetFlags( aEditMode );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Continue an edit in progress at \a aPosition.
|
* Continue an edit in progress at \a aPosition.
|
||||||
|
@ -156,7 +159,10 @@ public:
|
||||||
* @param aPosition The position of the mouse left click in drawing coordinates.
|
* @param aPosition The position of the mouse left click in drawing coordinates.
|
||||||
* @return True if additional mouse clicks are required to complete the edit in progress.
|
* @return True if additional mouse clicks are required to complete the edit in progress.
|
||||||
*/
|
*/
|
||||||
virtual bool ContinueEdit( const wxPoint aPosition ) { return false; }
|
virtual bool ContinueEdit( const wxPoint aPosition )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* End an object editing action.
|
* End an object editing action.
|
||||||
|
@ -164,9 +170,11 @@ public:
|
||||||
* This is used to end or abort an edit action in progress initiated by BeginEdit().
|
* This is used to end or abort an edit action in progress initiated by BeginEdit().
|
||||||
*
|
*
|
||||||
* @param aPosition The position of the last edit event in drawing coordinates.
|
* @param aPosition The position of the last edit event in drawing coordinates.
|
||||||
* @param aAbort Set to true to abort the current edit in progress.
|
|
||||||
*/
|
*/
|
||||||
virtual void EndEdit( const wxPoint& aPosition, bool aAbort = false ) { m_Flags = 0; }
|
virtual void EndEdit( const wxPoint& aPosition )
|
||||||
|
{
|
||||||
|
ClearFlags( GetEditFlags() );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates the attributes of an item at \a aPosition when it is being edited.
|
* Calculates the attributes of an item at \a aPosition when it is being edited.
|
||||||
|
@ -216,10 +224,10 @@ public:
|
||||||
|
|
||||||
bool HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy = 0 ) const override;
|
bool HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy = 0 ) const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the boundary box for this, in library coordinates
|
* @return the boundary box for this, in library coordinates
|
||||||
*/
|
*/
|
||||||
virtual const EDA_RECT GetBoundingBox() const override { return EDA_ITEM::GetBoundingBox(); }
|
const EDA_RECT GetBoundingBox() const override { return EDA_ITEM::GetBoundingBox(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display basic info (type, part and convert) about the current item in message panel.
|
* Display basic info (type, part and convert) about the current item in message panel.
|
||||||
|
@ -230,8 +238,7 @@ public:
|
||||||
* </p>
|
* </p>
|
||||||
* @param aList is the list to populate.
|
* @param aList is the list to populate.
|
||||||
*/
|
*/
|
||||||
virtual void GetMsgPanelInfo( EDA_UNITS_T aUnits,
|
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
||||||
std::vector< MSG_PANEL_ITEM >& aList ) override;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test LIB_ITEM objects for equivalence.
|
* Test LIB_ITEM objects for equivalence.
|
||||||
|
|
|
@ -504,8 +504,7 @@ wxString LIB_FIELD::GetSelectMenuText( EDA_UNITS_T aUnits ) const
|
||||||
|
|
||||||
void LIB_FIELD::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
void LIB_FIELD::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED ) ) != 0,
|
LIB_ITEM::BeginEdit( aEditMode, aPosition );
|
||||||
wxT( "Invalid edit mode for LIB_FIELD object." ) );
|
|
||||||
|
|
||||||
if( aEditMode == IS_MOVED )
|
if( aEditMode == IS_MOVED )
|
||||||
{
|
{
|
||||||
|
@ -516,26 +515,13 @@ void LIB_FIELD::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
SetTextPos( aPosition );
|
SetTextPos( aPosition );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = aEditMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LIB_FIELD::ContinueEdit( const wxPoint aPosition )
|
void LIB_FIELD::EndEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( ( m_Flags & ( IS_NEW | IS_MOVED ) ) != 0, false,
|
LIB_ITEM::EndEdit( aPosition );
|
||||||
wxT( "Bad call to ContinueEdit(). Text is not being edited." ) );
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LIB_FIELD::EndEdit( const wxPoint& aPosition, bool aAbort )
|
|
||||||
{
|
|
||||||
wxCHECK_RET( ( m_Flags & ( IS_NEW | IS_MOVED ) ) != 0,
|
|
||||||
wxT( "Bad call to EndEdit(). Text is not being edited." ) );
|
|
||||||
|
|
||||||
m_Flags = 0;
|
|
||||||
m_rotate = false;
|
m_rotate = false;
|
||||||
m_updateText = false;
|
m_updateText = false;
|
||||||
}
|
}
|
||||||
|
@ -555,11 +541,11 @@ void LIB_FIELD::CalcEdit( const wxPoint& aPosition )
|
||||||
m_updateText = false;
|
m_updateText = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_Flags == IS_NEW )
|
if( IsNew() )
|
||||||
{
|
{
|
||||||
SetTextPos( aPosition );
|
SetTextPos( aPosition );
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_MOVED )
|
else if( IsMoving() )
|
||||||
{
|
{
|
||||||
Move( m_initialPos + aPosition - m_initialCursorPos );
|
Move( m_initialPos + aPosition - m_initialCursorPos );
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,9 +188,8 @@ public:
|
||||||
|
|
||||||
COLOR4D GetDefaultColor() override;
|
COLOR4D GetDefaultColor() override;
|
||||||
|
|
||||||
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint = wxPoint( 0, 0 ) ) override;
|
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint ) override;
|
||||||
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
void EndEdit( const wxPoint& aPosition ) override;
|
||||||
void EndEdit( const wxPoint& aPosition, bool aAbort = false ) override;
|
|
||||||
|
|
||||||
void Rotate() override;
|
void Rotate() override;
|
||||||
|
|
||||||
|
|
|
@ -1714,11 +1714,11 @@ void LIB_PIN::CalcEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
DBG(printf("m_Flags %x\n", m_Flags );)
|
DBG(printf("m_Flags %x\n", m_Flags );)
|
||||||
|
|
||||||
if( m_Flags == IS_NEW )
|
if( IsNew() )
|
||||||
{
|
{
|
||||||
SetPosition( aPosition );
|
SetPosition( aPosition );
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_MOVED )
|
else if( IsMoving() )
|
||||||
{
|
{
|
||||||
DBG(printf("MOVEPIN\n");)
|
DBG(printf("MOVEPIN\n");)
|
||||||
Move( aPosition );
|
Move( aPosition );
|
||||||
|
|
|
@ -327,8 +327,7 @@ BITMAP_DEF LIB_POLYLINE::GetMenuImage() const
|
||||||
|
|
||||||
void LIB_POLYLINE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
void LIB_POLYLINE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
LIB_ITEM::BeginEdit( aEditMode, aPosition );
|
||||||
wxT( "Invalid edit mode for LIB_POLYLINE object." ) );
|
|
||||||
|
|
||||||
if( aEditMode == IS_NEW )
|
if( aEditMode == IS_NEW )
|
||||||
{
|
{
|
||||||
|
@ -387,17 +386,12 @@ void LIB_POLYLINE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
m_initialCursorPos = aPosition;
|
m_initialCursorPos = aPosition;
|
||||||
m_initialPos = m_PolyPoints[0];
|
m_initialPos = m_PolyPoints[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = aEditMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LIB_POLYLINE::ContinueEdit( const wxPoint aPosition )
|
bool LIB_POLYLINE::ContinueEdit( const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0, false,
|
if( IsNew() )
|
||||||
wxT( "Bad call to ContinueEdit(). LIB_POLYLINE is not being edited." ) );
|
|
||||||
|
|
||||||
if( m_Flags == IS_NEW )
|
|
||||||
{
|
{
|
||||||
// do not add zero length segments
|
// do not add zero length segments
|
||||||
if( m_PolyPoints[m_PolyPoints.size() - 2] != m_PolyPoints.back() )
|
if( m_PolyPoints[m_PolyPoints.size() - 2] != m_PolyPoints.back() )
|
||||||
|
@ -410,10 +404,9 @@ bool LIB_POLYLINE::ContinueEdit( const wxPoint aPosition )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_POLYLINE::EndEdit( const wxPoint& aPosition, bool aAbort )
|
void LIB_POLYLINE::EndEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
LIB_ITEM::EndEdit( aPosition );
|
||||||
wxT( "Bad call to EndEdit(). LIB_POLYLINE is not being edited." ) );
|
|
||||||
|
|
||||||
// do not include last point twice
|
// do not include last point twice
|
||||||
if( m_Flags == IS_NEW && 2 < m_PolyPoints.size() )
|
if( m_Flags == IS_NEW && 2 < m_PolyPoints.size() )
|
||||||
|
@ -432,18 +425,16 @@ void LIB_POLYLINE::EndEdit( const wxPoint& aPosition, bool aAbort )
|
||||||
m_PolyPoints.erase( m_PolyPoints.begin() + m_ModifyIndex ); // delete a point on this
|
m_PolyPoints.erase( m_PolyPoints.begin() + m_ModifyIndex ); // delete a point on this
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_POLYLINE::CalcEdit( const wxPoint& aPosition )
|
void LIB_POLYLINE::CalcEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
if( m_Flags == IS_NEW )
|
if( IsNew() )
|
||||||
{
|
{
|
||||||
m_PolyPoints[ GetCornerCount() - 1 ] = aPosition;
|
m_PolyPoints[ GetCornerCount() - 1 ] = aPosition;
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_RESIZED )
|
else if( IsResized() )
|
||||||
{
|
{
|
||||||
if( m_ModifyIndex < 0 ) // negative indicates new vertex is to be inserted
|
if( m_ModifyIndex < 0 ) // negative indicates new vertex is to be inserted
|
||||||
{
|
{
|
||||||
|
@ -453,7 +444,7 @@ void LIB_POLYLINE::CalcEdit( const wxPoint& aPosition )
|
||||||
|
|
||||||
m_PolyPoints[ m_ModifyIndex ] = aPosition;
|
m_PolyPoints[ m_ModifyIndex ] = aPosition;
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_MOVED )
|
else if( IsMoving() )
|
||||||
{
|
{
|
||||||
Move( m_initialPos + aPosition - m_initialCursorPos );
|
Move( m_initialPos + aPosition - m_initialCursorPos );
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,6 @@ class LIB_POLYLINE : public LIB_ITEM
|
||||||
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
||||||
const TRANSFORM& aTransform ) override;
|
const TRANSFORM& aTransform ) override;
|
||||||
|
|
||||||
void CalcEdit( const wxPoint& aPosition ) override;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LIB_POLYLINE( LIB_PART * aParent );
|
LIB_POLYLINE( LIB_PART * aParent );
|
||||||
|
|
||||||
|
@ -85,9 +83,10 @@ public:
|
||||||
|
|
||||||
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
||||||
|
|
||||||
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint = wxPoint( 0, 0 ) ) override;
|
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint ) override;
|
||||||
|
void CalcEdit( const wxPoint& aPosition ) override;
|
||||||
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
||||||
void EndEdit( const wxPoint& aPosition, bool aAbort = false ) override;
|
void EndEdit( const wxPoint& aPosition ) override;
|
||||||
|
|
||||||
void SetOffset( const wxPoint& aOffset ) override;
|
void SetOffset( const wxPoint& aOffset ) override;
|
||||||
|
|
||||||
|
|
|
@ -279,8 +279,7 @@ BITMAP_DEF LIB_RECTANGLE::GetMenuImage() const
|
||||||
|
|
||||||
void LIB_RECTANGLE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
void LIB_RECTANGLE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
LIB_ITEM::BeginEdit( aEditMode, aPosition );
|
||||||
wxT( "Invalid edit mode for LIB_RECTANGLE object." ) );
|
|
||||||
|
|
||||||
if( aEditMode == IS_NEW )
|
if( aEditMode == IS_NEW )
|
||||||
{
|
{
|
||||||
|
@ -308,26 +307,13 @@ void LIB_RECTANGLE::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
m_initialPos = m_Pos;
|
m_initialPos = m_Pos;
|
||||||
m_initialCursorPos = aPosition;
|
m_initialCursorPos = aPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = aEditMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LIB_RECTANGLE::ContinueEdit( const wxPoint aPosition )
|
void LIB_RECTANGLE::EndEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0, false,
|
LIB_ITEM::EndEdit( aPosition );
|
||||||
wxT( "Bad call to ContinueEdit(). LIB_RECTANGLE is not being edited." ) );
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LIB_RECTANGLE::EndEdit( const wxPoint& aPosition, bool aAbort )
|
|
||||||
{
|
|
||||||
wxCHECK_RET( ( m_Flags & ( IS_NEW | IS_MOVED | IS_RESIZED ) ) != 0,
|
|
||||||
wxT( "Bad call to EndEdit(). LIB_RECTANGLE is not being edited." ) );
|
|
||||||
|
|
||||||
m_Flags = 0;
|
|
||||||
m_isHeightLocked = false;
|
m_isHeightLocked = false;
|
||||||
m_isWidthLocked = false;
|
m_isWidthLocked = false;
|
||||||
}
|
}
|
||||||
|
@ -335,11 +321,11 @@ void LIB_RECTANGLE::EndEdit( const wxPoint& aPosition, bool aAbort )
|
||||||
|
|
||||||
void LIB_RECTANGLE::CalcEdit( const wxPoint& aPosition )
|
void LIB_RECTANGLE::CalcEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
if( m_Flags == IS_NEW )
|
if( IsNew() )
|
||||||
{
|
{
|
||||||
m_End = aPosition;
|
m_End = aPosition;
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_RESIZED )
|
else if( IsResized() )
|
||||||
{
|
{
|
||||||
if( m_isHeightLocked )
|
if( m_isHeightLocked )
|
||||||
{
|
{
|
||||||
|
@ -363,7 +349,7 @@ void LIB_RECTANGLE::CalcEdit( const wxPoint& aPosition )
|
||||||
m_End = aPosition;
|
m_End = aPosition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_MOVED )
|
else if( IsMoving() )
|
||||||
{
|
{
|
||||||
Move( m_initialPos + aPosition - m_initialCursorPos );
|
Move( m_initialPos + aPosition - m_initialCursorPos );
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,8 +44,6 @@ class LIB_RECTANGLE : public LIB_ITEM
|
||||||
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
||||||
const TRANSFORM& aTransform ) override;
|
const TRANSFORM& aTransform ) override;
|
||||||
|
|
||||||
void CalcEdit( const wxPoint& aPosition ) override;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LIB_RECTANGLE( LIB_PART * aParent );
|
LIB_RECTANGLE( LIB_PART * aParent );
|
||||||
|
|
||||||
|
@ -73,9 +71,9 @@ public:
|
||||||
|
|
||||||
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
|
||||||
|
|
||||||
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint = wxPoint( 0, 0 ) ) override;
|
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint ) override;
|
||||||
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
void CalcEdit( const wxPoint& aPosition ) override;
|
||||||
void EndEdit( const wxPoint& aPosition, bool aAbort = false ) override;
|
void EndEdit( const wxPoint& aPosition ) override;
|
||||||
|
|
||||||
void SetOffset( const wxPoint& aOffset ) override;
|
void SetOffset( const wxPoint& aOffset ) override;
|
||||||
|
|
||||||
|
|
|
@ -341,8 +341,8 @@ BITMAP_DEF LIB_TEXT::GetMenuImage() const
|
||||||
|
|
||||||
void LIB_TEXT::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
void LIB_TEXT::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED ) ) != 0,
|
// JEY TODO: this should all move to modern toolset....
|
||||||
wxT( "Invalid edit mode for LIB_TEXT object." ) );
|
LIB_ITEM::BeginEdit( aEditMode, aPosition );
|
||||||
|
|
||||||
if( aEditMode == IS_MOVED )
|
if( aEditMode == IS_MOVED )
|
||||||
{
|
{
|
||||||
|
@ -353,26 +353,14 @@ void LIB_TEXT::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition )
|
||||||
{
|
{
|
||||||
SetTextPos( aPosition );
|
SetTextPos( aPosition );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Flags = aEditMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LIB_TEXT::ContinueEdit( const wxPoint aPosition )
|
void LIB_TEXT::EndEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( ( m_Flags & ( IS_NEW | IS_MOVED ) ) != 0, false,
|
// JEY TODO: this should all move to modern toolset....
|
||||||
wxT( "Bad call to ContinueEdit(). Text is not being edited." ) );
|
LIB_ITEM::EndEdit( aPosition );
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LIB_TEXT::EndEdit( const wxPoint& aPosition, bool aAbort )
|
|
||||||
{
|
|
||||||
wxCHECK_RET( ( m_Flags & ( IS_NEW | IS_MOVED ) ) != 0,
|
|
||||||
wxT( "Bad call to EndEdit(). Text is not being edited." ) );
|
|
||||||
|
|
||||||
m_Flags = 0;
|
|
||||||
m_rotate = false;
|
m_rotate = false;
|
||||||
m_updateText = false;
|
m_updateText = false;
|
||||||
}
|
}
|
||||||
|
@ -380,6 +368,7 @@ void LIB_TEXT::EndEdit( const wxPoint& aPosition, bool aAbort )
|
||||||
|
|
||||||
void LIB_TEXT::CalcEdit( const wxPoint& aPosition )
|
void LIB_TEXT::CalcEdit( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
|
// JEY TODO: this should all move to modern toolset....
|
||||||
DBG(printf("textCalcEdit %d %d\n", aPosition.x, aPosition.y );)
|
DBG(printf("textCalcEdit %d %d\n", aPosition.x, aPosition.y );)
|
||||||
|
|
||||||
if( m_rotate )
|
if( m_rotate )
|
||||||
|
@ -394,11 +383,11 @@ void LIB_TEXT::CalcEdit( const wxPoint& aPosition )
|
||||||
m_updateText = false;
|
m_updateText = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_Flags == IS_NEW )
|
if( IsNew() )
|
||||||
{
|
{
|
||||||
SetTextPos( aPosition );
|
SetTextPos( aPosition );
|
||||||
}
|
}
|
||||||
else if( m_Flags == IS_MOVED )
|
else if( IsMoving() )
|
||||||
{
|
{
|
||||||
Move( m_initialPos + aPosition - m_initialCursorPos );
|
Move( m_initialPos + aPosition - m_initialCursorPos );
|
||||||
DBG(printf("%p: move %d %d\n", this, GetPosition().x, GetPosition().y );)
|
DBG(printf("%p: move %d %d\n", this, GetPosition().x, GetPosition().y );)
|
||||||
|
|
|
@ -50,8 +50,6 @@ class LIB_TEXT : public LIB_ITEM, public EDA_TEXT
|
||||||
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
void drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, void* aData,
|
||||||
const TRANSFORM& aTransform ) override;
|
const TRANSFORM& aTransform ) override;
|
||||||
|
|
||||||
void CalcEdit( const wxPoint& aPosition ) override;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LIB_TEXT( LIB_PART * aParent );
|
LIB_TEXT( LIB_PART * aParent );
|
||||||
|
|
||||||
|
@ -99,11 +97,9 @@ public:
|
||||||
|
|
||||||
void Rotate() override;
|
void Rotate() override;
|
||||||
|
|
||||||
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint = wxPoint( 0, 0 ) ) override;
|
void BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aStartPoint ) override;
|
||||||
|
void CalcEdit( const wxPoint& aPosition ) override;
|
||||||
bool ContinueEdit( const wxPoint aNextPoint ) override;
|
void EndEdit( const wxPoint& aPosition ) override;
|
||||||
|
|
||||||
void EndEdit( const wxPoint& aPosition, bool aAbort = false ) override;
|
|
||||||
|
|
||||||
void SetOffset( const wxPoint& aOffset ) override;
|
void SetOffset( const wxPoint& aOffset ) override;
|
||||||
|
|
||||||
|
|
|
@ -74,21 +74,19 @@
|
||||||
#include <sch_view.h>
|
#include <sch_view.h>
|
||||||
#include <sch_painter.h>
|
#include <sch_painter.h>
|
||||||
|
|
||||||
int LIB_EDIT_FRAME:: m_unit = 1;
|
|
||||||
int LIB_EDIT_FRAME:: m_convert = 1;
|
|
||||||
LIB_ITEM* LIB_EDIT_FRAME:: m_lastDrawItem = NULL;
|
LIB_ITEM* LIB_EDIT_FRAME:: m_lastDrawItem = NULL;
|
||||||
|
|
||||||
bool LIB_EDIT_FRAME:: m_showDeMorgan = false;
|
bool LIB_EDIT_FRAME:: m_showDeMorgan = false;
|
||||||
int LIB_EDIT_FRAME:: g_LastTextSize = -1;
|
int LIB_EDIT_FRAME:: g_LastTextSize = -1;
|
||||||
double LIB_EDIT_FRAME:: g_LastTextAngle = TEXT_ANGLE_HORIZ;
|
double LIB_EDIT_FRAME:: g_LastTextAngle = TEXT_ANGLE_HORIZ;
|
||||||
int LIB_EDIT_FRAME:: m_drawLineWidth = 0;
|
int LIB_EDIT_FRAME:: g_LastLineWidth = 0;
|
||||||
|
|
||||||
// these values are overridden when reading the config
|
// these values are overridden when reading the config
|
||||||
int LIB_EDIT_FRAME:: m_textPinNumDefaultSize = DEFAULTPINNUMSIZE;
|
int LIB_EDIT_FRAME:: m_textPinNumDefaultSize = DEFAULTPINNUMSIZE;
|
||||||
int LIB_EDIT_FRAME:: m_textPinNameDefaultSize = DEFAULTPINNAMESIZE;
|
int LIB_EDIT_FRAME:: m_textPinNameDefaultSize = DEFAULTPINNAMESIZE;
|
||||||
int LIB_EDIT_FRAME:: m_defaultPinLength = DEFAULTPINLENGTH;
|
int LIB_EDIT_FRAME:: m_defaultPinLength = DEFAULTPINLENGTH;
|
||||||
|
|
||||||
FILL_T LIB_EDIT_FRAME:: m_drawFillStyle = NO_FILL;
|
FILL_T LIB_EDIT_FRAME:: g_LastFillStyle = NO_FILL;
|
||||||
|
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
|
BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
|
||||||
|
@ -218,6 +216,8 @@ LIB_EDIT_FRAME::LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
|
||||||
m_tempCopyComponent = NULL;
|
m_tempCopyComponent = NULL;
|
||||||
m_treePane = nullptr;
|
m_treePane = nullptr;
|
||||||
m_libMgr = nullptr;
|
m_libMgr = nullptr;
|
||||||
|
m_unit = 1;
|
||||||
|
m_convert = 1;
|
||||||
|
|
||||||
// Delayed initialization
|
// Delayed initialization
|
||||||
if( g_LastTextSize == -1 )
|
if( g_LastTextSize == -1 )
|
||||||
|
@ -681,7 +681,6 @@ void LIB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_POPUP_COPY_BLOCK:
|
case ID_POPUP_COPY_BLOCK:
|
||||||
case wxID_CUT:
|
case wxID_CUT:
|
||||||
case ID_POPUP_CUT_BLOCK:
|
case ID_POPUP_CUT_BLOCK:
|
||||||
case ID_POPUP_LIBEDIT_END_CREATE_ITEM:
|
|
||||||
case ID_LIBEDIT_EDIT_PIN:
|
case ID_LIBEDIT_EDIT_PIN:
|
||||||
case ID_POPUP_LIBEDIT_BODY_EDIT_ITEM:
|
case ID_POPUP_LIBEDIT_BODY_EDIT_ITEM:
|
||||||
case ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM:
|
case ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM:
|
||||||
|
@ -725,14 +724,6 @@ void LIB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
m_syncPinEdit = m_mainToolBar->GetToolToggled( ID_LIBEDIT_SYNC_PIN_EDIT );
|
m_syncPinEdit = m_mainToolBar->GetToolToggled( ID_LIBEDIT_SYNC_PIN_EDIT );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_LIBEDIT_END_CREATE_ITEM:
|
|
||||||
m_canvas->MoveCursorToCrossHair();
|
|
||||||
|
|
||||||
if( item )
|
|
||||||
EndDrawGraphicItem( nullptr );
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_POPUP_LIBEDIT_BODY_EDIT_ITEM:
|
case ID_POPUP_LIBEDIT_BODY_EDIT_ITEM:
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
@ -1099,6 +1090,10 @@ void LIB_EDIT_FRAME::OnSelectTool( wxCommandEvent& aEvent )
|
||||||
case ID_LIBEDIT_PIN_BUTT:
|
case ID_LIBEDIT_PIN_BUTT:
|
||||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
||||||
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_ARC_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_LINE_BUTT:
|
||||||
// moved to modern toolset
|
// moved to modern toolset
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
|
@ -1109,22 +1104,6 @@ void LIB_EDIT_FRAME::OnSelectTool( wxCommandEvent& aEvent )
|
||||||
|
|
||||||
switch( id )
|
switch( id )
|
||||||
{
|
{
|
||||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
|
||||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add rectangle" ) );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
|
||||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add circle" ) );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_ARC_BUTT:
|
|
||||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add arc" ) );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_LINE_BUTT:
|
|
||||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add line" ) );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_IMPORT_BODY_BUTT:
|
case ID_LIBEDIT_IMPORT_BODY_BUTT:
|
||||||
SetToolID( id, GetGalCanvas()->GetDefaultCursor(), _( "Import" ) );
|
SetToolID( id, GetGalCanvas()->GetDefaultCursor(), _( "Import" ) );
|
||||||
LoadOneSymbol();
|
LoadOneSymbol();
|
||||||
|
|
|
@ -83,20 +83,14 @@ class LIB_EDIT_FRAME : public SCH_BASE_FRAME
|
||||||
*/
|
*/
|
||||||
bool m_showPinElectricalTypeName;
|
bool m_showPinElectricalTypeName;
|
||||||
|
|
||||||
/** The current draw or edit graphic item fill style. */
|
|
||||||
static FILL_T m_drawFillStyle;
|
|
||||||
|
|
||||||
/** Default line width for drawing or editing graphic items. */
|
|
||||||
static int m_drawLineWidth;
|
|
||||||
|
|
||||||
static LIB_ITEM* m_lastDrawItem;
|
static LIB_ITEM* m_lastDrawItem;
|
||||||
|
|
||||||
// The unit number to edit and show
|
// The unit number to edit and show
|
||||||
static int m_unit;
|
int m_unit;
|
||||||
|
|
||||||
// Show the normal shape ( m_convert <= 1 ) or the converted shape
|
// Show the normal shape ( m_convert <= 1 ) or the converted shape
|
||||||
// ( m_convert > 1 )
|
// ( m_convert > 1 )
|
||||||
static int m_convert;
|
int m_convert;
|
||||||
|
|
||||||
// true to force DeMorgan/normal tools selection enabled.
|
// true to force DeMorgan/normal tools selection enabled.
|
||||||
// They are enabled when the loaded component has
|
// They are enabled when the loaded component has
|
||||||
|
@ -133,6 +127,8 @@ public:
|
||||||
|
|
||||||
static int g_LastTextSize;
|
static int g_LastTextSize;
|
||||||
static double g_LastTextAngle;
|
static double g_LastTextAngle;
|
||||||
|
static FILL_T g_LastFillStyle;
|
||||||
|
static int g_LastLineWidth;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
|
LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
|
||||||
|
@ -407,7 +403,7 @@ public:
|
||||||
bool GetShowElectricalType() { return m_showPinElectricalTypeName; }
|
bool GetShowElectricalType() { return m_showPinElectricalTypeName; }
|
||||||
void SetShowElectricalType( bool aShow ) { m_showPinElectricalTypeName = aShow; }
|
void SetShowElectricalType( bool aShow ) { m_showPinElectricalTypeName = aShow; }
|
||||||
|
|
||||||
FILL_T GetFillStyle() { return m_drawFillStyle; }
|
FILL_T GetFillStyle() { return g_LastFillStyle; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a temporary copy of the current edited component.
|
* Create a temporary copy of the current edited component.
|
||||||
|
@ -539,9 +535,6 @@ private:
|
||||||
void GetComponentFromUndoList( wxCommandEvent& event );
|
void GetComponentFromUndoList( wxCommandEvent& event );
|
||||||
void GetComponentFromRedoList( wxCommandEvent& event );
|
void GetComponentFromRedoList( wxCommandEvent& event );
|
||||||
|
|
||||||
// Editing pins
|
|
||||||
void CreatePin( wxDC* DC );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare the displacement of a pin
|
* Prepare the displacement of a pin
|
||||||
*
|
*
|
||||||
|
@ -556,20 +549,9 @@ private:
|
||||||
*/
|
*/
|
||||||
void CreateImagePins( LIB_PIN* aPin );
|
void CreateImagePins( LIB_PIN* aPin );
|
||||||
|
|
||||||
/**
|
|
||||||
* Places an anchor reference coordinate for the current component.
|
|
||||||
* <p>
|
|
||||||
* All object coordinates are offset to the current cursor position.
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
void PlaceAnchor();
|
|
||||||
|
|
||||||
// Editing graphic items
|
// Editing graphic items
|
||||||
LIB_ITEM* CreateGraphicItem( LIB_PART* LibEntry, wxDC* DC );
|
|
||||||
void GraphicItemBeginDraw( wxDC* DC );
|
|
||||||
void StartMoveDrawSymbol( wxDC* DC, LIB_ITEM* aItem );
|
void StartMoveDrawSymbol( wxDC* DC, LIB_ITEM* aItem );
|
||||||
void StartModifyDrawSymbol( wxDC* DC, LIB_ITEM* aItem ); //<! Modify the item, adjust size etc.
|
void StartModifyDrawSymbol( wxDC* DC, LIB_ITEM* aItem ); //<! Modify the item, adjust size etc.
|
||||||
void EndDrawGraphicItem( wxDC* DC );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a component symbol file (*.sym ) and add graphic items to the current component.
|
* Read a component symbol file (*.sym ) and add graphic items to the current component.
|
||||||
|
|
|
@ -58,35 +58,6 @@ void LIB_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& aPosition )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_NO_TOOL_SELECTED:
|
case ID_NO_TOOL_SELECTED:
|
||||||
// If an item is currently in edit, finish edit
|
|
||||||
if( item_in_edit )
|
|
||||||
{
|
|
||||||
switch( item->Type() )
|
|
||||||
{
|
|
||||||
case LIB_PIN_T:
|
|
||||||
PlacePin();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
EndDrawGraphicItem( DC );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_LINE_BUTT:
|
|
||||||
case ID_LIBEDIT_BODY_ARC_BUTT:
|
|
||||||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
|
||||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
|
||||||
if( no_item_edited )
|
|
||||||
SetDrawItem( CreateGraphicItem( part, DC ) );
|
|
||||||
else if( item )
|
|
||||||
{
|
|
||||||
if( item->IsNew() )
|
|
||||||
GraphicItemBeginDraw( DC );
|
|
||||||
else
|
|
||||||
EndDrawGraphicItem( DC );
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_LIBEDIT_DELETE_ITEM_BUTT:
|
case ID_LIBEDIT_DELETE_ITEM_BUTT:
|
||||||
|
@ -99,6 +70,10 @@ void LIB_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& aPosition )
|
||||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
||||||
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
||||||
case ID_LIBEDIT_PIN_BUTT:
|
case ID_LIBEDIT_PIN_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_LINE_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_ARC_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||||
|
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||||
// Moved to modern toolset
|
// Moved to modern toolset
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -167,15 +142,9 @@ void LIB_EDIT_FRAME::OnLeftDClick( wxDC* DC, const wxPoint& aPosition )
|
||||||
case LIB_ARC_T:
|
case LIB_ARC_T:
|
||||||
case LIB_CIRCLE_T:
|
case LIB_CIRCLE_T:
|
||||||
case LIB_RECTANGLE_T:
|
case LIB_RECTANGLE_T:
|
||||||
if( not_edited )
|
|
||||||
EditGraphicSymbol( DC, item );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIB_POLYLINE_T:
|
case LIB_POLYLINE_T:
|
||||||
if( not_edited )
|
if( not_edited )
|
||||||
EditGraphicSymbol( DC, item );
|
EditGraphicSymbol( DC, item );
|
||||||
else if( item->IsNew() )
|
|
||||||
EndDrawGraphicItem( DC );
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LIB_TEXT_T:
|
case LIB_TEXT_T:
|
||||||
|
|
|
@ -225,8 +225,8 @@ bool LIB_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu )
|
||||||
|
|
||||||
if( item->IsNew() )
|
if( item->IsNew() )
|
||||||
{
|
{
|
||||||
AddMenuItem( PopMenu, ID_POPUP_LIBEDIT_END_CREATE_ITEM, _( "Line End" ),
|
// AddMenuItem( PopMenu, ID_POPUP_LIBEDIT_END_CREATE_ITEM, _( "Line End" ),
|
||||||
KiBitmap( checked_ok_xpm ) );
|
// KiBitmap( checked_ok_xpm ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = AddHotkeyName( _( "Edit Line Options..." ), g_Libedit_Hotkeys_Descr, HK_EDIT );
|
msg = AddHotkeyName( _( "Edit Line Options..." ), g_Libedit_Hotkeys_Descr, HK_EDIT );
|
||||||
|
|
|
@ -62,20 +62,10 @@ void LIB_EDIT_FRAME::EditGraphicSymbol( wxDC* DC, LIB_ITEM* DrawItem )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Init default values (used to create a new draw item)
|
// Init default values (used to create a new draw item)
|
||||||
m_drawLineWidth = dialog.GetWidth();
|
g_LastLineWidth = dialog.GetWidth();
|
||||||
m_DrawSpecificConvert = !dialog.GetApplyToAllConversions();
|
m_DrawSpecificConvert = !dialog.GetApplyToAllConversions();
|
||||||
m_DrawSpecificUnit = !dialog.GetApplyToAllUnits();
|
m_DrawSpecificUnit = !dialog.GetApplyToAllUnits();
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* TODO: see if m_drawFillStyle must retain the last fill option or not.
|
|
||||||
* if the last is Filled, having next new graphic items created
|
|
||||||
* with filled body is often bad.
|
|
||||||
* currently m_drawFillStyle is left with the default value (not filled)
|
|
||||||
*/
|
|
||||||
if( DrawItem->IsFillable() )
|
|
||||||
m_drawFillStyle = (FILL_T) dialog.GetFillStyle();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Save copy for undo if not in edit (edit command already handle the save copy)
|
// Save copy for undo if not in edit (edit command already handle the save copy)
|
||||||
if( !DrawItem->InEditMode() )
|
if( !DrawItem->InEditMode() )
|
||||||
SaveCopyInUndoList( DrawItem->GetParent() );
|
SaveCopyInUndoList( DrawItem->GetParent() );
|
||||||
|
@ -93,7 +83,7 @@ void LIB_EDIT_FRAME::EditGraphicSymbol( wxDC* DC, LIB_ITEM* DrawItem )
|
||||||
if( DrawItem->IsFillable() )
|
if( DrawItem->IsFillable() )
|
||||||
DrawItem->SetFillMode( (FILL_T) dialog.GetFillStyle() );
|
DrawItem->SetFillMode( (FILL_T) dialog.GetFillStyle() );
|
||||||
|
|
||||||
DrawItem->SetWidth( m_drawLineWidth );
|
DrawItem->SetWidth( g_LastLineWidth );
|
||||||
|
|
||||||
GetCanvas()->GetView()->Update( DrawItem );
|
GetCanvas()->GetView()->Update( DrawItem );
|
||||||
GetCanvas()->Refresh();
|
GetCanvas()->Refresh();
|
||||||
|
@ -114,7 +104,7 @@ static void AbortSymbolTraceOn( EDA_DRAW_PANEL* aPanel, wxDC* DC )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool newItem = item->IsNew();
|
bool newItem = item->IsNew();
|
||||||
item->EndEdit( parent->GetCrossHairPosition( true ), true );
|
item->EndEdit( parent->GetCrossHairPosition( true ) );
|
||||||
|
|
||||||
if( newItem )
|
if( newItem )
|
||||||
delete item;
|
delete item;
|
||||||
|
@ -131,98 +121,6 @@ static void AbortSymbolTraceOn( EDA_DRAW_PANEL* aPanel, wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LIB_ITEM* LIB_EDIT_FRAME::CreateGraphicItem( LIB_PART* LibEntry, wxDC* DC )
|
|
||||||
{
|
|
||||||
LIB_ITEM* item = GetDrawItem();
|
|
||||||
m_canvas->SetMouseCapture( RedrawWhileMovingCursor, AbortSymbolTraceOn );
|
|
||||||
wxPoint drawPos = GetCrossHairPosition( true );
|
|
||||||
|
|
||||||
// no temp copy -> the current version of symbol will be used for Undo
|
|
||||||
// This is normal when adding new items to the current symbol
|
|
||||||
ClearTempCopyComponent();
|
|
||||||
|
|
||||||
auto view = static_cast<SCH_DRAW_PANEL*>(m_canvas)->GetView();
|
|
||||||
view->ShowPreview( true );
|
|
||||||
|
|
||||||
switch( GetToolId() )
|
|
||||||
{
|
|
||||||
case ID_LIBEDIT_BODY_ARC_BUTT:
|
|
||||||
item = new LIB_ARC( LibEntry );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
|
||||||
item = new LIB_CIRCLE( LibEntry );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
|
||||||
item = new LIB_RECTANGLE( LibEntry );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_LINE_BUTT:
|
|
||||||
item = new LIB_POLYLINE( LibEntry );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
|
||||||
// Moved to modern toolset
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
DisplayError( this, wxT( "LIB_EDIT_FRAME::CreateGraphicItem() error" ) );
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( item )
|
|
||||||
{
|
|
||||||
item->BeginEdit( IS_NEW, drawPos );
|
|
||||||
|
|
||||||
// Don't set line parameters for text objects.
|
|
||||||
if( item->Type() != LIB_TEXT_T )
|
|
||||||
{
|
|
||||||
item->SetWidth( m_drawLineWidth );
|
|
||||||
item->SetFillMode( m_drawFillStyle );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( m_DrawSpecificUnit )
|
|
||||||
item->SetUnit( m_unit );
|
|
||||||
|
|
||||||
if( m_DrawSpecificConvert )
|
|
||||||
item->SetConvert( m_convert );
|
|
||||||
|
|
||||||
// Draw initial symbol:
|
|
||||||
m_canvas->CallMouseCapture( DC, wxDefaultPosition, false );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_canvas->EndMouseCapture();
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_canvas->MoveCursorToCrossHair();
|
|
||||||
m_canvas->SetIgnoreMouseEvents( false );
|
|
||||||
SetDrawItem( item );
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LIB_EDIT_FRAME::GraphicItemBeginDraw( wxDC* DC )
|
|
||||||
{
|
|
||||||
if( GetDrawItem() == NULL )
|
|
||||||
return;
|
|
||||||
|
|
||||||
wxPoint pos = GetCrossHairPosition( true );
|
|
||||||
|
|
||||||
auto view = static_cast<SCH_DRAW_PANEL*>(m_canvas)->GetView();
|
|
||||||
view->ShowPreview( true );
|
|
||||||
|
|
||||||
|
|
||||||
if( GetDrawItem()->ContinueEdit( pos ) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
EndDrawGraphicItem( DC );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Redraw the graphic shape while moving
|
* Redraw the graphic shape while moving
|
||||||
*/
|
*/
|
||||||
|
@ -280,50 +178,3 @@ void LIB_EDIT_FRAME::StartModifyDrawSymbol( wxDC* DC, LIB_ITEM* aItem )
|
||||||
m_canvas->SetMouseCapture( RedrawWhileMovingCursor, AbortSymbolTraceOn );
|
m_canvas->SetMouseCapture( RedrawWhileMovingCursor, AbortSymbolTraceOn );
|
||||||
m_canvas->CallMouseCapture( DC, wxDefaultPosition, true );
|
m_canvas->CallMouseCapture( DC, wxDefaultPosition, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_EDIT_FRAME::EndDrawGraphicItem( wxDC* DC )
|
|
||||||
{
|
|
||||||
LIB_ITEM* item = GetDrawItem();
|
|
||||||
|
|
||||||
if( item == NULL )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if( LIB_PART* part = GetCurPart() )
|
|
||||||
{
|
|
||||||
if( GetToolId() != ID_NO_TOOL_SELECTED )
|
|
||||||
SetCursor( wxCURSOR_PENCIL );
|
|
||||||
else
|
|
||||||
SetCursor( (wxStockCursor) GetGalCanvas()->GetDefaultCursor() );
|
|
||||||
|
|
||||||
if( GetTempCopyComponent() ) // used when editing an existing item
|
|
||||||
SaveCopyInUndoList( GetTempCopyComponent() );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// When creating a new item, there is still no change for the
|
|
||||||
// current symbol. So save it.
|
|
||||||
SaveCopyInUndoList( part );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( item->IsNew() )
|
|
||||||
part->AddDrawItem( item );
|
|
||||||
|
|
||||||
item->EndEdit( GetCrossHairPosition( true ) );
|
|
||||||
|
|
||||||
SetDrawItem( NULL );
|
|
||||||
|
|
||||||
m_canvas->SetMouseCapture( NULL, NULL );
|
|
||||||
|
|
||||||
auto view = static_cast<SCH_DRAW_PANEL*>(m_canvas)->GetView();
|
|
||||||
|
|
||||||
DBG(printf("end: pos %d %d\n", item->GetPosition().x, item->GetPosition().y );)
|
|
||||||
|
|
||||||
view->ClearHiddenFlags();
|
|
||||||
view->ClearPreview();
|
|
||||||
|
|
||||||
OnModify();
|
|
||||||
}
|
|
||||||
|
|
||||||
RebuildView();
|
|
||||||
GetCanvas()->Refresh();
|
|
||||||
}
|
|
||||||
|
|
|
@ -41,6 +41,10 @@
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
#include <lib_text.h>
|
#include <lib_text.h>
|
||||||
#include <dialogs/dialog_lib_edit_text.h>
|
#include <dialogs/dialog_lib_edit_text.h>
|
||||||
|
#include <lib_arc.h>
|
||||||
|
#include <lib_circle.h>
|
||||||
|
#include <lib_polyline.h>
|
||||||
|
#include <lib_rectangle.h>
|
||||||
|
|
||||||
// Drawing tool actions
|
// Drawing tool actions
|
||||||
TOOL_ACTION SCH_ACTIONS::placeSymbolPin( "libedit.InteractiveDrawing.placeSymbolPin",
|
TOOL_ACTION SCH_ACTIONS::placeSymbolPin( "libedit.InteractiveDrawing.placeSymbolPin",
|
||||||
|
@ -78,6 +82,10 @@ TOOL_ACTION SCH_ACTIONS::placeSymbolAnchor( "libedit.InteractiveDrawing.placeSym
|
||||||
_( "Move Symbol Anchor" ), _( "Specify a new location for the symbol anchor" ),
|
_( "Move Symbol Anchor" ), _( "Specify a new location for the symbol anchor" ),
|
||||||
anchor_xpm, AF_ACTIVATE );
|
anchor_xpm, AF_ACTIVATE );
|
||||||
|
|
||||||
|
TOOL_ACTION SCH_ACTIONS::finishDrawing( "libedit.InteractiveDrawing.finishDrawing",
|
||||||
|
AS_GLOBAL, 0, _( "Finish Drawing" ), _( "Finish drawing shape" ),
|
||||||
|
checked_ok_xpm, AF_NONE );
|
||||||
|
|
||||||
|
|
||||||
LIB_DRAWING_TOOLS::LIB_DRAWING_TOOLS() :
|
LIB_DRAWING_TOOLS::LIB_DRAWING_TOOLS() :
|
||||||
TOOL_INTERACTIVE( "libedit.InteractiveDrawing" ),
|
TOOL_INTERACTIVE( "libedit.InteractiveDrawing" ),
|
||||||
|
@ -100,8 +108,9 @@ bool LIB_DRAWING_TOOLS::Init()
|
||||||
m_frame = getEditFrame<LIB_EDIT_FRAME>();
|
m_frame = getEditFrame<LIB_EDIT_FRAME>();
|
||||||
m_selectionTool = m_toolMgr->GetTool<SCH_SELECTION_TOOL>();
|
m_selectionTool = m_toolMgr->GetTool<SCH_SELECTION_TOOL>();
|
||||||
|
|
||||||
auto activeTool = [ this ] ( const SELECTION& aSel ) {
|
auto isDrawingCondition = [] ( const SELECTION& aSel ) {
|
||||||
return ( m_frame->GetToolId() != ID_NO_TOOL_SELECTED );
|
LIB_ITEM* item = (LIB_ITEM*) aSel.Front();
|
||||||
|
return item && item->IsNew();
|
||||||
};
|
};
|
||||||
|
|
||||||
auto& ctxMenu = m_menu.GetMenu();
|
auto& ctxMenu = m_menu.GetMenu();
|
||||||
|
@ -109,9 +118,10 @@ bool LIB_DRAWING_TOOLS::Init()
|
||||||
//
|
//
|
||||||
// Build the drawing tool menu
|
// Build the drawing tool menu
|
||||||
//
|
//
|
||||||
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeTool, 1 );
|
ctxMenu.AddItem( ACTIONS::cancelInteractive, SCH_CONDITIONS::ShowAlways, 1 );
|
||||||
|
ctxMenu.AddItem( SCH_ACTIONS::finishDrawing, isDrawingCondition, 2 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( activeTool, 1000 );
|
ctxMenu.AddSeparator( SCH_CONDITIONS::ShowAlways, 1000 );
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_menu.AddStandardSubMenus( m_frame );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -171,6 +181,7 @@ int LIB_DRAWING_TOOLS::doTwoClickPlace( KICAD_T aType )
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->IsClick( BUT_LEFT ) )
|
else if( evt->IsClick( BUT_LEFT ) )
|
||||||
{
|
{
|
||||||
LIB_PART* part = m_frame->GetCurPart();
|
LIB_PART* part = m_frame->GetCurPart();
|
||||||
|
@ -253,20 +264,7 @@ int LIB_DRAWING_TOOLS::doTwoClickPlace( KICAD_T aType )
|
||||||
|
|
||||||
m_menu.ShowContextMenu( m_selectionTool->GetSelection() );
|
m_menu.ShowContextMenu( m_selectionTool->GetSelection() );
|
||||||
}
|
}
|
||||||
else if( TOOL_EVT_UTILS::IsSelectionEvent( evt.get() ) )
|
|
||||||
{
|
|
||||||
// This happens if our text was replaced out from under us by ConvertTextType()
|
|
||||||
SELECTION& selection = m_selectionTool->GetSelection();
|
|
||||||
|
|
||||||
if( selection.GetSize() == 1 )
|
|
||||||
{
|
|
||||||
item = (LIB_ITEM*) selection.Front();
|
|
||||||
m_view->ClearPreview();
|
|
||||||
m_view->AddToPreview( item->Clone() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
item = nullptr;
|
|
||||||
}
|
|
||||||
else if( item && ( evt->IsAction( &SCH_ACTIONS::refreshPreview ) || evt->IsMotion() ) )
|
else if( item && ( evt->IsAction( &SCH_ACTIONS::refreshPreview ) || evt->IsMotion() ) )
|
||||||
{
|
{
|
||||||
static_cast<LIB_ITEM*>( item )->SetPosition( wxPoint( cursorPos.x, -cursorPos.y) );
|
static_cast<LIB_ITEM*>( item )->SetPosition( wxPoint( cursorPos.x, -cursorPos.y) );
|
||||||
|
@ -285,6 +283,129 @@ int LIB_DRAWING_TOOLS::doTwoClickPlace( KICAD_T aType )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int LIB_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
if( aEvent.IsAction( &SCH_ACTIONS::drawSymbolArc ) )
|
||||||
|
m_frame->SetToolID( ID_LIBEDIT_BODY_ARC_BUTT, wxCURSOR_PENCIL, _( "Draw Arc" ) );
|
||||||
|
else if( aEvent.IsAction( &SCH_ACTIONS::drawSymbolCircle ) )
|
||||||
|
m_frame->SetToolID( ID_LIBEDIT_BODY_CIRCLE_BUTT, wxCURSOR_PENCIL, _( "Draw Circle" ) );
|
||||||
|
else if( aEvent.IsAction( &SCH_ACTIONS::drawSymbolLines ) )
|
||||||
|
m_frame->SetToolID( ID_LIBEDIT_BODY_LINE_BUTT, wxCURSOR_PENCIL, _( "Draw Lines" ) );
|
||||||
|
else if( aEvent.IsAction( &SCH_ACTIONS::drawSymbolRectangle ) )
|
||||||
|
m_frame->SetToolID( ID_LIBEDIT_BODY_RECT_BUTT, wxCURSOR_PENCIL, _( "Draw Rectangle" ) );
|
||||||
|
|
||||||
|
m_toolMgr->RunAction( SCH_ACTIONS::clearSelection, true );
|
||||||
|
m_controls->ShowCursor( true );
|
||||||
|
|
||||||
|
Activate();
|
||||||
|
|
||||||
|
LIB_PART* part = m_frame->GetCurPart();
|
||||||
|
LIB_ITEM* item = nullptr;
|
||||||
|
|
||||||
|
// Main loop: keep receiving events
|
||||||
|
while( auto evt = Wait() )
|
||||||
|
{
|
||||||
|
VECTOR2I cursorPos = m_controls->GetCursorPosition( !evt->Modifier( MD_ALT ) );
|
||||||
|
|
||||||
|
if( TOOL_EVT_UTILS::IsCancelInteractive( evt.get() ) )
|
||||||
|
{
|
||||||
|
m_toolMgr->RunAction( SCH_ACTIONS::clearSelection, true );
|
||||||
|
m_view->ClearPreview();
|
||||||
|
|
||||||
|
if( item )
|
||||||
|
{
|
||||||
|
delete item;
|
||||||
|
item = nullptr;
|
||||||
|
|
||||||
|
if( !evt->IsActivate() )
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( evt->IsClick( BUT_LEFT ) && !item )
|
||||||
|
{
|
||||||
|
if( !part )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
switch( m_frame->GetToolId() )
|
||||||
|
{
|
||||||
|
case ID_LIBEDIT_BODY_ARC_BUTT: item = new LIB_ARC( part ); break;
|
||||||
|
case ID_LIBEDIT_BODY_CIRCLE_BUTT: item = new LIB_CIRCLE( part ); break;
|
||||||
|
case ID_LIBEDIT_BODY_LINE_BUTT: item = new LIB_POLYLINE( part ); break;
|
||||||
|
case ID_LIBEDIT_BODY_RECT_BUTT: item = new LIB_RECTANGLE( part ); break;
|
||||||
|
default: wxFAIL_MSG( "LIB_DRAWING_TOOLS:DrawShape(): unknown tool" );
|
||||||
|
}
|
||||||
|
|
||||||
|
item->SetWidth( LIB_EDIT_FRAME::g_LastLineWidth );
|
||||||
|
item->SetFillMode( LIB_EDIT_FRAME::g_LastFillStyle );
|
||||||
|
item->BeginEdit( IS_NEW, wxPoint( cursorPos.x, -cursorPos.y ) );
|
||||||
|
|
||||||
|
if( m_frame->m_DrawSpecificUnit )
|
||||||
|
item->SetUnit( m_frame->GetUnit() );
|
||||||
|
|
||||||
|
if( m_frame->m_DrawSpecificConvert )
|
||||||
|
item->SetConvert( m_frame->GetConvert() );
|
||||||
|
|
||||||
|
m_selectionTool->AddItemToSel( item );
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( item && ( evt->IsClick( BUT_LEFT )
|
||||||
|
|| evt->IsDblClick( BUT_LEFT )
|
||||||
|
|| evt->IsAction( &SCH_ACTIONS::finishDrawing ) ) )
|
||||||
|
{
|
||||||
|
if( evt->IsDblClick()
|
||||||
|
|| evt->IsAction( &SCH_ACTIONS::finishDrawing )
|
||||||
|
|| !item->ContinueEdit( wxPoint( cursorPos.x, -cursorPos.y ) ) )
|
||||||
|
{
|
||||||
|
item->EndEdit( wxPoint( cursorPos.x, -cursorPos.y ) );
|
||||||
|
m_view->ClearPreview();
|
||||||
|
|
||||||
|
m_frame->SaveCopyInUndoList( part );
|
||||||
|
part->AddDrawItem( item );
|
||||||
|
item = nullptr;
|
||||||
|
|
||||||
|
m_frame->RebuildView();
|
||||||
|
m_frame->OnModify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( item && ( evt->IsAction( &SCH_ACTIONS::refreshPreview )
|
||||||
|
|| evt->IsMotion() ) )
|
||||||
|
{
|
||||||
|
item->CalcEdit( wxPoint( cursorPos.x, -cursorPos.y) );
|
||||||
|
m_view->ClearPreview();
|
||||||
|
m_view->AddToPreview( item->Clone() );
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( evt->IsDblClick( BUT_LEFT ) && !item )
|
||||||
|
{
|
||||||
|
// JEY TODO: handle edit action...
|
||||||
|
// This will need to be a RunAction() as the user might have double-clicked
|
||||||
|
// a text or pin or something
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( evt->IsClick( BUT_RIGHT ) )
|
||||||
|
{
|
||||||
|
// Warp after context menu only if dragging...
|
||||||
|
if( !item )
|
||||||
|
m_toolMgr->VetoContextMenuMouseWarp();
|
||||||
|
|
||||||
|
m_menu.ShowContextMenu( m_selectionTool->GetSelection() );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable autopanning and cursor capture only when there is a shape being drawn
|
||||||
|
m_controls->SetAutoPan( !!item );
|
||||||
|
m_controls->CaptureCursor( !!item );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_frame->SetNoToolSelected();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int LIB_DRAWING_TOOLS::PlaceAnchor( const TOOL_EVENT& aEvent )
|
int LIB_DRAWING_TOOLS::PlaceAnchor( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
m_frame->SetToolID( ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxCURSOR_PENCIL, _( "Move symbol anchor" ) );
|
m_frame->SetToolID( ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxCURSOR_PENCIL, _( "Move symbol anchor" ) );
|
||||||
|
@ -339,9 +460,9 @@ void LIB_DRAWING_TOOLS::setTransitions()
|
||||||
{
|
{
|
||||||
Go( &LIB_DRAWING_TOOLS::PlacePin, SCH_ACTIONS::placeSymbolPin.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::PlacePin, SCH_ACTIONS::placeSymbolPin.MakeEvent() );
|
||||||
Go( &LIB_DRAWING_TOOLS::PlaceText, SCH_ACTIONS::placeSymbolText.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::PlaceText, SCH_ACTIONS::placeSymbolText.MakeEvent() );
|
||||||
// Go( &LIB_DRAWING_TOOLS::DrawRectangle, SCH_ACTIONS::drawSymbolRectangle.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::DrawShape, SCH_ACTIONS::drawSymbolRectangle.MakeEvent() );
|
||||||
// Go( &LIB_DRAWING_TOOLS::DrawCircle, SCH_ACTIONS::drawSymbolCircle.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::DrawShape, SCH_ACTIONS::drawSymbolCircle.MakeEvent() );
|
||||||
// Go( &LIB_DRAWING_TOOLS::DrawArc, SCH_ACTIONS::drawSymbolArc.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::DrawShape, SCH_ACTIONS::drawSymbolArc.MakeEvent() );
|
||||||
// Go( &LIB_DRAWING_TOOLS::DrawLines, SCH_ACTIONS::drawSymbolLines.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::DrawShape, SCH_ACTIONS::drawSymbolLines.MakeEvent() );
|
||||||
Go( &LIB_DRAWING_TOOLS::PlaceAnchor, SCH_ACTIONS::placeSymbolAnchor.MakeEvent() );
|
Go( &LIB_DRAWING_TOOLS::PlaceAnchor, SCH_ACTIONS::placeSymbolAnchor.MakeEvent() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,20 +57,13 @@ public:
|
||||||
|
|
||||||
int PlacePin( const TOOL_EVENT& aEvent );
|
int PlacePin( const TOOL_EVENT& aEvent );
|
||||||
int PlaceText( const TOOL_EVENT& aEvent );
|
int PlaceText( const TOOL_EVENT& aEvent );
|
||||||
int DrawRectangle( const TOOL_EVENT& aEvent );
|
int DrawShape( const TOOL_EVENT& aEvent );
|
||||||
int DrawCircle( const TOOL_EVENT& aEvent );
|
|
||||||
int DrawArc( const TOOL_EVENT& aEvent );
|
|
||||||
int DrawLines( const TOOL_EVENT& aEvent );
|
|
||||||
int PlaceAnchor( const TOOL_EVENT& aEvent );
|
int PlaceAnchor( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void createPin();
|
|
||||||
|
|
||||||
int doTwoClickPlace( KICAD_T aType );
|
int doTwoClickPlace( KICAD_T aType );
|
||||||
|
|
||||||
int doSingleClickPlace( KICAD_T aType );
|
|
||||||
|
|
||||||
///> Sets up handlers for various events.
|
///> Sets up handlers for various events.
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
||||||
|
|
|
@ -222,6 +222,18 @@ OPT<TOOL_EVENT> SCH_ACTIONS::TranslateLegacyId( int aId )
|
||||||
|
|
||||||
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
||||||
return SCH_ACTIONS::placeSymbolAnchor.MakeEvent();
|
return SCH_ACTIONS::placeSymbolAnchor.MakeEvent();
|
||||||
|
|
||||||
|
case ID_LIBEDIT_BODY_ARC_BUTT:
|
||||||
|
return SCH_ACTIONS::drawSymbolArc.MakeEvent();
|
||||||
|
|
||||||
|
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||||
|
return SCH_ACTIONS::drawSymbolCircle.MakeEvent();
|
||||||
|
|
||||||
|
case ID_LIBEDIT_BODY_LINE_BUTT:
|
||||||
|
return SCH_ACTIONS::drawSymbolLines.MakeEvent();
|
||||||
|
|
||||||
|
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||||
|
return SCH_ACTIONS::drawSymbolRectangle.MakeEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
return OPT<TOOL_EVENT>();
|
return OPT<TOOL_EVENT>();
|
||||||
|
|
|
@ -111,6 +111,7 @@ public:
|
||||||
static TOOL_ACTION drawSymbolArc;
|
static TOOL_ACTION drawSymbolArc;
|
||||||
static TOOL_ACTION drawSymbolLines;
|
static TOOL_ACTION drawSymbolLines;
|
||||||
static TOOL_ACTION placeSymbolAnchor;
|
static TOOL_ACTION placeSymbolAnchor;
|
||||||
|
static TOOL_ACTION finishDrawing;
|
||||||
|
|
||||||
// Editing
|
// Editing
|
||||||
static TOOL_ACTION move;
|
static TOOL_ACTION move;
|
||||||
|
|
|
@ -161,10 +161,6 @@ bool SCH_DRAWING_TOOLS::Init()
|
||||||
m_frame = getEditFrame<SCH_EDIT_FRAME>();
|
m_frame = getEditFrame<SCH_EDIT_FRAME>();
|
||||||
m_selectionTool = m_toolMgr->GetTool<SCH_SELECTION_TOOL>();
|
m_selectionTool = m_toolMgr->GetTool<SCH_SELECTION_TOOL>();
|
||||||
|
|
||||||
auto activeTool = [ this ] ( const SELECTION& aSel ) {
|
|
||||||
return ( m_frame->GetToolId() != ID_NO_TOOL_SELECTED );
|
|
||||||
};
|
|
||||||
|
|
||||||
auto belowRootSheetCondition = [] ( const SELECTION& aSel ) {
|
auto belowRootSheetCondition = [] ( const SELECTION& aSel ) {
|
||||||
return g_CurrentSheet->Last() != g_RootSheet;
|
return g_CurrentSheet->Last() != g_RootSheet;
|
||||||
};
|
};
|
||||||
|
@ -174,10 +170,10 @@ bool SCH_DRAWING_TOOLS::Init()
|
||||||
//
|
//
|
||||||
// Build the drawing tool menu
|
// Build the drawing tool menu
|
||||||
//
|
//
|
||||||
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeTool, 1 );
|
ctxMenu.AddItem( ACTIONS::cancelInteractive, SCH_CONDITIONS::ShowAlways, 1 );
|
||||||
ctxMenu.AddItem( SCH_ACTIONS::leaveSheet, belowRootSheetCondition, 1 );
|
ctxMenu.AddItem( SCH_ACTIONS::leaveSheet, belowRootSheetCondition, 2 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( activeTool, 1000 );
|
ctxMenu.AddSeparator( SCH_CONDITIONS::ShowAlways, 1000 );
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_menu.AddStandardSubMenus( m_frame );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -359,7 +355,8 @@ int SCH_DRAWING_TOOLS::doPlaceComponent( SCH_COMPONENT* aComponent, SCHLIB_FILTE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( aComponent && ( evt->IsAction( &SCH_ACTIONS::refreshPreview ) || evt->IsMotion() ) )
|
else if( aComponent && ( evt->IsAction( &SCH_ACTIONS::refreshPreview )
|
||||||
|
|| evt->IsMotion() ) )
|
||||||
{
|
{
|
||||||
aComponent->SetPosition( (wxPoint)cursorPos );
|
aComponent->SetPosition( (wxPoint)cursorPos );
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
|
@ -476,7 +473,8 @@ int SCH_DRAWING_TOOLS::PlaceImage( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_menu.ShowContextMenu( m_selectionTool->GetSelection() );
|
m_menu.ShowContextMenu( m_selectionTool->GetSelection() );
|
||||||
}
|
}
|
||||||
else if( image && ( evt->IsAction( &SCH_ACTIONS::refreshPreview ) || evt->IsMotion() ) )
|
else if( image && ( evt->IsAction( &SCH_ACTIONS::refreshPreview )
|
||||||
|
|| evt->IsMotion() ) )
|
||||||
{
|
{
|
||||||
image->SetPosition( (wxPoint)cursorPos );
|
image->SetPosition( (wxPoint)cursorPos );
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
|
@ -747,7 +745,8 @@ int SCH_DRAWING_TOOLS::doTwoClickPlace( KICAD_T aType )
|
||||||
else
|
else
|
||||||
item = nullptr;
|
item = nullptr;
|
||||||
}
|
}
|
||||||
else if( item && ( evt->IsAction( &SCH_ACTIONS::refreshPreview ) || evt->IsMotion() ) )
|
else if( item && ( evt->IsAction( &SCH_ACTIONS::refreshPreview )
|
||||||
|
|| evt->IsMotion() ) )
|
||||||
{
|
{
|
||||||
static_cast<SCH_ITEM*>( item )->SetPosition( (wxPoint)cursorPos );
|
static_cast<SCH_ITEM*>( item )->SetPosition( (wxPoint)cursorPos );
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
|
@ -834,57 +833,56 @@ int SCH_DRAWING_TOOLS::doDrawSheet( SCH_SHEET *aSheet )
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if( evt->IsClick( BUT_LEFT ) || evt->IsAction( &SCH_ACTIONS::finishSheet ) )
|
|
||||||
|
else if( evt->IsClick( BUT_LEFT ) && !aSheet )
|
||||||
{
|
{
|
||||||
if( !aSheet && !evt->IsAction( &SCH_ACTIONS::finishSheet ) )
|
aSheet = new SCH_SHEET( (wxPoint) cursorPos );
|
||||||
{
|
aSheet->SetFlags( IS_NEW | IS_RESIZED );
|
||||||
aSheet = new SCH_SHEET( (wxPoint) cursorPos );
|
aSheet->SetTimeStamp( GetNewTimeStamp() );
|
||||||
aSheet->SetFlags( IS_NEW | IS_RESIZED );
|
aSheet->SetParent( m_frame->GetScreen() );
|
||||||
aSheet->SetTimeStamp( GetNewTimeStamp() );
|
aSheet->SetScreen( NULL );
|
||||||
aSheet->SetParent( m_frame->GetScreen() );
|
sizeSheet( aSheet, cursorPos );
|
||||||
aSheet->SetScreen( NULL );
|
|
||||||
sizeSheet( aSheet, cursorPos );
|
|
||||||
|
|
||||||
m_frame->SetRepeatItem( nullptr );
|
m_frame->SetRepeatItem( nullptr );
|
||||||
|
|
||||||
m_selectionTool->AddItemToSel( aSheet );
|
m_selectionTool->AddItemToSel( aSheet );
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
m_view->AddToPreview( aSheet->Clone() );
|
m_view->AddToPreview( aSheet->Clone() );
|
||||||
}
|
|
||||||
else if( aSheet )
|
|
||||||
{
|
|
||||||
m_view->ClearPreview();
|
|
||||||
|
|
||||||
if( aSheet->IsNew() )
|
|
||||||
{
|
|
||||||
if( m_frame->EditSheet( (SCH_SHEET*)aSheet, g_CurrentSheet, nullptr ) )
|
|
||||||
m_frame->AddItemToScreenAndUndoList( aSheet );
|
|
||||||
else
|
|
||||||
delete aSheet;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_view->Hide( aSheet, false );
|
|
||||||
m_frame->RefreshItem( aSheet );
|
|
||||||
m_frame->OnModify();
|
|
||||||
}
|
|
||||||
|
|
||||||
aSheet = nullptr;
|
|
||||||
|
|
||||||
if( m_frame->GetToolId() == ID_SCH_RESIZE_SHEET )
|
|
||||||
break; // resize sheet is a single-shot command; when we're done we're done
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( evt->IsMotion() )
|
|
||||||
|
else if( aSheet && ( evt->IsClick( BUT_LEFT )
|
||||||
|
|| evt->IsAction( &SCH_ACTIONS::finishSheet ) ) )
|
||||||
{
|
{
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
|
|
||||||
if( aSheet )
|
if( aSheet->IsNew() )
|
||||||
{
|
{
|
||||||
sizeSheet( aSheet, cursorPos );
|
if( m_frame->EditSheet( (SCH_SHEET*)aSheet, g_CurrentSheet, nullptr ) )
|
||||||
m_view->AddToPreview( aSheet->Clone() );
|
m_frame->AddItemToScreenAndUndoList( aSheet );
|
||||||
|
else
|
||||||
|
delete aSheet;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_view->Hide( aSheet, false );
|
||||||
|
m_frame->RefreshItem( aSheet );
|
||||||
|
m_frame->OnModify();
|
||||||
|
}
|
||||||
|
|
||||||
|
aSheet = nullptr;
|
||||||
|
|
||||||
|
if( m_frame->GetToolId() == ID_SCH_RESIZE_SHEET )
|
||||||
|
break; // resize sheet is a single-shot command; when we're done we're done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if( aSheet && ( evt->IsAction( &SCH_ACTIONS::refreshPreview )
|
||||||
|
|| evt->IsMotion() ) )
|
||||||
|
{
|
||||||
|
sizeSheet( aSheet, cursorPos );
|
||||||
|
m_view->ClearPreview();
|
||||||
|
m_view->AddToPreview( aSheet->Clone() );
|
||||||
|
}
|
||||||
|
|
||||||
else if( evt->IsClick( BUT_RIGHT ) )
|
else if( evt->IsClick( BUT_RIGHT ) )
|
||||||
{
|
{
|
||||||
// Warp after context menu only if dragging...
|
// Warp after context menu only if dragging...
|
||||||
|
|
|
@ -137,10 +137,9 @@ bool SCH_EDITOR_CONTROL::Init()
|
||||||
auto& ctxMenu = m_menu.GetMenu();
|
auto& ctxMenu = m_menu.GetMenu();
|
||||||
|
|
||||||
// "Cancel" goes at the top of the context menu when a tool is active
|
// "Cancel" goes at the top of the context menu when a tool is active
|
||||||
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeToolCondition, 1000 );
|
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeToolCondition, 1 );
|
||||||
ctxMenu.AddSeparator( activeToolCondition, 1000 );
|
|
||||||
|
|
||||||
// Finally, add the standard zoom & grid items
|
ctxMenu.AddSeparator( activeToolCondition, 1000 );
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_menu.AddStandardSubMenus( m_frame );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -78,10 +78,6 @@ bool SCH_MOVE_TOOL::Init()
|
||||||
|
|
||||||
wxASSERT_MSG( m_selectionTool, "eeshema.InteractiveSelection tool is not available" );
|
wxASSERT_MSG( m_selectionTool, "eeshema.InteractiveSelection tool is not available" );
|
||||||
|
|
||||||
auto activeTool = [ this ] ( const SELECTION& aSel ) {
|
|
||||||
return ( m_frame->GetToolId() != ID_NO_TOOL_SELECTED );
|
|
||||||
};
|
|
||||||
|
|
||||||
auto moveCondition = [] ( const SELECTION& aSel ) {
|
auto moveCondition = [] ( const SELECTION& aSel ) {
|
||||||
if( aSel.Empty() )
|
if( aSel.Empty() )
|
||||||
return false;
|
return false;
|
||||||
|
@ -97,9 +93,9 @@ bool SCH_MOVE_TOOL::Init()
|
||||||
//
|
//
|
||||||
CONDITIONAL_MENU& ctxMenu = m_menu.GetMenu();
|
CONDITIONAL_MENU& ctxMenu = m_menu.GetMenu();
|
||||||
|
|
||||||
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeTool, 1 );
|
ctxMenu.AddItem( ACTIONS::cancelInteractive, SCH_CONDITIONS::ShowAlways, 1 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( SELECTION_CONDITIONS::NotEmpty, 1000 );
|
ctxMenu.AddSeparator( SCH_CONDITIONS::ShowAlways, 1000 );
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_menu.AddStandardSubMenus( m_frame );
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -233,7 +233,7 @@ bool SCH_WIRE_BUS_TOOL::Init()
|
||||||
// Build the tool menu
|
// Build the tool menu
|
||||||
//
|
//
|
||||||
ctxMenu.AddItem( ACTIONS::cancelInteractive, SCH_CONDITIONS::ShowAlways, 1 );
|
ctxMenu.AddItem( ACTIONS::cancelInteractive, SCH_CONDITIONS::ShowAlways, 1 );
|
||||||
ctxMenu.AddItem( SCH_ACTIONS::leaveSheet, belowRootSheetCondition, 1 );
|
ctxMenu.AddItem( SCH_ACTIONS::leaveSheet, belowRootSheetCondition, 2 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( SCH_CONDITIONS::ShowAlways, 10 );
|
ctxMenu.AddSeparator( SCH_CONDITIONS::ShowAlways, 10 );
|
||||||
ctxMenu.AddItem( SCH_ACTIONS::startWire, wireOrBusTool && SCH_CONDITIONS::Idle, 10 );
|
ctxMenu.AddItem( SCH_ACTIONS::startWire, wireOrBusTool && SCH_CONDITIONS::Idle, 10 );
|
||||||
|
|
Loading…
Reference in New Issue