merge from testing
This commit is contained in:
commit
2def9b3f7e
|
@ -4,6 +4,28 @@ KiCad ChangeLog 2010
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
2010-dec-21 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
|
||||||
|
================================================================================
|
||||||
|
++all
|
||||||
|
* Doxygen comment warning fixes.
|
||||||
|
* Coding policy fixes.
|
||||||
|
++common
|
||||||
|
* Add clone method to EDA_ITEM object.
|
||||||
|
++EESchema
|
||||||
|
* Replace GenCopy() method with Clone() in all items derived from SCH_ITEM.
|
||||||
|
* Simplify repeat last schematic item with new Clone() method.
|
||||||
|
* Simplify duplicate schematic item method with new Clone() method.
|
||||||
|
* Separate objects in sch_items.h/cpp into separate files per object.
|
||||||
|
|
||||||
|
|
||||||
|
2010-dec-20, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
||||||
|
================================================================================
|
||||||
|
common:
|
||||||
|
Rename EDA_Rect::Inside to EDA_Rect::Contains
|
||||||
|
( EDA_Rect::Inside( const EDA_Rect& aRect ) was very ambiguous )
|
||||||
|
Fix some Doxygen warnings and erroneous comments
|
||||||
|
|
||||||
|
|
||||||
2010-Dec-19 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2010-Dec-19 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
================================================================================
|
================================================================================
|
||||||
++new:
|
++new:
|
||||||
|
|
|
@ -37,6 +37,7 @@ EDA_ITEM::EDA_ITEM( KICAD_T idType )
|
||||||
|
|
||||||
EDA_ITEM::EDA_ITEM( const EDA_ITEM& base )
|
EDA_ITEM::EDA_ITEM( const EDA_ITEM& base )
|
||||||
{
|
{
|
||||||
|
InitVars();
|
||||||
m_StructType = base.m_StructType;
|
m_StructType = base.m_StructType;
|
||||||
m_Parent = base.m_Parent;
|
m_Parent = base.m_Parent;
|
||||||
m_Son = base.m_Son;
|
m_Son = base.m_Son;
|
||||||
|
@ -73,6 +74,13 @@ void EDA_ITEM::SetModified()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_ITEM* EDA_ITEM::doClone() const
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( false, NULL, wxT( "doClone not implemented in derived class " ) + GetClass() +
|
||||||
|
wxT( ". Bad programmer." ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// see base_struct.h
|
// see base_struct.h
|
||||||
SEARCH_RESULT EDA_ITEM::IterateForward( EDA_ITEM* listStart,
|
SEARCH_RESULT EDA_ITEM::IterateForward( EDA_ITEM* listStart,
|
||||||
INSPECTOR* inspector,
|
INSPECTOR* inspector,
|
||||||
|
@ -117,9 +125,9 @@ SEARCH_RESULT EDA_ITEM::Visit( INSPECTOR* inspector, const void* testData,
|
||||||
return SEARCH_CONTINUE;
|
return SEARCH_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
|
|
||||||
|
|
||||||
// A function that should have been in wxWidgets
|
// A function that should have been in wxWidgets
|
||||||
std::ostream& operator<<( std::ostream& out, const wxSize& size )
|
std::ostream& operator<<( std::ostream& out, const wxSize& size )
|
||||||
{
|
{
|
||||||
|
@ -136,13 +144,6 @@ std::ostream& operator<<( std::ostream& out, const wxPoint& pt )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Show
|
|
||||||
* is used to output the object tree, currently for debugging only.
|
|
||||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
|
||||||
* of nesting of this object within the overall tree.
|
|
||||||
* @param os The ostream& to output to.
|
|
||||||
*/
|
|
||||||
void EDA_ITEM::Show( int nestLevel, std::ostream& os ) const
|
void EDA_ITEM::Show( int nestLevel, std::ostream& os ) const
|
||||||
{
|
{
|
||||||
// XML output:
|
// XML output:
|
||||||
|
@ -154,13 +155,6 @@ void EDA_ITEM::Show( int nestLevel, std::ostream& os ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function NestedSpace
|
|
||||||
* outputs nested space for pretty indenting.
|
|
||||||
* @param nestLevel The nest count
|
|
||||||
* @param os The ostream&, where to output
|
|
||||||
* @return std::ostream& - for continuation.
|
|
||||||
**/
|
|
||||||
std::ostream& EDA_ITEM::NestedSpace( int nestLevel, std::ostream& os )
|
std::ostream& EDA_ITEM::NestedSpace( int nestLevel, std::ostream& os )
|
||||||
{
|
{
|
||||||
for( int i = 0; i<nestLevel; ++i )
|
for( int i = 0; i<nestLevel; ++i )
|
||||||
|
@ -180,31 +174,42 @@ std::ostream& EDA_ITEM::NestedSpace( int nestLevel, std::ostream& os )
|
||||||
/**************************************************/
|
/**************************************************/
|
||||||
EDA_TextStruct::EDA_TextStruct( const wxString& text )
|
EDA_TextStruct::EDA_TextStruct( const wxString& text )
|
||||||
{
|
{
|
||||||
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT; /* XY size of font */
|
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT; // Width and height of font.
|
||||||
m_Orient = 0; /* Orient in 0.1 degrees */
|
m_Orient = 0; // Rotation angle in 0.1 degrees.
|
||||||
m_Attributs = 0;
|
m_Attributs = 0;
|
||||||
m_Mirror = false; // display mirror if true
|
m_Mirror = false; // display mirror if true
|
||||||
m_HJustify = GR_TEXT_HJUSTIFY_CENTER;
|
m_HJustify = GR_TEXT_HJUSTIFY_CENTER; // Defualt horizontal justification is centered.
|
||||||
m_VJustify = GR_TEXT_VJUSTIFY_CENTER; /* Justifications Horiz et Vert du texte */
|
m_VJustify = GR_TEXT_VJUSTIFY_CENTER; // Defualt vertical justification is centered.
|
||||||
m_Thickness = 0; /* thickness */
|
m_Thickness = 0; // thickness
|
||||||
m_Italic = false; /* true = italic shape */
|
m_Italic = false; // true = italic shape.
|
||||||
m_Bold = false;
|
m_Bold = false;
|
||||||
m_MultilineAllowed = false; // Set to true only for texts that can use multiline.
|
m_MultilineAllowed = false; // Set to true for multiline text.
|
||||||
m_Text = text;
|
m_Text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_TextStruct::EDA_TextStruct( const EDA_TextStruct& aText )
|
||||||
|
{
|
||||||
|
m_Pos = aText.m_Pos;
|
||||||
|
m_Size = aText.m_Size;
|
||||||
|
m_Orient = aText.m_Orient;
|
||||||
|
m_Attributs = aText.m_Attributs;
|
||||||
|
m_Mirror = aText.m_Mirror;
|
||||||
|
m_HJustify = aText.m_HJustify;
|
||||||
|
m_VJustify = aText.m_VJustify;
|
||||||
|
m_Thickness = aText.m_Thickness;
|
||||||
|
m_Italic = aText.m_Italic;
|
||||||
|
m_Bold = aText.m_Bold;
|
||||||
|
m_MultilineAllowed = aText.m_MultilineAllowed;
|
||||||
|
m_Text = aText.m_Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_TextStruct::~EDA_TextStruct()
|
EDA_TextStruct::~EDA_TextStruct()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function LenSize
|
|
||||||
* @return the text lenght in internal units
|
|
||||||
* @param aLine : the line of text to consider.
|
|
||||||
* For single line text, this parameter is always m_Text
|
|
||||||
*/
|
|
||||||
int EDA_TextStruct::LenSize( const wxString& aLine ) const
|
int EDA_TextStruct::LenSize( const wxString& aLine ) const
|
||||||
{
|
{
|
||||||
return ReturnGraphicTextWidth(aLine, m_Size.x, m_Italic, m_Bold ) + m_Thickness;
|
return ReturnGraphicTextWidth(aLine, m_Size.x, m_Italic, m_Bold ) + m_Thickness;
|
||||||
|
@ -315,7 +320,7 @@ bool EDA_TextStruct::TextHitTest( const wxPoint& aPoint, int aAccuracy ) const
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
RotatePoint( &location, m_Pos, -m_Orient );
|
RotatePoint( &location, m_Pos, -m_Orient );
|
||||||
|
|
||||||
return rect.Inside( location );
|
return rect.Contains( location );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -326,31 +331,15 @@ bool EDA_TextStruct::TextHitTest( const EDA_Rect& aRect, bool aContains, int aAc
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContains )
|
if( aContains )
|
||||||
return rect.Inside( GetTextBox( -1 ) );
|
return rect.Contains( GetTextBox( -1 ) );
|
||||||
|
|
||||||
return rect.Intersects( GetTextBox( -1 ) );
|
return rect.Intersects( GetTextBox( -1 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************/
|
void EDA_TextStruct::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
void EDA_TextStruct::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
EDA_Colors aColor, int aDrawMode,
|
||||||
const wxPoint& aOffset, EDA_Colors aColor,
|
|
||||||
int aDrawMode,
|
|
||||||
GRTraceMode aFillMode, EDA_Colors aAnchor_color )
|
GRTraceMode aFillMode, EDA_Colors aAnchor_color )
|
||||||
/***************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Draw
|
|
||||||
* Draws this, that can be a multiline text
|
|
||||||
* @param aPanel = the current DrawPanel
|
|
||||||
* @param aDC = the current Device Context
|
|
||||||
* @param aOffset = draw offset (usually (0,0))
|
|
||||||
* @param EDA_Colors aColor = text color
|
|
||||||
* @param aDrawMode = GR_OR, GR_XOR.., -1 to use the current mode.
|
|
||||||
* @param aFillMode = FILAIRE, FILLED or SKETCH
|
|
||||||
* @param EDA_Colors aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do not draw anchor ).
|
|
||||||
*/
|
|
||||||
|
|
||||||
{
|
{
|
||||||
if( m_MultilineAllowed )
|
if( m_MultilineAllowed )
|
||||||
{
|
{
|
||||||
|
@ -361,6 +350,7 @@ void EDA_TextStruct::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
offset.y = GetInterline();
|
offset.y = GetInterline();
|
||||||
|
|
||||||
RotatePoint( &offset, m_Orient );
|
RotatePoint( &offset, m_Orient );
|
||||||
|
|
||||||
for( unsigned i = 0; i<list->Count(); i++ )
|
for( unsigned i = 0; i<list->Count(); i++ )
|
||||||
{
|
{
|
||||||
wxString txt = list->Item( i );
|
wxString txt = list->Item( i );
|
||||||
|
@ -391,24 +381,10 @@ void EDA_TextStruct::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function DrawOneLineOfText
|
|
||||||
* Draw a single text line.
|
|
||||||
* Used to draw each line of this EDA_TextStruct, that can be multiline
|
|
||||||
* @param aPanel = the current DrawPanel
|
|
||||||
* @param aDC = the current Device Context
|
|
||||||
* @param aOffset = draw offset (usually (0,0))
|
|
||||||
* @param EDA_Colors aColor = text color
|
|
||||||
* @param aDrawMode = GR_OR, GR_XOR.., -1 to use the current mode.
|
|
||||||
* @param aFillMode = FILAIRE, FILLED or SKETCH
|
|
||||||
* @param EDA_Colors aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do not draw anchor ).
|
|
||||||
* @param EDA_Colors aText = the single line of text to draw.
|
|
||||||
* @param EDA_Colors aPos = the position of this line ).
|
|
||||||
*/
|
|
||||||
void EDA_TextStruct::DrawOneLineOfText( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
void EDA_TextStruct::DrawOneLineOfText( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
const wxPoint& aOffset, EDA_Colors aColor,
|
const wxPoint& aOffset, EDA_Colors aColor,
|
||||||
int aDrawMode,
|
int aDrawMode, GRTraceMode aFillMode,
|
||||||
GRTraceMode aFillMode, EDA_Colors aAnchor_color,
|
EDA_Colors aAnchor_color,
|
||||||
wxString& aText, wxPoint aPos )
|
wxString& aText, wxPoint aPos )
|
||||||
{
|
{
|
||||||
int width = m_Thickness;
|
int width = m_Thickness;
|
||||||
|
@ -449,23 +425,20 @@ void EDA_TextStruct::DrawOneLineOfText( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
if( m_Mirror )
|
if( m_Mirror )
|
||||||
size.x = -size.x;
|
size.x = -size.x;
|
||||||
|
|
||||||
DrawGraphicText( aPanel, aDC,
|
DrawGraphicText( aPanel, aDC, aOffset + aPos, aColor, aText, m_Orient, size,
|
||||||
aOffset + aPos, aColor, aText,
|
|
||||||
m_Orient, size,
|
|
||||||
m_HJustify, m_VJustify, width, m_Italic, m_Bold );
|
m_HJustify, m_VJustify, width, m_Italic, m_Bold );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetStyleName
|
|
||||||
* @return a wwString withe the style name( Normal, Italic, Bold, Bold+Italic)
|
|
||||||
*/
|
|
||||||
wxString EDA_TextStruct::GetTextStyleName()
|
wxString EDA_TextStruct::GetTextStyleName()
|
||||||
{
|
{
|
||||||
int style = 0;
|
int style = 0;
|
||||||
|
|
||||||
if( m_Italic )
|
if( m_Italic )
|
||||||
style = 1;
|
style = 1;
|
||||||
|
|
||||||
if( m_Bold )
|
if( m_Bold )
|
||||||
style += 2;
|
style += 2;
|
||||||
|
|
||||||
wxString stylemsg[4] = {
|
wxString stylemsg[4] = {
|
||||||
_("Normal"),
|
_("Normal"),
|
||||||
_("Italic"),
|
_("Italic"),
|
||||||
|
@ -481,17 +454,14 @@ wxString EDA_TextStruct::GetTextStyleName()
|
||||||
/* Class EDA_Rect */
|
/* Class EDA_Rect */
|
||||||
/******************/
|
/******************/
|
||||||
|
|
||||||
/******************************/
|
|
||||||
void EDA_Rect::Normalize()
|
void EDA_Rect::Normalize()
|
||||||
/******************************/
|
|
||||||
|
|
||||||
// Ensure the height ant width are >= 0
|
|
||||||
{
|
{
|
||||||
if( m_Size.y < 0 )
|
if( m_Size.y < 0 )
|
||||||
{
|
{
|
||||||
m_Size.y = -m_Size.y;
|
m_Size.y = -m_Size.y;
|
||||||
m_Pos.y -= m_Size.y;
|
m_Pos.y -= m_Size.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_Size.x < 0 )
|
if( m_Size.x < 0 )
|
||||||
{
|
{
|
||||||
m_Size.x = -m_Size.x;
|
m_Size.x = -m_Size.x;
|
||||||
|
@ -500,63 +470,65 @@ void EDA_Rect::Normalize()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Move
|
|
||||||
* Move this rectangle by the aMoveVector value (this is a relative move)
|
|
||||||
* @param aMoveVector = a wxPoint that is the value to move this rectangle
|
|
||||||
*/
|
|
||||||
void EDA_Rect::Move( const wxPoint& aMoveVector )
|
void EDA_Rect::Move( const wxPoint& aMoveVector )
|
||||||
{
|
{
|
||||||
m_Pos += aMoveVector;
|
m_Pos += aMoveVector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if point is in Rect
|
bool EDA_Rect::Contains( const wxPoint& aPoint ) const
|
||||||
* Accept rect size < 0
|
|
||||||
*/
|
|
||||||
bool EDA_Rect::Inside( const wxPoint& point ) const
|
|
||||||
{
|
{
|
||||||
int rel_posx = point.x - m_Pos.x;
|
wxPoint rel_pos = aPoint - m_Pos;
|
||||||
int rel_posy = point.y - m_Pos.y;
|
|
||||||
wxSize size = m_Size;
|
wxSize size = m_Size;
|
||||||
|
|
||||||
if( size.x < 0 )
|
if( size.x < 0 )
|
||||||
{
|
{
|
||||||
size.x = -size.x;
|
size.x = -size.x;
|
||||||
rel_posx += size.x;
|
rel_pos.x += size.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( size.y < 0 )
|
if( size.y < 0 )
|
||||||
{
|
{
|
||||||
size.y = -size.y;
|
size.y = -size.y;
|
||||||
rel_posy += size.y;
|
rel_pos.y += size.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (rel_posx >= 0) && (rel_posy >= 0) && ( rel_posy <= size.y) && ( rel_posx <= size.x);
|
return (rel_pos.x >= 0) && (rel_pos.y >= 0) && ( rel_pos.y <= size.y) && ( rel_pos.x <= size.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
bool EDA_Rect::Inside( const EDA_Rect& aRect ) const
|
* return true if aRect is inside me (or on boundaries)
|
||||||
|
*/
|
||||||
|
bool EDA_Rect::Contains( const EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
wxRect rect = aRect;
|
return Contains( aRect.GetOrigin() ) && Contains( aRect.GetEnd() );
|
||||||
wxRect me = wxRect();
|
|
||||||
|
|
||||||
return me.Contains( rect );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool EDA_Rect::Intersects( const EDA_Rect aRect ) const
|
/* Intersects
|
||||||
|
* test for a common area between 2 rect.
|
||||||
|
* return true if at least a common point is found
|
||||||
|
*/
|
||||||
|
bool EDA_Rect::Intersects( const EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
// this logic taken from wxWidgets' geometry.cpp file:
|
// this logic taken from wxWidgets' geometry.cpp file:
|
||||||
bool rc;
|
bool rc;
|
||||||
|
EDA_Rect me(*this);
|
||||||
|
EDA_Rect rect(aRect);
|
||||||
|
me.Normalize(); // ensure size is >= 0
|
||||||
|
rect.Normalize(); // ensure size is >= 0
|
||||||
|
|
||||||
int left = MAX( m_Pos.x, aRect.m_Pos.x );
|
// calculate the left common area coordinate:
|
||||||
int right = MIN( m_Pos.x + m_Size.x, aRect.m_Pos.x + aRect.m_Size.x );
|
int left = MAX( me.m_Pos.x, rect.m_Pos.x );
|
||||||
int top = MAX( m_Pos.y, aRect.m_Pos.y );
|
// calculate the right common area coordinate:
|
||||||
int bottom = MIN( m_Pos.y + m_Size.y, aRect.m_Pos.y + aRect.m_Size.y );
|
int right = MIN( me.m_Pos.x + m_Size.x, rect.m_Pos.x + rect.m_Size.x );
|
||||||
|
// calculate the upper common area coordinate:
|
||||||
|
int top = MAX( me.m_Pos.y, aRect.m_Pos.y );
|
||||||
|
// calculate the lower common area coordinate:
|
||||||
|
int bottom = MIN( me.m_Pos.y + m_Size.y, rect.m_Pos.y + rect.m_Size.y );
|
||||||
|
|
||||||
if( left < right && top < bottom )
|
// if a common area exists, it must have a positive (null accepted) size
|
||||||
|
if( left <= right && top <= bottom )
|
||||||
rc = true;
|
rc = true;
|
||||||
else
|
else
|
||||||
rc = false;
|
rc = false;
|
||||||
|
@ -565,35 +537,14 @@ bool EDA_Rect::Intersects( const EDA_Rect aRect ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************/
|
|
||||||
EDA_Rect& EDA_Rect::Inflate( int aDelta )
|
EDA_Rect& EDA_Rect::Inflate( int aDelta )
|
||||||
/**************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Inflate
|
|
||||||
* Inflate "this": move each horizontal edgeand each vertical edge by aDelta
|
|
||||||
* toward rect outside
|
|
||||||
* if aDelta is negative, move toward rect inside (deflate)
|
|
||||||
* Works for positive and negative rect size
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
Inflate( aDelta, aDelta );
|
Inflate( aDelta, aDelta );
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************/
|
|
||||||
EDA_Rect& EDA_Rect::Inflate( wxCoord dx, wxCoord dy )
|
|
||||||
/**************************************************/
|
|
||||||
|
|
||||||
/**
|
EDA_Rect& EDA_Rect::Inflate( wxCoord dx, wxCoord dy )
|
||||||
* Function Inflate
|
|
||||||
* Inflate "this": move each horizontal edge by dx and each vertical edge by dy
|
|
||||||
* toward rect outside
|
|
||||||
* if dx and/or dy is negative, move toward rect inside (deflate)
|
|
||||||
* Works for positive and negative rect size
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
if( m_Size.x >= 0 )
|
if( m_Size.x >= 0 )
|
||||||
{
|
{
|
||||||
|
@ -626,7 +577,6 @@ EDA_Rect& EDA_Rect::Inflate( wxCoord dx, wxCoord dy )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( m_Size.y >= 0 )
|
if( m_Size.y >= 0 )
|
||||||
{
|
{
|
||||||
if( m_Size.y < -2 * dy )
|
if( m_Size.y < -2 * dy )
|
||||||
|
@ -662,12 +612,6 @@ EDA_Rect& EDA_Rect::Inflate( wxCoord dx, wxCoord dy )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Merge
|
|
||||||
* modifies Position and Size of this in order to contain the given rect
|
|
||||||
* mainly used to calculate bounding boxes
|
|
||||||
* @param aRect = given rect to merge with this
|
|
||||||
*/
|
|
||||||
void EDA_Rect::Merge( const EDA_Rect& aRect )
|
void EDA_Rect::Merge( const EDA_Rect& aRect )
|
||||||
{
|
{
|
||||||
Normalize(); // ensure width and height >= 0
|
Normalize(); // ensure width and height >= 0
|
||||||
|
@ -684,12 +628,7 @@ void EDA_Rect::Merge( const EDA_Rect& aRect )
|
||||||
SetEnd( end );
|
SetEnd( end );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Merge
|
|
||||||
* modifies Position and Size of this in order to contain the given point
|
|
||||||
* mainly used to calculate bounding boxes
|
|
||||||
* @param aPoint = given point to merge with this
|
|
||||||
*/
|
|
||||||
void EDA_Rect::Merge( const wxPoint& aPoint )
|
void EDA_Rect::Merge( const wxPoint& aPoint )
|
||||||
{
|
{
|
||||||
Normalize(); // ensure width and height >= 0
|
Normalize(); // ensure width and height >= 0
|
||||||
|
|
|
@ -282,7 +282,7 @@ void WinEDA_BasicFrame::GetKicadHelp( wxCommandEvent& event )
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void WinEDA_BasicFrame::GetKicadAbout( wxCommandEvent& WXUNUSED(event) )
|
void WinEDA_BasicFrame::GetKicadAbout( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
bool ShowAboutDialog(wxWindow * parent);
|
bool ShowAboutDialog(wxWindow * parent);
|
||||||
ShowAboutDialog(this);
|
ShowAboutDialog(this);
|
||||||
|
@ -364,7 +364,7 @@ static inline const char* KICAD_BUILD_OPTIONS_SIGNATURE()
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void WinEDA_BasicFrame::CopyVersionInfoToClipboard( wxCommandEvent& WXUNUSED( event ) )
|
void WinEDA_BasicFrame::CopyVersionInfoToClipboard( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
if( !wxTheClipboard->Open() )
|
if( !wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef KICAD_BUILD_VERSION
|
#ifndef KICAD_BUILD_VERSION
|
||||||
#define KICAD_BUILD_VERSION "(2010-12-18 BZR 26xx)"
|
#define KICAD_BUILD_VERSION "(2010-12-22 BZR 2676)"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#define VERSION_STABILITY "stable"
|
//#define VERSION_STABILITY "stable"
|
||||||
|
|
|
@ -59,6 +59,17 @@ void MARKER_BASE::init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MARKER_BASE::MARKER_BASE( const MARKER_BASE& aMarker )
|
||||||
|
{
|
||||||
|
m_Pos = aMarker.m_Pos;
|
||||||
|
m_Corners = aMarker.m_Corners;
|
||||||
|
m_MarkerType = aMarker.m_MarkerType;
|
||||||
|
m_Color = aMarker.m_Color;
|
||||||
|
m_ShapeBoundingBox = aMarker.m_ShapeBoundingBox;
|
||||||
|
m_ScalingFactor = aMarker.m_ScalingFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MARKER_BASE::MARKER_BASE()
|
MARKER_BASE::MARKER_BASE()
|
||||||
{
|
{
|
||||||
m_ScalingFactor = M_SHAPE_SCALE;
|
m_ScalingFactor = M_SHAPE_SCALE;
|
||||||
|
@ -118,17 +129,10 @@ bool MARKER_BASE::HitTestMarker( const wxPoint& refPos ) const
|
||||||
rel_pos.x /= m_ScalingFactor;
|
rel_pos.x /= m_ScalingFactor;
|
||||||
rel_pos.y /= m_ScalingFactor;
|
rel_pos.y /= m_ScalingFactor;
|
||||||
|
|
||||||
return m_ShapeBoundingBox.Inside( rel_pos );
|
return m_ShapeBoundingBox.Contains( rel_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetBoundingBoxMarker
|
|
||||||
* returns the orthogonal, bounding box of this object for display purposes.
|
|
||||||
* This box should be an enclosing perimeter for visible components of this
|
|
||||||
* object, and the units should be in the pcb or schematic coordinate system.
|
|
||||||
* It is OK to overestimate the size by a few counts.
|
|
||||||
*/
|
|
||||||
EDA_Rect MARKER_BASE::GetBoundingBoxMarker() const
|
EDA_Rect MARKER_BASE::GetBoundingBoxMarker() const
|
||||||
{
|
{
|
||||||
wxSize realsize = m_ShapeBoundingBox.GetSize();
|
wxSize realsize = m_ShapeBoundingBox.GetSize();
|
||||||
|
@ -141,15 +145,8 @@ EDA_Rect MARKER_BASE::GetBoundingBoxMarker() const
|
||||||
return EDA_Rect( m_Pos, realsize );
|
return EDA_Rect( m_Pos, realsize );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
void MARKER_BASE::DrawMarker( WinEDA_DrawPanel* aPanel, wxDC* aDC, int aDrawMode,
|
void MARKER_BASE::DrawMarker( WinEDA_DrawPanel* aPanel, wxDC* aDC, int aDrawMode,
|
||||||
const wxPoint& aOffset )
|
const wxPoint& aOffset )
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function DrawMarker
|
|
||||||
* The shape is the polygon defined in m_Corners (array of wxPoints)
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
wxPoint corners[CORNERS_COUNT];
|
wxPoint corners[CORNERS_COUNT];
|
||||||
|
|
||||||
|
@ -172,15 +169,10 @@ void MARKER_BASE::DrawMarker( WinEDA_DrawPanel* aPanel, wxDC* aDC, int aDrawMode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function DisplayMarkerInfo
|
|
||||||
* Displays the full info of this marker, within an HTML window
|
|
||||||
*/
|
|
||||||
void MARKER_BASE::DisplayMarkerInfo( WinEDA_DrawFrame* aFrame )
|
void MARKER_BASE::DisplayMarkerInfo( WinEDA_DrawFrame* aFrame )
|
||||||
{
|
{
|
||||||
wxString msg = m_drc.ShowHtml();
|
wxString msg = m_drc.ShowHtml();
|
||||||
DIALOG_DISPLAY_HTML_TEXT_BASE
|
DIALOG_DISPLAY_HTML_TEXT_BASE infodisplay( (wxWindow*)aFrame, wxID_ANY, _( "Marker Info" ),
|
||||||
infodisplay( (wxWindow*)aFrame, wxID_ANY, _("Marker Info"),
|
|
||||||
wxGetMousePosition(), wxSize( 550, 140 ) );
|
wxGetMousePosition(), wxSize( 550, 140 ) );
|
||||||
|
|
||||||
infodisplay.m_htmlWindow->SetPage( msg );
|
infodisplay.m_htmlWindow->SetPage( msg );
|
||||||
|
|
|
@ -879,7 +879,7 @@ void wxSVGFileDC::DoDrawIcon( const class wxIcon& myIcon, wxCoord x, wxCoord y )
|
||||||
void wxSVGFileDC::DoDrawBitmap( const class wxBitmap& bmp,
|
void wxSVGFileDC::DoDrawBitmap( const class wxBitmap& bmp,
|
||||||
wxCoord x,
|
wxCoord x,
|
||||||
wxCoord y,
|
wxCoord y,
|
||||||
bool WXUNUSED ( bTransparent) /*=0*/ )
|
bool bTransparent /*=0*/ )
|
||||||
{
|
{
|
||||||
if( m_graphics_changed )
|
if( m_graphics_changed )
|
||||||
NewGraphics();
|
NewGraphics();
|
||||||
|
|
|
@ -251,7 +251,7 @@ bool WinEDA_DrawPanel::IsPointOnDisplay( wxPoint ref_pos )
|
||||||
GetScreen()->Unscale( display_rect.m_Size );
|
GetScreen()->Unscale( display_rect.m_Size );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return display_rect.Inside( ref_pos );
|
return display_rect.Contains( ref_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ int GRMapY( int y )
|
||||||
*/
|
*/
|
||||||
static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
||||||
{
|
{
|
||||||
if( aClipBox->Inside( x1, y1 ) && aClipBox->Inside( x2, y2 ) )
|
if( aClipBox->Contains( x1, y1 ) && aClipBox->Contains( x2, y2 ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
wxRect rect = *aClipBox;
|
wxRect rect = *aClipBox;
|
||||||
|
@ -206,7 +206,7 @@ static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
||||||
tmpY2 = y2;
|
tmpY2 = y2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( aClipBox->Inside( x1, y1 ) )
|
if( aClipBox->Contains( x1, y1 ) )
|
||||||
{
|
{
|
||||||
if( x1 == x2 ) /* Vertical line, clip Y. */
|
if( x1 == x2 ) /* Vertical line, clip Y. */
|
||||||
{
|
{
|
||||||
|
@ -263,7 +263,7 @@ static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if( aClipBox->Inside( x2, y2 ) )
|
else if( aClipBox->Contains( x2, y2 ) )
|
||||||
{
|
{
|
||||||
if( x1 == x2 ) /* Vertical line, clip Y. */
|
if( x1 == x2 ) /* Vertical line, clip Y. */
|
||||||
{
|
{
|
||||||
|
@ -704,7 +704,7 @@ void GRPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int Color )
|
||||||
|
|
||||||
void GRSPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int Color )
|
void GRSPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int Color )
|
||||||
{
|
{
|
||||||
if( ClipBox && !ClipBox->Inside( x, y ) )
|
if( ClipBox && !ClipBox->Contains( x, y ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GRSetColorPen( DC, Color );
|
GRSetColorPen( DC, Color );
|
||||||
|
|
|
@ -170,15 +170,14 @@ wxString ReturnKeyNameFromKeyCode( int aKeycode, bool* aIsFound )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* AddHotkeyName
|
||||||
* Function AddHotkeyName
|
|
||||||
* Add the key name from the Command id value ( m_Idcommand member value)
|
* Add the key name from the Command id value ( m_Idcommand member value)
|
||||||
* @param aText = a wxString. returns aText + key name
|
* aText = a wxString. returns aText + key name
|
||||||
* @param aList = pointer to a Ki_HotkeyInfo list of commands
|
* aList = pointer to a Ki_HotkeyInfo list of commands
|
||||||
* @param aCommandId = Command Id value
|
* aCommandId = Command Id value
|
||||||
* @param aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
* aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
||||||
* = false to add <spaces><(keyname)>
|
* = false to add <spaces><(keyname)>
|
||||||
* @return a wxString (aTest + key name) if key found or aText without modification
|
* Return a wxString (aTest + key name) if key found or aText without modification
|
||||||
*/
|
*/
|
||||||
wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
||||||
int aCommandId, bool aIsShortCut )
|
int aCommandId, bool aIsShortCut )
|
||||||
|
@ -200,15 +199,14 @@ wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* AddHotkeyName
|
||||||
* Function AddHotkeyName
|
|
||||||
* Add the key name from the Command id value ( m_Idcommand member value)
|
* Add the key name from the Command id value ( m_Idcommand member value)
|
||||||
* @param aText = a wxString. returns aText + key name
|
* aText = a wxString. returns aText + key name
|
||||||
* @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands
|
* aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands
|
||||||
* @param aCommandId = Command Id value
|
* aCommandId = Command Id value
|
||||||
* @param aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
* aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
||||||
* = false to add <spaces><(keyname)>
|
* = false to add <spaces><(keyname)>
|
||||||
* @return a wxString (aTest + key name) if key found or aText without modification
|
* Return a wxString (aText + key name) if key found or aText without modification
|
||||||
*/
|
*/
|
||||||
wxString AddHotkeyName( const wxString& aText,
|
wxString AddHotkeyName( const wxString& aText,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList,
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList,
|
||||||
|
@ -325,13 +323,9 @@ int ReturnKeyCodeFromKeyName( const wxString& keyname )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* DisplayHotkeyList
|
||||||
* Function DisplayHotkeyList
|
|
||||||
* Displays the current hotkey list
|
* Displays the current hotkey list
|
||||||
* @param aFrame = current active frame
|
* aList = a Ki_HotkeyInfoSectionDescriptor list(Null terminated)
|
||||||
* @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor list
|
|
||||||
*(Null terminated)
|
|
||||||
* @return none
|
|
||||||
*/
|
*/
|
||||||
void DisplayHotkeyList( WinEDA_DrawFrame* aFrame,
|
void DisplayHotkeyList( WinEDA_DrawFrame* aFrame,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
|
@ -478,7 +472,6 @@ int WinEDA_BasicFrame::ReadHotkeyConfigFile(
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ReadHotkeyConfig( const wxString& Appname,
|
void ReadHotkeyConfig( const wxString& Appname,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
{
|
{
|
||||||
|
@ -496,11 +489,9 @@ void ReadHotkeyConfig( const wxString& Appname,
|
||||||
ParseHotkeyConfig( data, aDescList );
|
ParseHotkeyConfig( data, aDescList );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Function ReadHotkeyConfig
|
||||||
/**
|
|
||||||
* Function ReadHotkeyConfig
|
|
||||||
* Read configuration data and fill the current hotkey list with hotkeys
|
* Read configuration data and fill the current hotkey list with hotkeys
|
||||||
* @param aDescList = current hotkey list descr. to initialise.
|
* aDescList is the current hotkey list descr. to initialise.
|
||||||
*/
|
*/
|
||||||
int WinEDA_BasicFrame::ReadHotkeyConfig( struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
int WinEDA_BasicFrame::ReadHotkeyConfig( struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
{
|
{
|
||||||
|
@ -509,16 +500,14 @@ int WinEDA_BasicFrame::ReadHotkeyConfig( struct Ki_HotkeyInfoSectionDescriptor*
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* Function ParseHotkeyConfig
|
||||||
* Function ParseHotkeyConfig
|
|
||||||
* the input format is: shortcut "key" "function"
|
* the input format is: shortcut "key" "function"
|
||||||
* lines starting by # are ignored (comments)
|
* lines starting by # are ignored (comments)
|
||||||
* lines like [xxx] are tags (example: [common] or [libedit] which identify
|
* lines like [xxx] are tags (example: [common] or [libedit] which identify sections
|
||||||
* sections
|
|
||||||
*/
|
*/
|
||||||
void ParseHotkeyConfig(
|
void ParseHotkeyConfig(
|
||||||
const wxString& data,
|
const wxString& data,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* DescList )
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
{
|
{
|
||||||
/* Read the config */
|
/* Read the config */
|
||||||
wxStringTokenizer tokenizer( data, L"\r\n", wxTOKEN_STRTOK );
|
wxStringTokenizer tokenizer( data, L"\r\n", wxTOKEN_STRTOK );
|
||||||
|
@ -536,7 +525,7 @@ void ParseHotkeyConfig(
|
||||||
if( line_type[0] == '[' ) // A tag is found. search infos in list
|
if( line_type[0] == '[' ) // A tag is found. search infos in list
|
||||||
{
|
{
|
||||||
CurrentHotkeyList = 0;
|
CurrentHotkeyList = 0;
|
||||||
Ki_HotkeyInfoSectionDescriptor* DList = DescList;
|
Ki_HotkeyInfoSectionDescriptor* DList = aDescList;
|
||||||
for( ; DList->m_HK_InfoList; DList++ )
|
for( ; DList->m_HK_InfoList; DList++ )
|
||||||
{
|
{
|
||||||
if( *DList->m_SectionTag == line_type )
|
if( *DList->m_SectionTag == line_type )
|
||||||
|
@ -639,8 +628,7 @@ void WinEDA_BasicFrame::ExportHotkeyConfigToFile(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** add hotkey config options submenu to a menu
|
/* add hotkey config options submenu to aMenu
|
||||||
* @param menu : root menu
|
|
||||||
*/
|
*/
|
||||||
void AddHotkeyConfigMenu( wxMenu* aMenu )
|
void AddHotkeyConfigMenu( wxMenu* aMenu )
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,6 +29,13 @@ SCH_ITEM::SCH_ITEM( EDA_ITEM* aParent, KICAD_T aType ) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_ITEM::SCH_ITEM( const SCH_ITEM& aItem ) :
|
||||||
|
EDA_ITEM( aItem )
|
||||||
|
{
|
||||||
|
m_Layer = aItem.m_Layer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_ITEM::~SCH_ITEM()
|
SCH_ITEM::~SCH_ITEM()
|
||||||
{
|
{
|
||||||
// Do not let the connections container go out of scope with any ojbects or they
|
// Do not let the connections container go out of scope with any ojbects or they
|
||||||
|
@ -101,5 +108,5 @@ bool SCH_ITEM::IsConnected( const wxPoint& aPosition ) const
|
||||||
if( m_Flags & STRUCT_DELETED || m_Flags & SKIP_STRUCT )
|
if( m_Flags & STRUCT_DELETED || m_Flags & SKIP_STRUCT )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return DoIsConnected( aPosition );
|
return doIsConnected( aPosition );
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,10 +36,12 @@ const wxString FootprintAliasFileWildcard( _( "Kicad footprint alias files (*.eq
|
||||||
const wxString titleLibLoadError( _( "Library Load Error" ) );
|
const wxString titleLibLoadError( _( "Library Load Error" ) );
|
||||||
|
|
||||||
|
|
||||||
/* MacOSX: Needed for file association
|
/*
|
||||||
|
* MacOSX: Needed for file association
|
||||||
* http://wiki.wxwidgets.org/WxMac-specific_topics
|
* http://wiki.wxwidgets.org/WxMac-specific_topics
|
||||||
*/
|
*/
|
||||||
void WinEDA_App::MacOpenFile(const wxString &fileName) {
|
void WinEDA_App::MacOpenFile(const wxString &fileName)
|
||||||
|
{
|
||||||
wxFileName filename = fileName;
|
wxFileName filename = fileName;
|
||||||
wxString oldPath;
|
wxString oldPath;
|
||||||
WinEDA_CvpcbFrame * frame = ((WinEDA_CvpcbFrame*)GetTopWindow());
|
WinEDA_CvpcbFrame * frame = ((WinEDA_CvpcbFrame*)GetTopWindow());
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/*
|
||||||
* @file menucfg.cpp
|
* menubar.cpp
|
||||||
* (Re)Create the CvPCB main MenuBar
|
* Build the CvPCB MenuBar
|
||||||
*/
|
*/
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
#include "appl_wxstruct.h"
|
#include "appl_wxstruct.h"
|
||||||
|
|
|
@ -108,11 +108,10 @@ void DISPLAY_FOOTPRINTS_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
|
||||||
/*
|
/*
|
||||||
* Redraw the BOARD items but not cursors, axis or grid.
|
* Redraw the BOARD items but not cursors, axis or grid.
|
||||||
*/
|
*/
|
||||||
void BOARD::Draw( WinEDA_DrawPanel* aPanel, wxDC* DC,
|
void BOARD::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, int aDrawMode, const wxPoint& aOffset )
|
||||||
int aDrawMode, const wxPoint& offset )
|
|
||||||
{
|
{
|
||||||
if( m_Modules )
|
if( m_Modules )
|
||||||
{
|
{
|
||||||
m_Modules->Draw( aPanel, DC, GR_COPY );
|
m_Modules->Draw( aPanel, aDC, GR_COPY );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,10 +115,14 @@ set(EESCHEMA_SRCS
|
||||||
operations_on_items_lists.cpp
|
operations_on_items_lists.cpp
|
||||||
pinedit.cpp
|
pinedit.cpp
|
||||||
plot.cpp
|
plot.cpp
|
||||||
|
sch_bus_entry.cpp
|
||||||
sch_component.cpp
|
sch_component.cpp
|
||||||
sch_field.cpp
|
sch_field.cpp
|
||||||
sch_items.cpp
|
sch_items.cpp
|
||||||
|
sch_line.cpp
|
||||||
sch_marker.cpp
|
sch_marker.cpp
|
||||||
|
sch_no_connect.cpp
|
||||||
|
sch_polyline.cpp
|
||||||
sch_screen.cpp
|
sch_screen.cpp
|
||||||
sch_sheet.cpp
|
sch_sheet.cpp
|
||||||
sch_sheet_path.cpp
|
sch_sheet_path.cpp
|
||||||
|
|
|
@ -16,8 +16,11 @@
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
#include "lib_pin.h"
|
#include "lib_pin.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
@ -37,9 +40,9 @@ void DuplicateItemsInList( SCH_SCREEN* screen,
|
||||||
|
|
||||||
static void CollectStructsToDrag( SCH_SCREEN* screen );
|
static void CollectStructsToDrag( SCH_SCREEN* screen );
|
||||||
static void AddPickedItem( SCH_SCREEN* screen, wxPoint aPosition );
|
static void AddPickedItem( SCH_SCREEN* screen, wxPoint aPosition );
|
||||||
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aComponent,
|
||||||
wxPoint& aPosition,
|
wxPoint& aPosition,
|
||||||
bool aSearchFirst );
|
LIB_PIN* aPin );
|
||||||
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||||
static void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList );
|
static void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList );
|
||||||
|
|
||||||
|
@ -226,6 +229,7 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
if( DrawPanel->ManageCurseur != NULL )
|
if( DrawPanel->ManageCurseur != NULL )
|
||||||
|
{
|
||||||
switch( block->m_Command )
|
switch( block->m_Command )
|
||||||
{
|
{
|
||||||
case BLOCK_IDLE:
|
case BLOCK_IDLE:
|
||||||
|
@ -234,14 +238,14 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
|
||||||
|
|
||||||
case BLOCK_DRAG: /* Drag */
|
case BLOCK_DRAG: /* Drag */
|
||||||
BreakSegmentOnJunction( GetScreen() );
|
BreakSegmentOnJunction( GetScreen() );
|
||||||
|
// fall through
|
||||||
case BLOCK_ROTATE:
|
case BLOCK_ROTATE:
|
||||||
case BLOCK_MIRROR_X:
|
case BLOCK_MIRROR_X:
|
||||||
case BLOCK_MIRROR_Y:
|
case BLOCK_MIRROR_Y:
|
||||||
case BLOCK_MOVE: /* Move */
|
case BLOCK_MOVE: /* Move */
|
||||||
case BLOCK_COPY: /* Copy */
|
case BLOCK_COPY: /* Copy */
|
||||||
PickItemsInBlock( GetScreen()->m_BlockLocate, GetScreen() );
|
PickItemsInBlock( GetScreen()->m_BlockLocate, GetScreen() );
|
||||||
|
// fall through
|
||||||
case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/
|
case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/
|
||||||
if( block->GetCount() )
|
if( block->GetCount() )
|
||||||
{
|
{
|
||||||
|
@ -301,6 +305,7 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
|
||||||
case BLOCK_ABORT: /* not executed here */
|
case BLOCK_ABORT: /* not executed here */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( block->m_Command == BLOCK_ABORT )
|
if( block->m_Command == BLOCK_ABORT )
|
||||||
{
|
{
|
||||||
|
@ -595,7 +600,8 @@ void SCH_EDIT_FRAME::PasteListOfItems( wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* creates the list of items found when a drag block is initiated.
|
/* Set in m_BlockLocate.m_ItemsSelection items members .m_Flags to SELECTED
|
||||||
|
* Creates the list of items found when a drag block is initiated.
|
||||||
* items are those selected in window block an some items outside this area but
|
* items are those selected in window block an some items outside this area but
|
||||||
* connected to a selected item (connected wires to a component or an entry )
|
* connected to a selected item (connected wires to a component or an entry )
|
||||||
*/
|
*/
|
||||||
|
@ -624,14 +630,14 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
/* Remove the displacement of segment and undo the selection. */
|
/* Remove the displacement of segment and undo the selection. */
|
||||||
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
Struct = (SCH_ITEM*)(SCH_ITEM*) pickedlist->GetPickedItem( ii );
|
Struct = (SCH_ITEM*)pickedlist->GetPickedItem( ii );
|
||||||
if( Struct->Type() == SCH_LINE_T )
|
if( Struct->Type() == SCH_LINE_T )
|
||||||
{
|
{
|
||||||
SegmStruct = (SCH_LINE*) Struct;
|
SegmStruct = (SCH_LINE*) Struct;
|
||||||
if( !screen->m_BlockLocate.Inside( SegmStruct->m_Start ) )
|
if( !screen->m_BlockLocate.Contains( SegmStruct->m_Start ) )
|
||||||
SegmStruct->m_Flags |= STARTPOINT;
|
SegmStruct->m_Flags |= STARTPOINT;
|
||||||
|
|
||||||
if( !screen->m_BlockLocate.Inside( SegmStruct->m_End ) )
|
if( !screen->m_BlockLocate.Contains( SegmStruct->m_End ) )
|
||||||
SegmStruct->m_Flags |= ENDPOINT;
|
SegmStruct->m_Flags |= ENDPOINT;
|
||||||
|
|
||||||
// Save m_Flags for Undo/redo drag operations:
|
// Save m_Flags for Undo/redo drag operations:
|
||||||
|
@ -642,17 +648,16 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
/* Search for other items to drag. They are end wires connected to selected
|
/* Search for other items to drag. They are end wires connected to selected
|
||||||
* items
|
* items
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
Struct = (SCH_ITEM*)(SCH_ITEM*) pickedlist->GetPickedItem( ii );
|
Struct = (SCH_ITEM*)pickedlist->GetPickedItem( ii );
|
||||||
if( ( Struct->Type() == SCH_LABEL_T )
|
if( ( Struct->Type() == SCH_LABEL_T )
|
||||||
|| ( Struct->Type() == SCH_GLOBAL_LABEL_T )
|
|| ( Struct->Type() == SCH_GLOBAL_LABEL_T )
|
||||||
|| ( Struct->Type() == SCH_HIERARCHICAL_LABEL_T ) )
|
|| ( Struct->Type() == SCH_HIERARCHICAL_LABEL_T ) )
|
||||||
{
|
{
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ( (SCH_TEXT*) Struct )
|
#define STRUCT ( (SCH_TEXT*) Struct )
|
||||||
if( !screen->m_BlockLocate.Inside( STRUCT->m_Pos ) )
|
if( !screen->m_BlockLocate.Contains( STRUCT->m_Pos ) )
|
||||||
{
|
{
|
||||||
AddPickedItem( screen, STRUCT->m_Pos );
|
AddPickedItem( screen, STRUCT->m_Pos );
|
||||||
}
|
}
|
||||||
|
@ -661,20 +666,20 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
if( Struct->Type() == SCH_COMPONENT_T )
|
if( Struct->Type() == SCH_COMPONENT_T )
|
||||||
{
|
{
|
||||||
// Add all pins of the selected component to list
|
// Add all pins of the selected component to list
|
||||||
LIB_PIN* pin;
|
|
||||||
wxPoint pos;
|
wxPoint pos;
|
||||||
pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, true );
|
LIB_PIN* pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, NULL );
|
||||||
while( pin )
|
while( pin )
|
||||||
{
|
{
|
||||||
if( !screen->m_BlockLocate.Inside( pos ) )
|
if( !screen->m_BlockLocate.Contains( pos ) )
|
||||||
{
|
{
|
||||||
// This pin is outside area,
|
// This pin is outside area,
|
||||||
// but because it it the pin of a selected component
|
// but because it is a pin of a selected component
|
||||||
// we must also select connected items to this pin
|
// we must also select connected items to this pin
|
||||||
|
// and mainly wires
|
||||||
AddPickedItem( screen, pos );
|
AddPickedItem( screen, pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, false );
|
pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, pin );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -774,7 +779,6 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
{
|
{
|
||||||
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
||||||
Struct->m_Flags &= ~STARTPOINT;
|
Struct->m_Flags &= ~STARTPOINT;
|
||||||
|
|
||||||
// Save m_Flags for Undo/redo drag operations:
|
// Save m_Flags for Undo/redo drag operations:
|
||||||
picker.m_PickerFlags = Struct->m_Flags;
|
picker.m_PickerFlags = Struct->m_Flags;
|
||||||
pickedlist->PushItem( picker );
|
pickedlist->PushItem( picker );
|
||||||
|
@ -783,7 +787,6 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
{
|
{
|
||||||
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
||||||
Struct->m_Flags &= ~ENDPOINT;
|
Struct->m_Flags &= ~ENDPOINT;
|
||||||
|
|
||||||
// Save m_Flags for Undo/redo drag operations:
|
// Save m_Flags for Undo/redo drag operations:
|
||||||
picker.m_PickerFlags = Struct->m_Flags;
|
picker.m_PickerFlags = Struct->m_Flags;
|
||||||
pickedlist->PushItem( picker );
|
pickedlist->PushItem( picker );
|
||||||
|
@ -856,53 +859,45 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
|
|
||||||
/** GetNextPinPosition()
|
/** GetNextPinPosition()
|
||||||
* calculate position of the "next" pin of the aDrawLibItem component
|
* calculate position of the "next" pin of the aDrawLibItem component
|
||||||
* @param aDrawLibItem = component to test.
|
* @param aComponent = component to test.
|
||||||
* @param aPosition = the calculated pin position, according to the component
|
* @param aPosition = the calculated pin position, according to the component
|
||||||
* orientation and position
|
* orientation and position
|
||||||
* @param aSearchFirst = if true, search for the first pin
|
* @param aSearchFirst = if true, search for the first pin
|
||||||
* @return a pointer to the pin
|
* @return a pointer to the pin
|
||||||
*/
|
*/
|
||||||
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aComponent,
|
||||||
wxPoint& aPosition,
|
wxPoint& aPosition,
|
||||||
bool aSearchFirst )
|
LIB_PIN* aPin )
|
||||||
{
|
{
|
||||||
static LIB_COMPONENT* Entry;
|
static LIB_COMPONENT* Entry;
|
||||||
static int Multi, convert;
|
|
||||||
TRANSFORM transform;
|
|
||||||
static wxPoint CmpPosition;
|
|
||||||
static LIB_PIN* Pin;
|
|
||||||
|
|
||||||
if( aSearchFirst )
|
if( aPin == NULL )
|
||||||
{
|
{
|
||||||
Entry = CMP_LIBRARY::FindLibraryComponent( aDrawLibItem->GetLibName() );
|
Entry = CMP_LIBRARY::FindLibraryComponent( aComponent->GetLibName() );
|
||||||
|
|
||||||
if( Entry == NULL )
|
if( Entry == NULL )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
Pin = Entry->GetNextPin();
|
|
||||||
Multi = aDrawLibItem->GetUnit();
|
|
||||||
convert = aDrawLibItem->GetConvert();
|
|
||||||
CmpPosition = aDrawLibItem->m_Pos;
|
|
||||||
transform = aDrawLibItem->GetTransform();
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Pin = Entry->GetNextPin( Pin );
|
|
||||||
|
|
||||||
for( ; Pin != NULL; Pin = Entry->GetNextPin( Pin ) )
|
aPin = Entry->GetNextPin( aPin );
|
||||||
|
|
||||||
|
int multi = aComponent->GetUnit();
|
||||||
|
int convert = aComponent->GetConvert();
|
||||||
|
for( ; aPin != NULL; aPin = Entry->GetNextPin( aPin ) )
|
||||||
{
|
{
|
||||||
wxASSERT( Pin->Type() == LIB_PIN_T );
|
wxASSERT( aPin->Type() == LIB_PIN_T );
|
||||||
|
|
||||||
/* Skip items not used for this part */
|
/* Skip items not used for this part */
|
||||||
if( Multi && Pin->GetUnit() && ( Pin->GetUnit() != Multi ) )
|
if( multi && aPin->GetUnit() && ( aPin->GetUnit() != multi ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( convert && Pin->GetConvert() && ( Pin->GetConvert() != convert ) )
|
if( convert && aPin->GetConvert() && ( aPin->GetConvert() != convert ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Calculate the pin position (according to the component orientation)
|
/* Calculate the pin position (according to the component orientation)
|
||||||
*/
|
*/
|
||||||
aPosition = DefaultTransform.TransformCoordinate( Pin->GetPosition() ) + CmpPosition;
|
aPosition = aComponent->GetPinPhysicalPosition( aPin );
|
||||||
return Pin;
|
return aPin;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -14,16 +14,18 @@
|
||||||
#include "lib_pin.h"
|
#include "lib_pin.h"
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
|
||||||
/* Routines Locales */
|
/* Routines Locales */
|
||||||
static void Show_Polyline_in_Ghost( WinEDA_DrawPanel* panel,
|
static void Show_Polyline_in_Ghost( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||||
wxDC* DC,
|
|
||||||
bool erase );
|
|
||||||
static void AbortCreateNewLine( WinEDA_DrawPanel* Panel, wxDC* DC );
|
static void AbortCreateNewLine( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||||
static bool IsTerminalPoint( SCH_SCREEN* screen, const wxPoint& pos, int layer );
|
static bool IsTerminalPoint( SCH_SCREEN* screen, const wxPoint& pos, int layer );
|
||||||
static bool IsJunctionNeeded( SCH_EDIT_FRAME* frame, wxPoint& pos );
|
static bool IsJunctionNeeded( SCH_EDIT_FRAME* frame, wxPoint& pos );
|
||||||
|
@ -172,7 +174,7 @@ void SCH_EDIT_FRAME::BeginSegment( wxDC* DC, int type )
|
||||||
|
|
||||||
if( g_HVLines ) // We need 2 segments to go from a given start pin to an end point
|
if( g_HVLines ) // We need 2 segments to go from a given start pin to an end point
|
||||||
{
|
{
|
||||||
nextsegment = newsegment->GenCopy();
|
nextsegment = new SCH_LINE( *newsegment );
|
||||||
nextsegment->m_Flags = IS_NEW;
|
nextsegment->m_Flags = IS_NEW;
|
||||||
newsegment->SetNext( nextsegment );
|
newsegment->SetNext( nextsegment );
|
||||||
nextsegment->SetBack( newsegment );
|
nextsegment->SetBack( newsegment );
|
||||||
|
@ -220,7 +222,7 @@ void SCH_EDIT_FRAME::BeginSegment( wxDC* DC, int type )
|
||||||
/* Create a new segment, and chain it after the current new segment */
|
/* Create a new segment, and chain it after the current new segment */
|
||||||
if( nextsegment )
|
if( nextsegment )
|
||||||
{
|
{
|
||||||
newsegment = nextsegment->GenCopy();
|
newsegment = new SCH_LINE( *nextsegment );
|
||||||
nextsegment->m_Start = newsegment->m_End;
|
nextsegment->m_Start = newsegment->m_End;
|
||||||
nextsegment->SetNext( NULL );
|
nextsegment->SetNext( NULL );
|
||||||
nextsegment->SetBack( newsegment );
|
nextsegment->SetBack( newsegment );
|
||||||
|
@ -229,7 +231,7 @@ void SCH_EDIT_FRAME::BeginSegment( wxDC* DC, int type )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newsegment = oldsegment->GenCopy();
|
newsegment = new SCH_LINE( *oldsegment );
|
||||||
newsegment->m_Start = oldsegment->m_End;
|
newsegment->m_Start = oldsegment->m_End;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,6 +334,7 @@ void SCH_EDIT_FRAME::EndSegment( wxDC* DC )
|
||||||
if( !g_ItemToRepeat )
|
if( !g_ItemToRepeat )
|
||||||
g_ItemToRepeat = segment;
|
g_ItemToRepeat = segment;
|
||||||
}
|
}
|
||||||
|
|
||||||
segment->m_Flags = 0;
|
segment->m_Flags = 0;
|
||||||
segment = segment->Next();
|
segment = segment->Next();
|
||||||
}
|
}
|
||||||
|
@ -372,7 +375,6 @@ void SCH_EDIT_FRAME::EndSegment( wxDC* DC )
|
||||||
item = item->Next();
|
item = item->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DrawPanel->CursorOn( DC ); // Display schematic cursor
|
DrawPanel->CursorOn( DC ); // Display schematic cursor
|
||||||
|
|
||||||
SaveCopyInUndoList( s_OldWiresList, UR_WIRE_IMAGE );
|
SaveCopyInUndoList( s_OldWiresList, UR_WIRE_IMAGE );
|
||||||
|
@ -442,6 +444,7 @@ static void Show_Polyline_in_Ghost( WinEDA_DrawPanel* panel, wxDC* DC, bool eras
|
||||||
GRSetDrawMode( DC, g_XorMode );
|
GRSetDrawMode( DC, g_XorMode );
|
||||||
|
|
||||||
int idx = NewPoly->GetCornerCount() - 1;
|
int idx = NewPoly->GetCornerCount() - 1;
|
||||||
|
|
||||||
if( g_HVLines )
|
if( g_HVLines )
|
||||||
{
|
{
|
||||||
/* Coerce the line to vertical or horizontal one: */
|
/* Coerce the line to vertical or horizontal one: */
|
||||||
|
@ -571,111 +574,30 @@ static void AbortCreateNewLine( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
*/
|
*/
|
||||||
void SCH_EDIT_FRAME::RepeatDrawItem( wxDC* DC )
|
void SCH_EDIT_FRAME::RepeatDrawItem( wxDC* DC )
|
||||||
{
|
{
|
||||||
wxPoint new_pos;
|
|
||||||
|
|
||||||
if( g_ItemToRepeat == NULL )
|
if( g_ItemToRepeat == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch( g_ItemToRepeat->Type() )
|
g_ItemToRepeat = g_ItemToRepeat->Clone();
|
||||||
|
|
||||||
|
if( g_ItemToRepeat->Type() == SCH_COMPONENT_T ) // If repeat component then put in move mode
|
||||||
{
|
{
|
||||||
case SCH_JUNCTION_T:
|
wxPoint pos = GetScreen()->m_Curseur - ( (SCH_COMPONENT*) g_ItemToRepeat )->m_Pos;
|
||||||
#undef STRUCT
|
g_ItemToRepeat->m_Flags = IS_NEW;
|
||||||
#define STRUCT ( (SCH_JUNCTION*) g_ItemToRepeat )
|
( (SCH_COMPONENT*) g_ItemToRepeat )->m_TimeStamp = GetTimeStamp();
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
g_ItemToRepeat->Move( pos );
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
RedrawOneStruct( DrawPanel, DC, g_ItemToRepeat, g_XorMode );
|
||||||
new_pos = STRUCT->m_Pos;
|
StartMovePart( (SCH_COMPONENT*) g_ItemToRepeat, DC );
|
||||||
break;
|
return;
|
||||||
|
|
||||||
case SCH_NO_CONNECT_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_NO_CONNECT*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Pos;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_TEXT_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_TEXT*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Pos;
|
|
||||||
IncrementLabelMember( STRUCT->m_Text );
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
case SCH_LABEL_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_LABEL*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Pos;
|
|
||||||
IncrementLabelMember( STRUCT->m_Text );
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
case SCH_HIERARCHICAL_LABEL_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_HIERLABEL*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Pos;
|
|
||||||
IncrementLabelMember( STRUCT->m_Text );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_GLOBAL_LABEL_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_GLOBALLABEL*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Pos;
|
|
||||||
IncrementLabelMember( STRUCT->m_Text );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_LINE_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_LINE*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Start += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Start;
|
|
||||||
STRUCT->m_End += g_RepeatStep;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_BUS_ENTRY_T:
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_BUS_ENTRY*) g_ItemToRepeat )
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
STRUCT->m_Pos += g_RepeatStep;
|
|
||||||
new_pos = STRUCT->m_Pos;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_COMPONENT_T: // In repeat command the new component is put
|
|
||||||
// in move mode
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ( (SCH_COMPONENT*) g_ItemToRepeat )
|
|
||||||
|
|
||||||
// Create the duplicate component, position = mouse cursor
|
|
||||||
g_ItemToRepeat = STRUCT->GenCopy();
|
|
||||||
new_pos.x = GetScreen()->m_Curseur.x - STRUCT->m_Pos.x;
|
|
||||||
new_pos.y = GetScreen()->m_Curseur.y - STRUCT->m_Pos.y;
|
|
||||||
STRUCT->m_Pos = GetScreen()->m_Curseur;
|
|
||||||
STRUCT->m_Flags = IS_NEW;
|
|
||||||
STRUCT->m_TimeStamp = GetTimeStamp();
|
|
||||||
|
|
||||||
for( int ii = 0; ii < STRUCT->GetFieldCount(); ii++ )
|
|
||||||
{
|
|
||||||
STRUCT->GetField( ii )->m_Pos += new_pos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RedrawOneStruct( DrawPanel, DC, STRUCT, g_XorMode );
|
g_ItemToRepeat->Move( wxPoint( g_RepeatStep.GetWidth(), g_RepeatStep.GetHeight() ) );
|
||||||
StartMovePart( STRUCT, DC );
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
if( g_ItemToRepeat->Type() == SCH_TEXT_T
|
||||||
g_ItemToRepeat = NULL;
|
|| g_ItemToRepeat->Type() == SCH_LABEL_T
|
||||||
DisplayError( this, wxT( "Repeat Type Error" ), 10 );
|
|| g_ItemToRepeat->Type() == SCH_HIERARCHICAL_LABEL_T
|
||||||
break;
|
|| g_ItemToRepeat->Type() == SCH_GLOBAL_LABEL_T )
|
||||||
|
{
|
||||||
|
( (SCH_TEXT*) g_ItemToRepeat )->IncrementLabel();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( g_ItemToRepeat )
|
if( g_ItemToRepeat )
|
||||||
|
@ -686,9 +608,6 @@ void SCH_EDIT_FRAME::RepeatDrawItem( wxDC* DC )
|
||||||
RedrawOneStruct( DrawPanel, DC, g_ItemToRepeat, GR_DEFAULT_DRAWMODE );
|
RedrawOneStruct( DrawPanel, DC, g_ItemToRepeat, GR_DEFAULT_DRAWMODE );
|
||||||
SaveCopyInUndoList( g_ItemToRepeat, UR_NEW );
|
SaveCopyInUndoList( g_ItemToRepeat, UR_NEW );
|
||||||
g_ItemToRepeat->m_Flags = 0;
|
g_ItemToRepeat->m_Flags = 0;
|
||||||
|
|
||||||
// GetScreen()->Curseur = new_pos;
|
|
||||||
// DrawPanel->MouseTo( DrawPanel->CursorScreenPosition() );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -702,6 +621,7 @@ void IncrementLabelMember( wxString& name )
|
||||||
long number = 0;
|
long number = 0;
|
||||||
|
|
||||||
ii = name.Len() - 1; nn = 0;
|
ii = name.Len() - 1; nn = 0;
|
||||||
|
|
||||||
if( !isdigit( name.GetChar( ii ) ) )
|
if( !isdigit( name.GetChar( ii ) ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -712,6 +632,7 @@ void IncrementLabelMember( wxString& name )
|
||||||
|
|
||||||
ii++; /* digits are starting at ii position */
|
ii++; /* digits are starting at ii position */
|
||||||
wxString litt_number = name.Right( nn );
|
wxString litt_number = name.Right( nn );
|
||||||
|
|
||||||
if( litt_number.ToLong( &number ) )
|
if( litt_number.ToLong( &number ) )
|
||||||
{
|
{
|
||||||
number += g_RepeatDeltaLabel;
|
number += g_RepeatDeltaLabel;
|
||||||
|
@ -778,11 +699,13 @@ static bool IsTerminalPoint( SCH_SCREEN* screen, const wxPoint& pos, int layer )
|
||||||
itempos = LibItem->GetScreenCoord( pin->GetPosition() );
|
itempos = LibItem->GetScreenCoord( pin->GetPosition() );
|
||||||
itempos.x += LibItem->m_Pos.x;
|
itempos.x += LibItem->m_Pos.x;
|
||||||
itempos.y += LibItem->m_Pos.y;
|
itempos.y += LibItem->m_Pos.y;
|
||||||
|
|
||||||
if( ( itempos.x == pos.x ) && ( itempos.y == pos.y ) )
|
if( ( itempos.x == pos.x ) && ( itempos.y == pos.y ) )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
item = PickStruct( pos, screen, WIREITEM );
|
item = PickStruct( pos, screen, WIREITEM );
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "sch_items.h"
|
#include "sch_bus_entry.h"
|
||||||
|
|
||||||
|
|
||||||
static int s_LastShape = '\\';
|
static int s_LastShape = '\\';
|
||||||
|
@ -85,7 +85,7 @@ void SCH_EDIT_FRAME::StartMoveBusEntry( SCH_BUS_ENTRY* BusEntry, wxDC* DC )
|
||||||
if( (BusEntry->m_Flags & IS_NEW) == 0 ) // not already in edit, save shape
|
if( (BusEntry->m_Flags & IS_NEW) == 0 ) // not already in edit, save shape
|
||||||
{
|
{
|
||||||
delete g_ItemToUndoCopy;
|
delete g_ItemToUndoCopy;
|
||||||
g_ItemToUndoCopy = BusEntry->GenCopy();
|
g_ItemToUndoCopy = BusEntry->Clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
BusEntry->m_Flags |= IS_MOVED;
|
BusEntry->m_Flags |= IS_MOVED;
|
||||||
|
|
|
@ -12,7 +12,9 @@
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "netlist.h"
|
#include "netlist.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
|
||||||
|
|
||||||
/* Routine to start/end segment (BUS or wires) on junctions.
|
/* Routine to start/end segment (BUS or wires) on junctions.
|
||||||
|
@ -91,11 +93,11 @@ void BreakSegment( SCH_SCREEN* aScreen, wxPoint aBreakpoint )
|
||||||
* Segment connecte: doit etre coupe en 2 si px,py
|
* Segment connecte: doit etre coupe en 2 si px,py
|
||||||
* n'est
|
* n'est
|
||||||
* pas une extremite */
|
* pas une extremite */
|
||||||
if( ( segment->m_Start == aBreakpoint )
|
if( ( segment->m_Start == aBreakpoint ) || ( segment->m_End == aBreakpoint ) )
|
||||||
|| ( segment->m_End == aBreakpoint ) )
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Here we must cut the segment into 2. */
|
/* Here we must cut the segment into 2. */
|
||||||
NewSegment = segment->GenCopy();
|
NewSegment = new SCH_LINE( *segment );
|
||||||
NewSegment->m_Start = aBreakpoint;
|
NewSegment->m_Start = aBreakpoint;
|
||||||
segment->m_End = NewSegment->m_Start;
|
segment->m_End = NewSegment->m_Start;
|
||||||
NewSegment->SetNext( segment->Next() );
|
NewSegment->SetNext( segment->Next() );
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
|
|
||||||
|
|
|
@ -297,7 +297,7 @@ void DIALOG_COLOR_CONFIG::UpdateLayerSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_COLOR_CONFIG::OnOkClick( wxCommandEvent& WXUNUSED( event ) )
|
void DIALOG_COLOR_CONFIG::OnOkClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
UpdateLayerSettings();
|
UpdateLayerSettings();
|
||||||
m_Parent->DrawPanel->Refresh();
|
m_Parent->DrawPanel->Refresh();
|
||||||
|
@ -305,13 +305,13 @@ void DIALOG_COLOR_CONFIG::OnOkClick( wxCommandEvent& WXUNUSED( event ) )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_COLOR_CONFIG::OnCancelClick( wxCommandEvent& WXUNUSED( event ) )
|
void DIALOG_COLOR_CONFIG::OnCancelClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
EndModal( -1 );
|
EndModal( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_COLOR_CONFIG::OnApplyClick( wxCommandEvent& WXUNUSED( event ) )
|
void DIALOG_COLOR_CONFIG::OnApplyClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
UpdateLayerSettings();
|
UpdateLayerSettings();
|
||||||
m_Parent->DrawPanel->Refresh();
|
m_Parent->DrawPanel->Refresh();
|
||||||
|
|
|
@ -239,7 +239,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocToAlias( wxCommandEvent& WXUNUSED (event) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocToAlias( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
if( m_Parent == NULL )
|
if( m_Parent == NULL )
|
||||||
return;
|
return;
|
||||||
|
@ -261,7 +261,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocToAlias( wxCommandEvent& WXUNUSED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllAliasOfPart( wxCommandEvent& WXUNUSED (event) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllAliasOfPart( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
if( m_PartAliasListCtrl->FindString( m_Parent->GetAliasName() ) != wxNOT_FOUND )
|
if( m_PartAliasListCtrl->FindString( m_Parent->GetAliasName() ) != wxNOT_FOUND )
|
||||||
{
|
{
|
||||||
|
@ -284,7 +284,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllAliasOfPart( wxCommandEvent& WXU
|
||||||
/* Add a new name to the alias list box
|
/* Add a new name to the alias list box
|
||||||
* New name cannot be the root name, and must not exists
|
* New name cannot be the root name, and must not exists
|
||||||
*/
|
*/
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart( wxCommandEvent& WXUNUSED (event) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
wxString aliasname;
|
wxString aliasname;
|
||||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||||
|
@ -324,7 +324,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart( wxCommandEvent& WXUNUSED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAliasOfPart( wxCommandEvent& WXUNUSED (event) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAliasOfPart( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
wxString aliasname = m_PartAliasListCtrl->GetStringSelection();
|
wxString aliasname = m_PartAliasListCtrl->GetStringSelection();
|
||||||
|
|
||||||
|
@ -444,7 +444,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::BrowseAndSelectDocFile( wxCommandEvent& e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllFootprintFilter( wxCommandEvent& WXUNUSED (event) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllFootprintFilter( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
if( IsOK( this, _( "Ok to Delete FootprintFilter LIST" ) ) )
|
if( IsOK( this, _( "Ok to Delete FootprintFilter LIST" ) ) )
|
||||||
{
|
{
|
||||||
|
@ -458,7 +458,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllFootprintFilter( wxCommandEvent&
|
||||||
/* Add a new name to the footprint filter list box
|
/* Add a new name to the footprint filter list box
|
||||||
* Obvioulsy, cannot be void
|
* Obvioulsy, cannot be void
|
||||||
*/
|
*/
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter( wxCommandEvent& WXUNUSED (event) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
wxString Line;
|
wxString Line;
|
||||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||||
|
@ -494,7 +494,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter( wxCommandEvent& WXUNU
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteOneFootprintFilter( wxCommandEvent& WXUNUSED( event ) )
|
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteOneFootprintFilter( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||||
int ii = m_FootprintFilterListBox->GetSelection();
|
int ii = m_FootprintFilterListBox->GetSelection();
|
||||||
|
|
|
@ -578,6 +578,22 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel()
|
||||||
|
|
||||||
m_StyleRadioBox->SetSelection( style );
|
m_StyleRadioBox->SetSelection( style );
|
||||||
|
|
||||||
|
// Select the right text justification
|
||||||
|
if( field.m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
||||||
|
m_FieldHJustifyCtrl->SetSelection(0);
|
||||||
|
else if( field.m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
||||||
|
m_FieldHJustifyCtrl->SetSelection(2);
|
||||||
|
else
|
||||||
|
m_FieldHJustifyCtrl->SetSelection(1);
|
||||||
|
|
||||||
|
if( field.m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
|
||||||
|
m_FieldVJustifyCtrl->SetSelection(0);
|
||||||
|
else if( field.m_VJustify == GR_TEXT_VJUSTIFY_TOP )
|
||||||
|
m_FieldVJustifyCtrl->SetSelection(2);
|
||||||
|
else
|
||||||
|
m_FieldVJustifyCtrl->SetSelection(1);
|
||||||
|
|
||||||
|
|
||||||
fieldNameTextCtrl->SetValue( field.m_Name );
|
fieldNameTextCtrl->SetValue( field.m_Name );
|
||||||
|
|
||||||
// the names of the fixed fields are not editable, others are.
|
// the names of the fixed fields are not editable, others are.
|
||||||
|
@ -657,6 +673,19 @@ bool DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToSelectedField()
|
||||||
|
|
||||||
rotateCheckBox->SetValue( field.m_Orient == TEXT_ORIENT_VERT );
|
rotateCheckBox->SetValue( field.m_Orient == TEXT_ORIENT_VERT );
|
||||||
|
|
||||||
|
// Copy the text justification
|
||||||
|
GRTextHorizJustifyType hjustify[3] = {
|
||||||
|
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_CENTER,
|
||||||
|
GR_TEXT_HJUSTIFY_RIGHT
|
||||||
|
};
|
||||||
|
|
||||||
|
GRTextVertJustifyType vjustify[3] = {
|
||||||
|
GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER,
|
||||||
|
GR_TEXT_VJUSTIFY_TOP
|
||||||
|
};
|
||||||
|
|
||||||
|
field.m_HJustify = hjustify[m_FieldHJustifyCtrl->GetSelection()];
|
||||||
|
field.m_VJustify = vjustify[m_FieldVJustifyCtrl->GetSelection()];
|
||||||
|
|
||||||
field.m_Name = fieldNameTextCtrl->GetValue();
|
field.m_Name = fieldNameTextCtrl->GetValue();
|
||||||
/* Void fields texts for REFERENCE and VALUE (value is the name of the
|
/* Void fields texts for REFERENCE and VALUE (value is the name of the
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Sep 8 2010)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -29,7 +29,7 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
int unitChoiceNChoices = sizeof( unitChoiceChoices ) / sizeof( wxString );
|
int unitChoiceNChoices = sizeof( unitChoiceChoices ) / sizeof( wxString );
|
||||||
unitChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, unitChoiceNChoices, unitChoiceChoices, 0 );
|
unitChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, unitChoiceNChoices, unitChoiceChoices, 0 );
|
||||||
unitChoice->SetSelection( 0 );
|
unitChoice->SetSelection( 0 );
|
||||||
unitSizer->Add( unitChoice, 1, wxALL|wxEXPAND, 5 );
|
unitSizer->Add( unitChoice, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
optionsSizer->Add( unitSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 8 );
|
optionsSizer->Add( unitSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 8 );
|
||||||
|
|
||||||
|
@ -42,9 +42,9 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
orientationRadioBox->SetSelection( 0 );
|
orientationRadioBox->SetSelection( 0 );
|
||||||
orientationRadioBox->SetToolTip( _("Select if the component is to be rotated when drawn") );
|
orientationRadioBox->SetToolTip( _("Select if the component is to be rotated when drawn") );
|
||||||
|
|
||||||
orientationSizer->Add( orientationRadioBox, 1, wxALL, 8 );
|
orientationSizer->Add( orientationRadioBox, 1, wxALL|wxEXPAND, 8 );
|
||||||
|
|
||||||
optionsSizer->Add( orientationSizer, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 0 );
|
optionsSizer->Add( orientationSizer, 0, wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 0 );
|
||||||
|
|
||||||
wxBoxSizer* mirrorSizer;
|
wxBoxSizer* mirrorSizer;
|
||||||
mirrorSizer = new wxBoxSizer( wxHORIZONTAL );
|
mirrorSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
@ -57,7 +57,7 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
|
|
||||||
mirrorSizer->Add( mirrorRadioBox, 1, wxALL, 8 );
|
mirrorSizer->Add( mirrorRadioBox, 1, wxALL, 8 );
|
||||||
|
|
||||||
optionsSizer->Add( mirrorSizer, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 0 );
|
optionsSizer->Add( mirrorSizer, 0, wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 0 );
|
||||||
|
|
||||||
wxStaticBoxSizer* chipnameSizer;
|
wxStaticBoxSizer* chipnameSizer;
|
||||||
chipnameSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Chip Name") ), wxHORIZONTAL );
|
chipnameSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Chip Name") ), wxHORIZONTAL );
|
||||||
|
@ -71,7 +71,6 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
optionsSizer->Add( chipnameSizer, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 8 );
|
optionsSizer->Add( chipnameSizer, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 8 );
|
||||||
|
|
||||||
convertCheckBox = new wxCheckBox( this, wxID_ANY, _("Convert"), wxDefaultPosition, wxDefaultSize, 0 );
|
convertCheckBox = new wxCheckBox( this, wxID_ANY, _("Convert"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
convertCheckBox->SetToolTip( _("Use the alternate shape of this component.\nFor gates, this is the \"De Morgan\" conversion") );
|
convertCheckBox->SetToolTip( _("Use the alternate shape of this component.\nFor gates, this is the \"De Morgan\" conversion") );
|
||||||
|
|
||||||
optionsSizer->Add( convertCheckBox, 0, wxALL, 8 );
|
optionsSizer->Add( convertCheckBox, 0, wxALL, 8 );
|
||||||
|
@ -113,11 +112,28 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
|
|
||||||
gridStaticBoxSizer->Add( moveUpButton, 0, wxALL|wxEXPAND, 5 );
|
gridStaticBoxSizer->Add( moveUpButton, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
fieldsSizer->Add( gridStaticBoxSizer, 5, wxALL|wxEXPAND, 8 );
|
fieldsSizer->Add( gridStaticBoxSizer, 5, wxEXPAND|wxRIGHT|wxLEFT, 8 );
|
||||||
|
|
||||||
wxBoxSizer* fieldEditBoxSizer;
|
wxBoxSizer* fieldEditBoxSizer;
|
||||||
fieldEditBoxSizer = new wxBoxSizer( wxVERTICAL );
|
fieldEditBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
wxStaticBoxSizer* sbSizerOptions;
|
||||||
|
sbSizerOptions = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxHORIZONTAL );
|
||||||
|
|
||||||
|
wxString m_FieldHJustifyCtrlChoices[] = { _("Align left"), _("Align center"), _("Align right") };
|
||||||
|
int m_FieldHJustifyCtrlNChoices = sizeof( m_FieldHJustifyCtrlChoices ) / sizeof( wxString );
|
||||||
|
m_FieldHJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Horiz. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldHJustifyCtrlNChoices, m_FieldHJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
|
||||||
|
m_FieldHJustifyCtrl->SetSelection( 1 );
|
||||||
|
sbSizerOptions->Add( m_FieldHJustifyCtrl, 1, wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
wxString m_FieldVJustifyCtrlChoices[] = { _("Align bottom"), _("Align center"), _("Align top") };
|
||||||
|
int m_FieldVJustifyCtrlNChoices = sizeof( m_FieldVJustifyCtrlChoices ) / sizeof( wxString );
|
||||||
|
m_FieldVJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Vert. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldVJustifyCtrlNChoices, m_FieldVJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
|
||||||
|
m_FieldVJustifyCtrl->SetSelection( 1 );
|
||||||
|
sbSizerOptions->Add( m_FieldVJustifyCtrl, 1, wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
fieldEditBoxSizer->Add( sbSizerOptions, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
wxStaticBoxSizer* visibilitySizer;
|
wxStaticBoxSizer* visibilitySizer;
|
||||||
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Visibility") ), wxHORIZONTAL );
|
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Visibility") ), wxHORIZONTAL );
|
||||||
|
|
||||||
|
@ -125,13 +141,11 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
bShowRotateSizer = new wxBoxSizer( wxVERTICAL );
|
bShowRotateSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
showCheckBox = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
|
showCheckBox = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
showCheckBox->SetToolTip( _("Check if you want this field visible") );
|
showCheckBox->SetToolTip( _("Check if you want this field visible") );
|
||||||
|
|
||||||
bShowRotateSizer->Add( showCheckBox, 0, wxALL, 5 );
|
bShowRotateSizer->Add( showCheckBox, 0, wxALL, 5 );
|
||||||
|
|
||||||
rotateCheckBox = new wxCheckBox( this, wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
|
rotateCheckBox = new wxCheckBox( this, wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
rotateCheckBox->SetToolTip( _("Check if you want this field's text rotated 90 degrees") );
|
rotateCheckBox->SetToolTip( _("Check if you want this field's text rotated 90 degrees") );
|
||||||
|
|
||||||
bShowRotateSizer->Add( rotateCheckBox, 0, wxALL, 5 );
|
bShowRotateSizer->Add( rotateCheckBox, 0, wxALL, 5 );
|
||||||
|
@ -146,7 +160,7 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
|
|
||||||
visibilitySizer->Add( m_StyleRadioBox, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
visibilitySizer->Add( m_StyleRadioBox, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
fieldEditBoxSizer->Add( visibilitySizer, 0, wxEXPAND, 5 );
|
fieldEditBoxSizer->Add( visibilitySizer, 0, wxEXPAND|wxTOP, 5 );
|
||||||
|
|
||||||
wxBoxSizer* fieldNameBoxSizer;
|
wxBoxSizer* fieldNameBoxSizer;
|
||||||
fieldNameBoxSizer = new wxBoxSizer( wxVERTICAL );
|
fieldNameBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
@ -221,15 +235,9 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
|
|
||||||
positionBoxSizer->Add( posYBoxSizer, 1, wxALL|wxEXPAND, 5 );
|
positionBoxSizer->Add( posYBoxSizer, 1, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
fieldEditBoxSizer->Add( positionBoxSizer, 1, wxEXPAND, 5 );
|
fieldEditBoxSizer->Add( positionBoxSizer, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
fieldsSizer->Add( fieldEditBoxSizer, 0, wxEXPAND, 5 );
|
||||||
fieldEditBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
fieldEditBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
fieldsSizer->Add( fieldEditBoxSizer, 3, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
upperSizer->Add( fieldsSizer, 1, wxALL|wxEXPAND, 5 );
|
upperSizer->Add( fieldsSizer, 1, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
@ -268,4 +276,5 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::~DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
|
||||||
moveUpButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::moveUpButtonHandler ), NULL, this );
|
moveUpButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::moveUpButtonHandler ), NULL, this );
|
||||||
stdDialogButtonSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::OnCancelButtonClick ), NULL, this );
|
stdDialogButtonSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::OnCancelButtonClick ), NULL, this );
|
||||||
stdDialogButtonSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::OnOKButtonClick ), NULL, this );
|
stdDialogButtonSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::OnOKButtonClick ), NULL, this );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
<wxFormBuilder_Project>
|
<wxFormBuilder_Project>
|
||||||
<FileVersion major="1" minor="9" />
|
<FileVersion major="1" minor="10" />
|
||||||
<object class="Project" expanded="1">
|
<object class="Project" expanded="1">
|
||||||
<property name="class_decoration">; </property>
|
<property name="class_decoration">; </property>
|
||||||
<property name="code_generation">C++</property>
|
<property name="code_generation">C++</property>
|
||||||
<property name="disconnect_events">1</property>
|
<property name="disconnect_events">1</property>
|
||||||
|
<property name="disconnect_mode">source_name</property>
|
||||||
|
<property name="disconnect_python_events">0</property>
|
||||||
<property name="encoding">ANSI</property>
|
<property name="encoding">ANSI</property>
|
||||||
<property name="event_generation">connect</property>
|
<property name="event_generation">connect</property>
|
||||||
<property name="file">dialog_edit_component_in_schematic_fbp</property>
|
<property name="file">dialog_edit_component_in_schematic_fbp</property>
|
||||||
|
@ -16,13 +18,16 @@
|
||||||
<property name="path">.</property>
|
<property name="path">.</property>
|
||||||
<property name="precompiled_header"></property>
|
<property name="precompiled_header"></property>
|
||||||
<property name="relative_path">1</property>
|
<property name="relative_path">1</property>
|
||||||
|
<property name="skip_python_events">1</property>
|
||||||
<property name="use_enum">0</property>
|
<property name="use_enum">0</property>
|
||||||
<property name="use_microsoft_bom">0</property>
|
<property name="use_microsoft_bom">0</property>
|
||||||
<object class="Dialog" expanded="1">
|
<object class="Dialog" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="center"></property>
|
<property name="center"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
|
<property name="event_handler">impl_virtual</property>
|
||||||
<property name="extra_style"></property>
|
<property name="extra_style"></property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -32,11 +37,15 @@
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="name">DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP</property>
|
<property name="name">DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP</property>
|
||||||
<property name="pos"></property>
|
<property name="pos"></property>
|
||||||
<property name="size">630,520</property>
|
<property name="size">715,520</property>
|
||||||
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU</property>
|
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="title">Component Properties</property>
|
<property name="title">Component Properties</property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -111,11 +120,12 @@
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxALL|wxEXPAND</property>
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxChoice" expanded="1">
|
<object class="wxChoice" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="choices">"1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26"</property>
|
<property name="choices">"1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26"</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -130,6 +140,10 @@
|
||||||
<property name="size"></property>
|
<property name="size"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -163,7 +177,7 @@
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">0</property>
|
<property name="border">0</property>
|
||||||
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT|wxTOP</property>
|
<property name="flag">wxLEFT|wxRIGHT|wxTOP|wxEXPAND</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxBoxSizer" expanded="1">
|
<object class="wxBoxSizer" expanded="1">
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
|
@ -172,12 +186,13 @@
|
||||||
<property name="permission">none</property>
|
<property name="permission">none</property>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">8</property>
|
<property name="border">8</property>
|
||||||
<property name="flag">wxALL</property>
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">1</property>
|
||||||
<object class="wxRadioBox" expanded="1">
|
<object class="wxRadioBox" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="choices">"0" "+90" "180" "-90"</property>
|
<property name="choices">"0" "+90" "180" "-90"</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -195,6 +210,10 @@
|
||||||
<property name="style">wxRA_SPECIFY_COLS</property>
|
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Select if the component is to be rotated when drawn</property>
|
<property name="tooltip">Select if the component is to be rotated when drawn</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -228,7 +247,7 @@
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">0</property>
|
<property name="border">0</property>
|
||||||
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT|wxTOP</property>
|
<property name="flag">wxLEFT|wxRIGHT|wxTOP|wxEXPAND</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxBoxSizer" expanded="1">
|
<object class="wxBoxSizer" expanded="1">
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
|
@ -243,6 +262,7 @@
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="choices">"Normal" "Mirror ---" "Mirror |"</property>
|
<property name="choices">"Normal" "Mirror ---" "Mirror |"</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -260,6 +280,10 @@
|
||||||
<property name="style">wxRA_SPECIFY_COLS</property>
|
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Pick the graphical transformation to be used when displaying the component, if any</property>
|
<property name="tooltip">Pick the graphical transformation to be used when displaying the component, if any</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -310,6 +334,7 @@
|
||||||
<object class="wxTextCtrl" expanded="1">
|
<object class="wxTextCtrl" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -325,6 +350,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The name of the symbol in the library from which this component came</property>
|
<property name="tooltip">The name of the symbol in the library from which this component came</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="value"></property>
|
<property name="value"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
|
@ -368,6 +397,7 @@
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="checked">0</property>
|
<property name="checked">0</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -383,6 +413,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Use the alternate shape of this component.
For gates, this is the "De Morgan" conversion</property>
|
<property name="tooltip">Use the alternate shape of this component.
For gates, this is the "De Morgan" conversion</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -419,6 +453,7 @@
|
||||||
<object class="wxStaticText" expanded="1">
|
<object class="wxStaticText" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -434,6 +469,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -470,6 +509,7 @@
|
||||||
<object class="wxButton" expanded="1">
|
<object class="wxButton" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="default">0</property>
|
<property name="default">0</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
|
@ -486,6 +526,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Set position and style of fields and component orientation to default lib value.
Fields texts are not modified.</property>
|
<property name="tooltip">Set position and style of fields and component orientation to default lib value.
Fields texts are not modified.</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -531,7 +575,7 @@
|
||||||
<event name="OnUpdateUI"></event>
|
<event name="OnUpdateUI"></event>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">8</property>
|
<property name="border">8</property>
|
||||||
<property name="flag">wxALL|wxEXPAND</property>
|
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
|
||||||
<property name="proportion">5</property>
|
<property name="proportion">5</property>
|
||||||
<object class="wxStaticBoxSizer" expanded="1">
|
<object class="wxStaticBoxSizer" expanded="1">
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
|
@ -548,6 +592,7 @@
|
||||||
<object class="wxListCtrl" expanded="1">
|
<object class="wxListCtrl" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -562,6 +607,10 @@
|
||||||
<property name="style">wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES</property>
|
<property name="style">wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -617,6 +666,7 @@
|
||||||
<object class="wxButton" expanded="1">
|
<object class="wxButton" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="default">0</property>
|
<property name="default">0</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
|
@ -633,6 +683,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Add a new custom field</property>
|
<property name="tooltip">Add a new custom field</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -669,6 +723,7 @@
|
||||||
<object class="wxButton" expanded="1">
|
<object class="wxButton" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="default">0</property>
|
<property name="default">0</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
|
@ -685,6 +740,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Delete one of the optional fields</property>
|
<property name="tooltip">Delete one of the optional fields</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -721,6 +780,7 @@
|
||||||
<object class="wxButton" expanded="1">
|
<object class="wxButton" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="default">0</property>
|
<property name="default">0</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
|
@ -737,6 +797,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Move the selected optional fields up one position</property>
|
<property name="tooltip">Move the selected optional fields up one position</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -771,7 +835,7 @@
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND</property>
|
<property name="flag">wxEXPAND</property>
|
||||||
<property name="proportion">3</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxBoxSizer" expanded="1">
|
<object class="wxBoxSizer" expanded="1">
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="name">fieldEditBoxSizer</property>
|
<property name="name">fieldEditBoxSizer</property>
|
||||||
|
@ -781,6 +845,138 @@
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND</property>
|
<property name="flag">wxEXPAND</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticBoxSizer" expanded="1">
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Options</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">sbSizerOptions</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxRIGHT|wxLEFT</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxRadioBox" expanded="1">
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="choices">"Align left" "Align center" "Align right"</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Horiz. Justify</property>
|
||||||
|
<property name="majorDimension">1</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">m_FieldHJustifyCtrl</property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="selection">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRadioBox"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxRIGHT|wxLEFT</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxRadioBox" expanded="1">
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="choices">"Align bottom" "Align center" "Align top"</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Vert. Justify</property>
|
||||||
|
<property name="majorDimension">1</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">m_FieldVJustifyCtrl</property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="selection">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRadioBox"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND|wxTOP</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
<object class="wxStaticBoxSizer" expanded="1">
|
<object class="wxStaticBoxSizer" expanded="1">
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="label">Visibility</property>
|
<property name="label">Visibility</property>
|
||||||
|
@ -806,6 +1002,7 @@
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="checked">0</property>
|
<property name="checked">0</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -821,6 +1018,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Check if you want this field visible</property>
|
<property name="tooltip">Check if you want this field visible</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -858,6 +1059,7 @@
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="checked">0</property>
|
<property name="checked">0</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -873,6 +1075,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">Check if you want this field's text rotated 90 degrees</property>
|
<property name="tooltip">Check if you want this field's text rotated 90 degrees</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -912,6 +1118,7 @@
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="choices">"Normal" "Italic" "Bold" "Bold Italic"</property>
|
<property name="choices">"Normal" "Italic" "Bold" "Bold Italic"</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -929,6 +1136,10 @@
|
||||||
<property name="style">wxRA_SPECIFY_COLS</property>
|
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The style of the currently selected field's text in the schemati</property>
|
<property name="tooltip">The style of the currently selected field's text in the schemati</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -976,6 +1187,7 @@
|
||||||
<object class="wxStaticText" expanded="1">
|
<object class="wxStaticText" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -991,6 +1203,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -1027,6 +1243,7 @@
|
||||||
<object class="wxTextCtrl" expanded="1">
|
<object class="wxTextCtrl" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1042,6 +1259,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The name of the currently selected field
Some fixed fields names are not editable</property>
|
<property name="tooltip">The name of the currently selected field
Some fixed fields names are not editable</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="value"></property>
|
<property name="value"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
|
@ -1093,6 +1314,7 @@
|
||||||
<object class="wxStaticText" expanded="1">
|
<object class="wxStaticText" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1108,6 +1330,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -1144,6 +1370,7 @@
|
||||||
<object class="wxTextCtrl" expanded="1">
|
<object class="wxTextCtrl" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1159,6 +1386,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The text (or value) of the currently selected field</property>
|
<property name="tooltip">The text (or value) of the currently selected field</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="value"></property>
|
<property name="value"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
|
@ -1198,18 +1429,19 @@
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxALL|wxEXPAND</property>
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxBoxSizer" expanded="1">
|
<object class="wxBoxSizer" expanded="0">
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="name">textSizeBoxSizer</property>
|
<property name="name">textSizeBoxSizer</property>
|
||||||
<property name="orient">wxVERTICAL</property>
|
<property name="orient">wxVERTICAL</property>
|
||||||
<property name="permission">none</property>
|
<property name="permission">none</property>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="0">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag"></property>
|
<property name="flag"></property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxStaticText" expanded="1">
|
<object class="wxStaticText" expanded="0">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1225,6 +1457,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -1254,13 +1490,14 @@
|
||||||
<event name="OnUpdateUI"></event>
|
<event name="OnUpdateUI"></event>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="0">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND</property>
|
<property name="flag">wxEXPAND</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxTextCtrl" expanded="1">
|
<object class="wxTextCtrl" expanded="0">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1276,6 +1513,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The size of the currently selected field's text in the schematic</property>
|
<property name="tooltip">The size of the currently selected field's text in the schematic</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="value"></property>
|
<property name="value"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
|
@ -1314,7 +1555,7 @@
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND</property>
|
<property name="flag">wxEXPAND</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxBoxSizer" expanded="0">
|
<object class="wxBoxSizer" expanded="0">
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="name">positionBoxSizer</property>
|
<property name="name">positionBoxSizer</property>
|
||||||
|
@ -1336,6 +1577,7 @@
|
||||||
<object class="wxStaticText" expanded="1">
|
<object class="wxStaticText" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1351,6 +1593,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -1387,6 +1633,7 @@
|
||||||
<object class="wxTextCtrl" expanded="1">
|
<object class="wxTextCtrl" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1402,6 +1649,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The X coordinate of the text relative to the component</property>
|
<property name="tooltip">The X coordinate of the text relative to the component</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="value"></property>
|
<property name="value"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
|
@ -1453,6 +1704,7 @@
|
||||||
<object class="wxStaticText" expanded="1">
|
<object class="wxStaticText" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1468,6 +1720,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip"></property>
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
|
@ -1504,6 +1760,7 @@
|
||||||
<object class="wxTextCtrl" expanded="1">
|
<object class="wxTextCtrl" expanded="1">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
|
@ -1519,6 +1776,10 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="tooltip">The Y coordinate of the text relative to the component</property>
|
<property name="tooltip">The Y coordinate of the text relative to the component</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
<property name="value"></property>
|
<property name="value"></property>
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
|
@ -1556,26 +1817,6 @@
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">1</property>
|
|
||||||
<object class="spacer" expanded="1">
|
|
||||||
<property name="height">0</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="width">0</property>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="1">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">1</property>
|
|
||||||
<object class="spacer" expanded="1">
|
|
||||||
<property name="height">0</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="width">0</property>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Sep 8 2010)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -48,6 +48,8 @@ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP : public wxDialog
|
||||||
wxButton* addFieldButton;
|
wxButton* addFieldButton;
|
||||||
wxButton* deleteFieldButton;
|
wxButton* deleteFieldButton;
|
||||||
wxButton* moveUpButton;
|
wxButton* moveUpButton;
|
||||||
|
wxRadioBox* m_FieldHJustifyCtrl;
|
||||||
|
wxRadioBox* m_FieldVJustifyCtrl;
|
||||||
wxCheckBox* showCheckBox;
|
wxCheckBox* showCheckBox;
|
||||||
wxCheckBox* rotateCheckBox;
|
wxCheckBox* rotateCheckBox;
|
||||||
wxRadioBox* m_StyleRadioBox;
|
wxRadioBox* m_StyleRadioBox;
|
||||||
|
@ -61,25 +63,24 @@ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP : public wxDialog
|
||||||
wxTextCtrl* posXTextCtrl;
|
wxTextCtrl* posXTextCtrl;
|
||||||
wxStaticText* posYLabel;
|
wxStaticText* posYLabel;
|
||||||
wxTextCtrl* posYTextCtrl;
|
wxTextCtrl* posYTextCtrl;
|
||||||
|
|
||||||
|
|
||||||
wxStdDialogButtonSizer* stdDialogButtonSizer;
|
wxStdDialogButtonSizer* stdDialogButtonSizer;
|
||||||
wxButton* stdDialogButtonSizerOK;
|
wxButton* stdDialogButtonSizerOK;
|
||||||
wxButton* stdDialogButtonSizerCancel;
|
wxButton* stdDialogButtonSizerCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void SetInitCmp( wxCommandEvent& event ){ event.Skip(); }
|
virtual void SetInitCmp( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnListItemDeselected( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
|
||||||
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
|
||||||
virtual void addFieldButtonHandler( wxCommandEvent& event ){ event.Skip(); }
|
virtual void addFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void deleteFieldButtonHandler( wxCommandEvent& event ){ event.Skip(); }
|
virtual void deleteFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void moveUpButtonHandler( wxCommandEvent& event ){ event.Skip(); }
|
virtual void moveUpButtonHandler( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnCancelButtonClick( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnOKButtonClick( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Component Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 630,520 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
|
|
||||||
|
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Component Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 715,520 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
|
||||||
~DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP();
|
~DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -92,24 +92,18 @@ void DialogLabelEditor::InitDialog()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned MINTEXTWIDTH = 40; // M's are big characters, a few establish a lot of width
|
int MINTEXTWIDTH = 40; // M's are big characters, a few establish a lot of width
|
||||||
|
|
||||||
if( m_CurrentText->m_Text.Length() < MINTEXTWIDTH )
|
int max_len = 0;
|
||||||
|
if ( !multiLine )
|
||||||
{
|
{
|
||||||
wxString textWidth;
|
max_len =m_CurrentText->m_Text.Length();
|
||||||
textWidth.Append( 'M', MINTEXTWIDTH );
|
|
||||||
EnsureTextCtrlWidth( m_textLabel, &textWidth );
|
|
||||||
}
|
|
||||||
else if ( !multiLine )
|
|
||||||
{
|
|
||||||
EnsureTextCtrlWidth( m_textLabel );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// calculate the length of the biggest line
|
// calculate the length of the biggest line
|
||||||
// we cannot use the length of the entire text that has no meaning
|
// we cannot use the length of the entire text that has no meaning
|
||||||
int max_len = 0;
|
int curr_len = MINTEXTWIDTH;
|
||||||
int curr_len = 0;
|
|
||||||
int imax = m_CurrentText->m_Text.Len();
|
int imax = m_CurrentText->m_Text.Len();
|
||||||
for( int count = 0; count < imax; count++ )
|
for( int count = 0; count < imax; count++ )
|
||||||
{
|
{
|
||||||
|
@ -125,10 +119,13 @@ void DialogLabelEditor::InitDialog()
|
||||||
max_len = curr_len;
|
max_len = curr_len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wxString textWidth;
|
|
||||||
textWidth.Append( 'M', max_len );
|
|
||||||
EnsureTextCtrlWidth( m_textLabel, &textWidth );
|
|
||||||
}
|
}
|
||||||
|
if( max_len < MINTEXTWIDTH )
|
||||||
|
max_len = MINTEXTWIDTH;
|
||||||
|
|
||||||
|
wxString textWidth;
|
||||||
|
textWidth.Append( 'M', MINTEXTWIDTH );
|
||||||
|
EnsureTextCtrlWidth( m_textLabel, &textWidth );
|
||||||
|
|
||||||
// Set validators
|
// Set validators
|
||||||
m_TextOrient->SetSelection( m_CurrentText->GetSchematicTextOrientation() );
|
m_TextOrient->SetSelection( m_CurrentText->GetSchematicTextOrientation() );
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Sep 8 2010)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -107,4 +107,5 @@ DialogLabelEditor_Base::~DialogLabelEditor_Base()
|
||||||
m_textLabelMultiLine->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DialogLabelEditor_Base::OnEnterKey ), NULL, this );
|
m_textLabelMultiLine->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DialogLabelEditor_Base::OnEnterKey ), NULL, this );
|
||||||
m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogLabelEditor_Base::OnCancelClick ), NULL, this );
|
m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogLabelEditor_Base::OnCancelClick ), NULL, this );
|
||||||
m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogLabelEditor_Base::OnOkClick ), NULL, this );
|
m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogLabelEditor_Base::OnOkClick ), NULL, this );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Sep 8 2010)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -54,12 +54,13 @@ class DialogLabelEditor_Base : public wxDialog
|
||||||
wxButton* m_sdbSizer1Cancel;
|
wxButton* m_sdbSizer1Cancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnEnterKey( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnEnterKey( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnCancelClick( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnOkClick( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DialogLabelEditor_Base( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Text Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 359,347 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
DialogLabelEditor_Base( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Text Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 359,347 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~DialogLabelEditor_Base();
|
~DialogLabelEditor_Base();
|
||||||
|
|
||||||
|
|
|
@ -611,7 +611,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copySelectedFieldToPanel()
|
||||||
|
|
||||||
m_StyleRadioBox->SetSelection( style );
|
m_StyleRadioBox->SetSelection( style );
|
||||||
|
|
||||||
// Copy the text justification
|
// Select the right text justification
|
||||||
if( field.m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
if( field.m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
||||||
m_FieldHJustifyCtrl->SetSelection(0);
|
m_FieldHJustifyCtrl->SetSelection(0);
|
||||||
else if( field.m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
else if( field.m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Sep 8 2010)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -50,21 +50,13 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
|
||||||
wxStaticBoxSizer* optionsSizer;
|
wxStaticBoxSizer* optionsSizer;
|
||||||
optionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxHORIZONTAL );
|
optionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxHORIZONTAL );
|
||||||
|
|
||||||
wxBoxSizer* orientationSizer;
|
|
||||||
orientationSizer = new wxBoxSizer( wxHORIZONTAL );
|
|
||||||
|
|
||||||
wxString m_FieldHJustifyCtrlChoices[] = { _("Align left"), _("Align center"), _("Align right") };
|
wxString m_FieldHJustifyCtrlChoices[] = { _("Align left"), _("Align center"), _("Align right") };
|
||||||
int m_FieldHJustifyCtrlNChoices = sizeof( m_FieldHJustifyCtrlChoices ) / sizeof( wxString );
|
int m_FieldHJustifyCtrlNChoices = sizeof( m_FieldHJustifyCtrlChoices ) / sizeof( wxString );
|
||||||
m_FieldHJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Horiz. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldHJustifyCtrlNChoices, m_FieldHJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
|
m_FieldHJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Horiz. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldHJustifyCtrlNChoices, m_FieldHJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
|
||||||
m_FieldHJustifyCtrl->SetSelection( 1 );
|
m_FieldHJustifyCtrl->SetSelection( 1 );
|
||||||
m_FieldHJustifyCtrl->SetToolTip( _("Select if the component is to be rotated when drawn") );
|
m_FieldHJustifyCtrl->SetToolTip( _("Select if the component is to be rotated when drawn") );
|
||||||
|
|
||||||
orientationSizer->Add( m_FieldHJustifyCtrl, 1, wxALL, 8 );
|
optionsSizer->Add( m_FieldHJustifyCtrl, 1, wxBOTTOM|wxRIGHT|wxLEFT, 8 );
|
||||||
|
|
||||||
optionsSizer->Add( orientationSizer, 1, wxLEFT|wxRIGHT|wxTOP|wxEXPAND|wxALIGN_CENTER_VERTICAL, 0 );
|
|
||||||
|
|
||||||
wxBoxSizer* mirrorSizer;
|
|
||||||
mirrorSizer = new wxBoxSizer( wxHORIZONTAL );
|
|
||||||
|
|
||||||
wxString m_FieldVJustifyCtrlChoices[] = { _("Align bottom"), _("Align center"), _("Align top") };
|
wxString m_FieldVJustifyCtrlChoices[] = { _("Align bottom"), _("Align center"), _("Align top") };
|
||||||
int m_FieldVJustifyCtrlNChoices = sizeof( m_FieldVJustifyCtrlChoices ) / sizeof( wxString );
|
int m_FieldVJustifyCtrlNChoices = sizeof( m_FieldVJustifyCtrlChoices ) / sizeof( wxString );
|
||||||
|
@ -72,11 +64,9 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
|
||||||
m_FieldVJustifyCtrl->SetSelection( 1 );
|
m_FieldVJustifyCtrl->SetSelection( 1 );
|
||||||
m_FieldVJustifyCtrl->SetToolTip( _("Pick the graphical transformation to be used when displaying the component, if any") );
|
m_FieldVJustifyCtrl->SetToolTip( _("Pick the graphical transformation to be used when displaying the component, if any") );
|
||||||
|
|
||||||
mirrorSizer->Add( m_FieldVJustifyCtrl, 1, wxALL, 8 );
|
optionsSizer->Add( m_FieldVJustifyCtrl, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 8 );
|
||||||
|
|
||||||
optionsSizer->Add( mirrorSizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, 0 );
|
fieldEditBoxSizer->Add( optionsSizer, 0, wxALIGN_TOP|wxEXPAND|wxBOTTOM, 5 );
|
||||||
|
|
||||||
fieldEditBoxSizer->Add( optionsSizer, 0, wxALIGN_TOP|wxALL|wxEXPAND, 5 );
|
|
||||||
|
|
||||||
wxStaticBoxSizer* visibilitySizer;
|
wxStaticBoxSizer* visibilitySizer;
|
||||||
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Visibility") ), wxHORIZONTAL );
|
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Visibility") ), wxHORIZONTAL );
|
||||||
|
@ -85,13 +75,11 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
|
||||||
bShowRotateSizer = new wxBoxSizer( wxVERTICAL );
|
bShowRotateSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
showCheckBox = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
|
showCheckBox = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
showCheckBox->SetToolTip( _("Check if you want this field visible") );
|
showCheckBox->SetToolTip( _("Check if you want this field visible") );
|
||||||
|
|
||||||
bShowRotateSizer->Add( showCheckBox, 0, wxALL, 5 );
|
bShowRotateSizer->Add( showCheckBox, 0, wxALL, 5 );
|
||||||
|
|
||||||
rotateCheckBox = new wxCheckBox( this, wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
|
rotateCheckBox = new wxCheckBox( this, wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
rotateCheckBox->SetToolTip( _("Check if you want this field's text rotated 90 degrees") );
|
rotateCheckBox->SetToolTip( _("Check if you want this field's text rotated 90 degrees") );
|
||||||
|
|
||||||
bShowRotateSizer->Add( rotateCheckBox, 0, wxALL, 5 );
|
bShowRotateSizer->Add( rotateCheckBox, 0, wxALL, 5 );
|
||||||
|
@ -101,7 +89,7 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
|
||||||
wxString m_StyleRadioBoxChoices[] = { _("Normal"), _("Italic"), _("Bold"), _("Bold Italic") };
|
wxString m_StyleRadioBoxChoices[] = { _("Normal"), _("Italic"), _("Bold"), _("Bold Italic") };
|
||||||
int m_StyleRadioBoxNChoices = sizeof( m_StyleRadioBoxChoices ) / sizeof( wxString );
|
int m_StyleRadioBoxNChoices = sizeof( m_StyleRadioBoxChoices ) / sizeof( wxString );
|
||||||
m_StyleRadioBox = new wxRadioBox( this, wxID_ANY, _("Style:"), wxDefaultPosition, wxDefaultSize, m_StyleRadioBoxNChoices, m_StyleRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
|
m_StyleRadioBox = new wxRadioBox( this, wxID_ANY, _("Style:"), wxDefaultPosition, wxDefaultSize, m_StyleRadioBoxNChoices, m_StyleRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
|
||||||
m_StyleRadioBox->SetSelection( 0 );
|
m_StyleRadioBox->SetSelection( 1 );
|
||||||
visibilitySizer->Add( m_StyleRadioBox, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
visibilitySizer->Add( m_StyleRadioBox, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
fieldEditBoxSizer->Add( visibilitySizer, 0, wxEXPAND, 5 );
|
fieldEditBoxSizer->Add( visibilitySizer, 0, wxEXPAND, 5 );
|
||||||
|
@ -216,4 +204,5 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BAS
|
||||||
moveUpButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::moveUpButtonHandler ), NULL, this );
|
moveUpButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::moveUpButtonHandler ), NULL, this );
|
||||||
stdDialogButtonSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnCancelButtonClick ), NULL, this );
|
stdDialogButtonSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnCancelButtonClick ), NULL, this );
|
||||||
stdDialogButtonSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnOKButtonClick ), NULL, this );
|
stdDialogButtonSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnOKButtonClick ), NULL, this );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Sep 8 2010)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -60,18 +60,19 @@ class DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE : public wxDialog
|
||||||
wxButton* stdDialogButtonSizerCancel;
|
wxButton* stdDialogButtonSizerCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnInitDialog( wxInitDialogEvent& event ){ event.Skip(); }
|
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||||
virtual void OnListItemDeselected( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
|
||||||
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
|
||||||
virtual void addFieldButtonHandler( wxCommandEvent& event ){ event.Skip(); }
|
virtual void addFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void deleteFieldButtonHandler( wxCommandEvent& event ){ event.Skip(); }
|
virtual void deleteFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void moveUpButtonHandler( wxCommandEvent& event ){ event.Skip(); }
|
virtual void moveUpButtonHandler( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnCancelButtonClick( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void OnOKButtonClick( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Fields Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 773,550 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
|
|
||||||
|
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Fields Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 615,550 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
|
||||||
~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE();
|
~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
DIALOG_SCH_EDIT_SHEET_PIN_BASE::DIALOG_SCH_EDIT_SHEET_PIN_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
|
DIALOG_SCH_EDIT_SHEET_PIN_BASE::DIALOG_SCH_EDIT_SHEET_PIN_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
|
||||||
{
|
{
|
||||||
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
this->SetSizeHints( wxSize( 350,-1 ), wxDefaultSize );
|
||||||
|
|
||||||
wxBoxSizer* m_mainSizer;
|
wxBoxSizer* m_mainSizer;
|
||||||
m_mainSizer = new wxBoxSizer( wxVERTICAL );
|
m_mainSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
@ -21,6 +21,7 @@ DIALOG_SCH_EDIT_SHEET_PIN_BASE::DIALOG_SCH_EDIT_SHEET_PIN_BASE( wxWindow* parent
|
||||||
|
|
||||||
wxFlexGridSizer* fgSizer1;
|
wxFlexGridSizer* fgSizer1;
|
||||||
fgSizer1 = new wxFlexGridSizer( 4, 3, 0, 0 );
|
fgSizer1 = new wxFlexGridSizer( 4, 3, 0, 0 );
|
||||||
|
fgSizer1->AddGrowableCol( 1 );
|
||||||
fgSizer1->SetFlexibleDirection( wxBOTH );
|
fgSizer1->SetFlexibleDirection( wxBOTH );
|
||||||
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||||
|
|
||||||
|
@ -85,7 +86,6 @@ DIALOG_SCH_EDIT_SHEET_PIN_BASE::DIALOG_SCH_EDIT_SHEET_PIN_BASE( wxWindow* parent
|
||||||
|
|
||||||
this->SetSizer( m_mainSizer );
|
this->SetSizer( m_mainSizer );
|
||||||
this->Layout();
|
this->Layout();
|
||||||
m_mainSizer->Fit( this );
|
|
||||||
|
|
||||||
this->Centre( wxBOTH );
|
this->Centre( wxBOTH );
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,10 +34,10 @@
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size">350,-1</property>
|
||||||
<property name="name">DIALOG_SCH_EDIT_SHEET_PIN_BASE</property>
|
<property name="name">DIALOG_SCH_EDIT_SHEET_PIN_BASE</property>
|
||||||
<property name="pos"></property>
|
<property name="pos"></property>
|
||||||
<property name="size"></property>
|
<property name="size">350,189</property>
|
||||||
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="title">Sheet Pin Properties</property>
|
<property name="title">Sheet Pin Properties</property>
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
<object class="wxFlexGridSizer" expanded="1">
|
<object class="wxFlexGridSizer" expanded="1">
|
||||||
<property name="cols">3</property>
|
<property name="cols">3</property>
|
||||||
<property name="flexible_direction">wxBOTH</property>
|
<property name="flexible_direction">wxBOTH</property>
|
||||||
<property name="growablecols"></property>
|
<property name="growablecols">1</property>
|
||||||
<property name="growablerows"></property>
|
<property name="growablerows"></property>
|
||||||
<property name="hgap">0</property>
|
<property name="hgap">0</property>
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
|
|
|
@ -52,7 +52,7 @@ class DIALOG_SCH_EDIT_SHEET_PIN_BASE : public wxDialog
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DIALOG_SCH_EDIT_SHEET_PIN_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Sheet Pin Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
DIALOG_SCH_EDIT_SHEET_PIN_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Sheet Pin Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,189 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~DIALOG_SCH_EDIT_SHEET_PIN_BASE();
|
~DIALOG_SCH_EDIT_SHEET_PIN_BASE();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,7 +42,7 @@ void SCH_EDIT_FRAME::StartMoveCmpField( SCH_FIELD* aField, wxDC* DC )
|
||||||
SCH_COMPONENT* comp = (SCH_COMPONENT*) aField->GetParent();
|
SCH_COMPONENT* comp = (SCH_COMPONENT*) aField->GetParent();
|
||||||
|
|
||||||
SAFE_DELETE( g_ItemToUndoCopy );
|
SAFE_DELETE( g_ItemToUndoCopy );
|
||||||
g_ItemToUndoCopy = comp->GenCopy();
|
g_ItemToUndoCopy = new SCH_COMPONENT( *comp );
|
||||||
|
|
||||||
pos = comp->m_Pos;
|
pos = comp->m_Pos;
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ void SCH_EDIT_FRAME::StartMoveTexte( SCH_TEXT* TextStruct, wxDC* DC )
|
||||||
if( (TextStruct->m_Flags & IS_NEW) == 0 )
|
if( (TextStruct->m_Flags & IS_NEW) == 0 )
|
||||||
{
|
{
|
||||||
delete g_ItemToUndoCopy;
|
delete g_ItemToUndoCopy;
|
||||||
g_ItemToUndoCopy = TextStruct->GenCopy();
|
g_ItemToUndoCopy = TextStruct->Clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextStruct->m_Flags |= IS_MOVED;
|
TextStruct->m_Flags |= IS_MOVED;
|
||||||
|
|
|
@ -14,10 +14,14 @@
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_sheet_path.h"
|
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
|
#include "sch_sheet.h"
|
||||||
|
#include "sch_sheet_path.h"
|
||||||
|
|
||||||
#include "build_version.h"
|
#include "build_version.h"
|
||||||
|
|
||||||
|
@ -185,8 +189,8 @@ void DrawStructsInGhost( WinEDA_DrawPanel* aPanel,
|
||||||
case SCH_POLYLINE_T:
|
case SCH_POLYLINE_T:
|
||||||
{
|
{
|
||||||
SCH_POLYLINE* Struct = (SCH_POLYLINE*) aItem;
|
SCH_POLYLINE* Struct = (SCH_POLYLINE*) aItem;
|
||||||
GRMoveTo( Struct->m_PolyPoints[0].x + aOffset.x,
|
GRMoveTo( Struct->m_PolyPoints[0].x + aOffset.x, Struct->m_PolyPoints[0].y + aOffset.y );
|
||||||
Struct->m_PolyPoints[0].y + aOffset.y );
|
|
||||||
for( unsigned ii = 1; ii < Struct->GetCornerCount(); ii++ )
|
for( unsigned ii = 1; ii < Struct->GetCornerCount(); ii++ )
|
||||||
GRLineTo( &aPanel->m_ClipBox,
|
GRLineTo( &aPanel->m_ClipBox,
|
||||||
aDC,
|
aDC,
|
||||||
|
@ -202,15 +206,16 @@ void DrawStructsInGhost( WinEDA_DrawPanel* aPanel,
|
||||||
{
|
{
|
||||||
SCH_LINE* Struct;
|
SCH_LINE* Struct;
|
||||||
Struct = (SCH_LINE*) aItem;
|
Struct = (SCH_LINE*) aItem;
|
||||||
|
|
||||||
if( (Struct->m_Flags & STARTPOINT) == 0 )
|
if( (Struct->m_Flags & STARTPOINT) == 0 )
|
||||||
{
|
{
|
||||||
GRMoveTo( Struct->m_Start.x + aOffset.x,
|
GRMoveTo( Struct->m_Start.x + aOffset.x, Struct->m_Start.y + aOffset.y );
|
||||||
Struct->m_Start.y + aOffset.y );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GRMoveTo( Struct->m_Start.x, Struct->m_Start.y );
|
GRMoveTo( Struct->m_Start.x, Struct->m_Start.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (Struct->m_Flags & ENDPOINT) == 0 )
|
if( (Struct->m_Flags & ENDPOINT) == 0 )
|
||||||
{
|
{
|
||||||
GRLineTo( &aPanel->m_ClipBox, aDC, Struct->m_End.x + aOffset.x,
|
GRLineTo( &aPanel->m_ClipBox, aDC, Struct->m_End.x + aOffset.x,
|
||||||
|
|
|
@ -34,7 +34,7 @@ void SCH_EDIT_FRAME::OnCopySchematicItemRequest( wxCommandEvent& event )
|
||||||
case SCH_COMPONENT_T:
|
case SCH_COMPONENT_T:
|
||||||
{
|
{
|
||||||
SCH_COMPONENT* newitem;
|
SCH_COMPONENT* newitem;
|
||||||
newitem = ((SCH_COMPONENT*) curr_item)->GenCopy();
|
newitem = new SCH_COMPONENT( *( (SCH_COMPONENT*) curr_item ) );
|
||||||
newitem->m_TimeStamp = GetTimeStamp();
|
newitem->m_TimeStamp = GetTimeStamp();
|
||||||
newitem->ClearAnnotation( NULL );
|
newitem->ClearAnnotation( NULL );
|
||||||
newitem->m_Flags = IS_NEW;
|
newitem->m_Flags = IS_NEW;
|
||||||
|
@ -51,7 +51,7 @@ void SCH_EDIT_FRAME::OnCopySchematicItemRequest( wxCommandEvent& event )
|
||||||
case SCH_GLOBAL_LABEL_T:
|
case SCH_GLOBAL_LABEL_T:
|
||||||
case SCH_HIERARCHICAL_LABEL_T:
|
case SCH_HIERARCHICAL_LABEL_T:
|
||||||
{
|
{
|
||||||
SCH_TEXT* newitem = ((SCH_TEXT*) curr_item)->GenCopy();
|
SCH_TEXT* newitem = (SCH_TEXT*) curr_item->Clone();
|
||||||
newitem->m_Flags = IS_NEW;
|
newitem->m_Flags = IS_NEW;
|
||||||
StartMoveTexte( newitem, &dc );
|
StartMoveTexte( newitem, &dc );
|
||||||
/* Redraw the original part in XOR mode */
|
/* Redraw the original part in XOR mode */
|
||||||
|
|
|
@ -420,7 +420,8 @@ void SCH_EDIT_FRAME::StartMovePart( SCH_COMPONENT* Component, wxDC* DC )
|
||||||
{
|
{
|
||||||
SAFE_DELETE( g_ItemToUndoCopy );
|
SAFE_DELETE( g_ItemToUndoCopy );
|
||||||
}
|
}
|
||||||
g_ItemToUndoCopy = Component->GenCopy();
|
|
||||||
|
g_ItemToUndoCopy = Component->Clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawPanel->CursorOff( DC );
|
DrawPanel->CursorOff( DC );
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "libeditframe.h"
|
#include "libeditframe.h"
|
||||||
#include "class_libentry.h"
|
#include "class_libentry.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
@ -510,8 +511,10 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct )
|
||||||
if( DrawStruct->Type() == SCH_LINE_T )
|
if( DrawStruct->Type() == SCH_LINE_T )
|
||||||
{
|
{
|
||||||
SCH_LINE* segment = (SCH_LINE*) DrawStruct;
|
SCH_LINE* segment = (SCH_LINE*) DrawStruct;
|
||||||
|
|
||||||
if( segment->GetLayer() != LAYER_BUS )
|
if( segment->GetLayer() != LAYER_BUS )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Bus in progress:
|
// Bus in progress:
|
||||||
OnLeftClick( DC, MousePos );
|
OnLeftClick( DC, MousePos );
|
||||||
}
|
}
|
||||||
|
@ -670,7 +673,12 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct )
|
||||||
|
|
||||||
if( DrawStruct == NULL )
|
if( DrawStruct == NULL )
|
||||||
{
|
{
|
||||||
// Find the schematic object to move under the cursor
|
// For a drag or copy command, try to find first a component:
|
||||||
|
if( DrawStruct == NULL && HK_Descr->m_Idcommand != HK_MOVE_COMPONENT_OR_ITEM )
|
||||||
|
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||||
|
|
||||||
|
// If no component, find the schematic object to move/drag or copy under the cursor
|
||||||
|
if( DrawStruct == NULL )
|
||||||
DrawStruct = SchematicGeneralLocateAndDisplay( false );
|
DrawStruct = SchematicGeneralLocateAndDisplay( false );
|
||||||
|
|
||||||
if( DrawStruct == NULL )
|
if( DrawStruct == NULL )
|
||||||
|
@ -748,7 +756,12 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct )
|
||||||
|
|
||||||
case SCH_LINE_T:
|
case SCH_LINE_T:
|
||||||
if( ( (SCH_ITEM*) DrawStruct )->GetLayer() == LAYER_WIRE )
|
if( ( (SCH_ITEM*) DrawStruct )->GetLayer() == LAYER_WIRE )
|
||||||
|
{
|
||||||
|
if( HK_Descr->m_Idcommand == HK_DRAG )
|
||||||
wxPostEvent( this, eventDragWire );
|
wxPostEvent( this, eventDragWire );
|
||||||
|
else
|
||||||
|
wxPostEvent( this, eventMoveItem );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -263,8 +263,8 @@ void LIB_ARC::DoOffset( const wxPoint& aOffset )
|
||||||
|
|
||||||
bool LIB_ARC::DoTestInside( EDA_Rect& aRect ) const
|
bool LIB_ARC::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
return aRect.Inside( m_ArcStart.x, -m_ArcStart.y )
|
return aRect.Contains( m_ArcStart.x, -m_ArcStart.y )
|
||||||
|| aRect.Inside( m_ArcEnd.x, -m_ArcEnd.y );
|
|| aRect.Contains( m_ArcEnd.x, -m_ArcEnd.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ bool LIB_BEZIER::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
||||||
{
|
{
|
||||||
if( aRect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
if( aRect.Contains( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,7 @@ bool LIB_CIRCLE::DoTestInside( EDA_Rect& aRect ) const
|
||||||
* FIXME: This fails to take into account the radius around the center
|
* FIXME: This fails to take into account the radius around the center
|
||||||
* point.
|
* point.
|
||||||
*/
|
*/
|
||||||
return aRect.Inside( m_Pos.x, -m_Pos.y );
|
return aRect.Contains( m_Pos.x, -m_Pos.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -326,8 +326,6 @@ void LIB_FIELD::drawGraphic( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint&
|
||||||
|
|
||||||
if( aData )
|
if( aData )
|
||||||
text = *(wxString*)aData;
|
text = *(wxString*)aData;
|
||||||
else if( InEditMode() )
|
|
||||||
text = GetFullText( m_Unit );
|
|
||||||
else
|
else
|
||||||
text = m_Text;
|
text = m_Text;
|
||||||
|
|
||||||
|
@ -350,6 +348,11 @@ void LIB_FIELD::drawGraphic( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint&
|
||||||
|
|
||||||
bool LIB_FIELD::HitTest( const wxPoint& aPosition )
|
bool LIB_FIELD::HitTest( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
|
// Because HitTest is mainly used to select the field
|
||||||
|
// return always false if this field is void
|
||||||
|
if( IsVoid() )
|
||||||
|
return false;
|
||||||
|
|
||||||
return HitTest( aPosition, 0, DefaultTransform );
|
return HitTest( aPosition, 0, DefaultTransform );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -466,7 +469,7 @@ bool LIB_FIELD::DoTestInside( EDA_Rect& rect ) const
|
||||||
* FIXME: This fails to take into acount the size and/or orientation of
|
* FIXME: This fails to take into acount the size and/or orientation of
|
||||||
* the text.
|
* the text.
|
||||||
*/
|
*/
|
||||||
return rect.Inside( m_Pos.x, -m_Pos.y );
|
return rect.Contains( m_Pos.x, -m_Pos.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,15 @@ public:
|
||||||
|
|
||||||
void SetFields( const std::vector <LIB_FIELD> aFields );
|
void SetFields( const std::vector <LIB_FIELD> aFields );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function IsVoid
|
||||||
|
* @return true if the field value is void (no text in this field)
|
||||||
|
*/
|
||||||
|
bool IsVoid()
|
||||||
|
{
|
||||||
|
return m_Text.IsEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function IsVisible
|
* Function IsVisible
|
||||||
* @return true is this field is visible, false if flagged invisible
|
* @return true is this field is visible, false if flagged invisible
|
||||||
|
|
|
@ -1653,7 +1653,7 @@ bool LIB_PIN::DoTestInside( EDA_Rect& rect ) const
|
||||||
{
|
{
|
||||||
wxPoint end = ReturnPinEndPoint();
|
wxPoint end = ReturnPinEndPoint();
|
||||||
|
|
||||||
return rect.Inside( m_position.x, -m_position.y ) || rect.Inside( end.x, -end.y );
|
return rect.Contains( m_position.x, -m_position.y ) || rect.Contains( end.x, -end.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -162,7 +162,7 @@ bool LIB_POLYLINE::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
||||||
{
|
{
|
||||||
if( aRect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
if( aRect.Contains( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ void LIB_RECTANGLE::DoOffset( const wxPoint& aOffset )
|
||||||
|
|
||||||
bool LIB_RECTANGLE::DoTestInside( EDA_Rect& aRect ) const
|
bool LIB_RECTANGLE::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
return aRect.Inside( m_Pos.x, -m_Pos.y ) || aRect.Inside( m_End.x, -m_End.y );
|
return aRect.Contains( m_Pos.x, -m_Pos.y ) || aRect.Contains( m_End.x, -m_End.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@ bool LIB_TEXT::DoTestInside( EDA_Rect& rect ) const
|
||||||
* FIXME: This should calculate the text size and justification and
|
* FIXME: This should calculate the text size and justification and
|
||||||
* use rectangle instect.
|
* use rectangle instect.
|
||||||
*/
|
*/
|
||||||
return rect.Inside( m_Pos.x, -m_Pos.y );
|
return rect.Contains( m_Pos.x, -m_Pos.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,13 @@
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,13 @@
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
#include "lib_pin.h"
|
#include "lib_pin.h"
|
||||||
#include "template_fieldnames.h"
|
#include "template_fieldnames.h"
|
||||||
|
@ -139,6 +143,7 @@ int PickItemsInBlock( BLOCK_SELECTOR& aBlock, SCH_SCREEN* aScreen )
|
||||||
|
|
||||||
for( ; item != NULL; item = item->Next() )
|
for( ; item != NULL; item = item->Next() )
|
||||||
{
|
{
|
||||||
|
// an item is picked if its bounding box intersects the reference area
|
||||||
if( item->HitTest( area ) )
|
if( item->HitTest( area ) )
|
||||||
{
|
{
|
||||||
/* Put this structure in the picked list: */
|
/* Put this structure in the picked list: */
|
||||||
|
@ -310,7 +315,7 @@ bool SnapPoint2( const wxPoint& aPosRef, int SearchMask, SCH_ITEM* DrawList )
|
||||||
|
|
||||||
EDA_Rect BoundaryBox = field->GetBoundingBox();
|
EDA_Rect BoundaryBox = field->GetBoundingBox();
|
||||||
|
|
||||||
if( BoundaryBox.Inside( aPosRef ) )
|
if( BoundaryBox.Contains( aPosRef ) )
|
||||||
{
|
{
|
||||||
LastSnappedStruct = field;
|
LastSnappedStruct = field;
|
||||||
return true;
|
return true;
|
||||||
|
@ -323,7 +328,7 @@ bool SnapPoint2( const wxPoint& aPosRef, int SearchMask, SCH_ITEM* DrawList )
|
||||||
#define STRUCT ( (SCH_COMPONENT*) DrawList )
|
#define STRUCT ( (SCH_COMPONENT*) DrawList )
|
||||||
EDA_Rect BoundaryBox = STRUCT->GetBoundingBox();
|
EDA_Rect BoundaryBox = STRUCT->GetBoundingBox();
|
||||||
|
|
||||||
if( BoundaryBox.Inside( aPosRef ) )
|
if( BoundaryBox.Contains( aPosRef ) )
|
||||||
{
|
{
|
||||||
LastSnappedStruct = DrawList;
|
LastSnappedStruct = DrawList;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#include "lib_pin.h"
|
#include "lib_pin.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,12 @@
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,13 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "hotkeys.h"
|
#include "hotkeys.h"
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
#include "sch_sheet_path.h"
|
#include "sch_sheet_path.h"
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,11 @@
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
@ -30,8 +34,7 @@ void RotateListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& rotationPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DeleteItemsInList( WinEDA_DrawPanel* panel,
|
void DeleteItemsInList( WinEDA_DrawPanel* panel, PICKED_ITEMS_LIST& aItemsList );
|
||||||
PICKED_ITEMS_LIST& aItemsList );
|
|
||||||
void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
|
void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
|
||||||
const wxPoint aMoveVector );
|
const wxPoint aMoveVector );
|
||||||
|
|
||||||
|
@ -95,8 +98,7 @@ void DeleteItemsInList( WinEDA_DrawPanel* panel, PICKED_ITEMS_LIST& aItemsList )
|
||||||
if( item->Type() == SCH_SHEET_LABEL_T )
|
if( item->Type() == SCH_SHEET_LABEL_T )
|
||||||
{
|
{
|
||||||
/* this item is depending on a sheet, and is not in global list */
|
/* this item is depending on a sheet, and is not in global list */
|
||||||
wxMessageBox( wxT("DeleteItemsInList() err: unexpected \
|
wxMessageBox( wxT( "DeleteItemsInList() err: unexpected SCH_SHEET_LABEL_T" ) );
|
||||||
SCH_SHEET_LABEL_T" ) );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -218,82 +220,15 @@ void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
|
||||||
*/
|
*/
|
||||||
SCH_ITEM* DuplicateStruct( SCH_ITEM* aDrawStruct, bool aClone )
|
SCH_ITEM* DuplicateStruct( SCH_ITEM* aDrawStruct, bool aClone )
|
||||||
{
|
{
|
||||||
SCH_ITEM* NewDrawStruct = NULL;
|
wxCHECK_MSG( aDrawStruct != NULL, NULL,
|
||||||
|
wxT( "Cannot duplicate NULL schematic item! Bad programmer." ) );
|
||||||
|
|
||||||
if( aDrawStruct == NULL )
|
SCH_ITEM* NewDrawStruct = aDrawStruct->Clone();
|
||||||
{
|
|
||||||
wxMessageBox( wxT( "DuplicateStruct error: NULL struct" ) );
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( aDrawStruct->Type() )
|
|
||||||
{
|
|
||||||
case SCH_POLYLINE_T:
|
|
||||||
NewDrawStruct = ( (SCH_POLYLINE*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_LINE_T:
|
|
||||||
NewDrawStruct = ( (SCH_LINE*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_BUS_ENTRY_T:
|
|
||||||
NewDrawStruct = ( (SCH_BUS_ENTRY*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_JUNCTION_T:
|
|
||||||
NewDrawStruct = ( (SCH_JUNCTION*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_MARKER_T:
|
|
||||||
NewDrawStruct = ( (SCH_MARKER*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_NO_CONNECT_T:
|
|
||||||
NewDrawStruct = ( (SCH_NO_CONNECT*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_TEXT_T:
|
|
||||||
NewDrawStruct = ( (SCH_TEXT*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_LABEL_T:
|
|
||||||
NewDrawStruct = ( (SCH_LABEL*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_HIERARCHICAL_LABEL_T:
|
|
||||||
NewDrawStruct = ( (SCH_HIERLABEL*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_GLOBAL_LABEL_T:
|
|
||||||
NewDrawStruct = ( (SCH_GLOBALLABEL*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_COMPONENT_T:
|
|
||||||
NewDrawStruct = ( (SCH_COMPONENT*) aDrawStruct )->GenCopy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCH_SHEET_T:
|
|
||||||
NewDrawStruct = ( (SCH_SHEET*) aDrawStruct )->GenCopy();
|
|
||||||
if( aClone )
|
|
||||||
{
|
|
||||||
( (SCH_SHEET*) NewDrawStruct )->m_SheetName =
|
|
||||||
( (SCH_SHEET*) aDrawStruct )->m_SheetName;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
wxString msg;
|
|
||||||
msg << wxT( "DuplicateStruct error: unexpected StructType " )
|
|
||||||
<< aDrawStruct->Type() << wxT( " " ) << aDrawStruct->GetClass();
|
|
||||||
wxMessageBox( msg );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( aClone )
|
if( aClone )
|
||||||
NewDrawStruct->m_TimeStamp = aDrawStruct->m_TimeStamp;
|
NewDrawStruct->m_TimeStamp = aDrawStruct->m_TimeStamp;
|
||||||
|
|
||||||
NewDrawStruct->m_Image = aDrawStruct;
|
NewDrawStruct->m_Image = aDrawStruct;
|
||||||
|
|
||||||
return NewDrawStruct;
|
return NewDrawStruct;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,10 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
#include "lib_pin.h"
|
#include "lib_pin.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
#include "sch_text.h"
|
#include "sch_text.h"
|
||||||
|
|
|
@ -0,0 +1,246 @@
|
||||||
|
/***********************/
|
||||||
|
/* class SCH_BUS_ENTRY */
|
||||||
|
/***********************/
|
||||||
|
|
||||||
|
#include "fctsys.h"
|
||||||
|
#include "gr_basic.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "class_drawpanel.h"
|
||||||
|
#include "trigo.h"
|
||||||
|
#include "common.h"
|
||||||
|
#include "richio.h"
|
||||||
|
|
||||||
|
#include "general.h"
|
||||||
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
|
|
||||||
|
|
||||||
|
SCH_BUS_ENTRY::SCH_BUS_ENTRY( const wxPoint& pos, int shape, int id ) :
|
||||||
|
SCH_ITEM( NULL, SCH_BUS_ENTRY_T )
|
||||||
|
{
|
||||||
|
m_Pos = pos;
|
||||||
|
m_Size.x = 100;
|
||||||
|
m_Size.y = 100;
|
||||||
|
m_Layer = LAYER_WIRE;
|
||||||
|
m_Width = 0;
|
||||||
|
|
||||||
|
if( id == BUS_TO_BUS )
|
||||||
|
{
|
||||||
|
m_Layer = LAYER_BUS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( shape == '/' )
|
||||||
|
m_Size.y = -100;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_BUS_ENTRY::SCH_BUS_ENTRY( const SCH_BUS_ENTRY& aBusEntry ) :
|
||||||
|
SCH_ITEM( aBusEntry )
|
||||||
|
{
|
||||||
|
m_Pos = aBusEntry.m_Pos;
|
||||||
|
m_Size = aBusEntry.m_Size;
|
||||||
|
m_Width = aBusEntry.m_Width;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_ITEM* SCH_BUS_ENTRY::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_BUS_ENTRY( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxPoint SCH_BUS_ENTRY::m_End() const
|
||||||
|
{
|
||||||
|
return wxPoint( m_Pos.x + m_Size.x, m_Pos.y + m_Size.y );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_BUS_ENTRY::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
const char* layer = "Wire";
|
||||||
|
const char* width = "Line";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_BUS )
|
||||||
|
{
|
||||||
|
layer = "Bus"; width = "Bus";
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fprintf( aFile, "Entry %s %s\n", layer, width ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
if( fprintf( aFile, "\t%-4d %-4d %-4d %-4d\n",
|
||||||
|
m_Pos.x, m_Pos.y, m_End().x, m_End().y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_BUS_ENTRY::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
|
{
|
||||||
|
char Name1[256];
|
||||||
|
char Name2[256];
|
||||||
|
char* line = (char*) aLine;
|
||||||
|
|
||||||
|
while( (*line != ' ' ) && *line )
|
||||||
|
line++;
|
||||||
|
|
||||||
|
if( sscanf( line, "%s %s", Name1, Name2 ) != 2 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file bus entry load error at line %d" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( (char*) aLine );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Layer = LAYER_WIRE;
|
||||||
|
|
||||||
|
if( Name1[0] == 'B' )
|
||||||
|
m_Layer = LAYER_BUS;
|
||||||
|
|
||||||
|
if( !aLine.ReadLine() || sscanf( (char*) aLine, "%d %d %d %d ", &m_Pos.x, &m_Pos.y,
|
||||||
|
&m_Size.x, &m_Size.y ) != 4 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file bus entry load error at line %d" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( (char*) aLine );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Size.x -= m_Pos.x;
|
||||||
|
m_Size.y -= m_Pos.y;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_Rect SCH_BUS_ENTRY::GetBoundingBox() const
|
||||||
|
{
|
||||||
|
EDA_Rect box;
|
||||||
|
|
||||||
|
box.SetOrigin( m_Pos );
|
||||||
|
box.SetEnd( m_End() );
|
||||||
|
|
||||||
|
box.Normalize();
|
||||||
|
int width = ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width;
|
||||||
|
box.Inflate( width / 2 );
|
||||||
|
|
||||||
|
return box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SCH_BUS_ENTRY::GetPenSize() const
|
||||||
|
{
|
||||||
|
int pensize = ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width;
|
||||||
|
|
||||||
|
if( m_Layer == LAYER_BUS && m_Width == 0 )
|
||||||
|
{
|
||||||
|
pensize = wxRound( g_DrawDefaultLineThickness * BUS_WIDTH_EXPAND );
|
||||||
|
pensize = MAX( pensize, 3 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return pensize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_BUS_ENTRY::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor )
|
||||||
|
{
|
||||||
|
int color;
|
||||||
|
|
||||||
|
if( aColor >= 0 )
|
||||||
|
color = aColor;
|
||||||
|
else
|
||||||
|
color = ReturnLayerColor( m_Layer );
|
||||||
|
|
||||||
|
GRSetDrawMode( aDC, aDrawMode );
|
||||||
|
|
||||||
|
GRLine( &aPanel->m_ClipBox, aDC, m_Pos.x + aOffset.x, m_Pos.y + aOffset.y,
|
||||||
|
m_End().x + aOffset.x, m_End().y + aOffset.y, GetPenSize(), color );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_BUS_ENTRY::Mirror_X( int aXaxis_position )
|
||||||
|
{
|
||||||
|
m_Pos.y -= aXaxis_position;
|
||||||
|
NEGATE( m_Pos.y );
|
||||||
|
m_Pos.y += aXaxis_position;
|
||||||
|
NEGATE( m_Size.y );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_BUS_ENTRY::Mirror_Y( int aYaxis_position )
|
||||||
|
{
|
||||||
|
m_Pos.x -= aYaxis_position;
|
||||||
|
NEGATE( m_Pos.x );
|
||||||
|
m_Pos.x += aYaxis_position;
|
||||||
|
NEGATE( m_Size.x );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_BUS_ENTRY::Rotate( wxPoint rotationPoint )
|
||||||
|
{
|
||||||
|
RotatePoint( &m_Pos, rotationPoint, 900 );
|
||||||
|
RotatePoint( &m_Size.x, &m_Size.y, 900 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_BUS_ENTRY::GetEndPoints( std::vector< DANGLING_END_ITEM >& aItemList )
|
||||||
|
{
|
||||||
|
DANGLING_END_ITEM item( ENTRY_END, this );
|
||||||
|
item.m_Pos = m_Pos;
|
||||||
|
|
||||||
|
DANGLING_END_ITEM item1( ENTRY_END, this );
|
||||||
|
item1.m_Pos = m_End();
|
||||||
|
aItemList.push_back( item );
|
||||||
|
aItemList.push_back( item1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_BUS_ENTRY::IsSelectStateChanged( const wxRect& aRect )
|
||||||
|
{
|
||||||
|
bool previousState = IsSelected();
|
||||||
|
|
||||||
|
// If either end of the bus entry is inside the selection rectangle, the entire
|
||||||
|
// bus entry is selected. Bus entries have a fixed length and angle.
|
||||||
|
if( aRect.Contains( m_Pos ) || aRect.Contains( m_End() ) )
|
||||||
|
m_Flags |= SELECTED;
|
||||||
|
else
|
||||||
|
m_Flags &= ~SELECTED;
|
||||||
|
|
||||||
|
return previousState != IsSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_BUS_ENTRY::GetConnectionPoints( vector< wxPoint >& aPoints ) const
|
||||||
|
{
|
||||||
|
aPoints.push_back( m_Pos );
|
||||||
|
aPoints.push_back( m_End() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_BUS_ENTRY::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
|
{
|
||||||
|
if( !( aFilter & BUS_ENTRY_T ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return TestSegmentHit( aPoint, m_Pos, m_End(), aAccuracy );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_BUS_ENTRY::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
|
{
|
||||||
|
EDA_Rect rect = aRect;
|
||||||
|
|
||||||
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
|
if( aContained )
|
||||||
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
|
return rect.Intersects( GetBoundingBox() );
|
||||||
|
}
|
|
@ -0,0 +1,115 @@
|
||||||
|
/**
|
||||||
|
* @file sch_bus_entry.h
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SCH_BUS_ENTRY_H_
|
||||||
|
#define _SCH_BUS_ENTRY_H_
|
||||||
|
|
||||||
|
#include "sch_item_struct.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Flags for BUS ENTRY (bus to bus or wire to bus */
|
||||||
|
#define WIRE_TO_BUS 0
|
||||||
|
#define BUS_TO_BUS 1
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SCH_BUS_ENTRY
|
||||||
|
*
|
||||||
|
* Defines a bus or wire entry.
|
||||||
|
*/
|
||||||
|
class SCH_BUS_ENTRY : public SCH_ITEM
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int m_Width;
|
||||||
|
wxPoint m_Pos;
|
||||||
|
wxSize m_Size;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SCH_BUS_ENTRY( const wxPoint& pos = wxPoint( 0, 0 ), int shape = '\\', int id = WIRE_TO_BUS );
|
||||||
|
|
||||||
|
SCH_BUS_ENTRY( const SCH_BUS_ENTRY& aBusEntry );
|
||||||
|
|
||||||
|
~SCH_BUS_ENTRY() { }
|
||||||
|
|
||||||
|
virtual wxString GetClass() const
|
||||||
|
{
|
||||||
|
return wxT( "SCH_BUS_ENTRY" );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPoint m_End() const;
|
||||||
|
|
||||||
|
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.sch"
|
||||||
|
* format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load schematic bus entry from \a aLine in a .sch file.
|
||||||
|
*
|
||||||
|
* @param aLine - Essentially this is file to read schematic bus entry from.
|
||||||
|
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
||||||
|
* schematic bus entry.
|
||||||
|
* @return True if the schematic bus entry loaded successfully.
|
||||||
|
*/
|
||||||
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetBoundingBox
|
||||||
|
* returns the orthogonal, bounding box of this object for display
|
||||||
|
* purposes. This box should be an enclosing perimeter for visible
|
||||||
|
* components of this object, and the units should be in the pcb or
|
||||||
|
* schematic coordinate system. It is OK to overestimate the size
|
||||||
|
* by a few counts.
|
||||||
|
*/
|
||||||
|
EDA_Rect GetBoundingBox() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPenSize
|
||||||
|
* @return the size of the "pen" that be used to draw or plot this item
|
||||||
|
*/
|
||||||
|
virtual int GetPenSize() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Move
|
||||||
|
* moves and item to a new position by \a aMoveVector.
|
||||||
|
* @param aMoveVector The displacement vector.
|
||||||
|
*/
|
||||||
|
virtual void Move( const wxPoint& aMoveVector )
|
||||||
|
{
|
||||||
|
m_Pos += aMoveVector;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Mirror_Y
|
||||||
|
* mirrors the item relative to \a aYaxis_position.
|
||||||
|
* @param aYaxis_position The Y axis coordinate to mirror around.
|
||||||
|
*/
|
||||||
|
virtual void Mirror_Y( int aYaxis_position );
|
||||||
|
|
||||||
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
|
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
|
||||||
|
|
||||||
|
virtual bool IsSelectStateChanged( const wxRect& aRect );
|
||||||
|
|
||||||
|
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _SCH_BUS_ENTRY_H_
|
|
@ -130,20 +130,21 @@ SCH_COMPONENT::SCH_COMPONENT( LIB_COMPONENT& libComponent, SCH_SHEET_PATH* sheet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_COMPONENT::SCH_COMPONENT( const SCH_COMPONENT& aTemplate ) :
|
SCH_COMPONENT::SCH_COMPONENT( const SCH_COMPONENT& aComponent ) :
|
||||||
SCH_ITEM( NULL, SCH_COMPONENT_T )
|
SCH_ITEM( aComponent )
|
||||||
{
|
{
|
||||||
/* assignment of all fields, including field vector elements, and linked
|
m_Parent = aComponent.m_Parent;
|
||||||
* list pointers */
|
m_Pos = aComponent.m_Pos;
|
||||||
*this = aTemplate;
|
m_unit = aComponent.m_unit;
|
||||||
|
m_convert = aComponent.m_convert;
|
||||||
|
m_ChipName = aComponent.m_ChipName;
|
||||||
|
m_TimeStamp = aComponent.m_TimeStamp;
|
||||||
|
m_transform = aComponent.m_transform;
|
||||||
|
m_prefix = aComponent.m_prefix;
|
||||||
|
m_PathsAndReferences = aComponent.m_PathsAndReferences;
|
||||||
|
m_Fields = aComponent.m_Fields;
|
||||||
|
|
||||||
/* set linked list pointers to null, before this they were copies of
|
// Re-parent the fields, which before this had aComponent as parent
|
||||||
* aTemplate's */
|
|
||||||
Pback = NULL;
|
|
||||||
Pnext = NULL;
|
|
||||||
m_Son = NULL;
|
|
||||||
|
|
||||||
// Re-parent the fields, which before this had aTemplate as parent
|
|
||||||
for( int i = 0; i<GetFieldCount(); ++i )
|
for( int i = 0; i<GetFieldCount(); ++i )
|
||||||
{
|
{
|
||||||
GetField( i )->SetParent( this );
|
GetField( i )->SetParent( this );
|
||||||
|
@ -180,6 +181,12 @@ void SCH_COMPONENT::Init( const wxPoint& pos )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_ITEM* SCH_COMPONENT::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_COMPONENT( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_COMPONENT::SetLibName( const wxString& aName )
|
void SCH_COMPONENT::SetLibName( const wxString& aName )
|
||||||
{
|
{
|
||||||
if( m_ChipName != aName )
|
if( m_ChipName != aName )
|
||||||
|
@ -273,18 +280,18 @@ void SCH_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offs
|
||||||
{
|
{
|
||||||
EDA_Rect BoundaryBox;
|
EDA_Rect BoundaryBox;
|
||||||
BoundaryBox = GetBoundingBox();
|
BoundaryBox = GetBoundingBox();
|
||||||
GRRect( &panel->m_ClipBox, DC, BoundaryBox, BROWN );
|
GRRect( &panel->m_ClipBox, DC, BoundaryBox, 0, BROWN );
|
||||||
#if 1
|
#if 1
|
||||||
if( GetField( REFERENCE )->IsVisible() )
|
if( GetField( REFERENCE )->IsVisible() )
|
||||||
{
|
{
|
||||||
BoundaryBox = GetField( REFERENCE )->GetBoundingBox();
|
BoundaryBox = GetField( REFERENCE )->GetBoundingBox();
|
||||||
GRRect( &panel->m_ClipBox, DC, BoundaryBox, BROWN );
|
GRRect( &panel->m_ClipBox, DC, BoundaryBox, 0, BROWN );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( GetField( VALUE )->IsVisible() )
|
if( GetField( VALUE )->IsVisible() )
|
||||||
{
|
{
|
||||||
BoundaryBox = GetField( VALUE )->GetBoundingBox();
|
BoundaryBox = GetField( VALUE )->GetBoundingBox();
|
||||||
GRRect( &panel->m_ClipBox, DC, BoundaryBox, BROWN );
|
GRRect( &panel->m_ClipBox, DC, BoundaryBox, 0, BROWN );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1367,6 +1374,7 @@ EDA_Rect SCH_COMPONENT::GetBodyBoundingBox() const
|
||||||
// H and W must be > 0:
|
// H and W must be > 0:
|
||||||
if( x2 < x1 )
|
if( x2 < x1 )
|
||||||
EXCHG( x2, x1 );
|
EXCHG( x2, x1 );
|
||||||
|
|
||||||
if( y2 < y1 )
|
if( y2 < y1 )
|
||||||
EXCHG( y2, y1 );
|
EXCHG( y2, y1 );
|
||||||
|
|
||||||
|
@ -1649,7 +1657,7 @@ LIB_DRAW_ITEM* SCH_COMPONENT::GetDrawItem( const wxPoint& aPosition, KICAD_T aTy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_COMPONENT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_COMPONENT::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
EDA_Rect bBox;
|
EDA_Rect bBox;
|
||||||
|
|
||||||
|
@ -1664,7 +1672,7 @@ bool SCH_COMPONENT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_
|
||||||
bBox = GetField( ii )->GetBoundingBox();
|
bBox = GetField( ii )->GetBoundingBox();
|
||||||
bBox.Inflate( aAccuracy );
|
bBox.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( bBox.Inside( aPoint ) )
|
if( bBox.Contains( aPoint ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1674,7 +1682,7 @@ bool SCH_COMPONENT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_
|
||||||
bBox = GetBodyBoundingBox();
|
bBox = GetBodyBoundingBox();
|
||||||
bBox.Inflate( aAccuracy );
|
bBox.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( bBox.Inside( aPoint ) )
|
if( bBox.Contains( aPoint ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1682,20 +1690,20 @@ bool SCH_COMPONENT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_COMPONENT::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
bool SCH_COMPONENT::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
{
|
{
|
||||||
EDA_Rect rect = aRect;
|
EDA_Rect rect = aRect;
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_COMPONENT::DoIsConnected( const wxPoint& aPosition ) const
|
bool SCH_COMPONENT::doIsConnected( const wxPoint& aPosition ) const
|
||||||
{
|
{
|
||||||
vector< wxPoint > pts;
|
vector< wxPoint > pts;
|
||||||
|
|
||||||
|
|
|
@ -60,14 +60,11 @@ class SCH_COMPONENT : public SCH_ITEM
|
||||||
TRANSFORM m_transform; ///< The rotation/mirror transformation matrix.
|
TRANSFORM m_transform; ///< The rotation/mirror transformation matrix.
|
||||||
SCH_FIELDS m_Fields; ///< Variable length list of fields.
|
SCH_FIELDS m_Fields; ///< Variable length list of fields.
|
||||||
|
|
||||||
/* Hierarchical references.
|
/**
|
||||||
* format is
|
* Defines the hierarchical path and reference of the component. This allowa support
|
||||||
* path reference multi
|
* for hierarchical sheets that reference the same schematic. The foramt for the path
|
||||||
* with:
|
* is /<sheet time stamp>/<sheet time stamp>/... A single / denotes the root
|
||||||
* path = /<timestamp1>/<timestamp2> (subsheet path, = / for the root sheet)
|
* sheet.
|
||||||
* reference = reference for this path (C23, R5, U78 ... )
|
|
||||||
* multi = part selection in multi parts per package (0 or 1 for one part
|
|
||||||
* per package)
|
|
||||||
*/
|
*/
|
||||||
wxArrayString m_PathsAndReferences;
|
wxArrayString m_PathsAndReferences;
|
||||||
|
|
||||||
|
@ -103,12 +100,12 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy Constructor
|
* Copy Constructor
|
||||||
* clones \a aTemplate into this object. All fields are copied as is except
|
* clones \a aComponent into a new object. All fields are copied as is except
|
||||||
* for the linked list management pointers which are set to NULL, and the
|
* for the linked list management pointers which are set to NULL, and the
|
||||||
* SCH_FIELD's m_Parent pointers which are set to the new parent,
|
* SCH_FIELD's m_Parent pointers which are set to the new parent,
|
||||||
* i.e. this new object.
|
* i.e. this new object.
|
||||||
*/
|
*/
|
||||||
SCH_COMPONENT( const SCH_COMPONENT& aTemplate );
|
SCH_COMPONENT( const SCH_COMPONENT& aComponent );
|
||||||
|
|
||||||
~SCH_COMPONENT() { }
|
~SCH_COMPONENT() { }
|
||||||
|
|
||||||
|
@ -152,16 +149,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GenCopy
|
|
||||||
* returns a copy of this object but with the linked list pointers set to NULL.
|
|
||||||
* @return SCH_COMPONENT* - a copy of me.
|
|
||||||
*/
|
|
||||||
SCH_COMPONENT* GenCopy() const
|
|
||||||
{
|
|
||||||
return new SCH_COMPONENT( *this );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetOrientation
|
* Function SetOrientation
|
||||||
* computes the new transform matrix based on \a aOrientation for the component which is
|
* computes the new transform matrix based on \a aOrientation for the component which is
|
||||||
|
@ -260,7 +247,6 @@ public:
|
||||||
m_Fields = aFields; // vector copying, length is changed possibly
|
m_Fields = aFields; // vector copying, length is changed possibly
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----</Fields>----------------------------------------------------------
|
//-----</Fields>----------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -409,9 +395,10 @@ public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
virtual bool DoIsConnected( const wxPoint& aPosition ) const;
|
virtual bool doIsConnected( const wxPoint& aPosition ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,7 @@
|
||||||
#include "template_fieldnames.h"
|
#include "template_fieldnames.h"
|
||||||
|
|
||||||
|
|
||||||
SCH_FIELD::SCH_FIELD( const wxPoint& aPos, int aFieldId,
|
SCH_FIELD::SCH_FIELD( const wxPoint& aPos, int aFieldId, SCH_COMPONENT* aParent, wxString aName ) :
|
||||||
SCH_COMPONENT* aParent, wxString aName ) :
|
|
||||||
SCH_ITEM( aParent, SCH_FIELD_T ),
|
SCH_ITEM( aParent, SCH_FIELD_T ),
|
||||||
EDA_TextStruct()
|
EDA_TextStruct()
|
||||||
{
|
{
|
||||||
|
@ -44,15 +43,27 @@ SCH_FIELD::SCH_FIELD( const wxPoint& aPos, int aFieldId,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_FIELD::SCH_FIELD( const SCH_FIELD& aField ) :
|
||||||
|
SCH_ITEM( aField ),
|
||||||
|
EDA_TextStruct( aField )
|
||||||
|
{
|
||||||
|
m_FieldId = aField.m_FieldId;
|
||||||
|
m_Name = aField.m_Name;
|
||||||
|
m_AddExtraText = aField.m_AddExtraText;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_FIELD::~SCH_FIELD()
|
SCH_FIELD::~SCH_FIELD()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
EDA_ITEM* SCH_FIELD::doClone() const
|
||||||
* Function GetPenSize
|
{
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
return new SCH_FIELD( *this );
|
||||||
*/
|
}
|
||||||
|
|
||||||
|
|
||||||
int SCH_FIELD::GetPenSize() const
|
int SCH_FIELD::GetPenSize() const
|
||||||
{
|
{
|
||||||
int pensize = m_Thickness;
|
int pensize = m_Thickness;
|
||||||
|
@ -71,9 +82,6 @@ int SCH_FIELD::GetPenSize() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Draw schematic component fields.
|
|
||||||
*/
|
|
||||||
void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
const wxPoint& offset, int DrawMode, int Color )
|
const wxPoint& offset, int DrawMode, int Color )
|
||||||
{
|
{
|
||||||
|
@ -103,6 +111,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
/* Calculate the text orientation, according to the component
|
/* Calculate the text orientation, according to the component
|
||||||
* orientation/mirror */
|
* orientation/mirror */
|
||||||
orient = m_Orient;
|
orient = m_Orient;
|
||||||
|
|
||||||
if( parentComponent->GetTransform().y1 ) // Rotate component 90 degrees.
|
if( parentComponent->GetTransform().y1 ) // Rotate component 90 degrees.
|
||||||
{
|
{
|
||||||
if( orient == TEXT_ORIENT_HORIZ )
|
if( orient == TEXT_ORIENT_HORIZ )
|
||||||
|
@ -136,9 +145,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
|
|
||||||
if( !m_AddExtraText || ( m_FieldId != REFERENCE ) )
|
if( !m_AddExtraText || ( m_FieldId != REFERENCE ) )
|
||||||
{
|
{
|
||||||
DrawGraphicText( panel, DC, textpos, color, m_Text,
|
DrawGraphicText( panel, DC, textpos, color, m_Text, orient, m_Size, hjustify, vjustify,
|
||||||
orient,
|
|
||||||
m_Size, hjustify, vjustify,
|
|
||||||
LineWidth, m_Italic, m_Bold );
|
LineWidth, m_Italic, m_Bold );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -148,9 +155,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
wxString fulltext = m_Text;
|
wxString fulltext = m_Text;
|
||||||
fulltext << LIB_COMPONENT::ReturnSubReference( parentComponent->GetUnit() );
|
fulltext << LIB_COMPONENT::ReturnSubReference( parentComponent->GetUnit() );
|
||||||
|
|
||||||
DrawGraphicText( panel, DC, textpos, color, fulltext,
|
DrawGraphicText( panel, DC, textpos, color, fulltext, orient, m_Size, hjustify, vjustify,
|
||||||
orient,
|
|
||||||
m_Size, hjustify, vjustify,
|
|
||||||
LineWidth, m_Italic, m_Bold );
|
LineWidth, m_Italic, m_Bold );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,13 +187,6 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ImportValues
|
|
||||||
* copy parameters from a source.
|
|
||||||
* Pointers and specific values (position, texts) are not copied
|
|
||||||
* used to init a field from the model read from a lib entry
|
|
||||||
* @param aSource = the LIB_FIELD to read
|
|
||||||
*/
|
|
||||||
void SCH_FIELD::ImportValues( const LIB_FIELD& aSource )
|
void SCH_FIELD::ImportValues( const LIB_FIELD& aSource )
|
||||||
{
|
{
|
||||||
m_Orient = aSource.m_Orient;
|
m_Orient = aSource.m_Orient;
|
||||||
|
@ -203,32 +201,23 @@ void SCH_FIELD::ImportValues( const LIB_FIELD& aSource )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
void SCH_FIELD::SwapData( SCH_FIELD* aField )
|
||||||
* Used if undo / redo command:
|
|
||||||
* swap data between this and copyitem
|
|
||||||
*/
|
|
||||||
void SCH_FIELD::SwapData( SCH_FIELD* copyitem )
|
|
||||||
{
|
{
|
||||||
EXCHG( m_Text, copyitem->m_Text );
|
EXCHG( m_Text, aField->m_Text );
|
||||||
EXCHG( m_Layer, copyitem->m_Layer );
|
EXCHG( m_Layer, aField->m_Layer );
|
||||||
EXCHG( m_Pos, copyitem->m_Pos );
|
EXCHG( m_Pos, aField->m_Pos );
|
||||||
EXCHG( m_Size, copyitem->m_Size );
|
EXCHG( m_Size, aField->m_Size );
|
||||||
EXCHG( m_Thickness, copyitem->m_Thickness );
|
EXCHG( m_Thickness, aField->m_Thickness );
|
||||||
EXCHG( m_Orient, copyitem->m_Orient );
|
EXCHG( m_Orient, aField->m_Orient );
|
||||||
EXCHG( m_Mirror, copyitem->m_Mirror );
|
EXCHG( m_Mirror, aField->m_Mirror );
|
||||||
EXCHG( m_Attributs, copyitem->m_Attributs );
|
EXCHG( m_Attributs, aField->m_Attributs );
|
||||||
EXCHG( m_Italic, copyitem->m_Italic );
|
EXCHG( m_Italic, aField->m_Italic );
|
||||||
EXCHG( m_Bold, copyitem->m_Bold );
|
EXCHG( m_Bold, aField->m_Bold );
|
||||||
EXCHG( m_HJustify, copyitem->m_HJustify );
|
EXCHG( m_HJustify, aField->m_HJustify );
|
||||||
EXCHG( m_VJustify, copyitem->m_VJustify );
|
EXCHG( m_VJustify, aField->m_VJustify );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetBoundaryBox
|
|
||||||
* @return an EDA_Rect contains the real (user coordinates) boundary box for a text field.
|
|
||||||
* according to the component position, rotation, mirror ...
|
|
||||||
*/
|
|
||||||
EDA_Rect SCH_FIELD::GetBoundingBox() const
|
EDA_Rect SCH_FIELD::GetBoundingBox() const
|
||||||
{
|
{
|
||||||
EDA_Rect BoundaryBox;
|
EDA_Rect BoundaryBox;
|
||||||
|
@ -459,7 +448,7 @@ void SCH_FIELD::Rotate( wxPoint rotationPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_FIELD::DoHitTest( const wxPoint& aPoint, int aAccuracy ) const
|
bool SCH_FIELD::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
|
||||||
{
|
{
|
||||||
// Do not hit test hidden fields.
|
// Do not hit test hidden fields.
|
||||||
if( !IsVisible() )
|
if( !IsVisible() )
|
||||||
|
@ -469,11 +458,11 @@ bool SCH_FIELD::DoHitTest( const wxPoint& aPoint, int aAccuracy ) const
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
return rect.Inside( aPoint );
|
return rect.Contains( aPoint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_FIELD::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
bool SCH_FIELD::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
{
|
{
|
||||||
// Do not hit test hidden fields.
|
// Do not hit test hidden fields.
|
||||||
if( !IsVisible() )
|
if( !IsVisible() )
|
||||||
|
@ -484,7 +473,7 @@ bool SCH_FIELD::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,14 +5,6 @@
|
||||||
#ifndef CLASS_SCH_FIELD_H
|
#ifndef CLASS_SCH_FIELD_H
|
||||||
#define CLASS_SCH_FIELD_H
|
#define CLASS_SCH_FIELD_H
|
||||||
|
|
||||||
/* Fields are texts attached to a component, having a special meaning
|
|
||||||
* Fields 0 and 1 are very important: reference and value
|
|
||||||
* Field 2 is used as default footprint name.
|
|
||||||
* Field 3 is reserved (not currently used
|
|
||||||
* Fields 4 and more are user fields.
|
|
||||||
* They can be renamed and can appear in reports
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "sch_item_struct.h"
|
#include "sch_item_struct.h"
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
|
@ -25,11 +17,16 @@ class LIB_FIELD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SCH_FIELD
|
* Class SCH_FIELD
|
||||||
* instances are attached to a component and provide a place for the
|
* instances are attached to a component and provide a place for the component's value,
|
||||||
* component's value,
|
* reference designator, footprint, and user definable name-value pairs of arbitrary purpose.
|
||||||
* reference designator, footprint, and user definable name-value pairs of
|
*
|
||||||
* arbitrary purpose.
|
* <ul> <li>Field 0 is reserved for the component reference.</li>
|
||||||
|
* <li>Field 1 is reserved for the component value.</li>
|
||||||
|
* <li>Field 2 is reserved for the component footprint.</li>
|
||||||
|
* <li>Field 3 is reserved for the component data sheet file.</li>
|
||||||
|
* <li>Fields 4 and higher are user defineable.</li></ul>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class SCH_FIELD : public SCH_ITEM, public EDA_TextStruct
|
class SCH_FIELD : public SCH_ITEM, public EDA_TextStruct
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -44,6 +41,8 @@ public:
|
||||||
SCH_FIELD( const wxPoint& aPos, int aFieldId, SCH_COMPONENT* aParent,
|
SCH_FIELD( const wxPoint& aPos, int aFieldId, SCH_COMPONENT* aParent,
|
||||||
wxString aName = wxEmptyString );
|
wxString aName = wxEmptyString );
|
||||||
|
|
||||||
|
SCH_FIELD( const SCH_FIELD& aField );
|
||||||
|
|
||||||
~SCH_FIELD();
|
~SCH_FIELD();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -66,8 +65,13 @@ public:
|
||||||
return len == 0 || ( len == 1 && m_Text[0] == wxChar( '~' ) );
|
return len == 0 || ( len == 1 && m_Text[0] == wxChar( '~' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
void SwapData( SCH_FIELD* copyitem );
|
* Function SwapData
|
||||||
|
* exchanges the date between the field and \a aField.
|
||||||
|
*
|
||||||
|
* @param aField The field to exchange data with.
|
||||||
|
*/
|
||||||
|
void SwapData( SCH_FIELD* aField );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function ImportValues
|
* Function ImportValues
|
||||||
|
@ -160,8 +164,9 @@ public:
|
||||||
void* aAuxData, wxPoint * aFindLocation );
|
void* aAuxData, wxPoint * aFindLocation );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,412 +1,14 @@
|
||||||
/************************************************************************/
|
/**
|
||||||
/* classes to handle items used in schematic: wires, bus, junctions ... */
|
* @file sch_item.h
|
||||||
/************************************************************************/
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef CLASS_SCHEMATIC_ITEMS_H
|
#ifndef _SCH_ITEMS_H_
|
||||||
#define CLASS_SCHEMATIC_ITEMS_H
|
#define _SCH_ITEMS_H_
|
||||||
|
|
||||||
|
|
||||||
#include "sch_item_struct.h"
|
#include "sch_item_struct.h"
|
||||||
|
|
||||||
#include "general.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Flags for BUS ENTRY (bus to bus or wire to bus */
|
|
||||||
#define WIRE_TO_BUS 0
|
|
||||||
#define BUS_TO_BUS 1
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class SCH_LINE
|
|
||||||
* is a segment description base class to describe items which have 2 end
|
|
||||||
* points (track, wire, draw line ...)
|
|
||||||
*/
|
|
||||||
class SCH_LINE : public SCH_ITEM
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int m_Width; // 0 = line, > 0 = tracks, bus ...
|
|
||||||
wxPoint m_Start; // Line start point
|
|
||||||
wxPoint m_End; // Line end point
|
|
||||||
|
|
||||||
bool m_StartIsDangling;
|
|
||||||
bool m_EndIsDangling; // TRUE if not connected (wires, tracks...)
|
|
||||||
|
|
||||||
public:
|
|
||||||
SCH_LINE( const wxPoint& pos = wxPoint( 0, 0 ), int layer = LAYER_NOTES );
|
|
||||||
~SCH_LINE() { }
|
|
||||||
|
|
||||||
SCH_LINE* Next() const { return (SCH_LINE*) Pnext; }
|
|
||||||
SCH_LINE* Back() const { return (SCH_LINE*) Pback; }
|
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
|
||||||
{
|
|
||||||
return wxT( "SCH_LINE" );
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsEndPoint( const wxPoint& aPoint ) const
|
|
||||||
{
|
|
||||||
return aPoint == m_Start || aPoint == m_End;
|
|
||||||
}
|
|
||||||
|
|
||||||
SCH_LINE* GenCopy();
|
|
||||||
|
|
||||||
bool IsNull() const { return m_Start == m_End; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetBoundingBox
|
|
||||||
* returns the orthogonal, bounding box of this object for display purposes.
|
|
||||||
* This box should be an enclosing perimeter for visible components of this
|
|
||||||
* object, and the units should be in the pcb or schematic coordinate system.
|
|
||||||
* It is OK to overestimate the size by a few counts.
|
|
||||||
*/
|
|
||||||
EDA_Rect GetBoundingBox() const;
|
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
|
||||||
int aDrawMode, int aColor = -1 );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Save
|
|
||||||
* writes the data structures for this object out to a FILE in "*.sch" format.
|
|
||||||
* @param aFile The FILE to write to.
|
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool Save( FILE* aFile ) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load schematic line from \a aLine in a .sch file.
|
|
||||||
*
|
|
||||||
* @param aLine - Essentially this is file to read schematic line from.
|
|
||||||
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
|
||||||
* schematic line.
|
|
||||||
* @return True if the schematic line loaded successfully.
|
|
||||||
*/
|
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
virtual int GetPenSize() const;
|
|
||||||
|
|
||||||
// Geometric transforms (used in block operations):
|
|
||||||
|
|
||||||
/** virtual function Move
|
|
||||||
* move item to a new position.
|
|
||||||
* @param aMoveVector = the displacement vector
|
|
||||||
*/
|
|
||||||
virtual void Move( const wxPoint& aMoveVector );
|
|
||||||
|
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
|
||||||
|
|
||||||
/** virtual function Mirror_Y
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
virtual void Mirror_Y( int aYaxis_position );
|
|
||||||
|
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check line against \a aLine to see if it overlaps and merge if it does.
|
|
||||||
*
|
|
||||||
* This method will change the line to be equivalent of the line and \a aLine if the
|
|
||||||
* two lines overlap. This method is used to merge multple line segments into a single
|
|
||||||
* line.
|
|
||||||
*
|
|
||||||
* @param aLine - Line to compare.
|
|
||||||
* @return True if lines overlap and the line was merged with \a aLine.
|
|
||||||
*/
|
|
||||||
bool MergeOverlap( SCH_LINE* aLine );
|
|
||||||
|
|
||||||
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
|
|
||||||
|
|
||||||
virtual bool IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemList );
|
|
||||||
|
|
||||||
virtual bool IsDangling() const { return m_StartIsDangling || m_EndIsDangling; }
|
|
||||||
|
|
||||||
virtual bool IsSelectStateChanged( const wxRect& aRect );
|
|
||||||
|
|
||||||
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
|
||||||
void Show( int nestLevel, std::ostream& os ) const;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
|
||||||
virtual bool DoIsConnected( const wxPoint& aPosition ) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class SCH_NO_CONNECT : public SCH_ITEM
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wxPoint m_Pos; /* XY coordinates of NoConnect. */
|
|
||||||
wxSize m_Size; // size of this symbol
|
|
||||||
|
|
||||||
public:
|
|
||||||
SCH_NO_CONNECT( const wxPoint& pos = wxPoint( 0, 0 ) );
|
|
||||||
~SCH_NO_CONNECT() { }
|
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
|
||||||
{
|
|
||||||
return wxT( "SCH_NO_CONNECT" );
|
|
||||||
}
|
|
||||||
|
|
||||||
SCH_NO_CONNECT* GenCopy();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
virtual int GetPenSize() const;
|
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& affset,
|
|
||||||
int aDrawMode, int aColor = -1 );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Save
|
|
||||||
* writes the data structures for this object out to a FILE in "*.sch"
|
|
||||||
* format.
|
|
||||||
* @param aFile The FILE to write to.
|
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool Save( FILE* aFile ) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load schematic no connect entry from \a aLine in a .sch file.
|
|
||||||
*
|
|
||||||
* @param aLine - Essentially this is file to read schematic no connect from.
|
|
||||||
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
|
||||||
* schematic no connect.
|
|
||||||
* @return True if the schematic no connect loaded successfully.
|
|
||||||
*/
|
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetBoundingBox
|
|
||||||
* returns the orthogonal, bounding box of this object for display
|
|
||||||
* purposes. This box should be an enclosing perimeter for visible
|
|
||||||
* components of this object, and the units should be in the pcb or
|
|
||||||
* schematic coordinate system. It is OK to overestimate the size
|
|
||||||
* by a few counts.
|
|
||||||
*/
|
|
||||||
EDA_Rect GetBoundingBox() const;
|
|
||||||
|
|
||||||
// Geometric transforms (used in block operations):
|
|
||||||
|
|
||||||
/** virtual function Move
|
|
||||||
* move item to a new position.
|
|
||||||
* @param aMoveVector = the displacement vector
|
|
||||||
*/
|
|
||||||
virtual void Move( const wxPoint& aMoveVector )
|
|
||||||
{
|
|
||||||
m_Pos += aMoveVector;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** virtual function Mirror_Y
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
virtual void Mirror_Y( int aYaxis_position );
|
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
|
||||||
|
|
||||||
virtual bool IsSelectStateChanged( const wxRect& aRect );
|
|
||||||
|
|
||||||
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class SCH_BUS_ENTRY
|
|
||||||
*
|
|
||||||
* Defines a bus or wire entry.
|
|
||||||
*/
|
|
||||||
class SCH_BUS_ENTRY : public SCH_ITEM
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int m_Width;
|
|
||||||
wxPoint m_Pos;
|
|
||||||
wxSize m_Size;
|
|
||||||
|
|
||||||
public:
|
|
||||||
SCH_BUS_ENTRY( const wxPoint& pos = wxPoint( 0, 0 ), int shape = '\\', int id = WIRE_TO_BUS );
|
|
||||||
~SCH_BUS_ENTRY() { }
|
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
|
||||||
{
|
|
||||||
return wxT( "SCH_BUS_ENTRY" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_BUS_ENTRY* GenCopy();
|
|
||||||
|
|
||||||
wxPoint m_End() const;
|
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
|
||||||
int aDrawMode, int aColor = -1 );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Save
|
|
||||||
* writes the data structures for this object out to a FILE in "*.sch"
|
|
||||||
* format.
|
|
||||||
* @param aFile The FILE to write to.
|
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool Save( FILE* aFile ) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load schematic bus entry from \a aLine in a .sch file.
|
|
||||||
*
|
|
||||||
* @param aLine - Essentially this is file to read schematic bus entry from.
|
|
||||||
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
|
||||||
* schematic bus entry.
|
|
||||||
* @return True if the schematic bus entry loaded successfully.
|
|
||||||
*/
|
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetBoundingBox
|
|
||||||
* returns the orthogonal, bounding box of this object for display
|
|
||||||
* purposes. This box should be an enclosing perimeter for visible
|
|
||||||
* components of this object, and the units should be in the pcb or
|
|
||||||
* schematic coordinate system. It is OK to overestimate the size
|
|
||||||
* by a few counts.
|
|
||||||
*/
|
|
||||||
EDA_Rect GetBoundingBox() const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
virtual int GetPenSize() const;
|
|
||||||
|
|
||||||
// Geometric transforms (used in block operations):
|
|
||||||
|
|
||||||
/** virtual function Move
|
|
||||||
* move item to a new position.
|
|
||||||
* @param aMoveVector = the displacement vector
|
|
||||||
*/
|
|
||||||
virtual void Move( const wxPoint& aMoveVector )
|
|
||||||
{
|
|
||||||
m_Pos += aMoveVector;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** virtual function Mirror_Y
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
virtual void Mirror_Y( int aYaxis_position );
|
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
|
||||||
|
|
||||||
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
|
|
||||||
|
|
||||||
virtual bool IsSelectStateChanged( const wxRect& aRect );
|
|
||||||
|
|
||||||
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class SCH_POLYLINE : public SCH_ITEM
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int m_Width; /* Thickness */
|
|
||||||
std::vector<wxPoint> m_PolyPoints; // list of points (>= 2)
|
|
||||||
|
|
||||||
public:
|
|
||||||
SCH_POLYLINE( int layer = LAYER_NOTES );
|
|
||||||
~SCH_POLYLINE();
|
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
|
||||||
{
|
|
||||||
return wxT( "SCH_POLYLINE" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_POLYLINE* GenCopy();
|
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
|
||||||
int aDrawMode, int aColor = -1 );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Save
|
|
||||||
* writes the data structures for this object out to a FILE in "*.sch"
|
|
||||||
* format.
|
|
||||||
* @param aFile The FILE to write to.
|
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool Save( FILE* aFile ) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load schematic poly line entry from \a aLine in a .sch file.
|
|
||||||
*
|
|
||||||
* @param aLine - Essentially this is file to read schematic poly line from.
|
|
||||||
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
|
||||||
* schematic poly line.
|
|
||||||
* @return True if the schematic poly line loaded successfully.
|
|
||||||
*/
|
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function AddPoint
|
|
||||||
* add a corner to m_PolyPoints
|
|
||||||
*/
|
|
||||||
void AddPoint( const wxPoint& point )
|
|
||||||
{
|
|
||||||
m_PolyPoints.push_back( point );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetCornerCount
|
|
||||||
* @return the number of corners
|
|
||||||
*/
|
|
||||||
|
|
||||||
unsigned GetCornerCount() const { return m_PolyPoints.size(); }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
virtual int GetPenSize() const;
|
|
||||||
|
|
||||||
// Geometric transforms (used in block operations):
|
|
||||||
|
|
||||||
/** virtual function Move
|
|
||||||
* move item to a new position.
|
|
||||||
* @param aMoveVector = the displacement vector
|
|
||||||
*/
|
|
||||||
virtual void Move( const wxPoint& aMoveVector )
|
|
||||||
{
|
|
||||||
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
|
||||||
m_PolyPoints[ii] += aMoveVector;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** virtual function Mirror_Y
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
virtual void Mirror_Y( int aYaxis_position );
|
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class SCH_JUNCTION : public SCH_ITEM
|
class SCH_JUNCTION : public SCH_ITEM
|
||||||
{
|
{
|
||||||
|
@ -416,6 +18,9 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SCH_JUNCTION( const wxPoint& pos = wxPoint( 0, 0 ) );
|
SCH_JUNCTION( const wxPoint& pos = wxPoint( 0, 0 ) );
|
||||||
|
|
||||||
|
SCH_JUNCTION( const SCH_JUNCTION& aJunction );
|
||||||
|
|
||||||
~SCH_JUNCTION() { }
|
~SCH_JUNCTION() { }
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -457,24 +62,25 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
// Geometric transforms (used in block operations):
|
/**
|
||||||
|
* Function Move
|
||||||
/** virtual function Move
|
* moves then item to a new position by \a aMoveVector.
|
||||||
* move item to a new position.
|
* @param aMoveVector The displacement vector.
|
||||||
* @param aMoveVector = the displacement vector
|
|
||||||
*/
|
*/
|
||||||
virtual void Move( const wxPoint& aMoveVector )
|
virtual void Move( const wxPoint& aMoveVector )
|
||||||
{
|
{
|
||||||
m_Pos += aMoveVector;
|
m_Pos += aMoveVector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/** virtual function Mirror_Y
|
* Function Mirror_Y
|
||||||
* mirror item relative to an Y axis
|
* mirrors the item relative to \a aYaxis_position.
|
||||||
* @param aYaxis_position = the y axis position
|
* @param aYaxis_position = the y axis position
|
||||||
*/
|
*/
|
||||||
virtual void Mirror_Y( int aYaxis_position );
|
virtual void Mirror_Y( int aYaxis_position );
|
||||||
|
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
|
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
|
||||||
|
@ -485,14 +91,14 @@ public:
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
void Show( int nestLevel, std::ostream& os );
|
void Show( int nestLevel, std::ostream& os );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
virtual bool DoIsConnected( const wxPoint& aPosition ) const;
|
virtual bool doIsConnected( const wxPoint& aPosition ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif /* CLASS_SCHEMATIC_ITEMS_H */
|
#endif // _SCH_ITEMS_H_
|
||||||
|
|
|
@ -0,0 +1,429 @@
|
||||||
|
/******************/
|
||||||
|
/* Class SCH_LINE */
|
||||||
|
/******************/
|
||||||
|
|
||||||
|
#include "fctsys.h"
|
||||||
|
#include "gr_basic.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "class_drawpanel.h"
|
||||||
|
#include "trigo.h"
|
||||||
|
#include "richio.h"
|
||||||
|
|
||||||
|
#include "general.h"
|
||||||
|
#include "protos.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
SCH_LINE::SCH_LINE( const wxPoint& pos, int layer ) :
|
||||||
|
SCH_ITEM( NULL, SCH_LINE_T )
|
||||||
|
{
|
||||||
|
m_Start = pos;
|
||||||
|
m_End = pos;
|
||||||
|
m_Width = 0; // Default thickness used
|
||||||
|
m_StartIsDangling = m_EndIsDangling = FALSE;
|
||||||
|
|
||||||
|
switch( layer )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
m_Layer = LAYER_NOTES;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LAYER_WIRE:
|
||||||
|
m_Layer = LAYER_WIRE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LAYER_BUS:
|
||||||
|
m_Layer = LAYER_BUS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_LINE::SCH_LINE( const SCH_LINE& aLine ) :
|
||||||
|
SCH_ITEM( aLine )
|
||||||
|
{
|
||||||
|
m_Start = aLine.m_Start;
|
||||||
|
m_End = aLine.m_End;
|
||||||
|
m_Width = aLine.m_Width;
|
||||||
|
m_StartIsDangling = m_EndIsDangling = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_ITEM* SCH_LINE::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_LINE( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::Move( const wxPoint& aOffset )
|
||||||
|
{
|
||||||
|
if( (m_Flags & STARTPOINT) == 0 && aOffset != wxPoint( 0, 0 ) )
|
||||||
|
{
|
||||||
|
m_Start += aOffset;
|
||||||
|
SetModified();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (m_Flags & ENDPOINT) == 0 && aOffset != wxPoint( 0, 0 ) )
|
||||||
|
{
|
||||||
|
m_End += aOffset;
|
||||||
|
SetModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
|
||||||
|
void SCH_LINE::Show( int nestLevel, std::ostream& os ) const
|
||||||
|
{
|
||||||
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str()
|
||||||
|
<< " layer=\"" << m_Layer << '"'
|
||||||
|
<< " width=\"" << m_Width << '"'
|
||||||
|
<< " startIsDangling=\"" << m_StartIsDangling
|
||||||
|
<< '"' << " endIsDangling=\""
|
||||||
|
<< m_EndIsDangling << '"' << ">"
|
||||||
|
<< " <start" << m_Start << "/>"
|
||||||
|
<< " <end" << m_End << "/>" << "</"
|
||||||
|
<< GetClass().Lower().mb_str() << ">\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
EDA_Rect SCH_LINE::GetBoundingBox() const
|
||||||
|
{
|
||||||
|
int width = 25;
|
||||||
|
|
||||||
|
int xmin = MIN( m_Start.x, m_End.x ) - width;
|
||||||
|
int ymin = MIN( m_Start.y, m_End.y ) - width;
|
||||||
|
|
||||||
|
int xmax = MAX( m_Start.x, m_End.x ) + width;
|
||||||
|
int ymax = MAX( m_Start.y, m_End.y ) + width;
|
||||||
|
|
||||||
|
// return a rectangle which is [pos,dim) in nature. therefore the +1
|
||||||
|
EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( xmax - xmin + 1, ymax - ymin + 1 ) );
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
const char* layer = "Notes";
|
||||||
|
const char* width = "Line";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_WIRE )
|
||||||
|
layer = "Wire";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_BUS )
|
||||||
|
layer = "Bus";
|
||||||
|
|
||||||
|
if( fprintf( aFile, "Wire %s %s\n", layer, width ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fprintf( aFile, "\t%-4d %-4d %-4d %-4d\n", m_Start.x, m_Start.y,
|
||||||
|
m_End.x, m_End.y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
|
{
|
||||||
|
char Name1[256];
|
||||||
|
char Name2[256];
|
||||||
|
char* line = (char*) aLine;
|
||||||
|
|
||||||
|
while( (*line != ' ' ) && *line )
|
||||||
|
line++;
|
||||||
|
|
||||||
|
if( sscanf( line, "%s %s", Name1, Name2 ) != 2 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file segment error at line %d, aborted" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( (char*) aLine );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Layer = LAYER_NOTES;
|
||||||
|
|
||||||
|
if( Name1[0] == 'W' )
|
||||||
|
m_Layer = LAYER_WIRE;
|
||||||
|
|
||||||
|
if( Name1[0] == 'B' )
|
||||||
|
m_Layer = LAYER_BUS;
|
||||||
|
|
||||||
|
if( !aLine.ReadLine() || sscanf( (char*) aLine, "%d %d %d %d ",
|
||||||
|
&m_Start.x, &m_Start.y, &m_End.x, &m_End.y ) != 4 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file Segment struct error at line %d, aborted" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( (char*) aLine );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SCH_LINE::GetPenSize() const
|
||||||
|
{
|
||||||
|
int pensize = ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width;
|
||||||
|
|
||||||
|
if( m_Layer == LAYER_BUS && m_Width == 0 )
|
||||||
|
{
|
||||||
|
pensize = wxRound( g_DrawDefaultLineThickness * BUS_WIDTH_EXPAND );
|
||||||
|
pensize = MAX( pensize, 3 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return pensize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
|
int DrawMode, int Color )
|
||||||
|
{
|
||||||
|
int color;
|
||||||
|
int width = GetPenSize();
|
||||||
|
|
||||||
|
if( Color >= 0 )
|
||||||
|
color = Color;
|
||||||
|
else
|
||||||
|
color = ReturnLayerColor( m_Layer );
|
||||||
|
|
||||||
|
GRSetDrawMode( DC, DrawMode );
|
||||||
|
|
||||||
|
if( m_Layer == LAYER_NOTES )
|
||||||
|
GRDashedLine( &panel->m_ClipBox, DC, m_Start.x + offset.x,
|
||||||
|
m_Start.y + offset.y, m_End.x + offset.x,
|
||||||
|
m_End.y + offset.y, width, color );
|
||||||
|
else
|
||||||
|
GRLine( &panel->m_ClipBox, DC, m_Start.x + offset.x,
|
||||||
|
m_Start.y + offset.y, m_End.x + offset.x, m_End.y + offset.y,
|
||||||
|
width, color );
|
||||||
|
|
||||||
|
if( m_StartIsDangling )
|
||||||
|
DrawDanglingSymbol( panel, DC, m_Start + offset, color );
|
||||||
|
|
||||||
|
if( m_EndIsDangling )
|
||||||
|
DrawDanglingSymbol( panel, DC, m_End + offset, color );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::Mirror_X( int aXaxis_position )
|
||||||
|
{
|
||||||
|
m_Start.y -= aXaxis_position;
|
||||||
|
NEGATE( m_Start.y );
|
||||||
|
m_Start.y += aXaxis_position;
|
||||||
|
m_End.y -= aXaxis_position;
|
||||||
|
NEGATE( m_End.y );
|
||||||
|
m_End.y += aXaxis_position;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::Mirror_Y( int aYaxis_position )
|
||||||
|
{
|
||||||
|
m_Start.x -= aYaxis_position;
|
||||||
|
NEGATE( m_Start.x );
|
||||||
|
m_Start.x += aYaxis_position;
|
||||||
|
m_End.x -= aYaxis_position;
|
||||||
|
NEGATE( m_End.x );
|
||||||
|
m_End.x += aYaxis_position;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::Rotate( wxPoint rotationPoint )
|
||||||
|
{
|
||||||
|
RotatePoint( &m_Start, rotationPoint, 900 );
|
||||||
|
RotatePoint( &m_End, rotationPoint, 900 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::MergeOverlap( SCH_LINE* aLine )
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( aLine != NULL && aLine->Type() == SCH_LINE_T, false,
|
||||||
|
wxT( "Cannot test line segment for overlap." ) );
|
||||||
|
|
||||||
|
if( this == aLine || GetLayer() != aLine->GetLayer() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Search for a common end, and modify coordinates to ensure RefSegm->m_End
|
||||||
|
// == TstSegm->m_Start
|
||||||
|
if( m_Start == aLine->m_Start )
|
||||||
|
{
|
||||||
|
if( m_End == aLine->m_End )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
EXCHG( m_Start, m_End );
|
||||||
|
}
|
||||||
|
else if( m_Start == aLine->m_End )
|
||||||
|
{
|
||||||
|
EXCHG( m_Start, m_End );
|
||||||
|
EXCHG( aLine->m_Start, aLine->m_End );
|
||||||
|
}
|
||||||
|
else if( m_End == aLine->m_End )
|
||||||
|
{
|
||||||
|
EXCHG( aLine->m_Start, aLine->m_End );
|
||||||
|
}
|
||||||
|
else if( m_End != aLine->m_Start )
|
||||||
|
{
|
||||||
|
// No common end point, segments cannot be merged.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test alignment: */
|
||||||
|
if( m_Start.y == m_End.y ) // Horizontal segment
|
||||||
|
{
|
||||||
|
if( aLine->m_Start.y == aLine->m_End.y )
|
||||||
|
{
|
||||||
|
m_End = aLine->m_End;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( m_Start.x == m_End.x ) // Vertical segment
|
||||||
|
{
|
||||||
|
if( aLine->m_Start.x == aLine->m_End.x )
|
||||||
|
{
|
||||||
|
m_End = aLine->m_End;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( atan2( (double) ( m_Start.x - m_End.x ), (double) ( m_Start.y - m_End.y ) )
|
||||||
|
== atan2( (double) ( aLine->m_Start.x - aLine->m_End.x ),
|
||||||
|
(double) ( aLine->m_Start.y - aLine->m_End.y ) ) )
|
||||||
|
{
|
||||||
|
m_End = aLine->m_End;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList )
|
||||||
|
{
|
||||||
|
if( GetLayer() == LAYER_NOTES )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( ( GetLayer() == LAYER_BUS ) || ( GetLayer() == LAYER_WIRE ) )
|
||||||
|
{
|
||||||
|
DANGLING_END_ITEM item( (GetLayer() == LAYER_BUS) ? BUS_START_END : WIRE_START_END, this );
|
||||||
|
item.m_Pos = m_Start;
|
||||||
|
DANGLING_END_ITEM item1( (GetLayer() == LAYER_BUS) ? BUS_END_END : WIRE_END_END, this );
|
||||||
|
item1.m_Pos = m_End;
|
||||||
|
|
||||||
|
aItemList.push_back( item );
|
||||||
|
aItemList.push_back( item1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemList )
|
||||||
|
{
|
||||||
|
bool previousStartState = m_StartIsDangling;
|
||||||
|
bool previousEndState = m_EndIsDangling;
|
||||||
|
|
||||||
|
m_StartIsDangling = m_EndIsDangling = true;
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_WIRE )
|
||||||
|
{
|
||||||
|
BOOST_FOREACH( DANGLING_END_ITEM item, aItemList )
|
||||||
|
{
|
||||||
|
if( item.m_Item == this )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if( m_Start == item.m_Pos )
|
||||||
|
m_StartIsDangling = false;
|
||||||
|
|
||||||
|
if( m_End == item.m_Pos )
|
||||||
|
m_EndIsDangling = false;
|
||||||
|
|
||||||
|
if( (m_StartIsDangling == false) && (m_EndIsDangling == false) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( GetLayer() == LAYER_BUS || GetLayer() == LAYER_NOTES )
|
||||||
|
{
|
||||||
|
// Lines on the notes layer and the bus layer cannot be tested for dangling ends.
|
||||||
|
previousStartState = previousEndState = m_StartIsDangling = m_EndIsDangling = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ( previousStartState != m_StartIsDangling ) || ( previousEndState != m_EndIsDangling );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::IsSelectStateChanged( const wxRect& aRect )
|
||||||
|
{
|
||||||
|
bool previousState = IsSelected();
|
||||||
|
|
||||||
|
if( aRect.Contains( m_Start ) )
|
||||||
|
m_Flags |= STARTPOINT | SELECTED;
|
||||||
|
else
|
||||||
|
m_Flags &= ~( STARTPOINT | SELECTED );
|
||||||
|
|
||||||
|
if( aRect.Contains( m_End ) )
|
||||||
|
m_Flags |= ENDPOINT | SELECTED;
|
||||||
|
else
|
||||||
|
m_Flags &= ~( ENDPOINT | SELECTED );
|
||||||
|
|
||||||
|
return previousState != IsSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LINE::GetConnectionPoints( vector< wxPoint >& aPoints ) const
|
||||||
|
{
|
||||||
|
aPoints.push_back( m_Start );
|
||||||
|
aPoints.push_back( m_End );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
|
{
|
||||||
|
if( !( aFilter & ( DRAW_ITEM_T | WIRE_T | BUS_T ) ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if( ( ( aFilter & DRAW_ITEM_T ) && ( m_Layer == LAYER_NOTES ) )
|
||||||
|
|| ( ( aFilter & WIRE_T ) && ( m_Layer == LAYER_WIRE ) )
|
||||||
|
|| ( ( aFilter & BUS_T ) && ( m_Layer == LAYER_BUS ) ) )
|
||||||
|
{
|
||||||
|
if( ( aFilter & EXCLUDE_WIRE_BUS_ENDPOINTS && IsEndPoint( aPoint ) )
|
||||||
|
|| ( aFilter & WIRE_BUS_ENDPOINTS_ONLY && !IsEndPoint( aPoint ) )
|
||||||
|
|| ( TestSegmentHit( aPoint, m_Start, m_End, aAccuracy ) ) )
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
|
{
|
||||||
|
EDA_Rect rect = aRect;
|
||||||
|
|
||||||
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
|
if( aContained )
|
||||||
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
|
return rect.Intersects( GetBoundingBox() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LINE::doIsConnected( const wxPoint& aPosition ) const
|
||||||
|
{
|
||||||
|
if( m_Layer != LAYER_WIRE && m_Layer != LAYER_BUS )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return IsEndPoint( aPosition );
|
||||||
|
}
|
|
@ -0,0 +1,136 @@
|
||||||
|
/**
|
||||||
|
* @file sch_line.h
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SCH_LINE_H_
|
||||||
|
#define _SCH_LINE_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include "sch_item_struct.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SCH_LINE
|
||||||
|
* is a segment description base class to describe items which have 2 end
|
||||||
|
* points (track, wire, draw line ...)
|
||||||
|
*/
|
||||||
|
class SCH_LINE : public SCH_ITEM
|
||||||
|
{
|
||||||
|
bool m_StartIsDangling;
|
||||||
|
bool m_EndIsDangling; // TRUE if not connected (wires, tracks...)
|
||||||
|
|
||||||
|
public:
|
||||||
|
int m_Width; // 0 = line, > 0 = tracks, bus ...
|
||||||
|
wxPoint m_Start; // Line start point
|
||||||
|
wxPoint m_End; // Line end point
|
||||||
|
|
||||||
|
public:
|
||||||
|
SCH_LINE( const wxPoint& pos = wxPoint( 0, 0 ), int layer = LAYER_NOTES );
|
||||||
|
SCH_LINE( const SCH_LINE& aLine );
|
||||||
|
~SCH_LINE() { }
|
||||||
|
|
||||||
|
SCH_LINE* Next() const { return (SCH_LINE*) Pnext; }
|
||||||
|
SCH_LINE* Back() const { return (SCH_LINE*) Pback; }
|
||||||
|
|
||||||
|
virtual wxString GetClass() const
|
||||||
|
{
|
||||||
|
return wxT( "SCH_LINE" );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsEndPoint( const wxPoint& aPoint ) const
|
||||||
|
{
|
||||||
|
return aPoint == m_Start || aPoint == m_End;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsNull() const { return m_Start == m_End; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetBoundingBox
|
||||||
|
* returns the orthogonal, bounding box of this object for display purposes.
|
||||||
|
* This box should be an enclosing perimeter for visible components of this
|
||||||
|
* object, and the units should be in the pcb or schematic coordinate system.
|
||||||
|
* It is OK to overestimate the size by a few counts.
|
||||||
|
*/
|
||||||
|
EDA_Rect GetBoundingBox() const;
|
||||||
|
|
||||||
|
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.sch" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load schematic line from \a aLine in a .sch file.
|
||||||
|
*
|
||||||
|
* @param aLine - Essentially this is file to read schematic line from.
|
||||||
|
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
||||||
|
* schematic line.
|
||||||
|
* @return True if the schematic line loaded successfully.
|
||||||
|
*/
|
||||||
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPenSize
|
||||||
|
* @return the size of the "pen" that be used to draw or plot this item
|
||||||
|
*/
|
||||||
|
virtual int GetPenSize() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Move
|
||||||
|
* moves the item by \a aMoveVector.
|
||||||
|
* @param aMoveVector The displacement vector
|
||||||
|
*/
|
||||||
|
virtual void Move( const wxPoint& aMoveVector );
|
||||||
|
|
||||||
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Mirror_Y
|
||||||
|
* mirrors the item relative to \a aYaxis_position.
|
||||||
|
* @param aYaxis_position = the y axis position
|
||||||
|
*/
|
||||||
|
virtual void Mirror_Y( int aYaxis_position );
|
||||||
|
|
||||||
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check line against \a aLine to see if it overlaps and merge if it does.
|
||||||
|
*
|
||||||
|
* This method will change the line to be equivalent of the line and \a aLine if the
|
||||||
|
* two lines overlap. This method is used to merge multple line segments into a single
|
||||||
|
* line.
|
||||||
|
*
|
||||||
|
* @param aLine - Line to compare.
|
||||||
|
* @return True if lines overlap and the line was merged with \a aLine.
|
||||||
|
*/
|
||||||
|
bool MergeOverlap( SCH_LINE* aLine );
|
||||||
|
|
||||||
|
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
|
||||||
|
|
||||||
|
virtual bool IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemList );
|
||||||
|
|
||||||
|
virtual bool IsDangling() const { return m_StartIsDangling || m_EndIsDangling; }
|
||||||
|
|
||||||
|
virtual bool IsSelectStateChanged( const wxRect& aRect );
|
||||||
|
|
||||||
|
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
void Show( int nestLevel, std::ostream& os ) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual bool doIsConnected( const wxPoint& aPosition ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _SCH_LINE_H_
|
|
@ -44,19 +44,21 @@ SCH_MARKER::SCH_MARKER( const wxPoint& pos, const wxString& text ) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_MARKER::SCH_MARKER( const SCH_MARKER& aMarker ) :
|
||||||
|
SCH_ITEM( aMarker ),
|
||||||
|
MARKER_BASE( aMarker )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_MARKER::~SCH_MARKER()
|
SCH_MARKER::~SCH_MARKER()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_MARKER* SCH_MARKER::GenCopy()
|
EDA_ITEM* SCH_MARKER::doClone() const
|
||||||
{
|
{
|
||||||
SCH_MARKER* newitem = new SCH_MARKER( GetPos(), GetReporter().GetMainText() );
|
return new SCH_MARKER( *this );
|
||||||
|
|
||||||
newitem->SetMarkerType( GetMarkerType() );
|
|
||||||
newitem->SetErrorLevel( GetErrorLevel() );
|
|
||||||
|
|
||||||
return newitem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,7 +78,6 @@ void SCH_MARKER::Show( int nestLevel, std::ostream& os )
|
||||||
<< GetPos() << "/>\n";
|
<< GetPos() << "/>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -194,7 +195,7 @@ bool SCH_MARKER::IsSelectStateChanged( const wxRect& aRect )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_MARKER::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_MARKER::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
if( !( aFilter & MARKER_T ) )
|
if( !( aFilter & MARKER_T ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -30,6 +30,7 @@ class SCH_MARKER : public SCH_ITEM, public MARKER_BASE
|
||||||
public:
|
public:
|
||||||
SCH_MARKER();
|
SCH_MARKER();
|
||||||
SCH_MARKER( const wxPoint& aPos, const wxString& aText );
|
SCH_MARKER( const wxPoint& aPos, const wxString& aText );
|
||||||
|
SCH_MARKER( const SCH_MARKER& aMarker );
|
||||||
~SCH_MARKER();
|
~SCH_MARKER();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -37,11 +38,8 @@ public:
|
||||||
return wxT( "SCH_MARKER" );
|
return wxT( "SCH_MARKER" );
|
||||||
}
|
}
|
||||||
|
|
||||||
SCH_MARKER* GenCopy();
|
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDraw_mode, int aColor = -1 );
|
||||||
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
|
||||||
const wxPoint& aOffset, int aDraw_mode,
|
|
||||||
int aColor = -1 );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Save
|
* Function Save
|
||||||
|
@ -104,7 +102,8 @@ public:
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _TYPE_SCH_MARKER_H_ */
|
#endif /* _TYPE_SCH_MARKER_H_ */
|
||||||
|
|
|
@ -0,0 +1,182 @@
|
||||||
|
/************************/
|
||||||
|
/* Class SCH_NO_CONNECT */
|
||||||
|
/************************/
|
||||||
|
|
||||||
|
#include "fctsys.h"
|
||||||
|
#include "gr_basic.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "class_drawpanel.h"
|
||||||
|
#include "common.h"
|
||||||
|
#include "trigo.h"
|
||||||
|
#include "richio.h"
|
||||||
|
|
||||||
|
#include "general.h"
|
||||||
|
#include "protos.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
|
|
||||||
|
|
||||||
|
SCH_NO_CONNECT::SCH_NO_CONNECT( const wxPoint& pos ) :
|
||||||
|
SCH_ITEM( NULL, SCH_NO_CONNECT_T )
|
||||||
|
{
|
||||||
|
#define DRAWNOCONNECT_SIZE 48 /* No symbol connection range. */
|
||||||
|
m_Pos = pos;
|
||||||
|
m_Size.x = m_Size.y = DRAWNOCONNECT_SIZE;
|
||||||
|
#undef DRAWNOCONNECT_SIZE
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_NO_CONNECT::SCH_NO_CONNECT( const SCH_NO_CONNECT& aNoConnect ) :
|
||||||
|
SCH_ITEM( aNoConnect )
|
||||||
|
{
|
||||||
|
m_Pos = aNoConnect.m_Pos;
|
||||||
|
m_Size = aNoConnect.m_Size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_ITEM* SCH_NO_CONNECT::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_NO_CONNECT( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_Rect SCH_NO_CONNECT::GetBoundingBox() const
|
||||||
|
{
|
||||||
|
int delta = ( GetPenSize() + m_Size.x ) / 2;
|
||||||
|
EDA_Rect box;
|
||||||
|
|
||||||
|
box.SetOrigin( m_Pos );
|
||||||
|
box.Inflate( delta );
|
||||||
|
|
||||||
|
return box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_NO_CONNECT::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
if( fprintf( aFile, "NoConn ~ %-4d %-4d\n", m_Pos.x, m_Pos.y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_NO_CONNECT::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
|
{
|
||||||
|
char name[256];
|
||||||
|
char* line = (char*) aLine;
|
||||||
|
|
||||||
|
while( (*line != ' ' ) && *line )
|
||||||
|
line++;
|
||||||
|
|
||||||
|
if( sscanf( line, "%s %d %d", name, &m_Pos.x, &m_Pos.y ) != 3 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file No Connect load error at line %d" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( ((char*)aLine) );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SCH_NO_CONNECT::GetPenSize() const
|
||||||
|
{
|
||||||
|
return g_DrawDefaultLineThickness;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_NO_CONNECT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor )
|
||||||
|
{
|
||||||
|
int pX, pY, color;
|
||||||
|
int delta = m_Size.x / 2;
|
||||||
|
int width = g_DrawDefaultLineThickness;
|
||||||
|
|
||||||
|
pX = m_Pos.x + aOffset.x;
|
||||||
|
pY = m_Pos.y + aOffset.y;
|
||||||
|
|
||||||
|
if( aColor >= 0 )
|
||||||
|
color = aColor;
|
||||||
|
else
|
||||||
|
color = ReturnLayerColor( LAYER_NOCONNECT );
|
||||||
|
|
||||||
|
GRSetDrawMode( aDC, aDrawMode );
|
||||||
|
|
||||||
|
GRLine( &aPanel->m_ClipBox, aDC, pX - delta, pY - delta, pX + delta, pY + delta, width, color );
|
||||||
|
GRLine( &aPanel->m_ClipBox, aDC, pX + delta, pY - delta, pX - delta, pY + delta, width, color );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_NO_CONNECT::Mirror_X( int aXaxis_position )
|
||||||
|
{
|
||||||
|
m_Pos.y -= aXaxis_position;
|
||||||
|
NEGATE( m_Pos.y );
|
||||||
|
m_Pos.y += aXaxis_position;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_NO_CONNECT::Mirror_Y( int aYaxis_position )
|
||||||
|
{
|
||||||
|
m_Pos.x -= aYaxis_position;
|
||||||
|
NEGATE( m_Pos.x );
|
||||||
|
m_Pos.x += aYaxis_position;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_NO_CONNECT::Rotate( wxPoint rotationPoint )
|
||||||
|
{
|
||||||
|
RotatePoint( &m_Pos, rotationPoint, 900 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_NO_CONNECT::IsSelectStateChanged( const wxRect& aRect )
|
||||||
|
{
|
||||||
|
bool previousState = IsSelected();
|
||||||
|
|
||||||
|
if( aRect.Contains( m_Pos ) )
|
||||||
|
m_Flags |= SELECTED;
|
||||||
|
else
|
||||||
|
m_Flags &= ~SELECTED;
|
||||||
|
|
||||||
|
return previousState != IsSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_NO_CONNECT::GetConnectionPoints( vector< wxPoint >& aPoints ) const
|
||||||
|
{
|
||||||
|
aPoints.push_back( m_Pos );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_NO_CONNECT::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
|
{
|
||||||
|
if( !( aFilter & NO_CONNECT_T ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int delta = ( ( m_Size.x + g_DrawDefaultLineThickness ) / 2 ) + aAccuracy;
|
||||||
|
|
||||||
|
wxPoint dist = aPoint - m_Pos;
|
||||||
|
|
||||||
|
if( ( ABS( dist.x ) <= delta ) && ( ABS( dist.y ) <= delta ) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_NO_CONNECT::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
|
{
|
||||||
|
EDA_Rect rect = aRect;
|
||||||
|
|
||||||
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
|
if( aContained )
|
||||||
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
|
return rect.Intersects( GetBoundingBox() );
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
/**
|
||||||
|
* @file sch_no_connect.h
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SCH_NO_CONNECT_H_
|
||||||
|
#define _SCH_NO_CONNECT_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include "sch_item_struct.h"
|
||||||
|
|
||||||
|
|
||||||
|
class SCH_NO_CONNECT : public SCH_ITEM
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxPoint m_Pos; /* XY coordinates of NoConnect. */
|
||||||
|
wxSize m_Size; // size of this symbol
|
||||||
|
|
||||||
|
public:
|
||||||
|
SCH_NO_CONNECT( const wxPoint& pos = wxPoint( 0, 0 ) );
|
||||||
|
|
||||||
|
SCH_NO_CONNECT( const SCH_NO_CONNECT& aNoConnect );
|
||||||
|
|
||||||
|
~SCH_NO_CONNECT() { }
|
||||||
|
|
||||||
|
virtual wxString GetClass() const
|
||||||
|
{
|
||||||
|
return wxT( "SCH_NO_CONNECT" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPenSize
|
||||||
|
* @return the size of the "pen" that be used to draw or plot this item
|
||||||
|
*/
|
||||||
|
virtual int GetPenSize() const;
|
||||||
|
|
||||||
|
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.sch"
|
||||||
|
* format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load schematic no connect entry from \a aLine in a .sch file.
|
||||||
|
*
|
||||||
|
* @param aLine - Essentially this is file to read schematic no connect from.
|
||||||
|
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
||||||
|
* schematic no connect.
|
||||||
|
* @return True if the schematic no connect loaded successfully.
|
||||||
|
*/
|
||||||
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetBoundingBox
|
||||||
|
* returns the orthogonal, bounding box of this object for display
|
||||||
|
* purposes. This box should be an enclosing perimeter for visible
|
||||||
|
* components of this object, and the units should be in the pcb or
|
||||||
|
* schematic coordinate system. It is OK to overestimate the size
|
||||||
|
* by a few counts.
|
||||||
|
*/
|
||||||
|
EDA_Rect GetBoundingBox() const;
|
||||||
|
|
||||||
|
// Geometric transforms (used in block operations):
|
||||||
|
|
||||||
|
/** virtual function Move
|
||||||
|
* move item to a new position.
|
||||||
|
* @param aMoveVector = the displacement vector
|
||||||
|
*/
|
||||||
|
virtual void Move( const wxPoint& aMoveVector )
|
||||||
|
{
|
||||||
|
m_Pos += aMoveVector;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Mirror_Y
|
||||||
|
* mirrors item relative to \a aYaxis_position.
|
||||||
|
* @param aYaxis_position = the y axis position
|
||||||
|
*/
|
||||||
|
virtual void Mirror_Y( int aYaxis_position );
|
||||||
|
|
||||||
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
|
virtual bool IsSelectStateChanged( const wxRect& aRect );
|
||||||
|
|
||||||
|
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _SCH_NO_CONNECT_H_
|
|
@ -0,0 +1,233 @@
|
||||||
|
/**********************/
|
||||||
|
/* Class SCH_POLYLINE */
|
||||||
|
/**********************/
|
||||||
|
|
||||||
|
#include "fctsys.h"
|
||||||
|
#include "gr_basic.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "class_drawpanel.h"
|
||||||
|
#include "trigo.h"
|
||||||
|
#include "common.h"
|
||||||
|
#include "richio.h"
|
||||||
|
|
||||||
|
#include "general.h"
|
||||||
|
#include "protos.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
|
|
||||||
|
|
||||||
|
SCH_POLYLINE::SCH_POLYLINE( int layer ) :
|
||||||
|
SCH_ITEM( NULL, SCH_POLYLINE_T )
|
||||||
|
{
|
||||||
|
m_Width = 0;
|
||||||
|
|
||||||
|
switch( layer )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
m_Layer = LAYER_NOTES;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LAYER_WIRE:
|
||||||
|
case LAYER_NOTES:
|
||||||
|
case LAYER_BUS:
|
||||||
|
m_Layer = layer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_POLYLINE::SCH_POLYLINE( const SCH_POLYLINE& aPolyLine ) :
|
||||||
|
SCH_ITEM( aPolyLine )
|
||||||
|
{
|
||||||
|
m_Width = aPolyLine.m_Width;
|
||||||
|
m_PolyPoints = aPolyLine.m_PolyPoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_POLYLINE::~SCH_POLYLINE()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_ITEM* SCH_POLYLINE::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_POLYLINE( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_POLYLINE::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
const char* layer = "Notes";
|
||||||
|
const char* width = "Line";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_WIRE )
|
||||||
|
layer = "Wire";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_BUS )
|
||||||
|
layer = "Bus";
|
||||||
|
|
||||||
|
if( fprintf( aFile, "Poly %s %s %d\n", width, layer, GetCornerCount() ) == EOF )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||||
|
{
|
||||||
|
if( fprintf( aFile, "\t%-4d %-4d\n", m_PolyPoints[ii ].x, m_PolyPoints[ii].y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_POLYLINE::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
|
{
|
||||||
|
char Name1[256];
|
||||||
|
char Name2[256];
|
||||||
|
wxPoint pt;
|
||||||
|
int ii;
|
||||||
|
char* line = (char*) aLine;
|
||||||
|
|
||||||
|
while( (*line != ' ' ) && *line )
|
||||||
|
line++;
|
||||||
|
|
||||||
|
if( sscanf( line, "%s %s %d", Name1, Name2, &ii ) != 3 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file polyline struct error at line %d, aborted" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( (char*) aLine );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Layer = LAYER_NOTES;
|
||||||
|
|
||||||
|
if( Name2[0] == 'W' )
|
||||||
|
m_Layer = LAYER_WIRE;
|
||||||
|
|
||||||
|
if( Name2[0] == 'B' )
|
||||||
|
m_Layer = LAYER_BUS;
|
||||||
|
|
||||||
|
for( unsigned jj = 0; jj < (unsigned)ii; jj++ )
|
||||||
|
{
|
||||||
|
wxPoint point;
|
||||||
|
|
||||||
|
if( !aLine.ReadLine() || sscanf( ((char*) aLine), "%d %d", &pt.x, &pt.y ) != 2 )
|
||||||
|
{
|
||||||
|
aErrorMsg.Printf( wxT( "EESchema file polyline struct error at line %d, aborted" ),
|
||||||
|
aLine.LineNumber() );
|
||||||
|
aErrorMsg << wxT( "\n" ) << CONV_FROM_UTF8( (char*) aLine );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddPoint( pt );
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SCH_POLYLINE::GetPenSize() const
|
||||||
|
{
|
||||||
|
int pensize = ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width;
|
||||||
|
|
||||||
|
return pensize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor )
|
||||||
|
{
|
||||||
|
int color;
|
||||||
|
int width = GetPenSize();
|
||||||
|
|
||||||
|
if( aColor >= 0 )
|
||||||
|
color = aColor;
|
||||||
|
else
|
||||||
|
color = ReturnLayerColor( m_Layer );
|
||||||
|
|
||||||
|
GRSetDrawMode( aDC, aDrawMode );
|
||||||
|
|
||||||
|
if( m_Layer == LAYER_BUS )
|
||||||
|
{
|
||||||
|
width *= 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
GRMoveTo( m_PolyPoints[0].x, m_PolyPoints[0].y );
|
||||||
|
|
||||||
|
if( m_Layer == LAYER_NOTES )
|
||||||
|
{
|
||||||
|
for( unsigned i = 1; i < GetCornerCount(); i++ )
|
||||||
|
GRDashedLineTo( &aPanel->m_ClipBox, aDC, m_PolyPoints[i].x + aOffset.x,
|
||||||
|
m_PolyPoints[i].y + aOffset.y, width, color );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for( unsigned i = 1; i < GetCornerCount(); i++ )
|
||||||
|
GRLineTo( &aPanel->m_ClipBox, aDC, m_PolyPoints[i].x + aOffset.x,
|
||||||
|
m_PolyPoints[i].y + aOffset.y, width, color );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_POLYLINE::Mirror_X( int aXaxis_position )
|
||||||
|
{
|
||||||
|
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||||
|
{
|
||||||
|
m_PolyPoints[ii].y -= aXaxis_position;
|
||||||
|
NEGATE( m_PolyPoints[ii].y );
|
||||||
|
m_PolyPoints[ii].y = aXaxis_position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_POLYLINE::Mirror_Y( int aYaxis_position )
|
||||||
|
{
|
||||||
|
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||||
|
{
|
||||||
|
m_PolyPoints[ii].x -= aYaxis_position;
|
||||||
|
NEGATE( m_PolyPoints[ii].x );
|
||||||
|
m_PolyPoints[ii].x = aYaxis_position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_POLYLINE::Rotate( wxPoint rotationPoint )
|
||||||
|
{
|
||||||
|
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||||
|
{
|
||||||
|
RotatePoint( &m_PolyPoints[ii], rotationPoint, 900 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_POLYLINE::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
|
{
|
||||||
|
if( !( aFilter & ( DRAW_ITEM_T | WIRE_T | BUS_T ) ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for( size_t i = 0; i < m_PolyPoints.size() - 1; i++ )
|
||||||
|
{
|
||||||
|
if( TestSegmentHit( aPoint, m_PolyPoints[i], m_PolyPoints[i + 1], aAccuracy ) )
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_POLYLINE::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
|
{
|
||||||
|
EDA_Rect rect = aRect;
|
||||||
|
|
||||||
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
|
if( aContained )
|
||||||
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
|
return rect.Intersects( GetBoundingBox() );
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
/**
|
||||||
|
* @file sch_polyline.h
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SCH_POLYLINE_H_
|
||||||
|
#define _SCH_POLYLINE_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include "sch_item_struct.h"
|
||||||
|
|
||||||
|
|
||||||
|
class SCH_POLYLINE : public SCH_ITEM
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int m_Width; /* Thickness */
|
||||||
|
std::vector<wxPoint> m_PolyPoints; // list of points (>= 2)
|
||||||
|
|
||||||
|
public:
|
||||||
|
SCH_POLYLINE( int layer = LAYER_NOTES );
|
||||||
|
|
||||||
|
SCH_POLYLINE( const SCH_POLYLINE& aPolyLine );
|
||||||
|
|
||||||
|
~SCH_POLYLINE();
|
||||||
|
|
||||||
|
virtual wxString GetClass() const
|
||||||
|
{
|
||||||
|
return wxT( "SCH_POLYLINE" );
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||||
|
int aDrawMode, int aColor = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.sch"
|
||||||
|
* format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load schematic poly line entry from \a aLine in a .sch file.
|
||||||
|
*
|
||||||
|
* @param aLine - Essentially this is file to read schematic poly line from.
|
||||||
|
* @param aErrorMsg - Description of the error if an error occurs while loading the
|
||||||
|
* schematic poly line.
|
||||||
|
* @return True if the schematic poly line loaded successfully.
|
||||||
|
*/
|
||||||
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function AddPoint
|
||||||
|
* add a corner to m_PolyPoints
|
||||||
|
*/
|
||||||
|
void AddPoint( const wxPoint& point )
|
||||||
|
{
|
||||||
|
m_PolyPoints.push_back( point );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetCornerCount
|
||||||
|
* @return the number of corners
|
||||||
|
*/
|
||||||
|
|
||||||
|
unsigned GetCornerCount() const { return m_PolyPoints.size(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPenSize
|
||||||
|
* @return the size of the "pen" that be used to draw or plot this item
|
||||||
|
*/
|
||||||
|
virtual int GetPenSize() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Move
|
||||||
|
* moves an item to a new position by \a aMoveVector.
|
||||||
|
* @param aMoveVector = the displacement vector
|
||||||
|
*/
|
||||||
|
virtual void Move( const wxPoint& aMoveVector )
|
||||||
|
{
|
||||||
|
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||||
|
m_PolyPoints[ii] += aMoveVector;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Mirror_Y
|
||||||
|
* mirrors an item relative to \a aYaxis_position.
|
||||||
|
* @param aYaxis_position The y axis position to mirror around.
|
||||||
|
*/
|
||||||
|
virtual void Mirror_Y( int aYaxis_position );
|
||||||
|
|
||||||
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _SCH_POLYLINE_H_
|
|
@ -14,6 +14,7 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
|
|
||||||
|
@ -203,11 +204,7 @@ SCH_ITEM* SCH_SCREEN::ExtractWires( bool CreateCopy )
|
||||||
|
|
||||||
if( CreateCopy )
|
if( CreateCopy )
|
||||||
{
|
{
|
||||||
if( item->Type() == SCH_JUNCTION_T )
|
new_item = item->Clone();
|
||||||
new_item = ( (SCH_JUNCTION*) item )->GenCopy();
|
|
||||||
else
|
|
||||||
new_item = ( (SCH_LINE*) item )->GenCopy();
|
|
||||||
|
|
||||||
new_item->SetNext( GetDrawItems() );
|
new_item->SetNext( GetDrawItems() );
|
||||||
SetDrawItems( new_item );
|
SetDrawItems( new_item );
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,26 @@ SCH_SHEET::SCH_SHEET( const wxPoint& pos ) : SCH_ITEM( NULL, SCH_SHEET_T )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_SHEET::SCH_SHEET( const SCH_SHEET& aSheet ) :
|
||||||
|
SCH_ITEM( aSheet )
|
||||||
|
{
|
||||||
|
m_Pos = aSheet.m_Pos;
|
||||||
|
m_TimeStamp = aSheet.m_TimeStamp;
|
||||||
|
m_SheetNameSize = aSheet.m_SheetNameSize;
|
||||||
|
m_FileNameSize = aSheet.m_FileNameSize;
|
||||||
|
m_AssociatedScreen = aSheet.m_AssociatedScreen;
|
||||||
|
m_SheetName = aSheet.m_SheetName;
|
||||||
|
m_FileName = aSheet.m_FileName;
|
||||||
|
m_labels = aSheet.m_labels;
|
||||||
|
|
||||||
|
for( size_t i = 0; i < m_labels.size(); i++ )
|
||||||
|
m_labels[i].SetParent( this );
|
||||||
|
|
||||||
|
if( m_AssociatedScreen )
|
||||||
|
m_AssociatedScreen->m_RefCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET::~SCH_SHEET()
|
SCH_SHEET::~SCH_SHEET()
|
||||||
{
|
{
|
||||||
// also, look at the associated sheet & its reference count
|
// also, look at the associated sheet & its reference count
|
||||||
|
@ -55,12 +75,12 @@ SCH_SHEET::~SCH_SHEET()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
EDA_ITEM* SCH_SHEET::doClone() const
|
||||||
* Function Save
|
{
|
||||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
return new SCH_SHEET( *this );
|
||||||
* @param aFile The FILE to write to.
|
}
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET::Save( FILE* aFile ) const
|
bool SCH_SHEET::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
if( fprintf( aFile, "$Sheet\n" ) == EOF
|
if( fprintf( aFile, "$Sheet\n" ) == EOF
|
||||||
|
@ -248,49 +268,6 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* creates a copy of a sheet
|
|
||||||
* The linked data itself (GetDrawItems()) is not duplicated
|
|
||||||
*/
|
|
||||||
SCH_SHEET* SCH_SHEET::GenCopy()
|
|
||||||
{
|
|
||||||
SCH_SHEET* newitem = new SCH_SHEET( m_Pos );
|
|
||||||
|
|
||||||
newitem->m_Size = m_Size;
|
|
||||||
newitem->SetParent( m_Parent );
|
|
||||||
newitem->m_TimeStamp = GetTimeStamp();
|
|
||||||
|
|
||||||
newitem->m_FileName = m_FileName;
|
|
||||||
newitem->m_FileNameSize = m_FileNameSize;
|
|
||||||
|
|
||||||
/* newitem->m_SheetName = m_SheetName; m_SheetName must be unique for
|
|
||||||
* all sub sheets in a given sheet
|
|
||||||
* so we no not duplicate sheet
|
|
||||||
* name
|
|
||||||
*/
|
|
||||||
newitem->m_SheetNameSize = m_SheetNameSize;
|
|
||||||
|
|
||||||
BOOST_FOREACH( SCH_SHEET_PIN& sheetPin, m_labels )
|
|
||||||
{
|
|
||||||
SCH_SHEET_PIN* newSheetPin = sheetPin.GenCopy();
|
|
||||||
newSheetPin->SetParent( newitem );
|
|
||||||
newitem->GetSheetPins().push_back( newSheetPin );
|
|
||||||
}
|
|
||||||
|
|
||||||
newitem->renumberLabels();
|
|
||||||
|
|
||||||
/* don't copy screen data - just reference it. */
|
|
||||||
newitem->m_AssociatedScreen = m_AssociatedScreen;
|
|
||||||
|
|
||||||
if( m_AssociatedScreen )
|
|
||||||
m_AssociatedScreen->m_RefCount++;
|
|
||||||
|
|
||||||
return newitem;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Used if undo / redo command:
|
|
||||||
* swap data between this and copyitem
|
|
||||||
*/
|
|
||||||
void SCH_SHEET::SwapData( SCH_SHEET* copyitem )
|
void SCH_SHEET::SwapData( SCH_SHEET* copyitem )
|
||||||
{
|
{
|
||||||
EXCHG( m_Pos, copyitem->m_Pos );
|
EXCHG( m_Pos, copyitem->m_Pos );
|
||||||
|
@ -487,20 +464,12 @@ SCH_SHEET_PIN* SCH_SHEET::GetLabel( const wxPoint& aPosition )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
int SCH_SHEET::GetPenSize() const
|
int SCH_SHEET::GetPenSize() const
|
||||||
{
|
{
|
||||||
return g_DrawDefaultLineThickness;
|
return g_DrawDefaultLineThickness;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetSheetNamePosition
|
|
||||||
* @return the position of the anchor of sheet name text
|
|
||||||
*/
|
|
||||||
wxPoint SCH_SHEET::GetSheetNamePosition()
|
wxPoint SCH_SHEET::GetSheetNamePosition()
|
||||||
{
|
{
|
||||||
wxPoint pos = m_Pos;
|
wxPoint pos = m_Pos;
|
||||||
|
@ -517,10 +486,7 @@ wxPoint SCH_SHEET::GetSheetNamePosition()
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetFileNamePosition
|
|
||||||
* @return the position of the anchor of filename text
|
|
||||||
*/
|
|
||||||
wxPoint SCH_SHEET::GetFileNamePosition()
|
wxPoint SCH_SHEET::GetFileNamePosition()
|
||||||
{
|
{
|
||||||
wxPoint pos = m_Pos;
|
wxPoint pos = m_Pos;
|
||||||
|
@ -538,16 +504,6 @@ wxPoint SCH_SHEET::GetFileNamePosition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Draw
|
|
||||||
* Draw the hierarchical sheet shape
|
|
||||||
* @param aPanel = the current DrawPanel
|
|
||||||
* @param aDc = the current Device Context
|
|
||||||
* @param aOffset = draw offset (usually wxPoint(0,0))
|
|
||||||
* @param aDrawMode = draw mode
|
|
||||||
* @param aColor = color used to draw sheet. Usually -1 to use the normal
|
|
||||||
* color for sheet items
|
|
||||||
*/
|
|
||||||
void SCH_SHEET::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
void SCH_SHEET::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
const wxPoint& aOffset, int aDrawMode, int aColor )
|
const wxPoint& aOffset, int aDrawMode, int aColor )
|
||||||
{
|
{
|
||||||
|
@ -613,10 +569,6 @@ void SCH_SHEET::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetBoundingBox
|
|
||||||
* @return an EDA_Rect giving the bounding box of the sheet
|
|
||||||
*/
|
|
||||||
EDA_Rect SCH_SHEET::GetBoundingBox() const
|
EDA_Rect SCH_SHEET::GetBoundingBox() const
|
||||||
{
|
{
|
||||||
int dx, dy;
|
int dx, dy;
|
||||||
|
@ -637,11 +589,6 @@ EDA_Rect SCH_SHEET::GetBoundingBox() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ComponentCount
|
|
||||||
* count our own components, without the power components.
|
|
||||||
* @return the component count.
|
|
||||||
*/
|
|
||||||
int SCH_SHEET::ComponentCount()
|
int SCH_SHEET::ComponentCount()
|
||||||
{
|
{
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
@ -672,13 +619,6 @@ int SCH_SHEET::ComponentCount()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SearchHierarchy
|
|
||||||
* search the existing hierarchy for an instance of screen "FileName".
|
|
||||||
* @param aFilename = the filename to find
|
|
||||||
* @param aFilename = a location to return a pointer to the screen (if found)
|
|
||||||
* @return bool if found, and a pointer to the screen
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET::SearchHierarchy( wxString aFilename, SCH_SCREEN** aScreen )
|
bool SCH_SHEET::SearchHierarchy( wxString aFilename, SCH_SCREEN** aScreen )
|
||||||
{
|
{
|
||||||
if( m_AssociatedScreen )
|
if( m_AssociatedScreen )
|
||||||
|
@ -708,17 +648,6 @@ bool SCH_SHEET::SearchHierarchy( wxString aFilename, SCH_SCREEN** aScreen )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function LocatePathOfScreen
|
|
||||||
* search the existing hierarchy for an instance of screen "FileName".
|
|
||||||
* don't bother looking at the root sheet - it must be unique,
|
|
||||||
* no other references to its m_AssociatedScreen otherwise there would be
|
|
||||||
* loops
|
|
||||||
* in the hierarchy.
|
|
||||||
* @param aScreen = the SCH_SCREEN* screen that we search for
|
|
||||||
* @param aList = the SCH_SHEET_PATH* that must be used
|
|
||||||
* @return true if found
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET::LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList )
|
bool SCH_SHEET::LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList )
|
||||||
{
|
{
|
||||||
if( m_AssociatedScreen )
|
if( m_AssociatedScreen )
|
||||||
|
@ -749,15 +678,6 @@ bool SCH_SHEET::LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Load.
|
|
||||||
* for the sheet: load the file m_FileName
|
|
||||||
* if a screen already exists, the file is already read.
|
|
||||||
* m_AssociatedScreen point on the screen, and its m_RefCount is incremented
|
|
||||||
* else creates a new associated screen and load the data file.
|
|
||||||
* @param aFrame = a SCH_EDIT_FRAME pointer to the maim schematic frame
|
|
||||||
* @return true if OK
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame )
|
bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame )
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -804,12 +724,6 @@ bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function CountSheets
|
|
||||||
* calculates the number of sheets found in "this"
|
|
||||||
* this number includes the full subsheets count
|
|
||||||
* @return the full count of sheets+subsheets contained by "this"
|
|
||||||
*/
|
|
||||||
int SCH_SHEET::CountSheets()
|
int SCH_SHEET::CountSheets()
|
||||||
{
|
{
|
||||||
int count = 1; //1 = this!!
|
int count = 1; //1 = this!!
|
||||||
|
@ -837,17 +751,6 @@ wxString SCH_SHEET::GetFileName( void )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ChangeFileName
|
|
||||||
* Set a new filename and manage data and associated screen
|
|
||||||
* The main difficulty is the filename change in a complex hierarchy.
|
|
||||||
* - if new filename is not already used: change to the new name (and if an
|
|
||||||
* existing file is found, load it on request)
|
|
||||||
* - if new filename is already used (a complex hierarchy) : reference the
|
|
||||||
* sheet.
|
|
||||||
* @param aFileName = the new filename
|
|
||||||
* @param aFrame = the schematic frame
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET::ChangeFileName( SCH_EDIT_FRAME* aFrame, const wxString& aFileName )
|
bool SCH_SHEET::ChangeFileName( SCH_EDIT_FRAME* aFrame, const wxString& aFileName )
|
||||||
{
|
{
|
||||||
if( ( GetFileName() == aFileName ) && m_AssociatedScreen )
|
if( ( GetFileName() == aFileName ) && m_AssociatedScreen )
|
||||||
|
@ -997,11 +900,6 @@ void SCH_SHEET::Mirror_X( int aXaxis_position )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Mirror_Y (virtual)
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
void SCH_SHEET::Mirror_Y( int aYaxis_position )
|
void SCH_SHEET::Mirror_Y( int aYaxis_position )
|
||||||
{
|
{
|
||||||
m_Pos.x -= aYaxis_position;
|
m_Pos.x -= aYaxis_position;
|
||||||
|
@ -1031,14 +929,7 @@ void SCH_SHEET::Resize( const wxSize& aSize )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Compare schematic sheet entry (filename and sheetname) against search string.
|
bool SCH_SHEET::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint* aFindLocation )
|
||||||
* @param aSearchData - Criteria to search against.
|
|
||||||
* @param aAuxData - a pointer on auxiliary data, not used here.
|
|
||||||
* @param aFindLocation - a wxPoint where to put the location of matched item. can be NULL.
|
|
||||||
* @return True if this item matches the search criteria.
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET::Matches( wxFindReplaceData& aSearchData,
|
|
||||||
void* aAuxData, wxPoint * aFindLocation )
|
|
||||||
{
|
{
|
||||||
if( SCH_ITEM::Matches( m_FileName, aSearchData ) )
|
if( SCH_ITEM::Matches( m_FileName, aSearchData ) )
|
||||||
{
|
{
|
||||||
|
@ -1136,7 +1027,7 @@ void SCH_SHEET::GetConnectionPoints( vector< wxPoint >& aPoints ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_SHEET::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_SHEET::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
if( !( aFilter & SHEET_T ) )
|
if( !( aFilter & SHEET_T ) )
|
||||||
return false;
|
return false;
|
||||||
|
@ -1145,18 +1036,18 @@ bool SCH_SHEET::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aF
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
return rect.Inside( aPoint );
|
return rect.Contains( aPoint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_SHEET::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
bool SCH_SHEET::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
{
|
{
|
||||||
EDA_Rect rect = aRect;
|
EDA_Rect rect = aRect;
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
@ -1182,4 +1073,3 @@ void SCH_SHEET::Show( int nestLevel, std::ostream& os )
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -47,11 +47,15 @@ private:
|
||||||
* orientation.
|
* orientation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SCH_SHEET_PIN( SCH_SHEET* parent,
|
SCH_SHEET_PIN( SCH_SHEET* parent,
|
||||||
const wxPoint& pos = wxPoint( 0, 0 ),
|
const wxPoint& pos = wxPoint( 0, 0 ),
|
||||||
const wxString& text = wxEmptyString );
|
const wxString& text = wxEmptyString );
|
||||||
|
|
||||||
|
SCH_SHEET_PIN( const SCH_SHEET_PIN& aSheetLabel );
|
||||||
|
|
||||||
~SCH_SHEET_PIN() { }
|
~SCH_SHEET_PIN() { }
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -59,11 +63,8 @@ public:
|
||||||
return wxT( "SCH_SHEET_PIN" );
|
return wxT( "SCH_SHEET_PIN" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool operator ==( const SCH_SHEET_PIN* aPin ) const;
|
bool operator ==( const SCH_SHEET_PIN* aPin ) const;
|
||||||
|
|
||||||
SCH_SHEET_PIN* GenCopy();
|
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* aPanel,
|
virtual void Draw( WinEDA_DrawPanel* aPanel,
|
||||||
wxDC* aDC,
|
wxDC* aDC,
|
||||||
const wxPoint& aOffset,
|
const wxPoint& aOffset,
|
||||||
|
@ -101,6 +102,12 @@ public:
|
||||||
void SetNumber( int aNumber );
|
void SetNumber( int aNumber );
|
||||||
void SetEdge( int aEdge );
|
void SetEdge( int aEdge );
|
||||||
int GetEdge();
|
int GetEdge();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ConstraintOnEdge
|
||||||
|
* is used to adjust label position to egde based on proximity to vertical / horizontal edge
|
||||||
|
* of the parent sheet.
|
||||||
|
*/
|
||||||
void ConstraintOnEdge( wxPoint Pos );
|
void ConstraintOnEdge( wxPoint Pos );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -223,6 +230,9 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SCH_SHEET( const wxPoint& pos = wxPoint( 0, 0 ) );
|
SCH_SHEET( const wxPoint& pos = wxPoint( 0, 0 ) );
|
||||||
|
|
||||||
|
SCH_SHEET( const SCH_SHEET& aSheet );
|
||||||
|
|
||||||
~SCH_SHEET();
|
~SCH_SHEET();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -250,8 +260,6 @@ public:
|
||||||
|
|
||||||
void Place( SCH_EDIT_FRAME* frame, wxDC* DC );
|
void Place( SCH_EDIT_FRAME* frame, wxDC* DC );
|
||||||
|
|
||||||
SCH_SHEET* GenCopy();
|
|
||||||
|
|
||||||
void DisplayInfo( WinEDA_DrawFrame* frame );
|
void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||||
|
|
||||||
/* there is no member for orientation in sch_sheet, to preserve file
|
/* there is no member for orientation in sch_sheet, to preserve file
|
||||||
|
@ -513,8 +521,9 @@ protected:
|
||||||
void renumberLabels();
|
void renumberLabels();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* CLASS_DRAWSHEET_H */
|
#endif /* CLASS_DRAWSHEET_H */
|
||||||
|
|
|
@ -52,22 +52,20 @@ SCH_SHEET_PIN::SCH_SHEET_PIN( SCH_SHEET* parent, const wxPoint& pos, const wxStr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET_PIN* SCH_SHEET_PIN::GenCopy()
|
SCH_SHEET_PIN::SCH_SHEET_PIN( const SCH_SHEET_PIN& aSheetLabel ) :
|
||||||
|
SCH_HIERLABEL( aSheetLabel )
|
||||||
{
|
{
|
||||||
SCH_SHEET_PIN* newitem = new SCH_SHEET_PIN( (SCH_SHEET*) m_Parent, m_Pos, m_Text );
|
m_Number = aSheetLabel.m_Number;
|
||||||
|
m_Edge = aSheetLabel.m_Edge;
|
||||||
newitem->SetEdge( GetEdge() );
|
|
||||||
newitem->m_Shape = m_Shape;
|
|
||||||
newitem->m_Size = m_Size;
|
|
||||||
newitem->SetNumber( GetNumber() );
|
|
||||||
return newitem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** SCH_SHEET_PIN::Draw is the same as SCH_HIERLABEL::Draw
|
|
||||||
* but the graphic icon is slightly different
|
EDA_ITEM* SCH_SHEET_PIN::doClone() const
|
||||||
* for INPUT type the icon is the OUTPUT shape of SCH_HIERLABEL
|
{
|
||||||
* for OUTPUT type the icon is the INPUT shape of SCH_HIERLABEL
|
return new SCH_SHEET_PIN( *this );
|
||||||
*/
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_SHEET_PIN::Draw( WinEDA_DrawPanel* aPanel,
|
void SCH_SHEET_PIN::Draw( WinEDA_DrawPanel* aPanel,
|
||||||
wxDC* aDC,
|
wxDC* aDC,
|
||||||
const wxPoint& aOffset,
|
const wxPoint& aOffset,
|
||||||
|
@ -76,7 +74,7 @@ void SCH_SHEET_PIN::Draw( WinEDA_DrawPanel* aPanel,
|
||||||
{
|
{
|
||||||
// The icon selection is handle by the virtual method CreateGraphicShape
|
// The icon selection is handle by the virtual method CreateGraphicShape
|
||||||
// called by ::Draw
|
// called by ::Draw
|
||||||
SCH_HIERLABEL::Draw(aPanel, aDC, aOffset, aDraw_mode, aColor );
|
SCH_HIERLABEL::Draw( aPanel, aDC, aOffset, aDraw_mode, aColor );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,10 +97,6 @@ bool SCH_SHEET_PIN::operator==( const SCH_SHEET_PIN* aPin ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
int SCH_SHEET_PIN::GetPenSize() const
|
int SCH_SHEET_PIN::GetPenSize() const
|
||||||
{
|
{
|
||||||
return g_DrawDefaultLineThickness;
|
return g_DrawDefaultLineThickness;
|
||||||
|
@ -124,6 +118,7 @@ void SCH_SHEET_PIN::SetEdge( int aEdge )
|
||||||
/* use -1 to adjust text orientation without changing edge*/
|
/* use -1 to adjust text orientation without changing edge*/
|
||||||
if( aEdge > -1 )
|
if( aEdge > -1 )
|
||||||
m_Edge = aEdge;
|
m_Edge = aEdge;
|
||||||
|
|
||||||
switch( m_Edge )
|
switch( m_Edge )
|
||||||
{
|
{
|
||||||
case 0: /* pin on left side*/
|
case 0: /* pin on left side*/
|
||||||
|
@ -155,10 +150,6 @@ int SCH_SHEET_PIN::GetEdge()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ConstraintOnEdge is used to ajust label position to egde based
|
|
||||||
* on proximity to vertical / horizontal edge.
|
|
||||||
* used by sheetlab and resize
|
|
||||||
*/
|
|
||||||
void SCH_SHEET_PIN::ConstraintOnEdge( wxPoint Pos )
|
void SCH_SHEET_PIN::ConstraintOnEdge( wxPoint Pos )
|
||||||
{
|
{
|
||||||
SCH_SHEET* Sheet = (SCH_SHEET*) GetParent();
|
SCH_SHEET* Sheet = (SCH_SHEET*) GetParent();
|
||||||
|
@ -195,26 +186,23 @@ void SCH_SHEET_PIN::ConstraintOnEdge( wxPoint Pos )
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Pos.x = Pos.x;
|
m_Pos.x = Pos.x;
|
||||||
|
|
||||||
if( m_Pos.x < Sheet->m_Pos.x )
|
if( m_Pos.x < Sheet->m_Pos.x )
|
||||||
m_Pos.x = Sheet->m_Pos.x;
|
m_Pos.x = Sheet->m_Pos.x;
|
||||||
|
|
||||||
if( m_Pos.x > (Sheet->m_Pos.x + Sheet->m_Size.x) )
|
if( m_Pos.x > (Sheet->m_Pos.x + Sheet->m_Size.x) )
|
||||||
m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x;
|
m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Save
|
|
||||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
|
||||||
* @param aFile The FILE to write to.
|
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET_PIN::Save( FILE* aFile ) const
|
bool SCH_SHEET_PIN::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
int type = 'U', side = 'L';
|
int type = 'U', side = 'L';
|
||||||
|
|
||||||
if( m_Text.IsEmpty() )
|
if( m_Text.IsEmpty() )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
switch( m_Edge )
|
switch( m_Edge )
|
||||||
{
|
{
|
||||||
case 0: //pin on left side
|
case 0: //pin on left side
|
||||||
|
@ -331,14 +319,6 @@ bool SCH_SHEET_PIN::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Matches
|
|
||||||
* Compare hierarchical pin name against search string.
|
|
||||||
* @param aSearchData - Criteria to search against.
|
|
||||||
* @param aAuxData - a pointer on auxiliary data, not used here
|
|
||||||
* @param aFindLocation - a wxPoint where to put the location of matched item. can be NULL.
|
|
||||||
* @return True if this item matches the search criteria.
|
|
||||||
*/
|
|
||||||
bool SCH_SHEET_PIN::Matches( wxFindReplaceData& aSearchData,
|
bool SCH_SHEET_PIN::Matches( wxFindReplaceData& aSearchData,
|
||||||
void* aAuxData, wxPoint * aFindLocation )
|
void* aAuxData, wxPoint * aFindLocation )
|
||||||
{
|
{
|
||||||
|
@ -346,6 +326,7 @@ bool SCH_SHEET_PIN::Matches( wxFindReplaceData& aSearchData,
|
||||||
{
|
{
|
||||||
if( aFindLocation )
|
if( aFindLocation )
|
||||||
*aFindLocation = m_Pos;
|
*aFindLocation = m_Pos;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,6 +339,7 @@ void SCH_SHEET_PIN::Mirror_X( int aXaxis_position )
|
||||||
int p = m_Pos.y - aXaxis_position;
|
int p = m_Pos.y - aXaxis_position;
|
||||||
|
|
||||||
m_Pos.y = aXaxis_position - p;
|
m_Pos.y = aXaxis_position - p;
|
||||||
|
|
||||||
switch( m_Edge )
|
switch( m_Edge )
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -376,6 +358,7 @@ void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position )
|
||||||
int p = m_Pos.x - aYaxis_position;
|
int p = m_Pos.x - aYaxis_position;
|
||||||
|
|
||||||
m_Pos.x = aYaxis_position - p;
|
m_Pos.x = aYaxis_position - p;
|
||||||
|
|
||||||
switch( m_Edge )
|
switch( m_Edge )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -392,6 +375,7 @@ void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position )
|
||||||
void SCH_SHEET_PIN::Rotate( wxPoint rotationPoint )
|
void SCH_SHEET_PIN::Rotate( wxPoint rotationPoint )
|
||||||
{
|
{
|
||||||
RotatePoint( &m_Pos, rotationPoint, 900 );
|
RotatePoint( &m_Pos, rotationPoint, 900 );
|
||||||
|
|
||||||
switch( m_Edge )
|
switch( m_Edge )
|
||||||
{
|
{
|
||||||
case 0: //pin on left side
|
case 0: //pin on left side
|
||||||
|
@ -451,6 +435,7 @@ void SCH_SHEET_PIN::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList )
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
|
|
||||||
void SCH_SHEET_PIN::Show( int nestLevel, std::ostream& os )
|
void SCH_SHEET_PIN::Show( int nestLevel, std::ostream& os )
|
||||||
{
|
{
|
||||||
// XML output:
|
// XML output:
|
||||||
|
@ -463,5 +448,4 @@ void SCH_SHEET_PIN::Show( int nestLevel, std::ostream& os )
|
||||||
// NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n";
|
// NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -76,7 +76,8 @@ static int* TemplateShape[5][4] =
|
||||||
|
|
||||||
|
|
||||||
SCH_TEXT::SCH_TEXT( const wxPoint& pos, const wxString& text, KICAD_T aType ) :
|
SCH_TEXT::SCH_TEXT( const wxPoint& pos, const wxString& text, KICAD_T aType ) :
|
||||||
SCH_ITEM( NULL, aType ), EDA_TextStruct( text )
|
SCH_ITEM( NULL, aType ),
|
||||||
|
EDA_TextStruct( text )
|
||||||
{
|
{
|
||||||
m_Layer = LAYER_NOTES;
|
m_Layer = LAYER_NOTES;
|
||||||
m_Pos = pos;
|
m_Pos = pos;
|
||||||
|
@ -87,53 +88,30 @@ SCH_TEXT::SCH_TEXT( const wxPoint& pos, const wxString& text, KICAD_T aType ) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_TEXT* SCH_TEXT::GenCopy()
|
SCH_TEXT::SCH_TEXT( const SCH_TEXT& aText ) :
|
||||||
|
SCH_ITEM( aText ),
|
||||||
|
EDA_TextStruct( aText )
|
||||||
{
|
{
|
||||||
SCH_TEXT* newitem;
|
m_Pos = aText.m_Pos;
|
||||||
|
m_Shape = aText.m_Shape;
|
||||||
switch( Type() )
|
m_MultilineAllowed = aText.m_MultilineAllowed;
|
||||||
{
|
m_SchematicOrientation = aText.m_SchematicOrientation;
|
||||||
default:
|
m_IsDangling = false;
|
||||||
case SCH_TEXT_T:
|
}
|
||||||
newitem = new SCH_TEXT( m_Pos, m_Text );
|
|
||||||
break;
|
|
||||||
|
EDA_ITEM* SCH_TEXT::doClone() const
|
||||||
case SCH_GLOBAL_LABEL_T:
|
{
|
||||||
newitem = new SCH_GLOBALLABEL( m_Pos, m_Text );
|
return new SCH_TEXT( *this );
|
||||||
break;
|
}
|
||||||
|
|
||||||
case SCH_HIERARCHICAL_LABEL_T:
|
|
||||||
newitem = new SCH_HIERLABEL( m_Pos, m_Text );
|
void SCH_TEXT::IncrementLabel()
|
||||||
break;
|
{
|
||||||
|
IncrementLabelMember( m_Text );
|
||||||
case SCH_LABEL_T:
|
|
||||||
newitem = new SCH_LABEL( m_Pos, m_Text );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
newitem->m_Layer = m_Layer;
|
|
||||||
newitem->m_Shape = m_Shape;
|
|
||||||
newitem->m_Orient = m_Orient;
|
|
||||||
newitem->m_Size = m_Size;
|
|
||||||
newitem->m_Thickness = m_Thickness;
|
|
||||||
newitem->m_HJustify = m_HJustify;
|
|
||||||
newitem->m_VJustify = m_VJustify;
|
|
||||||
newitem->m_IsDangling = m_IsDangling;
|
|
||||||
newitem->m_Italic = m_Italic;
|
|
||||||
newitem->m_Bold = m_Bold;
|
|
||||||
newitem->m_SchematicOrientation = m_SchematicOrientation;
|
|
||||||
|
|
||||||
return newitem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetSchematicTextOffset (virtual)
|
|
||||||
* @return the offset between the SCH_TEXT position and the text itself
|
|
||||||
* position
|
|
||||||
* This offset depend on orientation, and the type of text
|
|
||||||
* (room to draw an associated graphic symbol, or put the text above a wire)
|
|
||||||
*/
|
|
||||||
wxPoint SCH_TEXT::GetSchematicTextOffset()
|
wxPoint SCH_TEXT::GetSchematicTextOffset()
|
||||||
{
|
{
|
||||||
wxPoint text_offset;
|
wxPoint text_offset;
|
||||||
|
@ -178,11 +156,6 @@ bool SCH_TEXT::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Mirror_Y (virtual)
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
void SCH_TEXT::Mirror_Y( int aYaxis_position )
|
void SCH_TEXT::Mirror_Y( int aYaxis_position )
|
||||||
{
|
{
|
||||||
// Text is NOT really mirrored; it is moved to a suitable position
|
// Text is NOT really mirrored; it is moved to a suitable position
|
||||||
|
@ -224,11 +197,6 @@ void SCH_TEXT::Mirror_Y( int aYaxis_position )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Mirror_X (virtual)
|
|
||||||
* mirror item relative to an X axis
|
|
||||||
* @param aXaxis_position = the x axis position
|
|
||||||
*/
|
|
||||||
void SCH_TEXT::Mirror_X( int aXaxis_position )
|
void SCH_TEXT::Mirror_X( int aXaxis_position )
|
||||||
{
|
{
|
||||||
// Text is NOT really mirrored; it is moved to a suitable position
|
// Text is NOT really mirrored; it is moved to a suitable position
|
||||||
|
@ -303,19 +271,6 @@ void SCH_TEXT::Rotate( wxPoint rotationPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SetTextOrientAndJustifyParmeters (virtual)
|
|
||||||
* Set m_SchematicOrientation, and initialize
|
|
||||||
* m_orient,m_HJustified and m_VJustified, according to the value of
|
|
||||||
* m_SchematicOrientation
|
|
||||||
* must be called after changing m_SchematicOrientation
|
|
||||||
* @param aSchematicOrientation =
|
|
||||||
* 0 = normal (horizontal, left justified).
|
|
||||||
* 1 = up (vertical)
|
|
||||||
* 2 = (horizontal, right justified). This can be seen as the mirrored
|
|
||||||
* position of 0
|
|
||||||
* 3 = bottom . This can be seen as the mirrored position of up
|
|
||||||
*/
|
|
||||||
void SCH_TEXT::SetSchematicTextOrientation( int aSchematicOrientation )
|
void SCH_TEXT::SetSchematicTextOrientation( int aSchematicOrientation )
|
||||||
{
|
{
|
||||||
m_SchematicOrientation = aSchematicOrientation;
|
m_SchematicOrientation = aSchematicOrientation;
|
||||||
|
@ -388,10 +343,6 @@ void SCH_TEXT::Place( SCH_EDIT_FRAME* frame, wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPenSize
|
|
||||||
* @return the size of the "pen" that be used to draw or plot this item
|
|
||||||
*/
|
|
||||||
int SCH_TEXT::GetPenSize() const
|
int SCH_TEXT::GetPenSize() const
|
||||||
{
|
{
|
||||||
int pensize = m_Thickness;
|
int pensize = m_Thickness;
|
||||||
|
@ -410,9 +361,6 @@ int SCH_TEXT::GetPenSize() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Text type Comment (text on layer "NOTE") have 4 directions, and the Text
|
|
||||||
* origin is the first letter
|
|
||||||
*/
|
|
||||||
void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aOffset,
|
void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aOffset,
|
||||||
int DrawMode, int Color )
|
int DrawMode, int Color )
|
||||||
{
|
{
|
||||||
|
@ -425,6 +373,7 @@ void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aOffset,
|
||||||
color = (EDA_Colors) Color;
|
color = (EDA_Colors) Color;
|
||||||
else
|
else
|
||||||
color = ReturnLayerColor( m_Layer );
|
color = ReturnLayerColor( m_Layer );
|
||||||
|
|
||||||
GRSetDrawMode( DC, DrawMode );
|
GRSetDrawMode( DC, DrawMode );
|
||||||
|
|
||||||
wxPoint text_offset = aOffset + GetSchematicTextOffset();
|
wxPoint text_offset = aOffset + GetSchematicTextOffset();
|
||||||
|
@ -671,7 +620,7 @@ EDA_Rect SCH_TEXT::GetBoundingBox() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_TEXT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_TEXT::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
if( !( aFilter & TEXT_T ) )
|
if( !( aFilter & TEXT_T ) )
|
||||||
return false;
|
return false;
|
||||||
|
@ -680,7 +629,7 @@ bool SCH_TEXT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_TEXT::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
bool SCH_TEXT::doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
{
|
{
|
||||||
return TextHitTest( aRect, aContained, aAccuracy );
|
return TextHitTest( aRect, aContained, aAccuracy );
|
||||||
}
|
}
|
||||||
|
@ -702,42 +651,9 @@ void SCH_TEXT::Show( int nestLevel, std::ostream& os )
|
||||||
<< "</" << s.Lower().mb_str() << ">\n";
|
<< "</" << s.Lower().mb_str() << ">\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetSchematicTextOffset (virtual)
|
|
||||||
* @return the offset between the SCH_TEXT position and the text itself
|
|
||||||
* position
|
|
||||||
* This offset depend on orientation, and the type of text
|
|
||||||
* (room to draw an associated graphic symbol, or put the text above a wire)
|
|
||||||
*/
|
|
||||||
wxPoint SCH_LABEL::GetSchematicTextOffset()
|
|
||||||
{
|
|
||||||
return SCH_TEXT::GetSchematicTextOffset();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
|
||||||
* Set m_SchematicOrientation, and initialize
|
|
||||||
* m_orient,m_HJustified and m_VJustified, according to the value of
|
|
||||||
* m_SchematicOrientation (for a label)
|
|
||||||
* must be called after changing m_SchematicOrientation
|
|
||||||
* @param aSchematicOrientation =
|
|
||||||
* 0 = normal (horizontal, left justified).
|
|
||||||
* 1 = up (vertical)
|
|
||||||
* 2 = (horizontal, right justified). This can be seen as the mirrored
|
|
||||||
* position of 0
|
|
||||||
* 3 = bottom . This can be seen as the mirrored position of up
|
|
||||||
*/
|
|
||||||
void SCH_LABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
|
||||||
{
|
|
||||||
SCH_TEXT::SetSchematicTextOrientation( aSchematicOrientation );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_LABEL::SCH_LABEL( const wxPoint& pos, const wxString& text ) :
|
SCH_LABEL::SCH_LABEL( const wxPoint& pos, const wxString& text ) :
|
||||||
SCH_TEXT( pos, text, SCH_LABEL_T )
|
SCH_TEXT( pos, text, SCH_LABEL_T )
|
||||||
{
|
{
|
||||||
|
@ -748,11 +664,30 @@ SCH_LABEL::SCH_LABEL( const wxPoint& pos, const wxString& text ) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
SCH_LABEL::SCH_LABEL( const SCH_LABEL& aLabel ) :
|
||||||
* Function Mirror_X (virtual)
|
SCH_TEXT( aLabel )
|
||||||
* mirror item relative to an X axis
|
{
|
||||||
* @param aXaxis_position = the x axis position
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
EDA_ITEM* SCH_LABEL::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_LABEL( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxPoint SCH_LABEL::GetSchematicTextOffset()
|
||||||
|
{
|
||||||
|
return SCH_TEXT::GetSchematicTextOffset();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCH_LABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
||||||
|
{
|
||||||
|
SCH_TEXT::SetSchematicTextOrientation( aSchematicOrientation );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_LABEL::Mirror_X( int aXaxis_position )
|
void SCH_LABEL::Mirror_X( int aXaxis_position )
|
||||||
{
|
{
|
||||||
// Text is NOT really mirrored; it is moved to a suitable position
|
// Text is NOT really mirrored; it is moved to a suitable position
|
||||||
|
@ -775,12 +710,6 @@ void SCH_LABEL::Rotate( wxPoint rotationPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Save
|
|
||||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
|
||||||
* @param aFile The FILE to write to.
|
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
bool SCH_LABEL::Save( FILE* aFile ) const
|
bool SCH_LABEL::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -862,10 +791,6 @@ bool SCH_LABEL::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Draw
|
|
||||||
* a label is drawn like a text. So just call SCH_TEXT::Draw
|
|
||||||
*/
|
|
||||||
void SCH_LABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
void SCH_LABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int DrawMode, int Color )
|
int DrawMode, int Color )
|
||||||
{
|
{
|
||||||
|
@ -921,7 +846,7 @@ EDA_Rect SCH_LABEL::GetBoundingBox() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_LABEL::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_LABEL::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
if( !( aFilter & LABEL_T ) )
|
if( !( aFilter & LABEL_T ) )
|
||||||
return false;
|
return false;
|
||||||
|
@ -940,12 +865,18 @@ SCH_GLOBALLABEL::SCH_GLOBALLABEL( const wxPoint& pos, const wxString& text ) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
SCH_GLOBALLABEL::SCH_GLOBALLABEL( const SCH_GLOBALLABEL& aGlobalLabel ) :
|
||||||
* Function Save
|
SCH_TEXT( aGlobalLabel )
|
||||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
{
|
||||||
* @param aFile The FILE to write to.
|
}
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
|
EDA_ITEM* SCH_GLOBALLABEL::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_GLOBALLABEL( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_GLOBALLABEL::Save( FILE* aFile ) const
|
bool SCH_GLOBALLABEL::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -953,6 +884,7 @@ bool SCH_GLOBALLABEL::Save( FILE* aFile ) const
|
||||||
|
|
||||||
if( m_Italic )
|
if( m_Italic )
|
||||||
shape = "Italic";
|
shape = "Italic";
|
||||||
|
|
||||||
if( fprintf( aFile, "Text GLabel %-4d %-4d %-4d %-4d %s %s %d\n%s\n",
|
if( fprintf( aFile, "Text GLabel %-4d %-4d %-4d %-4d %s %s %d\n%s\n",
|
||||||
m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x,
|
m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x,
|
||||||
SheetLabelType[m_Shape], shape, m_Thickness, CONV_TO_UTF8( m_Text ) ) == EOF )
|
SheetLabelType[m_Shape], shape, m_Thickness, CONV_TO_UTF8( m_Text ) ) == EOF )
|
||||||
|
@ -1016,12 +948,16 @@ bool SCH_GLOBALLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 )
|
||||||
m_Shape = NET_OUTPUT;
|
m_Shape = NET_OUTPUT;
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 )
|
||||||
m_Shape = NET_BIDI;
|
m_Shape = NET_BIDI;
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_TRISTATE] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_TRISTATE] ) == 0 )
|
||||||
m_Shape = NET_TRISTATE;
|
m_Shape = NET_TRISTATE;
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_UNSPECIFIED] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_UNSPECIFIED] ) == 0 )
|
||||||
m_Shape = NET_UNSPECIFIED;
|
m_Shape = NET_UNSPECIFIED;
|
||||||
|
|
||||||
if( stricmp( Name3, "Italic" ) == 0 )
|
if( stricmp( Name3, "Italic" ) == 0 )
|
||||||
m_Italic = 1;
|
m_Italic = 1;
|
||||||
|
|
||||||
|
@ -1029,11 +965,6 @@ bool SCH_GLOBALLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Mirror_Y (virtual)
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
void SCH_GLOBALLABEL::Mirror_Y( int aYaxis_position )
|
void SCH_GLOBALLABEL::Mirror_Y( int aYaxis_position )
|
||||||
{
|
{
|
||||||
/* The global label is NOT really mirrored.
|
/* The global label is NOT really mirrored.
|
||||||
|
@ -1084,13 +1015,6 @@ void SCH_GLOBALLABEL::Rotate( wxPoint rotationPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetSchematicTextOffset (virtual)
|
|
||||||
* @return the offset between the SCH_TEXT position and the text itself
|
|
||||||
* position
|
|
||||||
* This offset depend on orientation, and the type of text
|
|
||||||
* (room to draw an associated graphic symbol, or put the text above a wire)
|
|
||||||
*/
|
|
||||||
wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset()
|
wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset()
|
||||||
{
|
{
|
||||||
wxPoint text_offset;
|
wxPoint text_offset;
|
||||||
|
@ -1140,19 +1064,6 @@ wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
|
||||||
* Set m_SchematicOrientation, and initialize
|
|
||||||
* m_orient,m_HJustified and m_VJustified, according to the value of
|
|
||||||
* m_SchematicOrientation
|
|
||||||
* must be called after changing m_SchematicOrientation
|
|
||||||
* @param aSchematicOrientation =
|
|
||||||
* 0 = normal (horizontal, left justified).
|
|
||||||
* 1 = up (vertical)
|
|
||||||
* 2 = (horizontal, right justified). This can be seen as the mirrored
|
|
||||||
* position of 0
|
|
||||||
* 3 = bottom . This can be seen as the mirrored position of up
|
|
||||||
*/
|
|
||||||
void SCH_GLOBALLABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
void SCH_GLOBALLABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
||||||
{
|
{
|
||||||
m_SchematicOrientation = aSchematicOrientation;
|
m_SchematicOrientation = aSchematicOrientation;
|
||||||
|
@ -1187,8 +1098,6 @@ void SCH_GLOBALLABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Texts type Global Label have 4 directions, and the Text origin is the graphic icon
|
|
||||||
*/
|
|
||||||
void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel,
|
void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel,
|
||||||
wxDC* DC,
|
wxDC* DC,
|
||||||
const wxPoint& aOffset,
|
const wxPoint& aOffset,
|
||||||
|
@ -1199,7 +1108,6 @@ void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel,
|
||||||
EDA_Colors color;
|
EDA_Colors color;
|
||||||
wxPoint text_offset = aOffset + GetSchematicTextOffset();
|
wxPoint text_offset = aOffset + GetSchematicTextOffset();
|
||||||
|
|
||||||
|
|
||||||
if( Color >= 0 )
|
if( Color >= 0 )
|
||||||
color = (EDA_Colors) Color;
|
color = (EDA_Colors) Color;
|
||||||
else
|
else
|
||||||
|
@ -1229,12 +1137,6 @@ void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function CreateGraphicShape
|
|
||||||
* Calculates the graphic shape (a polygon) associated to the text
|
|
||||||
* @param aCorner_list = a buffer to fill with polygon corners coordinates
|
|
||||||
* @param Pos = Position of the shape
|
|
||||||
*/
|
|
||||||
void SCH_GLOBALLABEL::CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
void SCH_GLOBALLABEL::CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
||||||
const wxPoint& Pos )
|
const wxPoint& Pos )
|
||||||
{
|
{
|
||||||
|
@ -1370,7 +1272,7 @@ EDA_Rect SCH_GLOBALLABEL::GetBoundingBox() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_GLOBALLABEL::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_GLOBALLABEL::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
if( !( aFilter & LABEL_T ) )
|
if( !( aFilter & LABEL_T ) )
|
||||||
return false;
|
return false;
|
||||||
|
@ -1389,12 +1291,18 @@ SCH_HIERLABEL::SCH_HIERLABEL( const wxPoint& pos, const wxString& text, KICAD_T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
SCH_HIERLABEL::SCH_HIERLABEL( const SCH_HIERLABEL& aHierLabel ) :
|
||||||
* Function Save
|
SCH_TEXT( aHierLabel )
|
||||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
{
|
||||||
* @param aFile The FILE to write to.
|
}
|
||||||
* @return bool - true if success writing else false.
|
|
||||||
*/
|
|
||||||
|
EDA_ITEM* SCH_HIERLABEL::doClone() const
|
||||||
|
{
|
||||||
|
return new SCH_HIERLABEL( *this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_HIERLABEL::Save( FILE* aFile ) const
|
bool SCH_HIERLABEL::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -1402,6 +1310,7 @@ bool SCH_HIERLABEL::Save( FILE* aFile ) const
|
||||||
|
|
||||||
if( m_Italic )
|
if( m_Italic )
|
||||||
shape = "Italic";
|
shape = "Italic";
|
||||||
|
|
||||||
if( fprintf( aFile, "Text HLabel %-4d %-4d %-4d %-4d %s %s %d\n%s\n",
|
if( fprintf( aFile, "Text HLabel %-4d %-4d %-4d %-4d %s %s %d\n%s\n",
|
||||||
m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x,
|
m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x,
|
||||||
SheetLabelType[m_Shape], shape, m_Thickness, CONV_TO_UTF8( m_Text ) ) == EOF )
|
SheetLabelType[m_Shape], shape, m_Thickness, CONV_TO_UTF8( m_Text ) ) == EOF )
|
||||||
|
@ -1465,12 +1374,16 @@ bool SCH_HIERLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 )
|
||||||
m_Shape = NET_OUTPUT;
|
m_Shape = NET_OUTPUT;
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 )
|
||||||
m_Shape = NET_BIDI;
|
m_Shape = NET_BIDI;
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_TRISTATE] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_TRISTATE] ) == 0 )
|
||||||
m_Shape = NET_TRISTATE;
|
m_Shape = NET_TRISTATE;
|
||||||
|
|
||||||
if( stricmp( Name2, SheetLabelType[NET_UNSPECIFIED] ) == 0 )
|
if( stricmp( Name2, SheetLabelType[NET_UNSPECIFIED] ) == 0 )
|
||||||
m_Shape = NET_UNSPECIFIED;
|
m_Shape = NET_UNSPECIFIED;
|
||||||
|
|
||||||
if( stricmp( Name3, "Italic" ) == 0 )
|
if( stricmp( Name3, "Italic" ) == 0 )
|
||||||
m_Italic = 1;
|
m_Italic = 1;
|
||||||
|
|
||||||
|
@ -1478,19 +1391,6 @@ bool SCH_HIERLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
|
||||||
* Set m_SchematicOrientation, and initialize
|
|
||||||
* m_orient,m_HJustified and m_VJustified, according to the value of
|
|
||||||
* m_SchematicOrientation
|
|
||||||
* must be called after changing m_SchematicOrientation
|
|
||||||
* @param aSchematicOrientation =
|
|
||||||
* 0 = normal (horizontal, left justified).
|
|
||||||
* 1 = up (vertical)
|
|
||||||
* 2 = (horizontal, right justified). This can be seen as the mirrored
|
|
||||||
* position of 0
|
|
||||||
* 3 = bottom . This can be seen as the mirrored position of up
|
|
||||||
*/
|
|
||||||
void SCH_HIERLABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
void SCH_HIERLABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
||||||
{
|
{
|
||||||
m_SchematicOrientation = aSchematicOrientation;
|
m_SchematicOrientation = aSchematicOrientation;
|
||||||
|
@ -1525,9 +1425,6 @@ void SCH_HIERLABEL::SetSchematicTextOrientation( int aSchematicOrientation )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Hierarchical Label have a text and a graphic icon.
|
|
||||||
* Texts type have 4 directions, and the text origin is the graphic icon
|
|
||||||
*/
|
|
||||||
void SCH_HIERLABEL::Draw( WinEDA_DrawPanel* panel,
|
void SCH_HIERLABEL::Draw( WinEDA_DrawPanel* panel,
|
||||||
wxDC* DC,
|
wxDC* DC,
|
||||||
const wxPoint& offset,
|
const wxPoint& offset,
|
||||||
|
@ -1568,12 +1465,6 @@ void SCH_HIERLABEL::Draw( WinEDA_DrawPanel* panel,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function CreateGraphicShape
|
|
||||||
* calculates the graphic shape (a polygon) associated to the text
|
|
||||||
* @param aCorner_list = a buffer to fill with polygon corners coordinates
|
|
||||||
* @param Pos = Postion of the shape
|
|
||||||
*/
|
|
||||||
void SCH_HIERLABEL::CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
void SCH_HIERLABEL::CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
||||||
const wxPoint& Pos )
|
const wxPoint& Pos )
|
||||||
{
|
{
|
||||||
|
@ -1583,6 +1474,7 @@ void SCH_HIERLABEL::CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
||||||
int imax = *Template; Template++;
|
int imax = *Template; Template++;
|
||||||
|
|
||||||
aCorner_list.clear();
|
aCorner_list.clear();
|
||||||
|
|
||||||
for( int ii = 0; ii < imax; ii++ )
|
for( int ii = 0; ii < imax; ii++ )
|
||||||
{
|
{
|
||||||
wxPoint corner;
|
wxPoint corner;
|
||||||
|
@ -1596,6 +1488,7 @@ void SCH_HIERLABEL::CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_Rect SCH_HIERLABEL::GetBoundingBox() const
|
EDA_Rect SCH_HIERLABEL::GetBoundingBox() const
|
||||||
{
|
{
|
||||||
int x, y, dx, dy, length, height;
|
int x, y, dx, dy, length, height;
|
||||||
|
@ -1648,13 +1541,6 @@ EDA_Rect SCH_HIERLABEL::GetBoundingBox() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetSchematicTextOffset (virtual)
|
|
||||||
* @return the offset between the SCH_TEXT position and the text itself
|
|
||||||
* position
|
|
||||||
* This offset depend on orientation, and the type of text
|
|
||||||
* (room to draw an associated graphic symbol, or put the text above a wire)
|
|
||||||
*/
|
|
||||||
wxPoint SCH_HIERLABEL::GetSchematicTextOffset()
|
wxPoint SCH_HIERLABEL::GetSchematicTextOffset()
|
||||||
{
|
{
|
||||||
wxPoint text_offset;
|
wxPoint text_offset;
|
||||||
|
@ -1686,17 +1572,11 @@ wxPoint SCH_HIERLABEL::GetSchematicTextOffset()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Mirror_Y (virtual)
|
|
||||||
* mirror item relative to an Y axis
|
|
||||||
* @param aYaxis_position = the y axis position
|
|
||||||
*/
|
|
||||||
void SCH_HIERLABEL::Mirror_Y( int aYaxis_position )
|
void SCH_HIERLABEL::Mirror_Y( int aYaxis_position )
|
||||||
{
|
{
|
||||||
/* The hierarchical label is NOT really mirrored.
|
/* The hierarchical label is NOT really mirrored for an horizontal label, the schematic
|
||||||
* for an horizontal label, the schematic orientation is changed.
|
* orientation is changed. For a vericalal label, the schematic orientation is not changed
|
||||||
* for a vericalal label, the schematic orientation is not changed.
|
* and the label is moved to a suitable position.
|
||||||
* and the label is moved to a suitable position
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
switch( GetSchematicTextOrientation() )
|
switch( GetSchematicTextOrientation() )
|
||||||
|
@ -1742,7 +1622,7 @@ void SCH_HIERLABEL::Rotate( wxPoint rotationPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_HIERLABEL::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
bool SCH_HIERLABEL::doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
if( !( aFilter & LABEL_T ) )
|
if( !( aFilter & LABEL_T ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -56,6 +56,9 @@ public:
|
||||||
SCH_TEXT( const wxPoint& pos = wxPoint( 0, 0 ),
|
SCH_TEXT( const wxPoint& pos = wxPoint( 0, 0 ),
|
||||||
const wxString& text = wxEmptyString,
|
const wxString& text = wxEmptyString,
|
||||||
KICAD_T aType = SCH_TEXT_T );
|
KICAD_T aType = SCH_TEXT_T );
|
||||||
|
|
||||||
|
SCH_TEXT( const SCH_TEXT& aText );
|
||||||
|
|
||||||
~SCH_TEXT() { }
|
~SCH_TEXT() { }
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -63,6 +66,11 @@ public:
|
||||||
return wxT( "SCH_TEXT" );
|
return wxT( "SCH_TEXT" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function IncrementLabel
|
||||||
|
* increments the label text.
|
||||||
|
*/
|
||||||
|
void IncrementLabel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
* Function SetTextOrientAndJustifyParmeters
|
||||||
|
@ -161,15 +169,16 @@ public:
|
||||||
m_Pos += aMoveVector;
|
m_Pos += aMoveVector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/** virtual function Mirror_Y
|
* Function Mirror_Y
|
||||||
* mirror item relative to an Y axis
|
* mirrors the item relative to \a aYaxisPosition.
|
||||||
* @param aYaxis_position = the y axis position
|
* @param aYaxis_position The y axis coordinate to mirror around.
|
||||||
*/
|
*/
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
|
||||||
virtual void Mirror_Y( int aYaxis_position );
|
virtual void Mirror_Y( int aYaxis_position );
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
|
||||||
|
|
||||||
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare schematic text entry against search string.
|
* Compare schematic text entry against search string.
|
||||||
|
@ -196,8 +205,9 @@ public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,6 +215,9 @@ class SCH_LABEL : public SCH_TEXT
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SCH_LABEL( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
SCH_LABEL( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
||||||
|
|
||||||
|
SCH_LABEL( const SCH_LABEL& aLabel );
|
||||||
|
|
||||||
~SCH_LABEL() { }
|
~SCH_LABEL() { }
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel,
|
virtual void Draw( WinEDA_DrawPanel* panel,
|
||||||
|
@ -218,7 +231,6 @@ public:
|
||||||
return wxT( "SCH_LABEL" );
|
return wxT( "SCH_LABEL" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
* Function SetTextOrientAndJustifyParmeters
|
||||||
* Set m_SchematicOrientation, and initialize
|
* Set m_SchematicOrientation, and initialize
|
||||||
|
@ -243,7 +255,9 @@ public:
|
||||||
* wire)
|
* wire)
|
||||||
*/
|
*/
|
||||||
virtual wxPoint GetSchematicTextOffset();
|
virtual wxPoint GetSchematicTextOffset();
|
||||||
|
|
||||||
virtual void Mirror_X( int aXaxis_position );
|
virtual void Mirror_X( int aXaxis_position );
|
||||||
|
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -275,7 +289,8 @@ public:
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -283,6 +298,9 @@ class SCH_GLOBALLABEL : public SCH_TEXT
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SCH_GLOBALLABEL( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
SCH_GLOBALLABEL( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
||||||
|
|
||||||
|
SCH_GLOBALLABEL( const SCH_GLOBALLABEL& aGlobalLabel );
|
||||||
|
|
||||||
~SCH_GLOBALLABEL() { }
|
~SCH_GLOBALLABEL() { }
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel,
|
virtual void Draw( WinEDA_DrawPanel* panel,
|
||||||
|
@ -296,7 +314,6 @@ public:
|
||||||
return wxT( "SCH_GLOBALLABEL" );
|
return wxT( "SCH_GLOBALLABEL" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
* Function SetTextOrientAndJustifyParmeters
|
||||||
* Set m_SchematicOrientation, and initialize
|
* Set m_SchematicOrientation, and initialize
|
||||||
|
@ -356,8 +373,7 @@ public:
|
||||||
* @param aCorner_list = a buffer to fill with polygon corners coordinates
|
* @param aCorner_list = a buffer to fill with polygon corners coordinates
|
||||||
* @param aPos = Position of the shape
|
* @param aPos = Position of the shape
|
||||||
*/
|
*/
|
||||||
virtual void CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
virtual void CreateGraphicShape( std::vector <wxPoint>& aCorner_list, const wxPoint& aPos );
|
||||||
const wxPoint& aPos );
|
|
||||||
|
|
||||||
/** virtual function Mirror_Y
|
/** virtual function Mirror_Y
|
||||||
* mirror item relative to an Y axis
|
* mirror item relative to an Y axis
|
||||||
|
@ -370,7 +386,8 @@ public:
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -381,7 +398,10 @@ public:
|
||||||
const wxString& text = wxEmptyString,
|
const wxString& text = wxEmptyString,
|
||||||
KICAD_T aType = SCH_HIERARCHICAL_LABEL_T );
|
KICAD_T aType = SCH_HIERARCHICAL_LABEL_T );
|
||||||
|
|
||||||
|
SCH_HIERLABEL( const SCH_HIERLABEL& aHierLabel );
|
||||||
|
|
||||||
~SCH_HIERLABEL() { }
|
~SCH_HIERLABEL() { }
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel,
|
virtual void Draw( WinEDA_DrawPanel* panel,
|
||||||
wxDC* DC,
|
wxDC* DC,
|
||||||
const wxPoint& offset,
|
const wxPoint& offset,
|
||||||
|
@ -393,7 +413,6 @@ public:
|
||||||
return wxT( "SCH_HIERLABEL" );
|
return wxT( "SCH_HIERLABEL" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetTextOrientAndJustifyParmeters
|
* Function SetTextOrientAndJustifyParmeters
|
||||||
* Set m_SchematicOrientation, and initialize
|
* Set m_SchematicOrientation, and initialize
|
||||||
|
@ -425,8 +444,7 @@ public:
|
||||||
* @param aCorner_list = a buffer to fill with polygon corners coordinates
|
* @param aCorner_list = a buffer to fill with polygon corners coordinates
|
||||||
* @param Pos = Postion of the shape
|
* @param Pos = Postion of the shape
|
||||||
*/
|
*/
|
||||||
virtual void CreateGraphicShape( std::vector <wxPoint>& aCorner_list,
|
virtual void CreateGraphicShape( std::vector <wxPoint>& aCorner_list, const wxPoint& Pos );
|
||||||
const wxPoint& Pos );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Save
|
* Function Save
|
||||||
|
@ -467,7 +485,8 @@ public:
|
||||||
virtual void Rotate( wxPoint rotationPoint );
|
virtual void Rotate( wxPoint rotationPoint );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const;
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* CLASS_TEXT_LABEL_H */
|
#endif /* CLASS_TEXT_LABEL_H */
|
||||||
|
|
|
@ -17,9 +17,11 @@
|
||||||
#include "eeschema_id.h"
|
#include "eeschema_id.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -454,7 +456,6 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
case ID_POPUP_SCH_DRAG_WIRE_REQUEST:
|
case ID_POPUP_SCH_DRAG_WIRE_REQUEST:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
// The easiest way to handle a drag component is to simulate a
|
// The easiest way to handle a drag component is to simulate a
|
||||||
// block drag command
|
// block drag command
|
||||||
if( screen->m_BlockLocate.m_State == STATE_NO_BLOCK )
|
if( screen->m_BlockLocate.m_State == STATE_NO_BLOCK )
|
||||||
|
@ -472,13 +473,12 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
// TODO: a better way to drag only wires
|
// TODO: a better way to drag only wires
|
||||||
SCH_LINE* segm = (SCH_LINE*) screen->GetCurItem();
|
SCH_LINE* segm = (SCH_LINE*) screen->GetCurItem();
|
||||||
|
|
||||||
if( !screen->m_BlockLocate.Inside( segm->m_Start )
|
if( !screen->m_BlockLocate.Contains( segm->m_Start )
|
||||||
&& !screen->m_BlockLocate.Inside( segm->m_End ) )
|
&& !screen->m_BlockLocate.Contains( segm->m_End ) )
|
||||||
{
|
{
|
||||||
screen->m_BlockLocate.SetOrigin( segm->m_Start );
|
screen->m_BlockLocate.SetOrigin( segm->m_Start );
|
||||||
screen->m_BlockLocate.SetEnd( segm->m_End );
|
screen->m_BlockLocate.SetEnd( segm->m_End );
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleBlockEnd( &dc );
|
HandleBlockEnd( &dc );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -10,9 +10,13 @@
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "sch_bus_entry.h"
|
||||||
#include "sch_marker.h"
|
#include "sch_marker.h"
|
||||||
#include "sch_items.h"
|
#include "sch_items.h"
|
||||||
|
#include "sch_line.h"
|
||||||
|
#include "sch_no_connect.h"
|
||||||
#include "sch_component.h"
|
#include "sch_component.h"
|
||||||
|
#include "sch_polyline.h"
|
||||||
#include "sch_sheet.h"
|
#include "sch_sheet.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -242,6 +242,15 @@ static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool era
|
||||||
BASE_SCREEN* Screen = panel->GetScreen();
|
BASE_SCREEN* Screen = panel->GetScreen();
|
||||||
|
|
||||||
item->SetEraseLastDrawItem( erase );
|
item->SetEraseLastDrawItem( erase );
|
||||||
|
// if item is the reference field, we must add the current unit id
|
||||||
|
if( item->Type() == LIB_FIELD_T )
|
||||||
|
{
|
||||||
|
int unit = ((LIB_EDIT_FRAME*)panel->GetParent())->GetUnit();
|
||||||
|
wxString text = ((LIB_FIELD*)item)->GetFullText( unit );
|
||||||
|
item->Draw( panel, DC, Screen->GetCursorDrawPosition(), -1, g_XorMode, &text,
|
||||||
|
DefaultTransform );
|
||||||
|
}
|
||||||
|
else
|
||||||
item->Draw( panel, DC, Screen->GetCursorDrawPosition(), -1, g_XorMode, NULL,
|
item->Draw( panel, DC, Screen->GetCursorDrawPosition(), -1, g_XorMode, NULL,
|
||||||
DefaultTransform );
|
DefaultTransform );
|
||||||
}
|
}
|
||||||
|
@ -254,9 +263,6 @@ void LIB_EDIT_FRAME::StartMoveDrawSymbol( wxDC* DC )
|
||||||
|
|
||||||
SetCursor( wxCURSOR_HAND );
|
SetCursor( wxCURSOR_HAND );
|
||||||
|
|
||||||
if( m_drawItem->GetUnit() != m_unit )
|
|
||||||
m_drawItem->SetUnit( m_unit );
|
|
||||||
|
|
||||||
TempCopyComponent();
|
TempCopyComponent();
|
||||||
m_drawItem->BeginEdit( IS_MOVED, GetScreen()->GetCursorDrawPosition() );
|
m_drawItem->BeginEdit( IS_MOVED, GetScreen()->GetCursorDrawPosition() );
|
||||||
DrawPanel->ManageCurseur = RedrawWhileMovingCursor;
|
DrawPanel->ManageCurseur = RedrawWhileMovingCursor;
|
||||||
|
|
|
@ -668,10 +668,10 @@ bool GERBER_DRAW_ITEM::HitTest( EDA_Rect& aRefArea )
|
||||||
{
|
{
|
||||||
wxPoint pos = GetABPosition( m_Start );
|
wxPoint pos = GetABPosition( m_Start );
|
||||||
|
|
||||||
if( aRefArea.Inside( pos ) )
|
if( aRefArea.Contains( pos ) )
|
||||||
return true;
|
return true;
|
||||||
pos = GetABPosition( m_End );
|
pos = GetABPosition( m_End );
|
||||||
if( aRefArea.Inside( pos ) )
|
if( aRefArea.Contains( pos ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ WinEDA_ConfigFrame::WinEDA_ConfigFrame( WinEDA_GerberFrame* parent,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WinEDA_ConfigFrame::OnOkClick( wxCommandEvent &event )
|
void WinEDA_ConfigFrame::OnOkClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
g_DrillFilenameExt = TextDrillExt->GetValue();
|
g_DrillFilenameExt = TextDrillExt->GetValue();
|
||||||
g_PhotoFilenameExt = TextPhotoExt->GetValue();
|
g_PhotoFilenameExt = TextPhotoExt->GetValue();
|
||||||
|
@ -134,7 +134,7 @@ void WinEDA_ConfigFrame::OnOkClick( wxCommandEvent &event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WinEDA_ConfigFrame::OnCancelClick( wxCommandEvent &event )
|
void WinEDA_ConfigFrame::OnCancelClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
EndModal( -1 );
|
EndModal( -1 );
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,11 +76,23 @@ protected:
|
||||||
|
|
||||||
public: WinEDA_App();
|
public: WinEDA_App();
|
||||||
~WinEDA_App();
|
~WinEDA_App();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function OnInit
|
||||||
|
* this is the first executed function (like main() )
|
||||||
|
* @return true if the appliction can be started.
|
||||||
|
*/
|
||||||
bool OnInit();
|
bool OnInit();
|
||||||
|
|
||||||
bool SetBinDir();
|
bool SetBinDir();
|
||||||
void SetDefaultSearchPaths( void );
|
void SetDefaultSearchPaths( void );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function MacOpenFile
|
||||||
|
* Specific to MacOSX. Not used under Linux or Windows
|
||||||
|
* MacOSX: Needed for file association
|
||||||
|
* http://wiki.wxwidgets.org/WxMac-specific_topics
|
||||||
|
*/
|
||||||
virtual void MacOpenFile(const wxString &fileName);
|
virtual void MacOpenFile(const wxString &fileName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,14 +7,16 @@
|
||||||
|
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
|
|
||||||
|
#include <boost/ptr_container/ptr_vector.hpp>
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
#include <iostream> // needed for Show()
|
#include <iostream> // needed for Show()
|
||||||
extern std::ostream& operator <<( std::ostream& out, const wxSize& size );
|
extern std::ostream& operator <<( std::ostream& out, const wxSize& size );
|
||||||
|
|
||||||
extern std::ostream& operator <<( std::ostream& out, const wxPoint& pt );
|
extern std::ostream& operator <<( std::ostream& out, const wxPoint& pt );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Id for class identification, at run time */
|
/* Id for class identification, at run time */
|
||||||
enum KICAD_T {
|
enum KICAD_T {
|
||||||
NOT_USED = -1, // the 3d code uses this value
|
NOT_USED = -1, // the 3d code uses this value
|
||||||
|
@ -146,7 +148,9 @@ public:
|
||||||
* Class EDA_Rect
|
* Class EDA_Rect
|
||||||
* handles the component boundary box.
|
* handles the component boundary box.
|
||||||
* This class is similar to wxRect, but some wxRect functions are very curious,
|
* This class is similar to wxRect, but some wxRect functions are very curious,
|
||||||
* so I prefer this suitable class
|
* and are working only if dimensions are >= 0 (not always the case in kicad)
|
||||||
|
* and also kicad needs some specific method.
|
||||||
|
* so I prefer this more suitable class
|
||||||
*/
|
*/
|
||||||
class EDA_Rect
|
class EDA_Rect
|
||||||
{
|
{
|
||||||
|
@ -168,16 +172,40 @@ public:
|
||||||
m_Pos.y + ( m_Size.y >> 1 ) );
|
m_Pos.y + ( m_Size.y >> 1 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/* Move this by the aMoveVector value (this is a relative move
|
* Function Move
|
||||||
|
* moves the rectangle by the \a aMoveVector.
|
||||||
|
* @param aMoveVector A wxPoint that is the value to move this rectangle
|
||||||
*/
|
*/
|
||||||
void Move( const wxPoint& aMoveVector );
|
void Move( const wxPoint& aMoveVector );
|
||||||
|
|
||||||
void Normalize(); // Ensure the height and width are >= 0
|
/**
|
||||||
bool Inside( const wxPoint& point ) const; // Return TRUE if point is in Rect
|
* Function Normalize
|
||||||
|
* ensures thatthe height ant width are positive.
|
||||||
|
*/
|
||||||
|
void Normalize();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Contains
|
||||||
|
* @param aPoint = the wxPoint to test
|
||||||
|
* @return true if aPoint is inside the boundary box. A point on a edge is seen as inside
|
||||||
|
*/
|
||||||
|
bool Contains( const wxPoint& aPoint ) const;
|
||||||
|
/**
|
||||||
|
* Function Contains
|
||||||
|
* @param x = the x coordinate of the point to test
|
||||||
|
* @param y = the x coordinate of the point to test
|
||||||
|
* @return true if point is inside the boundary box. A point on a edge is seen as inside
|
||||||
|
*/
|
||||||
|
bool Contains( int x, int y ) const { return Contains( wxPoint( x, y ) ); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Contains
|
||||||
|
* @param aRect = the EDA_Rect to test
|
||||||
|
* @return true if aRect is Contained. A common edge is seen as contained
|
||||||
|
*/
|
||||||
|
bool Contains( const EDA_Rect& aRect ) const;
|
||||||
|
|
||||||
bool Inside( int x, int y ) const { return Inside( wxPoint( x, y ) ); }
|
|
||||||
bool Inside( const EDA_Rect& aRect ) const;
|
|
||||||
wxSize GetSize() const { return m_Size; }
|
wxSize GetSize() const { return m_Size; }
|
||||||
int GetX() const { return m_Pos.x; }
|
int GetX() const { return m_Pos.x; }
|
||||||
int GetY() const { return m_Pos.y; }
|
int GetY() const { return m_Pos.y; }
|
||||||
|
@ -209,9 +237,9 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function Intersects
|
* Function Intersects
|
||||||
* @return bool - true if the argument rectangle intersects this rectangle.
|
* @return bool - true if the argument rectangle intersects this rectangle.
|
||||||
|
* (i.e. if the 2 rectangles have at least a common point)
|
||||||
*/
|
*/
|
||||||
bool Intersects( const EDA_Rect aRect ) const;
|
bool Intersects( const EDA_Rect& aRect ) const;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function operator(wxRect)
|
* Function operator(wxRect)
|
||||||
|
@ -219,35 +247,32 @@ public:
|
||||||
*/
|
*/
|
||||||
operator wxRect() const { return wxRect( m_Pos, m_Size ); }
|
operator wxRect() const { return wxRect( m_Pos, m_Size ); }
|
||||||
|
|
||||||
/** Inflate
|
/**
|
||||||
* Inflate this object: move each horizontal edge by dx and each vertical
|
* Function Inflate
|
||||||
* edge by dy toward rect outside
|
* inflates the rectangle horizontally by \a dx and vertically by \a dy. If \a dx
|
||||||
* if dx and/or dy is negative, move toward rect inside (deflate)
|
* and/or \a dy is negative the rectangle is deflated.
|
||||||
* Works for positive and negative rect size
|
|
||||||
*/
|
*/
|
||||||
EDA_Rect& Inflate( wxCoord dx, wxCoord dy );
|
EDA_Rect& Inflate( wxCoord dx, wxCoord dy );
|
||||||
|
|
||||||
/** Inflate
|
/**
|
||||||
* Inflate this object: move each horizontal edge and each vertical edge by
|
* Function Inflate
|
||||||
* aDelta toward rect outside
|
* inflates the rectangle horizontally and vertically by \a aDelta. If \a aDelta
|
||||||
* if aDelta is negative, move toward rect inside (deflate)
|
* is negative the rectangle is deflated.
|
||||||
* Works for positive and negative rect size
|
|
||||||
*/
|
*/
|
||||||
EDA_Rect& Inflate( int aDelta );
|
EDA_Rect& Inflate( int aDelta );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Merge
|
* Function Merge
|
||||||
* Modify Position and Size of this in order to contain the given rect
|
* modifies the position and size of the rectangle in order to contain \a aRect. It is
|
||||||
* mainly used to calculate bounding boxes
|
* mainly used to calculate bounding boxes.
|
||||||
* @param aRect = given rect to merge with this
|
* @param aRect The rectangle to merge with this rectangle.
|
||||||
*/
|
*/
|
||||||
void Merge( const EDA_Rect& aRect );
|
void Merge( const EDA_Rect& aRect );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Merge
|
* Function Merge
|
||||||
* Modify Position and Size of this in order to contain the given point
|
* modifies the position and size of the rectangle in order to contain the given point.
|
||||||
* mainly used to calculate bounding boxes
|
* @param aPoint The point to merge with the rectangle.
|
||||||
* @param aPoint = given point to merge with this
|
|
||||||
*/
|
*/
|
||||||
void Merge( const wxPoint& aPoint );
|
void Merge( const wxPoint& aPoint );
|
||||||
};
|
};
|
||||||
|
@ -319,6 +344,21 @@ public:
|
||||||
private:
|
private:
|
||||||
void InitVars();
|
void InitVars();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Function doClone
|
||||||
|
* is used by the derived class to actually implement the cloning.
|
||||||
|
*
|
||||||
|
* The default version will return NULL in release builds and likely crash the
|
||||||
|
* program. In debug builds, an warning message indicating the derived class
|
||||||
|
* has not implemented cloning. This really should be a pure virtual function.
|
||||||
|
* Due to the fact that there are so many objects derived from EDA_ITEM, the
|
||||||
|
* decision was made to return NULL until all the objects derived from EDA_ITEM
|
||||||
|
* implement cloning. Once that happens, this function should be made pure.
|
||||||
|
*
|
||||||
|
* @return A clone of the item.
|
||||||
|
*/
|
||||||
|
virtual EDA_ITEM* doClone() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
EDA_ITEM( EDA_ITEM* parent, KICAD_T idType );
|
EDA_ITEM( EDA_ITEM* parent, KICAD_T idType );
|
||||||
|
@ -392,7 +432,6 @@ public:
|
||||||
// derived classes may implement this
|
// derived classes may implement this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HitTest
|
* Function HitTest
|
||||||
* tests if the given wxPoint is within the bounds of this object.
|
* tests if the given wxPoint is within the bounds of this object.
|
||||||
|
@ -404,7 +443,6 @@ public:
|
||||||
return false; // derived classes should override this function
|
return false; // derived classes should override this function
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HitTest (overlaid)
|
* Function HitTest (overlaid)
|
||||||
* tests if the given EDA_Rect intersect this object.
|
* tests if the given EDA_Rect intersect this object.
|
||||||
|
@ -417,7 +455,6 @@ public:
|
||||||
return false; // derived classes should override this function
|
return false; // derived classes should override this function
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetBoundingBox
|
* Function GetBoundingBox
|
||||||
* returns the orthogonal, bounding box of this object for display
|
* returns the orthogonal, bounding box of this object for display
|
||||||
|
@ -439,6 +476,16 @@ public:
|
||||||
return EDA_Rect( wxPoint( 0, 0 ), wxSize( 0, 0 ) );
|
return EDA_Rect( wxPoint( 0, 0 ), wxSize( 0, 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Function Clone
|
||||||
|
* creates a duplicate of this item with linked list members set to NULL.
|
||||||
|
*
|
||||||
|
* The Clone() function only calls the private virtual doClone() which actually
|
||||||
|
* does the cloning for the derived object.
|
||||||
|
*
|
||||||
|
* @return A clone of the item.
|
||||||
|
*/
|
||||||
|
EDA_ITEM* Clone() const { return doClone(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function IterateForward
|
* Function IterateForward
|
||||||
|
@ -517,6 +564,25 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function new_clone
|
||||||
|
* provides cloning capabilities for all Boost pointer containers of EDA_ITEMs.
|
||||||
|
*
|
||||||
|
* @param aItem EDA_ITEM to clone.
|
||||||
|
* @return Clone of \a aItem.
|
||||||
|
*/
|
||||||
|
inline EDA_ITEM* new_clone( const EDA_ITEM& aItem ) { return aItem.Clone(); }
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define list of drawing items for screens.
|
||||||
|
*
|
||||||
|
* The Boost containter was choosen over the statand C++ contain because you can detach
|
||||||
|
* the pointer from a list with the release method.
|
||||||
|
*/
|
||||||
|
typedef boost::ptr_vector< EDA_ITEM > EDA_ITEMS;
|
||||||
|
|
||||||
|
|
||||||
// Graphic Text justify:
|
// Graphic Text justify:
|
||||||
// Values -1,0,1 are used in computations, do not change them
|
// Values -1,0,1 are used in computations, do not change them
|
||||||
enum GRTextHorizJustifyType {
|
enum GRTextHorizJustifyType {
|
||||||
|
@ -586,6 +652,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EDA_TextStruct( const wxString& text = wxEmptyString );
|
EDA_TextStruct( const wxString& text = wxEmptyString );
|
||||||
|
EDA_TextStruct( const EDA_TextStruct& aText );
|
||||||
virtual ~EDA_TextStruct();
|
virtual ~EDA_TextStruct();
|
||||||
|
|
||||||
int GetLength() const { return m_Text.Length(); };
|
int GetLength() const { return m_Text.Length(); };
|
||||||
|
|
|
@ -14,22 +14,11 @@
|
||||||
#include "block_commande.h"
|
#include "block_commande.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
#include <boost/ptr_container/ptr_vector.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
// Forward declarations:
|
// Forward declarations:
|
||||||
class Ki_PageDescr;
|
class Ki_PageDescr;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define list of drawing items for screens.
|
|
||||||
*
|
|
||||||
* The Boost containter was choosen over the statand C++ contain because you can detach
|
|
||||||
* the pointer from a list with the release method.
|
|
||||||
*/
|
|
||||||
typedef boost::ptr_vector< EDA_ITEM > EDA_ITEMS;
|
|
||||||
|
|
||||||
|
|
||||||
/* Simple class for handling grid arrays. */
|
/* Simple class for handling grid arrays. */
|
||||||
class GRID_TYPE
|
class GRID_TYPE
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,8 +15,11 @@ protected:
|
||||||
std::vector <wxPoint> m_Corners; ///< Corner list for shape definition (a polygon)
|
std::vector <wxPoint> m_Corners; ///< Corner list for shape definition (a polygon)
|
||||||
int m_MarkerType; ///< Can be used as a flag
|
int m_MarkerType; ///< Can be used as a flag
|
||||||
EDA_Colors m_Color; ///< color
|
EDA_Colors m_Color; ///< color
|
||||||
EDA_Rect m_ShapeBoundingBox; ///< Bounding box of the graphic symbol, relative to the position of the shape, used for Hit Tests
|
EDA_Rect m_ShapeBoundingBox; ///< Bounding box of the graphic symbol, relative
|
||||||
int m_ScalingFactor; ///< Scaling factor for m_Size and m_Corners (can set the physical size
|
///< to the position of the shape, used for Hit
|
||||||
|
///< Tests
|
||||||
|
int m_ScalingFactor; ///< Scaling factor for m_Size and m_Corners (can
|
||||||
|
///< set the physical size
|
||||||
DRC_ITEM m_drc;
|
DRC_ITEM m_drc;
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
@ -48,14 +51,21 @@ public:
|
||||||
MARKER_BASE( int aErrorCode, const wxPoint& aMarkerPos,
|
MARKER_BASE( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
const wxString& aText, const wxPoint& aPos );
|
const wxString& aText, const wxPoint& aPos );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contructor
|
||||||
|
* makes a copy of \a aMarker but does not copy the DRC_ITEM.
|
||||||
|
*
|
||||||
|
* @param aMarker The marker to copy.
|
||||||
|
*/
|
||||||
|
MARKER_BASE( const MARKER_BASE& aMarker );
|
||||||
|
|
||||||
~MARKER_BASE();
|
~MARKER_BASE();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DrawMarker
|
* Function DrawMarker
|
||||||
|
* draws the shape is the polygon defined in m_Corners (array of wxPoints).
|
||||||
*/
|
*/
|
||||||
void DrawMarker( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode, const wxPoint& offset );
|
void DrawMarker( WinEDA_DrawPanel* aPanel, wxDC* aDC, int aDrawMode, const wxPoint& aOffset );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetPos
|
* Function GetPos
|
||||||
|
@ -66,7 +76,6 @@ public:
|
||||||
return m_Pos;
|
return m_Pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetColor
|
* Function SetColor
|
||||||
* Set the color of this marker
|
* Set the color of this marker
|
||||||
|
@ -76,7 +85,6 @@ public:
|
||||||
m_Color = aColor;
|
m_Color = aColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to set/get error levels (warning, fatal ..)
|
* Function to set/get error levels (warning, fatal ..)
|
||||||
* this value is stored in m_MarkerType
|
* this value is stored in m_MarkerType
|
||||||
|
@ -88,13 +96,11 @@ public:
|
||||||
m_MarkerType |= aErrorLevel << 8;
|
m_MarkerType |= aErrorLevel << 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int GetErrorLevel() const
|
int GetErrorLevel() const
|
||||||
{
|
{
|
||||||
return (m_MarkerType >> 8) & 0xFF;
|
return (m_MarkerType >> 8) & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Functions to set/get marker type (DRC, ERC, or other)
|
/** Functions to set/get marker type (DRC, ERC, or other)
|
||||||
* this value is stored in m_MarkerType
|
* this value is stored in m_MarkerType
|
||||||
*/
|
*/
|
||||||
|
@ -105,13 +111,11 @@ public:
|
||||||
m_MarkerType |= aMarkerType;
|
m_MarkerType |= aMarkerType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int GetMarkerType() const
|
int GetMarkerType() const
|
||||||
{
|
{
|
||||||
return m_MarkerType & 0xFF;
|
return m_MarkerType & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetData
|
* Function SetData
|
||||||
* fills in all the reportable data associated with a MARKER.
|
* fills in all the reportable data associated with a MARKER.
|
||||||
|
@ -137,11 +141,11 @@ public:
|
||||||
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
const wxString& aText, const wxPoint& aPos );
|
const wxString& aText, const wxPoint& aPos );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetAuxiliaryData
|
* Function SetAuxiliaryData
|
||||||
* initialize data for the second (auxiliary) item
|
* initialize data for the second (auxiliary) item
|
||||||
* @param aAuxiliaryText = the second text (main text) concerning the second schematic or board item
|
* @param aAuxiliaryText = the second text (main text) concerning the second schematic or
|
||||||
|
* board item
|
||||||
* @param aAuxiliaryPos = position the second item
|
* @param aAuxiliaryPos = position the second item
|
||||||
*/
|
*/
|
||||||
void SetAuxiliaryData( const wxString& aAuxiliaryText, const wxPoint& aAuxiliaryPos )
|
void SetAuxiliaryData( const wxString& aAuxiliaryText, const wxPoint& aAuxiliaryPos )
|
||||||
|
@ -165,12 +169,11 @@ public:
|
||||||
return m_drc;
|
return m_drc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DisplayMarkerInfo
|
* Function DisplayMarkerInfo
|
||||||
* Displays the full info of this marker, in a HTML window
|
* displays the full info of this marker, in a HTML window.
|
||||||
*/
|
*/
|
||||||
void DisplayMarkerInfo(WinEDA_DrawFrame * aFrame);
|
void DisplayMarkerInfo( WinEDA_DrawFrame* aFrame );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HitTestMarker
|
* Function HitTestMarker
|
||||||
|
|
|
@ -137,17 +137,18 @@ void DisplayHotkeyList( WinEDA_DrawFrame* aFrame
|
||||||
*/
|
*/
|
||||||
Ki_HotkeyInfo* GetDescriptorFromHotkey( int aKey, Ki_HotkeyInfo** aList );
|
Ki_HotkeyInfo* GetDescriptorFromHotkey( int aKey, Ki_HotkeyInfo** aList );
|
||||||
|
|
||||||
/** function ReadHotkeyConfig * Read hotkey configuration for a given
|
/**
|
||||||
app, possibly before the frame for that app has been created
|
* Function ReadHotkeyConfig
|
||||||
|
* Read hotkey configuration for a given app,
|
||||||
@param Appname = the value of the app's m_FrameName
|
* possibly before the frame for that app has been created
|
||||||
@param DescList = the hotkey data
|
* @param Appname = the value of the app's m_FrameName
|
||||||
|
* @param aDescList = the hotkey data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ReadHotkeyConfig( const wxString& Appname,
|
void ReadHotkeyConfig( const wxString& Appname,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* DescList );
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList );
|
||||||
|
|
||||||
void ParseHotkeyConfig( const wxString& data,
|
void ParseHotkeyConfig( const wxString& data,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* DescList );
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList );
|
||||||
|
|
||||||
|
|
||||||
// common hotkeys event id
|
// common hotkeys event id
|
||||||
|
|
|
@ -39,6 +39,16 @@ enum SCH_FILTER_T {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* used to calculate the pen size from default value
|
||||||
|
* the actual pen size is default value * BUS_WIDTH_EXPAND
|
||||||
|
*/
|
||||||
|
#if defined(KICAD_GOST)
|
||||||
|
#define BUS_WIDTH_EXPAND 3.6
|
||||||
|
#else
|
||||||
|
#define BUS_WIDTH_EXPAND 1.4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
enum DANGLING_END_T {
|
enum DANGLING_END_T {
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
WIRE_START_END,
|
WIRE_START_END,
|
||||||
|
@ -84,6 +94,8 @@ protected:
|
||||||
public:
|
public:
|
||||||
SCH_ITEM( EDA_ITEM* aParent, KICAD_T aType );
|
SCH_ITEM( EDA_ITEM* aParent, KICAD_T aType );
|
||||||
|
|
||||||
|
SCH_ITEM( const SCH_ITEM& aItem );
|
||||||
|
|
||||||
~SCH_ITEM();
|
~SCH_ITEM();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
|
@ -91,6 +103,8 @@ public:
|
||||||
return wxT( "SCH_ITEM" );
|
return wxT( "SCH_ITEM" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCH_ITEM* Clone() const { return ( SCH_ITEM* ) EDA_ITEM::Clone(); }
|
||||||
|
|
||||||
SCH_ITEM* Next() { return (SCH_ITEM*) Pnext; }
|
SCH_ITEM* Next() { return (SCH_ITEM*) Pnext; }
|
||||||
SCH_ITEM* Back() { return (SCH_ITEM*) Pback; }
|
SCH_ITEM* Back() { return (SCH_ITEM*) Pback; }
|
||||||
|
|
||||||
|
@ -122,37 +136,38 @@ public:
|
||||||
int aDrawMode,
|
int aDrawMode,
|
||||||
int aColor = -1 ) = 0;
|
int aColor = -1 ) = 0;
|
||||||
|
|
||||||
|
|
||||||
/* Place function */
|
/* Place function */
|
||||||
virtual void Place( SCH_EDIT_FRAME* aFrame, wxDC* aDC );
|
virtual void Place( SCH_EDIT_FRAME* aFrame, wxDC* aDC );
|
||||||
|
|
||||||
// Geometric transforms (used in block operations):
|
/**
|
||||||
/** virtual function Move
|
* Function Move
|
||||||
* move item to a new position.
|
* moves the item by \a aMoveVector to a new position.
|
||||||
* @param aMoveVector = the deplacement vector
|
* @param aMoveVector = the deplacement vector
|
||||||
*/
|
*/
|
||||||
virtual void Move( const wxPoint& aMoveVector ) = 0;
|
virtual void Move( const wxPoint& aMoveVector ) = 0;
|
||||||
|
|
||||||
/** virtual function Mirror_Y
|
/**
|
||||||
* mirror item relative to an Y axis
|
* Function Mirror_Y
|
||||||
* @param aYaxis_position = the y axis position
|
* mirrors item relative to an Y axis about \a aYaxis_position.
|
||||||
|
* @param aYaxis_position The Y axis position to mirror around.
|
||||||
*/
|
*/
|
||||||
virtual void Mirror_Y( int aYaxis_position ) = 0;
|
virtual void Mirror_Y( int aYaxis_position ) = 0;
|
||||||
virtual void Mirror_X( int aXaxis_position ) = 0;
|
|
||||||
virtual void Rotate( wxPoint rotationPoint ) = 0;
|
|
||||||
|
|
||||||
|
virtual void Mirror_X( int aXaxis_position ) = 0;
|
||||||
|
|
||||||
|
virtual void Rotate( wxPoint rotationPoint ) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Save
|
* Function Save
|
||||||
* writes the data structures for this object out to a FILE in "*.sch"
|
* writes the data structures for this object out to a FILE in "*.sch" format.
|
||||||
* format.
|
|
||||||
* @param aFile The FILE to write to.
|
* @param aFile The FILE to write to.
|
||||||
* @return bool - true if success writing else false.
|
* @return bool - true if success writing else false.
|
||||||
*/
|
*/
|
||||||
virtual bool Save( FILE* aFile ) const = 0;
|
virtual bool Save( FILE* aFile ) const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load schematic item from \a aLine in a .sch file.
|
* Function Load
|
||||||
|
* reads a schematic item from \a aLine in a .sch file.
|
||||||
*
|
*
|
||||||
* @param aLine - Essentially this is file to read the object from.
|
* @param aLine - Essentially this is file to read the object from.
|
||||||
* @param aErrorMsg - Description of the error if an error occurs while loading the object.
|
* @param aErrorMsg - Description of the error if an error occurs while loading the object.
|
||||||
|
@ -161,7 +176,8 @@ public:
|
||||||
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg ) { return false; }
|
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg ) { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare schematic item against search string.
|
* Function Matches
|
||||||
|
* compares the schematic item against search \a aSearchData.
|
||||||
*
|
*
|
||||||
* The base class returns false since many of the objects derived from
|
* The base class returns false since many of the objects derived from
|
||||||
* SCH_ITEM do not have any text to search.
|
* SCH_ITEM do not have any text to search.
|
||||||
|
@ -190,7 +206,8 @@ public:
|
||||||
bool Matches( const wxString& aText, wxFindReplaceData& aSearchData );
|
bool Matches( const wxString& aText, wxFindReplaceData& aSearchData );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add schematic item end points to \a aItemList if the item has endpoints.
|
* Function GetEndPoints
|
||||||
|
* adds the schematic item end points to \a aItemList if the item has end points.
|
||||||
*
|
*
|
||||||
* The default version doesn't do anything since many of the schematic object cannot
|
* The default version doesn't do anything since many of the schematic object cannot
|
||||||
* be tested for dangling ends. If you add a new schematic item that can have a
|
* be tested for dangling ends. If you add a new schematic item that can have a
|
||||||
|
@ -202,7 +219,8 @@ public:
|
||||||
virtual void GetEndPoints( vector< DANGLING_END_ITEM >& aItemList ) {}
|
virtual void GetEndPoints( vector< DANGLING_END_ITEM >& aItemList ) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the schematic item to \a aItemList to check if it's dangling state has changed.
|
* Function IsDanglingStateChanged
|
||||||
|
* tests the schematic item to \a aItemList to check if it's dangling state has changed.
|
||||||
*
|
*
|
||||||
* Note that the return value only true when the state of the test has changed. Use
|
* Note that the return value only true when the state of the test has changed. Use
|
||||||
* the IsDangling() method to get the current dangling state of the item. Some of
|
* the IsDangling() method to get the current dangling state of the item. Some of
|
||||||
|
@ -218,9 +236,10 @@ public:
|
||||||
virtual bool IsDangling() const { return false; }
|
virtual bool IsDangling() const { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the selection state of an item inside \a aRect has changed.
|
* Function IsSelectStateChanged
|
||||||
|
* checks if the selection state of an item inside \a aRect has changed.
|
||||||
*
|
*
|
||||||
* The is used by the block selection code to verify if an item is selected or not.
|
* This is used by the block selection code to verify if an item is selected or not.
|
||||||
* True is be return anytime the select state changes. If you need to know the
|
* True is be return anytime the select state changes. If you need to know the
|
||||||
* the current selection state, use the IsSelected() method.
|
* the current selection state, use the IsSelected() method.
|
||||||
*
|
*
|
||||||
|
@ -229,16 +248,18 @@ public:
|
||||||
virtual bool IsSelectStateChanged( const wxRect& aRect ) { return false; }
|
virtual bool IsSelectStateChanged( const wxRect& aRect ) { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of connection points for this item.
|
* Function GetConnectionPoints
|
||||||
|
* add all the connection points for this item to \a aPoints.
|
||||||
*
|
*
|
||||||
* Not all schematic items have connection points so the default method does nothing.
|
* Not all schematic items have connection points so the default method does nothing.
|
||||||
*
|
*
|
||||||
* @param aPoints - List of connection points to add to.
|
* @param aPoints List of connection points to add to.
|
||||||
*/
|
*/
|
||||||
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const { }
|
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear all of the connection items from the list.
|
* Function ClearConnections
|
||||||
|
* clears all of the connection items from the list.
|
||||||
*
|
*
|
||||||
* The vector release method is used to prevent the item pointers from being deleted.
|
* The vector release method is used to prevent the item pointers from being deleted.
|
||||||
* Do not use the vector erase method on the connection list.
|
* Do not use the vector erase method on the connection list.
|
||||||
|
@ -246,8 +267,8 @@ public:
|
||||||
void ClearConnections() { m_connections.release(); }
|
void ClearConnections() { m_connections.release(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function IsConnected().
|
* Function IsConnected
|
||||||
* Test \a aPoint to see if it is connected to this schematic object.
|
* tests the item to see if it is connected to \a aPoint.
|
||||||
*
|
*
|
||||||
* @param aPoint - Position to test for connection.
|
* @param aPoint - Position to test for connection.
|
||||||
* @return True if connection to \a aPoint exists.
|
* @return True if connection to \a aPoint exists.
|
||||||
|
@ -255,8 +276,8 @@ public:
|
||||||
bool IsConnected( const wxPoint& aPoint ) const;
|
bool IsConnected( const wxPoint& aPoint ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HitTest().
|
* Function HitTest
|
||||||
* Test if \a aPoint is contained within the bounding box or on an item.
|
* tests if \a aPoint is contained within or on the bounding box of an item.
|
||||||
*
|
*
|
||||||
* @param aPoint - Point to test.
|
* @param aPoint - Point to test.
|
||||||
* @param aAccuracy - Increase the item bounding box by this amount.
|
* @param aAccuracy - Increase the item bounding box by this amount.
|
||||||
|
@ -266,21 +287,21 @@ public:
|
||||||
bool HitTest( const wxPoint& aPoint, int aAccuracy = 0,
|
bool HitTest( const wxPoint& aPoint, int aAccuracy = 0,
|
||||||
SCH_FILTER_T aFilter = NO_FILTER_T ) const
|
SCH_FILTER_T aFilter = NO_FILTER_T ) const
|
||||||
{
|
{
|
||||||
return DoHitTest( aPoint, aAccuracy, aFilter );
|
return doHitTest( aPoint, aAccuracy, aFilter );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HitTest().
|
* Function HitTest
|
||||||
* Test if \a aRect intersects or is contained within the bounding box of an item.
|
* tests if \a aRect intersects or is contained within the bounding box of an item.
|
||||||
*
|
*
|
||||||
* @param aRect - Rectangle to test.
|
* @param aRect - Rectangle to test.
|
||||||
* @param aContained - Set to true to test for containment instead of an intersection.
|
* @param aContained - Set to true to test for containment instead of an intersection.
|
||||||
* @param aAccuracy - Increase the item bounding box by this amount.
|
* @param aAccuracy - Increase aRect by this amount.
|
||||||
* @return True if \a aRect contains or intersects the item bounding box.
|
* @return True if \a aRect contains or intersects the item bounding box.
|
||||||
*/
|
*/
|
||||||
bool HitTest( const EDA_Rect& aRect, bool aContained = false, int aAccuracy = 0 ) const
|
bool HitTest( const EDA_Rect& aRect, bool aContained = false, int aAccuracy = 0 ) const
|
||||||
{
|
{
|
||||||
return DoHitTest( aRect, aContained, aAccuracy );
|
return doHitTest( aRect, aContained, aAccuracy );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -290,17 +311,17 @@ public:
|
||||||
* http://www.gotw.ca/publications/mill18.htm.
|
* http://www.gotw.ca/publications/mill18.htm.
|
||||||
*/
|
*/
|
||||||
private:
|
private:
|
||||||
virtual bool DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aFilter ) const
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
virtual bool doHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy ) const
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool DoIsConnected( const wxPoint& aPosition ) const { return false; }
|
virtual bool doIsConnected( const wxPoint& aPosition ) const { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SCH_ITEM_STRUCT_H */
|
#endif /* SCH_ITEM_STRUCT_H */
|
||||||
|
|
|
@ -139,7 +139,7 @@ public:
|
||||||
|
|
||||||
~WinEDA_PcbFrame();
|
~WinEDA_PcbFrame();
|
||||||
|
|
||||||
void OnQuit( wxCommandEvent & WXUNUSED(event) );
|
void OnQuit( wxCommandEvent& event );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function ToPlotter
|
* Function ToPlotter
|
||||||
|
@ -480,7 +480,7 @@ public:
|
||||||
* @param aKey = the key modifiers (Alt, Shift ...)
|
* @param aKey = the key modifiers (Alt, Shift ...)
|
||||||
* @return the block command id (BLOCK_MOVE, BLOCK_COPY...)
|
* @return the block command id (BLOCK_MOVE, BLOCK_COPY...)
|
||||||
*/
|
*/
|
||||||
virtual int ReturnBlockCommand( int key );
|
virtual int ReturnBlockCommand( int aKey );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HandleBlockPlace( )
|
* Function HandleBlockPlace( )
|
||||||
|
@ -805,18 +805,19 @@ public:
|
||||||
* Modify a full track width (using DRC control).
|
* Modify a full track width (using DRC control).
|
||||||
* a full track is the set of track segments between 2 ends: pads or a
|
* a full track is the set of track segments between 2 ends: pads or a
|
||||||
* point that has more than 2 segments ends connected
|
* point that has more than 2 segments ends connected
|
||||||
* @param DC = the curred device context (can be NULL)
|
* @param aDC = the curred device context (can be NULL)
|
||||||
* @param aTrackSegment = a segment or via on the track to change
|
* @param aTrackSegment = a segment or via on the track to change
|
||||||
*/
|
*/
|
||||||
void Edit_Track_Width( wxDC* DC, TRACK* Track );
|
void Edit_Track_Width( wxDC* aDC, TRACK* aTrackSegment );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Edit_TrackSegm_Width
|
* Function Edit_TrackSegm_Width
|
||||||
* Modify one track segment width or one via diameter (using DRC control).
|
* Modify one track segment width or one via diameter (using DRC control).
|
||||||
* @param DC = the current device context (can be NULL)
|
* @param aDC = the current device context (can be NULL)
|
||||||
* @param aTrackItem = the track segment or via to modify
|
* @param aTrackItem = the track segment or via to modify
|
||||||
*/
|
*/
|
||||||
void Edit_TrackSegm_Width( wxDC* DC, TRACK* segm );
|
void Edit_TrackSegm_Width( wxDC* aDC, TRACK* aTrackItem );
|
||||||
|
|
||||||
TRACK* Begin_Route( TRACK* track, wxDC* DC );
|
TRACK* Begin_Route( TRACK* track, wxDC* DC );
|
||||||
void End_Route( TRACK* track, wxDC* DC );
|
void End_Route( TRACK* track, wxDC* DC );
|
||||||
void ExChange_Track_Layer( TRACK* pt_segm, wxDC* DC );
|
void ExChange_Track_Layer( TRACK* pt_segm, wxDC* DC );
|
||||||
|
@ -868,7 +869,7 @@ public:
|
||||||
// zone handling
|
// zone handling
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Delete_Zone_Fill
|
* Function Delete_Zone_Fill (obsolete)
|
||||||
* Remove the zone filling which include the segment aZone, or the zone
|
* Remove the zone filling which include the segment aZone, or the zone
|
||||||
* which have the given time stamp. A zone is a group of segments which
|
* which have the given time stamp. A zone is a group of segments which
|
||||||
* have the same TimeStamp
|
* have the same TimeStamp
|
||||||
|
@ -876,7 +877,7 @@ public:
|
||||||
* @param aTimestamp = Timestamp for the zone to delete, used if aZone ==
|
* @param aTimestamp = Timestamp for the zone to delete, used if aZone ==
|
||||||
* NULL
|
* NULL
|
||||||
*/
|
*/
|
||||||
void Delete_Zone_Fill( SEGZONE* Track, long aTimestamp = 0 );
|
void Delete_Zone_Fill( SEGZONE* aZone, long aTimestamp = 0 );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1033,6 +1034,13 @@ public:
|
||||||
* @param aNetlistFullFilename = netlist file name (*.net)
|
* @param aNetlistFullFilename = netlist file name (*.net)
|
||||||
* @param aCmpFullFileName = cmp/footprint list file name (*.cmp) if not found,
|
* @param aCmpFullFileName = cmp/footprint list file name (*.cmp) if not found,
|
||||||
* only the netlist will be used
|
* only the netlist will be used
|
||||||
|
* @param aMessageWindow = a reference to a wxTextCtrl where to dislay messages.
|
||||||
|
* can be NULL
|
||||||
|
* @param aChangeFootprint if true, footprints that have changed in netlist will be changed
|
||||||
|
* @param aDeleteBadTracks if true, erroneous tracks will be deleted
|
||||||
|
* @param aDeleteExtraFootprints if true, remove unlocked footprints that are not in netlist
|
||||||
|
* @param aSelect_By_Timestamp if true, use timestamp instead of reference to identify footprints
|
||||||
|
* from components (use after reannotation of the chematic)
|
||||||
* @return true if Ok
|
* @return true if Ok
|
||||||
*
|
*
|
||||||
* the format of the netlist is something like:
|
* the format of the netlist is something like:
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
; General Product Description Definitions
|
; General Product Description Definitions
|
||||||
!define PRODUCT_NAME "KiCad"
|
!define PRODUCT_NAME "KiCad"
|
||||||
!define PRODUCT_VERSION "2010.12.18"
|
!define PRODUCT_VERSION "2010.12.22"
|
||||||
!define PRODUCT_WEB_SITE "http://iut-tice.ujf-grenoble.fr/kicad/"
|
!define PRODUCT_WEB_SITE "http://iut-tice.ujf-grenoble.fr/kicad/"
|
||||||
!define SOURCEFORGE_WEB_SITE "http://kicad.sourceforge.net/"
|
!define SOURCEFORGE_WEB_SITE "http://kicad.sourceforge.net/"
|
||||||
!define COMPANY_NAME ""
|
!define COMPANY_NAME ""
|
||||||
|
|
|
@ -224,7 +224,7 @@ void WinEDA_PcbFrame::AutoMoveModulesOnPcb( bool PlaceModulesHorsPcb )
|
||||||
Module = moduleList[ii];
|
Module = moduleList[ii];
|
||||||
if( PlaceModulesHorsPcb && edgesExists )
|
if( PlaceModulesHorsPcb && edgesExists )
|
||||||
{
|
{
|
||||||
if( GetBoard()->m_BoundaryBox.Inside( Module->m_Pos ) )
|
if( GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
surface += Module->m_Surface;
|
surface += Module->m_Surface;
|
||||||
|
@ -243,7 +243,7 @@ void WinEDA_PcbFrame::AutoMoveModulesOnPcb( bool PlaceModulesHorsPcb )
|
||||||
|
|
||||||
if( PlaceModulesHorsPcb && edgesExists )
|
if( PlaceModulesHorsPcb && edgesExists )
|
||||||
{
|
{
|
||||||
if( GetBoard()->m_BoundaryBox.Inside( Module->m_Pos ) )
|
if( GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ void WinEDA_PcbFrame::AutoPlaceModule( MODULE* Module,
|
||||||
Module->m_ModuleStatus &= ~MODULE_is_PLACED;
|
Module->m_ModuleStatus &= ~MODULE_is_PLACED;
|
||||||
if( Module->m_ModuleStatus & MODULE_is_LOCKED )
|
if( Module->m_ModuleStatus & MODULE_is_LOCKED )
|
||||||
break;
|
break;
|
||||||
if( !GetBoard()->m_BoundaryBox.Inside( Module->m_Pos ) )
|
if( !GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
|
||||||
Module->m_ModuleStatus |= MODULE_to_PLACE;
|
Module->m_ModuleStatus |= MODULE_to_PLACE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -657,7 +657,7 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
{
|
{
|
||||||
pad->m_Selected = 0;
|
pad->m_Selected = 0;
|
||||||
pos = pad->GetPosition();
|
pos = pad->GetPosition();
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
pad->m_Selected = IS_SELECTED;
|
pad->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
|
@ -673,13 +673,13 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
{
|
{
|
||||||
case TYPE_EDGE_MODULE:
|
case TYPE_EDGE_MODULE:
|
||||||
pos = ( (EDGE_MODULE*) item )->m_Start;
|
pos = ( (EDGE_MODULE*) item )->m_Start;
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
}
|
}
|
||||||
pos = ( (EDGE_MODULE*) item )->m_End;
|
pos = ( (EDGE_MODULE*) item )->m_End;
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
|
@ -688,7 +688,7 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
|
|
||||||
case TYPE_TEXTE_MODULE:
|
case TYPE_TEXTE_MODULE:
|
||||||
pos = ( (TEXTE_MODULE*) item )->GetPosition();
|
pos = ( (TEXTE_MODULE*) item )->GetPosition();
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
|
|
|
@ -512,8 +512,16 @@ public:
|
||||||
*/
|
*/
|
||||||
void DisplayInfo( WinEDA_DrawFrame* frame );
|
void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||||
|
|
||||||
void Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
/**
|
||||||
int aDrawMode, const wxPoint& offset = ZeroOffset );
|
* Function Draw.
|
||||||
|
* Redraw the BOARD items but not cursors, axis or grid.
|
||||||
|
* @param aPanel = the panel relative to the board
|
||||||
|
* @param aDC = the curent device context
|
||||||
|
* @param aDrawMode = GR_COPY, GR_OR ... (not always used)
|
||||||
|
* @param aOffset = an draw offset value (default = 0,0)
|
||||||
|
*/
|
||||||
|
void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||||
|
int aDrawMode, const wxPoint& aOffset = ZeroOffset );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DrawHighLight
|
* Function DrawHighLight
|
||||||
|
|
|
@ -738,7 +738,7 @@ bool DIMENSION::HitTest( const wxPoint& ref_pos )
|
||||||
*/
|
*/
|
||||||
bool DIMENSION::HitTest( EDA_Rect& refArea )
|
bool DIMENSION::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Pos ) )
|
if( refArea.Contains( m_Pos ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -487,9 +487,9 @@ bool DRAWSEGMENT::HitTest( const wxPoint& ref_pos )
|
||||||
*/
|
*/
|
||||||
bool DRAWSEGMENT::HitTest( EDA_Rect& refArea )
|
bool DRAWSEGMENT::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Start ) )
|
if( refArea.Contains( m_Start ) )
|
||||||
return true;
|
return true;
|
||||||
if( refArea.Inside( m_End ) )
|
if( refArea.Contains( m_End ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -200,7 +200,7 @@ bool MIREPCB::HitTest( const wxPoint& refPos )
|
||||||
*/
|
*/
|
||||||
bool MIREPCB::HitTest( EDA_Rect& refArea )
|
bool MIREPCB::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Pos ) )
|
if( refArea.Contains( m_Pos ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue