Component library editor improvements and minor bug fixes.
* Component library objects renamed for improved readability. * Fields now move when selected in library editor. * Add copy constructor to all library draw and library component objects. * Added copy constructor to EDA_BaseStruct. * Delete base screen in WinEDA_DrawFrame destructor to prevent potential memory leak. * Fixed memory access bug when replacing and adding a component to library. * Moved library component block manipulation code into component object. * Removed all of the global variables used by the library editor main window object. * The usual code cleaning and refactoring.
This commit is contained in:
parent
fb52997c85
commit
8570d3311a
|
@ -41,6 +41,18 @@ EDA_BaseStruct::EDA_BaseStruct( KICAD_T idType )
|
|||
}
|
||||
|
||||
|
||||
EDA_BaseStruct::EDA_BaseStruct( const EDA_BaseStruct& base )
|
||||
{
|
||||
m_StructType = base.m_StructType;
|
||||
m_Parent = base.m_Parent;
|
||||
m_Son = base.m_Son;
|
||||
m_Flags = base.m_Flags;
|
||||
m_TimeStamp = base.m_TimeStamp;
|
||||
m_Status = base.m_Status;
|
||||
m_Selected = base.m_Selected;
|
||||
}
|
||||
|
||||
|
||||
/********************************************/
|
||||
void EDA_BaseStruct::InitVars()
|
||||
/********************************************/
|
||||
|
|
|
@ -58,7 +58,7 @@ WinEDA_DrawFrame::WinEDA_DrawFrame( wxWindow* father, int idtype,
|
|||
MsgPanel = NULL;
|
||||
m_CurrentScreen = NULL;
|
||||
m_ID_current_state = 0;
|
||||
m_ID_last_state = 0;
|
||||
m_ID_last_state = 0;
|
||||
m_HTOOL_current_state = 0;
|
||||
m_Draw_Axis = FALSE; // TRUE pour avoir les axes dessines
|
||||
m_Draw_Grid = FALSE; // TRUE pour avoir la axes dessinee
|
||||
|
@ -108,10 +108,10 @@ WinEDA_DrawFrame::WinEDA_DrawFrame( wxWindow* father, int idtype,
|
|||
}
|
||||
|
||||
|
||||
/****************************************/
|
||||
WinEDA_DrawFrame::~WinEDA_DrawFrame()
|
||||
/****************************************/
|
||||
{
|
||||
if( m_CurrentScreen != NULL )
|
||||
delete m_CurrentScreen;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -101,7 +101,6 @@ set(EESCHEMA_SRCS
|
|||
plotps.cpp
|
||||
plotdxf.cpp
|
||||
read_from_file_schematic_items_descriptions.cpp
|
||||
savelib.cpp
|
||||
save_schemas.cpp
|
||||
schedit.cpp
|
||||
schematic_undo_redo.cpp
|
||||
|
|
|
@ -10,8 +10,9 @@
|
|||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "wxstruct.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "class_library.h"
|
||||
#include "protos.h"
|
||||
#include "netlist.h"
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
#include "confirm.h"
|
||||
#include "kicad_string.h"
|
||||
#include "gestfich.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "appl_wxstruct.h"
|
||||
|
||||
#include "general.h"
|
||||
|
||||
/* Variables Locales */
|
||||
|
||||
/*******************************************************************************************/
|
||||
|
|
|
@ -12,31 +12,36 @@
|
|||
#include "block_commande.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_marker_sch.h"
|
||||
#include "class_library.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/* Variables Locales */
|
||||
|
||||
// Imported functions:
|
||||
void MoveItemsInList( PICKED_ITEMS_LIST& aItemsList, const wxPoint aMoveVector );
|
||||
void MirrorListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& Center );
|
||||
void DeleteItemsInList( WinEDA_DrawPanel* panel, PICKED_ITEMS_LIST& aItemsList );
|
||||
void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList, const wxPoint aMoveVector );
|
||||
void MoveItemsInList( PICKED_ITEMS_LIST& aItemsList,
|
||||
const wxPoint aMoveVector );
|
||||
void MirrorListOfItems( PICKED_ITEMS_LIST& aItemsList,
|
||||
wxPoint& Center );
|
||||
void DeleteItemsInList( WinEDA_DrawPanel* panel,
|
||||
PICKED_ITEMS_LIST& aItemsList );
|
||||
void DuplicateItemsInList( SCH_SCREEN* screen,
|
||||
PICKED_ITEMS_LIST& aItemsList,
|
||||
const wxPoint aMoveVector );
|
||||
|
||||
/* Fonctions exportees */
|
||||
|
||||
/* Fonctions Locales */
|
||||
static void CollectStructsToDrag( SCH_SCREEN* screen );
|
||||
static void AddPickedItem( SCH_SCREEN* screen, wxPoint aPosition );
|
||||
static LibEDA_BaseStruct* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
||||
wxPoint& aPosition );
|
||||
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel,
|
||||
wxDC* DC,
|
||||
bool erase );
|
||||
static void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList );
|
||||
static void CollectStructsToDrag( SCH_SCREEN* screen );
|
||||
static void AddPickedItem( SCH_SCREEN* screen, wxPoint aPosition );
|
||||
static LIB_DRAW_ITEM* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
||||
wxPoint& aPosition );
|
||||
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel,
|
||||
wxDC* DC,
|
||||
bool erase );
|
||||
static void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -645,7 +650,7 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
|||
if( Struct->Type() == TYPE_SCH_COMPONENT )
|
||||
{
|
||||
// Add all pins of the selected component to list
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
wxPoint pos;
|
||||
DrawItem = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos );
|
||||
while( DrawItem )
|
||||
|
@ -840,8 +845,8 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
|
||||
|
||||
/*********************************************************************************/
|
||||
static LibEDA_BaseStruct* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
||||
wxPoint& aPosition )
|
||||
static LIB_DRAW_ITEM* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
||||
wxPoint& aPosition )
|
||||
/*********************************************************************************/
|
||||
|
||||
/** GetNextPinPosition()
|
||||
|
@ -856,9 +861,9 @@ static LibEDA_BaseStruct* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
|||
*/
|
||||
{
|
||||
LIB_COMPONENT* Entry;
|
||||
static LibEDA_BaseStruct* NextItem;
|
||||
static LIB_DRAW_ITEM* NextItem;
|
||||
static int Multi, convert, TransMat[2][2];
|
||||
LibEDA_BaseStruct* DEntry;
|
||||
LIB_DRAW_ITEM* DEntry;
|
||||
int orient;
|
||||
LibDrawPin* Pin;
|
||||
static wxPoint CmpPosition;
|
||||
|
|
|
@ -11,98 +11,15 @@
|
|||
#include "block_commande.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_library.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
|
||||
|
||||
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
bool erase );
|
||||
static int MarkItemsInBloc( LIB_COMPONENT* LibComponent,
|
||||
EDA_Rect& Rect );
|
||||
|
||||
static void ClearMarkItems( LIB_COMPONENT* LibComponent );
|
||||
static void CopyMarkedItems( LIB_COMPONENT* LibEntry, wxPoint offset );
|
||||
static void MoveMarkedItems( LIB_COMPONENT* LibEntry, wxPoint offset );
|
||||
static void MirrorMarkedItems( LIB_COMPONENT* LibEntry,
|
||||
wxPoint offset );
|
||||
static void DeleteMarkedItems( LIB_COMPONENT* LibEntry );
|
||||
|
||||
|
||||
void ClearMarkItems( LIB_COMPONENT* LibComponent )
|
||||
{
|
||||
LibEDA_BaseStruct* item;
|
||||
|
||||
if( LibComponent == NULL )
|
||||
return;
|
||||
|
||||
item = LibComponent->m_Drawings;
|
||||
for( ; item != NULL; item = item->Next() )
|
||||
item->m_Flags = item->m_Selected = 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Mark items inside rect.
|
||||
* Items are inside rect when an end point is inside rect
|
||||
*
|
||||
* Rules for convert drawings and other parts ( for multi part per package):
|
||||
* - Commons are always marked
|
||||
* - Specific graphic shapes must agree with the current displayed part and
|
||||
* convert
|
||||
* - Because most of pins are specific to current part and current convert:
|
||||
* - if g_EditPinByPinIsOn == TRUE, or flag .m_UnitSelectionLocked == TRUE,
|
||||
* only the pins specific to current part and current convert are marked
|
||||
* - all specific to current convert pins are marked;
|
||||
*/
|
||||
int MarkItemsInBloc( LIB_COMPONENT* LibComponent,
|
||||
EDA_Rect& Rect )
|
||||
{
|
||||
LibEDA_BaseStruct* item;
|
||||
int ItemsCount = 0;
|
||||
wxPoint pos;
|
||||
bool ItemIsInOtherPart;
|
||||
bool ItemIsInOtherConvert;
|
||||
|
||||
if( LibComponent == NULL )
|
||||
return 0;
|
||||
|
||||
item = LibComponent->m_Drawings;
|
||||
for( ; item != NULL; item = item->Next() )
|
||||
{
|
||||
item->m_Selected = 0;
|
||||
|
||||
// Do not consider other units or other convert items:
|
||||
ItemIsInOtherPart = ItemIsInOtherConvert = FALSE;
|
||||
if( item->m_Unit && (item->m_Unit != CurrentUnit) )
|
||||
ItemIsInOtherPart = TRUE;
|
||||
if( item->m_Convert && (item->m_Convert != CurrentConvert) )
|
||||
ItemIsInOtherConvert = TRUE;
|
||||
if( ItemIsInOtherPart || ItemIsInOtherConvert )
|
||||
{
|
||||
if( item->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
{ // Specific rules for pins:
|
||||
if( g_EditPinByPinIsOn )
|
||||
continue;
|
||||
if( LibComponent->m_UnitSelectionLocked )
|
||||
continue;
|
||||
if( ItemIsInOtherConvert )
|
||||
continue;
|
||||
}
|
||||
else
|
||||
continue;
|
||||
}
|
||||
|
||||
if( item->Inside( Rect ) )
|
||||
{
|
||||
item->m_Selected = IS_SELECTED;
|
||||
ItemsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
return ItemsCount;
|
||||
}
|
||||
static void MirrorMarkedItems( LIB_COMPONENT* LibEntry, wxPoint offset );
|
||||
|
||||
|
||||
/*
|
||||
|
@ -158,7 +75,7 @@ int WinEDA_LibeditFrame::ReturnBlockCommand( int key )
|
|||
*/
|
||||
int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
|
||||
{
|
||||
int ItemsCount = 0;
|
||||
int ItemCount = 0;
|
||||
int MustDoPlace = 0;
|
||||
|
||||
if( GetScreen()->m_BlockLocate.GetCount() )
|
||||
|
@ -184,9 +101,10 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
|
|||
case BLOCK_DRAG: /* Drag */
|
||||
case BLOCK_MOVE: /* Move */
|
||||
case BLOCK_COPY: /* Copy */
|
||||
ItemsCount = MarkItemsInBloc( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate );
|
||||
if( ItemsCount )
|
||||
ItemCount = m_component->SelectItems( GetScreen()->m_BlockLocate,
|
||||
m_unit, m_convert,
|
||||
g_EditPinByPinIsOn );
|
||||
if( ItemCount )
|
||||
{
|
||||
MustDoPlace = 1;
|
||||
if( DrawPanel->ManageCurseur != NULL )
|
||||
|
@ -207,11 +125,12 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
|
|||
break;
|
||||
|
||||
case BLOCK_DELETE: /* Delete */
|
||||
ItemsCount = MarkItemsInBloc( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate );
|
||||
if( ItemsCount )
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
DeleteMarkedItems( m_currentComponent );
|
||||
ItemCount = m_component->SelectItems( GetScreen()->m_BlockLocate,
|
||||
m_unit, m_convert,
|
||||
g_EditPinByPinIsOn );
|
||||
if( ItemCount )
|
||||
SaveCopyInUndoList( m_component );
|
||||
m_component->DeleteSelectedItems();
|
||||
break;
|
||||
|
||||
case BLOCK_SAVE: /* Save */
|
||||
|
@ -223,12 +142,12 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
|
|||
|
||||
|
||||
case BLOCK_MIRROR_Y:
|
||||
ItemsCount = MarkItemsInBloc( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate );
|
||||
if( ItemsCount )
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
MirrorMarkedItems( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate.Centre() );
|
||||
ItemCount = m_component->SelectItems( GetScreen()->m_BlockLocate,
|
||||
m_unit, m_convert,
|
||||
g_EditPinByPinIsOn );
|
||||
if( ItemCount )
|
||||
SaveCopyInUndoList( m_component );
|
||||
MirrorMarkedItems( m_component, GetScreen()->m_BlockLocate.Centre() );
|
||||
break;
|
||||
|
||||
case BLOCK_ZOOM: /* Window Zoom */
|
||||
|
@ -245,9 +164,8 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
|
|||
if( MustDoPlace <= 0 )
|
||||
{
|
||||
if( GetScreen()->m_BlockLocate.m_Command != BLOCK_SELECT_ITEMS_ONLY )
|
||||
{
|
||||
ClearMarkItems( m_currentComponent );
|
||||
}
|
||||
m_component->ClearSelectedItems();
|
||||
|
||||
GetScreen()->m_BlockLocate.m_Flags = 0;
|
||||
GetScreen()->m_BlockLocate.m_State = STATE_NO_BLOCK;
|
||||
GetScreen()->m_BlockLocate.m_Command = BLOCK_IDLE;
|
||||
|
@ -273,6 +191,7 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
|
|||
void WinEDA_LibeditFrame::HandleBlockPlace( wxDC* DC )
|
||||
{
|
||||
bool err = FALSE;
|
||||
wxPoint offset;
|
||||
|
||||
if( DrawPanel->ManageCurseur == NULL )
|
||||
{
|
||||
|
@ -292,17 +211,19 @@ void WinEDA_LibeditFrame::HandleBlockPlace( wxDC* DC )
|
|||
case BLOCK_MOVE: /* Move */
|
||||
case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/
|
||||
GetScreen()->m_BlockLocate.ClearItemsList();
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
MoveMarkedItems( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate.m_MoveVector );
|
||||
SaveCopyInUndoList( m_component );
|
||||
offset = GetScreen()->m_BlockLocate.m_MoveVector;
|
||||
offset.y *= -1;
|
||||
m_component->MoveSelectedItems( offset );
|
||||
DrawPanel->Refresh( TRUE );
|
||||
break;
|
||||
|
||||
case BLOCK_COPY: /* Copy */
|
||||
GetScreen()->m_BlockLocate.ClearItemsList();
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
CopyMarkedItems( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate.m_MoveVector );
|
||||
SaveCopyInUndoList( m_component );
|
||||
offset = GetScreen()->m_BlockLocate.m_MoveVector;
|
||||
offset.y *= -1;
|
||||
m_component->CopySelectedItems( offset );
|
||||
break;
|
||||
|
||||
case BLOCK_PASTE: /* Paste (recopie du dernier bloc sauve */
|
||||
|
@ -310,9 +231,8 @@ void WinEDA_LibeditFrame::HandleBlockPlace( wxDC* DC )
|
|||
break;
|
||||
|
||||
case BLOCK_MIRROR_Y: /* Invert by popup menu, from block move */
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
MirrorMarkedItems( m_currentComponent,
|
||||
GetScreen()->m_BlockLocate.Centre() );
|
||||
SaveCopyInUndoList( m_component );
|
||||
MirrorMarkedItems( m_component, GetScreen()->m_BlockLocate.Centre() );
|
||||
break;
|
||||
|
||||
case BLOCK_ZOOM: // Handled by HandleBlockEnd
|
||||
|
@ -348,25 +268,27 @@ void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
BLOCK_SELECTOR* PtBlock;
|
||||
BASE_SCREEN* screen = panel->GetScreen();
|
||||
wxPoint move_offset;
|
||||
|
||||
PtBlock = &screen->m_BlockLocate;
|
||||
|
||||
WinEDA_LibeditFrame* parent = ( WinEDA_LibeditFrame* ) panel->GetParent();
|
||||
wxASSERT( parent != NULL );
|
||||
|
||||
LIB_COMPONENT* component = parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = parent->GetComponent();
|
||||
|
||||
if( component == NULL )
|
||||
return;
|
||||
|
||||
int unit = parent->GetUnit();
|
||||
int convert = parent->GetConvert();
|
||||
|
||||
if( erase )
|
||||
{
|
||||
PtBlock->Draw( panel, DC, PtBlock->m_MoveVector, g_XorMode,
|
||||
PtBlock->m_Color );
|
||||
|
||||
component->Draw( panel, DC, PtBlock->m_MoveVector, CurrentUnit,
|
||||
CurrentConvert, g_XorMode, -1, DefaultTransformMatrix,
|
||||
true, false, true );
|
||||
component->Draw( panel, DC, PtBlock->m_MoveVector, unit, convert,
|
||||
g_XorMode, -1, DefaultTransformMatrix,
|
||||
true, true, true );
|
||||
}
|
||||
|
||||
/* Redessin nouvel affichage */
|
||||
|
@ -379,78 +301,9 @@ void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
PtBlock->Draw( panel, DC, PtBlock->m_MoveVector, g_XorMode,
|
||||
PtBlock->m_Color );
|
||||
|
||||
component->Draw( panel, DC, PtBlock->m_MoveVector, CurrentUnit,
|
||||
CurrentConvert, g_XorMode, -1, DefaultTransformMatrix,
|
||||
true, false, true );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Copy marked items, at new position = old position + offset
|
||||
*/
|
||||
void CopyMarkedItems( LIB_COMPONENT* LibEntry, wxPoint offset )
|
||||
{
|
||||
LibEDA_BaseStruct* item;
|
||||
|
||||
if( LibEntry == NULL )
|
||||
return;
|
||||
|
||||
item = LibEntry->m_Drawings;
|
||||
for( ; item != NULL; item = item->Next() )
|
||||
{
|
||||
if( item->m_Selected == 0 )
|
||||
continue;
|
||||
item->m_Selected = 0;
|
||||
LibEDA_BaseStruct* newitem = item->GenCopy();
|
||||
newitem->m_Selected = IS_SELECTED;
|
||||
newitem->SetNext( LibEntry->m_Drawings );
|
||||
LibEntry->m_Drawings = newitem;
|
||||
}
|
||||
|
||||
MoveMarkedItems( LibEntry, offset );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Move marked items, at new position = old position + offset
|
||||
*/
|
||||
void MoveMarkedItems( LIB_COMPONENT* LibEntry, wxPoint offset )
|
||||
{
|
||||
LibEDA_BaseStruct* item;
|
||||
|
||||
if( LibEntry == NULL )
|
||||
return;
|
||||
|
||||
NEGATE( offset.y ); // Y axis for lib items is Down to Up: reverse y offset value
|
||||
for( item = LibEntry->m_Drawings; item != NULL; item = item->Next() )
|
||||
{
|
||||
if( item->m_Selected == 0 )
|
||||
continue;
|
||||
|
||||
item->SetOffset( offset );
|
||||
item->m_Flags = item->m_Selected = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Delete marked items
|
||||
*/
|
||||
void DeleteMarkedItems( LIB_COMPONENT* LibEntry )
|
||||
{
|
||||
LibEDA_BaseStruct* item, * next_item;
|
||||
|
||||
if( LibEntry == NULL )
|
||||
return;
|
||||
|
||||
item = LibEntry->m_Drawings;
|
||||
for( ; item != NULL; item = next_item )
|
||||
{
|
||||
next_item = item->Next();
|
||||
if( item->m_Selected == 0 )
|
||||
continue;
|
||||
LibEntry->RemoveDrawItem( item );
|
||||
}
|
||||
component->Draw( panel, DC, PtBlock->m_MoveVector, unit, convert,
|
||||
g_XorMode, -1, DefaultTransformMatrix,
|
||||
true, true, true );
|
||||
}
|
||||
|
||||
|
||||
|
@ -460,7 +313,7 @@ void DeleteMarkedItems( LIB_COMPONENT* LibEntry )
|
|||
void MirrorMarkedItems( LIB_COMPONENT* LibEntry, wxPoint offset )
|
||||
{
|
||||
#define SETMIRROR( z ) (z) -= offset.x; (z) = -(z); (z) += offset.x;
|
||||
LibEDA_BaseStruct* item;
|
||||
LIB_DRAW_ITEM* item;
|
||||
|
||||
if( LibEntry == NULL )
|
||||
return;
|
||||
|
|
|
@ -14,17 +14,16 @@
|
|||
#include "kicad_string.h"
|
||||
#include "gestfich.h"
|
||||
#include "appl_wxstruct.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_library.h"
|
||||
#include "netlist.h"
|
||||
#include "protos.h"
|
||||
|
||||
#include "dialog_build_BOM.h"
|
||||
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/* object used in build BOM to handle the list of labels in schematic
|
||||
* because in a complex hierarchy, a label is used more than once,
|
||||
* and had more than one sheet path, so we must create a flat list of labels
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "classes_body_items.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include "trigo.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "classes_body_items.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
LibDrawText::LibDrawText(LIB_COMPONENT * aParent) :
|
||||
LibEDA_BaseStruct( COMPONENT_GRAPHIC_TEXT_DRAW_TYPE, aParent ),
|
||||
LIB_DRAW_ITEM( COMPONENT_GRAPHIC_TEXT_DRAW_TYPE, aParent ),
|
||||
EDA_TextStruct()
|
||||
{
|
||||
m_Size = wxSize( 50, 50 );
|
||||
|
@ -172,7 +172,7 @@ bool LibDrawText::HitTest( wxPoint aPosRef, int aThreshold,
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawText::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawText::DoGenCopy()
|
||||
{
|
||||
LibDrawText* newitem = new LibDrawText(NULL);
|
||||
|
||||
|
@ -189,11 +189,11 @@ LibEDA_BaseStruct* LibDrawText::DoGenCopy()
|
|||
newitem->m_Bold = m_Bold;
|
||||
newitem->m_HJustify = m_HJustify;
|
||||
newitem->m_VJustify = m_VJustify;
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawText::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawText::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_GRAPHIC_TEXT_DRAW_TYPE );
|
||||
|
||||
|
@ -220,6 +220,12 @@ bool LibDrawText::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawText::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
m_Pos = newPosition;
|
||||
}
|
||||
|
||||
|
||||
/** Function GetPenSize
|
||||
* @return the size of the "pen" that be used to draw or plot this item
|
||||
*/
|
||||
|
@ -273,7 +279,7 @@ void LibDrawText::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
{
|
||||
wxString msg;
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "drawtxt.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -10,15 +10,16 @@
|
|||
#include "gr_basic.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
int SortItemsFct(const void* ref, const void* item)
|
||||
{
|
||||
#define Ref ( *(LibEDA_BaseStruct**) (ref) )
|
||||
#define Item ( *(LibEDA_BaseStruct**) (item) )
|
||||
#define Ref ( *(LIB_DRAW_ITEM**) (ref) )
|
||||
#define Item ( *(LIB_DRAW_ITEM**) (item) )
|
||||
#define BEFORE -1
|
||||
#define AFTER 1
|
||||
|
||||
|
@ -168,6 +169,20 @@ CMP_LIB_ENTRY::CMP_LIB_ENTRY( LibrEntryType type, const wxString& name,
|
|||
}
|
||||
|
||||
|
||||
CMP_LIB_ENTRY::CMP_LIB_ENTRY( const CMP_LIB_ENTRY& entry, CMP_LIBRARY* lib ) :
|
||||
EDA_BaseStruct( entry )
|
||||
{
|
||||
Type = entry.Type;
|
||||
m_Name = entry.m_Name;
|
||||
m_Doc = entry.m_Doc;
|
||||
m_KeyWord = entry.m_KeyWord;
|
||||
m_DocFile = entry.m_DocFile;
|
||||
m_Options = entry.m_Options;
|
||||
m_lib = lib;
|
||||
m_Name.SetParent( this );
|
||||
}
|
||||
|
||||
|
||||
CMP_LIB_ENTRY::~CMP_LIB_ENTRY()
|
||||
{
|
||||
}
|
||||
|
@ -178,7 +193,43 @@ wxString CMP_LIB_ENTRY::GetLibraryName()
|
|||
if( m_lib != NULL )
|
||||
return m_lib->GetName();
|
||||
|
||||
return wxEmptyString;
|
||||
return wxString( _( "none" ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function SaveDoc
|
||||
* writes the doc info out to a FILE in "*.dcm" format.
|
||||
* Only non empty fields are written.
|
||||
* If all fields are empty, does not write anything
|
||||
* @param aFile The FILE to write to.
|
||||
* @return bool - true if success writing else false.
|
||||
*/
|
||||
bool CMP_LIB_ENTRY::SaveDoc( FILE* aFile )
|
||||
{
|
||||
if( m_Doc.IsEmpty() && m_KeyWord.IsEmpty() && m_DocFile.IsEmpty() )
|
||||
return true;
|
||||
|
||||
/* Generation des lignes utiles */
|
||||
if( fprintf( aFile, "#\n$CMP %s\n", CONV_TO_UTF8( m_Name.m_Text ) ) < 0 )
|
||||
return false;
|
||||
|
||||
if( ! m_Doc.IsEmpty()
|
||||
&& fprintf( aFile, "D %s\n", CONV_TO_UTF8( m_Doc ) ) < 0 )
|
||||
return false;
|
||||
|
||||
if( ! m_KeyWord.IsEmpty()
|
||||
&& fprintf( aFile, "K %s\n", CONV_TO_UTF8( m_KeyWord ) ) < 0 )
|
||||
return false;
|
||||
|
||||
if( ! m_DocFile.IsEmpty()
|
||||
&& fprintf( aFile, "F %s\n", CONV_TO_UTF8( m_DocFile ) ) < 0 )
|
||||
return false;
|
||||
|
||||
if( fprintf( aFile, "$ENDCMP\n" ) < 0 )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -223,6 +274,13 @@ LIB_ALIAS::LIB_ALIAS( const wxString& name, LIB_COMPONENT* root,
|
|||
}
|
||||
|
||||
|
||||
LIB_ALIAS::LIB_ALIAS( const LIB_ALIAS& alias, CMP_LIBRARY* lib ) :
|
||||
CMP_LIB_ENTRY( alias )
|
||||
{
|
||||
m_root = alias.m_root;
|
||||
}
|
||||
|
||||
|
||||
LIB_ALIAS::~LIB_ALIAS()
|
||||
{
|
||||
}
|
||||
|
@ -258,10 +316,61 @@ LIB_COMPONENT::LIB_COMPONENT( const wxString& name, CMP_LIBRARY* lib ) :
|
|||
}
|
||||
|
||||
|
||||
LIB_COMPONENT::LIB_COMPONENT( const LIB_COMPONENT& component,
|
||||
CMP_LIBRARY* lib ) :
|
||||
CMP_LIB_ENTRY( component, lib )
|
||||
{
|
||||
LIB_DRAW_ITEM* oldItem;
|
||||
LIB_DRAW_ITEM* newItem;
|
||||
LIB_DRAW_ITEM* lastItem = NULL;
|
||||
LibDrawField* oldField;
|
||||
LibDrawField* newField;
|
||||
|
||||
|
||||
m_Prefix = component.m_Prefix;
|
||||
m_AliasList = component.m_AliasList;
|
||||
m_FootprintList = component.m_FootprintList;
|
||||
m_UnitCount = component.m_UnitCount;
|
||||
m_UnitSelectionLocked = component.m_UnitSelectionLocked;
|
||||
m_TextInside = component.m_TextInside;
|
||||
m_DrawPinNum = component.m_DrawPinNum;
|
||||
m_DrawPinName = component.m_DrawPinName;
|
||||
m_LastDate = component.m_LastDate;
|
||||
|
||||
m_Prefix.SetParent( this );
|
||||
|
||||
for( oldItem = component.m_Drawings; oldItem != NULL;
|
||||
oldItem = oldItem->Next() )
|
||||
{
|
||||
if( ( oldItem->m_Flags & IS_NEW ) != 0 )
|
||||
continue;
|
||||
|
||||
newItem = oldItem->GenCopy();
|
||||
|
||||
if( lastItem == NULL )
|
||||
m_Drawings = newItem;
|
||||
else
|
||||
lastItem->SetNext( newItem );
|
||||
|
||||
newItem->SetParent( this );
|
||||
lastItem = newItem;
|
||||
newItem->SetNext( NULL );
|
||||
}
|
||||
|
||||
for( oldField = component.m_Fields; oldField != NULL;
|
||||
oldField = oldField->Next() )
|
||||
{
|
||||
newField = (LibDrawField*) oldField->GenCopy();
|
||||
newField->SetParent( this );
|
||||
m_Fields.PushBack( newField );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LIB_COMPONENT::~LIB_COMPONENT()
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
LibEDA_BaseStruct* NextDrawItem;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
LIB_DRAW_ITEM* NextDrawItem;
|
||||
|
||||
/* suppression des elements dependants */
|
||||
DrawItem = m_Drawings;
|
||||
|
@ -283,10 +392,10 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc,
|
|||
bool showPinText, bool drawFields,
|
||||
bool onlySelected )
|
||||
{
|
||||
wxString fieldText;
|
||||
LibDrawField* Field;
|
||||
LibEDA_BaseStruct* drawItem;
|
||||
BASE_SCREEN* screen = panel->GetScreen();
|
||||
wxString fieldText;
|
||||
LibDrawField* Field;
|
||||
LIB_DRAW_ITEM* drawItem;
|
||||
BASE_SCREEN* screen = panel->GetScreen();
|
||||
|
||||
GRSetDrawMode( dc, drawMode );
|
||||
|
||||
|
@ -303,7 +412,8 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc,
|
|||
if( multi && drawItem->m_Unit && ( drawItem->m_Unit != multi ) )
|
||||
continue;
|
||||
|
||||
if( convert && drawItem->m_Convert && ( drawItem->m_Convert != convert ) )
|
||||
if( convert && drawItem->m_Convert
|
||||
&& ( drawItem->m_Convert != convert ) )
|
||||
continue;
|
||||
|
||||
|
||||
|
@ -346,12 +456,19 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc,
|
|||
fieldText = m_Prefix.m_Text + wxT( "?" );
|
||||
}
|
||||
|
||||
m_Prefix.Draw( panel, dc, offset, color, drawMode, &fieldText,
|
||||
transformMatrix );
|
||||
m_Name.Draw( panel, dc, offset, color, drawMode, NULL, transformMatrix );
|
||||
if( !( onlySelected && m_Prefix.m_Selected == 0 ) )
|
||||
m_Prefix.Draw( panel, dc, offset, color, drawMode, &fieldText,
|
||||
transformMatrix );
|
||||
|
||||
if( !( onlySelected && m_Name.m_Selected == 0 ) )
|
||||
m_Name.Draw( panel, dc, offset, color, drawMode, NULL,
|
||||
transformMatrix );
|
||||
|
||||
for( Field = m_Fields; Field != NULL; Field = Field->Next() )
|
||||
{
|
||||
if( onlySelected && drawItem->m_Selected == 0 )
|
||||
continue;
|
||||
|
||||
Field->Draw( panel, dc, offset, color, drawMode, NULL,
|
||||
transformMatrix );
|
||||
}
|
||||
|
@ -376,13 +493,13 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc,
|
|||
}
|
||||
|
||||
|
||||
void LIB_COMPONENT::RemoveDrawItem( LibEDA_BaseStruct* item,
|
||||
void LIB_COMPONENT::RemoveDrawItem( LIB_DRAW_ITEM* item,
|
||||
WinEDA_DrawPanel* panel,
|
||||
wxDC* dc )
|
||||
{
|
||||
wxASSERT( item != NULL );
|
||||
|
||||
LibEDA_BaseStruct* prevItem = m_Drawings;
|
||||
LIB_DRAW_ITEM* prevItem = m_Drawings;
|
||||
|
||||
if( dc != NULL )
|
||||
item->Draw( panel, dc, wxPoint( 0, 0 ), -1, g_XorMode, NULL,
|
||||
|
@ -417,11 +534,11 @@ void LIB_COMPONENT::RemoveDrawItem( LibEDA_BaseStruct* item,
|
|||
*/
|
||||
bool LIB_COMPONENT::Save( FILE* aFile )
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry;
|
||||
LIB_DRAW_ITEM* DrawEntry;
|
||||
LibDrawField* Field;
|
||||
|
||||
if( Type != ROOT ) // should not happen, but just in case
|
||||
return false;
|
||||
/* Sort just in clase sorting was not done properly. */
|
||||
SortDrawItems();
|
||||
|
||||
/* First line: it s a comment (component name for readers) */
|
||||
if( fprintf( aFile, "#\n# %s\n#\n", CONV_TO_UTF8( m_Name.m_Text ) ) < 0 )
|
||||
|
@ -656,9 +773,9 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum,
|
|||
bool LIB_COMPONENT::LoadDrawEntries( FILE* f, char* line,
|
||||
int* lineNum, wxString& errorMsg )
|
||||
{
|
||||
LibEDA_BaseStruct* newEntry = NULL;
|
||||
LibEDA_BaseStruct* headEntry = NULL;
|
||||
LibEDA_BaseStruct* tailEntry = NULL;
|
||||
LIB_DRAW_ITEM* newEntry = NULL;
|
||||
LIB_DRAW_ITEM* headEntry = NULL;
|
||||
LIB_DRAW_ITEM* tailEntry = NULL;
|
||||
|
||||
while( true )
|
||||
{
|
||||
|
@ -676,31 +793,31 @@ bool LIB_COMPONENT::LoadDrawEntries( FILE* f, char* line,
|
|||
switch( line[0] )
|
||||
{
|
||||
case 'A': /* Arc */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawArc(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawArc(this);
|
||||
break;
|
||||
|
||||
case 'C': /* Circle */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawCircle(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawCircle(this);
|
||||
break;
|
||||
|
||||
case 'T': /* Text */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawText(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawText(this);
|
||||
break;
|
||||
|
||||
case 'S': /* Square */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawSquare(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawSquare(this);
|
||||
break;
|
||||
|
||||
case 'X': /* Pin Description */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawPin(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawPin(this);
|
||||
break;
|
||||
|
||||
case 'P': /* Polyline */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawPolyline(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawPolyline(this);
|
||||
break;
|
||||
|
||||
case 'B': /* Bezier Curves */
|
||||
newEntry = ( LibEDA_BaseStruct* ) new LibDrawBezier(this);
|
||||
newEntry = ( LIB_DRAW_ITEM* ) new LibDrawBezier(this);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -818,7 +935,7 @@ bool LIB_COMPONENT::LoadFootprints( FILE* file, char* line,
|
|||
*/
|
||||
void LIB_COMPONENT::SortDrawItems()
|
||||
{
|
||||
LibEDA_BaseStruct** Bufentry, ** BufentryBase, * Entry = m_Drawings;
|
||||
LIB_DRAW_ITEM** Bufentry, ** BufentryBase, * Entry = m_Drawings;
|
||||
int ii, nbitems;
|
||||
|
||||
if( Entry == NULL )
|
||||
|
@ -828,15 +945,15 @@ void LIB_COMPONENT::SortDrawItems()
|
|||
nbitems++;
|
||||
|
||||
BufentryBase =
|
||||
(LibEDA_BaseStruct**) MyZMalloc( (nbitems + 1) *
|
||||
sizeof(LibEDA_BaseStruct*) );
|
||||
(LIB_DRAW_ITEM**) MyZMalloc( (nbitems + 1) *
|
||||
sizeof(LIB_DRAW_ITEM*) );
|
||||
|
||||
/* memorisation du chainage : */
|
||||
for( Entry = m_Drawings, ii = 0; Entry != NULL; Entry = Entry->Next() )
|
||||
BufentryBase[ii++] = Entry;
|
||||
|
||||
/* Tri du chainage */
|
||||
qsort( BufentryBase, nbitems, sizeof(LibEDA_BaseStruct*), SortItemsFct );
|
||||
qsort( BufentryBase, nbitems, sizeof(LIB_DRAW_ITEM*), SortItemsFct );
|
||||
|
||||
/* Mise a jour du chainage. Remarque:
|
||||
* le dernier element de BufEntryBase (BufEntryBase[nbitems]) est NULL*/
|
||||
|
@ -861,7 +978,7 @@ void LIB_COMPONENT::SortDrawItems()
|
|||
/**********************************************************************/
|
||||
EDA_Rect LIB_COMPONENT::GetBoundaryBox( int Unit, int Convert )
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry;
|
||||
LIB_DRAW_ITEM* DrawEntry;
|
||||
EDA_Rect bBox( wxPoint( 0, 0 ), wxSize( 0, 0 ) );
|
||||
|
||||
for( DrawEntry = m_Drawings; DrawEntry != NULL;
|
||||
|
@ -982,7 +1099,7 @@ bool LIB_COMPONENT::LoadDateAndTime( char* Line )
|
|||
|
||||
void LIB_COMPONENT::SetOffset( const wxPoint& offset )
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry;
|
||||
LIB_DRAW_ITEM* DrawEntry;
|
||||
|
||||
m_Name.SetOffset( offset );
|
||||
m_Prefix.SetOffset( offset );
|
||||
|
@ -1004,8 +1121,8 @@ void LIB_COMPONENT::SetOffset( const wxPoint& offset )
|
|||
|
||||
void LIB_COMPONENT::RemoveDuplicateDrawItems()
|
||||
{
|
||||
LibEDA_BaseStruct* DEntryRef;
|
||||
LibEDA_BaseStruct* DEntryCompare;
|
||||
LIB_DRAW_ITEM* DEntryRef;
|
||||
LIB_DRAW_ITEM* DEntryCompare;
|
||||
bool deleted;
|
||||
|
||||
DEntryRef = m_Drawings;
|
||||
|
@ -1043,7 +1160,7 @@ void LIB_COMPONENT::RemoveDuplicateDrawItems()
|
|||
|
||||
bool LIB_COMPONENT::HasConversion() const
|
||||
{
|
||||
LibEDA_BaseStruct* entry;
|
||||
LIB_DRAW_ITEM* entry;
|
||||
|
||||
for( entry = m_Drawings; entry != NULL; entry = entry->Next() )
|
||||
{
|
||||
|
@ -1055,37 +1172,149 @@ bool LIB_COMPONENT::HasConversion() const
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function SaveDoc
|
||||
* writes the doc info out to a FILE in "*.dcm" format.
|
||||
* Only non empty fields are written.
|
||||
* If all fields are empty, does not write anything
|
||||
* @param aFile The FILE to write to.
|
||||
* @return bool - true if success writing else false.
|
||||
*/
|
||||
bool CMP_LIB_ENTRY::SaveDoc( FILE* aFile )
|
||||
int LIB_COMPONENT::SelectItems( EDA_Rect& rect, int unit, int convert,
|
||||
bool editPinByPin )
|
||||
{
|
||||
if( m_Doc.IsEmpty() && m_KeyWord.IsEmpty() && m_DocFile.IsEmpty() )
|
||||
return true;
|
||||
LIB_DRAW_ITEM* item;
|
||||
int ItemsCount = 0;
|
||||
|
||||
/* Generation des lignes utiles */
|
||||
if( fprintf( aFile, "#\n$CMP %s\n", CONV_TO_UTF8( m_Name.m_Text ) ) < 0 )
|
||||
return false;
|
||||
for( item = m_Drawings; item != NULL; item = item->Next() )
|
||||
{
|
||||
item->m_Selected = 0;
|
||||
|
||||
if( ! m_Doc.IsEmpty()
|
||||
&& fprintf( aFile, "D %s\n", CONV_TO_UTF8( m_Doc ) ) < 0 )
|
||||
return false;
|
||||
if( ( item->m_Unit && item->m_Unit != unit )
|
||||
|| ( item->m_Convert && item->m_Convert != convert ) )
|
||||
{
|
||||
if( item->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
||||
if( ! m_KeyWord.IsEmpty()
|
||||
&& fprintf( aFile, "K %s\n", CONV_TO_UTF8( m_KeyWord ) ) < 0 )
|
||||
return false;
|
||||
// Specific rules for pins.
|
||||
if( editPinByPin || m_UnitSelectionLocked
|
||||
|| ( item->m_Convert && item->m_Convert != convert ) )
|
||||
continue;
|
||||
}
|
||||
|
||||
if( ! m_DocFile.IsEmpty()
|
||||
&& fprintf( aFile, "F %s\n", CONV_TO_UTF8( m_DocFile ) ) < 0 )
|
||||
return false;
|
||||
if( item->Inside( rect ) )
|
||||
{
|
||||
item->m_Selected = IS_SELECTED;
|
||||
ItemsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if( fprintf( aFile, "$ENDCMP\n" ) < 0 )
|
||||
return false;
|
||||
if( m_Name.Inside( rect ) )
|
||||
{
|
||||
m_Name.m_Selected = IS_SELECTED;
|
||||
ItemsCount++;
|
||||
}
|
||||
|
||||
return true;
|
||||
if( m_Prefix.Inside( rect ) )
|
||||
{
|
||||
m_Prefix.m_Selected = IS_SELECTED;
|
||||
ItemsCount++;
|
||||
}
|
||||
|
||||
for( LibDrawField* field = m_Fields.GetFirst(); field != NULL;
|
||||
field = field->Next() )
|
||||
{
|
||||
if( field->Inside( rect ) )
|
||||
{
|
||||
field->m_Selected = IS_SELECTED;
|
||||
ItemsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
return ItemsCount;
|
||||
}
|
||||
|
||||
|
||||
void LIB_COMPONENT::MoveSelectedItems( const wxPoint& offset )
|
||||
{
|
||||
LIB_DRAW_ITEM* item;
|
||||
LibDrawField* field;
|
||||
|
||||
for( item = m_Drawings; item != NULL; item = item->Next() )
|
||||
{
|
||||
if( item->m_Selected == 0 )
|
||||
continue;
|
||||
|
||||
item->SetOffset( offset );
|
||||
item->m_Flags = item->m_Selected = 0;
|
||||
}
|
||||
|
||||
if( m_Name.m_Selected )
|
||||
{
|
||||
m_Name.SetOffset( offset );
|
||||
m_Name.m_Flags = m_Name.m_Selected = 0;
|
||||
}
|
||||
|
||||
if( m_Prefix.m_Selected )
|
||||
{
|
||||
m_Prefix.SetOffset( offset );
|
||||
m_Prefix.m_Flags = m_Prefix.m_Selected = 0;
|
||||
}
|
||||
|
||||
for( field = m_Fields.GetFirst(); field != NULL; field = field->Next() )
|
||||
{
|
||||
if( field->m_Selected )
|
||||
{
|
||||
field->SetOffset( offset );
|
||||
field->m_Flags = field->m_Selected = 0;
|
||||
}
|
||||
}
|
||||
|
||||
SortDrawItems();
|
||||
}
|
||||
|
||||
|
||||
void LIB_COMPONENT::ClearSelectedItems( void )
|
||||
{
|
||||
LIB_DRAW_ITEM* item;
|
||||
LibDrawField* field;
|
||||
|
||||
for( item = m_Drawings; item != NULL; item = item->Next() )
|
||||
item->m_Flags = item->m_Selected = 0;
|
||||
|
||||
m_Name.m_Flags = m_Name.m_Selected = 0;
|
||||
m_Prefix.m_Flags = m_Prefix.m_Selected = 0;
|
||||
|
||||
for( field = m_Fields.GetFirst(); field != NULL; field = field->Next() )
|
||||
field->m_Flags = field->m_Selected = 0;
|
||||
}
|
||||
|
||||
|
||||
void LIB_COMPONENT::DeleteSelectedItems( void )
|
||||
{
|
||||
LIB_DRAW_ITEM* item;
|
||||
LIB_DRAW_ITEM* nextItem;
|
||||
|
||||
for( item = m_Drawings; item != NULL; item = nextItem )
|
||||
{
|
||||
nextItem = item->Next();
|
||||
|
||||
if( item->m_Selected == 0 )
|
||||
continue;
|
||||
|
||||
RemoveDrawItem( item );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LIB_COMPONENT::CopySelectedItems( const wxPoint& offset )
|
||||
{
|
||||
LIB_DRAW_ITEM* item;
|
||||
|
||||
for( item = m_Drawings; item != NULL; item = item->Next() )
|
||||
{
|
||||
if( item->m_Selected == 0 )
|
||||
continue;
|
||||
|
||||
item->m_Selected = 0;
|
||||
LIB_DRAW_ITEM* newItem = item->GenCopy();
|
||||
newItem->m_Selected = IS_SELECTED;
|
||||
newItem->SetNext( m_Drawings );
|
||||
m_Drawings = newItem;
|
||||
}
|
||||
|
||||
MoveSelectedItems( offset );
|
||||
SortDrawItems();
|
||||
}
|
||||
|
|
|
@ -53,6 +53,8 @@ public:
|
|||
public:
|
||||
CMP_LIB_ENTRY( LibrEntryType CmpType, const wxString& name,
|
||||
CMP_LIBRARY* lib = NULL );
|
||||
CMP_LIB_ENTRY( const CMP_LIB_ENTRY& entry, CMP_LIBRARY* lib = NULL );
|
||||
|
||||
virtual ~CMP_LIB_ENTRY();
|
||||
|
||||
virtual wxString GetClass() const
|
||||
|
@ -123,7 +125,7 @@ public:
|
|||
bool m_DrawPinNum;
|
||||
bool m_DrawPinName;
|
||||
DLIST<LibDrawField> m_Fields; /* Auxiliary Field list (id >= 2 ) */
|
||||
LibEDA_BaseStruct* m_Drawings; /* How to draw this part */
|
||||
LIB_DRAW_ITEM * m_Drawings; /* How to draw this part */
|
||||
long m_LastDate; // Last change Date
|
||||
|
||||
public:
|
||||
|
@ -134,6 +136,8 @@ public:
|
|||
|
||||
|
||||
LIB_COMPONENT( const wxString& name, CMP_LIBRARY* lib = NULL );
|
||||
LIB_COMPONENT( const LIB_COMPONENT& component, CMP_LIBRARY* lib = NULL );
|
||||
|
||||
~LIB_COMPONENT();
|
||||
|
||||
EDA_Rect GetBoundaryBox( int Unit, int Convert );
|
||||
|
@ -207,7 +211,7 @@ public:
|
|||
* @param panel - Panel to remove part from.
|
||||
* @param dc - Device context to remove part from.
|
||||
*/
|
||||
void RemoveDrawItem( LibEDA_BaseStruct* item,
|
||||
void RemoveDrawItem( LIB_DRAW_ITEM* item,
|
||||
WinEDA_DrawPanel* panel = NULL,
|
||||
wxDC* dc = NULL );
|
||||
|
||||
|
@ -244,6 +248,52 @@ public:
|
|||
wxASSERT( name != NULL );
|
||||
return m_AliasList.Index( name ) != wxNOT_FOUND;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks all draw objects of component to see if they are with block.
|
||||
*
|
||||
* Use this method to mark draw objects as selected during block
|
||||
* functions.
|
||||
*
|
||||
* @param rect - The bounding rectangle to test in draw items are inside.
|
||||
* @param unit - The current unit number to test against.
|
||||
* @param convert - Are the draw items being selected a conversion.
|
||||
* @param editPinByPin - Used to ignore pin selections when in edit pin
|
||||
* by pin mode is enabled.
|
||||
*
|
||||
* @return int - The number of draw object found inside the block select
|
||||
* rectangle.
|
||||
*/
|
||||
int SelectItems( EDA_Rect& rect, int unit, int convert,
|
||||
bool editPinByPin );
|
||||
|
||||
/**
|
||||
* Clears all the draw items marked by a block select.
|
||||
*/
|
||||
void ClearSelectedItems( void );
|
||||
|
||||
/**
|
||||
* Deletes the select draw items marked by a block select.
|
||||
*
|
||||
* The name and reference field will not be deleted. They are the
|
||||
* minimum drawing items required for any component. Thier properties
|
||||
* can be changed but the cannot be removed.
|
||||
*/
|
||||
void DeleteSelectedItems( void );
|
||||
|
||||
/**
|
||||
* Move the selected draw items marked by a block select.
|
||||
*/
|
||||
void MoveSelectedItems( const wxPoint& offset );
|
||||
|
||||
/**
|
||||
* Make a copy of the selected draw items marked by a block select.
|
||||
*
|
||||
* Fields are not copied. Only component body items are copied.
|
||||
* Copying fields would result in duplicate fields which does not
|
||||
* make sense in this context.
|
||||
*/
|
||||
void CopySelectedItems( const wxPoint& offset );
|
||||
};
|
||||
|
||||
|
||||
|
@ -264,7 +314,8 @@ protected:
|
|||
|
||||
public:
|
||||
LIB_ALIAS( const wxString& name, LIB_COMPONENT* root,
|
||||
CMP_LIBRARY* lib = NULL );
|
||||
CMP_LIBRARY* lib = NULL );
|
||||
LIB_ALIAS( const LIB_ALIAS& alias, CMP_LIBRARY* lib = NULL );
|
||||
~LIB_ALIAS();
|
||||
|
||||
virtual wxString GetClass() const
|
||||
|
|
|
@ -10,10 +10,9 @@
|
|||
#include "kicad_string.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
#include <wx/tokenzr.h>
|
||||
#include <wx/stream.h>
|
||||
|
@ -39,19 +38,35 @@
|
|||
* others = free fields
|
||||
*/
|
||||
LibDrawField::LibDrawField(LIB_COMPONENT * aParent, int idfield ) :
|
||||
LibEDA_BaseStruct( COMPONENT_FIELD_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_FIELD_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_FieldId = idfield;
|
||||
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT;
|
||||
}
|
||||
|
||||
LibDrawField::LibDrawField( int idfield ) :
|
||||
LibEDA_BaseStruct( COMPONENT_FIELD_DRAW_TYPE, NULL )
|
||||
LIB_DRAW_ITEM( COMPONENT_FIELD_DRAW_TYPE, NULL )
|
||||
{
|
||||
m_FieldId = idfield;
|
||||
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT;
|
||||
}
|
||||
|
||||
LibDrawField::LibDrawField( const LibDrawField& field ) :
|
||||
LIB_DRAW_ITEM( field )
|
||||
{
|
||||
m_Pos = field.m_Pos;
|
||||
m_Size = field.m_Size;
|
||||
m_Width = field.m_Width;
|
||||
m_Orient = field.m_Orient;
|
||||
m_Attributs = field.m_Attributs;
|
||||
m_Text = field.m_Text;
|
||||
m_Name = field.m_Name;
|
||||
m_HJustify = field.m_HJustify;
|
||||
m_VJustify = field.m_VJustify;
|
||||
m_Italic = field.m_Italic;
|
||||
m_Bold = field.m_Bold;
|
||||
}
|
||||
|
||||
|
||||
LibDrawField::~LibDrawField()
|
||||
{
|
||||
|
@ -358,13 +373,13 @@ bool LibDrawField::HitTest( wxPoint aPosRef, int aThreshold,
|
|||
}
|
||||
|
||||
// Creation et Duplication d'un field
|
||||
LibEDA_BaseStruct* LibDrawField::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawField::DoGenCopy()
|
||||
{
|
||||
LibDrawField* newfield = new LibDrawField( m_FieldId );
|
||||
|
||||
Copy( newfield );
|
||||
|
||||
return (LibEDA_BaseStruct*) newfield;
|
||||
return (LIB_DRAW_ITEM*) newfield;
|
||||
}
|
||||
|
||||
|
||||
|
@ -389,7 +404,7 @@ void LibDrawField::Copy( LibDrawField* Target ) const
|
|||
}
|
||||
|
||||
|
||||
bool LibDrawField::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawField::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_FIELD_DRAW_TYPE );
|
||||
|
||||
|
@ -416,13 +431,19 @@ bool LibDrawField::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawField::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
m_Pos = newPosition;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* If the field is the reference, return reference like schematic,
|
||||
* i.e U -> U? or U?A or the field text for others
|
||||
*
|
||||
* @fixme This should be handled by the field object.
|
||||
*/
|
||||
wxString LibDrawField::GetFullText( void )
|
||||
wxString LibDrawField::GetFullText( int unit )
|
||||
{
|
||||
if( m_FieldId != REFERENCE )
|
||||
return m_Text;
|
||||
|
@ -433,11 +454,11 @@ wxString LibDrawField::GetFullText( void )
|
|||
{
|
||||
#if defined(KICAD_GOST)
|
||||
text.Printf( wxT( "%s?.%c" ),
|
||||
m_Text.GetData(), CurrentUnit + '1' - 1 );
|
||||
m_Text.GetData(), unit + '1' - 1 );
|
||||
#else
|
||||
|
||||
text.Printf( wxT( "%s?%c" ),
|
||||
m_Text.GetData(), CurrentUnit + 'A' - 1 );
|
||||
m_Text.GetData(), unit + 'A' - 1 );
|
||||
#endif
|
||||
}
|
||||
else
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
#define CLASS_LIBENTRY_FIELDS_H
|
||||
|
||||
|
||||
#include "classes_body_items.h"
|
||||
|
||||
|
||||
/* Fields , same as component fields.
|
||||
* can be defined in libraries (mandatory for ref and value, ca be useful for
|
||||
* footprints)
|
||||
|
@ -15,7 +18,7 @@
|
|||
* default value in schematic
|
||||
*/
|
||||
|
||||
class LibDrawField : public LibEDA_BaseStruct,
|
||||
class LibDrawField : public LIB_DRAW_ITEM,
|
||||
public EDA_TextStruct
|
||||
{
|
||||
public:
|
||||
|
@ -36,6 +39,7 @@ public:
|
|||
|
||||
LibDrawField( int idfield = 2 );
|
||||
LibDrawField( LIB_COMPONENT * aParent, int idfield = 2 );
|
||||
LibDrawField( const LibDrawField& field );
|
||||
~LibDrawField();
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
@ -103,13 +107,26 @@ public:
|
|||
m_Parent = field.m_Parent;
|
||||
}
|
||||
|
||||
wxString GetFullText( void );
|
||||
/**
|
||||
* Return the text of a field.
|
||||
*
|
||||
* If the field is the reference field, the unit number is used to
|
||||
* create a pseudo reference text. If the base reference field is U,
|
||||
* the string U?A will be returned for unit = 1.
|
||||
*
|
||||
* @param unit - The package unit number. Only effects reference field.
|
||||
*
|
||||
* @return wxString - Field text.
|
||||
*/
|
||||
wxString GetFullText( int unit = 1 );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
#endif // CLASS_LIBENTRY_FIELDS_H
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include "eda_doc.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
@ -197,7 +196,7 @@ LIB_COMPONENT* CMP_LIBRARY::AddComponent( LIB_COMPONENT* cmp )
|
|||
{
|
||||
wxASSERT( cmp != NULL );
|
||||
|
||||
LIB_COMPONENT* newCmp = CopyLibEntryStruct( cmp );
|
||||
LIB_COMPONENT* newCmp = new LIB_COMPONENT( *cmp, this );
|
||||
|
||||
if( newCmp == NULL )
|
||||
return NULL;
|
||||
|
@ -387,7 +386,7 @@ in library <%s>." ),
|
|||
|
||||
RemoveEntry( oldComponent->GetName() );
|
||||
|
||||
LIB_COMPONENT* newCmp = CopyLibEntryStruct( newComponent );
|
||||
LIB_COMPONENT* newCmp = new LIB_COMPONENT( *newComponent, this );
|
||||
|
||||
if( newCmp == NULL )
|
||||
return NULL;
|
||||
|
@ -706,13 +705,12 @@ document file." ),
|
|||
}
|
||||
|
||||
|
||||
bool CMP_LIBRARY::Save( const wxString& FullFileName )
|
||||
bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat )
|
||||
{
|
||||
FILE* libfile, *docfile;
|
||||
FILE* libfile;
|
||||
wxString msg;
|
||||
wxFileName libFileName = FullFileName;
|
||||
wxFileName backupFileName = FullFileName;
|
||||
wxFileName docFileName = FullFileName;
|
||||
|
||||
/* the old .lib file is renamed .bak */
|
||||
if( libFileName.FileExists() )
|
||||
|
@ -723,24 +721,8 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName )
|
|||
if( !wxRenameFile( libFileName.GetFullPath(),
|
||||
backupFileName.GetFullPath() ) )
|
||||
{
|
||||
msg = wxT( "Failed to rename old lib file " ) +
|
||||
backupFileName.GetFullPath();
|
||||
DisplayError( NULL, msg );
|
||||
}
|
||||
}
|
||||
|
||||
docFileName.SetExt( DOC_EXT );
|
||||
/* L'ancien fichier doc lib est renomme en .bck */
|
||||
if( wxFileExists( docFileName.GetFullPath() ) )
|
||||
{
|
||||
backupFileName = docFileName;
|
||||
backupFileName.SetExt( wxT( "bck" ) );
|
||||
wxRemoveFile( backupFileName.GetFullPath() );
|
||||
|
||||
if( !wxRenameFile( docFileName.GetFullPath(),
|
||||
backupFileName.GetFullPath() ) )
|
||||
{
|
||||
msg = wxT( "Failed to save old doc lib file " ) +
|
||||
libFileName.MakeAbsolute();
|
||||
msg = wxT( "Failed to rename old component library file " ) +
|
||||
backupFileName.GetFullPath();
|
||||
DisplayError( NULL, msg );
|
||||
}
|
||||
|
@ -750,31 +732,22 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName )
|
|||
|
||||
if( libfile == NULL )
|
||||
{
|
||||
libFileName.MakeAbsolute();
|
||||
msg = wxT( "Failed to create component library file " ) +
|
||||
libFileName.GetFullPath();
|
||||
DisplayError( NULL, msg );
|
||||
return false;
|
||||
}
|
||||
|
||||
docfile = wxFopen( docFileName.GetFullPath(), wxT( "wt" ) );
|
||||
|
||||
if( docfile == NULL )
|
||||
{
|
||||
msg = wxT( "Failed to create component document library file " ) +
|
||||
docFileName.GetFullPath();
|
||||
DisplayError( NULL, msg );
|
||||
}
|
||||
|
||||
m_IsModified = false;
|
||||
|
||||
/* Creation de l'entete de la librairie */
|
||||
m_TimeStamp = GetTimeStamp();
|
||||
SaveHeader( libfile );
|
||||
|
||||
/* Sauvegarde des composant: */
|
||||
char Line[256];
|
||||
fprintf( docfile, "%s Date: %s\n", DOCFILE_IDENT,
|
||||
DateAndTime( Line ) );
|
||||
if( !SaveHeader( libfile ) )
|
||||
{
|
||||
fclose( libfile );
|
||||
return false;
|
||||
}
|
||||
|
||||
bool success = true;
|
||||
|
||||
|
@ -783,21 +756,80 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName )
|
|||
if ( entry.Type == ROOT )
|
||||
{
|
||||
LIB_COMPONENT* component = ( LIB_COMPONENT* ) &entry;
|
||||
if ( ! component->Save( libfile ) )
|
||||
success = false;
|
||||
}
|
||||
if ( docfile )
|
||||
{
|
||||
if ( ! entry.SaveDoc( docfile ) )
|
||||
if ( !component->Save( libfile ) )
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
|
||||
fprintf( libfile, "#\n#End Library\n" );
|
||||
if ( docfile )
|
||||
fprintf( docfile, "#\n#End Doc Library\n" );
|
||||
if( fprintf( libfile, "#\n#End Library\n" ) < 0 )
|
||||
success = false;
|
||||
|
||||
fclose( libfile );
|
||||
|
||||
if( USE_OLD_DOC_FILE_FORMAT( m_verMajor, m_verMinor ) && oldDocFormat )
|
||||
success = SaveDocFile( FullFileName );
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName )
|
||||
{
|
||||
FILE* docfile;
|
||||
wxString msg;
|
||||
wxFileName backupFileName = FullFileName;
|
||||
wxFileName docFileName = FullFileName;
|
||||
|
||||
docFileName.SetExt( DOC_EXT );
|
||||
|
||||
/* Save current doc file as .bck */
|
||||
if( docFileName.FileExists() )
|
||||
{
|
||||
backupFileName = docFileName;
|
||||
backupFileName.SetExt( wxT( "bck" ) );
|
||||
wxRemoveFile( backupFileName.GetFullPath() );
|
||||
|
||||
if( !wxRenameFile( docFileName.GetFullPath(),
|
||||
backupFileName.GetFullPath() ) )
|
||||
{
|
||||
msg = wxT( "Failed to save old library document file " ) +
|
||||
backupFileName.GetFullPath();
|
||||
DisplayError( NULL, msg );
|
||||
}
|
||||
}
|
||||
|
||||
docfile = wxFopen( docFileName.GetFullPath(), wxT( "wt" ) );
|
||||
|
||||
if( docfile == NULL )
|
||||
{
|
||||
docFileName.MakeAbsolute();
|
||||
msg = wxT( "Failed to create component document library file " ) +
|
||||
docFileName.GetFullPath();
|
||||
DisplayError( NULL, msg );
|
||||
return false;
|
||||
}
|
||||
|
||||
char Line[256];
|
||||
if( fprintf( docfile, "%s Date: %s\n", DOCFILE_IDENT,
|
||||
DateAndTime( Line ) ) < 0 )
|
||||
{
|
||||
fclose( docfile );
|
||||
return false;
|
||||
}
|
||||
|
||||
bool success = true;
|
||||
|
||||
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries )
|
||||
{
|
||||
if ( !entry.SaveDoc( docfile ) )
|
||||
success = false;
|
||||
}
|
||||
|
||||
if ( fprintf( docfile, "#\n#End Doc Library\n" ) < 0 )
|
||||
success = false;
|
||||
|
||||
fclose( docfile );
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
@ -805,7 +837,7 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName )
|
|||
bool CMP_LIBRARY::SaveHeader( FILE* file )
|
||||
{
|
||||
char BufLine[1024];
|
||||
bool succes = false;
|
||||
bool succes = true;
|
||||
|
||||
DateAndTime( BufLine );
|
||||
if( fprintf( file, "%s %d.%d Date: %s\n", LIBFILE_IDENT,
|
||||
|
@ -844,7 +876,8 @@ CMP_LIBRARY* CMP_LIBRARY::LoadLibrary( const wxFileName& fileName,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
lib->LoadDocs( errMsg );
|
||||
if( USE_OLD_DOC_FILE_FORMAT( lib->m_verMajor, lib->m_verMinor ) )
|
||||
lib->LoadDocs( errMsg );
|
||||
|
||||
return lib;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/***********************************/
|
||||
/* Headers for library definition */
|
||||
/***********************************/
|
||||
/*********************************************/
|
||||
/* Headers for component library definition */
|
||||
/*********************************************/
|
||||
|
||||
#ifndef CLASS_LIBRARY_H
|
||||
#define CLASS_LIBRARY_H
|
||||
|
@ -8,6 +8,37 @@
|
|||
|
||||
#include "class_libentry.h"
|
||||
|
||||
/*
|
||||
* Component Library version and file header macros.
|
||||
*/
|
||||
#define LIB_VERSION_MAJOR 2
|
||||
#define LIB_VERSION_MINOR 3
|
||||
|
||||
/* Must be the first line of component library (.lib) files. */
|
||||
#define LIBFILE_IDENT "EESchema-LIBRARY Version"
|
||||
|
||||
#define LIB_VERSION( major, minor ) ( major * 100 + minor )
|
||||
|
||||
#define IS_LIB_CURRENT_VERSION( major, minor ) \
|
||||
( \
|
||||
LIB_VERSION( major1, minor1 ) == \
|
||||
LIB_VERSION( LIB_VERSION_MAJOR, LIB_VERSION_MINOR) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Library versions 2.3 and lower use the old separate library (.lib) and
|
||||
* document (.dcm) files. Component libraries after 2.3 merged the library
|
||||
* and document files into a single library file. This macro checks if the
|
||||
* library version supports the old format
|
||||
*/
|
||||
#define USE_OLD_DOC_FILE_FORMAT( major, minor ) \
|
||||
( LIB_VERSION( major, minor ) <= LIB_VERSION( 2, 3 ) )
|
||||
|
||||
/* Must be the first line of component library document (.dcm) files. */
|
||||
#define DOCFILE_IDENT "EESchema-DOCLIB Version 2.0"
|
||||
|
||||
#define DOC_EXT wxT( "dcm" )
|
||||
|
||||
|
||||
/* Helpers for creating a list of component libraries. */
|
||||
class CMP_LIBRARY;
|
||||
|
@ -43,17 +74,35 @@ public:
|
|||
/**
|
||||
* Save library to file.
|
||||
*
|
||||
* Two files are created. The component objects are save as component
|
||||
* library (*.lib) files. The alias objects are save as document
|
||||
* definition (*.dcm) files. If the component library already exists,
|
||||
* it is backup up in file *.bak. If the document definition file
|
||||
* already exists, it is backed up in file *.bck.
|
||||
* Prior to component library version 3.0, two files were created. The
|
||||
* component objects are wer as component library (*.lib) files. The
|
||||
* library entry ojbect document strings were save in library document
|
||||
* definition (*.dcm) files. After version component library version 3.0,
|
||||
* the document string information is saved as part of the library file.
|
||||
* Saving separate document is maintained for backwards compatability.
|
||||
* Please note that this behavior may change in the future. If the
|
||||
* component library already exists, it is backup up in file *.bak.
|
||||
*
|
||||
* @param aFullFileName - The library filename with path.
|
||||
* @param oldDocFormat - Save the document information in a separate
|
||||
* file if true. The default is to save as the
|
||||
* current library file format.
|
||||
*
|
||||
* @return bool - true if success writing else false.
|
||||
*/
|
||||
bool Save( const wxString& aFullFileName, bool oldDocFormat = false );
|
||||
|
||||
/**
|
||||
* Save library document information to file.
|
||||
*
|
||||
* If the document definition file* already exists, it is backed up in
|
||||
* file *.bck.
|
||||
*
|
||||
* @param aFullFileName - The library filename with path.
|
||||
*
|
||||
* @return bool - true if success writing else false.
|
||||
*/
|
||||
bool Save( const wxString& aFullFileName );
|
||||
bool SaveDocFile( const wxString& FullFileName );
|
||||
|
||||
/**
|
||||
* Load library from file.
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "fctsys.h"
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "class_netlist_object.h"
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
#include "plot_common.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
const wxChar* MsgPinElectricType[] =
|
||||
|
@ -34,7 +34,7 @@ const wxChar* MsgPinElectricType[] =
|
|||
};
|
||||
|
||||
LibDrawPin::LibDrawPin(LIB_COMPONENT * aParent) :
|
||||
LibEDA_BaseStruct( COMPONENT_PIN_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_PIN_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_PinLen = 300; /* default Pin len */
|
||||
m_Orient = PIN_RIGHT; /* Pin oprient: Up, Down, Left, Right */
|
||||
|
@ -53,6 +53,26 @@ LibDrawPin::LibDrawPin(LIB_COMPONENT * aParent) :
|
|||
}
|
||||
|
||||
|
||||
LibDrawPin::LibDrawPin( const LibDrawPin& pin ) : LIB_DRAW_ITEM( pin )
|
||||
{
|
||||
m_Pos = pin.m_Pos;
|
||||
m_PinLen = pin.m_PinLen;
|
||||
m_Orient = pin.m_Orient;
|
||||
m_PinShape = pin.m_PinShape;
|
||||
m_PinType = pin.m_PinType;
|
||||
m_Attributs = pin.m_Attributs;
|
||||
m_PinNum = pin.m_PinNum;
|
||||
m_PinNumSize = pin.m_PinNumSize;
|
||||
m_PinNameSize = pin.m_PinNameSize;
|
||||
m_PinNumShapeOpt = pin.m_PinNumShapeOpt;
|
||||
m_PinNameShapeOpt = pin.m_PinNameShapeOpt;
|
||||
m_PinNumPositionOpt = pin.m_PinNumPositionOpt;
|
||||
m_PinNamePositionOpt = pin.m_PinNamePositionOpt;
|
||||
m_Width = pin.m_Width;
|
||||
m_PinName = pin.m_PinName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function HitTest
|
||||
* tests if the given wxPoint is within the bounds of this object.
|
||||
|
@ -1035,7 +1055,7 @@ void LibDrawPin::SetPinNumFromString( wxString& buffer )
|
|||
|
||||
|
||||
/*************************************/
|
||||
LibEDA_BaseStruct* LibDrawPin::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawPin::DoGenCopy()
|
||||
/*************************************/
|
||||
{
|
||||
LibDrawPin* newpin = new LibDrawPin( GetParent() );
|
||||
|
@ -1059,11 +1079,11 @@ LibEDA_BaseStruct* LibDrawPin::DoGenCopy()
|
|||
newpin->m_Width = m_Width;
|
||||
newpin->m_PinName = m_PinName;
|
||||
|
||||
return (LibEDA_BaseStruct*) newpin;
|
||||
return (LIB_DRAW_ITEM*) newpin;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawPin::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawPin::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_PIN_DRAW_TYPE );
|
||||
|
||||
|
@ -1087,6 +1107,12 @@ bool LibDrawPin::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawPin::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
m_Pos = newPosition;
|
||||
}
|
||||
|
||||
|
||||
/** Function LibDrawPin::DisplayInfo
|
||||
* Displays info (pin num and name, orientation ...
|
||||
* on the Info window
|
||||
|
@ -1096,7 +1122,7 @@ void LibDrawPin::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
wxString Text;
|
||||
int ii;
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
/* Affichage du nom */
|
||||
frame->MsgPanel->Affiche_1_Parametre( 30, _( "PinName" ), m_PinName,
|
||||
|
|
|
@ -16,13 +16,12 @@
|
|||
#include "base_struct.h"
|
||||
#include "gr_basic.h"
|
||||
#include "drawtxt.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
SCH_CMP_FIELD::SCH_CMP_FIELD( const wxPoint& aPos, int aFieldId,
|
||||
|
|
|
@ -6,12 +6,12 @@
|
|||
#include "class_drawpanel.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include <wx/tokenzr.h>
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
#include "common.h"
|
||||
#include "eeschema_id.h"
|
||||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -8,9 +8,7 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
/* used to calculate the pen size from default value
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include "drawtxt.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
#include "bezier_curves.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "classes_body_items.h"
|
||||
|
||||
|
||||
static int fill_tab[3] = { 'N', 'F', 'f' };
|
||||
|
@ -22,8 +22,7 @@ static int fill_tab[3] = { 'N', 'F', 'f' };
|
|||
|
||||
|
||||
/* Base class (abstract) for components bodies items */
|
||||
LibEDA_BaseStruct::LibEDA_BaseStruct( KICAD_T struct_type,
|
||||
LIB_COMPONENT* aParent ) :
|
||||
LIB_DRAW_ITEM::LIB_DRAW_ITEM( KICAD_T struct_type, LIB_COMPONENT* aParent ) :
|
||||
EDA_BaseStruct( struct_type )
|
||||
{
|
||||
m_Unit = 0; /* Unit identification (for multi part per package)
|
||||
|
@ -31,11 +30,22 @@ LibEDA_BaseStruct::LibEDA_BaseStruct( KICAD_T struct_type,
|
|||
m_Convert = 0; /* Shape identification (for parts which have a convert
|
||||
* shape) 0 if the item is common to all shapes */
|
||||
m_Fill = NO_FILL;
|
||||
m_Parent = aParent;
|
||||
m_Parent = (EDA_BaseStruct*) aParent;
|
||||
m_typeName = _( "Undefined" );
|
||||
}
|
||||
|
||||
|
||||
LIB_DRAW_ITEM::LIB_DRAW_ITEM( const LIB_DRAW_ITEM& item ) :
|
||||
EDA_BaseStruct( item )
|
||||
{
|
||||
m_Unit = item.m_Unit;
|
||||
m_Convert = item.m_Convert;
|
||||
m_Fill = item.m_Fill;
|
||||
m_Parent = item.m_Parent;
|
||||
m_typeName = item.m_typeName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update the message panel information with the drawing information.
|
||||
*
|
||||
|
@ -43,7 +53,7 @@ LibEDA_BaseStruct::LibEDA_BaseStruct( KICAD_T struct_type,
|
|||
* all library items. Call the base class from the derived class or the
|
||||
* common information will not be updated in the message panel.
|
||||
*/
|
||||
void LibEDA_BaseStruct::DisplayInfo( WinEDA_DrawFrame* frame )
|
||||
void LIB_DRAW_ITEM::DisplayInfo( WinEDA_DrawFrame* frame )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
|
@ -70,7 +80,7 @@ void LibEDA_BaseStruct::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
}
|
||||
|
||||
|
||||
bool LibEDA_BaseStruct::operator==( const LibEDA_BaseStruct& other ) const
|
||||
bool LIB_DRAW_ITEM::operator==( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
return ( ( Type() == other.Type() )
|
||||
&& ( m_Unit == other.m_Unit )
|
||||
|
@ -84,7 +94,7 @@ bool LibEDA_BaseStruct::operator==( const LibEDA_BaseStruct& other ) const
|
|||
/**********************/
|
||||
|
||||
LibDrawArc::LibDrawArc( LIB_COMPONENT* aParent ) :
|
||||
LibEDA_BaseStruct( COMPONENT_ARC_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_ARC_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_Radius = 0;
|
||||
m_t1 = 0;
|
||||
|
@ -95,6 +105,19 @@ LibDrawArc::LibDrawArc( LIB_COMPONENT* aParent ) :
|
|||
}
|
||||
|
||||
|
||||
LibDrawArc::LibDrawArc( const LibDrawArc& arc ) : LIB_DRAW_ITEM( arc )
|
||||
{
|
||||
m_Radius = arc.m_Radius;
|
||||
m_t1 = arc.m_t1;
|
||||
m_t2 = arc.m_t2;
|
||||
m_Width = arc.m_Width;
|
||||
m_Fill = arc.m_Fill;
|
||||
m_Pos = arc.m_Pos;
|
||||
m_ArcStart = arc.m_ArcStart;
|
||||
m_ArcEnd = arc.m_ArcEnd;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* format:
|
||||
* A centre_posx centre_posy rayon start_angle end_angle unit convert
|
||||
|
@ -233,7 +256,7 @@ bool LibDrawArc::HitTest( wxPoint aRefPoint, int aThreshold,
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawArc::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawArc::DoGenCopy()
|
||||
{
|
||||
LibDrawArc* newitem = new LibDrawArc( GetParent() );
|
||||
|
||||
|
@ -249,11 +272,11 @@ LibEDA_BaseStruct* LibDrawArc::DoGenCopy()
|
|||
newitem->m_Flags = m_Flags;
|
||||
newitem->m_Fill = m_Fill;
|
||||
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawArc::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawArc::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_ARC_DRAW_TYPE );
|
||||
|
||||
|
@ -279,6 +302,15 @@ bool LibDrawArc::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawArc::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
wxPoint offset = newPosition - m_Pos;
|
||||
m_Pos = newPosition;
|
||||
m_ArcStart += offset;
|
||||
m_ArcEnd += offset;
|
||||
}
|
||||
|
||||
|
||||
/** Function GetPenSize
|
||||
* @return the size of the "pen" that be used to draw or plot this item
|
||||
*/
|
||||
|
@ -419,7 +451,7 @@ void LibDrawArc::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
wxString msg;
|
||||
EDA_Rect bBox = GetBoundingBox();
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
@ -438,7 +470,7 @@ void LibDrawArc::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
/*************************/
|
||||
|
||||
LibDrawCircle::LibDrawCircle( LIB_COMPONENT* aParent ) :
|
||||
LibEDA_BaseStruct( COMPONENT_CIRCLE_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_CIRCLE_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_Radius = 0;
|
||||
m_Fill = NO_FILL;
|
||||
|
@ -446,6 +478,15 @@ LibDrawCircle::LibDrawCircle( LIB_COMPONENT* aParent ) :
|
|||
}
|
||||
|
||||
|
||||
LibDrawCircle::LibDrawCircle( const LibDrawCircle& circle ) :
|
||||
LIB_DRAW_ITEM( circle )
|
||||
{
|
||||
m_Pos = circle.m_Pos;
|
||||
m_Radius = circle.m_Radius;
|
||||
m_Fill = circle.m_Fill;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawCircle::Save( FILE* ExportFile ) const
|
||||
{
|
||||
if( fprintf( ExportFile, "C %d %d %d %d %d %d %c\n", m_Pos.x, m_Pos.y,
|
||||
|
@ -519,7 +560,7 @@ bool LibDrawCircle::HitTest( wxPoint aPosRef, int aThreshold,
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawCircle::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawCircle::DoGenCopy()
|
||||
{
|
||||
LibDrawCircle* newitem = new LibDrawCircle( GetParent() );
|
||||
|
||||
|
@ -531,11 +572,11 @@ LibEDA_BaseStruct* LibDrawCircle::DoGenCopy()
|
|||
newitem->m_Flags = m_Flags;
|
||||
newitem->m_Fill = m_Fill;
|
||||
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawCircle::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawCircle::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_CIRCLE_DRAW_TYPE );
|
||||
|
||||
|
@ -561,6 +602,12 @@ bool LibDrawCircle::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawCircle::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
m_Pos = newPosition;
|
||||
}
|
||||
|
||||
|
||||
/** Function GetPenSize
|
||||
* @return the size of the "pen" that be used to draw or plot this item
|
||||
*/
|
||||
|
@ -623,7 +670,7 @@ void LibDrawCircle::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
wxString msg;
|
||||
EDA_Rect bBox = GetBoundingBox();
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
@ -646,7 +693,7 @@ void LibDrawCircle::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
/*************************/
|
||||
|
||||
LibDrawSquare::LibDrawSquare( LIB_COMPONENT* aParent ) :
|
||||
LibEDA_BaseStruct( COMPONENT_RECT_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_RECT_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_Width = 0;
|
||||
m_Fill = NO_FILL;
|
||||
|
@ -654,6 +701,16 @@ LibDrawSquare::LibDrawSquare( LIB_COMPONENT* aParent ) :
|
|||
}
|
||||
|
||||
|
||||
LibDrawSquare::LibDrawSquare( const LibDrawSquare& rect ) :
|
||||
LIB_DRAW_ITEM( rect )
|
||||
{
|
||||
m_Pos = rect.m_Pos;
|
||||
m_End = rect.m_End;
|
||||
m_Width = rect.m_Width;
|
||||
m_Fill = rect.m_Fill;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawSquare::Save( FILE* ExportFile ) const
|
||||
{
|
||||
if( fprintf( ExportFile, "S %d %d %d %d %d %d %d %c\n", m_Pos.x, m_Pos.y,
|
||||
|
@ -689,7 +746,7 @@ bool LibDrawSquare::Load( char* line, wxString& errorMsg )
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawSquare::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawSquare::DoGenCopy()
|
||||
{
|
||||
LibDrawSquare* newitem = new LibDrawSquare( GetParent() );
|
||||
|
||||
|
@ -701,11 +758,11 @@ LibEDA_BaseStruct* LibDrawSquare::DoGenCopy()
|
|||
newitem->m_Flags = m_Flags;
|
||||
newitem->m_Fill = m_Fill;
|
||||
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawSquare::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawSquare::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_RECT_DRAW_TYPE );
|
||||
|
||||
|
@ -728,6 +785,14 @@ bool LibDrawSquare::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawSquare::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
wxPoint size = m_End - m_Pos;
|
||||
m_Pos = newPosition;
|
||||
m_End = newPosition + size;
|
||||
}
|
||||
|
||||
|
||||
/** Function GetPenSize
|
||||
* @return the size of the "pen" that be used to draw or plot this item
|
||||
*/
|
||||
|
@ -778,7 +843,7 @@ void LibDrawSquare::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
{
|
||||
wxString msg;
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
@ -864,13 +929,22 @@ bool LibDrawSquare::HitTest( wxPoint aRefPoint, int aThreshold,
|
|||
/** class LibDrawSegment **/
|
||||
/**************************/
|
||||
LibDrawSegment::LibDrawSegment( LIB_COMPONENT* aParent ) :
|
||||
LibEDA_BaseStruct( COMPONENT_LINE_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_LINE_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_Width = 0;
|
||||
m_typeName = _( "Segment" );
|
||||
}
|
||||
|
||||
|
||||
LibDrawSegment::LibDrawSegment( const LibDrawSegment& segment ) :
|
||||
LIB_DRAW_ITEM( segment )
|
||||
{
|
||||
m_Pos = segment.m_Pos;
|
||||
m_End = segment.m_End;
|
||||
m_Width = segment.m_Width;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawSegment::Save( FILE* ExportFile ) const
|
||||
{
|
||||
if( fprintf( ExportFile, "L %d %d %d", m_Unit, m_Convert, m_Width ) )
|
||||
|
@ -886,7 +960,7 @@ bool LibDrawSegment::Load( char* line, wxString& errorMsg )
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawSegment::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawSegment::DoGenCopy()
|
||||
{
|
||||
LibDrawSegment* newitem = new LibDrawSegment( GetParent() );
|
||||
|
||||
|
@ -897,11 +971,11 @@ LibEDA_BaseStruct* LibDrawSegment::DoGenCopy()
|
|||
newitem->m_Convert = m_Convert;
|
||||
newitem->m_Flags = m_Flags;
|
||||
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawSegment::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawSegment::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_LINE_DRAW_TYPE );
|
||||
|
||||
|
@ -924,6 +998,14 @@ bool LibDrawSegment::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawSegment::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
wxPoint offset = newPosition - m_Pos;
|
||||
m_Pos += offset;
|
||||
m_End += offset;
|
||||
}
|
||||
|
||||
|
||||
/** Function GetPenSize
|
||||
* @return the size of the "pen" that be used to draw or plot this item
|
||||
*/
|
||||
|
@ -963,7 +1045,7 @@ void LibDrawSegment::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
wxString msg;
|
||||
EDA_Rect bBox = GetBoundingBox();
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
@ -1016,7 +1098,7 @@ bool LibDrawSegment::HitTest( wxPoint aPosRef, int aThreshold,
|
|||
/** class LibDrawPolyline **/
|
||||
/***************************/
|
||||
LibDrawPolyline::LibDrawPolyline( LIB_COMPONENT* aParent ) :
|
||||
LibEDA_BaseStruct( COMPONENT_POLYLINE_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_POLYLINE_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_Fill = NO_FILL;
|
||||
m_Width = 0;
|
||||
|
@ -1024,6 +1106,15 @@ LibDrawPolyline::LibDrawPolyline( LIB_COMPONENT* aParent ) :
|
|||
}
|
||||
|
||||
|
||||
LibDrawPolyline::LibDrawPolyline( const LibDrawPolyline& polyline ) :
|
||||
LIB_DRAW_ITEM( polyline )
|
||||
{
|
||||
m_PolyPoints = polyline.m_PolyPoints; // Vector copy
|
||||
m_Width = polyline.m_Width;
|
||||
m_Fill = polyline.m_Fill;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawPolyline::Save( FILE* ExportFile ) const
|
||||
{
|
||||
int ccount = GetCornerCount();
|
||||
|
@ -1106,7 +1197,7 @@ bool LibDrawPolyline::Load( char* line, wxString& errorMsg )
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawPolyline::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawPolyline::DoGenCopy()
|
||||
{
|
||||
LibDrawPolyline* newitem = new LibDrawPolyline( GetParent() );
|
||||
|
||||
|
@ -1117,11 +1208,11 @@ LibEDA_BaseStruct* LibDrawPolyline::DoGenCopy()
|
|||
newitem->m_Flags = m_Flags;
|
||||
newitem->m_Fill = m_Fill;
|
||||
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawPolyline::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawPolyline::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_POLYLINE_DRAW_TYPE );
|
||||
|
||||
|
@ -1158,6 +1249,12 @@ bool LibDrawPolyline::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawPolyline::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
DoOffset( newPosition - m_PolyPoints[0] );
|
||||
}
|
||||
|
||||
|
||||
void LibDrawPolyline::AddPoint( const wxPoint& point )
|
||||
{
|
||||
m_PolyPoints.push_back( point );
|
||||
|
@ -1304,7 +1401,7 @@ void LibDrawPolyline::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
wxString msg;
|
||||
EDA_Rect bBox = GetBoundingBox();
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
@ -1321,7 +1418,7 @@ void LibDrawPolyline::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
/** class LibDrawBezier **/
|
||||
/***************************/
|
||||
LibDrawBezier::LibDrawBezier( LIB_COMPONENT* aParent ) :
|
||||
LibEDA_BaseStruct( COMPONENT_BEZIER_DRAW_TYPE, aParent )
|
||||
LIB_DRAW_ITEM( COMPONENT_BEZIER_DRAW_TYPE, aParent )
|
||||
{
|
||||
m_Fill = NO_FILL;
|
||||
m_Width = 0;
|
||||
|
@ -1329,6 +1426,16 @@ LibDrawBezier::LibDrawBezier( LIB_COMPONENT* aParent ) :
|
|||
}
|
||||
|
||||
|
||||
LibDrawBezier::LibDrawBezier( const LibDrawBezier& bezier ) :
|
||||
LIB_DRAW_ITEM( bezier )
|
||||
{
|
||||
m_PolyPoints = bezier.m_PolyPoints;
|
||||
m_BezierPoints = bezier.m_BezierPoints; // Vector copy
|
||||
m_Width = bezier.m_Width;
|
||||
m_Fill = bezier.m_Fill;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawBezier::Save( FILE* ExportFile ) const
|
||||
{
|
||||
int ccount = GetCornerCount();
|
||||
|
@ -1410,7 +1517,7 @@ bool LibDrawBezier::Load( char* line, wxString& errorMsg )
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LibDrawBezier::DoGenCopy()
|
||||
LIB_DRAW_ITEM* LibDrawBezier::DoGenCopy()
|
||||
{
|
||||
LibDrawBezier* newitem = new LibDrawBezier(GetParent());
|
||||
|
||||
|
@ -1420,11 +1527,11 @@ LibEDA_BaseStruct* LibDrawBezier::DoGenCopy()
|
|||
newitem->m_Convert = m_Convert;
|
||||
newitem->m_Flags = m_Flags;
|
||||
newitem->m_Fill = m_Fill;
|
||||
return (LibEDA_BaseStruct*) newitem;
|
||||
return (LIB_DRAW_ITEM*) newitem;
|
||||
}
|
||||
|
||||
|
||||
bool LibDrawBezier::DoCompare( const LibEDA_BaseStruct& other ) const
|
||||
bool LibDrawBezier::DoCompare( const LIB_DRAW_ITEM& other ) const
|
||||
{
|
||||
wxASSERT( other.Type() == COMPONENT_BEZIER_DRAW_TYPE );
|
||||
|
||||
|
@ -1467,6 +1574,12 @@ bool LibDrawBezier::DoTestInside( EDA_Rect& rect )
|
|||
}
|
||||
|
||||
|
||||
void LibDrawBezier::DoMove( const wxPoint& newPosition )
|
||||
{
|
||||
DoOffset( newPosition - m_PolyPoints[0] );
|
||||
}
|
||||
|
||||
|
||||
/** Function GetPenSize
|
||||
* @return the size of the "pen" that be used to draw or plot this item
|
||||
*/
|
||||
|
@ -1597,7 +1710,7 @@ void LibDrawBezier::DisplayInfo( WinEDA_DrawFrame* frame )
|
|||
wxString msg;
|
||||
EDA_Rect bBox = GetBoundingBox();
|
||||
|
||||
LibEDA_BaseStruct::DisplayInfo( frame );
|
||||
LIB_DRAW_ITEM::DisplayInfo( frame );
|
||||
|
||||
msg = ReturnStringFromValue( g_UnitMetric, m_Width,
|
||||
EESCHEMA_INTERNAL_UNIT, true );
|
||||
|
|
|
@ -7,6 +7,11 @@
|
|||
#ifndef CLASSES_BODY_ITEMS_H
|
||||
#define CLASSES_BODY_ITEMS_H
|
||||
|
||||
|
||||
class LIB_COMPONENT;
|
||||
class PLOTTER;
|
||||
|
||||
|
||||
#define TARGET_PIN_DIAM 12 /* Circle diameter drawn at the active end of
|
||||
* pins */
|
||||
|
||||
|
@ -83,11 +88,11 @@ enum DrawPinOrient {
|
|||
/****************************************************************************/
|
||||
|
||||
|
||||
/* class LibEDA_BaseStruct : Basic class for items used in a library component
|
||||
/* class LIB_DRAW_ITEM : Basic class for items used in a library component
|
||||
* (graphic shapes, texts, fields, pins)
|
||||
*/
|
||||
|
||||
class LibEDA_BaseStruct : public EDA_BaseStruct
|
||||
class LIB_DRAW_ITEM : public EDA_BaseStruct
|
||||
{
|
||||
public:
|
||||
int m_Unit; /* Unit identification (for multi part per package)
|
||||
|
@ -99,14 +104,15 @@ public:
|
|||
wxString m_typeName; /* Name of object displayed in the message panel. */
|
||||
|
||||
public:
|
||||
LibEDA_BaseStruct* Next()
|
||||
LIB_DRAW_ITEM* Next()
|
||||
{
|
||||
return (LibEDA_BaseStruct*) Pnext;
|
||||
return (LIB_DRAW_ITEM*) Pnext;
|
||||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct( KICAD_T struct_type, LIB_COMPONENT * aParent );
|
||||
virtual ~LibEDA_BaseStruct() { }
|
||||
LIB_DRAW_ITEM( KICAD_T struct_type, LIB_COMPONENT * aParent );
|
||||
LIB_DRAW_ITEM( const LIB_DRAW_ITEM& item );
|
||||
virtual ~LIB_DRAW_ITEM() { }
|
||||
|
||||
/** Function Draw (virtual pure)
|
||||
* Draw A body item
|
||||
|
@ -182,22 +188,22 @@ public:
|
|||
/**
|
||||
* Make a copy of this draw item.
|
||||
*
|
||||
* Classes derived from LibEDA_BaseStruct must implement DoGenCopy().
|
||||
* Classes derived from LIB_DRAW_ITEM must implement DoGenCopy().
|
||||
* This is just a placeholder for the derived class.
|
||||
*
|
||||
* @return Copy of this draw item.
|
||||
*/
|
||||
LibEDA_BaseStruct* GenCopy() { return DoGenCopy(); }
|
||||
LIB_DRAW_ITEM* GenCopy() { return DoGenCopy(); }
|
||||
|
||||
/**
|
||||
* Test LibEDA_BaseStruct objects for equivalence.
|
||||
* Test LIB_DRAW_ITEM objects for equivalence.
|
||||
*
|
||||
* @param tst - Object to test against.
|
||||
*
|
||||
* @return bool - True if object is identical to this object.
|
||||
*/
|
||||
bool operator==( const LibEDA_BaseStruct& other ) const;
|
||||
bool operator==( const LibEDA_BaseStruct* other ) const
|
||||
bool operator==( const LIB_DRAW_ITEM& other ) const;
|
||||
bool operator==( const LIB_DRAW_ITEM* other ) const
|
||||
{
|
||||
return *this == *other;
|
||||
}
|
||||
|
@ -207,7 +213,7 @@ public:
|
|||
*
|
||||
* @param offset - Cooridinates to offset position.
|
||||
*/
|
||||
void SetOffset( const wxPoint offset ) { DoOffset( offset ); }
|
||||
void SetOffset( const wxPoint& offset ) { DoOffset( offset ); }
|
||||
|
||||
/**
|
||||
* Test if any part of the draw object is inside rectangle bounds.
|
||||
|
@ -221,24 +227,40 @@ public:
|
|||
*/
|
||||
bool Inside( EDA_Rect& rect ) { return DoTestInside( rect ); }
|
||||
|
||||
/**
|
||||
* Move a draw object to a new position.
|
||||
*
|
||||
* The real work is done by the DoMove method for each derived object type.
|
||||
*
|
||||
* @param newPosition - Position to move draw item to.
|
||||
*/
|
||||
void Move( const wxPoint& newPosition ) { DoMove( newPosition ); }
|
||||
|
||||
/**
|
||||
* Return the current draw object start position.
|
||||
*/
|
||||
wxPoint GetPosition( void ) { return DoGetPosition(); }
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy() = 0;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy() = 0;
|
||||
|
||||
/**
|
||||
* Provide the draw object specific comparison.
|
||||
*
|
||||
* This is called by the == operator.
|
||||
*/
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const = 0;
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const = 0;
|
||||
virtual void DoOffset( const wxPoint& offset ) = 0;
|
||||
virtual bool DoTestInside( EDA_Rect& rect ) = 0;
|
||||
virtual void DoMove( const wxPoint& newPosition ) = 0;
|
||||
virtual wxPoint DoGetPosition( void ) = 0;
|
||||
};
|
||||
|
||||
|
||||
/********/
|
||||
/* Pins */
|
||||
/********/
|
||||
class LibDrawPin : public LibEDA_BaseStruct
|
||||
class LibDrawPin : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
int m_PinLen; /* Pin length */
|
||||
|
@ -267,6 +289,7 @@ public:
|
|||
|
||||
public:
|
||||
LibDrawPin(LIB_COMPONENT * aParent);
|
||||
LibDrawPin( const LibDrawPin& pin );
|
||||
~LibDrawPin() { }
|
||||
|
||||
LibDrawPin* Next() const { return (LibDrawPin*) Pnext; }
|
||||
|
@ -358,10 +381,12 @@ public:
|
|||
int aWidth);
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -369,7 +394,7 @@ protected:
|
|||
/* Graphic Body Item: Arc */
|
||||
/**************************/
|
||||
|
||||
class LibDrawArc : public LibEDA_BaseStruct
|
||||
class LibDrawArc : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
int m_Radius;
|
||||
|
@ -383,6 +408,7 @@ public:
|
|||
|
||||
public:
|
||||
LibDrawArc(LIB_COMPONENT * aParent);
|
||||
LibDrawArc( const LibDrawArc& arc );
|
||||
~LibDrawArc() { }
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
@ -430,17 +456,19 @@ public:
|
|||
virtual int GetPenSize( );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Graphic Body Item: Circle */
|
||||
/*****************************/
|
||||
class LibDrawCircle : public LibEDA_BaseStruct
|
||||
class LibDrawCircle : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
int m_Radius;
|
||||
|
@ -450,6 +478,7 @@ public:
|
|||
|
||||
public:
|
||||
LibDrawCircle(LIB_COMPONENT * aParent);
|
||||
LibDrawCircle( const LibDrawCircle& circle );
|
||||
~LibDrawCircle() { }
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
@ -498,10 +527,12 @@ public:
|
|||
virtual void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -511,10 +542,11 @@ protected:
|
|||
/* Fields like Ref , value... are not Text, */
|
||||
/* they are a separate class */
|
||||
/*********************************************/
|
||||
class LibDrawText : public LibEDA_BaseStruct, public EDA_TextStruct
|
||||
class LibDrawText : public LIB_DRAW_ITEM, public EDA_TextStruct
|
||||
{
|
||||
public:
|
||||
LibDrawText(LIB_COMPONENT * aParent);
|
||||
LibDrawText( const LibDrawText& text );
|
||||
~LibDrawText() { }
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
@ -573,17 +605,19 @@ public:
|
|||
virtual void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
|
||||
/********************************/
|
||||
/* Graphic Body Item: Rectangle */
|
||||
/********************************/
|
||||
class LibDrawSquare : public LibEDA_BaseStruct
|
||||
class LibDrawSquare : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
wxPoint m_End; /* Rectangle end point. */
|
||||
|
@ -592,6 +626,7 @@ public:
|
|||
|
||||
public:
|
||||
LibDrawSquare(LIB_COMPONENT * aParent);
|
||||
LibDrawSquare( const LibDrawSquare& rect );
|
||||
~LibDrawSquare() { }
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
@ -640,16 +675,18 @@ public:
|
|||
virtual void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
/**********************************/
|
||||
/* Graphic Body Item: single line */
|
||||
/**********************************/
|
||||
class LibDrawSegment : public LibEDA_BaseStruct
|
||||
class LibDrawSegment : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
wxPoint m_End;
|
||||
|
@ -659,6 +696,7 @@ public:
|
|||
|
||||
public:
|
||||
LibDrawSegment(LIB_COMPONENT * aParent);
|
||||
LibDrawSegment( const LibDrawSegment& segment );
|
||||
~LibDrawSegment() { }
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
@ -706,17 +744,19 @@ public:
|
|||
virtual void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_Pos; }
|
||||
};
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
/* Graphic Body Item: Polygon and polyline (set of lines) */
|
||||
/**********************************************************/
|
||||
class LibDrawPolyline : public LibEDA_BaseStruct
|
||||
class LibDrawPolyline : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
int m_Width; /* Line width */
|
||||
|
@ -724,6 +764,7 @@ public:
|
|||
|
||||
public:
|
||||
LibDrawPolyline(LIB_COMPONENT * aParent);
|
||||
LibDrawPolyline( const LibDrawPolyline& polyline );
|
||||
~LibDrawPolyline() { }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
|
@ -783,16 +824,18 @@ public:
|
|||
virtual void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_PolyPoints[0]; }
|
||||
};
|
||||
|
||||
/**********************************************************/
|
||||
/* Graphic Body Item: Bezier Curve (set of lines) */
|
||||
/**********************************************************/
|
||||
class LibDrawBezier : public LibEDA_BaseStruct
|
||||
class LibDrawBezier : public LIB_DRAW_ITEM
|
||||
{
|
||||
public:
|
||||
int m_Width; /* Line width */
|
||||
|
@ -800,7 +843,8 @@ public:
|
|||
std::vector<wxPoint> m_PolyPoints; // list of points (>= 2)
|
||||
|
||||
public:
|
||||
LibDrawBezier(LIB_COMPONENT * aParent);
|
||||
LibDrawBezier( LIB_COMPONENT * aParent );
|
||||
LibDrawBezier( const LibDrawBezier& bezier );
|
||||
~LibDrawBezier() { }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
|
@ -860,10 +904,12 @@ public:
|
|||
virtual void DisplayInfo( WinEDA_DrawFrame* frame );
|
||||
|
||||
protected:
|
||||
virtual LibEDA_BaseStruct* DoGenCopy();
|
||||
virtual bool DoCompare( const LibEDA_BaseStruct& other ) const;
|
||||
virtual LIB_DRAW_ITEM* DoGenCopy();
|
||||
virtual bool DoCompare( const LIB_DRAW_ITEM& other ) const;
|
||||
virtual void DoOffset( const wxPoint& offset );
|
||||
virtual bool DoTestInside( EDA_Rect& rect );
|
||||
virtual void DoMove( const wxPoint& newPosition );
|
||||
virtual wxPoint DoGetPosition( void ) { return m_PolyPoints[0]; }
|
||||
};
|
||||
|
||||
#endif // CLASSES_BODY_ITEMS_H
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
#include "common.h"
|
||||
#include "trigo.h"
|
||||
#include "confirm.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "netlist.h"
|
||||
|
||||
|
||||
/* Routines locales */
|
||||
|
|
|
@ -10,14 +10,14 @@
|
|||
#include "eeschema_id.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "libviewfrm.h"
|
||||
|
||||
#include "classes_body_items.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
|
||||
/**************************************************************************************/
|
||||
SCH_ITEM* WinEDA_SchematicFrame:: SchematicGeneralLocateAndDisplay( bool IncludePin )
|
||||
/**************************************************************************************/
|
||||
|
|
|
@ -5,15 +5,13 @@
|
|||
#include "fctsys.h"
|
||||
#include "appl_wxstruct.h"
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "eda_dde.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "eeschema_id.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "classes_body_items.h"
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h" /* Definitions generales liees au calcul de netliste */
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
enum End_Type {
|
||||
|
@ -392,7 +392,7 @@ DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList )
|
|||
if( Entry == NULL )
|
||||
break;
|
||||
|
||||
LibEDA_BaseStruct* DrawLibItem = Entry->m_Drawings;
|
||||
LIB_DRAW_ITEM* DrawLibItem = Entry->m_Drawings;
|
||||
for( ; DrawLibItem != NULL; DrawLibItem = DrawLibItem->Next() )
|
||||
{
|
||||
if( DrawLibItem->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
#include "kicad_string.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#include "common.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
#include "appl_wxstruct.h"
|
||||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -9,10 +9,9 @@
|
|||
|
||||
#include "fctsys.h"
|
||||
#include "appl_wxstruct.h"
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ WinEDA_bodygraphics_PropertiesFrame::WinEDA_bodygraphics_PropertiesFrame( )
|
|||
|
||||
WinEDA_bodygraphics_PropertiesFrame::WinEDA_bodygraphics_PropertiesFrame( WinEDA_LibeditFrame* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
LibEDA_BaseStruct * CurrentItem = CurrentDrawItem;
|
||||
LIB_DRAW_ITEM * CurrentItem = parent->GetDrawItem();
|
||||
|
||||
m_Parent = parent;
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
#endif
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_libentry.h"
|
||||
#include "libeditfrm.h"
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
@ -104,7 +104,9 @@ bool WinEDA_CreateCmpDialog::Create( WinEDA_DrawFrame* parent, wxWindowID id, co
|
|||
void WinEDA_CreateCmpDialog::SetComponentData( LIB_COMPONENT & component )
|
||||
/**********************************************************************************/
|
||||
{
|
||||
g_AsDeMorgan = m_AsConvert->GetValue();
|
||||
WinEDA_LibeditFrame* parent = (WinEDA_LibeditFrame*) GetParent();
|
||||
|
||||
parent->SetShowDeMorgan( m_AsConvert->GetValue() );
|
||||
component.m_UnitCount = m_PartsCount->GetSelection() + 1;
|
||||
component.m_Prefix.m_Text = m_Reference->GetValue();
|
||||
if ( m_PinNameInside->GetValue() == FALSE)
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
#include "dialog_edit_component_in_lib.h"
|
||||
|
||||
|
@ -45,7 +45,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::Init( )
|
|||
SetFocus();
|
||||
m_AliasLocation = -1;
|
||||
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
|
||||
if( component == NULL )
|
||||
{
|
||||
|
@ -55,22 +55,22 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::Init( )
|
|||
|
||||
wxString title = _( "Properties for " );
|
||||
|
||||
if( !CurrentAliasName.IsEmpty() )
|
||||
if( !m_Parent->GetAliasName().IsEmpty() )
|
||||
{
|
||||
title += CurrentAliasName + _( " (alias of " ) +
|
||||
title += m_Parent->GetAliasName() + _( " (alias of " ) +
|
||||
component->GetName() + wxT( ")" );
|
||||
}
|
||||
else
|
||||
{
|
||||
title += component->GetName();
|
||||
CurrentAliasName.Empty();
|
||||
m_Parent->GetAliasName().Empty();
|
||||
}
|
||||
|
||||
SetTitle( title );
|
||||
InitPanelDoc();
|
||||
InitBasicPanel();
|
||||
|
||||
if( !CurrentAliasName.IsEmpty() )
|
||||
if( !m_Parent->GetAliasName().IsEmpty() )
|
||||
m_ButtonDeleteAllAlias->Enable( false );
|
||||
|
||||
/* Place list of alias names in listbox */
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include "dialog_edit_component_in_schematic.h"
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "dialog_edit_label.h"
|
||||
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include "dialog_edit_libentry_fields_in_lib_base.h"
|
||||
|
||||
|
@ -101,12 +101,12 @@ private:
|
|||
|
||||
void WinEDA_LibeditFrame::InstallFieldsEditorDialog( wxCommandEvent& event )
|
||||
{
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
return;
|
||||
|
||||
DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
|
||||
|
||||
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB dlg( this, m_currentComponent );
|
||||
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB dlg( this, m_component );
|
||||
|
||||
int abort = dlg.ShowModal();
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "netlist.h"
|
||||
|
|
|
@ -8,16 +8,14 @@
|
|||
// Licence: GPL
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include "fctsys.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "bitmaps.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
#include "dialog_erc.h"
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -9,14 +9,12 @@
|
|||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
extern int CurrentUnit;
|
||||
|
||||
/* Dialog box to edit a libentry (a component in library) properties */
|
||||
|
||||
/* Creates a NoteBook dialog
|
||||
|
@ -38,7 +36,7 @@ void WinEDA_LibeditFrame::OnEditComponentProperties( wxCommandEvent& event )
|
|||
|
||||
void WinEDA_LibeditFrame::EditComponentProperties()
|
||||
{
|
||||
wxASSERT( m_currentComponent != NULL && CurrentLib != NULL );
|
||||
wxASSERT( m_component != NULL && m_library != NULL );
|
||||
|
||||
DIALOG_EDIT_COMPONENT_IN_LIBRARY dlg( this );
|
||||
|
||||
|
@ -50,7 +48,7 @@ void WinEDA_LibeditFrame::EditComponentProperties()
|
|||
DisplayLibInfos();
|
||||
DisplayCmpDoc();
|
||||
GetScreen()->SetModify();
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
SaveCopyInUndoList( m_component );
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,18 +56,20 @@ void WinEDA_LibeditFrame::EditComponentProperties()
|
|||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitPanelDoc()
|
||||
{
|
||||
CMP_LIB_ENTRY* entry;
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
CMP_LIBRARY* library = m_Parent->GetLibrary();
|
||||
|
||||
if( component == NULL )
|
||||
return;
|
||||
|
||||
if( CurrentAliasName.IsEmpty() )
|
||||
if( m_Parent->GetAliasName().IsEmpty() )
|
||||
{
|
||||
entry = component;
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = ( CMP_LIB_ENTRY* ) CurrentLib->FindAlias( CurrentAliasName );
|
||||
entry =
|
||||
( CMP_LIB_ENTRY* ) library->FindAlias( m_Parent->GetAliasName() );
|
||||
|
||||
if( entry == NULL )
|
||||
return;
|
||||
|
@ -86,9 +86,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitPanelDoc()
|
|||
*/
|
||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitBasicPanel()
|
||||
{
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
|
||||
if( g_AsDeMorgan )
|
||||
if( m_Parent->GetShowDeMorgan() )
|
||||
m_AsConvertButt->SetValue( true );
|
||||
|
||||
/* Default values for a new component. */
|
||||
|
@ -121,15 +121,16 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
|||
size_t i;
|
||||
int index;
|
||||
CMP_LIB_ENTRY* entry;
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
CMP_LIBRARY* library = m_Parent->GetLibrary();
|
||||
|
||||
if( CurrentAliasName.IsEmpty() )
|
||||
if( m_Parent->GetAliasName().IsEmpty() )
|
||||
{
|
||||
entry = (CMP_LIB_ENTRY*) component;
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = CurrentLib->FindEntry( CurrentAliasName );
|
||||
entry = library->FindEntry( m_Parent->GetAliasName() );
|
||||
}
|
||||
|
||||
if( entry == NULL )
|
||||
|
@ -137,9 +138,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
|||
wxString msg;
|
||||
msg.Printf( _( "Alias <%s> not found for component <%s> in library \
|
||||
<%s>." ),
|
||||
(const wxChar*) CurrentAliasName,
|
||||
(const wxChar*) m_Parent->GetAliasName(),
|
||||
(const wxChar*) component->GetName(),
|
||||
(const wxChar*) CurrentLib->GetName() );
|
||||
(const wxChar*) library->GetName() );
|
||||
wxMessageBox( msg, _( "Component Library Error" ),
|
||||
wxID_OK | wxICON_ERROR, this );
|
||||
}
|
||||
|
@ -165,7 +166,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
|||
|
||||
alias = new LIB_ALIAS( aliases[ i ], component );
|
||||
|
||||
if( !CurrentLib->AddAlias( alias ) )
|
||||
if( !library->AddAlias( alias ) )
|
||||
{
|
||||
delete alias;
|
||||
alias = NULL;
|
||||
|
@ -181,9 +182,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
|||
continue;
|
||||
|
||||
CMP_LIB_ENTRY* alias =
|
||||
CurrentLib->FindAlias( component->m_AliasList[ i ] );
|
||||
library->FindAlias( component->m_AliasList[ i ] );
|
||||
if( alias != NULL )
|
||||
CurrentLib->RemoveEntry( alias );
|
||||
library->RemoveEntry( alias );
|
||||
}
|
||||
|
||||
component->m_AliasList = aliases;
|
||||
|
@ -194,17 +195,17 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
|||
|
||||
if( m_AsConvertButt->GetValue() )
|
||||
{
|
||||
if( !g_AsDeMorgan )
|
||||
if( !m_Parent->GetShowDeMorgan() )
|
||||
{
|
||||
g_AsDeMorgan = 1;
|
||||
m_Parent->SetShowDeMorgan( true );
|
||||
SetUnsetConvert();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( g_AsDeMorgan )
|
||||
if( m_Parent->GetShowDeMorgan() )
|
||||
{
|
||||
g_AsDeMorgan = 0;
|
||||
m_Parent->SetShowDeMorgan( false );
|
||||
SetUnsetConvert();
|
||||
}
|
||||
}
|
||||
|
@ -240,9 +241,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
|
|||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocToAlias( wxCommandEvent& WXUNUSED (event) )
|
||||
/******************************************************************************/
|
||||
{
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
|
||||
if( component == NULL || CurrentAliasName.IsEmpty() )
|
||||
if( component == NULL || m_Parent->GetAliasName().IsEmpty() )
|
||||
return;
|
||||
|
||||
m_Doc->SetValue( component->m_Doc );
|
||||
|
@ -256,17 +257,18 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllAliasOfPart(
|
|||
wxCommandEvent& WXUNUSED (event) )
|
||||
/**********************************************************/
|
||||
{
|
||||
if( m_PartAliasList->FindString( CurrentAliasName ) != wxNOT_FOUND )
|
||||
if( m_PartAliasList->FindString( m_Parent->GetAliasName() )
|
||||
!= wxNOT_FOUND )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "Alias <%s> cannot be removed while it is being \
|
||||
edited!" ),
|
||||
(const wxChar*) CurrentAliasName );
|
||||
(const wxChar*) m_Parent->GetAliasName() );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
|
||||
CurrentAliasName.Empty();
|
||||
m_Parent->GetAliasName().Empty();
|
||||
|
||||
if( IsOK( this, _( "Remove all aliases from list?" ) ) )
|
||||
{
|
||||
|
@ -287,31 +289,33 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart( wxCommandEvent& WXUNUSED
|
|||
{
|
||||
wxString Line;
|
||||
wxString aliasname;
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
CMP_LIBRARY* library = m_Parent->GetLibrary();
|
||||
|
||||
if( component == NULL )
|
||||
return;
|
||||
|
||||
if( Get_Message( _( "New alias:" ), _( "Component Alias" ), Line, this ) != 0 )
|
||||
if( Get_Message( _( "New alias:" ),
|
||||
_( "Component Alias" ), Line, this ) != 0 )
|
||||
return;
|
||||
|
||||
Line.Replace( wxT( " " ), wxT( "_" ) );
|
||||
aliasname = Line;
|
||||
|
||||
if( m_PartAliasList->FindString( aliasname ) != wxNOT_FOUND
|
||||
|| CurrentLib->FindEntry( aliasname ) != NULL )
|
||||
|| library->FindEntry( aliasname ) != NULL )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "Alias or component name <%s> already exists in \
|
||||
library <%s>." ),
|
||||
(const wxChar*) aliasname,
|
||||
(const wxChar*) CurrentLib->GetName() );
|
||||
(const wxChar*) library->GetName() );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
|
||||
m_PartAliasList->Append( aliasname );
|
||||
if( CurrentAliasName.IsEmpty() )
|
||||
if( m_Parent->GetAliasName().IsEmpty() )
|
||||
m_ButtonDeleteAllAlias->Enable( TRUE );
|
||||
m_ButtonDeleteOneAlias->Enable( TRUE );
|
||||
}
|
||||
|
@ -324,7 +328,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAliasOfPart(
|
|||
|
||||
if( aliasname.IsEmpty() )
|
||||
return;
|
||||
if( aliasname.CmpNoCase( CurrentAliasName ) == 0 )
|
||||
if( aliasname.CmpNoCase( m_Parent->GetAliasName() ) == 0 )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "Alias <%s> cannot be removed while it is being \
|
||||
|
@ -353,8 +357,8 @@ bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::ChangeNbUnitsPerPackage( int MaxUnit )
|
|||
*/
|
||||
{
|
||||
int OldNumUnits, ii, FlagDel = -1;
|
||||
LibEDA_BaseStruct* DrawItem, * NextDrawItem;
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_DRAW_ITEM* DrawItem, * NextDrawItem;
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
|
||||
if( component == NULL )
|
||||
return FALSE;
|
||||
|
@ -384,8 +388,8 @@ bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::ChangeNbUnitsPerPackage( int MaxUnit )
|
|||
if( IsOK( this, _( "Delete units" ) ) )
|
||||
{
|
||||
/* Si part selectee n'existe plus: selection 1ere unit */
|
||||
if( CurrentUnit > MaxUnit )
|
||||
CurrentUnit = 1;
|
||||
if( m_Parent->GetUnit() > MaxUnit )
|
||||
m_Parent->SetUnit( 1 );
|
||||
FlagDel = 1;
|
||||
}
|
||||
else
|
||||
|
@ -435,10 +439,10 @@ bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::SetUnsetConvert()
|
|||
*/
|
||||
{
|
||||
int FlagDel = 0;
|
||||
LibEDA_BaseStruct* DrawItem = NULL, * NextDrawItem;
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_DRAW_ITEM* DrawItem = NULL, * NextDrawItem;
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
|
||||
if( g_AsDeMorgan ) /* Representation convertie a creer */
|
||||
if( m_Parent->GetShowDeMorgan() ) /* Representation convertie a creer */
|
||||
{
|
||||
/* Traitement des elements a ajouter ( pins seulement ) */
|
||||
if( component )
|
||||
|
@ -459,7 +463,8 @@ bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::SetUnsetConvert()
|
|||
if( IsOK( this, _( "Part as \"De Morgan\" anymore" ) ) )
|
||||
return TRUE;
|
||||
|
||||
g_AsDeMorgan = 0; return FALSE;
|
||||
m_Parent->SetShowDeMorgan( false );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
NextDrawItem = DrawItem->GenCopy();
|
||||
|
@ -483,12 +488,12 @@ bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::SetUnsetConvert()
|
|||
{
|
||||
if( IsOK( this, _( "Delete Convert items" ) ) )
|
||||
{
|
||||
CurrentConvert = 1;
|
||||
m_Parent->SetConvert( 1 );
|
||||
FlagDel = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_AsDeMorgan = 1;
|
||||
m_Parent->SetShowDeMorgan( true );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -561,7 +566,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter( wxCommandEvent& WXUNU
|
|||
*/
|
||||
{
|
||||
wxString Line;
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
|
||||
if( component == NULL )
|
||||
return;
|
||||
|
@ -596,7 +601,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteOneFootprintFilter(
|
|||
wxCommandEvent& WXUNUSED (event) )
|
||||
/********************************************************/
|
||||
{
|
||||
LIB_COMPONENT* component = m_Parent->GetCurrentComponent();
|
||||
LIB_COMPONENT* component = m_Parent->GetComponent();
|
||||
int ii = m_FootprintFilterListBox->GetSelection();
|
||||
|
||||
m_FootprintFilterListBox->Delete( ii );
|
||||
|
|
|
@ -9,10 +9,9 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/* Fonctions locales */
|
||||
|
|
|
@ -13,10 +13,10 @@
|
|||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
#include "dialog_bodygraphictext_properties_base.h"
|
||||
|
||||
|
@ -144,7 +144,7 @@ void Dialog_BodyGraphicText_Properties::OnOkClick( wxCommandEvent& event )
|
|||
/* Met a jour les differents parametres pour le composant en cours d'edition
|
||||
*/
|
||||
{
|
||||
wxString Line;
|
||||
wxString Line;
|
||||
|
||||
Line = m_TextValue->GetValue();
|
||||
g_LastTextOrient = m_Orient->GetValue() ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ;
|
||||
|
@ -165,12 +165,12 @@ wxString Line;
|
|||
m_GraphicText->m_Orient = g_LastTextOrient;
|
||||
|
||||
if( g_FlDrawSpecificUnit )
|
||||
m_GraphicText->m_Unit = CurrentUnit;
|
||||
m_GraphicText->m_Unit = m_Parent->GetUnit();
|
||||
else
|
||||
m_GraphicText->m_Unit = 0;
|
||||
|
||||
if( g_FlDrawSpecificConvert )
|
||||
m_GraphicText->m_Convert = CurrentConvert;
|
||||
m_GraphicText->m_Convert = m_Parent->GetConvert();
|
||||
else
|
||||
m_GraphicText->m_Convert = 0;
|
||||
|
||||
|
@ -216,14 +216,14 @@ wxString Line;
|
|||
}
|
||||
Close();
|
||||
|
||||
if ( CurrentDrawItem )
|
||||
CurrentDrawItem->DisplayInfo( m_Parent );
|
||||
if ( m_Parent->GetDrawItem() )
|
||||
m_Parent->GetDrawItem()->DisplayInfo( m_Parent );
|
||||
Close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::EditSymbolText(wxDC * DC, LibEDA_BaseStruct * DrawItem)
|
||||
void WinEDA_LibeditFrame::EditSymbolText(wxDC* DC, LIB_DRAW_ITEM* DrawItem)
|
||||
{
|
||||
int DrawMode = g_XorMode;
|
||||
|
||||
|
@ -263,7 +263,7 @@ void WinEDA_LibeditFrame::RotateSymbolText(wxDC * DC)
|
|||
90 deg Graphic text Rotation .
|
||||
*/
|
||||
{
|
||||
LibDrawText * DrawItem = (LibDrawText *) CurrentDrawItem;
|
||||
LibDrawText * DrawItem = (LibDrawText *) m_drawItem;
|
||||
|
||||
if( DrawItem == NULL )
|
||||
return;
|
||||
|
|
|
@ -12,12 +12,11 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "dialog_edit_label.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
#include "dialog_edit_label.h"
|
||||
|
||||
/* Fonctions locales */
|
||||
static void ShowWhileMoving( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
static void ExitMoveTexte( WinEDA_DrawPanel* panel, wxDC* DC );
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "eeconfig.h"
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
#include "appl_wxstruct.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include "dialog_load_error.h"
|
||||
|
||||
|
|
|
@ -10,9 +10,10 @@
|
|||
#include "appl_wxstruct.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
static EDA_BaseStruct* HighLightStruct = NULL;
|
||||
|
||||
|
|
|
@ -8,12 +8,11 @@
|
|||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "gestfich.h"
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "bitmaps.h"
|
||||
#include "eda_dde.h"
|
||||
|
||||
#include "libcmp.h"
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
#include <wx/snglinst.h>
|
||||
|
@ -65,7 +64,6 @@ HPGL_Pen_Descr_Struct g_HPGL_Pen_Descr;
|
|||
|
||||
//SCH_SCREEN * ScreenSch;
|
||||
DrawSheetStruct* g_RootSheet = NULL;
|
||||
SCH_SCREEN* g_ScreenLib = NULL;
|
||||
|
||||
wxString g_NetCmpExtBuffer( wxT( "cmp" ) );
|
||||
|
||||
|
@ -97,21 +95,6 @@ int g_ItemSelectetColor = BROWN;
|
|||
// Color to draw items flagged invisible, in libedit (they are insisible in eeschema
|
||||
int g_InvisibleItemColor = DARKGRAY;
|
||||
|
||||
/* Variables used by LibEdit */
|
||||
LibEDA_BaseStruct* LibItemToRepeat = NULL; /* pointer on a graphic item than
|
||||
* can be duplicated by the Ins key
|
||||
* (usually the last created item */
|
||||
CMP_LIBRARY* CurrentLib = NULL; /* Current opened library */
|
||||
LibEDA_BaseStruct* CurrentDrawItem = NULL; /* current edited item */
|
||||
|
||||
// Current selected alias (for components which have aliases)
|
||||
wxString CurrentAliasName;
|
||||
|
||||
// True if the current component has a "De Morgan" representation
|
||||
bool g_AsDeMorgan;
|
||||
int CurrentUnit = 1;
|
||||
int CurrentConvert = 1;
|
||||
|
||||
int DefaultTransformMatrix[2][2] = { { 1, 0 }, { 0, -1 } };
|
||||
|
||||
|
||||
|
|
|
@ -8,18 +8,17 @@
|
|||
#include "kicad_string.h"
|
||||
#include "gestfich.h"
|
||||
#include "appl_wxstruct.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "bitmaps.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "dialog_erc.h"
|
||||
#include "protos.h"
|
||||
#include "erc.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "dialog_erc.h"
|
||||
|
||||
|
||||
/* ERC tests :
|
||||
* 1 - conflicts between connected pins ( example: 2 connected outputs )
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "gestfich.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "eeschema_id.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_marker_sch.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ extern HPGL_Pen_Descr_Struct g_HPGL_Pen_Descr;
|
|||
|
||||
/* First and main (root) screen */
|
||||
extern DrawSheetStruct* g_RootSheet;
|
||||
extern SCH_SCREEN* g_ScreenLib;
|
||||
|
||||
|
||||
/*************************************/
|
||||
/* Gestion de recherche des elements */
|
||||
|
|
|
@ -9,14 +9,14 @@
|
|||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
|
||||
#include "get_component_dialog.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
#include "libviewfrm.h"
|
||||
|
||||
#include "get_component_dialog.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
|
||||
|
@ -441,7 +441,7 @@ void WinEDA_SchematicFrame::ConvertPart( SCH_COMPONENT* DrawComponent,
|
|||
int LookForConvertPart( LIB_COMPONENT* LibEntry )
|
||||
{
|
||||
int ii;
|
||||
LibEDA_BaseStruct* DrawLibEntry;
|
||||
LIB_DRAW_ITEM* DrawLibEntry;
|
||||
|
||||
DrawLibEntry = LibEntry->m_Drawings;
|
||||
ii = 0;
|
||||
|
|
|
@ -7,18 +7,15 @@
|
|||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "wx/imaglist.h"
|
||||
#include "wx/treectrl.h"
|
||||
|
||||
|
||||
#include "bitmaps.h"
|
||||
|
||||
|
||||
static bool UpdateScreenFromSheet( WinEDA_SchematicFrame* frame );
|
||||
|
||||
enum {
|
||||
|
|
|
@ -8,10 +8,11 @@
|
|||
#include "hotkeys.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
/* How to add a new hotkey:
|
||||
* add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION (see
|
||||
|
@ -463,7 +464,7 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey,
|
|||
|
||||
wxPoint MousePos = GetScreen()->m_MousePosition;
|
||||
|
||||
LibEDA_BaseStruct* DrawEntry = LocateItemUsingCursor();
|
||||
LIB_DRAW_ITEM* DrawEntry = LocateItemUsingCursor();
|
||||
|
||||
// Remap the control key Ctrl A (0x01) to GR_KB_CTRL + 'A' (easier to
|
||||
// handle...)
|
||||
|
@ -533,10 +534,10 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey,
|
|||
break;
|
||||
|
||||
case HK_REPEAT_LAST:
|
||||
if( LibItemToRepeat && (LibItemToRepeat->m_Flags == 0)
|
||||
&& (LibItemToRepeat->Type() == COMPONENT_PIN_DRAW_TYPE) )
|
||||
if( m_lastDrawItem && (m_lastDrawItem->m_Flags == 0)
|
||||
&& (m_lastDrawItem->Type() == COMPONENT_PIN_DRAW_TYPE) )
|
||||
{
|
||||
RepeatPinItem( DC, (LibDrawPin*) LibItemToRepeat );
|
||||
RepeatPinItem( DC, (LibDrawPin*) m_lastDrawItem );
|
||||
}
|
||||
else
|
||||
wxBell();
|
||||
|
@ -544,18 +545,18 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey,
|
|||
|
||||
case HK_EDIT_PIN:
|
||||
if( DrawEntry )
|
||||
CurrentDrawItem = DrawEntry;
|
||||
if( CurrentDrawItem )
|
||||
m_drawItem = DrawEntry;
|
||||
if( m_drawItem )
|
||||
{
|
||||
if( CurrentDrawItem->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
if( m_drawItem->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
InstallPineditFrame( this, DC, MousePos );
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_DELETE_PIN:
|
||||
if( DrawEntry )
|
||||
CurrentDrawItem = DrawEntry;
|
||||
if( CurrentDrawItem )
|
||||
m_drawItem = DrawEntry;
|
||||
if( m_drawItem )
|
||||
{
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_POPUP_LIBEDIT_DELETE_ITEM );
|
||||
|
@ -565,8 +566,8 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey,
|
|||
|
||||
case HK_MOVE_PIN:
|
||||
if( DrawEntry )
|
||||
CurrentDrawItem = DrawEntry;
|
||||
if( CurrentDrawItem )
|
||||
m_drawItem = DrawEntry;
|
||||
if( m_drawItem )
|
||||
{
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST );
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
#include "eeschema_id.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include <wx/filename.h>
|
||||
|
||||
|
@ -41,7 +41,7 @@ void WinEDA_LibeditFrame::OnImportPart( wxCommandEvent& event )
|
|||
CMP_LIBRARY* LibTmp;
|
||||
CMP_LIB_ENTRY* LibEntry;
|
||||
|
||||
LibItemToRepeat = NULL;
|
||||
m_lastDrawItem = NULL;
|
||||
|
||||
wxFileDialog dlg( this, _( "Import Component" ), m_LastLibImportPath,
|
||||
wxEmptyString, CompLibFileWildcard,
|
||||
|
@ -96,13 +96,13 @@ void WinEDA_LibeditFrame::OnExportPart( wxCommandEvent& event )
|
|||
CMP_LIBRARY* CurLibTmp;
|
||||
bool createLib = ( event.GetId() != ExportPartId ) ? false : true;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
{
|
||||
DisplayError( this, _( "There is no component selected to save." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
fn = m_currentComponent->GetName().Lower();
|
||||
fn = m_component->GetName().Lower();
|
||||
fn.SetExt( CompLibFileExtension );
|
||||
|
||||
title = createLib ? _( "New Library" ) : _( "Export Component" );
|
||||
|
@ -115,19 +115,19 @@ void WinEDA_LibeditFrame::OnExportPart( wxCommandEvent& event )
|
|||
|
||||
fn = dlg.GetPath();
|
||||
|
||||
CurLibTmp = CurrentLib;
|
||||
CurLibTmp = m_library;
|
||||
|
||||
CurrentLib = new CMP_LIBRARY( LIBRARY_TYPE_EESCHEMA, fn );
|
||||
m_library = new CMP_LIBRARY( LIBRARY_TYPE_EESCHEMA, fn );
|
||||
|
||||
SaveOnePartInMemory();
|
||||
|
||||
bool success = CurrentLib->Save( fn.GetFullPath() );
|
||||
bool success = m_library->Save( fn.GetFullPath() );
|
||||
|
||||
if( success )
|
||||
m_LastLibExportPath = fn.GetPath();
|
||||
|
||||
delete CurrentLib;
|
||||
CurrentLib = CurLibTmp;
|
||||
delete m_library;
|
||||
m_library = CurLibTmp;
|
||||
|
||||
if( createLib && success )
|
||||
{
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -6,35 +6,6 @@
|
|||
#define LIBCMP_H
|
||||
|
||||
|
||||
#define LIB_VERSION_MAJOR 2
|
||||
#define LIB_VERSION_MINOR 3
|
||||
|
||||
/* Must be the first line of component library (.lib) files. */
|
||||
#define LIBFILE_IDENT "EESchema-LIBRARY Version"
|
||||
|
||||
#define LIB_VERSION( major, minor ) ( major * 100 + minor )
|
||||
|
||||
#define IS_LIB_CURRENT_VERSION( major, minor ) \
|
||||
( \
|
||||
LIB_VERSION( major1, minor1 ) == \
|
||||
LIB_VERSION( LIB_VERSION_MAJOR, LIB_VERSION_MINOR) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Library versions 2.3 and lower use the old separate library (.lib) and
|
||||
* document (.dcm) files. Component libraries after 2.3 merged the library
|
||||
* and document files into a single library file. This macro checks if the
|
||||
* library version supports the old format
|
||||
*/
|
||||
#define USE_OLD_DOC_FILE_FORMAT( major, minor ) \
|
||||
( LIB_VERSION( major, minor ) < LIB_VERSION( 2, 3 )
|
||||
|
||||
/* Must be the first line of component library document (.dcm) files. */
|
||||
#define DOCFILE_IDENT "EESchema-DOCLIB Version 2.0"
|
||||
|
||||
#define DOC_EXT wxT( "dcm" )
|
||||
|
||||
|
||||
enum LocateDrawStructType
|
||||
{
|
||||
LOCATE_COMPONENT_ARC_DRAW_TYPE = 1,
|
||||
|
@ -49,19 +20,4 @@ enum LocateDrawStructType
|
|||
#define LOCATE_ALL_DRAW_ITEM 0xFFFFFFFF
|
||||
|
||||
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/* Variables used by LibEdit */
|
||||
extern LibEDA_BaseStruct* LibItemToRepeat; /* pointer on a graphic item than
|
||||
* can be duplicated by the Ins key
|
||||
* (usually the last created item */
|
||||
extern CMP_LIBRARY* CurrentLib; /* Current opened library */
|
||||
extern LibEDA_BaseStruct* CurrentDrawItem; /* current edited item */
|
||||
|
||||
extern wxString CurrentAliasName;
|
||||
extern bool g_AsDeMorgan;
|
||||
extern int CurrentUnit;
|
||||
extern int CurrentConvert;
|
||||
|
||||
#endif // LIBCMP_H
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
#include "eeschema_id.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include "dialog_create_component.h"
|
||||
|
||||
|
@ -29,8 +29,8 @@ void WinEDA_LibeditFrame::DisplayLibInfos()
|
|||
{
|
||||
wxString msg = _( "Component Library Editor: " );
|
||||
|
||||
if( CurrentLib )
|
||||
msg += CurrentLib->GetFullFileName();
|
||||
if( m_library )
|
||||
msg += m_library->GetFullFileName();
|
||||
else
|
||||
msg += _( "no library selected" );
|
||||
|
||||
|
@ -46,7 +46,7 @@ void WinEDA_LibeditFrame::SelectActiveLibrary()
|
|||
Lib = SelectLibraryFromList( this );
|
||||
if( Lib )
|
||||
{
|
||||
CurrentLib = Lib;
|
||||
m_library = Lib;
|
||||
}
|
||||
DisplayLibInfos();
|
||||
}
|
||||
|
@ -59,58 +59,60 @@ void WinEDA_LibeditFrame::SelectActiveLibrary()
|
|||
* If there is no current selected library,
|
||||
* prompt user for library name and make the selected library the current lib.
|
||||
*/
|
||||
bool WinEDA_LibeditFrame::LoadOneLibraryPart()
|
||||
void WinEDA_LibeditFrame::LoadOneLibraryPart( wxCommandEvent& event )
|
||||
{
|
||||
int i;
|
||||
wxString msg;
|
||||
wxString CmpName;
|
||||
CMP_LIB_ENTRY* LibEntry = NULL;
|
||||
|
||||
if( g_ScreenLib->IsModify() && !IsOK( this, _( "Current part not \
|
||||
saved.\n\nDiscard current changes?" ) ) )
|
||||
return false;
|
||||
DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
|
||||
|
||||
if( CurrentLib == NULL ) // No current lib, ask user for the library to use
|
||||
if( GetBaseScreen()->IsModify() && !IsOK( this, _( "Current part not \
|
||||
saved.\n\nDiscard current changes?" ) ) )
|
||||
return;
|
||||
|
||||
// No current lib, ask user for the library to use.
|
||||
if( m_library == NULL )
|
||||
{
|
||||
SelectActiveLibrary();
|
||||
if( CurrentLib == NULL )
|
||||
return false;
|
||||
if( m_library == NULL )
|
||||
return;
|
||||
}
|
||||
|
||||
i = GetNameOfPartToLoad( this, CurrentLib, CmpName );
|
||||
i = GetNameOfPartToLoad( this, m_library, CmpName );
|
||||
if( i == 0 )
|
||||
return false;
|
||||
return;
|
||||
|
||||
g_ScreenLib->ClrModify();
|
||||
CurrentDrawItem = NULL;
|
||||
GetBaseScreen()->ClrModify();
|
||||
m_lastDrawItem = m_drawItem = NULL;
|
||||
|
||||
// Delete previous library component, if any
|
||||
if( m_currentComponent )
|
||||
if( m_component )
|
||||
{
|
||||
SAFE_DELETE( m_currentComponent );
|
||||
SAFE_DELETE( m_component );
|
||||
}
|
||||
|
||||
/* Load the new library component */
|
||||
LibEntry = CurrentLib->FindEntry( CmpName );
|
||||
LibEntry = m_library->FindEntry( CmpName );
|
||||
|
||||
if( LibEntry == NULL )
|
||||
{
|
||||
msg.Printf( _( "Component or alias name \"%s\" not found in \
|
||||
library \"%s\"." ),
|
||||
(const wxChar*) CmpName,
|
||||
(const wxChar*) CurrentLib->GetName() );
|
||||
(const wxChar*) m_library->GetName() );
|
||||
DisplayError( this, msg );
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
if( !LoadOneLibraryPartAux( LibEntry, m_library ) )
|
||||
return;
|
||||
|
||||
g_EditPinByPinIsOn = false;
|
||||
GetScreen()->ClearUndoRedoList();
|
||||
|
||||
if( !LoadOneLibraryPartAux( LibEntry, CurrentLib ) )
|
||||
return false;
|
||||
|
||||
Zoom_Automatique( false );
|
||||
DrawPanel->Refresh();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -119,7 +121,7 @@ library \"%s\"." ),
|
|||
* retourne
|
||||
* 0 si OK
|
||||
* 1 si err
|
||||
* m_currentComponent pointe la copie ainsi creee
|
||||
* m_component pointe la copie ainsi creee
|
||||
*/
|
||||
bool WinEDA_LibeditFrame::LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry,
|
||||
CMP_LIBRARY* Library )
|
||||
|
@ -138,7 +140,7 @@ bool WinEDA_LibeditFrame::LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry,
|
|||
}
|
||||
|
||||
cmpName = LibEntry->GetName();
|
||||
CurrentAliasName.Empty();
|
||||
m_aliasName.Empty();
|
||||
|
||||
if( LibEntry->Type != ROOT )
|
||||
{
|
||||
|
@ -151,19 +153,19 @@ bool WinEDA_LibeditFrame::LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry,
|
|||
(const wxChar*) cmpName,
|
||||
(const wxChar*) component->GetName() );
|
||||
|
||||
CurrentAliasName = cmpName;
|
||||
m_aliasName = cmpName;
|
||||
}
|
||||
else
|
||||
{
|
||||
component = (LIB_COMPONENT*) LibEntry;
|
||||
}
|
||||
|
||||
if( m_currentComponent )
|
||||
SAFE_DELETE( m_currentComponent );
|
||||
if( m_component )
|
||||
SAFE_DELETE( m_component );
|
||||
|
||||
m_currentComponent = CopyLibEntryStruct( component );
|
||||
m_component = new LIB_COMPONENT( *component );
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
{
|
||||
msg.Printf( _( "Could not create copy of part <%s> in library <%s>." ),
|
||||
(const wxChar*) LibEntry->GetName(),
|
||||
|
@ -172,15 +174,15 @@ bool WinEDA_LibeditFrame::LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry,
|
|||
return false;
|
||||
}
|
||||
|
||||
CurrentUnit = 1;
|
||||
CurrentConvert = 1;
|
||||
m_unit = 1;
|
||||
m_convert = 1;
|
||||
|
||||
g_AsDeMorgan = 0;
|
||||
m_showDeMorgan = false;
|
||||
|
||||
if( LookForConvertPart( m_currentComponent ) > 1 )
|
||||
g_AsDeMorgan = 1;
|
||||
if( LookForConvertPart( m_component ) > 1 )
|
||||
m_showDeMorgan = true;
|
||||
|
||||
g_ScreenLib->ClrModify();
|
||||
GetBaseScreen()->ClrModify();
|
||||
DisplayLibInfos();
|
||||
UpdateAliasSelectList();
|
||||
UpdatePartSelectList();
|
||||
|
@ -216,9 +218,9 @@ void WinEDA_LibeditFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
|
|||
|
||||
DrawPanel->DrawBackGround( DC );
|
||||
|
||||
if( m_currentComponent )
|
||||
m_currentComponent->Draw( DrawPanel, DC, wxPoint( 0, 0 ), CurrentUnit,
|
||||
CurrentConvert, GR_DEFAULT_DRAWMODE );
|
||||
if( m_component )
|
||||
m_component->Draw( DrawPanel, DC, wxPoint( 0, 0 ), m_unit,
|
||||
m_convert, GR_DEFAULT_DRAWMODE );
|
||||
|
||||
DrawPanel->CursorOn( DC ); // redraw cursor
|
||||
|
||||
|
@ -250,20 +252,20 @@ void WinEDA_LibeditFrame::SaveActiveLibrary( wxCommandEvent& event )
|
|||
SaveOnePartInMemory();
|
||||
}
|
||||
|
||||
if( CurrentLib == NULL )
|
||||
if( m_library == NULL )
|
||||
{
|
||||
DisplayError( this, wxT( "No library specified." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
fn = wxFileName( CurrentLib->GetFullFileName() );
|
||||
fn = wxFileName( m_library->GetFullFileName() );
|
||||
|
||||
msg = _( "Modify library file \"" ) + fn.GetFullPath() + _( "\"?" );
|
||||
|
||||
if( !IsOK( this, msg ) )
|
||||
return;
|
||||
|
||||
bool success = CurrentLib->Save( fn.GetFullPath() );
|
||||
bool success = m_library->Save( fn.GetFullPath() );
|
||||
|
||||
MsgPanel->EraseMsgBox();
|
||||
|
||||
|
@ -296,38 +298,38 @@ void WinEDA_LibeditFrame::DisplayCmpDoc()
|
|||
|
||||
MsgPanel->EraseMsgBox();
|
||||
|
||||
if( CurrentLib == NULL || m_currentComponent == NULL )
|
||||
if( m_library == NULL || m_component == NULL )
|
||||
return;
|
||||
|
||||
msg = m_currentComponent->GetName();
|
||||
msg = m_component->GetName();
|
||||
|
||||
MsgPanel->AppendMessage( _( "Part" ), msg, BLUE, 8 );
|
||||
|
||||
if( CurrentAliasName.IsEmpty() )
|
||||
if( m_aliasName.IsEmpty() )
|
||||
{
|
||||
msg = _( "None" );
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = CurrentAliasName;
|
||||
alias = CurrentLib->FindAlias( CurrentAliasName );
|
||||
msg = m_aliasName;
|
||||
alias = m_library->FindAlias( m_aliasName );
|
||||
}
|
||||
|
||||
MsgPanel->AppendMessage( _( "Alias" ), msg, RED, 8 );
|
||||
|
||||
static wxChar UnitLetter[] = wxT( "?ABCDEFGHIJKLMNOPQRSTUVWXYZ" );
|
||||
msg = UnitLetter[CurrentUnit];
|
||||
msg = UnitLetter[m_unit];
|
||||
|
||||
MsgPanel->AppendMessage( _( "Unit" ), msg, BROWN, 8 );
|
||||
|
||||
if( CurrentConvert > 1 )
|
||||
if( m_convert > 1 )
|
||||
msg = _( "Convert" );
|
||||
else
|
||||
msg = _( "Normal" );
|
||||
|
||||
MsgPanel->AppendMessage( _( "Body" ), msg, GREEN, 8 );
|
||||
|
||||
if( m_currentComponent->m_Options == ENTRY_POWER )
|
||||
if( m_component->m_Options == ENTRY_POWER )
|
||||
msg = _( "Power Symbol" );
|
||||
else
|
||||
msg = _( "Component" );
|
||||
|
@ -337,14 +339,14 @@ void WinEDA_LibeditFrame::DisplayCmpDoc()
|
|||
if( alias != NULL )
|
||||
msg = alias->m_Doc;
|
||||
else
|
||||
msg = m_currentComponent->m_Doc;
|
||||
msg = m_component->m_Doc;
|
||||
|
||||
MsgPanel->AppendMessage( _( "Description" ), msg, CYAN, 8 );
|
||||
|
||||
if( alias != NULL )
|
||||
msg = alias->m_KeyWord;
|
||||
else
|
||||
msg = m_currentComponent->m_KeyWord;
|
||||
msg = m_component->m_KeyWord;
|
||||
|
||||
MsgPanel->AppendMessage( _( "Key words" ), msg, DARKDARKGRAY );
|
||||
}
|
||||
|
@ -371,62 +373,63 @@ void WinEDA_LibeditFrame::DeleteOnePart( wxCommandEvent& event )
|
|||
|
||||
DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
|
||||
|
||||
LibItemToRepeat = NULL;
|
||||
CurrentDrawItem = NULL;
|
||||
m_lastDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
|
||||
if( CurrentLib == NULL )
|
||||
if( m_library == NULL )
|
||||
{
|
||||
SelectActiveLibrary();
|
||||
|
||||
if( CurrentLib == NULL )
|
||||
if( m_library == NULL )
|
||||
{
|
||||
DisplayError( this, _( "Please select a component library." ) );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CurrentLib->GetEntryNames( ListNames );
|
||||
m_library->GetEntryNames( ListNames );
|
||||
|
||||
if( ListNames.IsEmpty() )
|
||||
{
|
||||
msg.Printf( _( "Component library <%s> is empty." ),
|
||||
( const wxChar* ) CurrentLib->GetName() );
|
||||
( const wxChar* ) m_library->GetName() );
|
||||
wxMessageBox( msg, _( "Delete Entry Error" ),
|
||||
wxID_OK | wxICON_EXCLAMATION, this );
|
||||
return;
|
||||
}
|
||||
|
||||
msg.Printf( _( "Select 1 of %d components to delete\nfrom library <%s>." ),
|
||||
ListNames.GetCount(), ( const wxChar* ) CurrentLib->GetName() );
|
||||
ListNames.GetCount(),
|
||||
( const wxChar* ) m_library->GetName() );
|
||||
|
||||
wxSingleChoiceDialog dlg( this, msg, _( "Delete Component" ), ListNames );
|
||||
|
||||
if( dlg.ShowModal() == wxID_CANCEL || dlg.GetStringSelection().IsEmpty() )
|
||||
return;
|
||||
|
||||
LibEntry = CurrentLib->FindEntry( dlg.GetStringSelection() );
|
||||
LibEntry = m_library->FindEntry( dlg.GetStringSelection() );
|
||||
|
||||
if( LibEntry == NULL )
|
||||
{
|
||||
msg.Printf( _( "Entry <%s> not found in library <%s>." ),
|
||||
( const wxChar* ) dlg.GetStringSelection(),
|
||||
( const wxChar* ) CurrentLib->GetName() );
|
||||
( const wxChar* ) m_library->GetName() );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
|
||||
msg.Printf( _( "Delete component \"%s\" from library \"%s\"?" ),
|
||||
(const wxChar*) LibEntry->GetName(),
|
||||
(const wxChar*) CurrentLib->GetName() );
|
||||
(const wxChar*) m_library->GetName() );
|
||||
|
||||
if( !IsOK( this, msg ) )
|
||||
return;
|
||||
|
||||
if( m_currentComponent == NULL
|
||||
|| ( m_currentComponent->GetName().CmpNoCase( LibEntry->GetName() ) != 0
|
||||
&& !m_currentComponent->HasAlias( LibEntry->GetName() ) ) )
|
||||
if( m_component == NULL
|
||||
|| ( m_component->GetName().CmpNoCase( LibEntry->GetName() ) != 0
|
||||
&& !m_component->HasAlias( LibEntry->GetName() ) ) )
|
||||
{
|
||||
CurrentLib->RemoveEntry( LibEntry );
|
||||
m_library->RemoveEntry( LibEntry );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -447,33 +450,32 @@ All changes will be lost. Discard changes?" ) ) )
|
|||
* in the library will be shown. If the current component has
|
||||
* aliases, the updated component will be shown
|
||||
*/
|
||||
if( m_currentComponent->GetName().CmpNoCase( LibEntry->GetName() ) == 0 )
|
||||
if( m_component->GetName().CmpNoCase( LibEntry->GetName() ) == 0 )
|
||||
{
|
||||
if( m_currentComponent->m_AliasList.IsEmpty() )
|
||||
if( m_component->m_AliasList.IsEmpty() )
|
||||
{
|
||||
nextEntry =
|
||||
CurrentLib->GetNextEntry( m_currentComponent->GetName() );
|
||||
nextEntry = m_library->GetNextEntry( m_component->GetName() );
|
||||
|
||||
if( nextEntry != NULL )
|
||||
newCmpName = nextEntry->GetName();
|
||||
}
|
||||
else
|
||||
{
|
||||
newCmpName = m_currentComponent->m_AliasList[ 0 ];
|
||||
newCmpName = m_component->m_AliasList[ 0 ];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
newCmpName = m_currentComponent->GetName();
|
||||
newCmpName = m_component->GetName();
|
||||
}
|
||||
|
||||
CurrentLib->RemoveEntry( LibEntry );
|
||||
m_library->RemoveEntry( LibEntry );
|
||||
|
||||
if( !newCmpName.IsEmpty() )
|
||||
{
|
||||
nextEntry = CurrentLib->FindEntry( newCmpName );
|
||||
nextEntry = m_library->FindEntry( newCmpName );
|
||||
|
||||
if( nextEntry != NULL && LoadOneLibraryPartAux( nextEntry, CurrentLib ) )
|
||||
if( nextEntry != NULL && LoadOneLibraryPartAux( nextEntry, m_library ) )
|
||||
Zoom_Automatique( false );
|
||||
|
||||
DrawPanel->Refresh();
|
||||
|
@ -492,14 +494,14 @@ void WinEDA_LibeditFrame::CreateNewLibraryPart( wxCommandEvent& event )
|
|||
wxString msg;
|
||||
LIB_COMPONENT* NewStruct;
|
||||
|
||||
if( m_currentComponent && GetScreen()->IsModify()
|
||||
if( m_component && GetScreen()->IsModify()
|
||||
&& !IsOK( this, _( "All changes to the current component will be \
|
||||
lost!\n\nClear the current component from the screen?" ) ) )
|
||||
return;
|
||||
|
||||
DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
|
||||
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
|
||||
WinEDA_CreateCmpDialog Dialogbox( this );
|
||||
diag = Dialogbox.ShowModal();
|
||||
|
@ -512,15 +514,15 @@ lost!\n\nClear the current component from the screen?" ) ) )
|
|||
msg.Replace( wxT( " " ), wxT( "_" ) );
|
||||
|
||||
/* Test: y a t-il un composant deja de ce nom */
|
||||
if( CurrentLib )
|
||||
if( m_library )
|
||||
{
|
||||
if( CurrentLib->FindEntry( msg ) )
|
||||
if( m_library->FindEntry( msg ) )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "Component \"%s\" already exists in \
|
||||
library \"%s\"." ),
|
||||
(const wxChar*) Dialogbox.ReturnCmpName(),
|
||||
(const wxChar*) CurrentLib->GetName() );
|
||||
(const wxChar*) m_library->GetName() );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
|
@ -533,19 +535,19 @@ library \"%s\"." ),
|
|||
NewStruct->m_Prefix.m_Text.MakeUpper();
|
||||
|
||||
// Effacement ancien composant affich<63>
|
||||
if( m_currentComponent )
|
||||
if( m_component )
|
||||
{
|
||||
SAFE_DELETE( m_currentComponent );
|
||||
SAFE_DELETE( m_component );
|
||||
}
|
||||
m_currentComponent = NewStruct;
|
||||
CurrentUnit = 1;
|
||||
CurrentConvert = 1;
|
||||
m_component = NewStruct;
|
||||
m_unit = 1;
|
||||
m_convert = 1;
|
||||
DisplayLibInfos();
|
||||
DisplayCmpDoc();
|
||||
UpdateAliasSelectList();
|
||||
UpdatePartSelectList();
|
||||
g_EditPinByPinIsOn = false;
|
||||
LibItemToRepeat = NULL;
|
||||
m_lastDrawItem = NULL;
|
||||
GetScreen()->ClearUndoRedoList();
|
||||
DrawPanel->Refresh();
|
||||
}
|
||||
|
@ -564,24 +566,24 @@ void WinEDA_LibeditFrame::SaveOnePartInMemory()
|
|||
LIB_COMPONENT* Component;
|
||||
wxString msg;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
{
|
||||
DisplayError( this, _( "No component to save." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if( CurrentLib == NULL )
|
||||
if( m_library == NULL )
|
||||
SelectActiveLibrary();
|
||||
|
||||
if( CurrentLib == NULL )
|
||||
if( m_library == NULL )
|
||||
{
|
||||
DisplayError( this, _( "No library specified." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
g_ScreenLib->ClrModify();
|
||||
GetBaseScreen()->ClrModify();
|
||||
|
||||
oldComponent = CurrentLib->FindComponent( m_currentComponent->GetName() );
|
||||
oldComponent = m_library->FindComponent( m_component->GetName() );
|
||||
|
||||
if( oldComponent != NULL )
|
||||
{
|
||||
|
@ -591,19 +593,20 @@ void WinEDA_LibeditFrame::SaveOnePartInMemory()
|
|||
return;
|
||||
}
|
||||
|
||||
wxASSERT( m_currentComponent->Type == ROOT );
|
||||
m_drawItem = m_lastDrawItem = NULL;
|
||||
|
||||
wxASSERT( m_component->Type == ROOT );
|
||||
|
||||
if( oldComponent != NULL )
|
||||
Component = CurrentLib->ReplaceComponent( oldComponent,
|
||||
m_currentComponent );
|
||||
Component = m_library->ReplaceComponent( oldComponent, m_component );
|
||||
else
|
||||
Component = CurrentLib->AddComponent( m_currentComponent );
|
||||
Component = m_library->AddComponent( m_component );
|
||||
|
||||
if( Component == NULL )
|
||||
return;
|
||||
|
||||
msg.Printf( _( "Component %s saved in library %s" ),
|
||||
( const wxChar* ) Component->GetName(),
|
||||
( const wxChar* ) CurrentLib->GetName() );
|
||||
( const wxChar* ) m_library->GetName() );
|
||||
Affiche_Message( msg );
|
||||
}
|
||||
|
|
|
@ -13,24 +13,25 @@
|
|||
#include "eeschema_id.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "libcmp.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry = CurrentDrawItem;
|
||||
LIB_DRAW_ITEM* DrawEntry = m_drawItem;
|
||||
|
||||
if( m_currentComponent == NULL ) // No component loaded !
|
||||
if( m_component == NULL ) // No component loaded !
|
||||
return;
|
||||
|
||||
if( m_ID_current_state == 0 )
|
||||
{
|
||||
if( DrawEntry && DrawEntry->m_Flags )
|
||||
{
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
SaveCopyInUndoList( m_component );
|
||||
|
||||
switch( DrawEntry->Type() )
|
||||
{
|
||||
|
@ -50,28 +51,24 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
|||
}
|
||||
else
|
||||
{
|
||||
DrawEntry = LocatePin( GetScreen()->m_MousePosition,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert );
|
||||
DrawEntry = LocatePin( GetScreen()->m_MousePosition, m_component,
|
||||
m_unit, m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = LocateDrawItem( (SCH_SCREEN*)GetScreen(),
|
||||
GetScreen()->m_MousePosition,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert,
|
||||
m_component, m_unit, m_convert,
|
||||
LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
|
||||
if( DrawEntry == NULL )
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert );
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur, m_component,
|
||||
m_unit, m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = LocateDrawItem( (SCH_SCREEN*)GetScreen(),
|
||||
GetScreen()->m_Curseur,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert,
|
||||
m_component, m_unit, m_convert,
|
||||
LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
|
||||
|
@ -91,13 +88,13 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
|||
break;
|
||||
|
||||
case ID_LIBEDIT_PIN_BUTT:
|
||||
if( CurrentDrawItem == NULL || CurrentDrawItem->m_Flags == 0 )
|
||||
if( m_drawItem == NULL || m_drawItem->m_Flags == 0 )
|
||||
{
|
||||
CreatePin( DC );
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
SaveCopyInUndoList( m_component );
|
||||
PlacePin( DC );
|
||||
}
|
||||
break;
|
||||
|
@ -107,60 +104,57 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
|||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
||||
if( CurrentDrawItem == NULL || CurrentDrawItem->m_Flags == 0 )
|
||||
if( m_drawItem == NULL || m_drawItem->m_Flags == 0 )
|
||||
{
|
||||
CurrentDrawItem = CreateGraphicItem( m_currentComponent, DC );
|
||||
m_drawItem = CreateGraphicItem( m_component, DC );
|
||||
}
|
||||
else if( CurrentDrawItem )
|
||||
else if( m_drawItem )
|
||||
{
|
||||
if( CurrentDrawItem->m_Flags & IS_NEW )
|
||||
if( m_drawItem->m_Flags & IS_NEW )
|
||||
GraphicItemBeginDraw( DC );
|
||||
else
|
||||
{
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
SaveCopyInUndoList( m_component );
|
||||
EndDrawGraphicItem( DC );
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_DELETE_ITEM_BUTT:
|
||||
DrawEntry = LocatePin( GetScreen()->m_MousePosition,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert );
|
||||
DrawEntry = LocatePin( GetScreen()->m_MousePosition, m_component,
|
||||
m_unit, m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = LocateDrawItem( (SCH_SCREEN*)GetScreen(),
|
||||
GetScreen()->m_MousePosition,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert,
|
||||
m_component, m_unit, m_convert,
|
||||
LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
|
||||
if( DrawEntry == NULL )
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert );
|
||||
m_component, m_unit,
|
||||
m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = LocateDrawItem( (SCH_SCREEN*)GetScreen(),
|
||||
GetScreen()->m_Curseur,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert,
|
||||
m_component, m_unit, m_convert,
|
||||
LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
DisplayCmpDoc();
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
SaveCopyInUndoList( m_component );
|
||||
if( DrawEntry->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
DeletePin( DC, m_currentComponent, (LibDrawPin*) DrawEntry );
|
||||
DeletePin( DC, m_component, (LibDrawPin*) DrawEntry );
|
||||
else
|
||||
m_currentComponent->RemoveDrawItem( DrawEntry, DrawPanel, DC );
|
||||
m_component->RemoveDrawItem( DrawEntry, DrawPanel, DC );
|
||||
DrawEntry = NULL;
|
||||
GetScreen()->SetModify();
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
SaveCopyInUndoList( m_component );
|
||||
PlaceAncre();
|
||||
SetToolID( 0, wxCURSOR_ARROW, wxEmptyString );
|
||||
break;
|
||||
|
@ -183,39 +177,37 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
|||
*/
|
||||
void WinEDA_LibeditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||
{
|
||||
wxPoint pos = GetPosition();
|
||||
LibEDA_BaseStruct* DrawEntry = CurrentDrawItem;
|
||||
wxPoint pos = GetPosition();
|
||||
LIB_DRAW_ITEM* DrawEntry = m_drawItem;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
return;
|
||||
|
||||
if( ( DrawEntry == NULL ) || ( DrawEntry->m_Flags == 0 ) )
|
||||
{ // We can locate an item
|
||||
DrawEntry = LocatePin( GetScreen()->m_MousePosition, m_currentComponent,
|
||||
CurrentUnit, CurrentConvert );
|
||||
DrawEntry = LocatePin( GetScreen()->m_MousePosition, m_component,
|
||||
m_unit, m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur, m_currentComponent,
|
||||
CurrentUnit, CurrentConvert );
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur, m_component,
|
||||
m_unit, m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem =
|
||||
DrawEntry = m_drawItem =
|
||||
LocateDrawItem( (SCH_SCREEN*) GetScreen(),
|
||||
GetScreen()->m_MousePosition,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert, LOCATE_ALL_DRAW_ITEM );
|
||||
GetScreen()->m_MousePosition, m_component,
|
||||
m_unit, m_convert, LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem =
|
||||
DrawEntry = m_drawItem =
|
||||
LocateDrawItem( (SCH_SCREEN*) GetScreen(),
|
||||
GetScreen()->m_Curseur,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert, LOCATE_ALL_DRAW_ITEM );
|
||||
GetScreen()->m_Curseur, m_component, m_unit,
|
||||
m_convert, LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem =
|
||||
(LibEDA_BaseStruct*) LocateField( m_currentComponent );
|
||||
DrawEntry = m_drawItem =
|
||||
(LIB_DRAW_ITEM*) LocateField( m_component );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
|
@ -228,7 +220,7 @@ void WinEDA_LibeditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
|||
else
|
||||
return;
|
||||
|
||||
CurrentDrawItem = DrawEntry;
|
||||
m_drawItem = DrawEntry;
|
||||
|
||||
DrawPanel->m_IgnoreMouseEvents = TRUE;
|
||||
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
#include "hotkeys.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
/* functions to add commands and submenus depending on the item */
|
||||
|
@ -29,10 +29,10 @@ static void AddMenusForPin( wxMenu* PopMenu, LibDrawPin* Pin,
|
|||
bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos,
|
||||
wxMenu* PopMenu )
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry = LocateItemUsingCursor();
|
||||
LIB_DRAW_ITEM* DrawEntry = LocateItemUsingCursor();
|
||||
bool BlockActive = (GetScreen()->m_BlockLocate.m_Command != BLOCK_IDLE);
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
return true;
|
||||
|
||||
// If Command in progresss: put the menu "cancel" and "end tool"
|
||||
|
@ -68,7 +68,7 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos,
|
|||
else
|
||||
return true;
|
||||
|
||||
CurrentDrawItem = DrawEntry;
|
||||
m_drawItem = DrawEntry;
|
||||
wxString msg;
|
||||
|
||||
switch( DrawEntry->Type() )
|
||||
|
@ -211,7 +211,7 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos,
|
|||
StructType %d" ),
|
||||
DrawEntry->Type() );
|
||||
DisplayError( this, msg );
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -22,7 +22,7 @@ void WinEDA_LibeditFrame::SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy,
|
|||
LIB_COMPONENT* CopyItem;
|
||||
PICKED_ITEMS_LIST* lastcmd;
|
||||
|
||||
CopyItem = CopyLibEntryStruct( (LIB_COMPONENT*) ItemToCopy );
|
||||
CopyItem = new LIB_COMPONENT( *( (LIB_COMPONENT*) ItemToCopy ) );
|
||||
|
||||
if( CopyItem == NULL )
|
||||
return;
|
||||
|
@ -54,17 +54,17 @@ void WinEDA_LibeditFrame::GetComponentFromRedoList(wxCommandEvent& event)
|
|||
return;
|
||||
|
||||
PICKED_ITEMS_LIST* lastcmd = new PICKED_ITEMS_LIST();
|
||||
ITEM_PICKER wrapper(m_currentComponent, UR_LIBEDIT);
|
||||
ITEM_PICKER wrapper(m_component, UR_LIBEDIT);
|
||||
lastcmd->PushItem(wrapper);
|
||||
GetScreen()->PushCommandToUndoList( lastcmd );
|
||||
|
||||
lastcmd = GetScreen()->PopCommandFromRedoList( );
|
||||
|
||||
wrapper = lastcmd->PopItem();
|
||||
m_currentComponent = (LIB_COMPONENT*) wrapper.m_PickedItem;
|
||||
if( m_currentComponent )
|
||||
m_currentComponent->SetNext( NULL );
|
||||
CurrentDrawItem = NULL;
|
||||
m_component = (LIB_COMPONENT*) wrapper.m_PickedItem;
|
||||
if( m_component )
|
||||
m_component->SetNext( NULL );
|
||||
m_drawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
DrawPanel->Refresh();
|
||||
}
|
||||
|
@ -84,18 +84,18 @@ void WinEDA_LibeditFrame::GetComponentFromUndoList(wxCommandEvent& event)
|
|||
return;
|
||||
|
||||
PICKED_ITEMS_LIST* lastcmd = new PICKED_ITEMS_LIST();
|
||||
ITEM_PICKER wrapper(m_currentComponent, UR_LIBEDIT);
|
||||
ITEM_PICKER wrapper(m_component, UR_LIBEDIT);
|
||||
lastcmd->PushItem(wrapper);
|
||||
GetScreen()->PushCommandToRedoList( lastcmd );
|
||||
|
||||
lastcmd = GetScreen()->PopCommandFromUndoList( );
|
||||
|
||||
wrapper = lastcmd->PopItem();
|
||||
m_currentComponent = (LIB_COMPONENT*) wrapper.m_PickedItem;
|
||||
m_component = (LIB_COMPONENT*) wrapper.m_PickedItem;
|
||||
|
||||
if( m_currentComponent )
|
||||
m_currentComponent->SetNext( NULL );
|
||||
CurrentDrawItem = NULL;
|
||||
if( m_component )
|
||||
m_component->SetNext( NULL );
|
||||
m_drawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
DrawPanel->Refresh();
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ class SCH_SCREEN;
|
|||
class CMP_LIBRARY;
|
||||
class LIB_COMPONENT;
|
||||
class LIB_ALIAS;
|
||||
class LIB_DRAW_ITEM;
|
||||
|
||||
/**
|
||||
* The component library editor main window.
|
||||
|
@ -39,6 +40,10 @@ public:
|
|||
void CreateNewLibraryPart( wxCommandEvent& event );
|
||||
void OnEditComponentProperties( wxCommandEvent& event );
|
||||
void InstallFieldsEditorDialog( wxCommandEvent& event );
|
||||
void LoadOneLibraryPart( wxCommandEvent& event );
|
||||
void OnViewEntryDoc( wxCommandEvent& event );
|
||||
void OnCheckComponent( wxCommandEvent& event );
|
||||
void OnSelectBodyStyle( wxCommandEvent& event );
|
||||
|
||||
void OnUpdateEditingPart( wxUpdateUIEvent& event );
|
||||
void OnUpdateNotEditingPart( wxUpdateUIEvent& event );
|
||||
|
@ -74,17 +79,51 @@ public:
|
|||
void LoadSettings();
|
||||
void SaveSettings();
|
||||
|
||||
LIB_COMPONENT* GetCurrentComponent( void )
|
||||
LIB_COMPONENT* GetComponent( void ) { return m_component; }
|
||||
|
||||
CMP_LIBRARY* GetLibrary( void ) { return m_library; }
|
||||
|
||||
wxString& GetAliasName( void ) { return m_aliasName; }
|
||||
|
||||
int GetUnit( void ) { return m_unit; }
|
||||
|
||||
void SetUnit( int unit )
|
||||
{
|
||||
return m_currentComponent;
|
||||
wxASSERT( unit >= 1 );
|
||||
m_unit = unit;
|
||||
}
|
||||
|
||||
int GetConvert( void ) { return m_convert; }
|
||||
|
||||
void SetConvert( int convert )
|
||||
{
|
||||
wxASSERT( convert >= 1 );
|
||||
m_convert = convert;
|
||||
}
|
||||
|
||||
LIB_DRAW_ITEM* GetLastDrawItem( void ) { return m_lastDrawItem; }
|
||||
|
||||
void SetLastDrawItem( LIB_DRAW_ITEM* drawItem )
|
||||
{
|
||||
m_lastDrawItem = drawItem;
|
||||
}
|
||||
|
||||
LIB_DRAW_ITEM* GetDrawItem( void ) { return m_drawItem; }
|
||||
|
||||
void SetDrawItem( LIB_DRAW_ITEM* drawItem )
|
||||
{
|
||||
m_drawItem = drawItem;
|
||||
}
|
||||
|
||||
bool GetShowDeMorgan( void ) { return m_showDeMorgan; }
|
||||
|
||||
void SetShowDeMorgan( bool show ) { m_showDeMorgan = show; }
|
||||
|
||||
private:
|
||||
|
||||
// General:
|
||||
void SaveOnePartInMemory();
|
||||
void SelectActiveLibrary();
|
||||
bool LoadOneLibraryPart();
|
||||
void SaveActiveLibrary( wxCommandEvent& event );
|
||||
|
||||
bool LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry,
|
||||
|
@ -109,26 +148,23 @@ private:
|
|||
LibDrawPin* Pin );
|
||||
void StartMovePin( wxDC* DC );
|
||||
|
||||
// Test des pins ( duplicates...)
|
||||
bool TestPins( LIB_COMPONENT* LibEntry );
|
||||
|
||||
// Edition de l'ancre
|
||||
void PlaceAncre();
|
||||
|
||||
// Edition des graphismes:
|
||||
LibEDA_BaseStruct* CreateGraphicItem( LIB_COMPONENT* LibEntry, wxDC* DC );
|
||||
LIB_DRAW_ITEM* CreateGraphicItem( LIB_COMPONENT* LibEntry, wxDC* DC );
|
||||
void GraphicItemBeginDraw( wxDC* DC );
|
||||
void StartMoveDrawSymbol( wxDC* DC );
|
||||
void EndDrawGraphicItem( wxDC* DC );
|
||||
void LoadOneSymbol();
|
||||
void SaveOneSymbol();
|
||||
void EditGraphicSymbol( wxDC* DC,
|
||||
LibEDA_BaseStruct* DrawItem );
|
||||
void EditSymbolText( wxDC* DC, LibEDA_BaseStruct* DrawItem );
|
||||
LIB_DRAW_ITEM* DrawItem );
|
||||
void EditSymbolText( wxDC* DC, LIB_DRAW_ITEM* DrawItem );
|
||||
void RotateSymbolText( wxDC* DC );
|
||||
void DeleteDrawPoly( wxDC* DC );
|
||||
LibDrawField* LocateField( LIB_COMPONENT* LibEntry );
|
||||
LibEDA_BaseStruct* LocateItemUsingCursor();
|
||||
LIB_DRAW_ITEM* LocateItemUsingCursor();
|
||||
void RotateField( wxDC* DC, LibDrawField* Field );
|
||||
void PlaceField( wxDC* DC, LibDrawField* Field );
|
||||
void EditField( wxDC* DC, LibDrawField* Field );
|
||||
|
@ -152,7 +188,15 @@ protected:
|
|||
wxString m_LastLibImportPath;
|
||||
wxString m_LastLibExportPath;
|
||||
|
||||
static LIB_COMPONENT* m_currentComponent;
|
||||
static LIB_COMPONENT* m_component;
|
||||
static CMP_LIBRARY* m_library;
|
||||
static LIB_DRAW_ITEM* m_lastDrawItem;
|
||||
static LIB_DRAW_ITEM* m_drawItem;
|
||||
static wxString m_aliasName;
|
||||
static int m_unit;
|
||||
static int m_convert;
|
||||
static bool m_showDeMorgan;
|
||||
static wxSize m_clientSize;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
|
|
@ -9,10 +9,11 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "libcmp.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/* Routines locales */
|
||||
|
@ -20,7 +21,7 @@ static void ShowMoveField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
|||
|
||||
|
||||
/* Variables locales */
|
||||
extern int CurrentUnit;
|
||||
extern int m_unit;
|
||||
static wxPoint StartCursor, LastTextPosition;
|
||||
|
||||
|
||||
|
@ -28,7 +29,15 @@ static void ExitMoveField( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
{
|
||||
Panel->ManageCurseur = NULL;
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
if( CurrentDrawItem == NULL )
|
||||
|
||||
WinEDA_LibeditFrame* parent = ( WinEDA_LibeditFrame* ) Panel->GetParent();
|
||||
|
||||
if( parent == NULL )
|
||||
return;
|
||||
|
||||
LIB_DRAW_ITEM* item = parent->GetDrawItem();
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
wxPoint curpos = Panel->GetScreen()->m_Curseur;
|
||||
|
@ -36,9 +45,8 @@ static void ExitMoveField( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
Panel->GetScreen()->m_Curseur = StartCursor;
|
||||
ShowMoveField( Panel, DC, TRUE );
|
||||
Panel->GetScreen()->m_Curseur = curpos;
|
||||
CurrentDrawItem->m_Flags = 0;
|
||||
|
||||
CurrentDrawItem = NULL;
|
||||
item->m_Flags = 0;
|
||||
parent->SetDrawItem( NULL );
|
||||
}
|
||||
|
||||
|
||||
|
@ -49,12 +57,12 @@ void WinEDA_LibeditFrame::StartMoveField( wxDC* DC, LibDrawField* field )
|
|||
{
|
||||
wxPoint startPos;
|
||||
|
||||
if( ( m_currentComponent == NULL ) || ( field == NULL ) )
|
||||
if( ( m_component == NULL ) || ( field == NULL ) )
|
||||
return;
|
||||
|
||||
CurrentDrawItem = field;
|
||||
m_drawItem = field;
|
||||
LastTextPosition = field->m_Pos;
|
||||
CurrentDrawItem->m_Flags |= IS_MOVED;
|
||||
m_drawItem->m_Flags |= IS_MOVED;
|
||||
|
||||
startPos.x = LastTextPosition.x;
|
||||
startPos.y = -LastTextPosition.y;
|
||||
|
@ -77,12 +85,17 @@ void WinEDA_LibeditFrame::StartMoveField( wxDC* DC, LibDrawField* field )
|
|||
/*****************************************************************/
|
||||
static void ShowMoveField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
||||
{
|
||||
LibDrawField* Field = (LibDrawField*) CurrentDrawItem;
|
||||
WinEDA_LibeditFrame* parent = (WinEDA_LibeditFrame*) panel->GetParent();
|
||||
|
||||
if( parent == NULL )
|
||||
return;
|
||||
|
||||
LibDrawField* Field = (LibDrawField*) parent->GetDrawItem();
|
||||
|
||||
if( Field == NULL )
|
||||
return;
|
||||
|
||||
wxString text = Field->GetFullText();
|
||||
wxString text = Field->GetFullText( parent->GetUnit() );
|
||||
|
||||
if( erase )
|
||||
Field->Draw( panel, DC, wxPoint( 0, 0 ), -1, g_XorMode, &text,
|
||||
|
@ -107,7 +120,7 @@ void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field )
|
|||
Field->m_Pos.y = -GetScreen()->m_Curseur.y;
|
||||
DrawPanel->CursorOff( DC );
|
||||
|
||||
wxString fieldText = Field->GetFullText();
|
||||
wxString fieldText = Field->GetFullText( m_unit );
|
||||
|
||||
Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, GR_DEFAULT_DRAWMODE,
|
||||
&fieldText, DefaultTransformMatrix );
|
||||
|
@ -116,7 +129,7 @@ void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field )
|
|||
GetScreen()->SetModify();
|
||||
DrawPanel->ManageCurseur = NULL;
|
||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -148,13 +161,12 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LibDrawField* Field )
|
|||
Get_Message( title, _( "Edit field" ), Text, this );
|
||||
Text.Replace( wxT( " " ), wxT( "_" ) );
|
||||
|
||||
/* If the value is changed, this is equivalent to create a new component
|
||||
* from the old one.
|
||||
* So we must check for an existing alias of this "new" component
|
||||
* and change the value only if there is no existing alias with the same
|
||||
* name for this component
|
||||
/* If the value field is changed, this is equivalent to creating a new
|
||||
* component from the old one. Check for an existing library entry of
|
||||
* this "new" component and change the value only if there is no existing
|
||||
* entry with the same name.
|
||||
*/
|
||||
if( Field->m_FieldId == VALUE )
|
||||
if( Field->m_FieldId == VALUE && Text != Field->m_Text )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
|
@ -173,19 +185,19 @@ names in the alias list." ),
|
|||
/* Test for an existing entry in the library to prevent duplicate
|
||||
* entry names.
|
||||
*/
|
||||
if( CurrentLib && CurrentLib->FindEntry( Text ) != NULL )
|
||||
if( m_library && m_library->FindEntry( Text ) != NULL )
|
||||
{
|
||||
msg.Printf( _( "The field name <%s> conflicts with an existing \
|
||||
entry in the component library <%s>.\nPlease choose another name that does \
|
||||
not conflict with any library entries." ),
|
||||
(const wxChar*) Text,
|
||||
(const wxChar*) CurrentLib->GetName() );
|
||||
(const wxChar*) m_library->GetName() );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
wxString fieldText = Field->GetFullText();
|
||||
wxString fieldText = Field->GetFullText( m_unit );
|
||||
|
||||
Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode, &fieldText,
|
||||
DefaultTransformMatrix );
|
||||
|
@ -200,7 +212,7 @@ not conflict with any library entries." ),
|
|||
DisplayError( this, _( "No new text: no change" ) );
|
||||
}
|
||||
|
||||
fieldText = Field->GetFullText();
|
||||
fieldText = Field->GetFullText( m_unit );
|
||||
int drawMode = g_XorMode;
|
||||
|
||||
if( Field->m_Flags == 0 )
|
||||
|
@ -229,7 +241,7 @@ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LibDrawField* Field )
|
|||
DrawPanel->CursorOff( DC );
|
||||
GRSetDrawMode( DC, g_XorMode );
|
||||
|
||||
wxString fieldText = Field->GetFullText();
|
||||
wxString fieldText = Field->GetFullText( m_unit );
|
||||
|
||||
Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode, &fieldText,
|
||||
DefaultTransformMatrix );
|
||||
|
@ -283,37 +295,35 @@ LibDrawField* WinEDA_LibeditFrame::LocateField( LIB_COMPONENT* LibEntry )
|
|||
}
|
||||
|
||||
|
||||
LibEDA_BaseStruct* WinEDA_LibeditFrame::LocateItemUsingCursor()
|
||||
LIB_DRAW_ITEM* WinEDA_LibeditFrame::LocateItemUsingCursor()
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry = CurrentDrawItem;
|
||||
LIB_DRAW_ITEM* DrawEntry = m_drawItem;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
return NULL;
|
||||
|
||||
if( ( DrawEntry == NULL ) || ( DrawEntry->m_Flags == 0 ) )
|
||||
{
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur, m_currentComponent,
|
||||
CurrentUnit, CurrentConvert );
|
||||
DrawEntry = LocatePin( GetScreen()->m_Curseur, m_component,
|
||||
m_unit, m_convert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem =
|
||||
DrawEntry = m_drawItem =
|
||||
LocateDrawItem( (SCH_SCREEN*) GetScreen(),
|
||||
GetScreen()->m_MousePosition,
|
||||
m_currentComponent, CurrentUnit,
|
||||
CurrentConvert, LOCATE_ALL_DRAW_ITEM );
|
||||
GetScreen()->m_MousePosition, m_component,
|
||||
m_unit, m_convert, LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem =
|
||||
DrawEntry = m_drawItem =
|
||||
LocateDrawItem( (SCH_SCREEN*) GetScreen(),
|
||||
GetScreen()->m_Curseur, m_currentComponent,
|
||||
CurrentUnit, CurrentConvert,
|
||||
LOCATE_ALL_DRAW_ITEM );
|
||||
GetScreen()->m_Curseur, m_component,
|
||||
m_unit, m_convert, LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem =
|
||||
(LibEDA_BaseStruct*) LocateField( m_currentComponent );
|
||||
DrawEntry = m_drawItem =
|
||||
(LIB_DRAW_ITEM*) LocateField( m_component );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,24 +2,20 @@
|
|||
/* EESchema - libframe.cpp */
|
||||
/****************************/
|
||||
|
||||
/* Gestion de la frame d'edition des composants en librairie
|
||||
*/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "appl_wxstruct.h"
|
||||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "eda_doc.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "bitmaps.h"
|
||||
#include "protos.h"
|
||||
#include "eeschema_id.h"
|
||||
#include "class_library.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
|
@ -29,7 +25,7 @@ const wxString lastLibExportPathEntry( wxT( "LastLibraryExportPath" ) );
|
|||
const wxString lastLibImportPathEntry( wxT( "LastLibraryImportPath" ) );
|
||||
const wxString showGridPathEntry( wxT( "ShowGrid" ) );
|
||||
|
||||
/* This method guarentees unique IDs for the library this run of Eeschema
|
||||
/* This method guarantees unique IDs for the library this run of Eeschema
|
||||
* which prevents ID conflicts and eliminates the need to recompile every
|
||||
* source file in the project when adding IDs to include/id.h. */
|
||||
int ExportPartId = ::wxNewId();
|
||||
|
@ -37,7 +33,21 @@ int ImportPartId = ::wxNewId();
|
|||
int CreateNewLibAndSavePartId = ::wxNewId();
|
||||
|
||||
|
||||
LIB_COMPONENT* WinEDA_LibeditFrame::m_currentComponent = NULL;
|
||||
/*
|
||||
* Static component library editor members. These are static so their
|
||||
* state is saved between editing sessions. This way the last component
|
||||
* that was being edited will be displayed. These members are protected
|
||||
* making it necessary to use the class access methods.
|
||||
*/
|
||||
LIB_COMPONENT* WinEDA_LibeditFrame::m_component = NULL;
|
||||
CMP_LIBRARY* WinEDA_LibeditFrame::m_library = NULL;
|
||||
wxString WinEDA_LibeditFrame::m_aliasName;
|
||||
int WinEDA_LibeditFrame::m_unit = 1;
|
||||
int WinEDA_LibeditFrame::m_convert = 1;
|
||||
LIB_DRAW_ITEM* WinEDA_LibeditFrame::m_lastDrawItem = NULL;
|
||||
LIB_DRAW_ITEM* WinEDA_LibeditFrame::m_drawItem = NULL;
|
||||
bool WinEDA_LibeditFrame::m_showDeMorgan = false;
|
||||
wxSize WinEDA_LibeditFrame::m_clientSize = wxSize( -1, -1 );
|
||||
|
||||
|
||||
/*****************************/
|
||||
|
@ -58,7 +68,7 @@ BEGIN_EVENT_TABLE( WinEDA_LibeditFrame, WinEDA_DrawFrame )
|
|||
EVT_TOOL( ID_LIBEDIT_NEW_PART,
|
||||
WinEDA_LibeditFrame::CreateNewLibraryPart )
|
||||
EVT_TOOL( ID_LIBEDIT_SELECT_PART,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
WinEDA_LibeditFrame::LoadOneLibraryPart )
|
||||
EVT_TOOL( ID_LIBEDIT_SAVE_CURRENT_PART,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
EVT_TOOL( ID_LIBEDIT_UNDO,
|
||||
|
@ -70,13 +80,13 @@ BEGIN_EVENT_TABLE( WinEDA_LibeditFrame, WinEDA_DrawFrame )
|
|||
EVT_TOOL( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS,
|
||||
WinEDA_LibeditFrame::InstallFieldsEditorDialog )
|
||||
EVT_TOOL( ID_LIBEDIT_CHECK_PART,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
WinEDA_LibeditFrame::OnCheckComponent )
|
||||
EVT_TOOL( ID_DE_MORGAN_NORMAL_BUTT,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
WinEDA_LibeditFrame::OnSelectBodyStyle )
|
||||
EVT_TOOL( ID_DE_MORGAN_CONVERT_BUTT,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
WinEDA_LibeditFrame::OnSelectBodyStyle )
|
||||
EVT_TOOL( ID_LIBEDIT_VIEW_DOC,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
WinEDA_LibeditFrame::OnViewEntryDoc )
|
||||
EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_PIN,
|
||||
WinEDA_LibeditFrame::Process_Special_Functions )
|
||||
EVT_TOOL( ExportPartId, WinEDA_LibeditFrame::OnExportPart )
|
||||
|
@ -147,7 +157,7 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father,
|
|||
|
||||
// Give an icon
|
||||
SetIcon( wxIcon( libedit_xpm ) );
|
||||
SetBaseScreen( g_ScreenLib );
|
||||
SetBaseScreen( new SCH_SCREEN() );
|
||||
GetScreen()->m_Center = true;
|
||||
LoadSettings();
|
||||
SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
|
||||
|
@ -159,7 +169,7 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father,
|
|||
DisplayCmpDoc();
|
||||
UpdateAliasSelectList();
|
||||
UpdatePartSelectList();
|
||||
BestZoom();
|
||||
Zoom_Automatique( false );
|
||||
Show( true );
|
||||
}
|
||||
|
||||
|
@ -169,6 +179,7 @@ WinEDA_LibeditFrame::~WinEDA_LibeditFrame()
|
|||
WinEDA_SchematicFrame* frame =
|
||||
(WinEDA_SchematicFrame*) wxGetApp().GetTopWindow();
|
||||
frame->m_LibeditFrame = NULL;
|
||||
m_drawItem = m_lastDrawItem = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -178,7 +189,7 @@ WinEDA_LibeditFrame::~WinEDA_LibeditFrame()
|
|||
* Don't forget to call this base method from any derived classes or the
|
||||
* settings will not get loaded.
|
||||
*/
|
||||
void WinEDA_LibeditFrame::LoadSettings( )
|
||||
void WinEDA_LibeditFrame::LoadSettings()
|
||||
{
|
||||
wxConfig* cfg;
|
||||
|
||||
|
@ -248,41 +259,52 @@ void WinEDA_LibeditFrame::OnCloseWindow( wxCloseEvent& Event )
|
|||
int WinEDA_LibeditFrame::BestZoom()
|
||||
{
|
||||
int dx, dy, ii, jj;
|
||||
int bestzoom;
|
||||
wxSize size;
|
||||
EDA_Rect BoundaryBox;
|
||||
|
||||
if( m_currentComponent )
|
||||
if( m_component )
|
||||
{
|
||||
BoundaryBox = m_currentComponent->GetBoundaryBox( CurrentUnit,
|
||||
CurrentConvert );
|
||||
BoundaryBox = m_component->GetBoundaryBox( m_unit, m_convert );
|
||||
dx = BoundaryBox.GetWidth();
|
||||
dy = BoundaryBox.GetHeight();
|
||||
GetScreen()->m_Curseur = BoundaryBox.Centre();
|
||||
}
|
||||
else
|
||||
{
|
||||
dx = GetScreen()->m_CurrentSheetDesc->m_Size.x;
|
||||
dy = GetScreen()->m_CurrentSheetDesc->m_Size.y;
|
||||
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
||||
}
|
||||
|
||||
size = DrawPanel->GetClientSize();
|
||||
size -= wxSize( 100, 100 ); // reserve 100 mils margin
|
||||
ii = abs( dx / size.x );
|
||||
jj = abs( dy / size.y );
|
||||
|
||||
bestzoom = MAX( ii, jj ) + 1;
|
||||
|
||||
if( m_currentComponent )
|
||||
/*
|
||||
* This fixes a bug where the client size of the drawing area is not
|
||||
* correctly reported until after the window is shown. This is most
|
||||
* likely due to the unmanaged windows ( vertical tool bars and message
|
||||
* panel ) that are drawn in the main window which wxWidgets knows
|
||||
* nothing about. When the library editor is reopened with a component
|
||||
* already loading, the zoom will be calculated correctly.
|
||||
*/
|
||||
if( !IsShownOnScreen() )
|
||||
{
|
||||
GetScreen()->m_Curseur = BoundaryBox.Centre();
|
||||
if( m_clientSize != wxSize( -1, -1 ) )
|
||||
size = m_clientSize;
|
||||
else
|
||||
size = DrawPanel->GetClientSize();
|
||||
}
|
||||
else
|
||||
{
|
||||
GetScreen()->m_Curseur.x = 0;
|
||||
GetScreen()->m_Curseur.y = 0;
|
||||
if( m_clientSize == wxSize( -1, -1 ) )
|
||||
m_clientSize = DrawPanel->GetClientSize();
|
||||
size = m_clientSize;
|
||||
}
|
||||
|
||||
return bestzoom * GetScreen()->m_ZoomScalar;
|
||||
size -= wxSize( 25, 25 ); // reserve 100 mils margin
|
||||
ii = wxRound( ( (double) dx / (double) size.x ) *
|
||||
(double) GetScreen()->m_ZoomScalar );
|
||||
jj = wxRound( ( (double) dy / (double) size.y ) *
|
||||
(double) GetScreen()->m_ZoomScalar );
|
||||
|
||||
return MAX( ii + 1, jj + 1 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -293,17 +315,17 @@ void WinEDA_LibeditFrame::UpdateAliasSelectList()
|
|||
|
||||
m_SelAliasBox->Clear();
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
return;
|
||||
|
||||
m_SelAliasBox->Append( m_currentComponent->GetName() );
|
||||
m_SelAliasBox->Append( m_component->GetName() );
|
||||
m_SelAliasBox->SetSelection( 0 );
|
||||
|
||||
if( !m_currentComponent->m_AliasList.IsEmpty() )
|
||||
if( !m_component->m_AliasList.IsEmpty() )
|
||||
{
|
||||
m_SelAliasBox->Append( m_currentComponent->m_AliasList );
|
||||
m_SelAliasBox->Append( m_component->m_AliasList );
|
||||
|
||||
int index = m_SelAliasBox->FindString( CurrentAliasName );
|
||||
int index = m_SelAliasBox->FindString( m_aliasName );
|
||||
|
||||
if( index != wxNOT_FOUND )
|
||||
m_SelAliasBox->SetSelection( index );
|
||||
|
@ -320,13 +342,13 @@ void WinEDA_LibeditFrame::UpdatePartSelectList()
|
|||
if( m_SelpartBox->GetCount() != 0 )
|
||||
m_SelpartBox->Clear();
|
||||
|
||||
if( m_currentComponent == NULL || m_currentComponent->m_UnitCount <= 1 )
|
||||
if( m_component == NULL || m_component->m_UnitCount <= 1 )
|
||||
{
|
||||
m_SelpartBox->Append( wxEmptyString );
|
||||
}
|
||||
else
|
||||
{
|
||||
for( int i = 0; i < m_currentComponent->m_UnitCount; i++ )
|
||||
for( int i = 0; i < m_component->m_UnitCount; i++ )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "Part %c" ), 'A' + i );
|
||||
|
@ -334,40 +356,40 @@ void WinEDA_LibeditFrame::UpdatePartSelectList()
|
|||
}
|
||||
}
|
||||
|
||||
m_SelpartBox->SetSelection( ( CurrentUnit > 0 ) ? CurrentUnit - 1 : 0 );
|
||||
m_SelpartBox->SetSelection( ( m_unit > 0 ) ? m_unit - 1 : 0 );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnUpdateEditingPart( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( m_currentComponent != NULL );
|
||||
event.Enable( m_component != NULL );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnUpdateNotEditingPart( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( m_currentComponent == NULL );
|
||||
event.Enable( m_component == NULL );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnUpdateUndo( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( m_currentComponent != NULL && GetScreen() != NULL
|
||||
event.Enable( m_component != NULL && GetScreen() != NULL
|
||||
&& GetScreen()->GetUndoCommandCount() != 0 );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnUpdateRedo( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( m_currentComponent != NULL && GetScreen() != NULL
|
||||
event.Enable( m_component != NULL && GetScreen() != NULL
|
||||
&& GetScreen()->GetRedoCommandCount() != 0 );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnUpdateSaveCurrentLib( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( CurrentLib != NULL
|
||||
&& ( CurrentLib->IsModified() || GetScreen()->IsModify() ) );
|
||||
event.Enable( m_library != NULL
|
||||
&& ( m_library->IsModified()|| GetScreen()->IsModify() ) );
|
||||
}
|
||||
|
||||
|
||||
|
@ -375,16 +397,16 @@ void WinEDA_LibeditFrame::OnUpdateViewDoc( wxUpdateUIEvent& event )
|
|||
{
|
||||
bool enable = false;
|
||||
|
||||
if( m_currentComponent != NULL && CurrentLib != NULL )
|
||||
if( m_component != NULL && m_library != NULL )
|
||||
{
|
||||
if( !CurrentAliasName.IsEmpty() )
|
||||
if( !m_aliasName.IsEmpty() )
|
||||
{
|
||||
CMP_LIB_ENTRY* entry = CurrentLib->FindEntry( CurrentAliasName );
|
||||
CMP_LIB_ENTRY* entry = m_library->FindEntry( m_aliasName );
|
||||
|
||||
if( entry != NULL )
|
||||
enable = !entry->m_DocFile.IsEmpty();
|
||||
}
|
||||
else if( !m_currentComponent->m_DocFile.IsEmpty() )
|
||||
else if( !m_component->m_DocFile.IsEmpty() )
|
||||
{
|
||||
enable = true;
|
||||
}
|
||||
|
@ -396,9 +418,8 @@ void WinEDA_LibeditFrame::OnUpdateViewDoc( wxUpdateUIEvent& event )
|
|||
|
||||
void WinEDA_LibeditFrame::OnUpdatePinByPin( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( ( m_currentComponent != NULL )
|
||||
&& ( ( m_currentComponent->m_UnitCount > 1 )
|
||||
|| g_AsDeMorgan ) );
|
||||
event.Enable( ( m_component != NULL )
|
||||
&& ( ( m_component->m_UnitCount > 1 ) || m_showDeMorgan ) );
|
||||
|
||||
if( m_HToolBar )
|
||||
m_HToolBar->ToggleTool( event.GetId(), g_EditPinByPinIsOn );
|
||||
|
@ -410,11 +431,11 @@ void WinEDA_LibeditFrame::OnUpdatePartNumber( wxUpdateUIEvent& event )
|
|||
if( m_SelpartBox == NULL )
|
||||
return;
|
||||
|
||||
/* Using the typical event.Enable() call dosen't seem to work with wxGTK
|
||||
/* Using the typical event.Enable() call doesn't seem to work with wxGTK
|
||||
* so use the pointer to alias combobox to directly enable or disable.
|
||||
*/
|
||||
m_SelpartBox->Enable( m_currentComponent != NULL
|
||||
&& m_currentComponent->m_UnitCount > 1 );
|
||||
m_SelpartBox->Enable( m_component != NULL
|
||||
&& m_component->m_UnitCount > 1 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -423,9 +444,9 @@ void WinEDA_LibeditFrame::OnUpdateDeMorganNormal( wxUpdateUIEvent& event )
|
|||
if( m_HToolBar == NULL )
|
||||
return;
|
||||
|
||||
event.Enable( m_currentComponent != NULL
|
||||
&& m_currentComponent->HasConversion() );
|
||||
m_HToolBar->ToggleTool( event.GetId(), CurrentConvert <= 1 );
|
||||
event.Enable( m_component != NULL
|
||||
&& m_component->HasConversion() );
|
||||
m_HToolBar->ToggleTool( event.GetId(), m_convert <= 1 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -434,9 +455,9 @@ void WinEDA_LibeditFrame::OnUpdateDeMorganConvert( wxUpdateUIEvent& event )
|
|||
if( m_HToolBar == NULL )
|
||||
return;
|
||||
|
||||
event.Enable( m_currentComponent != NULL
|
||||
&& m_currentComponent->HasConversion() );
|
||||
m_HToolBar->ToggleTool( event.GetId(), CurrentConvert > 1 );
|
||||
event.Enable( m_component != NULL
|
||||
&& m_component->HasConversion() );
|
||||
m_HToolBar->ToggleTool( event.GetId(), m_convert > 1 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -445,26 +466,26 @@ void WinEDA_LibeditFrame::OnUpdateSelectAlias( wxUpdateUIEvent& event )
|
|||
if( m_SelAliasBox == NULL )
|
||||
return;
|
||||
|
||||
/* Using the typical event.Enable() call dosen't seem to work with wxGTK
|
||||
/* Using the typical event.Enable() call doesn't seem to work with wxGTK
|
||||
* so use the pointer to alias combobox to directly enable or disable.
|
||||
*/
|
||||
m_SelAliasBox->Enable( m_currentComponent != NULL
|
||||
&& !m_currentComponent->m_AliasList.IsEmpty() );
|
||||
m_SelAliasBox->Enable( m_component != NULL
|
||||
&& !m_component->m_AliasList.IsEmpty() );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnSelectAlias( wxCommandEvent& event )
|
||||
{
|
||||
if( m_SelAliasBox == NULL
|
||||
|| m_SelAliasBox->GetStringSelection().CmpNoCase( CurrentAliasName ) == 0 )
|
||||
|| m_SelAliasBox->GetStringSelection().CmpNoCase( m_aliasName ) == 0 )
|
||||
return;
|
||||
|
||||
LibItemToRepeat = NULL;
|
||||
m_lastDrawItem = NULL;
|
||||
|
||||
if( m_SelAliasBox->GetStringSelection().CmpNoCase(m_currentComponent->GetName() ) == 0 )
|
||||
CurrentAliasName.Empty();
|
||||
if( m_SelAliasBox->GetStringSelection().CmpNoCase(m_component->GetName() ) == 0 )
|
||||
m_aliasName.Empty();
|
||||
else
|
||||
CurrentAliasName = m_SelAliasBox->GetStringSelection();
|
||||
m_aliasName = m_SelAliasBox->GetStringSelection();
|
||||
|
||||
DisplayCmpDoc();
|
||||
DrawPanel->Refresh();
|
||||
|
@ -475,16 +496,56 @@ void WinEDA_LibeditFrame::OnSelectPart( wxCommandEvent& event )
|
|||
{
|
||||
int i = event.GetSelection();
|
||||
|
||||
if( ( i == wxNOT_FOUND ) || ( ( i + 1 ) == CurrentUnit ) )
|
||||
if( ( i == wxNOT_FOUND ) || ( ( i + 1 ) == m_unit ) )
|
||||
return;
|
||||
|
||||
LibItemToRepeat = NULL;
|
||||
CurrentUnit = i + 1;
|
||||
m_lastDrawItem = NULL;
|
||||
m_unit = i + 1;
|
||||
DrawPanel->Refresh();
|
||||
DisplayCmpDoc();
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnViewEntryDoc( wxCommandEvent& event )
|
||||
{
|
||||
if( m_component == NULL )
|
||||
return;
|
||||
|
||||
wxString fileName;
|
||||
|
||||
if( !m_aliasName.IsEmpty() )
|
||||
{
|
||||
CMP_LIB_ENTRY* entry =
|
||||
m_library->FindEntry( m_aliasName );
|
||||
|
||||
if( entry != NULL )
|
||||
fileName = entry->m_DocFile;
|
||||
}
|
||||
else
|
||||
{
|
||||
fileName = m_component->m_DocFile;
|
||||
}
|
||||
|
||||
if( !fileName.IsEmpty() )
|
||||
GetAssociatedDocument( this, fileName,
|
||||
&wxGetApp().GetLibraryPathList() );
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::OnSelectBodyStyle( wxCommandEvent& event )
|
||||
{
|
||||
DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
|
||||
|
||||
if( event.GetId() == ID_DE_MORGAN_NORMAL_BUTT )
|
||||
m_convert = 1;
|
||||
else
|
||||
m_convert = 2;
|
||||
|
||||
m_lastDrawItem = NULL;
|
||||
DrawPanel->Refresh();
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||
{
|
||||
int id = event.GetId();
|
||||
|
@ -538,56 +599,10 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
SelectActiveLibrary();
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_SELECT_PART:
|
||||
LibItemToRepeat = NULL;
|
||||
if( LoadOneLibraryPart() )
|
||||
{
|
||||
g_EditPinByPinIsOn = false;
|
||||
GetScreen()->ClearUndoRedoList();
|
||||
}
|
||||
DrawPanel->Refresh();
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_SAVE_CURRENT_PART:
|
||||
SaveOnePartInMemory();
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_CHECK_PART:
|
||||
if( m_currentComponent && TestPins( m_currentComponent ) == false )
|
||||
DisplayInfoMessage( this, _( " Pins Test OK!" ) );
|
||||
break;
|
||||
|
||||
case ID_DE_MORGAN_NORMAL_BUTT:
|
||||
LibItemToRepeat = NULL;
|
||||
CurrentConvert = 1;
|
||||
DrawPanel->Refresh();
|
||||
break;
|
||||
|
||||
case ID_DE_MORGAN_CONVERT_BUTT:
|
||||
LibItemToRepeat = NULL;
|
||||
CurrentConvert = 2;
|
||||
DrawPanel->Refresh();
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_VIEW_DOC:
|
||||
if( m_currentComponent )
|
||||
{
|
||||
wxString docfilename;
|
||||
if( !CurrentAliasName.IsEmpty() )
|
||||
{
|
||||
CMP_LIB_ENTRY* entry = CurrentLib->FindEntry( CurrentAliasName );
|
||||
if( entry != NULL )
|
||||
docfilename = entry->m_DocFile;
|
||||
}
|
||||
else
|
||||
docfilename = m_currentComponent->m_DocFile;
|
||||
|
||||
if( !docfilename.IsEmpty() )
|
||||
GetAssociatedDocument( this, docfilename,
|
||||
&wxGetApp().GetLibraryPathList() );
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_EDIT_PIN_BY_PIN:
|
||||
g_EditPinByPinIsOn = g_EditPinByPinIsOn ? false : true;
|
||||
break;
|
||||
|
@ -597,13 +612,13 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case ID_LIBEDIT_PIN_BUTT:
|
||||
if( m_currentComponent )
|
||||
if( m_component )
|
||||
{
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add Pin" ) );
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add pin" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
SetToolID( id, wxCURSOR_ARROW, _( "Set Pin Options" ) );
|
||||
SetToolID( id, wxCURSOR_ARROW, _( "Set pin options" ) );
|
||||
InstallPineditFrame( this, &dc, pos );
|
||||
SetToolID( 0, wxCURSOR_ARROW, wxEmptyString );
|
||||
}
|
||||
|
@ -621,27 +636,27 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add Text" ) );
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add text" ) );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add Rectangle" ) );
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add rectangle" ) );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add Circle" ) );
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add circle" ) );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_ARC_BUTT:
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add Arc" ) );
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add arc" ) );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_LINE_BUTT:
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add Line" ) );
|
||||
SetToolID( id, wxCURSOR_PENCIL, _( "Add line" ) );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_ANCHOR_ITEM_BUTT:
|
||||
SetToolID( id, wxCURSOR_HAND, _( "Anchor" ) );
|
||||
SetToolID( id, wxCURSOR_HAND, _( "Set anchor position" ) );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_IMPORT_BODY_BUTT:
|
||||
|
@ -658,29 +673,29 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
|
||||
case ID_POPUP_LIBEDIT_END_CREATE_ITEM:
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
if( CurrentDrawItem )
|
||||
if( m_drawItem )
|
||||
{
|
||||
EndDrawGraphicItem( &dc );
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_BODY_EDIT_ITEM:
|
||||
if( CurrentDrawItem )
|
||||
if( m_drawItem )
|
||||
{
|
||||
DrawPanel->CursorOff( &dc );
|
||||
|
||||
switch( CurrentDrawItem->Type() )
|
||||
switch( m_drawItem->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
case COMPONENT_LINE_DRAW_TYPE:
|
||||
EditGraphicSymbol( &dc, CurrentDrawItem );
|
||||
EditGraphicSymbol( &dc, m_drawItem );
|
||||
break;
|
||||
|
||||
case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE:
|
||||
EditSymbolText( &dc, CurrentDrawItem );
|
||||
EditSymbolText( &dc, m_drawItem );
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -693,7 +708,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
|
||||
|
||||
case ID_LIBEDIT_DELETE_ITEM_BUTT:
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
{
|
||||
wxBell();
|
||||
break;
|
||||
|
@ -704,79 +719,78 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
|
||||
case ID_POPUP_LIBEDIT_DELETE_CURRENT_POLY_SEGMENT:
|
||||
// Delete the last created segment, while creating a polyline draw item
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
break;
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
DeleteDrawPoly( &dc );
|
||||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_DELETE_ITEM:
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
break;
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
DrawPanel->CursorOff( &dc );
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
if( CurrentDrawItem->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
SaveCopyInUndoList( m_component );
|
||||
if( m_drawItem->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
{
|
||||
DeletePin( &dc, m_currentComponent, (LibDrawPin*) CurrentDrawItem );
|
||||
DeletePin( &dc, m_component, (LibDrawPin*) m_drawItem );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( DrawPanel->ManageCurseur && DrawPanel->ForceCloseManageCurseur )
|
||||
DrawPanel->ForceCloseManageCurseur( DrawPanel, &dc );
|
||||
else
|
||||
m_currentComponent->RemoveDrawItem( CurrentDrawItem, DrawPanel,
|
||||
&dc );
|
||||
m_component->RemoveDrawItem( m_drawItem, DrawPanel, &dc );
|
||||
}
|
||||
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
DrawPanel->CursorOn( &dc );
|
||||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST:
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
break;
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
if( CurrentDrawItem->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
if( m_drawItem->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
StartMovePin( &dc );
|
||||
else if( CurrentDrawItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
|
||||
StartMoveField( &dc, (LibDrawField*) CurrentDrawItem );
|
||||
else if( m_drawItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
|
||||
StartMoveField( &dc, (LibDrawField*) m_drawItem );
|
||||
else
|
||||
StartMoveDrawSymbol( &dc );
|
||||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT:
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
break;
|
||||
DrawPanel->CursorOff( &dc );
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
if( (CurrentDrawItem->m_Flags & IS_NEW) == 0 )
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
if( (m_drawItem->m_Flags & IS_NEW) == 0 )
|
||||
SaveCopyInUndoList( m_component );
|
||||
RotateSymbolText( &dc );
|
||||
DrawPanel->CursorOn( &dc );
|
||||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_FIELD_ROTATE_ITEM:
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
break;
|
||||
DrawPanel->CursorOff( &dc );
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
if( CurrentDrawItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
|
||||
if( m_drawItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
|
||||
{
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
RotateField( &dc, (LibDrawField*) CurrentDrawItem );
|
||||
SaveCopyInUndoList( m_component );
|
||||
RotateField( &dc, (LibDrawField*) m_drawItem );
|
||||
}
|
||||
DrawPanel->CursorOn( &dc );
|
||||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM:
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
break;
|
||||
DrawPanel->CursorOff( &dc );
|
||||
if( CurrentDrawItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
|
||||
if( m_drawItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
|
||||
{
|
||||
EditField( &dc, (LibDrawField*) CurrentDrawItem );
|
||||
EditField( &dc, (LibDrawField*) m_drawItem );
|
||||
}
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
DrawPanel->CursorOn( &dc );
|
||||
|
@ -785,11 +799,11 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINSIZE_ITEM:
|
||||
case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNAMESIZE_ITEM:
|
||||
case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNUMSIZE_ITEM:
|
||||
if( (CurrentDrawItem == NULL )
|
||||
|| (CurrentDrawItem->Type() != COMPONENT_PIN_DRAW_TYPE) )
|
||||
if( (m_drawItem == NULL )
|
||||
|| (m_drawItem->Type() != COMPONENT_PIN_DRAW_TYPE) )
|
||||
break;
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
GlobalSetPins( &dc, (LibDrawPin*) CurrentDrawItem, id );
|
||||
SaveCopyInUndoList( m_component );
|
||||
GlobalSetPins( &dc, (LibDrawPin*) m_drawItem, id );
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
break;
|
||||
|
||||
|
@ -842,5 +856,5 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
DrawPanel->m_IgnoreMouseEvents = false;
|
||||
|
||||
if( m_ID_current_state == 0 )
|
||||
LibItemToRepeat = NULL;
|
||||
m_lastDrawItem = NULL;
|
||||
}
|
||||
|
|
|
@ -5,12 +5,13 @@
|
|||
#include "fctsys.h"
|
||||
#include "confirm.h"
|
||||
#include "kicad_string.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
|
||||
/* in read_from_file_schematic_items_description.cpp */
|
||||
SCH_ITEM* ReadTextDescr( FILE* aFile, wxString& aMsgDiag, char* aLine,
|
||||
int aBufsize, int* aLineNum,
|
||||
|
|
|
@ -5,16 +5,19 @@
|
|||
#include "fctsys.h"
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "trigo.h"
|
||||
#include "macros.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_marker_sch.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/* Routines Locales */
|
||||
static bool DrawStructInBox(int x1, int y1, int x2, int y2, SCH_ITEM *DrawStruct);
|
||||
static bool DrawStructInBox( int x1, int y1, int x2, int y2,
|
||||
SCH_ITEM *DrawStruct );
|
||||
static SCH_ITEM* LastSnappedStruct = NULL;
|
||||
static bool IsBox1InBox2( int StartX1, int StartY1, int EndX1, int EndY1,
|
||||
int StartX2, int StartY2, int EndX2, int EndY2 );
|
||||
|
@ -612,12 +615,12 @@ static bool IsBox1InBox2( int StartX1, int StartY1, int EndX1, int EndY1,
|
|||
|
||||
|
||||
/*********************************************************************************/
|
||||
LibEDA_BaseStruct* LocateDrawItem( SCH_SCREEN* Screen,
|
||||
const wxPoint& aRefPoint,
|
||||
LIB_COMPONENT* LibEntry,
|
||||
int Unit,
|
||||
int Convert,
|
||||
int masque )
|
||||
LIB_DRAW_ITEM* LocateDrawItem( SCH_SCREEN* Screen,
|
||||
const wxPoint& aRefPoint,
|
||||
LIB_COMPONENT* LibEntry,
|
||||
int Unit,
|
||||
int Convert,
|
||||
int masque )
|
||||
/*********************************************************************************/
|
||||
|
||||
/* Locates a body item( not pins )
|
||||
|
@ -626,7 +629,7 @@ LibEDA_BaseStruct* LocateDrawItem( SCH_SCREEN* Screen,
|
|||
* remember the Y axis is from bottom to top in library entries for graphic items.
|
||||
*/
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
|
||||
if( LibEntry == NULL )
|
||||
return NULL;
|
||||
|
@ -717,7 +720,7 @@ LibDrawPin* LocatePinByNumber( const wxString& ePin_Number,
|
|||
* @return a pointer on the pin, or NULL if not found
|
||||
*/
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
LIB_COMPONENT* Entry;
|
||||
LibDrawPin* Pin;
|
||||
int Unit, Convert;
|
||||
|
@ -760,8 +763,8 @@ LibDrawPin* LocatePinByNumber( const wxString& ePin_Number,
|
|||
|
||||
|
||||
/*******************************************************************/
|
||||
LibEDA_BaseStruct* LocatePin( const wxPoint& RefPos, LIB_COMPONENT* Entry,
|
||||
int Unit, int convert, SCH_COMPONENT* DrawLibItem )
|
||||
LIB_DRAW_ITEM* LocatePin( const wxPoint& RefPos, LIB_COMPONENT* Entry,
|
||||
int Unit, int convert, SCH_COMPONENT* DrawLibItem )
|
||||
/*******************************************************************/
|
||||
|
||||
/* Routine de localisation d'une PIN de la PartLib pointee par Entry
|
||||
|
@ -779,7 +782,7 @@ LibEDA_BaseStruct* LocatePin( const wxPoint& RefPos, LIB_COMPONENT* Entry,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
LibEDA_BaseStruct* DrawItem = Entry->m_Drawings;
|
||||
LIB_DRAW_ITEM* DrawItem = Entry->m_Drawings;
|
||||
for( ; DrawItem != NULL; DrawItem = DrawItem->Next() )
|
||||
{
|
||||
if( DrawItem->Type() == COMPONENT_PIN_DRAW_TYPE ) /* Pin Trouvee */
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
#include "fctsys.h"
|
||||
#include "common.h"
|
||||
#include "appl_wxstruct.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "eeschema_id.h"
|
||||
#include "hotkeys.h"
|
||||
|
|
|
@ -8,13 +8,14 @@
|
|||
#include "confirm.h"
|
||||
#include "kicad_string.h"
|
||||
#include "gestfich.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "appl_wxstruct.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/* Routines locales */
|
||||
static void Write_GENERIC_NetList( WinEDA_SchematicFrame* frame, const wxString& FullFileName );
|
||||
|
@ -108,9 +109,9 @@ static SCH_COMPONENT* FindNextComponentAndCreatPinList(
|
|||
* Must be deallocated by the user
|
||||
*/
|
||||
{
|
||||
SCH_COMPONENT* Component = NULL;
|
||||
LIB_COMPONENT* Entry;
|
||||
LibEDA_BaseStruct* DEntry;
|
||||
SCH_COMPONENT* Component = NULL;
|
||||
LIB_COMPONENT* Entry;
|
||||
LIB_DRAW_ITEM* DEntry;
|
||||
|
||||
s_SortedComponentPinList.clear();
|
||||
for( ; DrawList != NULL; DrawList = DrawList->Next() )
|
||||
|
@ -767,7 +768,7 @@ static void FindAllsInstancesOfComponent( SCH_COMPONENT* Component_in,
|
|||
{
|
||||
EDA_BaseStruct* SchItem;
|
||||
SCH_COMPONENT* Component2;
|
||||
LibEDA_BaseStruct* DEntry;
|
||||
LIB_DRAW_ITEM* DEntry;
|
||||
DrawSheetPath* sheet;
|
||||
wxString str, Reference = Component_in->GetRef( Sheet_in );
|
||||
|
||||
|
|
|
@ -4,15 +4,16 @@
|
|||
|
||||
#include "fctsys.h"
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h" /* Definitions generales liees au calcul de netliste */
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include "algorithm"
|
||||
|
||||
|
||||
// Buffer to build the list of items used in netlist and erc calculations
|
||||
NETLIST_OBJECT_LIST g_NetObjectslist;
|
||||
|
||||
|
@ -354,7 +355,7 @@ static void ListeObjetConnection( DrawSheetPath* sheetlist,
|
|||
NETLIST_OBJECT* new_item;
|
||||
SCH_COMPONENT* DrawLibItem;
|
||||
LIB_COMPONENT* Entry;
|
||||
LibEDA_BaseStruct* DEntry;
|
||||
LIB_DRAW_ITEM* DEntry;
|
||||
Hierarchical_PIN_Sheet_Struct* SheetLabel;
|
||||
DrawSheetPath list;
|
||||
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
#ifndef _NETLIST_H_
|
||||
#define _NETLIST_H_
|
||||
|
||||
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
#define NETLIST_HEAD_STRING "EESchema Netlist Version 1.1"
|
||||
|
||||
#define ISBUS 1
|
||||
|
|
|
@ -17,13 +17,14 @@
|
|||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "protos.h"
|
||||
#include "netlist_control.h"
|
||||
|
||||
|
||||
// ID for configuration:
|
||||
#define CUSTOM_NETLIST_TITLE wxT( "CustomNetlistTitle" )
|
||||
#define CUSTOM_NETLIST_COMMAND wxT( "CustomNetlistCommand" )
|
||||
|
|
|
@ -9,12 +9,11 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
static wxArrayString s_CmpNameList;
|
||||
static wxArrayString s_PowerNameList;
|
||||
|
||||
|
|
|
@ -8,16 +8,15 @@
|
|||
#include "eeschema_id.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "hotkeys.h"
|
||||
#include "class_library.h"
|
||||
|
||||
#include "bitmaps.h"
|
||||
|
||||
/* functions to add commands and submenus depending on the item */
|
||||
static void AddMenusForBlock( wxMenu* PopMenu, WinEDA_SchematicFrame* frame );
|
||||
|
|
|
@ -8,18 +8,20 @@
|
|||
#include "appl_wxstruct.h"
|
||||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/* Exported Functions */
|
||||
void MoveItemsInList( PICKED_ITEMS_LIST& aItemsList, const wxPoint aMoveVector );
|
||||
void MirrorListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint );
|
||||
void DeleteItemsInList( WinEDA_DrawPanel* panel, PICKED_ITEMS_LIST& aItemsList );
|
||||
void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList, const wxPoint aMoveVector );
|
||||
void MoveItemsInList( PICKED_ITEMS_LIST& aItemsList, const wxPoint aMoveVector );
|
||||
void MirrorListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint );
|
||||
void DeleteItemsInList( WinEDA_DrawPanel* panel,
|
||||
PICKED_ITEMS_LIST& aItemsList );
|
||||
void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
|
||||
const wxPoint aMoveVector );
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
@ -26,10 +26,10 @@ void InstallPineditFrame( WinEDA_LibeditFrame* parent, wxDC* DC,
|
|||
wxPoint MousePos = parent->GetScreen()->m_Curseur;
|
||||
int accept = TRUE;
|
||||
|
||||
if ( ( CurrentDrawItem == NULL )
|
||||
|| ( CurrentDrawItem->Type() == COMPONENT_PIN_DRAW_TYPE ) )
|
||||
if ( ( parent->GetDrawItem() == NULL )
|
||||
|| ( parent->GetDrawItem()->Type() == COMPONENT_PIN_DRAW_TYPE ) )
|
||||
{
|
||||
LibDrawPin * Pin = (LibDrawPin *) CurrentDrawItem;
|
||||
LibDrawPin * Pin = (LibDrawPin *) parent->GetDrawItem();
|
||||
WinEDA_PinPropertiesFrame dlg( parent );
|
||||
accept = dlg.ShowModal();
|
||||
|
||||
|
@ -81,7 +81,7 @@ WinEDA_PinPropertiesFrame::WinEDA_PinPropertiesFrame( )
|
|||
|
||||
WinEDA_PinPropertiesFrame::WinEDA_PinPropertiesFrame( WinEDA_LibeditFrame* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
LibDrawPin * CurrentPin = (LibDrawPin *) CurrentDrawItem;
|
||||
LibDrawPin * CurrentPin = (LibDrawPin *) parent->GetDrawItem();
|
||||
|
||||
m_Parent = parent;
|
||||
if ( CurrentPin )
|
||||
|
@ -326,7 +326,7 @@ void WinEDA_PinPropertiesFrame::SetValuesInDialog(void)
|
|||
/*******************************************************/
|
||||
{
|
||||
wxString number;
|
||||
LibDrawPin * CurrentPin = (LibDrawPin *) CurrentDrawItem;
|
||||
LibDrawPin * CurrentPin = (LibDrawPin *) m_Parent->GetDrawItem();
|
||||
wxString msg;
|
||||
int tmp, ii;
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "program.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "eeschema_id.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
#include "pinedit-dialog.h"
|
||||
|
||||
|
@ -33,7 +34,8 @@ int CodeShape[NBSHAPES] =
|
|||
|
||||
|
||||
/* Routines locales */
|
||||
static void CreateImagePins( LibDrawPin* Pin );
|
||||
static void CreateImagePins( LibDrawPin* Pin, int unit, int convert,
|
||||
bool asDeMorgan );
|
||||
static void AbortPinMove( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||
static void DrawMovePin( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
|
||||
|
@ -82,50 +84,52 @@ void WinEDA_PinPropertiesFrame::PinPropertiesAccept( wxCommandEvent& event )
|
|||
LastPinNumSize = ReturnValueFromString( g_UnitMetric, msg,
|
||||
m_Parent->m_InternalUnits );
|
||||
|
||||
if( CurrentDrawItem ) // Set Pin Name & Num
|
||||
{
|
||||
if( !(CurrentDrawItem->m_Flags & IS_NEW) ) // if IS_NEW, copy for undo is done before place
|
||||
m_Parent->SaveCopyInUndoList( CurrentDrawItem->GetParent() );
|
||||
LIB_DRAW_ITEM* item = m_Parent->GetDrawItem();
|
||||
|
||||
SetPinName( m_PinNameCtrl->GetValue(), LastPinNameSize );
|
||||
msg = m_PinNumCtrl->GetValue();
|
||||
if( msg.IsEmpty() )
|
||||
msg = wxT( "~" );
|
||||
SetPinNum( msg, LastPinNumSize );
|
||||
NewSizePin( LastPinSize );
|
||||
SetPinShape( LastPinShape );
|
||||
SetPinType( LastPinType );
|
||||
SetPinOrient( LastPinOrient );
|
||||
SetAttributsPin( true, true, true ); // Set all attributes (visibility, common to units and common to convert options)
|
||||
CurrentDrawItem->DisplayInfo( m_Parent );
|
||||
}
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
if( !( item->m_Flags & IS_NEW ) ) // if IS_NEW, copy for undo is done before place
|
||||
m_Parent->SaveCopyInUndoList( item->GetParent() );
|
||||
|
||||
SetPinName( m_PinNameCtrl->GetValue(), LastPinNameSize );
|
||||
msg = m_PinNumCtrl->GetValue();
|
||||
|
||||
if( msg.IsEmpty() )
|
||||
msg = wxT( "~" );
|
||||
|
||||
SetPinNum( msg, LastPinNumSize );
|
||||
NewSizePin( LastPinSize );
|
||||
SetPinShape( LastPinShape );
|
||||
SetPinType( LastPinType );
|
||||
SetPinOrient( LastPinOrient );
|
||||
SetAttributsPin( true, true, true ); // Set all attributes (visibility, common to units and common to convert options)
|
||||
item->DisplayInfo( m_Parent );
|
||||
|
||||
m_Parent->DrawPanel->Refresh();
|
||||
}
|
||||
|
||||
|
||||
/*********************************************/
|
||||
void WinEDA_LibeditFrame::InitEditOnePin()
|
||||
/*********************************************/
|
||||
|
||||
/* Called when installing the edit pin dialog frame
|
||||
/*
|
||||
* Called when installing the edit pin dialog frame
|
||||
* Set pins flags (.m_Flags pins member) to ensure a correctins edition:
|
||||
* If 2 or more pins are on the same location (and the same orientation) they are all moved or resized.
|
||||
* If 2 or more pins are on the same location (and the same orientation) they
|
||||
* are all moved or resized.
|
||||
* This is usefull for components which have more than one part per package
|
||||
* In this case all parts can be edited at once.
|
||||
* Note: if the option "Edit Pin per Pin" (tool of the main toolbar) is activated, only the current part is edited
|
||||
* Note: if the option "Edit Pin per Pin" (tool of the main toolbar) is
|
||||
* activated, only the current part is edited.
|
||||
*/
|
||||
void WinEDA_LibeditFrame::InitEditOnePin()
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_drawItem;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
return;
|
||||
if( CurrentPin == NULL )
|
||||
if( m_component == NULL || CurrentPin == NULL )
|
||||
return;
|
||||
|
||||
/* Marquage des pins a traiter,Si edition d'une pin non deja selectionnee */
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
|
@ -153,20 +157,25 @@ static void AbortPinMove( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
/* Used to abort the move pin command.
|
||||
*/
|
||||
{
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
WinEDA_LibeditFrame* parent = (WinEDA_LibeditFrame*) Panel->GetParent();
|
||||
|
||||
if( parent == NULL )
|
||||
return;
|
||||
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) parent->GetDrawItem();
|
||||
|
||||
if( CurrentPin && ( CurrentPin->m_Flags & IS_NEW ) )
|
||||
CurrentPin->GetParent()->RemoveDrawItem( CurrentPin, Panel, DC );
|
||||
|
||||
/* clear edit flags */
|
||||
LibEDA_BaseStruct* item = CurrentPin->GetParent()->m_Drawings;
|
||||
LIB_DRAW_ITEM* item = CurrentPin->GetParent()->m_Drawings;
|
||||
for( ; item != NULL; item = item->Next() )
|
||||
item->m_Flags = 0;
|
||||
|
||||
Panel->ManageCurseur = NULL;
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
CurrentDrawItem = NULL;
|
||||
LibItemToRepeat = NULL;
|
||||
parent->SetDrawItem( NULL );
|
||||
parent->SetLastDrawItem( NULL );
|
||||
Panel->Refresh( true );
|
||||
}
|
||||
|
||||
|
@ -177,7 +186,7 @@ void WinEDA_LibeditFrame::PlacePin( wxDC* DC )
|
|||
/* Routine de fin de deplacement de la pin selectionnee */
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_drawItem;
|
||||
bool ask_for_pin = true;
|
||||
wxPoint newpos;
|
||||
bool status;
|
||||
|
@ -188,7 +197,7 @@ void WinEDA_LibeditFrame::PlacePin( wxDC* DC )
|
|||
newpos.x = GetScreen()->m_Curseur.x;
|
||||
newpos.y = -GetScreen()->m_Curseur.y;
|
||||
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
|
||||
// Tst for an other pin in same new position:
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
|
@ -224,12 +233,13 @@ void WinEDA_LibeditFrame::PlacePin( wxDC* DC )
|
|||
LastPinOrient = CurrentPin->m_Orient;
|
||||
LastPinType = CurrentPin->m_PinType;
|
||||
LastPinShape = CurrentPin->m_PinShape;
|
||||
CreateImagePins( CurrentPin );
|
||||
LibItemToRepeat = CurrentPin;
|
||||
CreateImagePins( CurrentPin, m_unit, m_convert,
|
||||
m_showDeMorgan );
|
||||
m_lastDrawItem = CurrentPin;
|
||||
}
|
||||
|
||||
/* Put linked pins in new position, and clear flags */
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
|
@ -246,7 +256,7 @@ void WinEDA_LibeditFrame::PlacePin( wxDC* DC )
|
|||
&showPinText, DefaultTransformMatrix );
|
||||
DrawPanel->CursorOn( DC );
|
||||
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
};
|
||||
|
||||
/***********************************************************/
|
||||
|
@ -254,7 +264,7 @@ void WinEDA_PinPropertiesFrame::SetPinOrient( int neworient )
|
|||
/***********************************************************/
|
||||
/* Routine de Rotation de la pin courante*/
|
||||
{
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
LibDrawPin* Pin, * RefPin = CurrentPin;
|
||||
|
||||
if( CurrentPin == NULL || CurrentPin->GetParent() == NULL )
|
||||
|
@ -289,11 +299,11 @@ void WinEDA_LibeditFrame::StartMovePin( wxDC* DC )
|
|||
*/
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_drawItem;
|
||||
wxPoint startPos;
|
||||
|
||||
/* Marquage des pins a traiter */
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
Pin->m_Flags = 0;
|
||||
|
@ -330,7 +340,12 @@ void WinEDA_LibeditFrame::StartMovePin( wxDC* DC )
|
|||
/******************************************************************************/
|
||||
static void DrawMovePin( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
||||
{
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
WinEDA_LibeditFrame* parent = (WinEDA_LibeditFrame*) panel->GetParent();
|
||||
|
||||
if( parent == NULL )
|
||||
return;
|
||||
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) parent->GetDrawItem();
|
||||
wxPoint pinpos = CurrentPin->m_Pos;
|
||||
bool showPinText = true;
|
||||
|
||||
|
@ -367,7 +382,7 @@ void WinEDA_PinPropertiesFrame::SetPinShape( int newshape )
|
|||
*/
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
|
||||
if( CurrentPin )
|
||||
{
|
||||
|
@ -400,7 +415,7 @@ void WinEDA_PinPropertiesFrame::SetPinType( int newtype )
|
|||
*/
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
|
||||
if( CurrentPin == NULL || CurrentPin->GetParent() == NULL )
|
||||
return;
|
||||
|
@ -430,7 +445,7 @@ void WinEDA_PinPropertiesFrame::SetPinName( const wxString& newname, int newsize
|
|||
*/
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
wxString buf;
|
||||
|
||||
if( CurrentPin == NULL || CurrentPin->GetParent() == NULL )
|
||||
|
@ -473,7 +488,7 @@ void WinEDA_PinPropertiesFrame::SetPinNum( const wxString& newnum, int newsize )
|
|||
*/
|
||||
{
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* CurrentPin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
wxString buf;
|
||||
|
||||
buf = newnum;
|
||||
|
@ -517,14 +532,14 @@ void WinEDA_LibeditFrame::DeletePin( wxDC* DC,
|
|||
* Sinon seule la pin de l'unite en convert courante sera effacee
|
||||
*/
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
wxPoint PinPos;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
wxPoint PinPos;
|
||||
|
||||
if( LibEntry == NULL || Pin == NULL )
|
||||
return;
|
||||
|
||||
PinPos = Pin->m_Pos;
|
||||
LibEntry->RemoveDrawItem( (LibEDA_BaseStruct*) Pin, DrawPanel, DC );
|
||||
LibEntry->RemoveDrawItem( (LIB_DRAW_ITEM*) Pin, DrawPanel, DC );
|
||||
|
||||
/* Effacement des autres pins de meme coordonnees */
|
||||
if( g_EditPinByPinIsOn == false )
|
||||
|
@ -541,7 +556,7 @@ void WinEDA_LibeditFrame::DeletePin( wxDC* DC,
|
|||
DrawItem = DrawItem->Next();
|
||||
if( Pin->m_Pos != PinPos )
|
||||
continue;
|
||||
LibEntry->RemoveDrawItem( (LibEDA_BaseStruct*) Pin );
|
||||
LibEntry->RemoveDrawItem( (LIB_DRAW_ITEM*) Pin );
|
||||
}
|
||||
}
|
||||
GetScreen()->SetModify();
|
||||
|
@ -553,26 +568,26 @@ void WinEDA_LibeditFrame::CreatePin( wxDC* DC )
|
|||
/*********************************************/
|
||||
/* Creation d'une nouvelle pin */
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
LibDrawPin* CurrentPin;
|
||||
bool showPinText = true;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
LibDrawPin* CurrentPin;
|
||||
bool showPinText = true;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
if( m_component == NULL )
|
||||
return;
|
||||
|
||||
/* Effacement des flags */
|
||||
DrawItem = m_currentComponent->m_Drawings;
|
||||
DrawItem = m_component->m_Drawings;
|
||||
for( ; DrawItem != NULL; DrawItem = DrawItem->Next() )
|
||||
DrawItem->m_Flags = 0;
|
||||
|
||||
CurrentPin = new LibDrawPin(m_currentComponent);
|
||||
CurrentPin = new LibDrawPin(m_component);
|
||||
|
||||
CurrentDrawItem = CurrentPin;
|
||||
m_drawItem = CurrentPin;
|
||||
if( CurrentPin == NULL )
|
||||
return;
|
||||
CurrentPin->m_Flags = IS_NEW;
|
||||
CurrentPin->m_Unit = CurrentUnit;
|
||||
CurrentPin->m_Convert = CurrentConvert;
|
||||
CurrentPin->m_Unit = m_unit;
|
||||
CurrentPin->m_Convert = m_convert;
|
||||
|
||||
/* Marquage des pins a traiter */
|
||||
if( g_EditPinByPinIsOn == false )
|
||||
|
@ -589,19 +604,19 @@ void WinEDA_LibeditFrame::CreatePin( wxDC* DC )
|
|||
if( LastPinCommonConvert )
|
||||
CurrentPin->m_Convert = 0;
|
||||
else
|
||||
CurrentPin->m_Convert = CurrentConvert;
|
||||
CurrentPin->m_Convert = m_convert;
|
||||
if( LastPinCommonUnit )
|
||||
CurrentPin->m_Unit = 0;
|
||||
else
|
||||
CurrentPin->m_Unit = CurrentUnit;
|
||||
CurrentPin->m_Unit = m_unit;
|
||||
if( LastPinNoDraw )
|
||||
CurrentPin->m_Attributs |= PINNOTDRAW;
|
||||
else
|
||||
CurrentPin->m_Attributs &= ~PINNOTDRAW;
|
||||
|
||||
CurrentPin->SetNext( m_currentComponent->m_Drawings );
|
||||
m_currentComponent->m_Drawings = CurrentPin;
|
||||
m_currentComponent->SortDrawItems();
|
||||
CurrentPin->SetNext( m_component->m_Drawings );
|
||||
m_component->m_Drawings = CurrentPin;
|
||||
m_component->SortDrawItems();
|
||||
|
||||
if( DC )
|
||||
CurrentPin->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
|
@ -641,8 +656,8 @@ void WinEDA_PinPropertiesFrame::SetAttributsPin( bool draw,
|
|||
*
|
||||
*/
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem;
|
||||
LibDrawPin* Pin, * CurrentPin = (LibDrawPin*) CurrentDrawItem;
|
||||
LIB_DRAW_ITEM* DrawItem;
|
||||
LibDrawPin* Pin, * CurrentPin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
|
||||
if( CurrentPin == NULL )
|
||||
return;
|
||||
|
@ -654,7 +669,7 @@ void WinEDA_PinPropertiesFrame::SetAttributsPin( bool draw,
|
|||
if( LastPinCommonUnit )
|
||||
CurrentPin->m_Unit = 0;
|
||||
else
|
||||
CurrentPin->m_Unit = CurrentUnit;
|
||||
CurrentPin->m_Unit = m_Parent->GetUnit();
|
||||
|
||||
Pin = (LibDrawPin*) CurrentPin->GetParent()->m_Drawings;
|
||||
|
||||
|
@ -679,7 +694,7 @@ void WinEDA_PinPropertiesFrame::SetAttributsPin( bool draw,
|
|||
if( Pin->m_Orient != CurrentPin->m_Orient )
|
||||
continue;
|
||||
|
||||
CurrentPin->GetParent()->RemoveDrawItem( (LibEDA_BaseStruct*) Pin );
|
||||
CurrentPin->GetParent()->RemoveDrawItem( (LIB_DRAW_ITEM*) Pin );
|
||||
}
|
||||
}
|
||||
} // end if unit
|
||||
|
@ -689,7 +704,7 @@ void WinEDA_PinPropertiesFrame::SetAttributsPin( bool draw,
|
|||
if( LastPinCommonConvert )
|
||||
CurrentPin->m_Convert = 0;
|
||||
else
|
||||
CurrentPin->m_Convert = CurrentConvert;
|
||||
CurrentPin->m_Convert = m_Parent->GetConvert();
|
||||
|
||||
if( CurrentPin->m_Convert == 0 ) /* Effacement des pins redondantes */
|
||||
{
|
||||
|
@ -711,7 +726,7 @@ void WinEDA_PinPropertiesFrame::SetAttributsPin( bool draw,
|
|||
if( Pin->m_Orient != CurrentPin->m_Orient )
|
||||
continue;
|
||||
|
||||
CurrentPin->GetParent()->RemoveDrawItem( (LibEDA_BaseStruct*) Pin );
|
||||
CurrentPin->GetParent()->RemoveDrawItem( (LIB_DRAW_ITEM*) Pin );
|
||||
}
|
||||
}
|
||||
} // end if convert
|
||||
|
@ -747,7 +762,7 @@ void WinEDA_PinPropertiesFrame::NewSizePin( int newsize )
|
|||
*
|
||||
*/
|
||||
{
|
||||
LibDrawPin* RefPin, * Pin = (LibDrawPin*) CurrentDrawItem;
|
||||
LibDrawPin* RefPin, * Pin = (LibDrawPin*) m_Parent->GetDrawItem();
|
||||
|
||||
if( Pin == NULL || Pin->GetParent() == NULL )
|
||||
return;
|
||||
|
@ -778,13 +793,8 @@ void WinEDA_PinPropertiesFrame::NewSizePin( int newsize )
|
|||
}
|
||||
|
||||
|
||||
/********************************************/
|
||||
static void CreateImagePins( LibDrawPin* Pin )
|
||||
/********************************************/
|
||||
|
||||
/* Creation des autres pins pour les autres unites et pour convert, apres
|
||||
* creation d'une pin
|
||||
*/
|
||||
static void CreateImagePins( LibDrawPin* Pin, int unit, int convert,
|
||||
bool asDeMorgan )
|
||||
{
|
||||
int ii;
|
||||
LibDrawPin* NewPin;
|
||||
|
@ -794,7 +804,7 @@ static void CreateImagePins( LibDrawPin* Pin )
|
|||
if( g_EditPinByPinIsOn )
|
||||
return;
|
||||
|
||||
if( g_AsDeMorgan && ( Pin->m_Convert != 0 ) )
|
||||
if( asDeMorgan && ( Pin->m_Convert != 0 ) )
|
||||
CreateConv = true;
|
||||
|
||||
/* Creation de la pin " convert " pour la part courante */
|
||||
|
@ -811,12 +821,12 @@ static void CreateImagePins( LibDrawPin* Pin )
|
|||
|
||||
for( ii = 1; ii <= Pin->GetParent()->m_UnitCount; ii++ )
|
||||
{
|
||||
if( ii == CurrentUnit || Pin->m_Unit == 0 )
|
||||
if( ii == unit || Pin->m_Unit == 0 )
|
||||
continue; /* Pin commune a toutes les unites */
|
||||
|
||||
/* Creation pour la representation "normale" */
|
||||
NewPin = (LibDrawPin*) Pin->GenCopy();
|
||||
if( CurrentConvert != 0 )
|
||||
if( convert != 0 )
|
||||
NewPin->m_Convert = 1;
|
||||
NewPin->m_Unit = ii;
|
||||
NewPin->SetNext( Pin->GetParent()->m_Drawings );
|
||||
|
@ -852,19 +862,19 @@ void WinEDA_LibeditFrame::GlobalSetPins( wxDC* DC,
|
|||
bool selected = ( MasterPin->m_Selected & IS_SELECTED ) != 0;
|
||||
bool showPinText = true;
|
||||
|
||||
if( ( m_currentComponent == NULL ) || ( MasterPin == NULL ) )
|
||||
if( ( m_component == NULL ) || ( MasterPin == NULL ) )
|
||||
return;
|
||||
if( MasterPin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
return;
|
||||
|
||||
GetScreen()->SetModify();
|
||||
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
if( ( Pin->m_Convert ) && ( Pin->m_Convert != CurrentConvert ) )
|
||||
if( ( Pin->m_Convert ) && ( Pin->m_Convert != m_convert ) )
|
||||
continue;
|
||||
|
||||
// Is it the "selected mode" ?
|
||||
|
@ -904,13 +914,13 @@ void WinEDA_LibeditFrame::RepeatPinItem( wxDC* DC, LibDrawPin* SourcePin )
|
|||
wxString msg;
|
||||
int ox = 0, oy = 0;
|
||||
|
||||
if( m_currentComponent == NULL || SourcePin == NULL
|
||||
if( m_component == NULL || SourcePin == NULL
|
||||
|| SourcePin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
return;
|
||||
|
||||
Pin = (LibDrawPin*)SourcePin->GenCopy();
|
||||
Pin->SetNext( m_currentComponent->m_Drawings );
|
||||
m_currentComponent->m_Drawings = Pin;
|
||||
Pin->SetNext( m_component->m_Drawings );
|
||||
m_component->m_Drawings = Pin;
|
||||
Pin->m_Flags = IS_NEW;
|
||||
|
||||
Pin->m_Pos.x += g_RepeatStep.x;
|
||||
|
@ -924,7 +934,7 @@ void WinEDA_LibeditFrame::RepeatPinItem( wxDC* DC, LibDrawPin* SourcePin )
|
|||
IncrementLabelMember( msg );
|
||||
Pin->SetPinNumFromString( msg );
|
||||
|
||||
CurrentDrawItem = Pin;
|
||||
m_drawItem = Pin;
|
||||
|
||||
/* Marquage des pins a traiter */
|
||||
if( g_EditPinByPinIsOn == false )
|
||||
|
@ -954,22 +964,18 @@ int sort_by_pin_number( const void* ref, const void* tst )
|
|||
}
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
bool WinEDA_LibeditFrame::TestPins( LIB_COMPONENT* LibEntry )
|
||||
/***************************************************************/
|
||||
|
||||
// Test des pins ( duplicates...)
|
||||
void WinEDA_LibeditFrame::OnCheckComponent( wxCommandEvent& event )
|
||||
{
|
||||
int nb_pins, ii, error;
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin** PinList;
|
||||
wxString msg;
|
||||
|
||||
if( m_currentComponent == NULL )
|
||||
return false;
|
||||
if( m_component == NULL )
|
||||
return;
|
||||
|
||||
// Construction de la liste des pins:
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
for( nb_pins = 0; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
|
@ -977,7 +983,7 @@ bool WinEDA_LibeditFrame::TestPins( LIB_COMPONENT* LibEntry )
|
|||
}
|
||||
|
||||
PinList = (LibDrawPin**) MyZMalloc( (nb_pins + 1) * sizeof(LibDrawPin*) );
|
||||
Pin = (LibDrawPin*) m_currentComponent->m_Drawings;
|
||||
Pin = (LibDrawPin*) m_component->m_Drawings;
|
||||
for( ii = 0; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
|
@ -995,39 +1001,42 @@ bool WinEDA_LibeditFrame::TestPins( LIB_COMPONENT* LibEntry )
|
|||
LibDrawPin* curr_pin = PinList[ii];
|
||||
Pin = PinList[ii - 1];
|
||||
|
||||
if( Pin->m_PinNum != curr_pin->m_PinNum )
|
||||
continue;
|
||||
|
||||
if( Pin->m_Convert != curr_pin->m_Convert )
|
||||
continue;
|
||||
|
||||
if( Pin->m_Unit != curr_pin->m_Unit )
|
||||
if( Pin->m_PinNum != curr_pin->m_PinNum
|
||||
|| Pin->m_Convert != curr_pin->m_Convert
|
||||
|| Pin->m_Unit != curr_pin->m_Unit )
|
||||
continue;
|
||||
|
||||
error++;
|
||||
curr_pin->ReturnPinStringNum( StringPinNum );
|
||||
msg.Printf( _( "Duplicate Pin %4.4s (Pin %s loc %d, %d, and Pin %s loc %d, %d)" ),
|
||||
StringPinNum.GetData(), curr_pin->m_PinName.GetData(),
|
||||
msg.Printf( _( "Duplicate pin %s at location (%d, %d) conflicts \
|
||||
with pin %s at location (%d, %d)" ),
|
||||
(const wxChar*)StringPinNum,
|
||||
(const wxChar*)curr_pin->m_PinName,
|
||||
curr_pin->m_Pos.x, -curr_pin->m_Pos.y,
|
||||
Pin->m_PinName.GetData(), Pin->m_Pos.x, -Pin->m_Pos.y );
|
||||
(const wxChar*)Pin->m_PinName,
|
||||
Pin->m_Pos.x, -Pin->m_Pos.y );
|
||||
|
||||
if( m_currentComponent->m_UnitCount > 1 )
|
||||
if( m_component->m_UnitCount > 1 )
|
||||
{
|
||||
aux_msg.Printf( _( " Part %d" ), curr_pin->m_Unit );
|
||||
aux_msg.Printf( _( " in part %c" ), 'A' + curr_pin->m_Unit );
|
||||
msg += aux_msg;
|
||||
}
|
||||
|
||||
if( g_AsDeMorgan )
|
||||
if( m_showDeMorgan )
|
||||
{
|
||||
if( curr_pin->m_Convert )
|
||||
msg += _( " Convert" );
|
||||
msg += _( " of converion" );
|
||||
else
|
||||
msg += _( " Normal" );
|
||||
msg += _( " of normal" );
|
||||
}
|
||||
|
||||
msg += wxT( "." );
|
||||
|
||||
DisplayError( this, msg );
|
||||
}
|
||||
|
||||
free( PinList );
|
||||
return error ? true : false;
|
||||
|
||||
if( error == 0 )
|
||||
DisplayInfoMessage( this, _( "No duplicate pins were found." ) );
|
||||
}
|
||||
|
|
|
@ -11,9 +11,10 @@
|
|||
#include "trigo.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/* Local Variables : */
|
||||
static void Plot_Hierarchical_PIN_Sheet( PLOTTER* plotter,
|
||||
|
@ -64,7 +65,7 @@ static void PlotLibPart( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem )
|
|||
Multi = DrawLibItem->m_Multi;
|
||||
convert = DrawLibItem->m_Convert;
|
||||
|
||||
for( LibEDA_BaseStruct* DEntry = Entry->m_Drawings;
|
||||
for( LIB_DRAW_ITEM* DEntry = Entry->m_Drawings;
|
||||
DEntry != NULL; DEntry = DEntry->Next() )
|
||||
{
|
||||
/* Elimination des elements non relatifs a l'unite */
|
||||
|
|
|
@ -19,14 +19,15 @@
|
|||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "worksheet.h"
|
||||
#include "plot_common.h"
|
||||
#include "confirm.h"
|
||||
#include "worksheet.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/* Variables locales : */
|
||||
static bool Plot_Sheet_Ref = TRUE;
|
||||
|
||||
|
|
|
@ -23,14 +23,15 @@
|
|||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "worksheet.h"
|
||||
#include "plot_common.h"
|
||||
#include "worksheet.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "plothpgl.h"
|
||||
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "worksheet.h"
|
||||
#include "plot_common.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
enum PageFormatReq {
|
||||
|
|
|
@ -2,11 +2,30 @@
|
|||
/* prototypage des fonctions de EESchema */
|
||||
/*****************************************/
|
||||
|
||||
LibEDA_BaseStruct* LocatePin( const wxPoint& RefPos,
|
||||
LIB_COMPONENT* Entry,
|
||||
int Unit,
|
||||
int Convert,
|
||||
SCH_COMPONENT* DrawItem = NULL );
|
||||
#ifndef __PROTOS_H__
|
||||
#define __PROTOS_H__
|
||||
|
||||
|
||||
class EDA_BaseStruct;
|
||||
class WinEDA_DrawPanel;
|
||||
class WinEDA_SchematicFrame;
|
||||
class LIB_COMPONENT;
|
||||
class LIB_DRAW_ITEM;
|
||||
class SCH_COMPONENT;
|
||||
class BASE_SCREEN;
|
||||
class SCH_SCREEN;
|
||||
class SCH_ITEM;
|
||||
class Hierarchical_PIN_Sheet_Struct;
|
||||
class PLOTTER;
|
||||
class DrawSheetStruct;
|
||||
class LibDrawPin;
|
||||
|
||||
|
||||
LIB_DRAW_ITEM* LocatePin( const wxPoint& RefPos,
|
||||
LIB_COMPONENT* Entry,
|
||||
int Unit,
|
||||
int Convert,
|
||||
SCH_COMPONENT* DrawItem = NULL );
|
||||
|
||||
/* Routine de localisation d'une PIN de la PartLib pointee par Entry */
|
||||
|
||||
|
@ -139,12 +158,12 @@ SCH_ITEM* PickStruct( const wxPoint& refpos,
|
|||
int SearchMask );
|
||||
|
||||
|
||||
LibEDA_BaseStruct* LocateDrawItem( SCH_SCREEN* Screen,
|
||||
const wxPoint& refpoint,
|
||||
LIB_COMPONENT* LibEntry,
|
||||
int Unit,
|
||||
int Convert,
|
||||
int masque );
|
||||
LIB_DRAW_ITEM* LocateDrawItem( SCH_SCREEN* Screen,
|
||||
const wxPoint& refpoint,
|
||||
LIB_COMPONENT* LibEntry,
|
||||
int Unit,
|
||||
int Convert,
|
||||
int masque );
|
||||
|
||||
Hierarchical_PIN_Sheet_Struct* LocateSheetLabel( DrawSheetStruct* Sheet,
|
||||
const wxPoint& pos );
|
||||
|
@ -198,17 +217,6 @@ int CountCmpNumber();
|
|||
bool Read_Hotkey_Config( WinEDA_DrawFrame* frame, bool verbose );
|
||||
|
||||
|
||||
/**************/
|
||||
/* SAVELIB.CPP */
|
||||
/**************/
|
||||
|
||||
LIB_COMPONENT* CopyLibEntryStruct( LIB_COMPONENT* OldEntry );
|
||||
|
||||
/* Routine de copie d'une partlib
|
||||
* Parametres d'entree: pointeur sur la structure de depart
|
||||
* Parametres de sortie: pointeur sur la structure creee */
|
||||
|
||||
|
||||
/**************/
|
||||
/* NETLIST.CPP */
|
||||
/**************/
|
||||
|
@ -352,3 +360,5 @@ void DisplayOptionFrame( WinEDA_SchematicFrame* parent,
|
|||
/* CONTROLE.CPP */
|
||||
/****************/
|
||||
void RemoteCommand( const char* cmdline );
|
||||
|
||||
#endif /* __PROTOS_H__ */
|
||||
|
|
|
@ -6,11 +6,10 @@
|
|||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
#include "kicad_string.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "drawtxt.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
|
|
|
@ -8,11 +8,10 @@
|
|||
#include "confirm.h"
|
||||
#include "kicad_string.h"
|
||||
#include "gestfich.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "macros.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
|
|
@ -1,108 +0,0 @@
|
|||
/****************************/
|
||||
/* EESchema - eesavlib.cpp */
|
||||
/****************************/
|
||||
|
||||
/* Functions to save schematic libraries and library components (::Save()
|
||||
* members)
|
||||
*/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
#include "confirm.h"
|
||||
#include "kicad_string.h"
|
||||
#include "gestfich.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/*
|
||||
* Routine de copie d'une partlib
|
||||
* Parametres d'entree: pointeur sur la structure de depart
|
||||
* Parametres de sortie: pointeur sur la structure creee
|
||||
* Do not copy new items ( i.e. with m_Flag & IS_NEW)
|
||||
*/
|
||||
LIB_COMPONENT* CopyLibEntryStruct( LIB_COMPONENT* OldEntry )
|
||||
{
|
||||
wxString msg;
|
||||
LIB_COMPONENT* NewStruct;
|
||||
LibEDA_BaseStruct* NewDrawings, * OldDrawings;
|
||||
LibEDA_BaseStruct* LastItem;
|
||||
LibDrawField* OldField, * NewField;
|
||||
|
||||
if( OldEntry->Type != ROOT )
|
||||
{
|
||||
msg.Printf( wxT( "Component <%s> must be root type to make copy." ),
|
||||
(const wxChar*) OldEntry->GetName() );
|
||||
wxLogError( msg );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
NewStruct = new LIB_COMPONENT( wxEmptyString );
|
||||
|
||||
OldEntry->m_Prefix.Copy( &NewStruct->m_Prefix );
|
||||
OldEntry->m_Name.Copy( &NewStruct->m_Name );
|
||||
|
||||
NewStruct->m_UnitCount = OldEntry->m_UnitCount;
|
||||
NewStruct->m_TextInside = OldEntry->m_TextInside;
|
||||
NewStruct->m_DrawPinNum = OldEntry->m_DrawPinNum;
|
||||
NewStruct->m_DrawPinName = OldEntry->m_DrawPinName;
|
||||
NewStruct->m_Options = OldEntry->m_Options;
|
||||
NewStruct->m_UnitSelectionLocked = OldEntry->m_UnitSelectionLocked;
|
||||
|
||||
/* Copie des sous structures: */
|
||||
NewStruct->m_AliasList = OldEntry->m_AliasList;
|
||||
NewStruct->m_Doc = OldEntry->m_Doc;
|
||||
NewStruct->m_KeyWord = OldEntry->m_KeyWord;
|
||||
NewStruct->m_DocFile = OldEntry->m_DocFile;
|
||||
|
||||
/* Copie des champs */
|
||||
for( OldField = OldEntry->m_Fields; OldField != NULL;
|
||||
OldField = OldField->Next() )
|
||||
{
|
||||
NewField = (LibDrawField*) OldField->GenCopy();
|
||||
NewStruct->m_Fields.PushBack( NewField );
|
||||
}
|
||||
|
||||
/* Copie des elements type Drawing */
|
||||
LastItem = NULL;
|
||||
for( OldDrawings = OldEntry->m_Drawings; OldDrawings != NULL;
|
||||
OldDrawings = OldDrawings->Next() )
|
||||
{
|
||||
if( ( OldDrawings->m_Flags & IS_NEW ) != 0 )
|
||||
continue;
|
||||
|
||||
NewDrawings = OldDrawings->GenCopy();
|
||||
|
||||
if( NewDrawings )
|
||||
{
|
||||
if( LastItem == NULL )
|
||||
NewStruct->m_Drawings = NewDrawings;
|
||||
else
|
||||
LastItem->SetNext( NewDrawings );
|
||||
|
||||
LastItem = NewDrawings;
|
||||
NewDrawings->SetNext( NULL );
|
||||
}
|
||||
else // Should never occur, just in case...
|
||||
{ // CopyDrawEntryStruct() was not able to duplicate the type
|
||||
// of OldDrawings
|
||||
// occurs when an unexpected type is encountered
|
||||
msg.Printf( wxT( "Error attempting to copy draw item <%s> from \
|
||||
component <%s>." ),
|
||||
(const wxChar*) OldDrawings->GetClass(),
|
||||
(const wxChar*) OldEntry->GetName() );
|
||||
wxLogError( msg );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Copy the footprint filter list */
|
||||
for( unsigned ii = 0; ii < OldEntry->m_FootprintList.GetCount(); ii++ )
|
||||
NewStruct->m_FootprintList.Add( OldEntry->m_FootprintList[ii] );
|
||||
|
||||
return NewStruct;
|
||||
}
|
|
@ -9,15 +9,13 @@
|
|||
#include "class_drawpanel.h"
|
||||
#include "confirm.h"
|
||||
#include "eda_doc.h"
|
||||
|
||||
#include "class_marker_sch.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "eeschema_id.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#include "class_drawpanel.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_marker_sch.h"
|
||||
|
@ -436,7 +435,7 @@ void WinEDA_SchematicFrame::GetSchematicFromUndoList(wxCommandEvent& event)
|
|||
List->ReversePickersListOrder();
|
||||
GetScreen()->PushCommandToRedoList( List );
|
||||
|
||||
CurrentDrawItem = NULL;
|
||||
// m_drawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
SetSheetNumberAndCount();
|
||||
ReCreateHToolbar();
|
||||
|
@ -471,7 +470,7 @@ void WinEDA_SchematicFrame::GetSchematicFromRedoList(wxCommandEvent& event)
|
|||
List->ReversePickersListOrder();
|
||||
GetScreen()->PushCommandToUndoList( List );
|
||||
|
||||
CurrentDrawItem = NULL;
|
||||
// m_drawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
SetSheetNumberAndCount();
|
||||
ReCreateHToolbar();
|
||||
|
|
|
@ -11,11 +11,10 @@
|
|||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "gestfich.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "bitmaps.h"
|
||||
#include "protos.h"
|
||||
#include "eeschema_id.h"
|
||||
#include "netlist.h"
|
||||
|
@ -286,10 +285,10 @@ void WinEDA_SchematicFrame::CreateScreens()
|
|||
m_CurrentSheet->Clear();
|
||||
m_CurrentSheet->Push( g_RootSheet );
|
||||
|
||||
if( g_ScreenLib == NULL )
|
||||
g_ScreenLib = new SCH_SCREEN();
|
||||
g_ScreenLib->SetZoom( 4 * g_ScreenLib->m_ZoomScalar );
|
||||
g_ScreenLib->m_UndoRedoCountMax = 10;
|
||||
if( GetBaseScreen() == NULL )
|
||||
SetBaseScreen( new SCH_SCREEN() );
|
||||
GetBaseScreen()->SetZoom( 4 * GetBaseScreen()->m_ZoomScalar );
|
||||
GetBaseScreen()->m_UndoRedoCountMax = 10;
|
||||
}
|
||||
|
||||
|
||||
|
@ -648,7 +647,7 @@ void WinEDA_SchematicFrame::OnOpenLibraryEditor( wxCommandEvent& event )
|
|||
wxT( "Library Editor" ),
|
||||
wxPoint( -1, -1 ),
|
||||
wxSize( 600, 400 ) );
|
||||
ActiveScreen = g_ScreenLib;
|
||||
ActiveScreen = GetBaseScreen();
|
||||
m_LibeditFrame->AdjustScrollBars();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
#include "class_library.h"
|
||||
|
||||
|
||||
CMP_LIBRARY* SelectLibraryFromList( WinEDA_DrawFrame* frame )
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
|
@ -26,11 +27,10 @@
|
|||
#include "gestfich.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/* Routines Locales */
|
||||
static void ExitSheet( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||
static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
|
|
|
@ -9,18 +9,17 @@
|
|||
#include "confirm.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "protos.h"
|
||||
|
||||
|
||||
/* Routines Locales */
|
||||
static void ExitPinSheet( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||
static void Move_PinSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
static void ExitPinSheet( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||
static void Move_PinSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
|
||||
/* Variables locales */
|
||||
static int CurrentTypeLabel = NET_INPUT;
|
||||
static wxSize NetSheetTextSize( DEFAULT_SIZE_TEXT, DEFAULT_SIZE_TEXT );
|
||||
static wxSize NetSheetTextSize( DEFAULT_SIZE_TEXT, DEFAULT_SIZE_TEXT );
|
||||
|
||||
/****************************************/
|
||||
/* class WinEDA_PinSheetPropertiesFrame */
|
||||
|
|
|
@ -13,11 +13,12 @@
|
|||
#include "eeschema_id.h"
|
||||
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "trigo.h"
|
||||
#include "protos.h"
|
||||
#include "libeditfrm.h"
|
||||
#include "class_libentry.h"
|
||||
|
||||
|
||||
/* Routines locales */
|
||||
static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
|
@ -25,7 +26,6 @@ static void ComputeArc( LibDrawArc* DrawItem, wxPoint ArcCentre );
|
|||
static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel,
|
||||
wxDC* DC,
|
||||
bool erase );
|
||||
static void MoveLibDrawItemAt( LibEDA_BaseStruct* DrawItem, wxPoint newpos );
|
||||
|
||||
/* Variables locales */
|
||||
static int StateDrawArc, ArcStartX, ArcStartY, ArcEndX, ArcEndY;
|
||||
|
@ -46,6 +46,11 @@ void WinEDA_bodygraphics_PropertiesFrame::bodygraphics_PropertiesAccept( wxComma
|
|||
/* Update the current draw item
|
||||
*/
|
||||
{
|
||||
LIB_DRAW_ITEM* item = m_Parent->GetDrawItem();
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
g_FlDrawSpecificConvert = m_CommonConvert->GetValue() ? FALSE : TRUE;
|
||||
g_FlDrawSpecificUnit = m_CommonUnit->GetValue() ? FALSE : TRUE;
|
||||
|
||||
|
@ -54,91 +59,84 @@ void WinEDA_bodygraphics_PropertiesFrame::bodygraphics_PropertiesAccept( wxComma
|
|||
|
||||
g_LibSymbolDefaultLineWidth = m_GraphicShapeWidthCtrl->GetValue();
|
||||
|
||||
if( CurrentDrawItem )
|
||||
if( !(item->m_Flags & IS_NEW) ) // if IS_NEW, copy for undo is done before place
|
||||
m_Parent->SaveCopyInUndoList( item->GetParent() );
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
item->Draw( m_Parent->DrawPanel, &dc, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
|
||||
if( g_FlDrawSpecificUnit )
|
||||
item->m_Unit = m_Parent->GetUnit();
|
||||
else
|
||||
item->m_Unit = 0;
|
||||
|
||||
if( g_FlDrawSpecificConvert )
|
||||
item->m_Convert = m_Parent->GetConvert();
|
||||
else
|
||||
item->m_Convert = 0;
|
||||
|
||||
if( m_Filled )
|
||||
{
|
||||
if( !(CurrentDrawItem->m_Flags & IS_NEW) ) // if IS_NEW, copy for undo is done before place
|
||||
m_Parent->SaveCopyInUndoList( CurrentDrawItem->GetParent() );
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
CurrentDrawItem->Draw( m_Parent->DrawPanel, &dc, wxPoint( 0, 0 ), -1,
|
||||
g_XorMode, NULL, DefaultTransformMatrix );
|
||||
|
||||
if( g_FlDrawSpecificUnit )
|
||||
CurrentDrawItem->m_Unit = CurrentUnit;
|
||||
else
|
||||
CurrentDrawItem->m_Unit = 0;
|
||||
if( g_FlDrawSpecificConvert )
|
||||
CurrentDrawItem->m_Convert = CurrentConvert;
|
||||
else
|
||||
CurrentDrawItem->m_Convert = 0;
|
||||
if( m_Filled )
|
||||
switch( item->Type() )
|
||||
{
|
||||
switch( CurrentDrawItem->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
( (LibDrawArc*) item )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawArc*) item )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
( (LibDrawCircle*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawCircle*) CurrentDrawItem )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
( (LibDrawCircle*) item )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawCircle*) item )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
( (LibDrawSquare*) item )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawSquare*) item )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->m_Fill =
|
||||
FlSymbol_Fill;
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->
|
||||
GetValue();
|
||||
break;
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
( (LibDrawPolyline*) item )->m_Fill =
|
||||
FlSymbol_Fill;
|
||||
( (LibDrawPolyline*) item )->m_Width =
|
||||
m_GraphicShapeWidthCtrl->GetValue();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
CurrentDrawItem->GetParent()->SortDrawItems();
|
||||
item->GetParent()->SortDrawItems();
|
||||
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
CurrentDrawItem->Draw( m_Parent->DrawPanel, &dc, wxPoint( 0, 0 ),
|
||||
-1, g_XorMode, NULL, DefaultTransformMatrix );
|
||||
item->Draw( m_Parent->DrawPanel, &dc, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
}
|
||||
|
||||
Close();
|
||||
|
||||
if( CurrentDrawItem )
|
||||
CurrentDrawItem->DisplayInfo( m_Parent );
|
||||
item->DisplayInfo( m_Parent );
|
||||
m_Parent->DrawPanel->Refresh();
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
void WinEDA_LibeditFrame::EditGraphicSymbol( wxDC* DC,
|
||||
LibEDA_BaseStruct* DrawItem )
|
||||
/**********************************************************/
|
||||
|
||||
/* Install the dialog box for editing a graphical item properties
|
||||
/*
|
||||
* Show the dialog box for editing a graphical item properties
|
||||
*/
|
||||
void WinEDA_LibeditFrame::EditGraphicSymbol( wxDC* DC, LIB_DRAW_ITEM* DrawItem )
|
||||
{
|
||||
if( DrawItem == NULL )
|
||||
return;
|
||||
|
||||
WinEDA_bodygraphics_PropertiesFrame* frame =
|
||||
new WinEDA_bodygraphics_PropertiesFrame( this );
|
||||
WinEDA_bodygraphics_PropertiesFrame dlg( this );
|
||||
|
||||
frame->ShowModal(); frame->Destroy();
|
||||
dlg.ShowModal();
|
||||
}
|
||||
|
||||
|
||||
|
@ -146,91 +144,53 @@ void WinEDA_LibeditFrame::EditGraphicSymbol( wxDC* DC,
|
|||
static void AbortSymbolTraceOn( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||
/****************************************************************/
|
||||
{
|
||||
LIB_DRAW_ITEM* item;
|
||||
|
||||
item = ( ( WinEDA_LibeditFrame* ) Panel->GetParent() )->GetDrawItem();
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
StateDrawArc = 0;
|
||||
Panel->ManageCurseur = NULL;
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
if( CurrentDrawItem == NULL )
|
||||
return;
|
||||
|
||||
if( CurrentDrawItem->m_Flags & IS_NEW )
|
||||
if( item->m_Flags & IS_NEW )
|
||||
{
|
||||
if( CurrentDrawItem->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
{
|
||||
if( item->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
Panel->m_Parent->RedrawActiveWindow( DC, TRUE );
|
||||
}
|
||||
else
|
||||
{
|
||||
CurrentDrawItem->Draw( Panel, DC, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
}
|
||||
item->Draw( Panel, DC, wxPoint( 0, 0 ), -1, g_XorMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
|
||||
SAFE_DELETE( CurrentDrawItem );
|
||||
SAFE_DELETE( item );
|
||||
}
|
||||
else
|
||||
{
|
||||
wxPoint curpos;
|
||||
curpos = Panel->GetScreen()->m_Curseur;
|
||||
wxPoint curpos = Panel->GetScreen()->m_Curseur;
|
||||
Panel->GetScreen()->m_Curseur = StartCursor;
|
||||
RedrawWhileMovingCursor( Panel, DC, TRUE );
|
||||
Panel->GetScreen()->m_Curseur = curpos;
|
||||
CurrentDrawItem->Draw( Panel, DC, wxPoint( 0, 0 ), -1,
|
||||
GR_DEFAULT_DRAWMODE, NULL,
|
||||
DefaultTransformMatrix );
|
||||
CurrentDrawItem->m_Flags = 0;
|
||||
item->Draw( Panel, DC, wxPoint( 0, 0 ), -1, GR_DEFAULT_DRAWMODE, NULL,
|
||||
DefaultTransformMatrix );
|
||||
item->m_Flags = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************************/
|
||||
LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry,
|
||||
wxDC* DC )
|
||||
/*******************************************************************************************/
|
||||
|
||||
/* Routine de creation d'un nouvel element type LibraryDrawStruct
|
||||
*/
|
||||
LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry,
|
||||
wxDC* DC )
|
||||
{
|
||||
int DrawType;
|
||||
|
||||
DrawPanel->m_IgnoreMouseEvents = TRUE;
|
||||
|
||||
// Creation du nouvel element
|
||||
switch( m_ID_current_state )
|
||||
{
|
||||
case ID_LIBEDIT_BODY_LINE_BUTT:
|
||||
DrawType = COMPONENT_POLYLINE_DRAW_TYPE;
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_ARC_BUTT:
|
||||
DrawType = COMPONENT_ARC_DRAW_TYPE;
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||
DrawType = COMPONENT_CIRCLE_DRAW_TYPE;
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||
DrawType = COMPONENT_RECT_DRAW_TYPE;
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
||||
DrawType = COMPONENT_GRAPHIC_TEXT_DRAW_TYPE;
|
||||
break;
|
||||
|
||||
default:
|
||||
DisplayError( this, wxT( "WinEDA_LibeditFrame::CreateGraphicItem() error" ) );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DrawPanel->ManageCurseur = SymbolDisplayDraw;
|
||||
DrawPanel->ForceCloseManageCurseur = AbortSymbolTraceOn;
|
||||
|
||||
switch( DrawType )
|
||||
switch( m_ID_current_state )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
case ID_LIBEDIT_BODY_ARC_BUTT:
|
||||
{
|
||||
LibDrawArc* Arc = new LibDrawArc( LibEntry );
|
||||
|
||||
CurrentDrawItem = Arc;
|
||||
m_drawItem = Arc;
|
||||
ArcStartX = ArcEndX = GetScreen()->m_Curseur.x;
|
||||
ArcStartY = ArcEndY = -( GetScreen()->m_Curseur.y );
|
||||
StateDrawArc = 1;
|
||||
|
@ -239,11 +199,11 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
}
|
||||
break;
|
||||
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
case ID_LIBEDIT_BODY_CIRCLE_BUTT:
|
||||
{
|
||||
LibDrawCircle* Circle = new LibDrawCircle( LibEntry );
|
||||
|
||||
CurrentDrawItem = Circle;
|
||||
m_drawItem = Circle;
|
||||
Circle->m_Pos = GetScreen()->m_Curseur;
|
||||
NEGATE( Circle->m_Pos.y );
|
||||
Circle->m_Fill = FlSymbol_Fill;
|
||||
|
@ -251,11 +211,11 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
}
|
||||
break;
|
||||
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
case ID_LIBEDIT_BODY_RECT_BUTT:
|
||||
{
|
||||
LibDrawSquare* Square = new LibDrawSquare( LibEntry );
|
||||
|
||||
CurrentDrawItem = Square;
|
||||
m_drawItem = Square;
|
||||
Square->m_Pos = GetScreen()->m_Curseur;
|
||||
NEGATE( Square->m_Pos.y );
|
||||
Square->m_End = Square->m_Pos;
|
||||
|
@ -264,10 +224,10 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
}
|
||||
break;
|
||||
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
case ID_LIBEDIT_BODY_LINE_BUTT:
|
||||
{
|
||||
LibDrawPolyline* polyline = new LibDrawPolyline( LibEntry );
|
||||
CurrentDrawItem = polyline;
|
||||
m_drawItem = polyline;
|
||||
wxPoint point = GetScreen()->m_Curseur;
|
||||
NEGATE( point.y );
|
||||
polyline->AddPoint( point ); // Start point of the current segment
|
||||
|
@ -281,7 +241,7 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
{
|
||||
LibDrawSegment* Segment = new LibDrawSegment( LibEntry );
|
||||
|
||||
CurrentDrawItem = Segment;
|
||||
m_drawItem = Segment;
|
||||
Segment->m_Pos = GetScreen()->m_Curseur;
|
||||
NEGATE( Segment->m_Pos.y );
|
||||
Segment->m_End = Segment->m_Pos;
|
||||
|
@ -289,11 +249,11 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
}
|
||||
break;
|
||||
|
||||
case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE:
|
||||
case ID_LIBEDIT_BODY_TEXT_BUTT:
|
||||
{
|
||||
LibDrawText* Text = new LibDrawText( LibEntry );
|
||||
|
||||
CurrentDrawItem = Text;
|
||||
m_drawItem = Text;
|
||||
Text->m_Size.x = Text->m_Size.y = g_LastTextSize;
|
||||
Text->m_Orient = g_LastTextOrient;
|
||||
Text->m_Pos = GetScreen()->m_Curseur;
|
||||
|
@ -302,7 +262,7 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
if( Text->m_Text.IsEmpty() )
|
||||
{
|
||||
SAFE_DELETE( Text );
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem = NULL;
|
||||
DrawPanel->ManageCurseur = NULL;
|
||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||
}
|
||||
|
@ -314,21 +274,26 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEnt
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
DisplayError( this, wxT( "WinEDA_LibeditFrame::CreateGraphicItem() \
|
||||
error" ) );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( CurrentDrawItem )
|
||||
if( m_drawItem )
|
||||
{
|
||||
CurrentDrawItem->m_Flags |= IS_NEW;
|
||||
m_drawItem->m_Flags |= IS_NEW;
|
||||
if( g_FlDrawSpecificUnit )
|
||||
CurrentDrawItem->m_Unit = CurrentUnit;
|
||||
m_drawItem->m_Unit = m_unit;
|
||||
if( g_FlDrawSpecificConvert )
|
||||
CurrentDrawItem->m_Convert = CurrentConvert;
|
||||
m_drawItem->m_Convert = m_convert;
|
||||
}
|
||||
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
DrawPanel->m_IgnoreMouseEvents = FALSE;
|
||||
|
||||
return CurrentDrawItem;
|
||||
return m_drawItem;
|
||||
}
|
||||
|
||||
|
||||
|
@ -339,10 +304,10 @@ void WinEDA_LibeditFrame::GraphicItemBeginDraw( wxDC* DC )
|
|||
/* Routine de creation d'un nouvel element type LibraryDrawStruct
|
||||
*/
|
||||
{
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
return;
|
||||
|
||||
switch( CurrentDrawItem->Type() )
|
||||
switch( m_drawItem->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
if( StateDrawArc == 1 )
|
||||
|
@ -369,7 +334,7 @@ void WinEDA_LibeditFrame::GraphicItemBeginDraw( wxDC* DC )
|
|||
{
|
||||
wxPoint pos = GetScreen()->m_Curseur;
|
||||
NEGATE( pos.y );
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->AddPoint( pos );
|
||||
( (LibDrawPolyline*) m_drawItem )->AddPoint( pos );
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -382,15 +347,20 @@ void WinEDA_LibeditFrame::GraphicItemBeginDraw( wxDC* DC )
|
|||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/*
|
||||
* Redraw the graphoc shape while moving
|
||||
*/
|
||||
static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel,
|
||||
wxDC* DC,
|
||||
bool erase )
|
||||
/**************************************************************************/
|
||||
|
||||
/* Redraw the graphoc shape while moving
|
||||
*/
|
||||
{
|
||||
LIB_DRAW_ITEM* item;
|
||||
|
||||
item = ( ( WinEDA_LibeditFrame* ) panel->GetParent() )->GetDrawItem();
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
BASE_SCREEN* Screen = panel->GetScreen();
|
||||
wxPoint pos;
|
||||
|
||||
|
@ -398,110 +368,27 @@ static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel,
|
|||
if( erase )
|
||||
{
|
||||
pos = ItemPreviousPos - StartCursor;
|
||||
CurrentDrawItem->Draw( panel, DC, pos, -1, g_XorMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
item->Draw( panel, DC, pos, -1, g_XorMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
}
|
||||
|
||||
/* Redraw moved shape */
|
||||
pos = Screen->m_Curseur - StartCursor;
|
||||
CurrentDrawItem->Draw( panel, DC, pos, -1, g_XorMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
item->Draw( panel, DC, pos, -1, g_XorMode, NULL, DefaultTransformMatrix );
|
||||
ItemPreviousPos = Screen->m_Curseur;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************/
|
||||
void MoveLibDrawItemAt( LibEDA_BaseStruct* DrawItem, wxPoint newpos )
|
||||
/*****************************************************************/
|
||||
{
|
||||
NEGATE( newpos.y );
|
||||
wxPoint size;
|
||||
|
||||
switch( DrawItem->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
{
|
||||
wxPoint offset = newpos - ( (LibDrawArc*) CurrentDrawItem )->m_Pos;
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Pos = newpos;
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_ArcStart += offset;
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_ArcEnd += offset;
|
||||
break;
|
||||
}
|
||||
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
( (LibDrawCircle*) CurrentDrawItem )->m_Pos = newpos;
|
||||
break;
|
||||
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
size = ( (LibDrawSquare*) CurrentDrawItem )->m_End -
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_Pos;
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_Pos = newpos;
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_End = newpos + size;
|
||||
break;
|
||||
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
{
|
||||
int ii, imax = ( (LibDrawPolyline*) CurrentDrawItem )->GetCornerCount();
|
||||
wxPoint offset = newpos - ( (LibDrawPolyline*) CurrentDrawItem )->m_PolyPoints[0];
|
||||
for( ii = 0; ii < imax; ii++ )
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->m_PolyPoints[ii] += offset;
|
||||
}
|
||||
break;
|
||||
|
||||
case COMPONENT_LINE_DRAW_TYPE:
|
||||
break;
|
||||
|
||||
case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE:
|
||||
( (LibDrawText*) CurrentDrawItem )->m_Pos = newpos;
|
||||
break;
|
||||
|
||||
default:
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/************************************************************/
|
||||
void WinEDA_LibeditFrame::StartMoveDrawSymbol( wxDC* DC )
|
||||
/************************************************************/
|
||||
{
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_drawItem == NULL )
|
||||
return;
|
||||
|
||||
SetCursor( wxCURSOR_HAND );
|
||||
|
||||
CurrentDrawItem->m_Flags |= IS_MOVED;
|
||||
m_drawItem->m_Flags |= IS_MOVED;
|
||||
StartCursor = GetScreen()->m_Curseur;
|
||||
|
||||
switch( CurrentDrawItem->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
InitPosition = ( (LibDrawArc*) CurrentDrawItem )->m_Pos;
|
||||
break;
|
||||
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
InitPosition = ( (LibDrawCircle*) CurrentDrawItem )->m_Pos;
|
||||
break;
|
||||
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
InitPosition = ( (LibDrawSquare*) CurrentDrawItem )->m_Pos;
|
||||
break;
|
||||
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
InitPosition = ( (LibDrawPolyline*) CurrentDrawItem )->m_PolyPoints[0];
|
||||
break;
|
||||
|
||||
case COMPONENT_LINE_DRAW_TYPE:
|
||||
break;
|
||||
|
||||
case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE:
|
||||
InitPosition = ( (LibDrawText*) CurrentDrawItem )->m_Pos;
|
||||
break;
|
||||
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
||||
InitPosition = m_drawItem->GetPosition();
|
||||
ItemPreviousPos = GetScreen()->m_Curseur;
|
||||
DrawPanel->ManageCurseur = RedrawWhileMovingCursor;
|
||||
DrawPanel->ForceCloseManageCurseur = AbortSymbolTraceOn;
|
||||
|
@ -520,6 +407,13 @@ static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
BASE_SCREEN* Screen = panel->GetScreen();
|
||||
wxPoint curr_pos = Screen->m_Curseur;
|
||||
|
||||
LIB_DRAW_ITEM* item;
|
||||
|
||||
item = ( ( WinEDA_LibeditFrame* ) panel->GetParent() )->GetDrawItem();
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
NEGATE( curr_pos.y );
|
||||
|
||||
GRSetDrawMode( DC, DrawMode );
|
||||
|
@ -529,72 +423,67 @@ static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
if( StateDrawArc == 1 )
|
||||
{
|
||||
int Color = ReturnLayerColor( LAYER_DEVICE );
|
||||
GRLine( &panel->m_ClipBox,
|
||||
DC,
|
||||
ArcStartX,
|
||||
-ArcStartY,
|
||||
ArcEndX,
|
||||
-ArcEndY,
|
||||
0,
|
||||
Color );
|
||||
GRLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY,
|
||||
ArcEndX, -ArcEndY, 0, Color );
|
||||
}
|
||||
else
|
||||
{
|
||||
CurrentDrawItem->Draw( panel, DC, wxPoint( 0, 0 ), -1, DrawMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
if( CurrentDrawItem->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
item->Draw( panel, DC, wxPoint( 0, 0 ), -1, DrawMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
if( item->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
{
|
||||
int Color = ReturnLayerColor( LAYER_DEVICE );
|
||||
GRDashedLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY,
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Pos.x,
|
||||
-( (LibDrawArc*) CurrentDrawItem )->m_Pos.y,
|
||||
( (LibDrawArc*) item )->m_Pos.x,
|
||||
-( (LibDrawArc*) item )->m_Pos.y,
|
||||
0, Color );
|
||||
GRDashedLine( &panel->m_ClipBox, DC, ArcEndX, -ArcEndY,
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Pos.x,
|
||||
-( (LibDrawArc*) CurrentDrawItem )->m_Pos.y,
|
||||
( (LibDrawArc*) item )->m_Pos.x,
|
||||
-( (LibDrawArc*) item )->m_Pos.y,
|
||||
0, Color );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch( CurrentDrawItem->Type() )
|
||||
switch( item->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
if( StateDrawArc == 1 )
|
||||
{
|
||||
ArcEndX = curr_pos.x; ArcEndY = curr_pos.y;
|
||||
ArcEndX = curr_pos.x;
|
||||
ArcEndY = curr_pos.y;
|
||||
}
|
||||
|
||||
if( StateDrawArc == 2 )
|
||||
{
|
||||
ComputeArc( (LibDrawArc*) CurrentDrawItem, Screen->m_Curseur );
|
||||
ComputeArc( (LibDrawArc*) item, Screen->m_Curseur );
|
||||
}
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawArc*) item )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
dx = ( (LibDrawCircle*) CurrentDrawItem )->m_Pos.x - curr_pos.x;
|
||||
dy = ( (LibDrawCircle*) CurrentDrawItem )->m_Pos.y - curr_pos.y;
|
||||
( (LibDrawCircle*) CurrentDrawItem )->m_Radius =
|
||||
dx = ( (LibDrawCircle*) item )->m_Pos.x - curr_pos.x;
|
||||
dy = ( (LibDrawCircle*) item )->m_Pos.y - curr_pos.y;
|
||||
( (LibDrawCircle*) item )->m_Radius =
|
||||
(int) sqrt( ( (double) dx * dx ) + ( (double) dy * dy ) );
|
||||
( (LibDrawCircle*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawCircle*) item )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_End = curr_pos;
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawSquare*) item )->m_End = curr_pos;
|
||||
( (LibDrawSquare*) item )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
{
|
||||
unsigned idx = ( (LibDrawPolyline*) CurrentDrawItem )->GetCornerCount() - 1;
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->m_PolyPoints[idx] = curr_pos;
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
unsigned idx = ( (LibDrawPolyline*) item )->GetCornerCount() - 1;
|
||||
( (LibDrawPolyline*) item )->m_PolyPoints[idx] = curr_pos;
|
||||
( (LibDrawPolyline*) item )->m_Fill = FlSymbol_Fill;
|
||||
}
|
||||
break;
|
||||
|
||||
case COMPONENT_LINE_DRAW_TYPE:
|
||||
( (LibDrawSegment*) CurrentDrawItem )->m_End = curr_pos;
|
||||
( (LibDrawSegment*) item )->m_End = curr_pos;
|
||||
break;
|
||||
|
||||
case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE: /* Traite par des routines specifiques */
|
||||
|
@ -607,29 +496,24 @@ static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
if( StateDrawArc == 1 )
|
||||
{
|
||||
int Color = ReturnLayerColor( LAYER_DEVICE );
|
||||
GRLine( &panel->m_ClipBox,
|
||||
DC,
|
||||
ArcStartX,
|
||||
-ArcStartY,
|
||||
ArcEndX,
|
||||
-ArcEndY,
|
||||
0,
|
||||
Color );
|
||||
GRLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY, ArcEndX,
|
||||
-ArcEndY, 0, Color );
|
||||
}
|
||||
else
|
||||
{
|
||||
CurrentDrawItem->Draw( panel, DC, wxPoint( 0, 0 ), -1, DrawMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
if( CurrentDrawItem->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
item->Draw( panel, DC, wxPoint( 0, 0 ), -1, DrawMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
|
||||
if( item->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
{
|
||||
int Color = ReturnLayerColor( LAYER_DEVICE );
|
||||
GRDashedLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY,
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Pos.x,
|
||||
-( (LibDrawArc*) CurrentDrawItem )->m_Pos.y,
|
||||
( (LibDrawArc*) item )->m_Pos.x,
|
||||
-( (LibDrawArc*) item )->m_Pos.y,
|
||||
0, Color );
|
||||
GRDashedLine( &panel->m_ClipBox, DC, ArcEndX, -ArcEndY,
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Pos.x,
|
||||
-( (LibDrawArc*) CurrentDrawItem )->m_Pos.y,
|
||||
( (LibDrawArc*) item )->m_Pos.x,
|
||||
-( (LibDrawArc*) item )->m_Pos.y,
|
||||
0, Color );
|
||||
}
|
||||
}
|
||||
|
@ -643,16 +527,14 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC )
|
|||
/* Place la structure courante en liste des structures du composant
|
||||
* courant, si elle existe et redessine toujours celle ci
|
||||
* Parametres: (tous globaux)
|
||||
* CurrentDrawItem
|
||||
* m_currentComponent
|
||||
* m_drawItem
|
||||
* m_component
|
||||
*/
|
||||
{
|
||||
if( m_currentComponent == NULL )
|
||||
return;
|
||||
if( CurrentDrawItem == NULL )
|
||||
if( m_component == NULL || m_drawItem == NULL )
|
||||
return;
|
||||
|
||||
if( CurrentDrawItem->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
if( m_drawItem->Type() == COMPONENT_ARC_DRAW_TYPE )
|
||||
{
|
||||
if( StateDrawArc == 1 ) /* Trace d'arc en cours: doit etre termine */
|
||||
{
|
||||
|
@ -660,35 +542,35 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC )
|
|||
}
|
||||
else
|
||||
{
|
||||
if( (CurrentDrawItem->m_Flags & IS_MOVED) == 0 )
|
||||
if( (m_drawItem->m_Flags & IS_MOVED) == 0 )
|
||||
SymbolDisplayDraw( DrawPanel, DC, FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
StateDrawArc = 0;
|
||||
|
||||
if( CurrentDrawItem->m_Flags & IS_NEW )
|
||||
if( m_drawItem->m_Flags & IS_NEW )
|
||||
{
|
||||
SaveCopyInUndoList( m_currentComponent );
|
||||
CurrentDrawItem->SetNext( m_currentComponent->m_Drawings );
|
||||
m_currentComponent->m_Drawings = CurrentDrawItem;
|
||||
SaveCopyInUndoList( m_component );
|
||||
m_drawItem->SetNext( m_component->m_Drawings );
|
||||
m_component->m_Drawings = m_drawItem;
|
||||
|
||||
switch( CurrentDrawItem->Type() )
|
||||
switch( m_drawItem->Type() )
|
||||
{
|
||||
case COMPONENT_ARC_DRAW_TYPE:
|
||||
( (LibDrawArc*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawArc*) m_drawItem )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_CIRCLE_DRAW_TYPE:
|
||||
( (LibDrawCircle*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawCircle*) m_drawItem )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_RECT_DRAW_TYPE:
|
||||
( (LibDrawSquare*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawSquare*) m_drawItem )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_POLYLINE_DRAW_TYPE:
|
||||
( (LibDrawPolyline*) CurrentDrawItem )->m_Fill = FlSymbol_Fill;
|
||||
( (LibDrawPolyline*) m_drawItem )->m_Fill = FlSymbol_Fill;
|
||||
break;
|
||||
|
||||
case COMPONENT_PIN_DRAW_TYPE:
|
||||
|
@ -700,7 +582,7 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC )
|
|||
;
|
||||
}
|
||||
|
||||
m_currentComponent->SortDrawItems();
|
||||
m_component->SortDrawItems();
|
||||
}
|
||||
|
||||
if( m_ID_current_state )
|
||||
|
@ -708,19 +590,20 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC )
|
|||
else
|
||||
SetCursor( wxCURSOR_ARROW );
|
||||
|
||||
if( (CurrentDrawItem->m_Flags & IS_MOVED) )
|
||||
if( (m_drawItem->m_Flags & IS_MOVED) )
|
||||
{
|
||||
wxPoint pos;
|
||||
pos.x = GetScreen()->m_Curseur.x + InitPosition.x - StartCursor.x,
|
||||
pos.y = GetScreen()->m_Curseur.y - InitPosition.y - StartCursor.y;
|
||||
MoveLibDrawItemAt( CurrentDrawItem, pos );
|
||||
NEGATE( pos.y );
|
||||
m_drawItem->Move( pos );
|
||||
}
|
||||
|
||||
m_currentComponent->Draw( DrawPanel, DC, wxPoint( 0, 0 ), CurrentUnit,
|
||||
CurrentConvert, GR_DEFAULT_DRAWMODE );
|
||||
m_component->Draw( DrawPanel, DC, wxPoint( 0, 0 ), m_unit, m_convert,
|
||||
GR_DEFAULT_DRAWMODE );
|
||||
|
||||
CurrentDrawItem->m_Flags = 0;
|
||||
CurrentDrawItem = NULL;
|
||||
m_drawItem->m_Flags = 0;
|
||||
m_drawItem = NULL;
|
||||
|
||||
GetScreen()->SetModify();
|
||||
|
||||
|
@ -826,14 +709,14 @@ void WinEDA_LibeditFrame::DeleteDrawPoly( wxDC* DC )
|
|||
/* Used for deleting last entered segment while creating a Polyline
|
||||
*/
|
||||
{
|
||||
if( CurrentDrawItem == NULL
|
||||
|| CurrentDrawItem->Type() != COMPONENT_POLYLINE_DRAW_TYPE )
|
||||
if( m_drawItem == NULL
|
||||
|| m_drawItem->Type() != COMPONENT_POLYLINE_DRAW_TYPE )
|
||||
return;
|
||||
|
||||
LibDrawPolyline* Poly = (LibDrawPolyline*) CurrentDrawItem;
|
||||
LibDrawPolyline* Poly = (LibDrawPolyline*) m_drawItem;
|
||||
|
||||
CurrentDrawItem->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
m_drawItem->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
|
||||
while( Poly->GetCornerCount() > 2 ) // First segment is kept, only its end point is changed
|
||||
{
|
||||
|
@ -848,6 +731,6 @@ void WinEDA_LibeditFrame::DeleteDrawPoly( wxDC* DC )
|
|||
}
|
||||
}
|
||||
|
||||
CurrentDrawItem->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
NULL, DefaultTransformMatrix );
|
||||
m_drawItem->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode, NULL,
|
||||
DefaultTransformMatrix );
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue