Commit 930a777e authored by charras's avatar charras

Change dialog to edit fields in libedit (see CHANGELOG.txt)

parent cbb5159a
...@@ -5,6 +5,19 @@ Started 2007-June-11 ...@@ -5,6 +5,19 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2008-Dec-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++Eeschema:
Note: this is a work in progress!
Change dialog to edit fields in libedit.
Most of code created by Dick to edit fields in shematic is reused (this was the goal).
Component dialog properties -in libedit) is not modified, and fields can be also edited with it.
New dialog box is similar to the component dialog box used in schematic.
But all features do not work (work in progress!)
TODO (by me):
use vector to handle fields in libraries, like schematic.
Finish work, and test it.
2008-Dec-29 UPDATE Dick Hollenbeck <dick@softplc.com> 2008-Dec-29 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
++all ++all
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "wx/generic/aboutdlgg.h" #include "wx/generic/aboutdlgg.h"
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h"
#include "common.h" #include "common.h"
extern wxString g_Main_Title; // Import program title extern wxString g_Main_Title; // Import program title
......
...@@ -580,11 +580,21 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC ) ...@@ -580,11 +580,21 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC )
} }
//#define USE_GCDC_IN_KICAD
#ifdef USE_GCDC_IN_KICAD
#include <wx/dcgraph.h>
#endif
/***************************************************/ /***************************************************/
void WinEDA_DrawPanel::OnPaint( wxPaintEvent& event ) void WinEDA_DrawPanel::OnPaint( wxPaintEvent& event )
/***************************************************/ /***************************************************/
{ {
#ifdef USE_GCDC_IN_KICAD
wxPaintDC pDC( this );
wxGCDC paintDC(pDC); // Following line should be disabled on MSW and OS X
paintDC.GetGraphicsContext()->Translate(0.5, 0.5); // Fix for pixel offset bug http://trac.wxwidgets.org/ticket/4187
#else
wxPaintDC paintDC( this ); wxPaintDC paintDC( this );
#endif
EDA_Rect tmp; EDA_Rect tmp;
wxRect PaintClipBox; wxRect PaintClipBox;
wxPoint org; wxPoint org;
......
...@@ -41,6 +41,8 @@ set(EESCHEMA_SRCS ...@@ -41,6 +41,8 @@ set(EESCHEMA_SRCS
dialog_edit_component_in_schematic.cpp dialog_edit_component_in_schematic.cpp
dialog_edit_label.cpp dialog_edit_label.cpp
dialog_edit_label_base.cpp dialog_edit_label_base.cpp
dialog_edit_libentry_fields_in_lib.cpp
dialog_edit_libentry_fields_in_lib_base.cpp
dialog_eeschema_config.cpp dialog_eeschema_config.cpp
dialog_erc.cpp dialog_erc.cpp
# dialog_find.cpp # dialog_find.cpp
......
...@@ -410,8 +410,11 @@ LibDrawField* LibDrawField::GenCopy() ...@@ -410,8 +410,11 @@ LibDrawField* LibDrawField::GenCopy()
} }
// copie du field dans le field Target /** Function Copy
void LibDrawField::Copy( LibDrawField* Target ) * copy parameters of this to Target. Pointers are not copied
* @param Target = the LibDrawField to set with "this" values
*/
void LibDrawField::Copy( LibDrawField* Target ) const
{ {
Target->m_Pos = m_Pos; Target->m_Pos = m_Pos;
Target->m_Size = m_Size; Target->m_Size = m_Size;
......
...@@ -137,6 +137,12 @@ public: ...@@ -137,6 +137,12 @@ public:
* @return bool - true if success writing else false. * @return bool - true if success writing else false.
*/ */
bool Save( FILE* aFile ); bool Save( FILE* aFile );
/** Function SetFields
* initialize fields from a vector of fields
* @param aFields a std::vector <LibDrawField> to import.
*/
void SetFields( const std::vector <LibDrawField> aFields );
}; };
......
...@@ -497,7 +497,14 @@ public: ...@@ -497,7 +497,14 @@ public:
LibDrawField* GenCopy(); LibDrawField* GenCopy();
void Copy( LibDrawField* Target );
/** Function Copy
* copy parameters of this to Target. Pointers are not copied
* @param Target = the LibDrawField to set with "this" values
*/
void Copy( LibDrawField* Target ) const;
void SetFields( const std::vector <LibDrawField> aFields );
void Draw( WinEDA_DrawPanel * aPanel, wxDC * aDC, const wxPoint &aOffset, int aColor, void Draw( WinEDA_DrawPanel * aPanel, wxDC * aDC, const wxPoint &aOffset, int aColor,
int aDrawMode, void* aData, int aTransformMatrix[2][2] ); int aDrawMode, void* aData, int aTransformMatrix[2][2] );
......
...@@ -445,7 +445,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel() ...@@ -445,7 +445,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel()
fieldNameTextCtrl->SetValue( field.m_Name ); fieldNameTextCtrl->SetValue( field.m_Name );
// if fieldNdx == REFERENCE, VALUE, FOOTPRINT, or DATASHEET, then disable editing // if fieldNdx == REFERENCE, VALUE, FOOTPRINT, or DATASHEET, then disable editing
// fieldNameTextCtrl->Enable( fieldNdx >= FIELD1 ); fieldNameTextCtrl->Enable( fieldNdx >= FIELD1 );
fieldNameTextCtrl->SetEditable( fieldNdx >= FIELD1 ); fieldNameTextCtrl->SetEditable( fieldNdx >= FIELD1 );
fieldValueTextCtrl->SetValue( field.m_Text ); fieldValueTextCtrl->SetValue( field.m_Text );
......
/*******************************************************************************/
/* library editor: edition of fields of lib entries (components in libraries) */
/*******************************************************************************/
#include "fctsys.h"
#include <algorithm>
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "protos.h"
#include "dialog_edit_libentry_fields_in_lib_base.h"
// 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 not editable names, remove the name (thar is 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
/*****************************************************************************************/
{
private:
WinEDA_LibeditFrame* m_Parent;
EDA_LibComponentStruct* m_LibEntry;
bool m_skipCopyFromPanel;
/// a copy of the edited component's LibDrawFields
std::vector <LibDrawField> m_FieldsBuf;
public:
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB( WinEDA_LibeditFrame* aParent,
EDA_LibComponentStruct* aLibEntry );
~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB();
private:
// Events handlers:
void OnInitDialog( wxInitDialogEvent& event );
void OnListItemDeselected( wxListEvent& event );
void OnListItemSelected( wxListEvent& event );
void addFieldButtonHandler( wxCommandEvent& event );
void deleteFieldButtonHandler( wxCommandEvent& event );
void moveUpButtonHandler( wxCommandEvent& event );
void OnCancelButtonClick( wxCommandEvent& event );
void OnOKButtonClick( wxCommandEvent& event );
// internal functions:
void setSelectedFieldNdx( int aFieldNdx );
int getSelectedFieldNdx();
/**
* Function InitBuffers
* sets up to edit the given component.
* @param aComponent The component to edit.
*/
void InitBuffers( void );
/**
* Function copySelectedFieldToPanel
* sets the values displayed on the panel according to
* the currently selected field row
*/
void copySelectedFieldToPanel();
/**
* Function copyPanelToSelectedField
* copies the values displayed on the panel fields to the currently selected field
* @return bool - true if all fields are OK, else false if the user has put
* bad data into a field, and this value can be used to deny a row change.
*/
bool copyPanelToSelectedField();
void setRowItem( int aFieldNdx, const LibDrawField& aField );
};
/*****************************************************************/
void WinEDA_LibeditFrame::InstallFieldsEditorDialog( void )
/*****************************************************************/
{
if( CurrentLibEntry == NULL )
return;
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB* frame =
new DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB( this, CurrentLibEntry );
int IsModified = frame->ShowModal(); frame->Destroy();
if( IsModified )
Refresh();
}
/***********************************************************************/
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;
/***********************************************************************/
}
/***********************************************************************/
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB()
/***********************************************************************/
{
}
/**********************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnInitDialog( wxInitDialogEvent& event )
/**********************************************************************************/
{
SetFont( *g_DialogFont );
m_skipCopyFromPanel = false;
wxListItem columnLabel;
columnLabel.SetImage( -1 );
columnLabel.SetText( _( "Name" ) );
fieldListCtrl->InsertColumn( 0, columnLabel );
columnLabel.SetText( _( "Value" ) );
fieldListCtrl->InsertColumn( 1, columnLabel );
wxString label = _( "Size" ) + ReturnUnitSymbol( g_UnitMetric );
textSizeLabel->SetLabel( label );
label = _( "Pos " );
label += _( "X" );
label += ReturnUnitSymbol( g_UnitMetric );
posXLabel->SetLabel( label );
label = _( "Pos " );
label += _( "Y" );
label += ReturnUnitSymbol( g_UnitMetric );
posYLabel->SetLabel( label );
InitBuffers();
copySelectedFieldToPanel();
if( GetSizer() )
{
GetSizer()->SetSizeHints( this );
}
}
/**********************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnListItemDeselected( wxListEvent& event )
/**********************************************************************************/
{
if( !m_skipCopyFromPanel )
{
if( !copyPanelToSelectedField() )
event.Skip(); // do not go to the next row
}
}
/**********************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnListItemSelected( wxListEvent& event )
/**********************************************************************************/
{
// remember the selected row, statically
s_SelectedRow = event.GetIndex();
copySelectedFieldToPanel();
}
/***********************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCancelButtonClick( wxCommandEvent& event )
/***********************************************************************************/
{
EndModal( 1 );
}
/**********************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnOKButtonClick( wxCommandEvent& event )
/**********************************************************************************/
{
if( !copyPanelToSelectedField() )
return;
/* A new name could be entered in VALUE field.
* Must not be an existing alias name in alias list box */
wxString* newvalue = &m_FieldsBuf[VALUE].m_Text;
for( unsigned ii = 0; ii < m_LibEntry->m_AliasList.GetCount(); ii += ALIAS_NEXT )
{
wxString* libname = &(m_LibEntry->m_AliasList[ii + ALIAS_NAME]);
if( newvalue->CmpNoCase( *libname ) == 0 )
{
wxString msg;
msg.Printf(
_(
"A new name is entered for this component\nAn alias %s already exists!\nCannot update this component" ),
newvalue->GetData() );
DisplayError( this, msg );
return;
}
}
/* save old cmp in undo list */
m_Parent->SaveCopyInUndoList( m_LibEntry, IS_CHANGED );
// delete any fields with no name
for( unsigned i = FIELD1; i<m_FieldsBuf.size(); )
{
if( m_FieldsBuf[i].m_Name.IsEmpty() )
{
m_FieldsBuf.erase( m_FieldsBuf.begin() + i );
continue;
}
++i;
}
// copy all the fields back, and change the length of m_Fields.
m_LibEntry->SetFields( m_FieldsBuf );
m_Parent->GetScreen()->SetModify();
m_Parent->DrawPanel->Refresh( TRUE );
EndModal( 0 );
}
/**************************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::addFieldButtonHandler( wxCommandEvent& event )
/**************************************************************************************/
{
// in case m_FieldsBuf[REFERENCE].m_Orient has changed on screen only, grab
// screen contents.
if( !copyPanelToSelectedField() )
return;
unsigned fieldNdx = m_FieldsBuf.size();
LibDrawField blank( fieldNdx );
blank.m_Orient = m_FieldsBuf[REFERENCE].m_Orient;
m_FieldsBuf.push_back( blank );
setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] );
m_skipCopyFromPanel = true;
setSelectedFieldNdx( fieldNdx );
m_skipCopyFromPanel = false;
}
/*****************************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::deleteFieldButtonHandler( wxCommandEvent& event )
/*****************************************************************************************/
{
unsigned fieldNdx = getSelectedFieldNdx();
if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too
return;
if( fieldNdx < FIELD1 )
{
wxBell();
return;
}
m_FieldsBuf.erase( m_FieldsBuf.begin() + fieldNdx );
fieldListCtrl->DeleteItem( fieldNdx );
if( fieldNdx >= m_FieldsBuf.size() )
--fieldNdx;
m_skipCopyFromPanel = true;
setSelectedFieldNdx( fieldNdx );
m_skipCopyFromPanel = false;
}
/*************************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB:: moveUpButtonHandler( wxCommandEvent& event )
/*************************************************************************************/
{
unsigned fieldNdx = getSelectedFieldNdx();
if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too
return;
if( fieldNdx <= FIELD1 )
{
wxBell();
return;
}
if( !copyPanelToSelectedField() )
return;
// swap the fieldNdx field with the one before it, in both the vector
// and in the fieldListCtrl
LibDrawField tmp = m_FieldsBuf[fieldNdx - 1];
m_FieldsBuf[fieldNdx - 1] = m_FieldsBuf[fieldNdx];
setRowItem( fieldNdx - 1, m_FieldsBuf[fieldNdx] );
m_FieldsBuf[fieldNdx] = tmp;
setRowItem( fieldNdx, tmp );
m_skipCopyFromPanel = true;
setSelectedFieldNdx( fieldNdx - 1 );
m_skipCopyFromPanel = false;
}
/****************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::setSelectedFieldNdx( int aFieldNdx )
/****************************************************************************/
{
/* deselect old selection, but I think this is done by single selection flag within fieldListCtrl
* fieldListCtrl->SetItemState( s_SelectedRow, 0, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED);
*/
if( aFieldNdx >= (int) m_FieldsBuf.size() )
aFieldNdx = m_FieldsBuf.size() - 1;
if( aFieldNdx < 0 )
aFieldNdx = 0;
fieldListCtrl->SetItemState( aFieldNdx, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
fieldListCtrl->EnsureVisible( aFieldNdx );
s_SelectedRow = aFieldNdx;
}
int DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::getSelectedFieldNdx()
{
return s_SelectedRow;
}
bool SortFieldsById(const LibDrawField& item1, const LibDrawField& item2)
{
return item1.m_FieldId < item2.m_FieldId;
}
/***********************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers( void )
/***********************************************************/
{
// copy all the fields to a work area
m_FieldsBuf.reserve(NUMBER_OF_FIELDS);
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() )
m_FieldsBuf.push_back( *field );
// Display 12 fields (or more), and add missing fields
LibDrawField blank( 2 );
unsigned fcount = m_FieldsBuf.size();
for( unsigned ii = 2; ii < NUMBER_OF_FIELDS; ii++ )
{
unsigned jj;
for ( jj = 2; jj < fcount; jj ++ )
if ( m_FieldsBuf[jj].m_FieldId == (int)ii ) // Field id already exists, ok.
break;
if ( jj < fcount ) continue;
// Field id not found: add this field
blank.m_FieldId = ii;
m_FieldsBuf.push_back( blank );
}
m_FieldsBuf[VALUE].m_Name << wxT( "/" ) << _( "Chip Name" );
// Sort files by field id, because they are not entered by id
sort(m_FieldsBuf.begin(), m_FieldsBuf.end(), SortFieldsById);
// Now, all fields with Id 0 to NUMBER_OF_FIELDS-1 exist
// init default fields names
for( int ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
{
if( m_FieldsBuf[ii].m_Name.IsEmpty() || ii < FIELD1 )
m_FieldsBuf[ii].m_Name = ReturnDefaultFieldName( ii );
}
for( unsigned ii = 0; ii < m_FieldsBuf.size(); ++ii )
{
setRowItem( ii, m_FieldsBuf[ii] );
}
// put focus on the list ctrl
fieldListCtrl->SetFocus();
// resume editing at the last row edited, last time dialog was up.
setSelectedFieldNdx( s_SelectedRow );
}
/***********************************************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::setRowItem( int aFieldNdx, const LibDrawField& aField )
/***********************************************************************************************/
{
wxASSERT( aFieldNdx >= 0 );
// insert blanks if aFieldNdx is referencing a "yet to be defined" row
while( aFieldNdx >= fieldListCtrl->GetItemCount() )
{
long ndx = fieldListCtrl->InsertItem( fieldListCtrl->GetItemCount(), wxEmptyString );
wxASSERT( ndx >= 0 );
fieldListCtrl->SetItem( ndx, 1, wxEmptyString );
}
fieldListCtrl->SetItem( aFieldNdx, 0, aField.m_Name );
fieldListCtrl->SetItem( aFieldNdx, 1, aField.m_Text );
// recompute the column widths here, after setting texts
fieldListCtrl->SetColumnWidth( 0, wxLIST_AUTOSIZE );
fieldListCtrl->SetColumnWidth( 1, wxLIST_AUTOSIZE );
}
/****************************************************************/
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copySelectedFieldToPanel()
/****************************************************************/
{
unsigned fieldNdx = getSelectedFieldNdx();
if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too
return;
LibDrawField& field = m_FieldsBuf[fieldNdx];
showCheckBox->SetValue( !(field.m_Attributs & TEXT_NO_VISIBLE) );
rotateCheckBox->SetValue( field.m_Orient == TEXT_ORIENT_VERT );
int style = 0;
if( field.m_Italic )
style = 1;
if( field.m_Width > 1 )
style |= 2;
m_StyleRadioBox->SetSelection( style );
fieldNameTextCtrl->SetValue( field.m_Name );
// if fieldNdx == REFERENCE, VALUE, FOOTPRINT, or DATASHEET, then disable editing
fieldNameTextCtrl->Enable( fieldNdx >= FIELD1 );
fieldNameTextCtrl->SetEditable( fieldNdx >= FIELD1 );
fieldValueTextCtrl->SetValue( field.m_Text );
if( fieldNdx == VALUE && m_LibEntry && m_LibEntry->m_Options == ENTRY_POWER )
fieldValueTextCtrl->Enable( FALSE );
textSizeTextCtrl->SetValue(
WinEDA_GraphicTextCtrl::FormatSize( EESCHEMA_INTERNAL_UNIT, g_UnitMetric, field.m_Size.x ) );
wxPoint coord = field.m_Pos;
wxPoint zero;
// If the field value is empty and the position is at relative zero, we set the
// initial position as a small offset from the ref field, and orient
// it the same as the ref field. That is likely to put it at least
// close to the desired position.
if( coord == zero && field.m_Text.IsEmpty() )
{
rotateCheckBox->SetValue( m_FieldsBuf[REFERENCE].m_Orient == TEXT_ORIENT_VERT );
coord.x = m_FieldsBuf[REFERENCE].m_Pos.x + (fieldNdx - FIELD1 + 1) * 100;
coord.y = m_FieldsBuf[REFERENCE].m_Pos.y + (fieldNdx - FIELD1 + 1) * 100;
// coord can compute negative if field is < FIELD1, e.g. FOOTPRINT.
// That is ok, we basically don't want all the new empty fields on
// top of each other.
}
wxString coordText = ReturnStringFromValue( g_UnitMetric, coord.x, EESCHEMA_INTERNAL_UNIT );
posXTextCtrl->SetValue( coordText );
// 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
NEGATE( coord.y );
coordText = ReturnStringFromValue( g_UnitMetric, coord.y, EESCHEMA_INTERNAL_UNIT );
posYTextCtrl->SetValue( coordText );
}
/*****************************************************************/
bool DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copyPanelToSelectedField()
/*****************************************************************/
{
unsigned fieldNdx = getSelectedFieldNdx();
if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too
return true;
LibDrawField& field = m_FieldsBuf[fieldNdx];
if( showCheckBox->GetValue() )
field.m_Attributs &= ~TEXT_NO_VISIBLE;
else
field.m_Attributs |= TEXT_NO_VISIBLE;
if( rotateCheckBox->GetValue() )
field.m_Orient = TEXT_ORIENT_VERT;
else
field.m_Orient = TEXT_ORIENT_HORIZ;
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
*/
if( !fieldValueTextCtrl->GetValue().IsEmpty() )
field.m_Text = fieldValueTextCtrl->GetValue();
if( !fieldNameTextCtrl->GetValue().IsEmpty() )
field.m_Name = fieldNameTextCtrl->GetValue();
setRowItem( fieldNdx, field ); // update fieldListCtrl
field.m_Size.x = WinEDA_GraphicTextCtrl::ParseSize(
textSizeTextCtrl->GetValue(), EESCHEMA_INTERNAL_UNIT, g_UnitMetric );
field.m_Size.y = field.m_Size.x;
int style = m_StyleRadioBox->GetSelection();
if( (style & 1 ) != 0 )
field.m_Italic = true;
else
field.m_Italic = false;
if( (style & 2 ) != 0 )
field.m_Width = field.m_Size.x / 4;
else
field.m_Width = 0;
double value;
posXTextCtrl->GetValue().ToDouble( &value );
field.m_Pos.x = From_User_Unit( g_UnitMetric, value, EESCHEMA_INTERNAL_UNIT );
posYTextCtrl->GetValue().ToDouble( &value );
field.m_Pos.y = From_User_Unit( g_UnitMetric, value, EESCHEMA_INTERNAL_UNIT );
// 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
NEGATE( field.m_Pos.y );
return true;
}
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_edit_libentry_fields_in_lib_base.h"
///////////////////////////////////////////////////////////////////////////
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* mainSizer;
mainSizer = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* fieldsSizer;
fieldsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Fields") ), wxHORIZONTAL );
wxStaticBoxSizer* gridStaticBoxSizer;
gridStaticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, wxEmptyString ), wxVERTICAL );
fieldListCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES );
gridStaticBoxSizer->Add( fieldListCtrl, 1, wxALL|wxEXPAND, 8 );
addFieldButton = new wxButton( this, wxID_ANY, _("Add Field"), wxDefaultPosition, wxDefaultSize, 0 );
addFieldButton->SetToolTip( _("Add a new custom field") );
gridStaticBoxSizer->Add( addFieldButton, 0, wxALL|wxEXPAND, 5 );
deleteFieldButton = new wxButton( this, wxID_ANY, _("Delete Field"), wxDefaultPosition, wxDefaultSize, 0 );
deleteFieldButton->SetToolTip( _("Delete one of the optional fields") );
gridStaticBoxSizer->Add( deleteFieldButton, 0, wxALL|wxEXPAND, 5 );
moveUpButton = new wxButton( this, wxID_ANY, _("Move Up"), wxDefaultPosition, wxDefaultSize, 0 );
moveUpButton->SetToolTip( _("Move the selected optional fields up one position") );
gridStaticBoxSizer->Add( moveUpButton, 0, wxALL|wxEXPAND, 5 );
fieldsSizer->Add( gridStaticBoxSizer, 5, wxEXPAND|wxRIGHT, 8 );
wxBoxSizer* fieldEditBoxSizer;
fieldEditBoxSizer = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* optionsSizer;
optionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxHORIZONTAL );
wxBoxSizer* orientationSizer;
orientationSizer = new wxBoxSizer( wxHORIZONTAL );
wxString m_FieldPositionCtrlChoices[] = { _("Align left"), _("Align center"), _("Align right") };
int m_FieldPositionCtrlNChoices = sizeof( m_FieldPositionCtrlChoices ) / sizeof( wxString );
m_FieldPositionCtrl = new wxRadioBox( this, wxID_ANY, _("Horiz. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldPositionCtrlNChoices, m_FieldPositionCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_FieldPositionCtrl->SetSelection( 1 );
m_FieldPositionCtrl->SetToolTip( _("Select if the component is to be rotated when drawn") );
orientationSizer->Add( m_FieldPositionCtrl, 1, wxALL, 8 );
optionsSizer->Add( orientationSizer, 1, wxLEFT|wxRIGHT|wxTOP|wxEXPAND|wxALIGN_CENTER_VERTICAL, 0 );
wxBoxSizer* mirrorSizer;
mirrorSizer = new wxBoxSizer( wxHORIZONTAL );
wxString m_FieldVJustifyCtrlChoices[] = { _("Align bottom"), _("Align center"), _("Align top") };
int m_FieldVJustifyCtrlNChoices = sizeof( m_FieldVJustifyCtrlChoices ) / sizeof( wxString );
m_FieldVJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Vert Justify"), wxDefaultPosition, wxDefaultSize, m_FieldVJustifyCtrlNChoices, m_FieldVJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_FieldVJustifyCtrl->SetSelection( 1 );
m_FieldVJustifyCtrl->SetToolTip( _("Pick the graphical transformation to be used when displaying the component, if any") );
mirrorSizer->Add( m_FieldVJustifyCtrl, 1, wxALL, 8 );
optionsSizer->Add( mirrorSizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, 0 );
fieldEditBoxSizer->Add( optionsSizer, 0, wxALIGN_TOP|wxALL|wxEXPAND, 5 );
wxStaticBoxSizer* visibilitySizer;
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Visibility") ), wxHORIZONTAL );
wxBoxSizer* bShowRotateSizer;
bShowRotateSizer = new wxBoxSizer( wxVERTICAL );
showCheckBox = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
showCheckBox->SetToolTip( _("Check if you want this field visible") );
bShowRotateSizer->Add( showCheckBox, 0, wxALL, 5 );
rotateCheckBox = new wxCheckBox( this, wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
rotateCheckBox->SetToolTip( _("Check if you want this field's text rotated 90 degrees") );
bShowRotateSizer->Add( rotateCheckBox, 0, wxALL, 5 );
visibilitySizer->Add( bShowRotateSizer, 1, wxALIGN_CENTER_VERTICAL, 5 );
wxString m_StyleRadioBoxChoices[] = { _("Normal"), _("Italic"), _("Bold"), _("Bold Italic") };
int m_StyleRadioBoxNChoices = sizeof( m_StyleRadioBoxChoices ) / sizeof( wxString );
m_StyleRadioBox = new wxRadioBox( this, wxID_ANY, _("Style:"), wxDefaultPosition, wxDefaultSize, m_StyleRadioBoxNChoices, m_StyleRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
m_StyleRadioBox->SetSelection( 0 );
visibilitySizer->Add( m_StyleRadioBox, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
fieldEditBoxSizer->Add( visibilitySizer, 0, wxEXPAND, 5 );
wxBoxSizer* fieldNameBoxSizer;
fieldNameBoxSizer = new wxBoxSizer( wxVERTICAL );
fieldNameLabel = new wxStaticText( this, wxID_ANY, _("Field Name"), wxDefaultPosition, wxDefaultSize, 0 );
fieldNameLabel->Wrap( -1 );
fieldNameBoxSizer->Add( fieldNameLabel, 0, 0, 5 );
fieldNameTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldNameTextCtrl->SetToolTip( _("The text (or value) of the currently selected field") );
fieldNameBoxSizer->Add( fieldNameTextCtrl, 0, wxEXPAND, 5 );
fieldEditBoxSizer->Add( fieldNameBoxSizer, 0, wxALL|wxEXPAND, 5 );
wxBoxSizer* fieldTextBoxSizer;
fieldTextBoxSizer = new wxBoxSizer( wxVERTICAL );
fieldValueLabel = new wxStaticText( this, wxID_ANY, _("Field Value"), wxDefaultPosition, wxDefaultSize, 0 );
fieldValueLabel->Wrap( -1 );
fieldTextBoxSizer->Add( fieldValueLabel, 0, 0, 5 );
fieldValueTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldValueTextCtrl->SetToolTip( _("The text (or value) of the currently selected field") );
fieldTextBoxSizer->Add( fieldValueTextCtrl, 0, wxEXPAND, 5 );
fieldEditBoxSizer->Add( fieldTextBoxSizer, 0, wxALL|wxEXPAND, 5 );
wxBoxSizer* textSizeBoxSizer;
textSizeBoxSizer = new wxBoxSizer( wxVERTICAL );
textSizeLabel = new wxStaticText( this, wxID_ANY, _("Size(\")"), wxDefaultPosition, wxDefaultSize, 0 );
textSizeLabel->Wrap( -1 );
textSizeBoxSizer->Add( textSizeLabel, 0, 0, 5 );
textSizeTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
textSizeTextCtrl->SetToolTip( _("The vertical height of the currently selected field's text in the schematic") );
textSizeBoxSizer->Add( textSizeTextCtrl, 0, wxEXPAND, 5 );
fieldEditBoxSizer->Add( textSizeBoxSizer, 0, wxALL|wxEXPAND, 5 );
wxBoxSizer* positionBoxSizer;
positionBoxSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* posXBoxSizer;
posXBoxSizer = new wxBoxSizer( wxVERTICAL );
posXLabel = new wxStaticText( this, wxID_ANY, _("PosX(\")"), wxDefaultPosition, wxDefaultSize, 0 );
posXLabel->Wrap( -1 );
posXBoxSizer->Add( posXLabel, 0, 0, 5 );
posXTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
posXBoxSizer->Add( posXTextCtrl, 0, wxEXPAND, 5 );
positionBoxSizer->Add( posXBoxSizer, 1, wxALL|wxEXPAND, 5 );
wxBoxSizer* posYBoxSizer;
posYBoxSizer = new wxBoxSizer( wxVERTICAL );
posYLabel = new wxStaticText( this, wxID_ANY, _("PosY(\")"), wxDefaultPosition, wxDefaultSize, 0 );
posYLabel->Wrap( -1 );
posYBoxSizer->Add( posYLabel, 0, 0, 5 );
posYTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
posYTextCtrl->SetToolTip( _("The Y coordinate of the text relative to the component") );
posYBoxSizer->Add( posYTextCtrl, 0, wxEXPAND, 5 );
positionBoxSizer->Add( posYBoxSizer, 1, wxALL|wxEXPAND, 5 );
fieldEditBoxSizer->Add( positionBoxSizer, 1, wxEXPAND, 5 );
fieldsSizer->Add( fieldEditBoxSizer, 3, wxEXPAND, 5 );
mainSizer->Add( fieldsSizer, 1, wxEXPAND|wxALL, 5 );
stdDialogButtonSizer = new wxStdDialogButtonSizer();
stdDialogButtonSizerOK = new wxButton( this, wxID_OK );
stdDialogButtonSizer->AddButton( stdDialogButtonSizerOK );
stdDialogButtonSizerCancel = new wxButton( this, wxID_CANCEL );
stdDialogButtonSizer->AddButton( stdDialogButtonSizerCancel );
stdDialogButtonSizer->Realize();
mainSizer->Add( stdDialogButtonSizer, 0, wxALL|wxEXPAND, 8 );
this->SetSizer( mainSizer );
this->Layout();
// Connect Events
this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnInitDialog ) );
fieldListCtrl->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnListItemDeselected ), NULL, this );
fieldListCtrl->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnListItemSelected ), NULL, this );
addFieldButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::addFieldButtonHandler ), NULL, this );
deleteFieldButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::deleteFieldButtonHandler ), NULL, this );
moveUpButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::moveUpButtonHandler ), NULL, this );
stdDialogButtonSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnCancelButtonClick ), NULL, this );
stdDialogButtonSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnOKButtonClick ), NULL, this );
}
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE()
{
// Disconnect Events
this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnInitDialog ) );
fieldListCtrl->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnListItemDeselected ), NULL, this );
fieldListCtrl->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnListItemSelected ), NULL, this );
addFieldButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::addFieldButtonHandler ), NULL, this );
deleteFieldButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::deleteFieldButtonHandler ), NULL, this );
moveUpButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::moveUpButtonHandler ), NULL, this );
stdDialogButtonSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnCancelButtonClick ), NULL, this );
stdDialogButtonSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::OnOKButtonClick ), NULL, this );
}
This source diff could not be displayed because it is too large. You can view the blob instead.
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __dialog_edit_libentry_fields_in_lib_base__
#define __dialog_edit_libentry_fields_in_lib_base__
#include <wx/intl.h>
#include <wx/listctrl.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/button.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <wx/radiobox.h>
#include <wx/checkbox.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE : public wxDialog
{
private:
protected:
wxListCtrl* fieldListCtrl;
wxButton* addFieldButton;
wxButton* deleteFieldButton;
wxButton* moveUpButton;
wxRadioBox* m_FieldPositionCtrl;
wxRadioBox* m_FieldVJustifyCtrl;
wxCheckBox* showCheckBox;
wxCheckBox* rotateCheckBox;
wxRadioBox* m_StyleRadioBox;
wxStaticText* fieldNameLabel;
wxTextCtrl* fieldNameTextCtrl;
wxStaticText* fieldValueLabel;
wxTextCtrl* fieldValueTextCtrl;
wxStaticText* textSizeLabel;
wxTextCtrl* textSizeTextCtrl;
wxStaticText* posXLabel;
wxTextCtrl* posXTextCtrl;
wxStaticText* posYLabel;
wxTextCtrl* posYTextCtrl;
wxStdDialogButtonSizer* stdDialogButtonSizer;
wxButton* stdDialogButtonSizerOK;
wxButton* stdDialogButtonSizerCancel;
// Virtual event handlers, overide them in your derived class
virtual void OnInitDialog( wxInitDialogEvent& event ){ event.Skip(); }
virtual void OnListItemDeselected( wxListEvent& event ){ event.Skip(); }
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
virtual void addFieldButtonHandler( wxCommandEvent& event ){ event.Skip(); }
virtual void deleteFieldButtonHandler( wxCommandEvent& event ){ event.Skip(); }
virtual void moveUpButtonHandler( wxCommandEvent& event ){ event.Skip(); }
virtual void OnCancelButtonClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnOKButtonClick( wxCommandEvent& event ){ event.Skip(); }
public:
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Fields Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 773,550 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE();
};
#endif //__dialog_edit_libentry_fields_in_lib_base__
...@@ -63,8 +63,8 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father, ...@@ -63,8 +63,8 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father,
WinEDA_DrawFrame( father, LIBEDITOR_FRAME, title, pos, size, style ) WinEDA_DrawFrame( father, LIBEDITOR_FRAME, title, pos, size, style )
{ {
m_FrameName = wxT( "LibeditFrame" ); m_FrameName = wxT( "LibeditFrame" );
m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines m_Draw_Axis = true; // true pour avoir les axes dessines
m_Draw_Grid = TRUE; // TRUE pour avoir la axes dessinee m_Draw_Grid = true; // true pour avoir la axes dessinee
// Give an icon // Give an icon
SetIcon( wxIcon( libedit_xpm ) ); SetIcon( wxIcon( libedit_xpm ) );
...@@ -73,12 +73,12 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father, ...@@ -73,12 +73,12 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father,
GetSettings(); GetSettings();
SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
if( DrawPanel ) if( DrawPanel )
DrawPanel->m_Block_Enable = TRUE; DrawPanel->m_Block_Enable = true;
ReCreateHToolbar(); ReCreateHToolbar();
ReCreateVToolbar(); ReCreateVToolbar();
DisplayLibInfos(); DisplayLibInfos();
BestZoom(); BestZoom();
Show( TRUE ); Show( true );
} }
...@@ -141,82 +141,84 @@ void WinEDA_LibeditFrame::SetToolbars() ...@@ -141,82 +141,84 @@ void WinEDA_LibeditFrame::SetToolbars()
if( CurrentLib == NULL ) if( CurrentLib == NULL )
{ {
if( m_HToolBar ) if( m_HToolBar )
m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_LIB, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_LIB, false );
} }
else else
{ {
if( m_HToolBar ) if( m_HToolBar )
m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_LIB, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_LIB, true );
} }
if( CurrentLibEntry == NULL ) if( CurrentLibEntry == NULL )
{ {
if( m_HToolBar ) if( m_HToolBar )
{ {
m_HToolBar->EnableTool( ID_LIBEDIT_IMPORT_PART, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_IMPORT_PART, true );
m_HToolBar->EnableTool( ID_LIBEDIT_EXPORT_PART, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_EXPORT_PART, false );
m_HToolBar->EnableTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, false );
m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_PART, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_PART, false );
m_HToolBar->EnableTool( ID_DE_MORGAN_CONVERT_BUTT, FALSE ); m_HToolBar->EnableTool( ID_DE_MORGAN_CONVERT_BUTT, false );
m_HToolBar->EnableTool( ID_DE_MORGAN_NORMAL_BUTT, FALSE ); m_HToolBar->EnableTool( ID_DE_MORGAN_NORMAL_BUTT, false );
m_HToolBar->EnableTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, false );
m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, false );
m_HToolBar->EnableTool( ID_LIBEDIT_CHECK_PART, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_CHECK_PART, false );
m_SelpartBox->Enable( FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, false );
m_HToolBar->EnableTool( ID_LIBEDIT_UNDO, FALSE ); m_SelpartBox->Enable( false );
m_HToolBar->EnableTool( ID_LIBEDIT_REDO, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_UNDO, false );
} m_HToolBar->EnableTool( ID_LIBEDIT_REDO, false );
g_EditPinByPinIsOn = FALSE; }
g_EditPinByPinIsOn = false;
m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn ); m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
if( m_VToolBar ) if( m_VToolBar )
{ {
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_TEXT_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_TEXT_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_LINE_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_LINE_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_RECT_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_RECT_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_ARC_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_ARC_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_DELETE_ITEM_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_DELETE_ITEM_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_IMPORT_BODY_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_IMPORT_BODY_BUTT, false );
m_VToolBar->EnableTool( ID_LIBEDIT_EXPORT_BODY_BUTT, FALSE ); m_VToolBar->EnableTool( ID_LIBEDIT_EXPORT_BODY_BUTT, false );
} }
} }
else else // if we have a current entry to edit:
{ {
if( m_HToolBar ) if( m_HToolBar )
{ {
m_HToolBar->EnableTool( ID_LIBEDIT_IMPORT_PART, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_IMPORT_PART, true );
m_HToolBar->EnableTool( ID_LIBEDIT_EXPORT_PART, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_EXPORT_PART, true );
m_HToolBar->EnableTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, true );
m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_PART, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_SAVE_CURRENT_PART, true );
m_HToolBar->EnableTool( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, true );
if( (CurrentLibEntry->m_UnitCount > 1) || g_AsDeMorgan ) if( (CurrentLibEntry->m_UnitCount > 1) || g_AsDeMorgan )
m_HToolBar->EnableTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, true );
else else
m_HToolBar->EnableTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, false );
m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn ); m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
m_HToolBar->EnableTool( ID_DE_MORGAN_CONVERT_BUTT, g_AsDeMorgan ); m_HToolBar->EnableTool( ID_DE_MORGAN_CONVERT_BUTT, g_AsDeMorgan );
m_HToolBar->EnableTool( ID_DE_MORGAN_NORMAL_BUTT, g_AsDeMorgan ); m_HToolBar->EnableTool( ID_DE_MORGAN_NORMAL_BUTT, g_AsDeMorgan );
/* Enable the "get doc" tool */ /* Enable the "get doc" tool */
bool enable_dtool = FALSE; bool enable_dtool = false;
if( !CurrentAliasName.IsEmpty() ) if( !CurrentAliasName.IsEmpty() )
{ {
int AliasLocation = LocateAlias( CurrentLibEntry->m_AliasList, CurrentAliasName ); int AliasLocation = LocateAlias( CurrentLibEntry->m_AliasList, CurrentAliasName );
if( AliasLocation >= 0 ) if( AliasLocation >= 0 )
if( !CurrentLibEntry->m_AliasList[AliasLocation + if( !CurrentLibEntry->m_AliasList[AliasLocation +
ALIAS_DOC_FILENAME].IsEmpty() ) ALIAS_DOC_FILENAME].IsEmpty() )
enable_dtool = TRUE; enable_dtool = true;
} }
else if( !CurrentLibEntry->m_DocFile.IsEmpty() ) else if( !CurrentLibEntry->m_DocFile.IsEmpty() )
enable_dtool = TRUE; enable_dtool = true;
if( enable_dtool ) if( enable_dtool )
m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, true );
else else
m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, FALSE ); m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, false );
m_HToolBar->EnableTool( ID_LIBEDIT_CHECK_PART, TRUE ); m_HToolBar->EnableTool( ID_LIBEDIT_CHECK_PART, true );
m_SelpartBox->Enable( (CurrentLibEntry->m_UnitCount > 1 ) ? TRUE : FALSE ); m_SelpartBox->Enable( (CurrentLibEntry->m_UnitCount > 1 ) ? true : false );
if( GetScreen() ) if( GetScreen() )
{ {
...@@ -227,15 +229,15 @@ void WinEDA_LibeditFrame::SetToolbars() ...@@ -227,15 +229,15 @@ void WinEDA_LibeditFrame::SetToolbars()
if( m_VToolBar ) if( m_VToolBar )
{ {
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_TEXT_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_TEXT_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_LINE_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_LINE_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_RECT_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_RECT_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_BODY_ARC_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_BODY_ARC_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_DELETE_ITEM_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_DELETE_ITEM_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_IMPORT_BODY_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_IMPORT_BODY_BUTT, true );
m_VToolBar->EnableTool( ID_LIBEDIT_EXPORT_BODY_BUTT, TRUE ); m_VToolBar->EnableTool( ID_LIBEDIT_EXPORT_BODY_BUTT, true );
} }
} }
...@@ -294,7 +296,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -294,7 +296,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
wxClientDC dc( DrawPanel ); wxClientDC dc( DrawPanel );
DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->m_IgnoreMouseEvents = true;
DrawPanel->PrepareGraphicContext( &dc ); DrawPanel->PrepareGraphicContext( &dc );
...@@ -347,7 +349,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -347,7 +349,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_LIBEDIT_NEW_PART: case ID_LIBEDIT_NEW_PART:
{ {
g_EditPinByPinIsOn = FALSE; g_EditPinByPinIsOn = false;
LibItemToRepeat = NULL; LibItemToRepeat = NULL;
CreateNewLibraryPart(); CreateNewLibraryPart();
GetScreen()->ClearUndoRedoList(); GetScreen()->ClearUndoRedoList();
...@@ -364,7 +366,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -364,7 +366,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
LibItemToRepeat = NULL; LibItemToRepeat = NULL;
if( LoadOneLibraryPart() ) if( LoadOneLibraryPart() )
{ {
g_EditPinByPinIsOn = FALSE; g_EditPinByPinIsOn = false;
GetScreen()->ClearUndoRedoList(); GetScreen()->ClearUndoRedoList();
SetToolbars(); SetToolbars();
} }
...@@ -379,6 +381,10 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -379,6 +381,10 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
InstallLibeditFrame( pos ); InstallLibeditFrame( pos );
break; break;
case ID_LIBEDIT_GET_FRAME_EDIT_FIELDS:
InstallFieldsEditorDialog( );
break;
case ID_LIBEDIT_DELETE_PART: case ID_LIBEDIT_DELETE_PART:
LibItemToRepeat = NULL; LibItemToRepeat = NULL;
DeleteOnePart(); DeleteOnePart();
...@@ -392,30 +398,30 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -392,30 +398,30 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
break; break;
case ID_LIBEDIT_EXPORT_PART: case ID_LIBEDIT_EXPORT_PART:
ExportOnePart( FALSE ); ExportOnePart( false );
break; break;
case ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART: case ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART:
ExportOnePart( TRUE ); ExportOnePart( true );
break; break;
case ID_LIBEDIT_CHECK_PART: case ID_LIBEDIT_CHECK_PART:
if( CurrentLibEntry ) if( CurrentLibEntry )
if( TestPins( CurrentLibEntry ) == FALSE ) if( TestPins( CurrentLibEntry ) == false )
DisplayInfo( this, _( " Pins Test OK!" ) ); DisplayInfo( this, _( " Pins Test OK!" ) );
break; break;
case ID_DE_MORGAN_NORMAL_BUTT: case ID_DE_MORGAN_NORMAL_BUTT:
m_HToolBar->ToggleTool( ID_DE_MORGAN_NORMAL_BUTT, TRUE ); m_HToolBar->ToggleTool( ID_DE_MORGAN_NORMAL_BUTT, true );
m_HToolBar->ToggleTool( ID_DE_MORGAN_CONVERT_BUTT, FALSE ); m_HToolBar->ToggleTool( ID_DE_MORGAN_CONVERT_BUTT, false );
LibItemToRepeat = NULL; LibItemToRepeat = NULL;
CurrentConvert = 1; CurrentConvert = 1;
DrawPanel->Refresh(); DrawPanel->Refresh();
break; break;
case ID_DE_MORGAN_CONVERT_BUTT: case ID_DE_MORGAN_CONVERT_BUTT:
m_HToolBar->ToggleTool( ID_DE_MORGAN_NORMAL_BUTT, FALSE ); m_HToolBar->ToggleTool( ID_DE_MORGAN_NORMAL_BUTT, false );
m_HToolBar->ToggleTool( ID_DE_MORGAN_CONVERT_BUTT, TRUE ); m_HToolBar->ToggleTool( ID_DE_MORGAN_CONVERT_BUTT, true );
LibItemToRepeat = NULL; LibItemToRepeat = NULL;
CurrentConvert = 2; CurrentConvert = 2;
DrawPanel->Refresh(); DrawPanel->Refresh();
...@@ -440,7 +446,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -440,7 +446,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
break; break;
case ID_LIBEDIT_EDIT_PIN_BY_PIN: case ID_LIBEDIT_EDIT_PIN_BY_PIN:
g_EditPinByPinIsOn = g_EditPinByPinIsOn ? FALSE : TRUE; g_EditPinByPinIsOn = g_EditPinByPinIsOn ? false : true;
m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn ); m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
break; break;
...@@ -602,7 +608,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -602,7 +608,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
if( DrawPanel->ManageCurseur && DrawPanel->ForceCloseManageCurseur ) if( DrawPanel->ManageCurseur && DrawPanel->ForceCloseManageCurseur )
DrawPanel->ForceCloseManageCurseur( DrawPanel, &dc ); DrawPanel->ForceCloseManageCurseur( DrawPanel, &dc );
else else
DeleteOneLibraryDrawStruct( DrawPanel, &dc, CurrentLibEntry, CurrentDrawItem, TRUE ); DeleteOneLibraryDrawStruct( DrawPanel, &dc, CurrentLibEntry, CurrentDrawItem, true );
} }
CurrentDrawItem = NULL; CurrentDrawItem = NULL;
...@@ -670,53 +676,53 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -670,53 +676,53 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
break; break;
case ID_POPUP_ZOOM_BLOCK: case ID_POPUP_ZOOM_BLOCK:
DrawPanel->m_AutoPAN_Request = FALSE; DrawPanel->m_AutoPAN_Request = false;
GetScreen()->BlockLocate.m_Command = BLOCK_ZOOM; GetScreen()->BlockLocate.m_Command = BLOCK_ZOOM;
HandleBlockEnd( &dc ); HandleBlockEnd( &dc );
break; break;
case ID_POPUP_DELETE_BLOCK: case ID_POPUP_DELETE_BLOCK:
DrawPanel->m_AutoPAN_Request = FALSE; DrawPanel->m_AutoPAN_Request = false;
GetScreen()->BlockLocate.m_Command = BLOCK_DELETE; GetScreen()->BlockLocate.m_Command = BLOCK_DELETE;
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
HandleBlockEnd( &dc ); HandleBlockEnd( &dc );
break; break;
case ID_POPUP_COPY_BLOCK: case ID_POPUP_COPY_BLOCK:
DrawPanel->m_AutoPAN_Request = FALSE; DrawPanel->m_AutoPAN_Request = false;
GetScreen()->BlockLocate.m_Command = BLOCK_COPY; GetScreen()->BlockLocate.m_Command = BLOCK_COPY;
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
HandleBlockPlace( &dc ); HandleBlockPlace( &dc );
break; break;
case ID_POPUP_SELECT_ITEMS_BLOCK: case ID_POPUP_SELECT_ITEMS_BLOCK:
DrawPanel->m_AutoPAN_Request = FALSE; DrawPanel->m_AutoPAN_Request = false;
GetScreen()->BlockLocate.m_Command = BLOCK_SELECT_ITEMS_ONLY; GetScreen()->BlockLocate.m_Command = BLOCK_SELECT_ITEMS_ONLY;
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
HandleBlockEnd( &dc ); HandleBlockEnd( &dc );
break; break;
case ID_POPUP_INVERT_BLOCK: case ID_POPUP_INVERT_BLOCK:
DrawPanel->m_AutoPAN_Request = FALSE; DrawPanel->m_AutoPAN_Request = false;
GetScreen()->BlockLocate.m_Command = BLOCK_INVERT; GetScreen()->BlockLocate.m_Command = BLOCK_INVERT;
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
HandleBlockPlace( &dc ); HandleBlockPlace( &dc );
break; break;
case ID_POPUP_PLACE_BLOCK: case ID_POPUP_PLACE_BLOCK:
DrawPanel->m_AutoPAN_Request = FALSE; DrawPanel->m_AutoPAN_Request = false;
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
HandleBlockPlace( &dc ); HandleBlockPlace( &dc );
break; break;
case ID_LIBEDIT_UNDO: case ID_LIBEDIT_UNDO:
if( GetComponentFromUndoList() ) if( GetComponentFromUndoList() )
DrawPanel->Refresh( TRUE ); DrawPanel->Refresh( true );
break; break;
case ID_LIBEDIT_REDO: case ID_LIBEDIT_REDO:
if( GetComponentFromRedoList() ) if( GetComponentFromRedoList() )
DrawPanel->Refresh( TRUE ); DrawPanel->Refresh( true );
break; break;
default: default:
...@@ -724,7 +730,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -724,7 +730,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
break; break;
} }
DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->m_IgnoreMouseEvents = false;
if( m_ID_current_state == 0 ) if( m_ID_current_state == 0 )
LibItemToRepeat = NULL; LibItemToRepeat = NULL;
......
...@@ -29,6 +29,8 @@ OBJECTS = eeschema.o\ ...@@ -29,6 +29,8 @@ OBJECTS = eeschema.o\
component_class.o\ component_class.o\
class_library.o\ class_library.o\
dialog_options.o\ dialog_options.o\
dialog_edit_libentry_fields_in_lib.o\
dialog_edit_libentry_fields_in_lib_base.o\
tool_lib.o\ tool_lib.o\
tool_sch.o\ tool_sch.o\
tool_viewlib.o\ tool_viewlib.o\
......
...@@ -156,6 +156,12 @@ void WinEDA_LibeditFrame::ReCreateHToolbar() ...@@ -156,6 +156,12 @@ void WinEDA_LibeditFrame::ReCreateHToolbar()
-1, -1, (wxObject*) NULL, -1, -1, (wxObject*) NULL,
_( "Edit component properties" ) ); _( "Edit component properties" ) );
m_HToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, BITMAP( add_text_xpm ),
wxNullBitmap,
FALSE,
-1, -1, (wxObject*) NULL,
_( "Add, remove, edit fields properties" ) );
m_HToolBar->AddSeparator(); m_HToolBar->AddSeparator();
m_HToolBar->AddTool( ID_LIBEDIT_CHECK_PART, BITMAP( erc_xpm ), m_HToolBar->AddTool( ID_LIBEDIT_CHECK_PART, BITMAP( erc_xpm ),
wxNullBitmap, wxNullBitmap,
......
...@@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion ...@@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion
# include "config.h" # include "config.h"
(wxT(KICAD_SVN_VERSION)) (wxT(KICAD_SVN_VERSION))
# else # else
(wxT("(20081221-unstable)")) /* main program version */ (wxT("(20081229-unstable)")) /* main program version */
# endif # endif
#endif #endif
; ;
...@@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion ...@@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion
# include "config.h" # include "config.h"
(wxT(KICAD_ABOUT_VERSION)) (wxT(KICAD_ABOUT_VERSION))
# else # else
(wxT("(20081221-unstable)")) /* svn date & rev (normally overridden) */ (wxT("(20081229-unstable)")) /* svn date & rev (normally overridden) */
# endif # endif
#endif #endif
; ;
......
...@@ -429,6 +429,7 @@ enum main_id { ...@@ -429,6 +429,7 @@ enum main_id {
ID_LIBEDIT_SAVE_CURRENT_PART, ID_LIBEDIT_SAVE_CURRENT_PART,
ID_LIBEDIT_NEW_PART, ID_LIBEDIT_NEW_PART,
ID_LIBEDIT_GET_FRAME_EDIT_PART, ID_LIBEDIT_GET_FRAME_EDIT_PART,
ID_LIBEDIT_GET_FRAME_EDIT_FIELDS,
ID_LIBEDIT_DELETE_PART, ID_LIBEDIT_DELETE_PART,
ID_LIBEDIT_IMPORT_PART, ID_LIBEDIT_IMPORT_PART,
ID_LIBEDIT_EXPORT_PART, ID_LIBEDIT_EXPORT_PART,
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#define ABS( y ) ( (y) >= 0 ? (y) : ( -(y) ) ) #define ABS( y ) ( (y) >= 0 ? (y) : ( -(y) ) )
#endif #endif
#define NEGATE(x) (x = -x)
/// # of elements in an arrray /// # of elements in an arrray
#define DIM(x) (sizeof(x)/sizeof((x)[0])) #define DIM(x) (sizeof(x)/sizeof((x)[0]))
......
...@@ -408,6 +408,7 @@ private: ...@@ -408,6 +408,7 @@ private:
// General editing // General editing
public: public:
void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, int flag_type_command = 0 ); void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, int flag_type_command = 0 );
void InstallFieldsEditorDialog( void );
private: private:
bool GetComponentFromUndoList(); bool GetComponentFromUndoList();
......
No preview for this file type
...@@ -2,8 +2,8 @@ msgid "" ...@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-12-23 14:07+0100\n" "POT-Creation-Date: 2008-12-29 09:07+0100\n"
"PO-Revision-Date: 2008-12-23 14:11+0100\n" "PO-Revision-Date: 2008-12-29 16:04+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
...@@ -4989,6 +4989,8 @@ msgid "" ...@@ -4989,6 +4989,8 @@ msgid ""
"Activates the display of relative coordinates from relative origin (set by the space key)\n" "Activates the display of relative coordinates from relative origin (set by the space key)\n"
"to the cursor, in polar coordinates (angle and distance)" "to the cursor, in polar coordinates (angle and distance)"
msgstr "" msgstr ""
"Active l'affichage des coordonnées relatives à l'origine relative(positionnée par la touche espace)\n"
"au curseur, en coordonnées polaires (angle et distance)"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:32 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:32
msgid "Units" msgid "Units"
...@@ -5000,7 +5002,7 @@ msgstr "Sélection des unités pour afficher les dimensions et positions des ite ...@@ -5000,7 +5002,7 @@ msgstr "Sélection des unités pour afficher les dimensions et positions des ite
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:38 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:38
msgid "Smass cross" msgid "Smass cross"
msgstr "Petite crois" msgstr "Petite croix"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:38 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:38
msgid "Full screen cursor" msgid "Full screen cursor"
...@@ -5012,7 +5014,7 @@ msgstr "Curseur" ...@@ -5012,7 +5014,7 @@ msgstr "Curseur"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:42 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:42
msgid "Main cursor shape selection (small cross or large cursor)" msgid "Main cursor shape selection (small cross or large cursor)"
msgstr "" msgstr "Sélection de l'aspect du curseur principal (petite croix ou grand curseur)"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51
msgid "1" msgid "1"
...@@ -5060,7 +5062,7 @@ msgstr "Liens max:" ...@@ -5060,7 +5062,7 @@ msgstr "Liens max:"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:64 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:64
msgid "Adjust the number of ratsnets shown from cursor to closest pads" msgid "Adjust the number of ratsnets shown from cursor to closest pads"
msgstr "" msgstr "Adjust the number of ratsnets shown from cursor to closest pads"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:68 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:68
msgid "Auto Save (minuts):" msgid "Auto Save (minuts):"
...@@ -5068,7 +5070,7 @@ msgstr "Sauveg. Auto (min)" ...@@ -5068,7 +5070,7 @@ msgstr "Sauveg. Auto (min)"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:73 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:73
msgid "Delay after the first change to create a backup file of the board on disk." msgid "Delay after the first change to create a backup file of the board on disk."
msgstr "" msgstr "Délai après le premier changement pour créer un fichier de sauvegarde du circuit imprimé sur disque"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:82 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:82
msgid "Drc ON" msgid "Drc ON"
...@@ -5079,6 +5081,8 @@ msgid "" ...@@ -5079,6 +5081,8 @@ msgid ""
"Enable/disable the DRC control.\n" "Enable/disable the DRC control.\n"
"When DRC is disable, all connections are allowed." "When DRC is disable, all connections are allowed."
msgstr "" msgstr ""
"Active/désactive le contrôle DRC (Design Rule Check).\n"
"Lorsque de DRC est désactivé, toutes les connexions sont autorisées."
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:89 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:89
msgid "Show Ratsnest" msgid "Show Ratsnest"
...@@ -5097,6 +5101,8 @@ msgid "" ...@@ -5097,6 +5101,8 @@ msgid ""
"Shows (or not) the local ratsnest relative to a footprint, when moving it.\n" "Shows (or not) the local ratsnest relative to a footprint, when moving it.\n"
"This ratsnest is useful to place a footprint." "This ratsnest is useful to place a footprint."
msgstr "" msgstr ""
"Montre (ou non) le chevelu local relatif a un module, lorsque on le déplace.\n"
"Ce chevelu est utile pour placer un module."
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:101 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:101
msgid "Tracks Auto Del" msgid "Tracks Auto Del"
...@@ -5104,7 +5110,7 @@ msgstr "Auto Supp. Pistes" ...@@ -5104,7 +5110,7 @@ msgstr "Auto Supp. Pistes"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:103 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:103
msgid "Enable/disable the automatic track deletion when recreating a track." msgid "Enable/disable the automatic track deletion when recreating a track."
msgstr "" msgstr "Active/désactive l'effacement de piste automatique lorsque l'on recrée une piste."
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:107 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:107
msgid "Track only 45 degrees" msgid "Track only 45 degrees"
...@@ -5128,7 +5134,7 @@ msgstr "Auto PAN" ...@@ -5128,7 +5134,7 @@ msgstr "Auto PAN"
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:121 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:121
msgid "Allows auto pan when creating a track, or moving an item." msgid "Allows auto pan when creating a track, or moving an item."
msgstr "" msgstr "Autorise l'autopan en création de piste, ou lorsque on déplace un élément."
#: pcbnew/dialog_general_options_BoardEditor_base.cpp:125 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:125
msgid "Double Segm Track" msgid "Double Segm Track"
...@@ -5406,12 +5412,12 @@ msgid "PinType" ...@@ -5406,12 +5412,12 @@ msgid "PinType"
msgstr "Type Pin" msgstr "Type Pin"
#: eeschema/affiche.cpp:89 #: eeschema/affiche.cpp:89
#: eeschema/affiche.cpp:177 #: eeschema/affiche.cpp:184
msgid "no" msgid "no"
msgstr "non" msgstr "non"
#: eeschema/affiche.cpp:91 #: eeschema/affiche.cpp:91
#: eeschema/affiche.cpp:179 #: eeschema/affiche.cpp:186
msgid "yes" msgid "yes"
msgstr "oui" msgstr "oui"
...@@ -5439,20 +5445,20 @@ msgstr "Gauche" ...@@ -5439,20 +5445,20 @@ msgstr "Gauche"
msgid "Right" msgid "Right"
msgstr "Droite" msgstr "Droite"
#: eeschema/affiche.cpp:169 #: eeschema/affiche.cpp:176
#: eeschema/affiche.cpp:175 #: eeschema/affiche.cpp:182
msgid "All" msgid "All"
msgstr "Tout" msgstr "Tout"
#: eeschema/affiche.cpp:172 #: eeschema/affiche.cpp:179
msgid "Unit" msgid "Unit"
msgstr "Unité" msgstr "Unité"
#: eeschema/affiche.cpp:182 #: eeschema/affiche.cpp:189
msgid "Convert" msgid "Convert"
msgstr "Convert" msgstr "Convert"
#: eeschema/affiche.cpp:187 #: eeschema/affiche.cpp:194
msgid "default" msgid "default"
msgstr "Défaut" msgstr "Défaut"
...@@ -6464,26 +6470,6 @@ msgstr "Pin de Feuille de Hiérarchie" ...@@ -6464,26 +6470,6 @@ msgstr "Pin de Feuille de Hiérarchie"
msgid "No New Hierarchal Label found" msgid "No New Hierarchal Label found"
msgstr "Pas de nouveau Label Hiérarchique trouvé" msgstr "Pas de nouveau Label Hiérarchique trouvé"
#: eeschema/symbtext.cpp:133
msgid " Text : "
msgstr " Texte : "
#: eeschema/symbtext.cpp:143
msgid "Component name:"
msgstr "Nom du Composant:"
#: eeschema/symbtext.cpp:152
msgid "Size:"
msgstr "Taille:"
#: eeschema/symbtext.cpp:158
msgid " Text Options : "
msgstr "Options du Texte: "
#: eeschema/symbtext.cpp:170
msgid "Vertical"
msgstr "Vertical"
#: eeschema/hotkeys.cpp:249 #: eeschema/hotkeys.cpp:249
msgid "Add Component" msgid "Add Component"
msgstr "Ajout Composant" msgstr "Ajout Composant"
...@@ -7017,7 +7003,7 @@ msgstr "Créer une nouvelle librairie et y sauver le composant" ...@@ -7017,7 +7003,7 @@ msgstr "Créer une nouvelle librairie et y sauver le composant"
#: eeschema/tool_lib.cpp:157 #: eeschema/tool_lib.cpp:157
msgid "Edit component properties" msgid "Edit component properties"
msgstr "Editer ropriétés du composant" msgstr "Editer propriétés du composant"
#: eeschema/tool_lib.cpp:164 #: eeschema/tool_lib.cpp:164
msgid "Test duplicate pins" msgid "Test duplicate pins"
...@@ -7766,6 +7752,10 @@ msgstr "Champs" ...@@ -7766,6 +7752,10 @@ msgstr "Champs"
msgid "Show Text" msgid "Show Text"
msgstr "Texte visible" msgstr "Texte visible"
#: eeschema/edit_component_in_lib.cpp:504
msgid "Vertical"
msgstr "Vertical"
#: eeschema/edit_component_in_lib.cpp:510 #: eeschema/edit_component_in_lib.cpp:510
msgid "Field Name:" msgid "Field Name:"
msgstr "Nom Champ" msgstr "Nom Champ"
...@@ -8039,58 +8029,62 @@ msgstr "Déplacer le champ optionnel sélectionné de une position vers le haut" ...@@ -8039,58 +8029,62 @@ msgstr "Déplacer le champ optionnel sélectionné de une position vers le haut"
msgid "Visibility" msgid "Visibility"
msgstr "Visibilité" msgstr "Visibilité"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:117 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:120
msgid "Show" msgid "Show"
msgstr "Visible" msgstr "Visible"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:119 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:122
msgid "Check if you want this field visible" msgid "Check if you want this field visible"
msgstr "Activer si vous voulez avoir ce champ visible" msgstr "Activer si vous voulez avoir ce champ visible"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:125 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:128
msgid "Check if you want this field's text rotated 90 degrees" msgid "Check if you want this field's text rotated 90 degrees"
msgstr "Activer si vous voulez avoir le texte de ce champ turné à 90°" msgstr "Activer si vous voulez avoir le texte de ce champ tourné à 90°"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:136
msgid "Style:"
msgstr "Style:"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:145
msgid "Field Name" msgid "Field Name"
msgstr "Nom Champ" msgstr "Nom Champ"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:139 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:150
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:153 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:164
msgid "The text (or value) of the currently selected field" msgid "The text (or value) of the currently selected field"
msgstr "The texte (ou la valeur) du champ actuellement sélectionné" msgstr "The texte (ou la valeur) du champ actuellement sélectionné"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:148 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:159
msgid "Field Value" msgid "Field Value"
msgstr "Texte Champ" msgstr "Texte Champ"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:162 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:173
msgid "Size(\")" msgid "Size(\")"
msgstr "Taille(\")" msgstr "Taille(\")"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:167 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:178
msgid "The vertical height of the currently selected field's text in the schematic" msgid "The vertical height of the currently selected field's text in the schematic"
msgstr "La taille du texte du champ actuellement sélectionné" msgstr "La taille du texte du champ actuellement sélectionné"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:179 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:190
msgid "PosX(\")" msgid "PosX(\")"
msgstr "PosX" msgstr "PosX"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:191 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:202
msgid "PosY(\")" msgid "PosY(\")"
msgstr "PosY" msgstr "PosY"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:196 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:207
msgid "The Y coordinate of the text relative to the component" msgid "The Y coordinate of the text relative to the component"
msgstr "La position Y du texte relativement au composant" msgstr "La position Y du texte relativement au composant"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:207 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:218
msgid "Reset to Library Defaults" msgid "Reset to Library Defaults"
msgstr "Remettre aux Valeurs par Défaut en Librairie" msgstr "Remettre aux Valeurs par Défaut en Librairie"
#: eeschema/dialog_edit_component_in_lib.cpp:139 #: eeschema/dialog_edit_component_in_lib.cpp:139
msgid "General :" msgid "General :"
msgstr " Général :" msgstr "Général :"
#: eeschema/dialog_edit_component_in_lib.cpp:147 #: eeschema/dialog_edit_component_in_lib.cpp:147
msgid "Number of units:" msgid "Number of units:"
...@@ -8375,6 +8369,18 @@ msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enreg ...@@ -8375,6 +8369,18 @@ msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enreg
msgid "Done Loading " msgid "Done Loading "
msgstr "Chargement terminé" msgstr "Chargement terminé"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:32
msgid " Text Options : "
msgstr "Options du Texte: "
#: eeschema/dialog_bodygraphictext_properties_base.cpp:53
msgid "Size:"
msgstr "Taille:"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:62
msgid "Text Shape:"
msgstr "Aspect Texte:"
#: eeschema/eelibs_read_libraryfiles.cpp:117 #: eeschema/eelibs_read_libraryfiles.cpp:117
msgid "Start loading schematic libs" msgid "Start loading schematic libs"
msgstr "Demarre chargement des librairies schématiques" msgstr "Demarre chargement des librairies schématiques"
...@@ -9034,6 +9040,7 @@ msgid "Create New Directory" ...@@ -9034,6 +9040,7 @@ msgid "Create New Directory"
msgstr "Créer un nouveau Répertoire" msgstr "Créer un nouveau Répertoire"
#: kicad/treeprj_frame.cpp:543 #: kicad/treeprj_frame.cpp:543
#: kicad/kicad.cpp:381
msgid "noname" msgid "noname"
msgstr "noname" msgstr "noname"
...@@ -10721,11 +10728,7 @@ msgstr "EESchema Tracé HPGL" ...@@ -10721,11 +10728,7 @@ msgstr "EESchema Tracé HPGL"
msgid "Sheet properties" msgid "Sheet properties"
msgstr "Propriétés de la feuille" msgstr "Propriétés de la feuille"
#: eeschema/symbtext.h:47 #: eeschema/dialog_edit_component_in_schematic_fbp.h:82
msgid "Graphic text properties"
msgstr "Propriétés du texte"
#: eeschema/dialog_edit_component_in_schematic_fbp.h:81
msgid "Component Properties" msgid "Component Properties"
msgstr "Propriétés du Composant" msgstr "Propriétés du Composant"
...@@ -10737,6 +10740,10 @@ msgstr "Propriétés des Pins" ...@@ -10737,6 +10740,10 @@ msgstr "Propriétés des Pins"
msgid "EESchema Plot PS" msgid "EESchema Plot PS"
msgstr "EESchema Tracé PS" msgstr "EESchema Tracé PS"
#: eeschema/dialog_bodygraphictext_properties_base.h:55
msgid "Graphic text properties:"
msgstr "Propriétés du texte graphique:"
#: eeschema/component_wizard/dialog_component_setup.h:55 #: eeschema/component_wizard/dialog_component_setup.h:55
msgid "Component Builder" msgid "Component Builder"
msgstr "Générateur de Composant" msgstr "Générateur de Composant"
...@@ -10905,6 +10912,10 @@ msgstr "Imprimer" ...@@ -10905,6 +10912,10 @@ msgstr "Imprimer"
msgid "Create SVG file" msgid "Create SVG file"
msgstr "Créer Fichier SVG" msgstr "Créer Fichier SVG"
#~ msgid " Text : "
#~ msgstr " Texte : "
#~ msgid "Component name:"
#~ msgstr "Nom du Composant:"
#~ msgid "show" #~ msgid "show"
#~ msgstr "Visible" #~ msgstr "Visible"
#~ msgid "no show" #~ msgid "no show"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment