From a04588db7ca2c47814b5b3fe697e82d5bc6251de Mon Sep 17 00:00:00 2001 From: charras Date: Tue, 2 Jun 2009 07:26:49 +0000 Subject: [PATCH] Changes in minimum pen size parameters used to draw or plot or print items. Now uses only an unique default pen size for plot/print and draw items (see changelog) --- CHANGELOG.txt | 15 + common/about_kicad.cpp | 2 +- common/common_plot_functions.cpp | 6 +- common/drawtxt.cpp | 12 + common/worksheet.cpp | 3 +- eeschema/class_drawsheet.cpp | 2 +- eeschema/class_hierarchical_PIN_sheet.cpp | 2 +- eeschema/class_libentry_fields.cpp | 4 +- eeschema/class_pin.cpp | 37 +- eeschema/class_sch_cmp_field.cpp | 10 +- eeschema/class_schematic_items.cpp | 41 +- eeschema/class_text-label.cpp | 64 +- eeschema/classes_body_items.cpp | 14 +- eeschema/dialog_SVG_print.cpp | 18 +- eeschema/dialog_SVG_print_base.cpp | 6 +- eeschema/dialog_SVG_print_base.fbp | 6 +- eeschema/dialog_options.cpp | 12 +- eeschema/dialog_print_using_printer.cpp | 30 +- eeschema/dialog_print_using_printer_base.cpp | 4 +- eeschema/dialog_print_using_printer_base.fbp | 4 +- eeschema/eeconfig.cpp | 9 +- eeschema/eeredraw.cpp | 6 +- eeschema/eeschema.cpp | 20 +- eeschema/general.h | 60 +- eeschema/libfield.cpp | 29 +- eeschema/plot.cpp | 30 +- eeschema/plotps.cpp | 22 +- include/gr_basic.h | 5 - internat/fr/kicad.mo | Bin 185492 -> 185909 bytes internat/fr/kicad.po | 715 ++++++++++--------- 30 files changed, 625 insertions(+), 563 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 079e8ede7f..02d8d49350 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,21 @@ KiCad ChangeLog 2009 Please add newer entries at the top, list the date and your name with email address. +2009-may-30 UPDATE Jean-Pierre Charras +================================================================================ +++Eeschema: + Changes about thickness of lines in draw/plot functions. + Now there is only one thickness parameter for plot and print. + This is now the default thickness value, + used for items that have a line thickness = 0, + and NOT the minimum thickness. + reasons: + - Obviously, differents parameters to draw and plot and bad. + (what you plot is NOT what you see) + - small texts are not readable with an minimum thickness value + that could be good for others items. + + 2009-may-30 UPDATE Jean-Pierre Charras ================================================================================ ++All: diff --git a/common/about_kicad.cpp b/common/about_kicad.cpp index bd9da3669d..b852f13066 100644 --- a/common/about_kicad.cpp +++ b/common/about_kicad.cpp @@ -8,7 +8,7 @@ #include "appl_wxstruct.h" -#define BUILD_VERSION wxT("(20090525-unstable)") +#define BUILD_VERSION wxT("(20090602-unstable)") wxString g_BuildVersion diff --git a/common/common_plot_functions.cpp b/common/common_plot_functions.cpp index c91a566002..0b436445a1 100644 --- a/common/common_plot_functions.cpp +++ b/common/common_plot_functions.cpp @@ -236,8 +236,10 @@ void WinEDA_DrawFrame::PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) gypas = ( yg - ref.y) / ipas; for( ii = ref.y + gypas, jj = 0; ipas > 0; ii += gypas, jj++, ipas-- ) { - msg.Empty(); - msg.Append('A' + jj); + if( jj < 26 ) + msg.Printf( wxT( "%c" ), jj + 'A' ); + else // I hope 52 identifiers are enought... + msg.Printf( wxT( "%c" ), 'a' + jj - 26 ); if( ii < yg - PAS_REF / 2 ) { pos.x = ref.x * conv_unit; pos.y = ii * conv_unit; diff --git a/common/drawtxt.cpp b/common/drawtxt.cpp index eb432de128..6a389c8fb8 100644 --- a/common/drawtxt.cpp +++ b/common/drawtxt.cpp @@ -260,6 +260,11 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, aWidth = -aWidth; sketch_mode = true; } + +#ifdef CLIP_PEN // made by draw and plot functions + aWidth = Clamp_Text_PenSize( aWidth, aSize, aBold ); +#endif + if( size_h < 0 ) // text is mirrored using size.x < 0 (mirror / Y axis) italic_reverse = true; @@ -555,6 +560,13 @@ void PlotGraphicText( int aFormat_plot, if( aWidth == 0 && aBold ) // Use default values if aWidth == 0 aWidth = GetPenSizeForBold( MIN( aSize.x, aSize.y ) ); +#ifdef CLIP_PEN // made by draw and plot functions + if ( aWidth >= 0 ) + aWidth = Clamp_Text_PenSize( aWidth, aSize, aBold ); + else + aWidth = - Clamp_Text_PenSize( -aWidth, aSize, aBold ); +#endif + // Initialise the actual function used to plot lines: switch( aFormat_plot ) { diff --git a/common/worksheet.cpp b/common/worksheet.cpp index fe181f7e80..657780337e 100644 --- a/common/worksheet.cpp +++ b/common/worksheet.cpp @@ -1070,10 +1070,9 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w gypas = ( yg - refy) / ipas; for( ii = refy + gypas, jj = 0; ipas > 0; ii += gypas, jj++, ipas-- ) { - Line.Empty(); if( jj < 26 ) Line.Printf( wxT( "%c" ), jj + 'A' ); - else + else // I hope 52 identifiers are enought... Line.Printf( wxT( "%c" ), 'a' + jj - 26 ); if( ii < yg - PAS_REF / 2 ) { diff --git a/eeschema/class_drawsheet.cpp b/eeschema/class_drawsheet.cpp index 7b71100a7d..0195fd5d31 100644 --- a/eeschema/class_drawsheet.cpp +++ b/eeschema/class_drawsheet.cpp @@ -305,7 +305,7 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxString Text; int color; wxPoint pos = m_Pos + aOffset; - int LineWidth = g_DrawMinimunLineWidth; + int LineWidth = g_DrawDefaultLineThickness; if( aColor >= 0 ) color = aColor; diff --git a/eeschema/class_hierarchical_PIN_sheet.cpp b/eeschema/class_hierarchical_PIN_sheet.cpp index dd62706ed5..366557705c 100644 --- a/eeschema/class_hierarchical_PIN_sheet.cpp +++ b/eeschema/class_hierarchical_PIN_sheet.cpp @@ -69,7 +69,7 @@ void Hierarchical_PIN_Sheet_Struct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, con static std::vector Poly; - int LineWidth = g_DrawMinimunLineWidth; + int LineWidth = g_DrawDefaultLineThickness; if( Color >= 0 ) txtcolor = (EDA_Colors) Color; diff --git a/eeschema/class_libentry_fields.cpp b/eeschema/class_libentry_fields.cpp index 5ceb2b2669..579c4de94c 100644 --- a/eeschema/class_libentry_fields.cpp +++ b/eeschema/class_libentry_fields.cpp @@ -207,7 +207,9 @@ void LibDrawField::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint text_pos; int color = aColor; - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); + if( aColor < 0 ) // Used normal color or selected color { diff --git a/eeschema/class_pin.cpp b/eeschema/class_pin.cpp index 988aa5dfc2..2546e25634 100644 --- a/eeschema/class_pin.cpp +++ b/eeschema/class_pin.cpp @@ -284,7 +284,7 @@ void LibDrawPin::DrawPinSymbol( WinEDA_DrawPanel* aPanel, { int MapX1, MapY1, x1, y1; int color; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; int posX = aPinPos.x, posY = aPinPos.y, len = m_PinLen; BASE_SCREEN* screen = aPanel->GetScreen(); @@ -460,7 +460,10 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, wxSize PinNameSize( m_PinNameSize, m_PinNameSize ); wxSize PinNumSize( m_PinNumSize, m_PinNumSize ); - int LineWidth = g_DrawMinimunLineWidth; + int nameLineWidth = g_DrawDefaultLineThickness; + nameLineWidth = Clamp_Text_PenSize( nameLineWidth, m_PinNameSize, false ); + int numLineWidth = g_DrawDefaultLineThickness; + numLineWidth = Clamp_Text_PenSize( numLineWidth, m_PinNumSize, false ); GRSetDrawMode( DC, DrawMode ); @@ -508,7 +511,7 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, TEXT_ORIENT_HORIZ, PinNameSize, GR_TEXT_HJUSTIFY_LEFT, - GR_TEXT_VJUSTIFY_CENTER, LineWidth, + GR_TEXT_VJUSTIFY_CENTER, nameLineWidth, false, false ); } else // Orient == PIN_LEFT @@ -519,7 +522,7 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, TEXT_ORIENT_HORIZ, PinNameSize, GR_TEXT_HJUSTIFY_RIGHT, - GR_TEXT_VJUSTIFY_CENTER, LineWidth, + GR_TEXT_VJUSTIFY_CENTER, nameLineWidth, false, false ); } } @@ -532,7 +535,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, StringPinNum, TEXT_ORIENT_HORIZ, PinNumSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_BOTTOM, LineWidth, false, false, false ); + GR_TEXT_VJUSTIFY_BOTTOM, numLineWidth, + false, false ); } } else /* Its a vertical line. */ @@ -547,7 +551,7 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, m_PinName, TEXT_ORIENT_VERT, PinNameSize, GR_TEXT_HJUSTIFY_RIGHT, - GR_TEXT_VJUSTIFY_CENTER, LineWidth, + GR_TEXT_VJUSTIFY_CENTER, nameLineWidth, false, false ); if( DrawPinNum ) DrawGraphicText( panel, DC, @@ -556,7 +560,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, StringPinNum, TEXT_ORIENT_VERT, PinNumSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_BOTTOM, LineWidth, false, false, false ); + GR_TEXT_VJUSTIFY_BOTTOM, numLineWidth, + false, false); } else /* PIN_UP */ { @@ -567,7 +572,7 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, m_PinName, TEXT_ORIENT_VERT, PinNameSize, GR_TEXT_HJUSTIFY_LEFT, - GR_TEXT_VJUSTIFY_CENTER, LineWidth, + GR_TEXT_VJUSTIFY_CENTER, nameLineWidth, false, false ); if( DrawPinNum ) DrawGraphicText( panel, DC, @@ -576,8 +581,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, StringPinNum, TEXT_ORIENT_VERT, PinNumSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_BOTTOM, LineWidth, - false, false, false); + GR_TEXT_VJUSTIFY_BOTTOM, numLineWidth, + false, false); } } } @@ -594,7 +599,7 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, NameColor, m_PinName, TEXT_ORIENT_HORIZ, PinNameSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_BOTTOM, LineWidth, + GR_TEXT_VJUSTIFY_BOTTOM, nameLineWidth, false, false ); } if( DrawPinNum ) @@ -605,8 +610,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, NumColor, StringPinNum, TEXT_ORIENT_HORIZ, PinNumSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_TOP, - LineWidth, false, false, false ); + GR_TEXT_VJUSTIFY_TOP, numLineWidth, + false, false); } } else /* Its a vertical line. */ @@ -619,7 +624,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, NameColor, m_PinName, TEXT_ORIENT_VERT, PinNameSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_BOTTOM, LineWidth, false, false ); + GR_TEXT_VJUSTIFY_BOTTOM, nameLineWidth, + false, false ); } if( DrawPinNum ) @@ -630,7 +636,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel, NumColor, StringPinNum, TEXT_ORIENT_VERT, PinNumSize, GR_TEXT_HJUSTIFY_CENTER, - GR_TEXT_VJUSTIFY_TOP, LineWidth, false, false, false ); + GR_TEXT_VJUSTIFY_TOP, numLineWidth, + false, false ); } } } diff --git a/eeschema/class_sch_cmp_field.cpp b/eeschema/class_sch_cmp_field.cpp index 8764394370..f8dbeea200 100644 --- a/eeschema/class_sch_cmp_field.cpp +++ b/eeschema/class_sch_cmp_field.cpp @@ -59,7 +59,10 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, SCH_COMPONENT* DrawLibItem = (SCH_COMPONENT*) m_Parent; GRTextHorizJustifyType hjustify; GRTextVertJustifyType vjustify; - int LineWidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int LineWidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + + // Clip pen size for small texts: + LineWidth = Clamp_Text_PenSize( LineWidth, m_Size, m_Bold ); if( ( m_Attributs & TEXT_NO_VISIBLE ) || IsVoid() ) return; @@ -236,7 +239,6 @@ EDA_Rect SCH_CMP_FIELD::GetBoundaryBox() const { EDA_Rect BoundaryBox; int hjustify, vjustify; - int textlen; int orient; int dx, dy, x1, y1, x2, y2; @@ -318,6 +320,10 @@ EDA_Rect SCH_CMP_FIELD::GetBoundaryBox() const BoundaryBox.SetWidth( dx ); BoundaryBox.SetHeight( dy ); + // Take thickness in account: + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + BoundaryBox.Inflate( linewidth,linewidth ); + return BoundaryBox; } diff --git a/eeschema/class_schematic_items.cpp b/eeschema/class_schematic_items.cpp index 8c0b2e7a75..355fa2c804 100644 --- a/eeschema/class_schematic_items.cpp +++ b/eeschema/class_schematic_items.cpp @@ -40,7 +40,6 @@ DrawBusEntryStruct::DrawBusEntryStruct( const wxPoint& pos, int shape, int id ) if( id == BUS_TO_BUS ) { m_Layer = LAYER_BUS; - m_Width = 1; } if( shape == '/' ) @@ -106,7 +105,7 @@ EDA_Rect DrawBusEntryStruct::GetBoundingBox() EDA_Rect box( wxPoint( m_Pos.x, m_Pos.y ), wxSize( dx, dy ) ); box.Normalize(); - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; box.Inflate( width / 2, width / 2 ); return box; @@ -117,7 +116,7 @@ void DrawBusEntryStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int DrawMode, int Color ) { int color; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( Color >= 0 ) color = Color; @@ -125,8 +124,11 @@ void DrawBusEntryStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, color = ReturnLayerColor( m_Layer ); GRSetDrawMode( DC, DrawMode ); - if( m_Layer == LAYER_BUS ) - width *= 3; + if( m_Layer == LAYER_BUS ) // TODO: find a better way to handle bus thickness + { + width = wxRound(width * 1.3); + width = MAX(width, 3); + } GRLine( &panel->m_ClipBox, DC, m_Pos.x + offset.x, m_Pos.y + offset.y, m_End().x + offset.x, m_End().y + offset.y, width, color ); @@ -272,7 +274,7 @@ EDA_Rect DrawNoConnectStruct::GetBoundingBox() */ bool DrawNoConnectStruct::HitTest( const wxPoint& aPosRef ) { - int width = g_DrawMinimunLineWidth; + int width = g_DrawDefaultLineThickness; int delta = ( DRAWNOCONNECT_SIZE + width) / 2; wxPoint dist = aPosRef - m_Pos; @@ -306,7 +308,7 @@ void DrawNoConnectStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, { const int DELTA = (DRAWNOCONNECT_SIZE / 2); int pX, pY, color; - int width = g_DrawMinimunLineWidth; + int width = g_DrawDefaultLineThickness; pX = m_Pos.x + offset.x; pY = m_Pos.y + offset.y; @@ -462,23 +464,21 @@ EDA_DrawLineStruct::EDA_DrawLineStruct( const wxPoint& pos, int layer ) : { m_Start = pos; m_End = pos; + m_Width = 0; // Default thickness used m_StartIsDangling = m_EndIsDangling = FALSE; switch( layer ) { default: m_Layer = LAYER_NOTES; /* Mettre ds Notes */ - m_Width = GR_NORM_WIDTH; break; case LAYER_WIRE: m_Layer = LAYER_WIRE; - m_Width = GR_NORM_WIDTH; break; case LAYER_BUS: m_Layer = LAYER_BUS; - m_Width = GR_THICK_WIDTH; break; } } @@ -563,8 +563,6 @@ bool EDA_DrawLineStruct::Save( FILE* aFile ) const layer = "Wire"; if( GetLayer() == LAYER_BUS ) layer = "Bus"; - if( m_Width != GR_NORM_WIDTH ) - layer = "Bus"; if( fprintf( aFile, "Wire %s %s\n", layer, width ) == EOF ) { success = false; @@ -583,7 +581,7 @@ void EDA_DrawLineStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int DrawMode, int Color ) { int color; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( Color >= 0 ) color = Color; @@ -593,8 +591,11 @@ void EDA_DrawLineStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, GRSetDrawMode( DC, DrawMode ); // FIXME: Not compatable with new zoom. - if( (m_Layer == LAYER_BUS) && panel->GetScreen()->Scale( width ) <= 1 ) - width *= 3; + if( m_Layer == LAYER_BUS) + { + width = wxRound(width * 1.4); + width = MAX(width, 3); + } if( m_Layer == LAYER_NOTES ) GRDashedLine( &panel->m_ClipBox, DC, m_Start.x + offset.x, @@ -620,7 +621,7 @@ void EDA_DrawLineStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, DrawPolylineStruct::DrawPolylineStruct( int layer ) : SCH_ITEM( NULL, DRAW_POLYLINE_STRUCT_TYPE ) { - m_Width = GR_NORM_WIDTH; + m_Width = 0; switch( layer ) { @@ -630,12 +631,8 @@ DrawPolylineStruct::DrawPolylineStruct( int layer ) : case LAYER_WIRE: case LAYER_NOTES: - m_Layer = layer; - break; - case LAYER_BUS: m_Layer = layer; - m_Width = GR_THICK_WIDTH; break; } } @@ -671,8 +668,6 @@ bool DrawPolylineStruct::Save( FILE* aFile ) const layer = "Wire"; if( GetLayer() == LAYER_BUS ) layer = "Bus"; - if( m_Width != GR_NORM_WIDTH ) - width = "Bus"; if( fprintf( aFile, "Poly %s %s %d\n", width, layer, GetCornerCount() ) == EOF ) { @@ -696,7 +691,7 @@ void DrawPolylineStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int DrawMode, int Color ) { int color; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( Color >= 0 ) color = Color; diff --git a/eeschema/class_text-label.cpp b/eeschema/class_text-label.cpp index f1b5f420fa..4f2bdd99c7 100644 --- a/eeschema/class_text-label.cpp +++ b/eeschema/class_text-label.cpp @@ -195,7 +195,7 @@ wxPoint SCH_HIERLABEL::GetSchematicTextOffset() { wxPoint text_offset; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = MAX( m_Width, g_DrawDefaultLineThickness ); int ii = m_Size.x + TXTMARGE + width; @@ -230,7 +230,9 @@ wxPoint SCH_HIERLABEL::GetSchematicTextOffset() wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset() { wxPoint text_offset; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + + width = Clamp_Text_PenSize( width, m_Size, m_Bold ); int HalfSize = m_Size.x / 2; int offset = width; @@ -473,7 +475,9 @@ void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aOffset, */ { EDA_Colors color; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + + linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); if( Color >= 0 ) color = (EDA_Colors) Color; @@ -483,9 +487,9 @@ void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aOffset, wxPoint text_offset = aOffset + GetSchematicTextOffset(); - EXCHG( width, m_Width ); // Set the minimum width + EXCHG( linewidth, m_Width ); // Set the minimum width EDA_TextStruct::Draw( panel, DC, text_offset, color, DrawMode, FILLED, UNSPECIFIED_COLOR ); - EXCHG( width, m_Width ); // set initial value + EXCHG( linewidth, m_Width ); // set initial value if( m_IsDangling ) DrawDanglingSymbol( panel, DC, m_Pos + aOffset, color ); } @@ -714,7 +718,8 @@ void SCH_HIERLABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offs { static std::vector Poly; EDA_Colors color; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); if( Color >= 0 ) color = (EDA_Colors) Color; @@ -723,13 +728,13 @@ void SCH_HIERLABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offs GRSetDrawMode( DC, DrawMode ); - EXCHG( width, m_Width ); // Set the minimum width - wxPoint text_offset = offset + GetSchematicTextOffset(); + EXCHG( linewidth, m_Width ); // Set the minimum width + wxPoint text_offset = offset + GetSchematicTextOffset(); EDA_TextStruct::Draw( panel, DC, text_offset, color, DrawMode, FILLED, UNSPECIFIED_COLOR ); - EXCHG( width, m_Width ); // set initial value + EXCHG( linewidth, m_Width ); // set initial value CreateGraphicShape( Poly, m_Pos + offset ); - GRPoly( &panel->m_ClipBox, DC, Poly.size(), &Poly[0], 0, width, color, color ); + GRPoly( &panel->m_ClipBox, DC, Poly.size(), &Poly[0], 0, linewidth, color, color ); if( m_IsDangling ) DrawDanglingSymbol( panel, DC, m_Pos + offset, color ); @@ -773,7 +778,7 @@ EDA_Rect SCH_HIERLABEL::GetBoundingBox() y = m_Pos.y; dx = dy = 0; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; height = m_Size.y + width + 2 * TXTMARGE; length = LenSize( m_Text ) + height // add height for triangular shapes @@ -836,13 +841,14 @@ void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aO GRSetDrawMode( DC, DrawMode ); - int width = MAX( m_Width, g_DrawMinimunLineWidth ); - EXCHG( width, m_Width ); // Set the minimum width + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); + EXCHG( linewidth, m_Width ); // Set the minimum width EDA_TextStruct::Draw( panel, DC, text_offset, color, DrawMode, FILLED, UNSPECIFIED_COLOR ); - EXCHG( width, m_Width ); // set initial value + EXCHG( linewidth, m_Width ); // set initial value CreateGraphicShape( Poly, m_Pos + aOffset ); - GRPoly( &panel->m_ClipBox, DC, Poly.size(), &Poly[0], 0, width, color, color ); + GRPoly( &panel->m_ClipBox, DC, Poly.size(), &Poly[0], 0, linewidth, color, color ); if( m_IsDangling ) DrawDanglingSymbol( panel, DC, m_Pos + aOffset, color ); @@ -856,22 +862,24 @@ void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& aO */ void SCH_GLOBALLABEL::CreateGraphicShape( std::vector & aCorner_list, const wxPoint& Pos ) { - int HalfSize = m_Size.y / 2; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int HalfSize = m_Size.y / 2; + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + + linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); aCorner_list.clear(); int symb_len = LenSize( m_Text ) + (TXTMARGE * 2); // Create outline shape : 6 points - int x = symb_len + width + 3; - int y = wxRound( (double)HalfSize * 1.5 + (double)width + 3.0 ); // 50% more for negation bar - aCorner_list.push_back( wxPoint( 0, 0 ) ); // Starting point (anchor) - aCorner_list.push_back( wxPoint( 0, -y ) ); // Up - aCorner_list.push_back( wxPoint( -x, -y ) ); // left Up - aCorner_list.push_back( wxPoint( -x, 0 ) ); // left - aCorner_list.push_back( wxPoint( -x, y ) ); // left down - aCorner_list.push_back( wxPoint( 0, y ) ); // down + int x = symb_len + linewidth + 3; + int y = wxRound( (double) HalfSize * 1.5 + (double) linewidth + 3.0 ); // 50% more for negation bar + aCorner_list.push_back( wxPoint( 0, 0 ) ); // Starting point (anchor) + aCorner_list.push_back( wxPoint( 0, -y ) ); // Up + aCorner_list.push_back( wxPoint( -x, -y ) ); // left Up + aCorner_list.push_back( wxPoint( -x, 0 ) ); // left + aCorner_list.push_back( wxPoint( -x, y ) ); // left down + aCorner_list.push_back( wxPoint( 0, y ) ); // down int x_offset = 0; @@ -941,10 +949,10 @@ EDA_Rect SCH_GLOBALLABEL::GetBoundingBox() y = m_Pos.y; dx = dy = 0; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; height = ( (m_Size.y * 15) / 10 ) + width + 2 * TXTMARGE; length = - LenSize( m_Text ) // text X size + LenSize( m_Text ) // text X size + height // add height for triangular shapes (bidirectional) + DANGLING_SYMBOL_SIZE; @@ -993,7 +1001,7 @@ EDA_Rect SCH_TEXT::GetBoundingBox() x = m_Pos.x; y = m_Pos.y; - int width = MAX( m_Width, g_DrawMinimunLineWidth ); + int width = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; length = LenSize( m_Text ); height = m_Size.y + width; dx = dy = 0; diff --git a/eeschema/classes_body_items.cpp b/eeschema/classes_body_items.cpp index dbbb3de0fa..f8d1da3962 100644 --- a/eeschema/classes_body_items.cpp +++ b/eeschema/classes_body_items.cpp @@ -197,7 +197,7 @@ void LibDrawArc::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint pos1, pos2, posc; int color = ReturnLayerColor( LAYER_DEVICE ); - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( aColor < 0 ) // Used normal color or selected color { @@ -398,7 +398,7 @@ void LibDrawCircle::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint pos1; int color = ReturnLayerColor( LAYER_DEVICE ); - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( aColor < 0 ) // Used normal color or selected color { @@ -550,7 +550,9 @@ void LibDrawText::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint pos1, pos2; int color = ReturnLayerColor( LAYER_DEVICE ); - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; + // Clip pen size for small texts: + linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); if( aColor < 0 ) // Used normal color or selected color { @@ -649,7 +651,7 @@ void LibDrawSquare::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint pos1, pos2; int color = ReturnLayerColor( LAYER_DEVICE ); - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( aColor < 0 ) // Used normal color or selected color { @@ -744,7 +746,7 @@ void LibDrawSegment::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint pos1, pos2; int color = ReturnLayerColor( LAYER_DEVICE ); - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; if( aColor < 0 ) // Used normal color or selected color { @@ -894,7 +896,7 @@ void LibDrawPolyline::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint pos1; int color = ReturnLayerColor( LAYER_DEVICE ); - int linewidth = MAX( m_Width, g_DrawMinimunLineWidth ); + int linewidth = (m_Width == 0) ? g_DrawDefaultLineThickness : m_Width; // Buffer used to store current corners coordinates for drawings static wxPoint* Buf_Poly_Drawings = NULL; diff --git a/eeschema/dialog_SVG_print.cpp b/eeschema/dialog_SVG_print.cpp index d1d4046a9e..363f0b5fec 100644 --- a/eeschema/dialog_SVG_print.cpp +++ b/eeschema/dialog_SVG_print.cpp @@ -94,7 +94,7 @@ void DIALOG_SVG_PRINT::OnInitDialog( wxInitDialogEvent& event ) AddUnitSymbol(* m_TextPenWidth, g_UnitMetric ); m_DialogPenWidth->SetValue( - ReturnStringFromValue(g_UnitMetric, g_PlotLine_Width, m_Parent->m_InternalUnits ) ); + ReturnStringFromValue(g_UnitMetric, g_DrawDefaultLineThickness, m_Parent->m_InternalUnits ) ); m_Print_Sheet_Ref->SetValue( s_Print_Frame_Ref ); if (GetSizer()) { @@ -107,20 +107,20 @@ void DIALOG_SVG_PRINT::OnInitDialog( wxInitDialogEvent& event ) void DIALOG_SVG_PRINT::SetPenWidth() /********************************************/ { - g_PlotLine_Width = ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits ); + g_DrawDefaultLineThickness = ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits ); - if( g_PlotLine_Width > WIDTH_MAX_VALUE ) + if( g_DrawDefaultLineThickness > WIDTH_MAX_VALUE ) { - g_PlotLine_Width = WIDTH_MAX_VALUE; + g_DrawDefaultLineThickness = WIDTH_MAX_VALUE; } - if( g_PlotLine_Width < WIDTH_MIN_VALUE ) + if( g_DrawDefaultLineThickness < WIDTH_MIN_VALUE ) { - g_PlotLine_Width = WIDTH_MIN_VALUE; + g_DrawDefaultLineThickness = WIDTH_MIN_VALUE; } m_DialogPenWidth->SetValue( - ReturnStringFromValue(g_UnitMetric, g_PlotLine_Width, m_Parent->m_InternalUnits ) ); + ReturnStringFromValue(g_UnitMetric, g_DrawDefaultLineThickness, m_Parent->m_InternalUnits ) ); } @@ -235,8 +235,8 @@ bool DIALOG_SVG_PRINT::DrawPage( const wxString& FullFileName, BASE_SCREEN* scre EDA_Rect tmp = panel->m_ClipBox; GRResetPenAndBrush( &dc ); - g_PlotLine_Width = ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits ); - SetPenMinWidth( g_PlotLine_Width ); + g_DrawDefaultLineThickness = ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits ); + SetPenMinWidth( g_DrawDefaultLineThickness ); GRForceBlackPen( m_ModeColorOption->GetSelection() == 0 ? FALSE : true ); diff --git a/eeschema/dialog_SVG_print_base.cpp b/eeschema/dialog_SVG_print_base.cpp index 33827bccd0..09e8643a28 100644 --- a/eeschema/dialog_SVG_print_base.cpp +++ b/eeschema/dialog_SVG_print_base.cpp @@ -22,19 +22,19 @@ DIALOG_SVG_PRINT_base::DIALOG_SVG_PRINT_base( wxWindow* parent, wxWindowID id, c wxStaticBoxSizer* sbOptionsSizer; sbOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Print SVG options:") ), wxVERTICAL ); - m_TextPenWidth = new wxStaticText( this, wxID_ANY, _("Pen width mini"), wxDefaultPosition, wxDefaultSize, 0 ); + m_TextPenWidth = new wxStaticText( this, wxID_ANY, _("Default Pen Size"), wxDefaultPosition, wxDefaultSize, 0 ); m_TextPenWidth->Wrap( -1 ); sbOptionsSizer->Add( m_TextPenWidth, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); m_DialogPenWidth = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_DialogPenWidth->SetToolTip( _("Selection of the minimum pen thickness used to draw items.") ); + m_DialogPenWidth->SetToolTip( _("Selection of the default pen thickness used to draw items, when their thickness is set to 0.") ); sbOptionsSizer->Add( m_DialogPenWidth, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); wxString m_ModeColorOptionChoices[] = { _("Color"), _("Black and White") }; int m_ModeColorOptionNChoices = sizeof( m_ModeColorOptionChoices ) / sizeof( wxString ); m_ModeColorOption = new wxRadioBox( this, wxID_ANY, _("Print mode"), wxDefaultPosition, wxDefaultSize, m_ModeColorOptionNChoices, m_ModeColorOptionChoices, 1, wxRA_SPECIFY_COLS ); - m_ModeColorOption->SetSelection( 0 ); + m_ModeColorOption->SetSelection( 1 ); m_ModeColorOption->SetToolTip( _("Choose if you wand to draw the sheet like it appears on screen,\nor in black and white mode, better to print it when using black and white printers") ); sbOptionsSizer->Add( m_ModeColorOption, 0, wxALL|wxEXPAND, 5 ); diff --git a/eeschema/dialog_SVG_print_base.fbp b/eeschema/dialog_SVG_print_base.fbp index 3aa15e4d35..9a9bfd90cd 100644 --- a/eeschema/dialog_SVG_print_base.fbp +++ b/eeschema/dialog_SVG_print_base.fbp @@ -108,7 +108,7 @@ 0 wxID_ANY - Pen width mini + Default Pen Size m_TextPenWidth @@ -168,7 +168,7 @@ - Selection of the minimum pen thickness used to draw items. + Selection of the default pen thickness used to draw items, when their thickness is set to 0. @@ -222,7 +222,7 @@ m_ModeColorOption protected - 0 + 1 wxRA_SPECIFY_COLS diff --git a/eeschema/dialog_options.cpp b/eeschema/dialog_options.cpp index 5cc2f4f489..ccdb48be40 100644 --- a/eeschema/dialog_options.cpp +++ b/eeschema/dialog_options.cpp @@ -308,7 +308,7 @@ void WinEDA_SetOptionsFrame::CreateControls() m_DefaultDrawLineWidthCtrl = new WinEDA_ValueCtrl( this, _( "Default Line Width" ), - g_DrawMinimunLineWidth, + g_DrawDefaultLineThickness, g_UnitMetric, m_DrawOptionsSizer, EESCHEMA_INTERNAL_UNIT ); @@ -393,11 +393,11 @@ void WinEDA_SetOptionsFrame::Accept( wxCommandEvent& event ) wxRealPoint grid; wxString msg; - g_DrawMinimunLineWidth = m_DefaultDrawLineWidthCtrl->GetValue(); - if( g_DrawMinimunLineWidth < 0 ) - g_DrawMinimunLineWidth = 0; - if( g_DrawMinimunLineWidth > 100 ) - g_DrawMinimunLineWidth = 100; + g_DrawDefaultLineThickness = m_DefaultDrawLineWidthCtrl->GetValue(); + if( g_DrawDefaultLineThickness < 0 ) + g_DrawDefaultLineThickness = 0; + if( g_DrawDefaultLineThickness > 100 ) + g_DrawDefaultLineThickness = 100; g_DefaultTextLabelSize = m_DefaultLabelSizeCtrl->GetValue(); if( g_DefaultTextLabelSize < 0 ) diff --git a/eeschema/dialog_print_using_printer.cpp b/eeschema/dialog_print_using_printer.cpp index 49ab38a3f5..4c246e5a4d 100644 --- a/eeschema/dialog_print_using_printer.cpp +++ b/eeschema/dialog_print_using_printer.cpp @@ -137,9 +137,9 @@ void DIALOG_PRINT_USING_PRINTER::OnInitDialog( wxInitDialogEvent& event ) m_Config->Read( PRINTMODECOLOR_KEY, &s_Print_Black_and_White ); } - AddUnitSymbol(* m_TextPenWidth, g_UnitMetric ); + AddUnitSymbol(* m_TextPenWidth, g_DrawDefaultLineThickness ); m_DialogPenWidth->SetValue( - ReturnStringFromValue(g_UnitMetric, g_PlotLine_Width, m_Parent->m_InternalUnits ) ); + ReturnStringFromValue(g_UnitMetric, g_DrawDefaultLineThickness, m_Parent->m_InternalUnits ) ); m_Print_Sheet_Ref->SetValue( s_Print_Frame_Ref ); m_ModeColorOption->SetSelection( s_Print_Black_and_White ? 1 : 0); @@ -177,20 +177,20 @@ void DIALOG_PRINT_USING_PRINTER::SetPenWidth() * NOTE: g_PlotLine_Width is in internal units */ { - g_PlotLine_Width = ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits ); + g_DrawDefaultLineThickness = ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits ); - if( g_PlotLine_Width > WIDTH_MAX_VALUE ) + if( g_DrawDefaultLineThickness > WIDTH_MAX_VALUE ) { - g_PlotLine_Width = WIDTH_MAX_VALUE; + g_DrawDefaultLineThickness = WIDTH_MAX_VALUE; } - if( g_PlotLine_Width < WIDTH_MIN_VALUE ) + if( g_DrawDefaultLineThickness < WIDTH_MIN_VALUE ) { - g_PlotLine_Width = WIDTH_MIN_VALUE; + g_DrawDefaultLineThickness = WIDTH_MIN_VALUE; } m_DialogPenWidth->SetValue( - ReturnStringFromValue(g_UnitMetric, g_PlotLine_Width, m_Parent->m_InternalUnits ) ); + ReturnStringFromValue(g_UnitMetric, g_DrawDefaultLineThickness, m_Parent->m_InternalUnits ) ); } @@ -442,18 +442,8 @@ void EDA_Printout::DrawPage() GRForceBlackPen( true ); - /* set Pen min width */ - double ftmp, xdcscale, ydcscale; - - // g_PlotLine_Width is in internal units ( 1/1000 inch), and must be converted in pixels - ftmp = (float) g_PlotLine_Width * 25.4 / EESCHEMA_INTERNAL_UNIT; // ftmp est en mm - ftmp *= (float) PlotAreaSize.x / PageSize_in_mm.x; /* ftmp is in pixels */ - - /* because the pen size will be scaled by the dc scale, we modify the size - * in order to keep the requested value */ - dc->GetUserScale( &xdcscale, &ydcscale ); - ftmp /= xdcscale; - SetPenMinWidth( wxRound( ftmp ) ); + /* set Pen min width (not used now) */ + SetPenMinWidth( 1 ); WinEDA_DrawPanel* panel = m_Parent->DrawPanel; BASE_SCREEN* screen = panel->GetScreen(); diff --git a/eeschema/dialog_print_using_printer_base.cpp b/eeschema/dialog_print_using_printer_base.cpp index 94907e0bfd..9381cc809a 100644 --- a/eeschema/dialog_print_using_printer_base.cpp +++ b/eeschema/dialog_print_using_printer_base.cpp @@ -22,12 +22,12 @@ DIALOG_PRINT_USING_PRINTER_base::DIALOG_PRINT_USING_PRINTER_base( wxWindow* pare wxStaticBoxSizer* sbOptionsSizer; sbOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options:") ), wxVERTICAL ); - m_TextPenWidth = new wxStaticText( this, wxID_ANY, _("Pen Width Mini"), wxDefaultPosition, wxDefaultSize, 0 ); + m_TextPenWidth = new wxStaticText( this, wxID_ANY, _("Default Pen Size"), wxDefaultPosition, wxDefaultSize, 0 ); m_TextPenWidth->Wrap( -1 ); sbOptionsSizer->Add( m_TextPenWidth, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); m_DialogPenWidth = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_DialogPenWidth->SetToolTip( _("Selection of the minimum pen thickness used to draw items.") ); + m_DialogPenWidth->SetToolTip( _("Selection of the default pen thickness used to draw items, when their thickness is set to 0.") ); m_DialogPenWidth->SetMinSize( wxSize( 200,-1 ) ); sbOptionsSizer->Add( m_DialogPenWidth, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); diff --git a/eeschema/dialog_print_using_printer_base.fbp b/eeschema/dialog_print_using_printer_base.fbp index d275e041c1..42c8745619 100644 --- a/eeschema/dialog_print_using_printer_base.fbp +++ b/eeschema/dialog_print_using_printer_base.fbp @@ -108,7 +108,7 @@ 0 wxID_ANY - Pen Width Mini + Default Pen Size m_TextPenWidth @@ -168,7 +168,7 @@ - Selection of the minimum pen thickness used to draw items. + Selection of the default pen thickness used to draw items, when their thickness is set to 0. diff --git a/eeschema/eeconfig.cpp b/eeschema/eeconfig.cpp index f466bb0a47..754d7c71d3 100644 --- a/eeschema/eeconfig.cpp +++ b/eeschema/eeconfig.cpp @@ -298,8 +298,7 @@ void WinEDA_SchematicFrame::SaveProjectFile( wxWindow* displayframe ) } -static const wxString MinDrawLineWidthEntry( wxT( "MinimunDrawLineWidth" ) ); -static const wxString PlotLineWidthEntry( wxT( "PlotLineWidth" ) ); +static const wxString DefaultDrawLineWidthEntry( wxT( "DefaultDrawLineWidth" ) ); static const wxString ShowHiddenPinsEntry( wxT( "ShowHiddenPins" ) ); static const wxString HorzVertLinesOnlyEntry( wxT( "HorizVertLinesOnly" ) ); @@ -424,8 +423,7 @@ void WinEDA_SchematicFrame::LoadSettings() wxGetApp().ReadCurrentSetupValues( GetConfigurationSettings() ); - g_DrawMinimunLineWidth = cfg->Read( MinDrawLineWidthEntry, (long) 0 ); - g_PlotLine_Width = cfg->Read( PlotLineWidthEntry, (long) 4 ); + g_DrawDefaultLineThickness = cfg->Read( DefaultDrawLineWidthEntry, (long) 6 ); cfg->Read( ShowHiddenPinsEntry, &m_ShowAllPins, false ); cfg->Read( HorzVertLinesOnlyEntry, &g_HVLines, true ); } @@ -444,8 +442,7 @@ void WinEDA_SchematicFrame::SaveSettings() wxGetApp().SaveCurrentSetupValues( GetConfigurationSettings() ); - cfg->Write( MinDrawLineWidthEntry, (long) g_DrawMinimunLineWidth ); - cfg->Write( PlotLineWidthEntry, (long) g_PlotLine_Width ); + cfg->Write( DefaultDrawLineWidthEntry, (long) g_DrawDefaultLineThickness ); cfg->Write( ShowHiddenPinsEntry, m_ShowAllPins ); cfg->Write( HorzVertLinesOnlyEntry, g_HVLines ); } diff --git a/eeschema/eeredraw.cpp b/eeschema/eeredraw.cpp index 3280a0c4f1..9a12b4b1b8 100644 --- a/eeschema/eeredraw.cpp +++ b/eeschema/eeredraw.cpp @@ -75,7 +75,7 @@ void WinEDA_SchematicFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg ) RedrawStructList( DrawPanel, DC, GetScreen()->EEDrawList, GR_DEFAULT_DRAWMODE ); - TraceWorkSheet( DC, GetScreen(), g_DrawMinimunLineWidth ); + TraceWorkSheet( DC, GetScreen(), g_DrawDefaultLineThickness ); DrawPanel->CursorOn( DC ); // reaffichage curseur if( DrawPanel->ManageCurseur ) @@ -121,7 +121,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, RedrawStructList( this, DC, ActiveScreen->EEDrawList, GR_COPY ); if( Print_Sheet_Ref ) - m_Parent->TraceWorkSheet( DC, ActiveScreen, g_DrawMinimunLineWidth ); + m_Parent->TraceWorkSheet( DC, ActiveScreen, g_DrawDefaultLineThickness ); wxEndBusyCursor(); } @@ -188,7 +188,7 @@ void DrawStructsInGhost( WinEDA_DrawPanel* panel, wxDC* DC, SCH_ITEM* DrawStruct, int dx, int dy ) { int DrawMode = g_XorMode; - int width = g_DrawMinimunLineWidth; + int width = g_DrawDefaultLineThickness; GRSetDrawMode( DC, DrawMode ); diff --git a/eeschema/eeschema.cpp b/eeschema/eeschema.cpp index 82f2a3dce2..d21823e2f7 100644 --- a/eeschema/eeschema.cpp +++ b/eeschema/eeschema.cpp @@ -67,8 +67,8 @@ bool g_FlDrawSpecificConvert = TRUE; int g_PlotFormat; /* flag = TYPE_HPGL, TYPE_PS... */ int g_PlotMargin; /* Marge pour traces du cartouche */ -float g_PlotScaleX; -float g_PlotScaleY; /* coeff d'echelle de trace en unites table tracante */ +double g_PlotScaleX; +double g_PlotScaleY; /* coeff d'echelle de trace en unites table tracante */ HPGL_Pen_Descr_Struct g_HPGL_Pen_Descr; @@ -88,12 +88,18 @@ wxString g_NetListerCommandLine; // ligne de commande pour l'appel au simulat LayerStruct g_LayerDescr; /* couleurs des couches */ -/* bool: TRUE si edition des pins pin a pin au lieu */ -bool g_EditPinByPinIsOn = FALSE; +bool g_EditPinByPinIsOn = false; /* true to do not synchronize pins edition + * when they are at the same location */ + +int g_LibSymbolDefaultLineWidth = 0; /* default line width (in EESCHEMA units) + * used when creating a new graphic item in libedit. + * 0 = use default line thicknes + */ +int g_DrawDefaultLineThickness = 6; /* Default line (in EESCHEMA units) thickness + * used to draw/plot items having a default thickness line value (i.e. = 0 ). + * 0 = single pixel line width + */ -int g_LibSymbolDefaultLineWidth; /* default line width (in EESCHEMA units) used when creating a new graphic item in libedit : 0 = default */ -int g_DrawMinimunLineWidth; /* Minimum line (in EESCHEMA units) thickness used to draw items on screen; 0 = single pixel line width */ -int g_PlotLine_Width; /* Minimum line (in EESCHEMA units) thickness used to Plot/Print items */ // Color to draw selected items int g_ItemSelectetColor = BROWN; // Color to draw items flagged invisible, in libedit (they are insisible in eeschema diff --git a/eeschema/general.h b/eeschema/general.h index ce04898fe0..ee1f35d022 100644 --- a/eeschema/general.h +++ b/eeschema/general.h @@ -97,19 +97,19 @@ typedef enum { extern LibraryStruct* g_LibraryList; // All part libs are saved here. extern int g_OptNetListUseNames; /* TRUE pour utiliser les noms de net plutot que - * les numeros (netlist PSPICE seulement) */ + * les numeros (netlist PSPICE seulement) */ extern SCH_ITEM* g_ItemToRepeat; /* pointeur sur la derniere structure - * dessinee pouvant etre dupliquee par la commande - * Repeat ( NULL si aucune struct existe ) */ + * dessinee pouvant etre dupliquee par la commande + * Repeat ( NULL si aucune struct existe ) */ extern wxSize g_RepeatStep; extern int g_RepeatDeltaLabel; extern SCH_ITEM* g_ItemToUndoCopy; /* copy of last modified schematic item - * before it is modified (used for undo managing to restore old values ) */ + * before it is modified (used for undo managing to restore old values ) */ extern bool g_LastSearchIsMarker; // True if last seach is a marker serach - // False for a schematic item search - // Used for hotkey next search +// False for a schematic item search +// Used for hotkey next search /* Block operation (copy, paste) */ extern SCH_ITEM* g_BlockSaveDataList; // List of items to paste (Created by Block Save) @@ -117,7 +117,7 @@ extern SCH_ITEM* g_BlockSaveDataList; // List of items to paste (Created by Bloc // Gestion d'options extern bool g_HVLines; -extern int g_PlotPSColorOpt; // True = plot postcript color (see plotps.cpp) +extern int g_PlotPSColorOpt; // True = plot postcript color (see plotps.cpp) // Gestion de diverses variables, options... devant etre memorisees mais @@ -140,11 +140,11 @@ extern int g_ViewUnit; /* part a afficher (A, B ..) extern int g_DefaultTextLabelSize; /* Variables globales pour LibEdit */ -extern int g_LastTextSize; -extern int g_LastTextOrient; +extern int g_LastTextSize; +extern int g_LastTextOrient; -extern bool g_FlDrawSpecificUnit; -extern bool g_FlDrawSpecificConvert; +extern bool g_FlDrawSpecificUnit; +extern bool g_FlDrawSpecificConvert; /********************************************************/ /* Description des structures des parametres principaux */ @@ -152,9 +152,9 @@ extern bool g_FlDrawSpecificConvert; /* Gestion des trace sur table tracante */ -extern int g_PlotFormat; /* flag = TYPE_HPGL, TYPE_PS... */ -extern int g_PlotMargin; /* Marge pour traces du cartouche */ -extern float g_PlotScaleX, g_PlotScaleY; /* coeff d'echelle de trace en unites table tracante */ +extern int g_PlotFormat; /* flag = TYPE_HPGL, TYPE_PS... */ +extern int g_PlotMargin; /* Marge pour traces du cartouche */ +extern double g_PlotScaleX, g_PlotScaleY; /* coeff d'echelle de trace en unites table tracante */ /* For HPGL plotting: Pen caract : */ @@ -166,9 +166,7 @@ struct HPGL_Pen_Descr_Struct }; extern HPGL_Pen_Descr_Struct g_HPGL_Pen_Descr; -/* Ecrans usuels */ - -//extern SCH_SCREEN * ScreenSch; +/* First and main (root) screen */ extern DrawSheetStruct* g_RootSheet; extern SCH_SCREEN* g_ScreenLib; @@ -177,31 +175,37 @@ extern SCH_SCREEN* g_ScreenLib; /*************************************/ /* valeur de flag indicant si le pointeur de reference pour une localisation - * est le curseur sur grille ou le curseur a deplacement fin hors grille */ + * est le curseur sur grille ou le curseur a deplacement fin hors grille */ #define CURSEUR_ON_GRILLE 0 #define CURSEUR_OFF_GRILLE 1 /* Gestion des librairies schematiques */ -extern wxString g_NetCmpExtBuffer; -extern wxString g_SymbolExtBuffer; +extern wxString g_NetCmpExtBuffer; +extern wxString g_SymbolExtBuffer; extern const wxString CompLibFileExtension; extern const wxString CompLibFileWildcard; -extern wxString g_SimulatorCommandLine; // ligne de commande pour l'appel au simulateur (gnucap, spice..) -extern wxString g_NetListerCommandLine; // ligne de commande pour l'appel au simulateur (gnucap, spice..) +extern wxString g_SimulatorCommandLine; // ligne de commande pour l'appel au simulateur (gnucap, spice..) +extern wxString g_NetListerCommandLine; // ligne de commande pour l'appel au simulateur (gnucap, spice..) -extern LayerStruct g_LayerDescr; /* couleurs des couches */ +extern LayerStruct g_LayerDescr; /* couleurs des couches */ -/* bool: TRUE si edition des pins pin a pin au lieu */ -extern bool g_EditPinByPinIsOn; +extern bool g_EditPinByPinIsOn; /* true to do not synchronize pins edition + * when they are at the same location */ -extern int g_LibSymbolDefaultLineWidth; /* default line width (in EESCHEMA units) used when creating a new graphic item in libedit : 0 = default */ -extern int g_DrawMinimunLineWidth; /* Minimum line (in EESCHEMA units) thickness used to draw items on screen; 0 = single pixel line width */ -extern int g_PlotLine_Width; /* Minimum line (in EESCHEMA units) thickness used to Plot/Print items */ +extern int g_LibSymbolDefaultLineWidth; /* default line width (in EESCHEMA units) + * used when creating a new graphic item in libedit. + * 0 = use default line thicknes + */ +extern int g_DrawDefaultLineThickness; /* Default line (in EESCHEMA units) thickness + * used to draw/plot items having a default thickness line value (i.e. = 0 ). + * 0 = single pixel line width + */ // Color to draw selected items extern int g_ItemSelectetColor; + // Color to draw items flagged invisible, in libedit (they are insisible in eeschema extern int g_InvisibleItemColor; diff --git a/eeschema/libfield.cpp b/eeschema/libfield.cpp index a272f82d44..0a9f36f8fb 100644 --- a/eeschema/libfield.cpp +++ b/eeschema/libfield.cpp @@ -192,7 +192,8 @@ void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field ) color = DARKGRAY; Field->m_Pos.x = GetScreen()->m_Curseur.x; Field->m_Pos.y = -GetScreen()->m_Curseur.y; - int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth ); + int linewidth = (Field->m_Width == 0) ? g_DrawDefaultLineThickness : Field->m_Width; + linewidth = Clamp_Text_PenSize( linewidth, Field->m_Size, Field->m_Bold ); DrawPanel->CursorOff( DC ); GRSetDrawMode( DC, GR_DEFAULT_DRAWMODE ); @@ -200,8 +201,8 @@ void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field ) color, ReturnFieldFullText( Field ), Field->m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, Field->m_Size, - Field->m_HJustify, Field->m_VJustify, LineWidth, - Field->m_Italic, Field->m_Bold, false); + Field->m_HJustify, Field->m_VJustify, linewidth, + Field->m_Italic, Field->m_Bold); DrawPanel->CursorOn( DC ); @@ -219,7 +220,8 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LibDrawField* Field ) wxString Text; wxString title; EDA_Colors color; - int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth ); + int linewidth = (Field->m_Width == 0) ? g_DrawDefaultLineThickness : Field->m_Width; + linewidth = Clamp_Text_PenSize( linewidth, Field->m_Size, Field->m_Bold ); if( Field == NULL ) return; @@ -273,8 +275,8 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LibDrawField* Field ) color, ReturnFieldFullText( Field ), Field->m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, Field->m_Size, - Field->m_HJustify, Field->m_VJustify, LineWidth, - Field->m_Italic, Field->m_Bold, false); + Field->m_HJustify, Field->m_VJustify, linewidth, + Field->m_Italic, Field->m_Bold); if( !Text.IsEmpty() ) { @@ -291,8 +293,8 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LibDrawField* Field ) color, ReturnFieldFullText( Field ), Field->m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, Field->m_Size, - Field->m_HJustify, Field->m_VJustify, LineWidth, - Field->m_Italic, Field->m_Bold, false); + Field->m_HJustify, Field->m_VJustify, linewidth, + Field->m_Italic, Field->m_Bold); GetScreen()->SetModify(); @@ -338,13 +340,14 @@ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LibDrawField* Field ) DrawPanel->CursorOff( DC ); GRSetDrawMode( DC, g_XorMode ); - int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth ); + int linewidth = (Field->m_Width == 0) ? g_DrawDefaultLineThickness : Field->m_Width; + linewidth = Clamp_Text_PenSize( linewidth, Field->m_Size, Field->m_Bold ); DrawGraphicText( DrawPanel, DC, wxPoint( Field->m_Pos.x, -Field->m_Pos.y ), color, ReturnFieldFullText( Field ), Field->m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, Field->m_Size, - Field->m_HJustify, Field->m_VJustify, LineWidth, - Field->m_Italic, Field->m_Bold, false); + Field->m_HJustify, Field->m_VJustify, linewidth, + Field->m_Italic, Field->m_Bold); if( Field->m_Orient ) Field->m_Orient = 0; @@ -358,8 +361,8 @@ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LibDrawField* Field ) color, ReturnFieldFullText( Field ), Field->m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, Field->m_Size, - Field->m_HJustify, Field->m_VJustify, LineWidth, - Field->m_Italic, Field->m_Bold, false); + Field->m_HJustify, Field->m_VJustify, linewidth, + Field->m_Italic, Field->m_Bold); DrawPanel->CursorOn( DC ); } diff --git a/eeschema/plot.cpp b/eeschema/plot.cpp index d6577cdcd3..d2c1eaad8c 100644 --- a/eeschema/plot.cpp +++ b/eeschema/plot.cpp @@ -272,9 +272,9 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) t1 = (TransMat[0][0] != 0) ^ (Text->m_Orient != 0); pos = TransformCoordinate( TransMat, Text->m_Pos ) + DrawLibItem->m_Pos; SetCurrentLineWidth( -1 ); - int thickness = Text->m_Width; - if( thickness == 0 ) // - thickness = MAX( g_PlotLine_Width, g_DrawMinimunLineWidth ); + int thickness = (Text->m_Width == 0) ? g_DrawDefaultLineThickness : Text->m_Width; + thickness = Clamp_Text_PenSize( thickness, Text->m_Size, Text->m_Bold ); + PlotGraphicText( g_PlotFormat, pos, CharColor, Text->m_Text, t1 ? TEXT_ORIENT_HORIZ : TEXT_ORIENT_VERT, @@ -315,7 +315,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) /* Dessin de la pin et du symbole special associe */ PlotPinSymbol( pos, Pin->m_PinLen, orient, Pin->m_PinShape ); - int thickness = MAX( g_PlotLine_Width, g_DrawMinimunLineWidth );; + int thickness = g_DrawDefaultLineThickness; Pin->PlotPinTexts( pos, orient, Entry->m_TextInside, Entry->m_DrawPinNum, Entry->m_DrawPinName, @@ -496,9 +496,8 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem, } - int thickness = field->m_Width; - if( thickness == 0 ) - thickness = MAX( g_PlotLine_Width, g_DrawMinimunLineWidth ); + int thickness = (field->m_Width == 0) ? g_DrawDefaultLineThickness : field->m_Width; + thickness = Clamp_Text_PenSize( thickness, field->m_Size, field->m_Bold ); SetCurrentLineWidth( thickness ); if( !IsMulti || (FieldNumber != REFERENCE) ) @@ -666,9 +665,8 @@ void PlotTextStruct( EDA_BaseStruct* Struct ) if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt ) color = ReturnLayerColor( schText->m_Layer ); wxPoint textpos = schText->m_Pos + schText->GetSchematicTextOffset(); - int thickness = schText->m_Width; - if( thickness == 0 ) - thickness = MAX( g_PlotLine_Width, g_DrawMinimunLineWidth ); + int thickness = (schText->m_Width == 0) ? g_DrawDefaultLineThickness : schText->m_Width; + thickness = Clamp_Text_PenSize( thickness, schText->m_Size, schText->m_Bold ); SetCurrentLineWidth( thickness ); @@ -743,9 +741,9 @@ static void Plot_Hierarchical_PIN_Sheet( Hierarchical_PIN_Sheet_Struct* aHierarc tposx = posx + size + (size / 8); side = GR_TEXT_HJUSTIFY_LEFT; } - int thickness = aHierarchical_PIN->m_Width; - if( thickness == 0 ) - thickness = MAX( g_PlotLine_Width, g_DrawMinimunLineWidth ); + + int thickness = (aHierarchical_PIN->m_Width == 0) ? g_DrawDefaultLineThickness : aHierarchical_PIN->m_Width; + thickness = Clamp_Text_PenSize( thickness, aHierarchical_PIN->m_Size, aHierarchical_PIN->m_Bold ); SetCurrentLineWidth( thickness ); PlotGraphicText( g_PlotFormat, wxPoint( tposx, posy ), txtcolor, @@ -774,7 +772,7 @@ void PlotSheetStruct( DrawSheetStruct* Struct ) if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt ) SetColorMapPS( ReturnLayerColor( Struct->m_Layer ) ); - int thickness = MAX( g_PlotLine_Width, g_DrawMinimunLineWidth ); + int thickness = g_DrawDefaultLineThickness; SetCurrentLineWidth( thickness ); Move_Plume( Struct->m_Pos, 'U' ); @@ -795,6 +793,8 @@ void PlotSheetStruct( DrawSheetStruct* Struct ) Text = Struct->m_SheetName; size = wxSize( Struct->m_SheetNameSize, Struct->m_SheetNameSize ); pos = Struct->m_Pos; pos.y -= 4; + thickness = g_DrawDefaultLineThickness; + thickness = Clamp_Text_PenSize( thickness, size, false ); if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt ) SetColorMapPS( ReturnLayerColor( LAYER_SHEETNAME ) ); @@ -808,6 +808,8 @@ void PlotSheetStruct( DrawSheetStruct* Struct ) /*Draw texts : FileName */ Text = Struct->GetFileName(); size = wxSize( Struct->m_FileNameSize, Struct->m_FileNameSize ); + thickness = g_DrawDefaultLineThickness; + thickness = Clamp_Text_PenSize( thickness, size, false ); if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt ) SetColorMapPS( ReturnLayerColor( LAYER_SHEETFILENAME ) ); diff --git a/eeschema/plotps.cpp b/eeschema/plotps.cpp index bd9f82f684..9ec47c1241 100644 --- a/eeschema/plotps.cpp +++ b/eeschema/plotps.cpp @@ -230,7 +230,7 @@ void WinEDA_PlotPSFrame::CreateControls() SetFocus(); // make the ESC work m_DefaultLineSizeCtrl = new WinEDA_ValueCtrl( this, _( "Default Line Width" ), - g_PlotLine_Width, + g_DrawDefaultLineThickness, g_UnitMetric, m_DefaultLineSizeCtrlSizer, EESCHEMA_INTERNAL_UNIT ); } @@ -320,9 +320,9 @@ void WinEDA_PlotPSFrame::InitOptVars() Plot_Sheet_Ref = m_Plot_Sheet_Ref->GetValue(); g_PlotPSColorOpt = m_PlotPSColorOption->GetSelection(); PS_SizeSelect = m_SizeOption->GetSelection(); - g_PlotLine_Width = m_DefaultLineSizeCtrl->GetValue(); - if( g_PlotLine_Width < 1 ) - g_PlotLine_Width = 1; + g_DrawDefaultLineThickness = m_DefaultLineSizeCtrl->GetValue(); + if( g_DrawDefaultLineThickness < 1 ) + g_DrawDefaultLineThickness = 1; } @@ -436,7 +436,7 @@ void WinEDA_PlotPSFrame::PlotOneSheetPS( const wxString& FileName, m_MsgBox->AppendText( Line ); InitPlotParametresPS( plot_offset, sheet, g_PlotScaleX, g_PlotScaleY ); - SetDefaultLineWidthPS( g_PlotLine_Width ); + SetDefaultLineWidthPS( g_DrawDefaultLineThickness ); /* Init : */ PrintHeaderPS( PlotOutput, wxT( "EESchema-PS" ), FileName, 1, BBox, wxLANDSCAPE ); @@ -478,7 +478,7 @@ void WinEDA_PlotPSFrame::PlotOneSheetPS( const wxString& FileName, switch( layer ) { case LAYER_NOTES: /* Trace en pointilles */ - SetCurrentLineWidth( -1 ); + SetCurrentLineWidth( g_DrawDefaultLineThickness ); fprintf( PlotOutput, "[50 50] 0 setdash\n" ); Move_Plume( StartPos, 'U' ); Move_Plume( EndPos, 'D' ); @@ -488,16 +488,20 @@ void WinEDA_PlotPSFrame::PlotOneSheetPS( const wxString& FileName, case LAYER_BUS: /* Trait large */ { - fprintf( PlotOutput, "%d setlinewidth\n", g_PlotLine_Width * 3 ); + int thickness = wxRound( g_DrawDefaultLineThickness * 1.4 ); + if ( thickness < 3 ) thickness = 3; + SetCurrentLineWidth( thickness ); + fprintf( PlotOutput, "%d setlinewidth\n", thickness ); Move_Plume( StartPos, 'U' ); Move_Plume( EndPos, 'D' ); Plume( 'Z' ); - fprintf( PlotOutput, "%d setlinewidth\n", g_PlotLine_Width ); + SetCurrentLineWidth( g_DrawDefaultLineThickness ); + fprintf( PlotOutput, "%d setlinewidth\n", g_DrawDefaultLineThickness ); } break; default: - SetCurrentLineWidth( -1 ); + SetCurrentLineWidth( g_DrawDefaultLineThickness ); Move_Plume( StartPos, 'U' ); Move_Plume( EndPos, 'D' ); Plume( 'Z' ); diff --git a/include/gr_basic.h b/include/gr_basic.h index 668aa2389a..7a00df6f31 100644 --- a/include/gr_basic.h +++ b/include/gr_basic.h @@ -38,11 +38,6 @@ typedef enum { /* Line styles for Get/SetLineStyle. */ GR_DASHED_LINE = 3 } GRLineStypeType; -typedef enum { /* Line widths for Get/SetLineStyle. */ - GR_NORM_WIDTH = 1, - GR_THICK_WIDTH = 3 -} GRLineWidthType; - /*******************************************************/ /* Prototypage des fonctions definies dans gr_basic.cc */ diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index b35c5d3bd215d1c5bbbc04d5a06fede36a26b85c..db2bb455bdef9d837028339c74371ea089e66f5e 100644 GIT binary patch delta 57779 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 diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index cc3bdd61e5..1bfabfa0ef 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-30 18:52+0100\n" -"PO-Revision-Date: 2009-05-30 18:56+0100\n" +"POT-Creation-Date: 2009-06-02 10:18+0100\n" +"PO-Revision-Date: 2009-06-02 10:21+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -47,6 +47,7 @@ msgid "Browse Libs modules" msgstr "Liste modules" #: pcbnew/xchgmod.cpp:144 +#: pcbnew/pcbplot.cpp:312 msgid "Close" msgstr "Fermer" @@ -107,37 +108,246 @@ msgstr "Sauver Fichier Composant" msgid "Unable to create file " msgstr "Impossible de créer le fichier " -#: pcbnew/autoplac.cpp:105 -msgid "Footprints NOT LOCKED will be moved" -msgstr "Les modules NON FIXES vont être déplacés" +#: pcbnew/pcbplot.cpp:153 +#: pcbnew/pcbplot.cpp:302 +msgid "Plot" +msgstr "Tracer" -#: pcbnew/autoplac.cpp:110 -msgid "Footprints NOT PLACED will be moved" -msgstr "Les modules NON PLACES vont être déplacés" +#: pcbnew/pcbplot.cpp:200 +msgid "Plot Format" +msgstr "Format de tracé" -#: pcbnew/autoplac.cpp:402 -msgid "No edge PCB, Unknown board size!" -msgstr "Pas de contour PCB, la taille du PCB est inconnue!" +#: pcbnew/pcbplot.cpp:215 +msgid "HPGL Options:" +msgstr "Options HPGL:" -#: pcbnew/autoplac.cpp:423 -msgid "Cols" -msgstr "Cols" +#: pcbnew/pcbplot.cpp:220 +msgid "Pen Size" +msgstr "Diam Plume" -#: pcbnew/autoplac.cpp:425 -msgid "Lines" -msgstr "Lignes" +#: pcbnew/pcbplot.cpp:227 +msgid "Pen Speed (cm/s)" +msgstr "Vitesse Plume ( cm/s )" -#: pcbnew/autoplac.cpp:427 -msgid "Cells." -msgstr "Cells." +#: pcbnew/pcbplot.cpp:231 +msgid "Set pen speed in cm/s" +msgstr "Ajuster Vitesse plume en centimètres par seconde" -#: pcbnew/autoplac.cpp:488 -msgid "Loop" -msgstr "Itération" +#: pcbnew/pcbplot.cpp:233 +msgid "Pen ovr" +msgstr "Recouvrement" -#: pcbnew/autoplac.cpp:642 -msgid "Ok to abort ?" -msgstr "Ok pour arrêter ?" +#: pcbnew/pcbplot.cpp:239 +msgid "Set plot overlay for filling" +msgstr "Ajuste recouvrement des tracés pour les remplissages" + +#: pcbnew/pcbplot.cpp:241 +msgid "Lines Width" +msgstr "Epaiss. Lignes" + +#: pcbnew/pcbplot.cpp:247 +msgid "Set lines width used to plot in sketch mode and plot pads outlines on silk screen layers" +msgstr "Ajuste l'épaisseur des lignes utilisées pour tracer en mode contour et pour les contours des pads sur les couches de sérigraphie" + +#: pcbnew/pcbplot.cpp:252 +msgid "Absolute" +msgstr "Absolu" + +#: pcbnew/pcbplot.cpp:252 +msgid "Auxiliary axis" +msgstr "Axe Auxiliaire" + +#: pcbnew/pcbplot.cpp:255 +msgid "Plot Origin" +msgstr "Origine des Coord de Tracé" + +#: pcbnew/pcbplot.cpp:283 +msgid "X scale adjust" +msgstr "Ajustage Echelle X" + +#: pcbnew/pcbplot.cpp:286 +msgid "Set X scale adjust for exact scale plotting" +msgstr "Ajuster échelle X pour traçage à l'échelle exacte" + +#: pcbnew/pcbplot.cpp:290 +msgid "Y scale adjust" +msgstr "Ajustage Echelle Y" + +#: pcbnew/pcbplot.cpp:293 +msgid "Set Y scale adjust for exact scale plotting" +msgstr "Ajuster échelle Y pour traçage à l'échelle exacte" + +#: pcbnew/pcbplot.cpp:296 +msgid "Plot negative" +msgstr "Tracé en Négatif" + +#: pcbnew/pcbplot.cpp:305 +msgid "Save Options" +msgstr "Sauver Options" + +#: pcbnew/pcbplot.cpp:309 +msgid "Generate drill file" +msgstr "Créer Fichier de perçage" + +#: pcbnew/pcbplot.cpp:358 +msgid "Exclude Edges_Pcb layer" +msgstr "Exclure Couche Contours PCB" + +#: pcbnew/pcbplot.cpp:362 +msgid "Exclude contents of Edges_Pcb layer from all other layers" +msgstr "Exclure les tracés contour PCB des autres couches" + +#: pcbnew/pcbplot.cpp:369 +msgid "Print sheet ref" +msgstr "Imprimer cartouche" + +#: pcbnew/pcbplot.cpp:380 +msgid "Print pads on silkscreen" +msgstr "Pads sur Sérigraphie" + +#: pcbnew/pcbplot.cpp:387 +msgid "Enable/disable print/plot pads on silkscreen layers" +msgstr "Active/désactive tracé des pastilles sur les couches de sérigraphie" + +#: pcbnew/pcbplot.cpp:391 +msgid "Always print pads" +msgstr "Toujours tracer pads" + +#: pcbnew/pcbplot.cpp:396 +msgid "Force print/plot pads on ALL layers" +msgstr "Force le tracé des pastilles sur TOUTES les couches" + +#: pcbnew/pcbplot.cpp:401 +msgid "Print module value" +msgstr "Imprimer Valeur Module" + +#: pcbnew/pcbplot.cpp:405 +msgid "Enable/disable print/plot module value on silkscreen layers" +msgstr "Active/désactive le tracé des textes valeurs des modules sur couches de sérigraphie" + +#: pcbnew/pcbplot.cpp:409 +msgid "Print module reference" +msgstr "Imprimer Référence Module" + +#: pcbnew/pcbplot.cpp:413 +msgid "Enable/disable print/plot module reference on silkscreen layers" +msgstr "Active/désactive le tracé des textes référence des modules sur couches de sérigraphie" + +#: pcbnew/pcbplot.cpp:417 +msgid "Print other module texts" +msgstr "Imprimer autres textes module" + +#: pcbnew/pcbplot.cpp:421 +msgid "Enable/disable print/plot module field texts on silkscreen layers" +msgstr "Active/désactive le tracé des textes des champs des modules sur couches de sérigraphie" + +#: pcbnew/pcbplot.cpp:426 +msgid "Force print invisible texts" +msgstr "Force tracé textes invisibles" + +#: pcbnew/pcbplot.cpp:430 +msgid "Force print/plot module invisible texts on silkscreen layers" +msgstr "Force le tracé des textes invisibles sur couches de sérigraphie" + +#: pcbnew/pcbplot.cpp:435 +msgid "No drill mark" +msgstr "Pas de marque" + +#: pcbnew/pcbplot.cpp:436 +msgid "Small mark" +msgstr "Petite marque" + +#: pcbnew/pcbplot.cpp:437 +msgid "Real drill" +msgstr "Perçage réel" + +#: pcbnew/pcbplot.cpp:441 +msgid "Pads Drill Opt" +msgstr "Options Perçage Pads" + +#: pcbnew/pcbplot.cpp:450 +msgid "Auto scale" +msgstr "Ech. auto" + +#: pcbnew/pcbplot.cpp:451 +msgid "Scale 1" +msgstr "Echelle 1" + +#: pcbnew/pcbplot.cpp:452 +msgid "Scale 1.5" +msgstr "Echelle 1,5" + +#: pcbnew/pcbplot.cpp:453 +msgid "Scale 2" +msgstr "Echelle 2" + +#: pcbnew/pcbplot.cpp:454 +msgid "Scale 3" +msgstr "Echelle 3" + +#: pcbnew/pcbplot.cpp:458 +msgid "Scale Opt" +msgstr "Echelle" + +#: pcbnew/pcbplot.cpp:465 +msgid "Line" +msgstr "Ligne" + +#: pcbnew/pcbplot.cpp:465 +msgid "Filled" +msgstr "Plein" + +#: pcbnew/pcbplot.cpp:466 +msgid "Sketch" +msgstr "Contour" + +#: pcbnew/pcbplot.cpp:468 +msgid "Plot Mode" +msgstr "Mode de Tracé" + +#: pcbnew/pcbplot.cpp:476 +msgid "Plot mirror" +msgstr "Tracé Miroir" + +#: pcbnew/pcbplot.cpp:482 +msgid "Vias on mask" +msgstr "Vias sur masque" + +#: pcbnew/pcbplot.cpp:486 +msgid "Print/plot vias on mask layers. They are in this case not protected" +msgstr "Trace vias sur vernis épargne. Elles seront non protégées" + +#: pcbnew/pcbplot.cpp:490 +msgid "Org = Centre" +msgstr "Org = Centre" + +#: pcbnew/pcbplot.cpp:493 +msgid "Draw origin ( 0,0 ) in sheet center" +msgstr "Origine des tracés au centre de la feuille" + +#: pcbnew/pcbplot.cpp:707 +msgid "Adobe post script files (.ps)|*.ps" +msgstr "Fichiers Adobe post script (.ps)|*.ps" + +#: pcbnew/pcbplot.cpp:714 +msgid "GERBER photo plot files (.pho)|*.pho" +msgstr "Fichiers phottraçage GERBER (.pho)|*.pho" + +#: pcbnew/pcbplot.cpp:719 +msgid "HPGL plot files (.plt)|*.plt" +msgstr "Fichiers Tracé HPGL (.plt)|*.plt" + +#: pcbnew/pcbplot.cpp:726 +msgid "Warning: Scale option set to a very small value" +msgstr "Attention: option d'échelle ajustée à une valeur très petite" + +#: pcbnew/pcbplot.cpp:729 +msgid "Warning: Scale option set to a very large value" +msgstr "Attention: option d'échelle ajustée à une valeur très grande" + +#: pcbnew/pcbplot.cpp:771 +msgid "No layer selected" +msgstr "Pas de couche sélectionnée" #: pcbnew/via_edit.cpp:54 msgid "Incorrect value for Via drill. No via drill change" @@ -377,10 +587,6 @@ msgstr "3:2" msgid "3:3" msgstr "3:3" -#: pcbnew/gendrill.cpp:745 -msgid "HPGL plot files (.plt)|*.plt" -msgstr "Fichiers Tracé HPGL (.plt)|*.plt" - #: pcbnew/gendrill.cpp:750 msgid "PostScript files (.ps)|*.ps" msgstr "Fichiers PostScript (.ps)|*.ps" @@ -1028,243 +1234,6 @@ msgstr "Référence ou Valeur ne peut être effacée" msgid "Delete [%s]" msgstr "Supprimer [%s]" -#: pcbnew/pcbplot.cpp:151 -#: pcbnew/pcbplot.cpp:286 -msgid "Plot" -msgstr "Tracer" - -#: pcbnew/pcbplot.cpp:201 -msgid "Plot Format" -msgstr "Format de tracé" - -#: pcbnew/pcbplot.cpp:215 -msgid "HPGL Options:" -msgstr "Options HPGL:" - -#: pcbnew/pcbplot.cpp:219 -msgid "Pen Size" -msgstr "Diam Plume" - -#: pcbnew/pcbplot.cpp:224 -msgid "Pen Speed (cm/s)" -msgstr "Vitesse Plume ( cm/s )" - -#: pcbnew/pcbplot.cpp:228 -msgid "Set pen speed in cm/s" -msgstr "Ajuster Vitesse plume en centimètres par seconde" - -#: pcbnew/pcbplot.cpp:230 -msgid "Pen ovr" -msgstr "Recouvrement" - -#: pcbnew/pcbplot.cpp:234 -msgid "Set plot overlay for filling" -msgstr "Ajuste recouvrement des tracés pour les remplissages" - -#: pcbnew/pcbplot.cpp:236 -msgid "Lines Width" -msgstr "Epaiss. Lignes" - -#: pcbnew/pcbplot.cpp:240 -msgid "Set lines width used to plot in sketch mode and plot pads outlines on silk screen layers" -msgstr "Ajuste l'épaisseur des lignes utilisées pour tracer en mode contour et pour les contours des pads sur les couches de sérigraphie" - -#: pcbnew/pcbplot.cpp:244 -msgid "Absolute" -msgstr "Absolu" - -#: pcbnew/pcbplot.cpp:244 -msgid "Auxiliary axis" -msgstr "Axe Auxiliaire" - -#: pcbnew/pcbplot.cpp:247 -msgid "Plot Origin" -msgstr "Origine des Coord de Tracé" - -#: pcbnew/pcbplot.cpp:271 -msgid "X scale adjust" -msgstr "Ajustage Echelle X" - -#: pcbnew/pcbplot.cpp:273 -msgid "Set X scale adjust for exact scale plotting" -msgstr "Ajuster échelle X pour traçage à l'échelle exacte" - -#: pcbnew/pcbplot.cpp:276 -msgid "Y scale adjust" -msgstr "Ajustage Echelle Y" - -#: pcbnew/pcbplot.cpp:278 -msgid "Set Y scale adjust for exact scale plotting" -msgstr "Ajuster échelle Y pour traçage à l'échelle exacte" - -#: pcbnew/pcbplot.cpp:280 -msgid "Plot negative" -msgstr "Tracé en Négatif" - -#: pcbnew/pcbplot.cpp:289 -msgid "Save Options" -msgstr "Sauver Options" - -#: pcbnew/pcbplot.cpp:292 -msgid "Generate drill file" -msgstr "Créer Fichier de perçage" - -#: pcbnew/pcbplot.cpp:338 -msgid "Exclude Edges_Pcb layer" -msgstr "Exclure Couche Contours PCB" - -#: pcbnew/pcbplot.cpp:342 -msgid "Exclude contents of Edges_Pcb layer from all other layers" -msgstr "Exclure les tracés contour PCB des autres couches" - -#: pcbnew/pcbplot.cpp:348 -msgid "Print sheet ref" -msgstr "Imprimer cartouche" - -#: pcbnew/pcbplot.cpp:358 -msgid "Print pads on silkscreen" -msgstr "Pads sur Sérigraphie" - -#: pcbnew/pcbplot.cpp:363 -msgid "Enable/disable print/plot pads on silkscreen layers" -msgstr "Active/désactive tracé des pastilles sur les couches de sérigraphie" - -#: pcbnew/pcbplot.cpp:367 -msgid "Always print pads" -msgstr "Toujours tracer pads" - -#: pcbnew/pcbplot.cpp:371 -msgid "Force print/plot pads on ALL layers" -msgstr "Force le tracé des pastilles sur TOUTES les couches" - -#: pcbnew/pcbplot.cpp:375 -msgid "Print module value" -msgstr "Imprimer Valeur Module" - -#: pcbnew/pcbplot.cpp:379 -msgid "Enable/disable print/plot module value on silkscreen layers" -msgstr "Active/désactive le tracé des textes valeurs des modules sur couches de sérigraphie" - -#: pcbnew/pcbplot.cpp:382 -msgid "Print module reference" -msgstr "Imprimer Référence Module" - -#: pcbnew/pcbplot.cpp:386 -msgid "Enable/disable print/plot module reference on silkscreen layers" -msgstr "Active/désactive le tracé des textes référence des modules sur couches de sérigraphie" - -#: pcbnew/pcbplot.cpp:390 -msgid "Print other module texts" -msgstr "Imprimer autres textes module" - -#: pcbnew/pcbplot.cpp:394 -msgid "Enable/disable print/plot module field texts on silkscreen layers" -msgstr "Active/désactive le tracé des textes des champs des modules sur couches de sérigraphie" - -#: pcbnew/pcbplot.cpp:399 -msgid "Force print invisible texts" -msgstr "Force tracé textes invisibles" - -#: pcbnew/pcbplot.cpp:403 -msgid "Force print/plot module invisible texts on silkscreen layers" -msgstr "Force le tracé des textes invisibles sur couches de sérigraphie" - -#: pcbnew/pcbplot.cpp:407 -msgid "No drill mark" -msgstr "Pas de marque" - -#: pcbnew/pcbplot.cpp:407 -msgid "Small mark" -msgstr "Petite marque" - -#: pcbnew/pcbplot.cpp:407 -msgid "Real drill" -msgstr "Perçage réel" - -#: pcbnew/pcbplot.cpp:409 -msgid "Pads Drill Opt" -msgstr "Options Perçage Pads" - -#: pcbnew/pcbplot.cpp:416 -msgid "Auto scale" -msgstr "Ech. auto" - -#: pcbnew/pcbplot.cpp:416 -msgid "Scale 1" -msgstr "Echelle 1" - -#: pcbnew/pcbplot.cpp:416 -msgid "Scale 1.5" -msgstr "Echelle 1,5" - -#: pcbnew/pcbplot.cpp:416 -msgid "Scale 2" -msgstr "Echelle 2" - -#: pcbnew/pcbplot.cpp:416 -msgid "Scale 3" -msgstr "Echelle 3" - -#: pcbnew/pcbplot.cpp:419 -msgid "Scale Opt" -msgstr "Echelle" - -#: pcbnew/pcbplot.cpp:425 -msgid "Line" -msgstr "Ligne" - -#: pcbnew/pcbplot.cpp:425 -msgid "Filled" -msgstr "Plein" - -#: pcbnew/pcbplot.cpp:425 -msgid "Sketch" -msgstr "Contour" - -#: pcbnew/pcbplot.cpp:427 -msgid "Plot Mode" -msgstr "Mode de Tracé" - -#: pcbnew/pcbplot.cpp:435 -msgid "Plot mirror" -msgstr "Tracé Miroir" - -#: pcbnew/pcbplot.cpp:441 -msgid "Vias on mask" -msgstr "Vias sur masque" - -#: pcbnew/pcbplot.cpp:445 -msgid "Print/plot vias on mask layers. They are in this case not protected" -msgstr "Trace vias sur vernis épargne. Elles seront non protégées" - -#: pcbnew/pcbplot.cpp:449 -msgid "Org = Centre" -msgstr "Org = Centre" - -#: pcbnew/pcbplot.cpp:452 -msgid "Draw origin ( 0,0 ) in sheet center" -msgstr "Origine des tracés au centre de la feuille" - -#: pcbnew/pcbplot.cpp:679 -msgid "Adobe post script files (.ps)|*.ps" -msgstr "Fichiers Adobe post script (.ps)|*.ps" - -#: pcbnew/pcbplot.cpp:686 -msgid "GERBER photo plot files (.pho)|*.pho" -msgstr "Fichiers phottraçage GERBER (.pho)|*.pho" - -#: pcbnew/pcbplot.cpp:697 -msgid "Warning: Scale option set to a very small value" -msgstr "Attention: option d'échelle ajustée à une valeur très petite" - -#: pcbnew/pcbplot.cpp:699 -msgid "Warning: Scale option set to a very large value" -msgstr "Attention: option d'échelle ajustée à une valeur très grande" - -#: pcbnew/pcbplot.cpp:739 -msgid "No layer selected" -msgstr "Pas de couche sélectionnée" - #: pcbnew/move_or_drag_track.cpp:829 msgid "Unable to drag this segment: too many segments connected" msgstr "Impossible de dragger ce segment: trop de segments connectés" @@ -2524,6 +2493,38 @@ msgstr "Angle" msgid "Segment" msgstr "Segment" +#: pcbnew/autoplac.cpp:105 +msgid "Footprints NOT LOCKED will be moved" +msgstr "Les modules NON FIXES vont être déplacés" + +#: pcbnew/autoplac.cpp:110 +msgid "Footprints NOT PLACED will be moved" +msgstr "Les modules NON PLACES vont être déplacés" + +#: pcbnew/autoplac.cpp:403 +msgid "No edge PCB, Unknown board size!" +msgstr "Pas de contour PCB, la taille du PCB est inconnue!" + +#: pcbnew/autoplac.cpp:424 +msgid "Cols" +msgstr "Cols" + +#: pcbnew/autoplac.cpp:426 +msgid "Lines" +msgstr "Lignes" + +#: pcbnew/autoplac.cpp:428 +msgid "Cells." +msgstr "Cells." + +#: pcbnew/autoplac.cpp:489 +msgid "Loop" +msgstr "Itération" + +#: pcbnew/autoplac.cpp:643 +msgid "Ok to abort ?" +msgstr "Ok pour arrêter ?" + #: pcbnew/gen_drill_report_files.cpp:392 msgid "" " Drill map: Too many diameter values to draw to draw one symbol per drill value (max 13)\n" @@ -6149,7 +6150,7 @@ msgstr "Erreur en création de " msgid "Failed to create file " msgstr "Impossible de créer le fichier " -#: eeschema/eeschema.cpp:146 +#: eeschema/eeschema.cpp:152 msgid "Eeschema is already running, Continue?" msgstr "Eeschema est en cours d'exécution. Continuer ?" @@ -6301,11 +6302,11 @@ msgstr "Force affichage des pins invisibles" msgid "HV orientation for Wires and Bus" msgstr "Force direction H, V et X pour les fils et bus" -#: eeschema/libfield.cpp:248 +#: eeschema/libfield.cpp:250 msgid "Edit field" msgstr "Editer Champ" -#: eeschema/libfield.cpp:265 +#: eeschema/libfield.cpp:267 msgid "" "This name is an existing alias of the component\n" "Aborting" @@ -6313,7 +6314,7 @@ msgstr "" "Ce nom est celui d'un alias existant du composant\n" "Abandon." -#: eeschema/libfield.cpp:285 +#: eeschema/libfield.cpp:287 msgid "No new text: no change" msgstr "Pas de nouveau texte: pas de changements" @@ -6656,7 +6657,6 @@ msgid "Footprint " msgstr "Empreinte: " #: eeschema/onrightclick.cpp:301 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:73 msgid "Convert" msgstr "Convert" @@ -6666,7 +6666,6 @@ msgid "Unit %d %c" msgstr "Unité %d %c" #: eeschema/onrightclick.cpp:314 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:26 msgid "Unit" msgstr "Unité" @@ -7302,6 +7301,46 @@ msgstr "Exporter le symbole" msgid "Save Symbol in [%s]" msgstr "Symbole sauvé en [%s]" +#: eeschema/class_pin.cpp:29 +msgid "Pin" +msgstr "Pin" + +#: eeschema/class_pin.cpp:991 +msgid "PinName" +msgstr "Nom Pin" + +#: eeschema/class_pin.cpp:1000 +msgid "PinNum" +msgstr "Num Pin" + +#: eeschema/class_pin.cpp:1004 +msgid "PinType" +msgstr "Type Pin" + +#: eeschema/class_pin.cpp:1010 +msgid "no" +msgstr "non" + +#: eeschema/class_pin.cpp:1012 +msgid "yes" +msgstr "oui" + +#: eeschema/class_pin.cpp:1024 +msgid "Up" +msgstr "Haut" + +#: eeschema/class_pin.cpp:1028 +msgid "Down" +msgstr "Bas" + +#: eeschema/class_pin.cpp:1032 +msgid "Left" +msgstr "Gauche" + +#: eeschema/class_pin.cpp:1036 +msgid "Right" +msgstr "Droite" + #: eeschema/plotps.cpp:177 msgid "Page Size A4" msgstr "Feuille A4" @@ -7475,6 +7514,8 @@ msgstr "" "Pour les portes, ceci est la conversion \"De Morgan\"" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:79 +#: eeschema/dialog_create_component.cpp:178 +#: eeschema/dialog_edit_component_in_lib.cpp:160 msgid "Parts are locked" msgstr "Les parts sont verrouillées" @@ -7515,10 +7556,12 @@ msgid "Check if you want this field's text rotated 90 degrees" 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_label_base.cpp:43 msgid "Bold" msgstr "Gras" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 +#: eeschema/dialog_edit_label_base.cpp:43 msgid "Bold Italic" msgstr "Gras Italique" @@ -7872,22 +7915,6 @@ msgstr "Vous devez fournir un nom pour ce composant" msgid "Enter the text to be used within the schematic" msgstr "Enter le texte qui doit être utilisé dans la schématique" -#: eeschema/dialog_edit_label_base.cpp:37 -msgid "Right" -msgstr "Droite" - -#: eeschema/dialog_edit_label_base.cpp:37 -msgid "Up" -msgstr "Haut" - -#: eeschema/dialog_edit_label_base.cpp:37 -msgid "Left" -msgstr "Gauche" - -#: eeschema/dialog_edit_label_base.cpp:37 -msgid "Down" -msgstr "Bas" - #: eeschema/dialog_edit_label_base.cpp:39 msgid "Direction" msgstr "Direction" @@ -8043,14 +8070,6 @@ msgstr "Non Défini" msgid "All" msgstr "Tout" -#: eeschema/classes_body_items.cpp:77 -msgid "no" -msgstr "non" - -#: eeschema/classes_body_items.cpp:79 -msgid "yes" -msgstr "oui" - #: eeschema/classes_body_items.cpp:132 #, c-format msgid "arc only had %d parameters of the required 8" @@ -8058,17 +8077,17 @@ msgstr "l'arc a seulement %d paramètres sur les 8 requis" #: eeschema/classes_body_items.cpp:331 #: eeschema/classes_body_items.cpp:451 -#: eeschema/classes_body_items.cpp:585 -#: eeschema/classes_body_items.cpp:691 -#: eeschema/classes_body_items.cpp:775 -#: eeschema/classes_body_items.cpp:1012 +#: eeschema/classes_body_items.cpp:587 +#: eeschema/classes_body_items.cpp:693 +#: eeschema/classes_body_items.cpp:777 +#: eeschema/classes_body_items.cpp:1014 msgid "Line width" msgstr "Epaisseur ligne" #: eeschema/classes_body_items.cpp:336 #: eeschema/classes_body_items.cpp:460 -#: eeschema/classes_body_items.cpp:780 -#: eeschema/classes_body_items.cpp:1017 +#: eeschema/classes_body_items.cpp:782 +#: eeschema/classes_body_items.cpp:1019 msgid "Bounding box" msgstr "Rectange dencadrement" @@ -8086,35 +8105,35 @@ msgstr "Rayon" msgid "text only had %d parameters of the required 8" msgstr "le texte a seulement %d paramètres sur les 8 requis" -#: eeschema/classes_body_items.cpp:593 +#: eeschema/classes_body_items.cpp:595 msgid "Rectangle" msgstr "Rectangle" -#: eeschema/classes_body_items.cpp:616 +#: eeschema/classes_body_items.cpp:618 #, c-format msgid "rectangle only had %d parameters of the required 7" msgstr "le rectangle a seulement %d paramètres sur les 7 requis" -#: eeschema/classes_body_items.cpp:789 +#: eeschema/classes_body_items.cpp:791 msgid "PolyLine" msgstr "PolyLigne" -#: eeschema/classes_body_items.cpp:821 +#: eeschema/classes_body_items.cpp:823 #, c-format msgid "polyline only had %d parameters of the required 4" msgstr "la polyligne a seulement %d paramètres sur les 4 requis" -#: eeschema/classes_body_items.cpp:826 +#: eeschema/classes_body_items.cpp:828 #, c-format msgid "polyline count parameter %d is invalid" msgstr "le nombre de paramètes (%d) de la polyligne est mauvais" -#: eeschema/classes_body_items.cpp:842 +#: eeschema/classes_body_items.cpp:844 #, c-format msgid "polyline point %d X position not defined" msgstr "la position X du point %d de la polyligne n'est pas définie" -#: eeschema/classes_body_items.cpp:849 +#: eeschema/classes_body_items.cpp:851 #, c-format msgid "polyline point %d Y position not defined" msgstr "la position Y du point %d de la polyligne n'est pas définie" @@ -8470,23 +8489,7 @@ msgstr "" msgid "User defined search path" msgstr "Chemin de recherche défini par l'utilisateur" -#: eeschema/class_pin.cpp:29 -msgid "Pin" -msgstr "Pin" - -#: eeschema/class_pin.cpp:984 -msgid "PinName" -msgstr "Nom Pin" - -#: eeschema/class_pin.cpp:993 -msgid "PinNum" -msgstr "Num Pin" - -#: eeschema/class_pin.cpp:997 -msgid "PinType" -msgstr "Type Pin" - -#: eeschema/class_libentry_fields.cpp:343 +#: eeschema/class_libentry_fields.cpp:345 msgid "Datasheet" msgstr "Documentation" @@ -8831,6 +8834,16 @@ msgstr "RefLib" msgid "Lib" msgstr "Lib" +#: eeschema/dialog_SVG_print_base.cpp:25 +#: eeschema/dialog_print_using_printer_base.cpp:25 +msgid "Default Pen Size" +msgstr "Dimension Plume par Défaut" + +#: eeschema/dialog_SVG_print_base.cpp:30 +#: eeschema/dialog_print_using_printer_base.cpp:30 +msgid "Selection of the default pen thickness used to draw items, when their thickness is set to 0." +msgstr "Valeur de la dimension de la plume utilisée par défaut pour tracer les éléments, lorsque leur épaisseur est à 0." + #: eeschema/dialog_SVG_print_base.cpp:53 msgid "Print Current" msgstr "Imprimer Page Courante" @@ -9372,16 +9385,6 @@ msgstr " <%s>ne semble pas être une librairie de composants de Kicad valide." msgid "<%s> is an old version component file." msgstr "<%s> est un fichier composant de version ancienne." -#: cvpcb/loadcmp.cpp:73 -#, c-format -msgid "<%s> is not a valid Kicad PCB foot print library." -msgstr "<%s> in'est pas un fichier de module PCB Kicad valide." - -#: cvpcb/loadcmp.cpp:136 -#, c-format -msgid "Module %s not found" -msgstr "Module %s non trouvé" - #: cvpcb/genorcad.cpp:141 #, c-format msgid "%s %s pin %s : Different Nets" @@ -9402,6 +9405,16 @@ msgstr "Modules (Tous): %d" msgid "Footprints (filtered): %d" msgstr "Modules (filtrés): %d" +#: cvpcb/loadcmp.cpp:74 +#, c-format +msgid "<%s> is not a valid Kicad PCB foot print library." +msgstr "<%s> in'est pas un fichier de module PCB Kicad valide." + +#: cvpcb/loadcmp.cpp:137 +#, c-format +msgid "Module %s not found" +msgstr "Module %s non trouvé" + #: cvpcb/autosel.cpp:93 #, c-format msgid "Footprint alias library file <%s> could not be found in the default search paths." @@ -9939,18 +9952,6 @@ msgstr "Exécuter le Script Python" msgid "Ok to delete block ?" msgstr "Ok pour effacer le bloc" -#: gerbview/export_to_pcbnew.cpp:44 -msgid "None of the Gerber layers contain any data" -msgstr "Aucune couche Gerber ne contient des données" - -#: gerbview/export_to_pcbnew.cpp:55 -msgid "Board file name:" -msgstr "Nom Fichier C.I.:" - -#: gerbview/export_to_pcbnew.cpp:72 -msgid "Ok to change the existing file ?" -msgstr "D'accord pour changer le fichier existant ?" - #: gerbview/gerberframe.cpp:183 msgid "Layer modified, Continue ?" msgstr "Couche modifiée, Continuer ?" @@ -9995,11 +9996,11 @@ msgstr "Fichiers Gerber (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GB #: gerbview/files.cpp:142 msgid "Top layer (*.GTL)|*.GTL;*.gtl|" -msgstr "" +msgstr "Couche composant" #: gerbview/files.cpp:143 msgid "Bottom layer (*.GBL)|*.GBL;*.gbl|" -msgstr "" +msgstr "Couche cuivre" #: gerbview/files.cpp:144 msgid "Bottom solder resist (*.GBS)|*.GBS;*.gbs|" @@ -10140,6 +10141,18 @@ msgstr "Couche " msgid "Do not export" msgstr "Ne pas exporter" +#: gerbview/export_to_pcbnew.cpp:44 +msgid "None of the Gerber layers contain any data" +msgstr "Aucune couche Gerber ne contient des données" + +#: gerbview/export_to_pcbnew.cpp:55 +msgid "Board file name:" +msgstr "Nom Fichier C.I.:" + +#: gerbview/export_to_pcbnew.cpp:72 +msgid "Ok to change the existing file ?" +msgstr "D'accord pour changer le fichier existant ?" + #: gerbview/onrightclick.cpp:54 msgid "Copy Block (shift mouse)" msgstr "Copie Bloc (shift souris)"