Bugs and problems solved in fields edition (some are windows only)
This commit is contained in:
parent
23748be6df
commit
441efc9f2c
|
@ -11,7 +11,9 @@ email address.
|
|||
++Eeschema:
|
||||
Note: this is a work in progress!
|
||||
Files modification.
|
||||
More about italic andf bold in fileds in libraries
|
||||
More about italic and bold fields in libraries
|
||||
Use DLIST to handle fields in lib entries
|
||||
Bugs and problems solved in fields edition (some are windows only).
|
||||
|
||||
|
||||
2008-Dec-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
/**********************************************************/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
|
@ -87,8 +86,6 @@ EDA_LibComponentStruct:: EDA_LibComponentStruct( const wxChar* CmpName ) :
|
|||
m_Options = ENTRY_NORMAL;
|
||||
m_UnitSelectionLocked = FALSE;
|
||||
m_DrawPinNum = m_DrawPinName = 1;
|
||||
|
||||
Fields = NULL;
|
||||
m_Prefix.m_FieldId = REFERENCE;
|
||||
}
|
||||
|
||||
|
@ -98,15 +95,6 @@ EDA_LibComponentStruct::~EDA_LibComponentStruct()
|
|||
/******************************************************/
|
||||
{
|
||||
LibEDA_BaseStruct* DrawItem, * NextDrawItem;
|
||||
LibDrawField* TempField, * field;
|
||||
|
||||
field = Fields; Fields = NULL;
|
||||
while( field )
|
||||
{
|
||||
TempField = field;
|
||||
field = field->Next();
|
||||
SAFE_DELETE( TempField );
|
||||
}
|
||||
|
||||
/* suppression des elements dependants */
|
||||
DrawItem = m_Drawings; m_Drawings = NULL;
|
||||
|
@ -279,3 +267,50 @@ EDA_Rect EDA_LibComponentStruct::GetBoundaryBox( int Unit, int Convert )
|
|||
|
||||
return BoundaryBox;
|
||||
}
|
||||
|
||||
|
||||
/** Function SetFields
|
||||
* initialize fields from a vector of fields
|
||||
* @param aFields a std::vector <LibDrawField> to import.
|
||||
*/
|
||||
void EDA_LibComponentStruct::SetFields( const std::vector <LibDrawField> aFields )
|
||||
{
|
||||
// Init basic fields (Value = name in lib, and reference):
|
||||
aFields[VALUE].Copy( &m_Name );
|
||||
aFields[REFERENCE].Copy( &m_Prefix );
|
||||
|
||||
// Remove others fields:
|
||||
CurrentLibEntry->m_Fields.DeleteAll();
|
||||
|
||||
for( unsigned ii = FOOTPRINT; ii < aFields.size(); ii++ )
|
||||
{
|
||||
bool create = FALSE;
|
||||
if( !aFields[ii].m_Text.IsEmpty() )
|
||||
create = TRUE;
|
||||
if( !aFields[ii].m_Name.IsEmpty()
|
||||
&& ( aFields[ii].m_Name != ReturnDefaultFieldName( ii ) ) )
|
||||
create = TRUE;
|
||||
if( create )
|
||||
{
|
||||
LibDrawField*Field = new LibDrawField( ii );
|
||||
aFields[ii].Copy( Field );
|
||||
CurrentLibEntry->m_Fields.PushBack( Field );
|
||||
}
|
||||
}
|
||||
|
||||
/* for a user field (FieldId >= FIELD1), if a field value is void,
|
||||
* fill it with "~" because for a library component a void field is not a very good idea
|
||||
* (we do not see anything...) and in schematic this text is like a void text
|
||||
* and for non editable names, remove the name (set to the default name)
|
||||
*/
|
||||
for( LibDrawField* Field = CurrentLibEntry->m_Fields; Field; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_FieldId >= FIELD1 )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
Field->m_Text = wxT( "~" );
|
||||
}
|
||||
else
|
||||
Field->m_Name.Empty();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
#ifndef CLASS_LIBENTRY_H
|
||||
#define CLASS_LIBENTRY_H
|
||||
|
||||
#include "dlist.h"
|
||||
|
||||
#include "classes_body_items.h"
|
||||
#include "class_libentry_fields.h"
|
||||
|
||||
|
@ -71,7 +73,7 @@ public:
|
|||
* with a distance of m_TextInside in mils */
|
||||
bool m_DrawPinNum;
|
||||
bool m_DrawPinName;
|
||||
LibDrawField* Fields; /* Auxiliairy Field list (id = 2 a 11) */
|
||||
DLIST<LibDrawField> m_Fields; /* Auxiliairy Field list (id >= 2 ) */
|
||||
LibEDA_BaseStruct* m_Drawings; /* How to draw this part */
|
||||
long m_LastDate; // Last change Date
|
||||
|
||||
|
|
|
@ -27,12 +27,13 @@
|
|||
*/
|
||||
LibDrawField::LibDrawField( int idfield ) : LibEDA_BaseStruct( COMPONENT_FIELD_DRAW_TYPE )
|
||||
{
|
||||
m_FieldId = idfield; /* 0 a 11, 0 = REFERENCE, 1 = VALUE*/
|
||||
if( m_FieldId < 0 )
|
||||
m_FieldId = 0;
|
||||
if( m_FieldId >= NUMBER_OF_FIELDS )
|
||||
m_FieldId = NUMBER_OF_FIELDS - 1;
|
||||
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT;
|
||||
m_FieldId = idfield; /* 0 = REFERENCE
|
||||
* 1 = VALUE
|
||||
* 3 = FOOTPRINT (default Footprint)
|
||||
* 4 = DOCUMENTATION (user doc link)
|
||||
* others = free fields
|
||||
*/
|
||||
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT;
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,8 +98,8 @@ bool LibDrawField::Save( FILE* ExportFile ) const
|
|||
m_Orient == 0 ? 'H' : 'V',
|
||||
(m_Attributs & TEXT_NO_VISIBLE ) ? 'I' : 'V',
|
||||
hjustify, vjustify,
|
||||
m_Italic ? 'I' : 'N',
|
||||
m_Width > 1 ? 'B' : 'N');
|
||||
m_Italic ? 'I' : 'N',
|
||||
m_Width > 1 ? 'B' : 'N' );
|
||||
|
||||
// Save field name, if necessary
|
||||
if( m_FieldId >= FIELD1 && !m_Name.IsEmpty() )
|
||||
|
@ -108,3 +109,33 @@ bool LibDrawField::Save( FILE* ExportFile ) const
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
wxString ReturnDefaultFieldName( int aFieldNdx )
|
||||
/****************************************************************/
|
||||
|
||||
/** Function ReturnDefaultFieldName
|
||||
* Return the default field name from its index (REFERENCE, VALUE ..)
|
||||
* FieldDefaultNameList is not static, because we want the text translation for I18n
|
||||
* @param aFieldNdx = Filed number (>= 0)
|
||||
*/
|
||||
{
|
||||
// avoid unnecessarily copying wxStrings at runtime.
|
||||
static const wxString defaults[] = {
|
||||
_( "Reference" ), // Reference of part, i.e. "IC21"
|
||||
_( "Value" ), // Value of part, i.e. "3.3K" and name in lib for lib entries
|
||||
_( "Footprint" ), // Footprint, used by cvpcb or pcbnew, i.e. "16DIP300"
|
||||
_( "Datasheet" ), // A link to an user document, if wanted
|
||||
};
|
||||
|
||||
if( (unsigned) aFieldNdx <= DATASHEET )
|
||||
return defaults[ aFieldNdx ];
|
||||
|
||||
else
|
||||
{
|
||||
wxString ret = _( "Field" );
|
||||
ret << ( aFieldNdx - FIELD1 + 1);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,15 +13,16 @@
|
|||
* Name (74LS00..) used to find the component in libraries, and give the default value in schematic
|
||||
*/
|
||||
|
||||
class LibDrawField : public LibEDA_BaseStruct
|
||||
, public EDA_TextStruct
|
||||
class LibDrawField : public LibEDA_BaseStruct,
|
||||
public EDA_TextStruct
|
||||
{
|
||||
public:
|
||||
int m_FieldId; /* 0 a 11
|
||||
* 0 = Reference; 1 = Value
|
||||
* 2 = Default footprint, 3 = subsheet (not used, reserved)
|
||||
* 4 .. 11 other fields
|
||||
*/
|
||||
int m_FieldId; /* 0 = REFERENCE
|
||||
* 1 = VALUE
|
||||
* 3 = FOOTPRINT (default Footprint)
|
||||
* 4 = DOCUMENTATION (user doc link)
|
||||
* others = free fields
|
||||
*/
|
||||
wxString m_Name; /* Field Name (not the field text itself, that is .m_Text) */
|
||||
|
||||
public:
|
||||
|
@ -44,18 +45,18 @@ public:
|
|||
* @param aFile The FILE to write to.
|
||||
* @return bool - true if success writing else false.
|
||||
*/
|
||||
virtual bool Save( FILE* aFile ) const;
|
||||
virtual bool Save( FILE* aFile ) const;
|
||||
|
||||
|
||||
LibDrawField* GenCopy();
|
||||
LibDrawField* GenCopy();
|
||||
|
||||
/** Function Copy
|
||||
* copy parameters of this to Target. Pointers are not copied
|
||||
* @param Target = the LibDrawField to set with "this" values
|
||||
* @param aTarget = the LibDrawField to set with "this" values
|
||||
*/
|
||||
void Copy( LibDrawField* Target ) const;
|
||||
void Copy( LibDrawField* aTarget ) const;
|
||||
|
||||
void SetFields( const std::vector <LibDrawField> aFields );
|
||||
void SetFields( const std::vector <LibDrawField> aFields );
|
||||
|
||||
void Draw( WinEDA_DrawPanel * aPanel, wxDC * aDC, const wxPoint &aOffset, int aColor,
|
||||
int aDrawMode, void* aData, int aTransformMatrix[2][2] );
|
||||
|
@ -66,7 +67,7 @@ public:
|
|||
* @param refPos A wxPoint to test, in Field coordinate system
|
||||
* @return bool - true if a hit, else false
|
||||
*/
|
||||
bool HitTest( const wxPoint& refPos );
|
||||
bool HitTest( const wxPoint& refPos );
|
||||
};
|
||||
|
||||
#endif // CLASS_LIBENTRY_FIELDS_H
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
/***********************************************************************/
|
||||
/* component_class.cpp : handle the class SCH_COMPONENT */
|
||||
/***********************************************************************/
|
||||
/**************************************************************/
|
||||
/* class_sch_cmp_field.cpp : handle the class SCH_CMP_FIELD */
|
||||
/**************************************************************/
|
||||
|
||||
/* Fields are texts attached to a component, having a specuial meaning
|
||||
* Fields 0 and 1 are very important: reference and value
|
||||
* Field 2 is used as default footprint name.
|
||||
* Field 3 is reserved (not currently used
|
||||
* Fields 4 and more are user fields.
|
||||
* They can be renamed and can appear in reports
|
||||
*/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
@ -36,6 +44,23 @@ SCH_CMP_FIELD::~SCH_CMP_FIELD()
|
|||
{
|
||||
}
|
||||
|
||||
/** Function ImportValues
|
||||
* copy parameters from a source.
|
||||
* Pointers and specific values (position, texts) are not copied
|
||||
* used to init a field from the model read from a lib entry
|
||||
* @param aSource = the LibDrawField to read
|
||||
*/
|
||||
void SCH_CMP_FIELD::ImportValues( const LibDrawField& aSource )
|
||||
{
|
||||
m_Orient = aSource.m_Orient;
|
||||
m_Size = aSource.m_Size;
|
||||
m_HJustify = aSource.m_HJustify;
|
||||
m_VJustify = aSource.m_VJustify;
|
||||
m_Italic = aSource.m_Italic;
|
||||
m_Width = aSource.m_Width;
|
||||
m_Attributs = aSource.m_Attributs;
|
||||
m_Mirror = aSource.m_Mirror;
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
void SCH_CMP_FIELD::SwapData( SCH_CMP_FIELD* copyitem )
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
* Fields 0 and 1 are very important: reference and value
|
||||
* Field 2 is used as default footprint name.
|
||||
* Field 3 is reserved (not currently used
|
||||
* Fields 4 to 11 are user fields.
|
||||
* Fields 4 and more are user fields.
|
||||
* They can be renamed and can appear in reports
|
||||
*/
|
||||
|
||||
|
@ -50,6 +50,13 @@ public:
|
|||
bool IsVoid();
|
||||
void SwapData( SCH_CMP_FIELD* copyitem );
|
||||
|
||||
/** Function ImportValues
|
||||
* copy parameters from a source.
|
||||
* Pointers and specific values (position) are not copied
|
||||
* @param aSource = the LibDrawField to read
|
||||
*/
|
||||
void ImportValues( const LibDrawField& aSource );
|
||||
|
||||
/**
|
||||
* Function Draw
|
||||
*/
|
||||
|
|
|
@ -114,35 +114,6 @@ void SCH_COMPONENT::AddHierarchicalReference( const wxString& aPath,
|
|||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
wxString ReturnDefaultFieldName( int aFieldNdx )
|
||||
/****************************************************************/
|
||||
|
||||
/* Return the default field name from its index (REFERENCE, VALUE ..)
|
||||
* FieldDefaultNameList is not static, because we want the text translation
|
||||
* for I18n
|
||||
*/
|
||||
{
|
||||
// avoid unnecessarily copying wxStrings at runtime.
|
||||
static const wxString defaults[] = {
|
||||
_( "Ref" ), // Reference of part, i.e. "IC21"
|
||||
_( "Value" ), // Value of part, i.e. "3.3K"
|
||||
_( "Footprint" ), // Footprint, used by cvpcb or pcbnew, i.e. "16DIP300"
|
||||
_( "Datasheet" ),
|
||||
};
|
||||
|
||||
if( (unsigned) aFieldNdx <= DATASHEET )
|
||||
return defaults[ aFieldNdx ];
|
||||
|
||||
else
|
||||
{
|
||||
wxString ret = _( "Field" );
|
||||
ret << ( aFieldNdx - FIELD1 + 1);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
wxString SCH_COMPONENT::ReturnFieldName( int aFieldNdx ) const
|
||||
/****************************************************************/
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: dialog_edit_component_in_lib.cpp
|
||||
// Purpose:
|
||||
// Purpose:
|
||||
// Author: jean-pierre Charras
|
||||
// Modified by:
|
||||
// Modified by:
|
||||
// Created: 02/03/2006 08:51:09
|
||||
// RCS-ID:
|
||||
// RCS-ID:
|
||||
// Copyright: License GNU
|
||||
// Licence:
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Generated by DialogBlocks (unregistered), 02/03/2006 08:51:09
|
||||
|
@ -42,7 +42,6 @@ BEGIN_EVENT_TABLE( WinEDA_PartPropertiesFrame, wxDialog )
|
|||
EVT_BUTTON( wxID_OK, WinEDA_PartPropertiesFrame::OnOkClick )
|
||||
|
||||
////@end WinEDA_PartPropertiesFrame event table entries
|
||||
EVT_RADIOBOX(ID_ON_SELECT_FIELD, WinEDA_PartPropertiesFrame::SelectNewField)
|
||||
EVT_BUTTON(ID_ADD_ALIAS, WinEDA_PartPropertiesFrame::AddAliasOfPart)
|
||||
EVT_BUTTON(ID_DELETE_ONE_ALIAS, WinEDA_PartPropertiesFrame::DeleteAliasOfPart)
|
||||
EVT_BUTTON(ID_DELETE_ALL_ALIAS, WinEDA_PartPropertiesFrame::DeleteAllAliasOfPart)
|
||||
|
@ -64,12 +63,11 @@ WinEDA_PartPropertiesFrame::WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame* par
|
|||
m_Parent = parent;
|
||||
m_RecreateToolbar = FALSE;
|
||||
m_AliasLocation = -1;
|
||||
m_CurrentFieldId = 0;
|
||||
|
||||
|
||||
InitBuffers();
|
||||
|
||||
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
|
||||
|
||||
SetTitle(m_Title);
|
||||
}
|
||||
|
||||
|
@ -79,7 +77,6 @@ WinEDA_PartPropertiesFrame::WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame* par
|
|||
|
||||
bool WinEDA_PartPropertiesFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
m_FieldNameCtrl = NULL;
|
||||
////@begin WinEDA_PartPropertiesFrame member initialisation
|
||||
m_GeneralBoxSizer = NULL;
|
||||
m_NoteBook = NULL;
|
||||
|
@ -119,9 +116,9 @@ bool WinEDA_PartPropertiesFrame::Create( wxWindow* parent, wxWindowID id, const
|
|||
*/
|
||||
|
||||
void WinEDA_PartPropertiesFrame::CreateControls()
|
||||
{
|
||||
{
|
||||
SetFont(*g_DialogFont);
|
||||
|
||||
|
||||
////@begin WinEDA_PartPropertiesFrame content construction
|
||||
// Generated by DialogBlocks, 29/04/2008 21:32:37 (unregistered)
|
||||
|
||||
|
@ -228,7 +225,6 @@ void WinEDA_PartPropertiesFrame::CreateControls()
|
|||
BuildPanelBasic();
|
||||
BuildPanelDoc();
|
||||
BuildPanelAlias();
|
||||
BuildPanelEditField(); // Add panel Field edition
|
||||
BuildPanelFootprintFilter();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: dialog_edit_component_in_lib.h
|
||||
// Purpose:
|
||||
// Purpose:
|
||||
// Author: jean-pierre Charras
|
||||
// Modified by:
|
||||
// Modified by:
|
||||
// Created: 02/03/2006 08:51:09
|
||||
// RCS-ID:
|
||||
// RCS-ID:
|
||||
// Copyright: License GNU
|
||||
// Licence:
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Generated by DialogBlocks (unregistered), 02/03/2006 08:51:09
|
||||
|
@ -75,7 +75,7 @@ class wxSpinCtrl;
|
|||
*/
|
||||
|
||||
class WinEDA_PartPropertiesFrame: public wxDialog
|
||||
{
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( WinEDA_PartPropertiesFrame )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
|
@ -122,7 +122,6 @@ public:
|
|||
void BuildPanelBasic();
|
||||
void BuildPanelDoc();
|
||||
void BuildPanelAlias();
|
||||
void BuildPanelEditField();
|
||||
void PartPropertiesAccept(wxCommandEvent& event);
|
||||
void OnQuit(wxCommandEvent& event);
|
||||
void DeleteAllAliasOfPart(wxCommandEvent& event);
|
||||
|
@ -132,11 +131,6 @@ public:
|
|||
bool SetUnsetConvert();
|
||||
void CopyDocToAlias(wxCommandEvent& event);
|
||||
void BrowseAndSelectDocFile(wxCommandEvent& event);
|
||||
void SelectNewField(wxCommandEvent& event);
|
||||
void CopyFieldDataToBuffer(LibDrawField * Field);
|
||||
void CopyBufferToFieldData(LibDrawField * Field);
|
||||
void CopyDataToPanelField();
|
||||
void CopyPanelFieldToData();
|
||||
|
||||
void BuildPanelFootprintFilter();
|
||||
void DeleteAllFootprintFilter(wxCommandEvent& event);
|
||||
|
@ -164,10 +158,8 @@ public:
|
|||
////@end WinEDA_PartPropertiesFrame member variables
|
||||
|
||||
WinEDA_LibeditFrame * m_Parent;
|
||||
int m_CurrentFieldId;
|
||||
wxString m_Title;
|
||||
|
||||
wxPanel * m_PanelField;
|
||||
wxPanel * m_PanelFootprintFilter;
|
||||
wxButton * m_ButtonDeleteOneAlias;
|
||||
wxButton * m_ButtonDeleteAllAlias;
|
||||
|
@ -181,24 +173,6 @@ public:
|
|||
|
||||
wxListBox * m_PartAliasList;
|
||||
wxListBox * m_FootprintFilterListBox;
|
||||
|
||||
wxRadioBox * m_FieldSelection;
|
||||
wxCheckBox * m_ShowFieldTextCtrl;
|
||||
wxCheckBox * m_VorientFieldTextCtrl;
|
||||
wxRadioBox * m_FieldHJustifyCtrl;
|
||||
wxRadioBox * m_FieldVJustifyCtrl;
|
||||
WinEDA_GraphicTextCtrl * m_FieldTextCtrl;
|
||||
WinEDA_EnterText * m_FieldNameCtrl;
|
||||
WinEDA_PositionCtrl * m_FieldPositionCtrl;
|
||||
int m_FieldFlags[NUMBER_OF_FIELDS];
|
||||
int m_FieldOrient[NUMBER_OF_FIELDS];
|
||||
int m_FieldHJustify[NUMBER_OF_FIELDS];
|
||||
int m_FieldVJustify[NUMBER_OF_FIELDS];
|
||||
int m_FieldSize[NUMBER_OF_FIELDS];
|
||||
wxString m_FieldText[NUMBER_OF_FIELDS];
|
||||
wxString m_FieldName[NUMBER_OF_FIELDS];
|
||||
wxPoint m_FieldPosition[NUMBER_OF_FIELDS];
|
||||
|
||||
bool m_RecreateToolbar;
|
||||
int m_AliasLocation;
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include "wx/msw/wx.rc"
|
|
@ -85,6 +85,23 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow
|
|||
}
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::reinitializeFieldsIdAndDefaultNames( )
|
||||
/*****************************************************************************/
|
||||
{
|
||||
for( unsigned new_id = FIELD1; new_id < m_FieldsBuf.size(); new_id++ )
|
||||
{
|
||||
unsigned old_id = m_FieldsBuf[new_id].m_FieldId;
|
||||
if ( old_id != new_id )
|
||||
{
|
||||
if ( m_FieldsBuf[new_id].m_Name == ReturnDefaultFieldName( old_id ) )
|
||||
m_FieldsBuf[new_id].m_Name = ReturnDefaultFieldName( new_id );
|
||||
m_FieldsBuf[new_id].m_FieldId = new_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnListItemDeselected( wxListEvent& event )
|
||||
{
|
||||
D( printf( "OnListItemDeselected()\n" ); )
|
||||
|
@ -251,10 +268,11 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::addFieldButtonHandler( wxCommandEvent&
|
|||
blank.m_Orient = m_FieldsBuf[REFERENCE].m_Orient;
|
||||
|
||||
m_FieldsBuf.push_back( blank );
|
||||
|
||||
setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] );
|
||||
m_FieldsBuf[fieldNdx].m_Name = ReturnDefaultFieldName(fieldNdx);
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] );
|
||||
|
||||
setSelectedFieldNdx( fieldNdx );
|
||||
m_skipCopyFromPanel = false;
|
||||
}
|
||||
|
@ -273,13 +291,17 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::deleteFieldButtonHandler( wxCommandEven
|
|||
return;
|
||||
}
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
m_FieldsBuf.erase( m_FieldsBuf.begin() + fieldNdx );
|
||||
fieldListCtrl->DeleteItem( fieldNdx );
|
||||
|
||||
if( fieldNdx >= m_FieldsBuf.size() )
|
||||
--fieldNdx;
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
// Reinitialize fields IDs and default names:
|
||||
reinitializeFieldsIdAndDefaultNames();
|
||||
updateDisplay( );
|
||||
|
||||
setSelectedFieldNdx( fieldNdx );
|
||||
m_skipCopyFromPanel = false;
|
||||
}
|
||||
|
@ -314,6 +336,10 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC:: moveUpButtonHandler( wxCommandEvent& e
|
|||
m_FieldsBuf[fieldNdx] = tmp;
|
||||
setRowItem( fieldNdx, tmp );
|
||||
|
||||
// Reinitialize fields IDs and default names:
|
||||
reinitializeFieldsIdAndDefaultNames();
|
||||
updateDisplay( );
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
setSelectedFieldNdx( fieldNdx - 1 );
|
||||
m_skipCopyFromPanel = false;
|
||||
|
@ -645,20 +671,10 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp( wxCommandEvent& event )
|
|||
|
||||
/* Initialise fields values to default values found in library: */
|
||||
m_Cmp->GetField( REFERENCE )->m_Pos = entry->m_Prefix.m_Pos + m_Cmp->m_Pos;
|
||||
m_Cmp->GetField( REFERENCE )->m_Orient = entry->m_Prefix.m_Orient;
|
||||
m_Cmp->GetField( REFERENCE )->m_Size = entry->m_Prefix.m_Size;
|
||||
m_Cmp->GetField( REFERENCE )->m_HJustify = entry->m_Prefix.m_HJustify;
|
||||
m_Cmp->GetField( REFERENCE )->m_VJustify = entry->m_Prefix.m_VJustify;
|
||||
m_Cmp->GetField( REFERENCE )->m_Italic = entry->m_Prefix.m_Italic;
|
||||
m_Cmp->GetField( REFERENCE )->m_Width = entry->m_Prefix.m_Width;
|
||||
m_Cmp->GetField( REFERENCE )->ImportValues( entry->m_Prefix );
|
||||
|
||||
m_Cmp->GetField( VALUE )->m_Pos = entry->m_Name.m_Pos + m_Cmp->m_Pos;
|
||||
m_Cmp->GetField( VALUE )->m_Orient = entry->m_Name.m_Orient;
|
||||
m_Cmp->GetField( VALUE )->m_Size = entry->m_Name.m_Size;
|
||||
m_Cmp->GetField( VALUE )->m_HJustify = entry->m_Name.m_HJustify;
|
||||
m_Cmp->GetField( VALUE )->m_VJustify = entry->m_Name.m_VJustify;
|
||||
m_Cmp->GetField( VALUE )->m_Italic = entry->m_Name.m_Italic;
|
||||
m_Cmp->GetField( VALUE )->m_Width = entry->m_Name.m_Width;
|
||||
m_Cmp->GetField( VALUE )->ImportValues( entry->m_Name );
|
||||
|
||||
m_Cmp->SetRotationMiroir( CMP_NORMAL );
|
||||
|
||||
|
|
|
@ -73,6 +73,22 @@ public:
|
|||
*/
|
||||
void InitBuffers( SCH_COMPONENT* aComponent );
|
||||
|
||||
private:
|
||||
/** Function updateDisplay
|
||||
* update the listbox showing fields, according to the fields texts
|
||||
* must be called after a text change in fields, if this change is not an edition
|
||||
*/
|
||||
void updateDisplay( )
|
||||
{
|
||||
for( unsigned ii = FIELD1; ii<m_FieldsBuf.size(); ii++ )
|
||||
setRowItem( ii, m_FieldsBuf[ii] );
|
||||
}
|
||||
|
||||
/** Function reinitializeFieldsIdAndDefaultNames
|
||||
* Calculates the field id and default name, after deleting a field
|
||||
* or moving a field
|
||||
*/
|
||||
void reinitializeFieldsIdAndDefaultNames();
|
||||
};
|
||||
|
||||
#endif // __dialog_edit_component_in_schematic__
|
||||
|
|
|
@ -18,86 +18,6 @@
|
|||
// Local variables:
|
||||
static int s_SelectedRow;
|
||||
|
||||
/** @todo function to move in a file like class_libentry.cpp
|
||||
*/
|
||||
|
||||
/** Function SetFields
|
||||
* initialize fields from a vector of fields
|
||||
* @param aFields a std::vector <LibDrawField> to import.
|
||||
*/
|
||||
void EDA_LibComponentStruct::SetFields( const std::vector <LibDrawField> aFields )
|
||||
{
|
||||
// Init basic fields (Value = name in lib, and reference):
|
||||
aFields[VALUE].Copy( &m_Name );
|
||||
aFields[REFERENCE].Copy( &m_Prefix );
|
||||
|
||||
// Init others fields:
|
||||
for( unsigned ii = FOOTPRINT; ii < aFields.size(); ii++ )
|
||||
{
|
||||
LibDrawField* Field = CurrentLibEntry->Fields;
|
||||
LibDrawField* NextField, * previousField = NULL;
|
||||
while( Field )
|
||||
{
|
||||
NextField = Field->Next();
|
||||
if( Field->m_FieldId == (int) ii )
|
||||
{
|
||||
aFields[ii].Copy( Field );
|
||||
|
||||
// An old field exists; delete it if void
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
{
|
||||
if( ii < FIELD1 || Field->m_Name.IsEmpty() )
|
||||
{
|
||||
SAFE_DELETE( Field );
|
||||
if( previousField )
|
||||
previousField->SetNext( NextField );
|
||||
else
|
||||
Fields = NextField;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
previousField = Field;
|
||||
Field = NextField;
|
||||
}
|
||||
|
||||
if( Field == NULL ) // Do not exists: must be created if not void
|
||||
{
|
||||
bool create = FALSE;
|
||||
if( !aFields[ii].m_Text.IsEmpty() )
|
||||
create = TRUE;
|
||||
if( !aFields[ii].m_Name.IsEmpty()
|
||||
&& ( aFields[ii].m_Name != ReturnDefaultFieldName( ii ) ) )
|
||||
create = TRUE;
|
||||
if( create )
|
||||
{
|
||||
Field = new LibDrawField( ii );
|
||||
|
||||
*Field = aFields[ii];
|
||||
Field->SetNext( CurrentLibEntry->Fields );
|
||||
Fields = Field;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* for a user field (FieldId >= FIELD1), if a field value is void,
|
||||
* fill it with "~" because for a library component a void field is not a very good idea
|
||||
* (we do not see anything...) and in schematic this text is like a void text
|
||||
* and for non editable names, remove the name (set to the default name)
|
||||
*/
|
||||
for( LibDrawField* Field = Fields; Field; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_FieldId >= FIELD1 )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
Field->m_Text = wxT( "~" );
|
||||
}
|
||||
else
|
||||
Field->m_Name.Empty();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************************/
|
||||
class DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB : public DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
|
||||
|
@ -156,6 +76,22 @@ private:
|
|||
*/
|
||||
bool copyPanelToSelectedField();
|
||||
void setRowItem( int aFieldNdx, const LibDrawField& aField );
|
||||
|
||||
/** Function updateDisplay
|
||||
* update the listbox showing fields, according to the fields texts
|
||||
* must be called after a text change in fields, if this change is not an edition
|
||||
*/
|
||||
void updateDisplay( )
|
||||
{
|
||||
for( unsigned ii = FIELD1; ii<m_FieldsBuf.size(); ii++ )
|
||||
setRowItem( ii, m_FieldsBuf[ii] );
|
||||
}
|
||||
|
||||
/** Function reinitializeFieldsIdAndDefaultNames
|
||||
* Calculates the field id and default name, after deleting a field
|
||||
* or moving a field
|
||||
*/
|
||||
void reinitializeFieldsIdAndDefaultNames();
|
||||
};
|
||||
|
||||
/*****************************************************************/
|
||||
|
@ -168,10 +104,15 @@ void WinEDA_LibeditFrame::InstallFieldsEditorDialog( void )
|
|||
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB* frame =
|
||||
new DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB( this, CurrentLibEntry );
|
||||
|
||||
int IsModified = frame->ShowModal(); frame->Destroy();
|
||||
int abort = frame->ShowModal(); frame->Destroy();
|
||||
|
||||
if( IsModified )
|
||||
if( ! abort )
|
||||
{
|
||||
ReCreateHToolbar();
|
||||
Refresh();
|
||||
}
|
||||
|
||||
DisplayLibInfos();
|
||||
}
|
||||
|
||||
|
||||
|
@ -180,10 +121,10 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB(
|
|||
WinEDA_LibeditFrame* aParent,
|
||||
EDA_LibComponentStruct* aLibEntry ) :
|
||||
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( aParent )
|
||||
/***********************************************************************/
|
||||
{
|
||||
m_Parent = aParent;
|
||||
m_LibEntry = aLibEntry;
|
||||
/***********************************************************************/
|
||||
}
|
||||
|
||||
|
||||
|
@ -309,12 +250,27 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnOKButtonClick( wxCommandEvent& event
|
|||
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
m_Parent->DrawPanel->Refresh( TRUE );
|
||||
|
||||
EndModal( 0 );
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::reinitializeFieldsIdAndDefaultNames( )
|
||||
/*****************************************************************************/
|
||||
{
|
||||
for( unsigned new_id = FIELD1; new_id < m_FieldsBuf.size(); new_id++ )
|
||||
{
|
||||
unsigned old_id = m_FieldsBuf[new_id].m_FieldId;
|
||||
if ( old_id != new_id )
|
||||
{
|
||||
if ( m_FieldsBuf[new_id].m_Name == ReturnDefaultFieldName( old_id ) )
|
||||
m_FieldsBuf[new_id].m_Name = ReturnDefaultFieldName( new_id );
|
||||
m_FieldsBuf[new_id].m_FieldId = new_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************************/
|
||||
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::addFieldButtonHandler( wxCommandEvent& event )
|
||||
/**************************************************************************************/
|
||||
|
@ -328,9 +284,8 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::addFieldButtonHandler( wxCommandEvent&
|
|||
|
||||
LibDrawField blank( fieldNdx );
|
||||
|
||||
blank.m_Orient = m_FieldsBuf[REFERENCE].m_Orient;
|
||||
|
||||
m_FieldsBuf.push_back( blank );
|
||||
m_FieldsBuf[fieldNdx].m_Name = ReturnDefaultFieldName(fieldNdx);
|
||||
|
||||
setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] );
|
||||
|
||||
|
@ -355,13 +310,18 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::deleteFieldButtonHandler( wxCommandEven
|
|||
return;
|
||||
}
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
m_FieldsBuf.erase( m_FieldsBuf.begin() + fieldNdx );
|
||||
fieldListCtrl->DeleteItem( fieldNdx );
|
||||
|
||||
if( fieldNdx >= m_FieldsBuf.size() )
|
||||
--fieldNdx;
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
// Reinitialize fields IDs and default names:
|
||||
reinitializeFieldsIdAndDefaultNames();
|
||||
updateDisplay( );
|
||||
|
||||
setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] );
|
||||
setSelectedFieldNdx( fieldNdx );
|
||||
m_skipCopyFromPanel = false;
|
||||
}
|
||||
|
@ -395,6 +355,10 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB:: moveUpButtonHandler( wxCommandEvent& e
|
|||
m_FieldsBuf[fieldNdx] = tmp;
|
||||
setRowItem( fieldNdx, tmp );
|
||||
|
||||
// Reinitialize fields IDs and default names:
|
||||
reinitializeFieldsIdAndDefaultNames();
|
||||
updateDisplay( );
|
||||
|
||||
m_skipCopyFromPanel = true;
|
||||
setSelectedFieldNdx( fieldNdx - 1 );
|
||||
m_skipCopyFromPanel = false;
|
||||
|
@ -443,7 +407,8 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers( void )
|
|||
m_FieldsBuf.push_back( m_LibEntry->m_Prefix );
|
||||
m_FieldsBuf.push_back( m_LibEntry->m_Name );
|
||||
|
||||
for( LibDrawField* field = m_LibEntry->Fields; field != NULL; field = field->Next() )
|
||||
// Creates a working copy of fields
|
||||
for( LibDrawField* field = m_LibEntry->m_Fields; field != NULL; field = field->Next() )
|
||||
m_FieldsBuf.push_back( *field );
|
||||
|
||||
// Display 12 fields (or more), and add missing fields
|
||||
|
@ -483,6 +448,8 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers( void )
|
|||
fieldListCtrl->SetFocus();
|
||||
|
||||
// resume editing at the last row edited, last time dialog was up.
|
||||
if ( s_SelectedRow < (int) m_FieldsBuf.size() )
|
||||
s_SelectedRow = 0;
|
||||
setSelectedFieldNdx( s_SelectedRow );
|
||||
}
|
||||
|
||||
|
@ -544,7 +511,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copySelectedFieldToPanel()
|
|||
|
||||
fieldNameTextCtrl->SetValue( field.m_Name );
|
||||
|
||||
// if fieldNdx == REFERENCE, VALUE, FOOTPRINT, or DATASHEET, then disable editing
|
||||
// if fieldNdx == REFERENCE, VALUE, FOOTPRINT, or DATASHEET, then disable filed name editing
|
||||
fieldNameTextCtrl->Enable( fieldNdx >= FIELD1 );
|
||||
fieldNameTextCtrl->SetEditable( fieldNdx >= FIELD1 );
|
||||
|
||||
|
@ -629,7 +596,7 @@ bool DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copyPanelToSelectedField()
|
|||
rotateCheckBox->SetValue( field.m_Orient == TEXT_ORIENT_VERT );
|
||||
|
||||
/* Void fields for REFERENCE and VALUE are not allowed
|
||||
* chnage therm only for a new non void value
|
||||
* change therm only for a new non void value
|
||||
*/
|
||||
if( !fieldValueTextCtrl->GetValue().IsEmpty() )
|
||||
field.m_Text = fieldValueTextCtrl->GetValue();
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
enum id_libedit {
|
||||
ID_PANEL_ALIAS,
|
||||
ID_PANEL_FIELD,
|
||||
ID_COPY_DOC_TO_ALIAS,
|
||||
ID_BROWSE_DOC_FILES,
|
||||
ID_ADD_ALIAS,
|
||||
|
@ -24,31 +23,25 @@ enum id_libedit {
|
|||
};
|
||||
|
||||
|
||||
/* Routines locales */
|
||||
|
||||
/* Variables locales */
|
||||
extern int CurrentUnit;
|
||||
|
||||
/* Classe de la frame des propri<72>t<EFBFBD>s d'un composant en librairie */
|
||||
/* Dialog box to edit a libentry (a component in library) properties */
|
||||
|
||||
/* Cette classe genere une fenetre type NoteBook, pour l'edition des propri<72>t<EFBFBD>s
|
||||
* d'un composant le librairie.
|
||||
* On peut <EFBFBD>diter:
|
||||
* Texte dimensions et justification de tous les champs (Ref, Val, et autres champs)
|
||||
* Documentation et mots clefs
|
||||
* Nombre de part par boitier
|
||||
* et autres propri<EFBFBD>r<EFBFBD>s g<EFBFBD>n<EFBFBD>rales
|
||||
/* Creates a NoteBook dialog
|
||||
* Edition:
|
||||
* Doc and keys words
|
||||
* Parts per package
|
||||
* General properties
|
||||
* Fileds are NOT edited here. There is a specific dialog box to do that
|
||||
*/
|
||||
|
||||
#include "dialog_edit_component_in_lib.cpp"
|
||||
|
||||
|
||||
/*****************************************************************/
|
||||
void WinEDA_LibeditFrame::InstallLibeditFrame( const wxPoint& pos )
|
||||
void WinEDA_LibeditFrame::InstallLibeditFrame( void )
|
||||
/*****************************************************************/
|
||||
{
|
||||
wxPoint fpos = pos;
|
||||
|
||||
WinEDA_PartPropertiesFrame* frame =
|
||||
new WinEDA_PartPropertiesFrame( this );
|
||||
|
||||
|
@ -59,86 +52,6 @@ void WinEDA_LibeditFrame::InstallLibeditFrame( const wxPoint& pos )
|
|||
}
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
void WinEDA_PartPropertiesFrame::CopyFieldDataToBuffer( LibDrawField* Field )
|
||||
/***************************************************************************/
|
||||
|
||||
/* copy the field data (name, attributes, size, position... to corresponding buffers
|
||||
* for editing
|
||||
*/
|
||||
{
|
||||
int id = Field->m_FieldId;
|
||||
|
||||
m_FieldFlags[id] = (Field->m_Attributs & TEXT_NO_VISIBLE) ? 0 : 1;
|
||||
m_FieldOrient[id] = Field->m_Orient;
|
||||
|
||||
if( Field->m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
||||
m_FieldHJustify[id] = 0;
|
||||
else if( Field->m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
||||
m_FieldHJustify[id] = 2;
|
||||
else
|
||||
m_FieldHJustify[id] = 1;
|
||||
|
||||
if( Field->m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
|
||||
m_FieldVJustify[id] = 0;
|
||||
else if( Field->m_VJustify == GR_TEXT_VJUSTIFY_TOP )
|
||||
m_FieldVJustify[id] = 2;
|
||||
else
|
||||
m_FieldVJustify[id] = 1;
|
||||
|
||||
m_FieldText[id] = Field->m_Text;
|
||||
if( id >= FIELD1 )
|
||||
m_FieldName[id] = Field->m_Name;
|
||||
m_FieldPosition[id] = Field->m_Pos;
|
||||
|
||||
// Note: the Y axis for components in lib is from bottom to top
|
||||
// and the screen axis is top to bottom: we must change the y coord sign for editing
|
||||
m_FieldPosition[id].y = -m_FieldPosition[id].y;
|
||||
m_FieldSize[id] = Field->m_Size.x;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
void WinEDA_PartPropertiesFrame::CopyBufferToFieldData( LibDrawField* Field )
|
||||
/***************************************************************************/
|
||||
|
||||
/* Copy data from buffers(name, attributes, size, position... )to the
|
||||
* field "Field"
|
||||
*/
|
||||
{
|
||||
GRTextHorizJustifyType hjustify[3] = {
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_CENTER,
|
||||
GR_TEXT_HJUSTIFY_RIGHT
|
||||
};
|
||||
GRTextVertJustifyType vjustify[3] = {
|
||||
GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER,
|
||||
GR_TEXT_VJUSTIFY_TOP
|
||||
};
|
||||
int ii = Field->m_FieldId;
|
||||
|
||||
Field->m_Text = m_FieldText[ii];
|
||||
|
||||
if( ii >= FIELD1 && m_FieldName[ii] != ReturnDefaultFieldName( ii ) )
|
||||
Field->m_Name = m_FieldName[ii];
|
||||
else
|
||||
Field->m_Name.Empty();
|
||||
|
||||
Field->m_Size.x = Field->m_Size.y = m_FieldSize[ii];
|
||||
Field->m_HJustify = hjustify[m_FieldHJustify[ii]];
|
||||
Field->m_VJustify = vjustify[m_FieldVJustify[ii]];
|
||||
if( m_FieldFlags[ii] )
|
||||
Field->m_Attributs &= ~TEXT_NO_VISIBLE;
|
||||
else
|
||||
Field->m_Attributs |= TEXT_NO_VISIBLE;
|
||||
Field->m_Orient = m_FieldOrient[ii] ? 1 : 0;
|
||||
Field->m_Pos = m_FieldPosition[ii];
|
||||
|
||||
// Note: the Y axis for components in lib is from bottom to top
|
||||
// and the screen axis is top to bottom: we must change the y coord sign after editing
|
||||
Field->m_Pos.y = -Field->m_Pos.y;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************/
|
||||
void WinEDA_PartPropertiesFrame::InitBuffers()
|
||||
/*****************************************************/
|
||||
|
@ -147,21 +60,6 @@ void WinEDA_PartPropertiesFrame::InitBuffers()
|
|||
* or to values from CurrentLibEntry if CurrentLibEntry != NULL
|
||||
*/
|
||||
{
|
||||
int ii;
|
||||
|
||||
m_CurrentFieldId = REFERENCE;
|
||||
|
||||
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
if( ii < FIELD1 )
|
||||
m_FieldName[ii] = ReturnDefaultFieldName( ii );
|
||||
m_FieldFlags[ii] = 1;
|
||||
m_FieldOrient[ii] = 0;
|
||||
m_FieldSize[ii] = DEFAULT_TEXT_SIZE;
|
||||
m_FieldHJustify[ii] = 1;
|
||||
m_FieldVJustify[ii] = 1;
|
||||
}
|
||||
|
||||
m_AliasLocation = -1;
|
||||
if( CurrentLibEntry == NULL )
|
||||
{
|
||||
|
@ -183,16 +81,6 @@ void WinEDA_PartPropertiesFrame::InitBuffers()
|
|||
m_Title = msg_text + CurrentLibEntry->m_Name.m_Text;
|
||||
CurrentAliasName.Empty();
|
||||
}
|
||||
|
||||
CopyFieldDataToBuffer( &CurrentLibEntry->m_Prefix );
|
||||
CopyFieldDataToBuffer( &CurrentLibEntry->m_Name );
|
||||
|
||||
LibDrawField* Field = CurrentLibEntry->Fields;
|
||||
while( Field )
|
||||
{
|
||||
CopyFieldDataToBuffer( Field );
|
||||
Field = Field->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -464,183 +352,6 @@ void WinEDA_PartPropertiesFrame::BuildPanelBasic()
|
|||
}
|
||||
|
||||
|
||||
/*********************************************************/
|
||||
void WinEDA_PartPropertiesFrame::BuildPanelEditField()
|
||||
/*********************************************************/
|
||||
|
||||
/* Create and build the panel managing the fields (REF, VALUE ...)
|
||||
* of the component
|
||||
*/
|
||||
{
|
||||
static const wxString Hjustify_list[] =
|
||||
{ _( "Align left" ), _( "Align center" ), _( "Align right" ) };
|
||||
|
||||
static const wxString Vjustify_list[] =
|
||||
{ _( "Align bottom" ), _( "Align center" ), _( "Align top" ) };
|
||||
|
||||
int FieldId = m_CurrentFieldId;
|
||||
|
||||
m_PanelField = new wxPanel( m_NoteBook, ID_PANEL_FIELD );
|
||||
|
||||
m_PanelField->SetFont( *g_DialogFont );
|
||||
m_NoteBook->AddPage( m_PanelField, _( "Fields" ), FALSE );
|
||||
|
||||
wxBoxSizer* PanelFieldBoxSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_PanelField->SetSizer( PanelFieldBoxSizer );
|
||||
wxBoxSizer* LeftBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
PanelFieldBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 );
|
||||
wxBoxSizer* MiddleBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
PanelFieldBoxSizer->Add( MiddleBoxSizer, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
m_ShowFieldTextCtrl = new wxCheckBox( m_PanelField, -1,
|
||||
_( "Show Text" ) );
|
||||
|
||||
LeftBoxSizer->Add( m_ShowFieldTextCtrl, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
m_VorientFieldTextCtrl = new wxCheckBox( m_PanelField, -1,
|
||||
_( "Vertical" ) );
|
||||
|
||||
LeftBoxSizer->Add( m_VorientFieldTextCtrl, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
// Create the box for field name display or edition
|
||||
m_FieldNameCtrl = new WinEDA_EnterText( m_PanelField,
|
||||
_( "Field Name:" ), m_FieldName[FieldId],
|
||||
LeftBoxSizer, wxSize( 200, -1 ) );
|
||||
|
||||
if( FieldId < FIELD1 )
|
||||
m_FieldNameCtrl->Enable( FALSE );
|
||||
else
|
||||
m_FieldNameCtrl->Enable( TRUE );
|
||||
|
||||
// Create the box for text editing (text, size)
|
||||
m_FieldTextCtrl = new WinEDA_GraphicTextCtrl( m_PanelField,
|
||||
_( "Field Text:" ),
|
||||
m_FieldText[FieldId], m_FieldSize[FieldId],
|
||||
g_UnitMetric, LeftBoxSizer, 200 );
|
||||
|
||||
// Create the box for text editing (position)
|
||||
m_FieldPositionCtrl = new WinEDA_PositionCtrl( m_PanelField,
|
||||
_( "Pos" ), m_FieldPosition[FieldId],
|
||||
g_UnitMetric, LeftBoxSizer );
|
||||
|
||||
|
||||
m_FieldHJustifyCtrl = new wxRadioBox( m_PanelField, -1,
|
||||
_( "Hor Justify" ), wxDefaultPosition, wxDefaultSize,
|
||||
3, Hjustify_list, 1, wxRA_SPECIFY_COLS );
|
||||
|
||||
m_FieldHJustifyCtrl->SetSelection( 1 );
|
||||
MiddleBoxSizer->Add( m_FieldHJustifyCtrl, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
m_FieldVJustifyCtrl = new wxRadioBox( m_PanelField, -1,
|
||||
_( "Vert Justify" ), wxDefaultPosition, wxDefaultSize,
|
||||
3, Vjustify_list, 1, wxRA_SPECIFY_COLS );
|
||||
|
||||
m_FieldVJustifyCtrl->SetSelection( 1 );
|
||||
MiddleBoxSizer->Add( m_FieldVJustifyCtrl, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
// Create the field list
|
||||
wxString fieldnamelist[NUMBER_OF_FIELDS];
|
||||
for( int ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
if( m_FieldName[ii].IsEmpty() )
|
||||
fieldnamelist[ii] = ReturnDefaultFieldName( ii );
|
||||
else
|
||||
fieldnamelist[ii] = m_FieldName[ii];
|
||||
}
|
||||
fieldnamelist[VALUE] << wxT("/") << _("Chip Name");
|
||||
|
||||
m_FieldSelection = new wxRadioBox( m_PanelField, ID_ON_SELECT_FIELD,
|
||||
_( "Field to edit" ), wxDefaultPosition, wxDefaultSize,
|
||||
NUMBER_OF_FIELDS, fieldnamelist, 2, wxRA_SPECIFY_COLS );
|
||||
|
||||
PanelFieldBoxSizer->Add( m_FieldSelection, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
CopyDataToPanelField();
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
void WinEDA_PartPropertiesFrame::CopyDataToPanelField()
|
||||
/****************************************************************/
|
||||
|
||||
/* Set the values displayed on the panel field according to
|
||||
* the current field number
|
||||
*/
|
||||
{
|
||||
int FieldId = m_CurrentFieldId;
|
||||
|
||||
for( int ii = FIELD1; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
if( !m_FieldName[ii].IsEmpty() )
|
||||
m_FieldSelection->SetString( ii, m_FieldName[ii] );
|
||||
else
|
||||
m_FieldSelection->SetString( ii, ReturnDefaultFieldName( ii ) );
|
||||
}
|
||||
|
||||
if( m_FieldFlags[FieldId] )
|
||||
m_ShowFieldTextCtrl->SetValue( TRUE );
|
||||
else
|
||||
m_ShowFieldTextCtrl->SetValue( FALSE );
|
||||
|
||||
if( m_FieldOrient[FieldId] )
|
||||
m_VorientFieldTextCtrl->SetValue( TRUE );
|
||||
else
|
||||
m_VorientFieldTextCtrl->SetValue( FALSE );
|
||||
|
||||
m_FieldHJustifyCtrl->SetSelection( m_FieldHJustify[FieldId] );
|
||||
|
||||
m_FieldVJustifyCtrl->SetSelection( m_FieldVJustify[FieldId] );
|
||||
|
||||
m_FieldPositionCtrl->SetValue( m_FieldPosition[FieldId].x, m_FieldPosition[FieldId].y );
|
||||
|
||||
m_FieldNameCtrl->SetValue( m_FieldName[FieldId] );
|
||||
if( FieldId < FIELD1 )
|
||||
m_FieldNameCtrl->Enable( FALSE );
|
||||
else
|
||||
m_FieldNameCtrl->Enable( TRUE );
|
||||
m_FieldTextCtrl->SetValue( m_FieldText[FieldId] ); // display new text field
|
||||
m_FieldTextCtrl->SetValue( m_FieldSize[FieldId] ); // display new size field
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
void WinEDA_PartPropertiesFrame::CopyPanelFieldToData()
|
||||
/****************************************************************/
|
||||
|
||||
/* Copy the values displayed on the panel field to the buffers according to
|
||||
* the current field number
|
||||
*/
|
||||
{
|
||||
int id = m_CurrentFieldId;
|
||||
|
||||
m_FieldFlags[id] = m_ShowFieldTextCtrl->GetValue();
|
||||
m_FieldOrient[id] = m_VorientFieldTextCtrl->GetValue();
|
||||
m_FieldHJustify[id] = m_FieldHJustifyCtrl->GetSelection();
|
||||
m_FieldVJustify[id] = m_FieldVJustifyCtrl->GetSelection();
|
||||
m_FieldText[id] = m_FieldTextCtrl->GetText();
|
||||
m_FieldName[id] = m_FieldNameCtrl->GetValue();
|
||||
m_FieldPosition[id] = m_FieldPositionCtrl->GetValue();
|
||||
m_FieldSize[id] = m_FieldTextCtrl->GetTextSize();
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************/
|
||||
void WinEDA_PartPropertiesFrame::SelectNewField( wxCommandEvent& event )
|
||||
/********************************************************************/
|
||||
|
||||
/* called when changing the current field selected
|
||||
* Save the current field settings in buffer and display the new one
|
||||
*/
|
||||
{
|
||||
CopyPanelFieldToData();
|
||||
m_CurrentFieldId = m_FieldSelection->GetSelection();
|
||||
CopyDataToPanelField();
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
||||
/**************************************************************************/
|
||||
|
@ -658,23 +369,6 @@ void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
|||
m_Parent->GetScreen()->SetModify();
|
||||
m_Parent->SaveCopyInUndoList( CurrentLibEntry );
|
||||
|
||||
CopyPanelFieldToData();
|
||||
|
||||
/* A new name could be entered in VALUE field.
|
||||
* Must not be an existing alias name in alias list box */
|
||||
jj = m_PartAliasList->GetCount();
|
||||
wxString newvalue = m_FieldText[VALUE];
|
||||
for( ii = 0; ii < jj; ii++ )
|
||||
{
|
||||
if( newvalue.CmpNoCase( m_PartAliasList->GetString( ii ).GetData() ) == 0 )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( wxT( "Alias %s exists!" ), newvalue.GetData() );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Update the doc, keyword and doc filename strings */
|
||||
if( m_AliasLocation < 0 )
|
||||
{
|
||||
|
@ -727,88 +421,6 @@ void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
|||
}
|
||||
}
|
||||
|
||||
// Void fields for REFERENCE and VALUE are not allowed
|
||||
if( m_FieldText[REFERENCE].IsEmpty() )
|
||||
{
|
||||
m_FieldText[REFERENCE] = CurrentLibEntry->m_Prefix.m_Text;
|
||||
}
|
||||
|
||||
if( m_FieldText[VALUE].IsEmpty() )
|
||||
{
|
||||
m_FieldText[VALUE] = CurrentLibEntry->m_Name.m_Text;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( CurrentLibEntry->m_Name.m_Text != m_FieldText[VALUE] )
|
||||
m_RecreateToolbar = TRUE;
|
||||
}
|
||||
|
||||
|
||||
CopyBufferToFieldData( &CurrentLibEntry->m_Prefix );
|
||||
CopyBufferToFieldData( &CurrentLibEntry->m_Name );
|
||||
|
||||
for( ii = FOOTPRINT; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
LibDrawField* Field = CurrentLibEntry->Fields;
|
||||
LibDrawField* NextField, * previousField = NULL;
|
||||
while( Field )
|
||||
{
|
||||
NextField = Field->Next();
|
||||
if( Field->m_FieldId == ii )
|
||||
{
|
||||
CopyBufferToFieldData( Field );
|
||||
|
||||
// An old field exists; delete it if void
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
{
|
||||
if( ii < FIELD1 || Field->m_Name.IsEmpty() )
|
||||
{
|
||||
SAFE_DELETE( Field );
|
||||
if( previousField )
|
||||
previousField->SetNext( NextField );
|
||||
else
|
||||
CurrentLibEntry->Fields = NextField;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
previousField = Field;
|
||||
Field = NextField;
|
||||
}
|
||||
|
||||
if( Field == NULL ) // Do not exists: must be created if not void
|
||||
{
|
||||
bool create = FALSE;
|
||||
if( !m_FieldText[ii].IsEmpty() )
|
||||
create = TRUE;
|
||||
if( !m_FieldName[ii].IsEmpty() && ( m_FieldName[ii] != ReturnDefaultFieldName( ii ) ) )
|
||||
create = TRUE;
|
||||
if( create )
|
||||
{
|
||||
Field = new LibDrawField( ii );
|
||||
|
||||
CopyBufferToFieldData( Field );
|
||||
Field->SetNext( CurrentLibEntry->Fields );
|
||||
CurrentLibEntry->Fields = Field;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* for a user field (FieldId >= FIELD1), if a field value is void,
|
||||
* fill it with "~" because for a library componenta void field is not a very good idea
|
||||
* (we do not see anything...) and in schematic this text is like a void text */
|
||||
{
|
||||
LibDrawField* Field = CurrentLibEntry->Fields;
|
||||
while( Field )
|
||||
{
|
||||
if( Field->m_FieldId >= FIELD1 )
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
Field->m_Text = wxT( "~" );
|
||||
Field = Field->Next();
|
||||
}
|
||||
}
|
||||
|
||||
ii = SelNumberOfUnits->GetValue();
|
||||
if( ChangeNbUnitsPerPackage( ii ) )
|
||||
m_RecreateToolbar = TRUE;
|
||||
|
|
|
@ -153,7 +153,7 @@ void DrawLibEntry( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
if( (LibEntry->m_Name.m_Flags & IS_MOVED) == 0 )
|
||||
LibEntry->m_Name.Draw( panel, DC, aOffset, color, DrawMode, NULL, TransMat );
|
||||
|
||||
for( Field = LibEntry->Fields; Field != NULL; Field = Field->Next() )
|
||||
for( Field = LibEntry->m_Fields; Field != NULL; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
return;
|
||||
|
|
|
@ -957,9 +957,7 @@ static bool GetLibEntryField (EDA_LibComponentStruct* LibEntry,
|
|||
break;
|
||||
|
||||
Field = new LibDrawField( NumOfField );
|
||||
|
||||
Field->SetNext( LibEntry->Fields );
|
||||
LibEntry->Fields = Field;
|
||||
LibEntry->m_Fields.PushBack( Field );
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -185,43 +185,30 @@ SCH_COMPONENT* WinEDA_SchematicFrame::Load_Component( wxDC* DC,
|
|||
|
||||
/* Init champ Valeur */
|
||||
DrawLibItem->GetField( VALUE )->m_Pos = Entry->m_Name.m_Pos + DrawLibItem->m_Pos;
|
||||
DrawLibItem->GetField( VALUE )->m_Orient = Entry->m_Name.m_Orient;
|
||||
DrawLibItem->GetField( VALUE )->m_Size = Entry->m_Name.m_Size;
|
||||
DrawLibItem->GetField( VALUE )->ImportValues( Entry->m_Name );
|
||||
DrawLibItem->GetField( VALUE )->m_Text = DrawLibItem->m_ChipName;
|
||||
DrawLibItem->GetField( VALUE )->m_Attributs = Entry->m_Name.m_Attributs;
|
||||
DrawLibItem->GetField( VALUE )->m_HJustify = Entry->m_Name.m_HJustify;
|
||||
DrawLibItem->GetField( VALUE )->m_VJustify = Entry->m_Name.m_VJustify;
|
||||
DrawLibItem->GetField( VALUE )->m_Italic = Entry->m_Name.m_Italic;
|
||||
DrawLibItem->GetField( VALUE )->m_Width = Entry->m_Name.m_Width;
|
||||
|
||||
msg = Entry->m_Prefix.m_Text;
|
||||
if( msg.IsEmpty() )
|
||||
msg = wxT( "U" );
|
||||
msg += wxT( "?" );
|
||||
|
||||
//update the reference -- just the prefix for now.
|
||||
// update the reference -- just the prefix for now.
|
||||
DrawLibItem->SetRef( GetSheet(), msg );
|
||||
|
||||
/* Init champ Reference */
|
||||
DrawLibItem->GetField( REFERENCE )->m_Pos =
|
||||
Entry->m_Prefix.m_Pos + DrawLibItem->m_Pos;
|
||||
DrawLibItem->GetField( REFERENCE )->m_Orient = Entry->m_Prefix.m_Orient;
|
||||
DrawLibItem->GetField( REFERENCE )->m_Size = Entry->m_Prefix.m_Size;
|
||||
DrawLibItem->GetField( REFERENCE )->m_Pos = Entry->m_Prefix.m_Pos + DrawLibItem->m_Pos;
|
||||
DrawLibItem->GetField( REFERENCE )->ImportValues( Entry->m_Prefix );
|
||||
DrawLibItem->m_PrefixString = Entry->m_Prefix.m_Text;
|
||||
DrawLibItem->GetField( REFERENCE )->m_Attributs = Entry->m_Prefix.m_Attributs;
|
||||
DrawLibItem->GetField( REFERENCE )->m_HJustify = Entry->m_Prefix.m_HJustify;
|
||||
DrawLibItem->GetField( REFERENCE )->m_VJustify = Entry->m_Prefix.m_VJustify;
|
||||
DrawLibItem->GetField( REFERENCE )->m_Italic = Entry->m_Prefix.m_Italic;
|
||||
DrawLibItem->GetField( REFERENCE )->m_Width = Entry->m_Prefix.m_Width;
|
||||
|
||||
/* Init des autres champs si predefinis dans la librairie */
|
||||
for( Field = Entry->Fields; Field != NULL; Field = Field->Next() )
|
||||
for( Field = Entry->m_Fields; Field != NULL; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() && Field->m_Name.IsEmpty() )
|
||||
continue;
|
||||
|
||||
ii = Field->m_FieldId;
|
||||
if( ii < 2 )
|
||||
if( ii < 2 ) // Reference or value, already done
|
||||
continue;
|
||||
|
||||
if( ii >= DrawLibItem->GetFieldCount() )
|
||||
|
@ -230,15 +217,9 @@ SCH_COMPONENT* WinEDA_SchematicFrame::Load_Component( wxDC* DC,
|
|||
SCH_CMP_FIELD* f = DrawLibItem->GetField( ii );
|
||||
|
||||
f->m_Pos += Field->m_Pos;
|
||||
f->m_Size = Field->m_Size;
|
||||
f->m_Attributs = Field->m_Attributs;
|
||||
f->m_Orient = Field->m_Orient;
|
||||
f->ImportValues( *Field );
|
||||
f->m_Text = Field->m_Text;
|
||||
f->m_Name = Field->m_Name;
|
||||
f->m_HJustify = Field->m_HJustify;
|
||||
f->m_VJustify = Field->m_VJustify;
|
||||
f->m_Italic = Field->m_Italic;
|
||||
f->m_Width = Field->m_Width;
|
||||
}
|
||||
|
||||
DrawStructsInGhost( DrawPanel, DC, DrawLibItem, 0, 0 );
|
||||
|
|
|
@ -220,9 +220,7 @@ void WinEDA_LibeditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
|||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
wxPoint mpos;
|
||||
wxGetMousePosition( &mpos.x, &mpos.y );
|
||||
InstallLibeditFrame( mpos );
|
||||
InstallLibeditFrame( );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -327,7 +327,7 @@ LibDrawField* WinEDA_LibeditFrame::LocateField( EDA_LibComponentStruct* LibEntry
|
|||
return &LibEntry->m_Prefix;
|
||||
|
||||
/* Localisation des autres fields */
|
||||
for( LibDrawField* field = LibEntry->Fields; field; field = field->Next() )
|
||||
for( LibDrawField* field = LibEntry->m_Fields; field; field = field->Next() )
|
||||
{
|
||||
if( field->m_Text.IsEmpty() )
|
||||
continue;
|
||||
|
|
|
@ -378,7 +378,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case ID_LIBEDIT_GET_FRAME_EDIT_PART:
|
||||
InstallLibeditFrame( pos );
|
||||
InstallLibeditFrame( );
|
||||
break;
|
||||
|
||||
case ID_LIBEDIT_GET_FRAME_EDIT_FIELDS:
|
||||
|
|
|
@ -278,12 +278,10 @@ EDA_LibComponentStruct* CopyLibEntryStruct( wxWindow* frame, EDA_LibComponentStr
|
|||
NewStruct->m_DocFile = OldEntry->m_DocFile;
|
||||
|
||||
/* Copie des champs */
|
||||
for( OldField = OldEntry->Fields; OldField != NULL;
|
||||
OldField = (LibDrawField*) OldField->Next() )
|
||||
for( OldField = OldEntry->m_Fields; OldField != NULL; OldField = OldField->Next() )
|
||||
{
|
||||
NewField = OldField->GenCopy();
|
||||
NewField->SetNext( NewStruct->Fields );
|
||||
NewStruct->Fields = NewField;
|
||||
NewStruct->m_Fields.PushBack( NewField );
|
||||
}
|
||||
|
||||
/* Copie des elements type Drawing */
|
||||
|
@ -363,8 +361,7 @@ bool EDA_LibComponentStruct::Save( FILE* aFile )
|
|||
m_Prefix.Save( aFile );
|
||||
m_Name.Save( aFile );
|
||||
|
||||
for( Field = Fields; Field!= NULL;
|
||||
Field = (LibDrawField*) Field->Next() )
|
||||
for( Field = m_Fields; Field != NULL; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() && Field->m_Name.IsEmpty() )
|
||||
continue;
|
||||
|
|
|
@ -394,7 +394,7 @@ void WinEDA_LibeditFrame::PlaceAncre()
|
|||
LibEntry->m_Name.m_Pos += offset;
|
||||
LibEntry->m_Prefix.m_Pos += offset;
|
||||
|
||||
for( LibDrawField* field = LibEntry->Fields; field; field = field->Next() )
|
||||
for( LibDrawField* field = LibEntry->m_Fields; field; field = field->Next() )
|
||||
{
|
||||
field->m_Pos += offset;
|
||||
}
|
||||
|
|
|
@ -160,7 +160,7 @@ void WinEDA_LibeditFrame::ReCreateHToolbar()
|
|||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Add, remove, edit fields properties" ) );
|
||||
_( "Add, remove fields and edit fields properties" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_CHECK_PART, BITMAP( erc_xpm ),
|
||||
|
|
|
@ -403,7 +403,7 @@ private:
|
|||
LibraryStruct* Library, int noMsg = 0 );
|
||||
|
||||
void DisplayCmpDoc( const wxString& Name );
|
||||
void InstallLibeditFrame( const wxPoint& pos );
|
||||
void InstallLibeditFrame( );
|
||||
|
||||
// General editing
|
||||
public:
|
||||
|
|
|
@ -85,8 +85,8 @@ public:
|
|||
int m_Status_Pcb; // Flags used in ratsnet calculation and update
|
||||
EDA_BoardDesignSettings* m_BoardSettings; // Link to current design settings
|
||||
int m_NbNodes; // Active pads (pads attached to a net ) count
|
||||
int m_NbLinks; // Ratsnet count
|
||||
int m_NbLoclinks; // Rastests to shew while creating a track
|
||||
int m_NbLinks; // Ratsnest count
|
||||
int m_NbLoclinks; // Ratsests to show while creating a track
|
||||
int m_NbNoconnect; // Active ratsnet count (rastnest not alraedy connected by tracks
|
||||
|
||||
DLIST<BOARD_ITEM> m_Drawings; // linked list of lines & texts
|
||||
|
|
Loading…
Reference in New Issue