Commit c759be6f authored by CHARRAS's avatar CHARRAS

eeschema: problems found. some (not all) solved (see changelog)

parent 36554e68
......@@ -5,6 +5,21 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2008-Feb-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+eeschema
added : full text conversion between text, label, global label and hierarchical label
some problems fixed:
- annotation incorrectly cleared.
- reference not copied in component copy.
- incorrect redo when changing the chip name in component edition
bugs not fixed
- undo/redo problems when changing a text type between text, label, global label and hierarchical label
- incorrect annotation in complex hierarchy with multi parts per package (duplicates created).
2008-Feb-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+eeschema
......
......@@ -17,7 +17,7 @@
#include "macros.h"
#include <wx/arrimpl.cpp>
WX_DEFINE_OBJARRAY(ArrayOfSheetLists);
WX_DEFINE_OBJARRAY( ArrayOfSheetLists );
/***************************/
/* class DrawPartStruct */
/* class EDA_SchComponentStruct */
......@@ -28,8 +28,8 @@ DrawPartStruct::DrawPartStruct( KICAD_T struct_type, const wxPoint& pos ) :
EDA_BaseStruct( struct_type )
/***********************************************************************************/
{
m_Layer = 0;
m_Pos = pos;
m_Layer = 0;
m_Pos = pos;
m_TimeStamp = 0;
}
......@@ -52,128 +52,145 @@ const wxString& ReturnDefaultFieldName( int aFieldNdx )
{
// avoid unnecessarily copying wxStrings at runtime.
static const wxString FieldDefaultNameList[] = {
_( "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" */
_( "Sheet" ), /* for components which are a schematic file, schematic file name, i.e. "cnt16.sch" */
wxString(_( "Field" ))+wxT("1"),
wxString(_( "Field" ))+wxT("2"),
wxString(_( "Field" ))+wxT("3"),
wxString(_( "Field" ))+wxT("4"),
wxString(_( "Field" ))+wxT("5"),
wxString(_( "Field" ))+wxT("6"),
wxString(_( "Field" ))+wxT("7"),
wxString(_( "Field" ))+wxT("8"),
_( "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" */
_( "Sheet" ), /* for components which are a schematic file, schematic file name, i.e. "cnt16.sch" */
wxString( _( "Field" ) ) + wxT( "1" ),
wxString( _( "Field" ) ) + wxT( "2" ),
wxString( _( "Field" ) ) + wxT( "3" ),
wxString( _( "Field" ) ) + wxT( "4" ),
wxString( _( "Field" ) ) + wxT( "5" ),
wxString( _( "Field" ) ) + wxT( "6" ),
wxString( _( "Field" ) ) + wxT( "7" ),
wxString( _( "Field" ) ) + wxT( "8" ),
wxT( "badFieldNdx!" ) // error, and "sentinel" value
};
if( (unsigned) aFieldNdx > FIELD8 ) // catches < 0 also
aFieldNdx = FIELD8+1; // return the sentinel text
aFieldNdx = FIELD8 + 1; // return the sentinel text
return FieldDefaultNameList[aFieldNdx];
}
/****************************************************************/
const wxString& EDA_SchComponentStruct::ReturnFieldName( int aFieldNdx ) const
const wxString& EDA_SchComponentStruct::ReturnFieldName( int aFieldNdx ) const
/****************************************************************/
/* Return the Field name from its index (REFERENCE, VALUE ..)
*/
{
// avoid unnecessarily copying wxStrings.
if( aFieldNdx < FIELD1 || m_Field[aFieldNdx].m_Name.IsEmpty() )
return ReturnDefaultFieldName( aFieldNdx );
return m_Field[aFieldNdx].m_Name;
}
/************************************/
wxString EDA_SchComponentStruct::GetPath(DrawSheetList* sheet)
/************************************/
/****************************************************************/
wxString EDA_SchComponentStruct::GetPath( DrawSheetList* sheet )
/****************************************************************/
{
wxString str;
str.Printf(_("%8.8lX"), m_TimeStamp );
return sheet->Path() + str;
wxString str;
str.Printf( wxT( "%8.8lX" ), m_TimeStamp );
return sheet->Path() + str;
}
/************************************/
/********************************************************************/
const wxString EDA_SchComponentStruct::GetRef( DrawSheetList* sheet )
/************************************/
/********************************************************************/
{
wxString path = GetPath( sheet );
unsigned int i;
for(i=0; i<m_Paths.GetCount(); i++){
if( m_Paths[i].Cmp(path) == 0 ){
/*printf("GetRef path: %s ref: %s\n",
CONV_TO_UTF8(m_Paths[i]),
CONV_TO_UTF8(m_References[i])); */
return m_References[i];
}
}
//if it was not found in m_Paths array, then see if it is in
// m_Field[REFERENCE] -- if so, use this as a default for this path.
// this will happen if we load a version 1 schematic file.
// it will also mean that multiple instances of the same sheet by default
// all have the same component references, but perhaps this is best.
if( !m_Field[REFERENCE].m_Text.IsEmpty() ){
SetRef( sheet, m_Field[REFERENCE].m_Text );
return m_Field[REFERENCE].m_Text;
}
return m_PrefixString;
wxString path = GetPath( sheet );
unsigned int i;
for( i = 0; i<m_Paths.GetCount(); i++ )
{
if( m_Paths[i].Cmp( path ) == 0 )
{
/*printf("GetRef path: %s ref: %s\n",
* CONV_TO_UTF8(m_Paths[i]),
* CONV_TO_UTF8(m_References[i])); */
return m_References[i];
}
}
//if it was not found in m_Paths array, then see if it is in
// m_Field[REFERENCE] -- if so, use this as a default for this path.
// this will happen if we load a version 1 schematic file.
// it will also mean that multiple instances of the same sheet by default
// all have the same component references, but perhaps this is best.
if( !m_Field[REFERENCE].m_Text.IsEmpty() )
{
SetRef( sheet, m_Field[REFERENCE].m_Text );
return m_Field[REFERENCE].m_Text;
}
return m_PrefixString;
}
/************************************/
/***********************************************************************/
void EDA_SchComponentStruct::SetRef( DrawSheetList* sheet, wxString ref )
/************************************/
/***********************************************************************/
{
//check to see if it is already there before inserting it
wxString path = GetPath( sheet );
printf("SetRef path: %s ref: %s\n",
CONV_TO_UTF8(path),
CONV_TO_UTF8(ref));
unsigned int i;
bool notInArray = true;
for(i=0; i<m_Paths.GetCount(); i++){
if(m_Paths[i].Cmp(path) == 0){
//just update the reference text, not the timestamp.
m_References.RemoveAt(i);
m_References.Insert(ref, i);
notInArray = false;
}
}
if(notInArray){
m_References.Add(ref);
m_Paths.Add(path);
}
if(m_Field[REFERENCE].m_Text.IsEmpty() ||
( abs(m_Field[REFERENCE].m_Pos.x - m_Pos.x) +
abs(m_Field[REFERENCE].m_Pos.y - m_Pos.y) > 1000)) {
//move it to a reasonable position..
m_Field[REFERENCE].m_Pos = m_Pos;
m_Field[REFERENCE].m_Pos.x += 50; //a slight offset..
m_Field[REFERENCE].m_Pos.y += 50;
}
m_Field[REFERENCE].m_Text = ref; //for drawing.
//check to see if it is already there before inserting it
wxString path = GetPath( sheet );
printf( "SetRef path: %s ref: %s\n",
CONV_TO_UTF8( path ),
CONV_TO_UTF8( ref ) );
unsigned int i;
bool notInArray = true;
for( i = 0; i<m_Paths.GetCount(); i++ )
{
if( m_Paths[i].Cmp( path ) == 0 )
{
//just update the reference text, not the timestamp.
m_References.RemoveAt( i );
m_References.Insert( ref, i );
notInArray = false;
}
}
if( notInArray )
{
m_References.Add( ref );
m_Paths.Add( path );
}
if( m_Field[REFERENCE].m_Text.IsEmpty()
|| ( abs( m_Field[REFERENCE].m_Pos.x - m_Pos.x ) +
abs( m_Field[REFERENCE].m_Pos.y - m_Pos.y ) > 1000) )
{
//move it to a reasonable position..
m_Field[REFERENCE].m_Pos = m_Pos;
m_Field[REFERENCE].m_Pos.x += 50; //a slight offset..
m_Field[REFERENCE].m_Pos.y += 50;
}
m_Field[REFERENCE].m_Text = ref; //for drawing.
}
/************************************/
/**************************************/
void EDA_SchComponentStruct::ClearRefs()
/************************************/
/**************************************/
{
m_Paths.Empty();
m_References.Empty();
m_Paths.Empty();
m_References.Empty();
}
const wxString& EDA_SchComponentStruct::GetFieldValue( int aFieldNdx ) const
{
// avoid unnecessarily copying wxStrings.
static const wxString myEmpty = wxEmptyString;
if( (unsigned) aFieldNdx > FIELD8 || m_Field[aFieldNdx].m_Text.IsEmpty() )
// avoid unnecessarily copying wxStrings.
static const wxString myEmpty = wxEmptyString;
if( (unsigned) aFieldNdx > FIELD8 || m_Field[aFieldNdx].m_Text.IsEmpty() )
return myEmpty;
return m_Field[aFieldNdx].m_Text;
}
......@@ -186,10 +203,11 @@ EDA_SchComponentStruct::EDA_SchComponentStruct( const wxPoint& pos ) :
int ii;
m_Multi = 0; /* In multi unit chip - which unit to draw. */
//m_FlagControlMulti = 0;
m_UsedOnSheets.Clear();
m_UsedOnSheets.Clear();
m_Convert = 0; /* Gestion des mutiples representations (conversion De Morgan) */
/* The rotation/mirror transformation matrix. pos normal*/
m_Transform[0][0] = 1;
m_Transform[0][1] = 0;
......@@ -209,14 +227,14 @@ EDA_SchComponentStruct::EDA_SchComponentStruct( const wxPoint& pos ) :
m_Field[REFERENCE].m_Layer = LAYER_REFERENCEPART;
m_PinIsDangling = NULL;
m_PrefixString = wxString(_("U"));
m_PrefixString = wxString( _( "U" ) );
}
/**********************************************************************/
/************************************************/
EDA_Rect EDA_SchComponentStruct::GetBoundaryBox()
/**********************************************************************/
/************************************************/
{
EDA_LibComponentStruct* Entry = FindLibPart( m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
EDA_Rect BoundaryBox;
......@@ -230,7 +248,7 @@ EDA_Rect EDA_SchComponentStruct::GetBoundaryBox()
// We must reverse Y values, because matrix orientation
// suppose Y axis normal for the library items coordinates,
// m_Transform reverse Y values, but BoundaryBox ais already reversed!
// m_Transform reverse Y values, but BoundaryBox is already reversed!
y0 = -BoundaryBox.GetY();
ym = -BoundaryBox.GetBottom();
}
......@@ -254,7 +272,7 @@ EDA_Rect EDA_SchComponentStruct::GetBoundaryBox()
EXCHG( x2, x1 );
if( y2 < y1 )
EXCHG( y2, y1 );
BoundaryBox.SetX( x1 ); BoundaryBox.SetY( y1 );
BoundaryBox.SetWidth( x2 - x1 );
BoundaryBox.SetHeight( y2 - y1 );
......@@ -262,6 +280,8 @@ EDA_Rect EDA_SchComponentStruct::GetBoundaryBox()
BoundaryBox.Offset( m_Pos );
return BoundaryBox;
}
/**************************************************************************/
void PartTextStruct::SwapData( PartTextStruct* copyitem )
/**************************************************************************/
......@@ -295,6 +315,7 @@ void EDA_SchComponentStruct::SwapData( EDA_SchComponentStruct* copyitem )
* swap data between this and copyitem
*/
{
EXCHG( m_ChipName, copyitem->m_ChipName );
EXCHG( m_Pos, copyitem->m_Pos );
EXCHG( m_Multi, copyitem->m_Multi );
EXCHG( m_Convert, copyitem->m_Convert );
......@@ -320,13 +341,13 @@ void EDA_SchComponentStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
{
/* restore old values and save new ones */
SwapData( (EDA_SchComponentStruct*) g_ItemToUndoCopy );
/* save in undo list */
( (WinEDA_SchematicFrame*) frame )->SaveCopyInUndoList( this, IS_CHANGED );
/* restore new values */
SwapData( (EDA_SchComponentStruct*) g_ItemToUndoCopy );
SAFE_DELETE( g_ItemToUndoCopy );
}
......@@ -341,14 +362,20 @@ void EDA_SchComponentStruct::ClearAnnotation()
/* Suppress annotation ( i.i IC23 changed to IC? and part reset to 1)
*/
{
wxString defRef = m_PrefixString;
defRef.Append( _("?") );
m_References.Empty();
unsigned int i;
for(i=0; i< m_Paths.GetCount(); i++){
m_References.Add(defRef);
}
wxString defRef = m_PrefixString;
while( defRef.Last() == '?' )
defRef.RemoveLast();
defRef.Append( wxT( "?" ) );
m_References.Empty();
unsigned int i;
for( i = 0; i< m_Paths.GetCount(); i++ )
{
m_References.Add( defRef );
}
m_Field[REFERENCE].m_Text = defRef; //for drawing.
EDA_LibComponentStruct* Entry;
Entry = FindLibPart( m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
......@@ -367,8 +394,10 @@ EDA_SchComponentStruct* EDA_SchComponentStruct::GenCopy()
new_item->m_Multi = m_Multi;
new_item->m_ChipName = m_ChipName;
new_item->m_PrefixString = m_PrefixString;
//new_item->m_FlagControlMulti = m_FlagControlMulti;
new_item->m_UsedOnSheets = m_UsedOnSheets;
new_item->m_UsedOnSheets = m_UsedOnSheets;
new_item->m_Convert = m_Convert;
new_item->m_Transform[0][0] = m_Transform[0][0];
new_item->m_Transform[0][1] = m_Transform[0][1];
......@@ -499,15 +528,15 @@ void EDA_SchComponentStruct::SetRotationMiroir( int type_rotate )
}
if( Transform )
{/* The new matrix transform is the old matrix transform modified by the
* requested transformation, which is the TempMat transform (rot, mirror ..)
* in order to have (in term of matrix transform):
* transform coord = new_m_Transform * coord
* where transform coord is the coord modified by new_m_Transform from the initial
* value coord.
* new_m_Transform is computed (from old_m_Transform and TempMat) to have:
* transform coord = old_m_Transform * coord * TempMat
*/
{ /* The new matrix transform is the old matrix transform modified by the
* requested transformation, which is the TempMat transform (rot, mirror ..)
* in order to have (in term of matrix transform):
* transform coord = new_m_Transform * coord
* where transform coord is the coord modified by new_m_Transform from the initial
* value coord.
* new_m_Transform is computed (from old_m_Transform and TempMat) to have:
* transform coord = old_m_Transform * coord * TempMat
*/
int NewMatrix[2][2];
NewMatrix[0][0] = m_Transform[0][0] * TempMat[0][0] +
......@@ -612,12 +641,12 @@ wxPoint EDA_SchComponentStruct::GetScreenCoord( const wxPoint& coord )
}
#if defined (DEBUG)
#if defined(DEBUG)
/**
* Function Show
* is used to output the object tree, currently for debugging only.
* @param nestLevel An aid to prettier tree indenting, and is the level
* @param nestLevel An aid to prettier tree indenting, and is the level
* of nesting of this object within the overall tree.
* @param os The ostream& to output to.
*/
......@@ -625,35 +654,36 @@ void EDA_SchComponentStruct::Show( int nestLevel, std::ostream& os )
{
// for now, make it look like XML:
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
" ref=\"" << ReturnFieldName(0) << '"' <<
" chipName=\"" << m_ChipName.mb_str() << '"' <<
m_Pos <<
" layer=\"" << m_Layer << '"' <<
"/>\n";
// skip the reference, it's been output already.
for( int i=1; i<NUMBER_OF_FIELDS; ++i )
" ref=\"" << ReturnFieldName( 0 ) << '"' <<
" chipName=\"" << m_ChipName.mb_str() << '"' <<
m_Pos <<
" layer=\"" << m_Layer << '"' <<
"/>\n";
// skip the reference, it's been output already.
for( int i = 1; i<NUMBER_OF_FIELDS; ++i )
{
wxString value = GetFieldValue( i );
if( !value.IsEmpty() )
{
NestedSpace( nestLevel+1, os ) << "<field" <<
" name=\"" << ReturnFieldName(i).mb_str() << '"' <<
" value=\"" << value.mb_str() << "\"/>\n";
NestedSpace( nestLevel + 1, os ) << "<field" <<
" name=\"" << ReturnFieldName( i ).mb_str() << '"' <<
" value=\"" << value.mb_str() << "\"/>\n";
}
}
}
NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
}
#endif
#endif
/***************************************************************************/
PartTextStruct::PartTextStruct( const wxPoint& pos, const wxString& text ) :
EDA_BaseStruct( DRAW_PART_TEXT_STRUCT_TYPE ), EDA_TextStruct( text )
EDA_BaseStruct( DRAW_PART_TEXT_STRUCT_TYPE )
, EDA_TextStruct( text )
/***************************************************************************/
{
m_Pos = pos;
......@@ -708,7 +738,7 @@ EDA_Rect PartTextStruct::GetBoundaryBox()
/* return
* EDA_Rect contains the real (user coordinates) boundary box for a text field,
* according to the component position, rotation, mirror ...
*
*
*/
{
EDA_Rect BoundaryBox;
......
......@@ -117,7 +117,7 @@ void WinEDA_SchematicFrame::EditSchematicText( DrawTextStruct* TextStruct,
wxDC* DC )
/*************************************************************************/
/* Edit the properties of the text (Label, Gloab label, graphic text).. )
/* Edit the properties of the text (Label, Global label, graphic text).. )
* pointed by "TextStruct"
*/
{
......@@ -330,7 +330,7 @@ void WinEDA_SchematicFrame::ConvertTextType( DrawTextStruct* Text,
/*****************************************************************************/
/* Routine to change a text type to an other one (GraphicText, label or Glabel).
* A new test, label or global label is created from the old text.
* A new test, label or hierarchical or global label is created from the old text.
* the old text is deleted
*/
{
......@@ -389,10 +389,10 @@ void WinEDA_SchematicFrame::ConvertTextType( DrawTextStruct* Text,
{
DrawPanel->ForceCloseManageCurseur( DrawPanel, DC );
}
if( (flags & IS_NEW) == 0 ) // Delete old text and save it in undo list
if( (flags & IS_NEW) == 0 ) // Remove old text from current list and save it in undo list
{
Text->m_Flags = 0;
DeleteStruct( DrawPanel, DC, Text );
DeleteStruct( DrawPanel, DC, Text ); // old text is really saved in undo list
GetScreen()->SetCurItem( NULL );
g_ItemToRepeat = NULL;
}
......
......@@ -380,6 +380,8 @@ void AddMenusForGLabel( wxMenu* PopMenu, DrawGlobalLabelStruct* GLabel )
_( "Change to Label" ), glabel2label_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT,
_( "Change to Text" ), glabel2text_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL,
_( "Change to Hierarchical Label" ), label2glabel_xpm );
ADD_MENUITEM_WITH_SUBMENU( PopMenu, menu_change_type,
ID_POPUP_SCH_CHANGE_TYPE_TEXT, _( "Change Type" ), gl_change_xpm );
}
......@@ -402,6 +404,8 @@ void AddMenusForHLabel( wxMenu* PopMenu, DrawHierLabelStruct* HLabel )
_( "Change to Label" ), glabel2label_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT,
_( "Change to Text" ), glabel2text_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_GLABEL,
_( "Change to Global label" ), label2glabel_xpm );
ADD_MENUITEM_WITH_SUBMENU( PopMenu, menu_change_type,
ID_POPUP_SCH_CHANGE_TYPE_TEXT, _( "Change Type" ), gl_change_xpm );
}
......@@ -424,9 +428,11 @@ void AddMenusForLabel( wxMenu* PopMenu, DrawLabelStruct* Label )
// add menu change type text (to label, glabel, text):
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_GLABEL,
_( "Change to Glabel" ), label2glabel_xpm );
_( "Change to Global label" ), label2glabel_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT,
_( "Change to Text" ), label2text_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL,
_( "Change to Hierarchical Label" ), label2glabel_xpm );
ADD_MENUITEM_WITH_SUBMENU( PopMenu, menu_change_type,
ID_POPUP_SCH_CHANGE_TYPE_TEXT, _( "Change Type" ), gl_change_xpm );
}
......@@ -450,6 +456,8 @@ void AddMenusForText( wxMenu* PopMenu, DrawTextStruct* Text )
// add menu change type text (to label, glabel, text):
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_LABEL,
_( "Change to Label" ), label2text_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL,
_( "Change to Hierarchical Label" ), label2glabel_xpm );
ADD_MENUITEM( menu_change_type, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_GLABEL,
_( "Change to Glabel" ), label2glabel_xpm );
ADD_MENUITEM_WITH_SUBMENU( PopMenu, menu_change_type,
......
......@@ -42,6 +42,7 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_SCH_EDIT_TEXT:
case ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_LABEL:
case ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_GLABEL:
case ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL:
case ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT:
case ID_POPUP_SCH_SET_SHAPE_TEXT:
case ID_POPUP_SCH_ROTATE_TEXT:
......@@ -395,6 +396,12 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
&dc, DRAW_GLOBAL_LABEL_STRUCT_TYPE );
break;
case ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL:
DrawPanel->MouseToCursorSchema();
ConvertTextType( (DrawTextStruct*) GetScreen()->GetCurItem(),
&dc, DRAW_HIER_LABEL_STRUCT_TYPE );
break;
case ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT:
DrawPanel->MouseToCursorSchema();
ConvertTextType( (DrawTextStruct*) GetScreen()->GetCurItem(),
......@@ -403,7 +410,7 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_SCH_SET_SHAPE_TEXT:
// Non utilis�
// Not used
break;
case ID_POPUP_SCH_ROTATE_FIELD:
......
......@@ -5,7 +5,7 @@
COMMON_GLOBL wxString g_BuildVersion
#ifdef EDA_BASE
(wxT("(2008-02-13)"))
(wxT("(2008-02-20)"))
#endif
;
......
......@@ -355,7 +355,7 @@ enum main_id {
ID_POPUP_SCH_ADD_JUNCTION,
ID_POPUP_SCH_ADD_LABEL,
ID_POPUP_SCH_ADD_GLABEL,
ID_POPUP_SCH_UNUSED0,
ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL,
ID_POPUP_SCH_UNUSED1,
ID_POPUP_SCH_UNUSED2,
ID_POPUP_SCH_UNUSED3,
......
No preview for this file type
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kicad\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2008-02-20 20:29+0100\n"
"PO-Revision-Date: 2008-02-21 07:51+0100\n"
"Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n"
......@@ -3633,9 +3633,8 @@ msgid "Apply"
msgstr "Appliquer"
#: pcbnew/specctra_import.cpp:74
#, fuzzy
msgid "Merge Specctra Session file:"
msgstr "Fichier Specctra DSN"
msgstr "Fichier Specctra Session Fusionner:"
#: pcbnew/specctra_import.cpp:100
msgid "BOARD may be corrupted, do not save it."
......@@ -3643,17 +3642,17 @@ msgstr "Le PCB peut
#: pcbnew/specctra_import.cpp:102
msgid "Fix problem and try again."
msgstr ""
msgstr "Fixer le problme et recommencer."
#: pcbnew/specctra_import.cpp:116
msgid "Session file imported and merged OK."
msgstr ""
msgstr "Fichier Session import et fusionn correctement."
#: pcbnew/specctra_import.cpp:182
#: pcbnew/specctra_import.cpp:290
#, c-format
msgid "Session file uses invalid layer id \"%s\""
msgstr ""
msgstr "Le Fichier Session utilise une couche invalide n \"%s\""
#: pcbnew/specctra_import.cpp:232
msgid "Session via padstack has no shapes"
......@@ -4434,9 +4433,8 @@ msgid "Last Change"
msgstr "Last Change"
#: pcbnew/class_module.cpp:1076
#, fuzzy
msgid "Netlist path"
msgstr "Netliste: "
msgstr "Chemin Netliste "
#: pcbnew/class_module.cpp:1110
msgid "3D-Shape"
......@@ -4575,14 +4573,14 @@ msgid "%s not found"
msgstr "%s non trouv"
#: pcbnew/cross-probing.cpp:111
#, fuzzy, c-format
#, c-format
msgid "%s pin %s not found"
msgstr " fichier %s non trouv"
msgstr "%s pin %s non trouve"
#: pcbnew/cross-probing.cpp:113
#, fuzzy, c-format
#, c-format
msgid "%s pin %s found"
msgstr " non trouv"
msgstr "%s pin %s trouve"
#: pcbnew/specctra_export.cpp:64
msgid "Specctra DSN file:"
......@@ -4604,7 +4602,7 @@ msgstr "Le composant avec valeur \"%s\" a une r
#: pcbnew/specctra_export.cpp:728
#, c-format
msgid "Multiple components have identical reference IDs of \"%s\"."
msgstr ""
msgstr "Multiple composants ont une reference identique \"%s\"."
#: pcbnew/class_drawsegment.cpp:161
msgid "Shape"
......@@ -5607,9 +5605,9 @@ msgid "Warning HLabel %s not connected to SheetLabel"
msgstr "Attention HLabel %s non connect a SheetLabel"
#: eeschema/erc.cpp:562
#, fuzzy, c-format
#, c-format
msgid "Warning SheetLabel %s not connected to HLabel"
msgstr "Warning SheetLabel %s non connect a GLabel"
msgstr "Warning SheetLabel %s non connect a HLabel"
#: eeschema/erc.cpp:576
#, c-format
......@@ -5645,22 +5643,21 @@ msgid "ERC control"
msgstr "Controle ERC"
#: eeschema/erc.cpp:742
#, fuzzy
msgid ""
"\n"
"***** Sheet Root\n"
msgstr ""
"\n"
"***** feuille %d (%s)\n"
"***** Feuillet Racine\n"
#: eeschema/erc.cpp:745
#, fuzzy, c-format
#, c-format
msgid ""
"\n"
"***** Sheet %s\n"
msgstr ""
"\n"
"***** feuille %d (%s)\n"
"***** Feuille %s\n"
#: eeschema/erc.cpp:762
#, c-format
......@@ -6119,14 +6116,14 @@ msgstr ""
"#Cmp ( ordre = Valeur )"
#: eeschema/dialog_build_BOM.cpp:1315
#, fuzzy, c-format
#, c-format
msgid "> %-28.28s %s (Sheet %s) pos: %3.3f, %3.3f\n"
msgstr "> %-28.28s Global (feuille %.2d) pos: %3.3f, %3.3f\n"
msgstr "> %-28.28s %s (Feuille %s) pos: %3.3f, %3.3f\n"
#: eeschema/dialog_build_BOM.cpp:1335
#, fuzzy, c-format
#, c-format
msgid "> %-28.28s Sheet %-7.7s (Sheet %s) pos: %3.3f, %3.3f\n"
msgstr "> %-28.28s Sheet %-7.7s (feuille %.2d) pos: %3.3f, %3.3f\n"
msgstr "> %-28.28s Sheet %-7.7s (Feuillet %s) pos: %3.3f, %3.3f\n"
#: eeschema/dialog_build_BOM.cpp:1349
msgid "#End labels\n"
......@@ -6834,7 +6831,7 @@ msgstr "Visualisateur des librairies"
#: eeschema/sheet.cpp:162
msgid "Filename (will be created upon save if it does not already exist):"
msgstr ""
msgstr "Nom Fichier (sera cre la sauvegarde si il n'existe pas dj):"
#: eeschema/sheet.cpp:174
msgid "Sheetname:"
......@@ -7099,26 +7096,22 @@ msgid "Place the bus to bus entry"
msgstr "Addition d'entres de bus (type bus vers bus)"
#: eeschema/menubar.cpp:254
#, fuzzy
msgid "No connect flag"
msgstr "Addition de symboles de non connexion"
msgstr "Symbole de Non Connexion"
#: eeschema/menubar.cpp:255
#: eeschema/tool_sch.cpp:189
#, fuzzy
msgid "Place the no connect flag"
msgstr "Addition de symboles de non connexion"
msgstr "Placer le symbole de non connexion"
#: eeschema/menubar.cpp:264
#, fuzzy
msgid "Net name"
msgstr "NetName"
msgstr "Net Name"
#: eeschema/menubar.cpp:265
#: eeschema/tool_sch.cpp:193
#, fuzzy
msgid "Place the net name"
msgstr "Place Feuille"
msgstr "Placer le nom de net"
#: eeschema/menubar.cpp:272
msgid "Global label"
......@@ -7126,7 +7119,7 @@ msgstr "Label Global"
#: eeschema/menubar.cpp:273
msgid "Place the global label. Warning: all global labels with the same name are connected in whole hierarchy"
msgstr ""
msgstr "Placerun label global. Attention: tous les labels globaux avec le mme nom sont connects dans toute la hierarchie"
#: eeschema/menubar.cpp:282
#: eeschema/eelayer.h:85
......@@ -7215,9 +7208,8 @@ msgid "&Edit"
msgstr "&Editer"
#: eeschema/menubar.cpp:407
#, fuzzy
msgid "&View"
msgstr "&ViewLogic"
msgstr "&Voir"
#: eeschema/menubar.cpp:408
msgid "&Place"
......@@ -10562,7 +10554,6 @@ msgid "SheetLabel (Pin Sheet)"
msgstr "Supprimer Connecteur de hirarchie"
#: eeschema/eelayer.h:195
#, fuzzy
msgid "Hierarchical Label"
msgstr "Label Hirarchique"
......
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