From c759be6f52d89c9ac9036613d3e029616a96fd96 Mon Sep 17 00:00:00 2001 From: CHARRAS Date: Thu, 21 Feb 2008 12:21:01 +0000 Subject: [PATCH] eeschema: problems found. some (not all) solved (see changelog) --- change_log.txt | 15 ++ eeschema/component_class.cpp | 302 +++++++++++++++++++---------------- eeschema/edit_label.cpp | 8 +- eeschema/onrightclick.cpp | 10 +- eeschema/schedit.cpp | 9 +- include/build_version.h | 2 +- include/id.h | 2 +- internat/fr/kicad.mo | Bin 142975 -> 144888 bytes internat/fr/kicad.po | 63 ++++---- 9 files changed, 231 insertions(+), 180 deletions(-) diff --git a/change_log.txt b/change_log.txt index 1ef15bd181..48bab6a39a 100644 --- a/change_log.txt +++ b/change_log.txt @@ -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 +================================================================================ ++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 ================================================================================ +eeschema diff --git a/eeschema/component_class.cpp b/eeschema/component_class.cpp index e2b434c145..534ace6ef5 100644 --- a/eeschema/component_class.cpp +++ b/eeschema/component_class.cpp @@ -17,7 +17,7 @@ #include "macros.h" #include -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 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 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"; + " 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\n"; + NestedSpace( nestLevel + 1, os ) << "\n"; } - } - + } + NestedSpace( nestLevel, os ) << "\n"; } + + #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; diff --git a/eeschema/edit_label.cpp b/eeschema/edit_label.cpp index 2138b20ea7..abc0099822 100644 --- a/eeschema/edit_label.cpp +++ b/eeschema/edit_label.cpp @@ -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; } diff --git a/eeschema/onrightclick.cpp b/eeschema/onrightclick.cpp index a14cb6d55d..8aab6201eb 100644 --- a/eeschema/onrightclick.cpp +++ b/eeschema/onrightclick.cpp @@ -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, diff --git a/eeschema/schedit.cpp b/eeschema/schedit.cpp index 015f107d04..af7e81445f 100644 --- a/eeschema/schedit.cpp +++ b/eeschema/schedit.cpp @@ -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: diff --git a/include/build_version.h b/include/build_version.h index 9e59a15d4b..b1286fa49d 100644 --- a/include/build_version.h +++ b/include/build_version.h @@ -5,7 +5,7 @@ COMMON_GLOBL wxString g_BuildVersion #ifdef EDA_BASE - (wxT("(2008-02-13)")) + (wxT("(2008-02-20)")) #endif ; diff --git a/include/id.h b/include/id.h index 56e1ff1b57..80a6f5a420 100644 --- a/include/id.h +++ b/include/id.h @@ -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, diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index c0320082b4dc6f214f40b444329431111744401b..686802efca8ff9bf475a9332384868744ccda2b7 100644 GIT binary patch delta 52533 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\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 problème 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 trouvée" #: pcbnew/cross-probing.cpp:113 -#, fuzzy, c-format +#, c-format msgid "%s pin %s found" -msgstr " non trouvé" +msgstr "%s pin %s trouvée" #: 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 crée à la sauvegarde si il n'existe pas déjà):" #: eeschema/sheet.cpp:174 msgid "Sheetname:" @@ -7099,26 +7096,22 @@ msgid "Place the bus to bus entry" msgstr "Addition d'entrées 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 même nom sont connectés 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 hiérarchie" #: eeschema/eelayer.h:195 -#, fuzzy msgid "Hierarchical Label" msgstr "Label Hiérarchique"