From ce9db78c959945f783373a23054186348e3380c2 Mon Sep 17 00:00:00 2001 From: charras Date: Sat, 30 May 2009 16:06:01 +0000 Subject: [PATCH] Cleaned and optimized code about new hershey fonts and bold texts handling (see changelog) --- CHANGELOG.txt | 10 + common/drawtxt.cpp | 134 +- common/gr_basic.cpp | 6 +- common/worksheet.cpp | 1284 ++++++------ eeschema/class_text-label.cpp | 8 +- eeschema/edit_label.cpp | 8 + ...from_file_schematic_items_descriptions.cpp | 19 +- include/HersheyCyrillic.h | 70 + include/HersheySimplexRoman_sans_normal.h | 102 + include/base_struct.h | 14 +- include/drawtxt.h | 24 +- include/hershey_fonts.h | 271 +-- include/worksheet.h | 125 +- internat/fr/kicad.mo | Bin 185021 -> 185492 bytes internat/fr/kicad.po | 1763 +++++------------ pcbnew/class_pad_draw_functions.cpp | 2 + pcbnew/class_pcb_text.cpp | 10 +- pcbnew/class_text_mod.cpp | 15 +- pcbnew/dialog_edit_module_text.cpp | 11 +- pcbnew/dialog_pcb_text_properties.cpp | 12 +- pcbnew/edtxtmod.cpp | 3 + 21 files changed, 1584 insertions(+), 2307 deletions(-) create mode 100644 include/HersheyCyrillic.h create mode 100644 include/HersheySimplexRoman_sans_normal.h diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 0bb3b93b7f..079e8ede7f 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,16 @@ 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 +================================================================================ +++All: + Cleaned and optimized code about new hershey fonts and bold texts handling. + Bold texts use now the same font as normal texts. + Only the pen size used to draw them is bigger. + - The max pen size allowed depending on texts sizes is now tested + when loading boards and modules, and clamped if too large. + + 2009-may-28 UPDATE Jean-Pierre Charras ================================================================================ diff --git a/common/drawtxt.cpp b/common/drawtxt.cpp index e2b8e34bb0..eb432de128 100644 --- a/common/drawtxt.cpp +++ b/common/drawtxt.cpp @@ -19,13 +19,56 @@ #define EDA_DRAWBASE #include "hershey_fonts.h" + /* factor used to calculate actual size of shapes from hershey fonts (could be adjusted depending on the font name) * Its value is choosen in order to have letters like M, P .. vertical size equal to the vertical char size parameter * Of course some shapes can be bigger or smaller than the vertical char size parameter -*/ -#define HERSHEY_SCALE_FACTOR 1/21.0 + */ +#define HERSHEY_SCALE_FACTOR 1 / 21.0 double s_HerscheyScaleFactor = HERSHEY_SCALE_FACTOR; + + +/** Function GetPensizeForBold + * @return the "best" value for a pen size to draw/plot a bold text + * @param aTextSize = the char size (height or width) + */ +int GetPenSizeForBold( int aTextSize ) +{ + return wxRound( aTextSize / 5.0 ); +} + + +/** Function Clamp_Text_PenSize + *As a rule, pen width should not be >1/4em, otherwise the character + * will be cluttered up in its own fatness + * so pen width max is aSize/4 for bold text, and aSize/6 for normal text + * The "best" pen width is aSize/5 for bold texts, + * so the clamp is consistant with bold option. + * @param aPenSize = the pen size to clamp + * @param aSize the char size (height or width) + * @param aBold = true if text accept bold pen size + * @return the max pen size allowed + */ +int Clamp_Text_PenSize( int aPenSize, int aSize, bool aBold ) +{ + int penSize = aPenSize; + double scale = aBold ? 4.0 : 6.0; + int maxWidth = wxRound( ABS( aSize ) / scale ); + + if( penSize > maxWidth ) + penSize = maxWidth; + return penSize; +} + +int Clamp_Text_PenSize( int aPenSize, wxSize aSize, bool aBold ) +{ + int size = MIN( ABS( aSize.x ), ABS( aSize.y ) ); + return Clamp_Text_PenSize(aPenSize, size, aBold);; +} + + + /* Functions to draw / plot a string. * texts have only one line. * They can be in italic. @@ -53,9 +96,15 @@ int NegableTextLength( const wxString& aText ) } -static const char* get_hershey_recipe( int AsciiCode, bool bold ) -{ +/* Function GetHersheyShapeDescription() + * return a pointer to the shape corresponding to unicode value AsciiCode + * Note we use the same font for Bold and Normal texts + * because kicad handles a variable pen size to do that + * that gives better results in XOR draw mode. + */ +static const char* GetHersheyShapeDescription( int AsciiCode ) +{ #if defined(KICAD_CYRILLIC) AsciiCode &= 0x7FF; if( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr @@ -77,18 +126,11 @@ static const char* get_hershey_recipe( int AsciiCode, bool bold ) AsciiCode = 32; /* Clamp control chars */ AsciiCode -= 32; - if( bold ) - { - return hershey_duplex[AsciiCode]; - } - else - { - return hershey_simplex[AsciiCode]; - } + return hershey_simplex[AsciiCode]; } -int ReturnGraphicTextWidth( const wxString& aText, int aXSize, bool italic, bool bold ) +int ReturnGraphicTextWidth( const wxString& aText, int aXSize, bool aItalic, bool aWidth ) { int tally = 0; int char_count = aText.length(); @@ -102,7 +144,7 @@ int ReturnGraphicTextWidth( const wxString& aText, int aXSize, bool italic, bool continue; } - const char* ptcar = get_hershey_recipe( AsciiCode, bold ); + const char* ptcar = GetHersheyShapeDescription( AsciiCode ); /* Get metrics */ int xsta = *ptcar++ - 'R'; int xsto = *ptcar++ - 'R'; @@ -110,7 +152,7 @@ int ReturnGraphicTextWidth( const wxString& aText, int aXSize, bool italic, bool } /* Italic correction, 1/8em */ - if( italic ) + if( aItalic ) { tally += wxRound( aXSize * 0.125 ); } @@ -149,35 +191,11 @@ static void DrawGraphicTextPline( } +/* Helper function for texts with over bar + */ static int overbar_position( int size_v, int thickness ) { - return wxRound( ((double) size_v * 26 * s_HerscheyScaleFactor ) + ((double) thickness * 1.5) ); -} - - -static int clamp_text_pen_size( int width, int size_h, bool bold ) -{ - /* As a rule, pen width should not be >1/8em, otherwise the character - * will be cluttered up in its own fatness */ - /* XXX @todo: Should be handled in the UI and gerber plotter too */ - int maxWidth = wxRound( ABS( size_h ) / 8.0 ); - - if( width > maxWidth ) - { - width = maxWidth; - } - - /* Special rule for bold text: the width should be at least 1.42 times the - * quantum unit, otherwise the line pairs will be visible! */ - if( bold ) - { - int minWidth = wxRound( ABS( size_h ) * 1.42 * s_HerscheyScaleFactor + 0.5 ); - if( width < minWidth ) - { - width = minWidth; - } - } - return width; + return wxRound( ( (double) size_v * 26 * s_HerscheyScaleFactor ) + ( (double) thickness * 1.5 ) ); } @@ -192,10 +210,11 @@ static int clamp_text_pen_size( int width, int size_h, bool bold ) * @param aSize = text size (size.x or size.y can be < 0 for mirrored texts) * @param aH_justify = horizontal justification (Left, center, right) * @param aV_justify = vertical justification (bottom, center, top) - * @param aWidth = line width (pen width) (default = 0) + * @param aWidth = line width (pen width) (use default width if aWidth = 0) * if width < 0 : draw segments in sketch mode, width = abs(width) + * Use a value min(aSize.x, aSize.y) / 5 for a bold text * @param aItalic = true to simulate an italic font - * @param aBold = true to use a bold font + * @param aBold = true to use a bold font. Useful only with default width value (aWidth = 0) * @param aCallback() = function called (if non null) to draw each segment. * used to draw 3D texts or for plotting, NULL for normal drawings */ @@ -233,6 +252,9 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, size_h = aSize.x; /* PLEASE NOTE: H is for HORIZONTAL not for HEIGHT */ size_v = aSize.y; + if( aWidth == 0 && aBold ) // Use default values if aWidth == 0 + aWidth = GetPenSizeForBold( MIN( aSize.x, aSize.y ) ); + if( aWidth < 0 ) { aWidth = -aWidth; @@ -241,15 +263,13 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, if( size_h < 0 ) // text is mirrored using size.x < 0 (mirror / Y axis) italic_reverse = true; - aWidth = clamp_text_pen_size( aWidth, size_h, aBold ); - char_count = NegableTextLength( aText ); if( char_count == 0 ) return; current_char_pos = aPos; - dx = ReturnGraphicTextWidth( aText, size_h, aItalic, aBold ); + dx = ReturnGraphicTextWidth( aText, size_h, aItalic, aWidth ); dy = size_v; /* Do not draw the text if out of draw area! */ @@ -381,7 +401,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, AsciiCode = aText.GetChar( ptr + overbars ); - const char* ptcar = get_hershey_recipe( AsciiCode, aBold ); + const char* ptcar = GetHersheyShapeDescription( AsciiCode ); /* Get metrics */ int xsta = *ptcar++ - 'R'; int xsto = *ptcar++ - 'R'; @@ -468,7 +488,7 @@ static bool s_Plotbegin; // Flag to init plot * The call back function */ /****************************************************************/ -static void s_Callback_plot( int x0, int y0, int xf, int yf ) +static void s_Callback_plot( int x0, int y0, int xf, int yf ) /****************************************************************/ { static wxPoint PenLastPos; @@ -514,8 +534,9 @@ static void s_Callback_plot( int x0, int y0, int xf, int yf ) * @param aV_justify = vertical justification (bottom, center, top) * @param aWidth = line width (pen width) (default = 0) * if width < 0 : draw segments in sketch mode, width = abs(width) + * Use a value min(aSize.x, aSize.y) / 5 for a bold text * @param aItalic = true to simulate an italic font - * @param aBold = true to use a bold font + * @param aBold = true to use a bold font Useful only with default width value (aWidth = 0) */ /******************************************************************************************/ void PlotGraphicText( int aFormat_plot, @@ -531,14 +552,8 @@ void PlotGraphicText( int aFormat_plot, bool aBold ) /******************************************************************************************/ { - if( aWidth > 0 ) - { - aWidth = clamp_text_pen_size( aWidth, aSize.x, aBold ); - } - else - { - aWidth = -clamp_text_pen_size( -aWidth, aSize.x, aBold ); - } + if( aWidth == 0 && aBold ) // Use default values if aWidth == 0 + aWidth = GetPenSizeForBold( MIN( aSize.x, aSize.y ) ); // Initialise the actual function used to plot lines: switch( aFormat_plot ) @@ -568,7 +583,8 @@ void PlotGraphicText( int aFormat_plot, DrawGraphicText( NULL, NULL, aPos, aColor, aText, aOrient, aSize, aH_justify, aV_justify, - aWidth, aItalic, aBold, + aWidth, aItalic, + aBold, s_Callback_plot ); /* end text : pen UP ,no move */ diff --git a/common/gr_basic.cpp b/common/gr_basic.cpp index 8d526b4b93..91f36b5601 100644 --- a/common/gr_basic.cpp +++ b/common/gr_basic.cpp @@ -325,11 +325,7 @@ void GRSetBrush( wxDC* DC, int Color, int fill ) if( ForceBlackPen ) Color = BLACK; wxBrush DrawBrush; - DrawBrush.SetColour( - ColorRefs[Color].m_Red, - ColorRefs[Color].m_Green, - ColorRefs[Color].m_Blue - ); + DrawBrush.SetColour( MakeColour( Color ) ); if( fill ) DrawBrush.SetStyle( wxSOLID ); diff --git a/common/worksheet.cpp b/common/worksheet.cpp index 94499595f3..fe181f7e80 100644 --- a/common/worksheet.cpp +++ b/common/worksheet.cpp @@ -19,901 +19,901 @@ Ki_WorkSheetData WS_Date = { - WS_DATE, - &WS_Licence, - BLOCK_DATE_X, BLOCK_DATE_Y, - 0,0, + WS_DATE, + &WS_Licence, + BLOCK_DATE_X, BLOCK_DATE_Y, + 0, 0, #if defined(KICAD_GOST) - NULL, NULL + NULL, NULL #else - wxT("Date: "), NULL + wxT( "Date: " ),NULL #endif }; Ki_WorkSheetData WS_Licence = { - WS_KICAD_VERSION, - &WS_Revision, - BLOCK_KICAD_VERSION_X, BLOCK_KICAD_VERSION_Y, - 0,0, - NULL, NULL + WS_KICAD_VERSION, + &WS_Revision, + BLOCK_KICAD_VERSION_X,BLOCK_KICAD_VERSION_Y, + 0, 0, + NULL, NULL }; Ki_WorkSheetData WS_Revision = { - WS_REV, - &WS_SizeSheet, + WS_REV, + &WS_SizeSheet, #if defined(KICAD_GOST) - STAMP_X_185 - 30, STAMP_Y_30 + 90, + STAMP_X_185 - 30,STAMP_Y_30 + 90, #else - BLOCK_REV_X, BLOCK_REV_Y, + BLOCK_REV_X, BLOCK_REV_Y, #endif - 0,0, + 0, 0, #if defined(KICAD_GOST) - NULL, NULL + NULL, NULL #else - wxT("Rev: "), NULL + wxT( "Rev: " ), NULL #endif }; Ki_WorkSheetData WS_SizeSheet = { - WS_SIZESHEET, + WS_SIZESHEET, #if defined(KICAD_GOST) - &WS_Title, - BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y, - 0,0, - NULL, NULL + &WS_Title, + BLOCK_SIZE_SHEET_X,BLOCK_SIZE_SHEET_Y, + 0, 0, + NULL, NULL }; #else -&WS_IdentSheet, - BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y, - 0,0, - wxT("Size: "),NULL - }; + &WS_IdentSheet, + BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y, + 0, 0, + wxT( "Size: " ), NULL +}; Ki_WorkSheetData WS_IdentSheet = { - WS_IDENTSHEET, - &WS_Title, - BLOCK_ID_SHEET_X, BLOCK_ID_SHEET_Y, - 0,0, - wxT("Id: "),NULL + WS_IDENTSHEET, + &WS_Title, + BLOCK_ID_SHEET_X,BLOCK_ID_SHEET_Y, + 0, 0, + wxT( "Id: " ), NULL }; #endif Ki_WorkSheetData WS_Title = { - WS_TITLE, - &WS_SheetFilename, - BLOCK_TITLE_X, BLOCK_TITLE_Y, - 0,0, + WS_TITLE, + &WS_SheetFilename, + BLOCK_TITLE_X, BLOCK_TITLE_Y, + 0, 0, #if defined(KICAD_GOST) - NULL, NULL + NULL, NULL #else - wxT("Title: "),NULL + wxT( "Title: " ), NULL #endif }; Ki_WorkSheetData WS_SheetFilename = { - WS_FILENAME, - &WS_FullSheetName, - BLOCK_FILENAME_X, BLOCK_FILENAME_Y, - 0,0, - wxT("File: "),NULL + WS_FILENAME, + &WS_FullSheetName, + BLOCK_FILENAME_X, BLOCK_FILENAME_Y, + 0, 0, + wxT( "File: " ), NULL }; Ki_WorkSheetData WS_FullSheetName = { - WS_FULLSHEETNAME, - &WS_Company, - BLOCK_FULLSHEETNAME_X, BLOCK_FULLSHEETNAME_Y, - 0,0, - wxT("Sheet: "),NULL + WS_FULLSHEETNAME, + &WS_Company, + BLOCK_FULLSHEETNAME_X,BLOCK_FULLSHEETNAME_Y, + 0, 0, + wxT( "Sheet: " ), NULL }; Ki_WorkSheetData WS_Company = { - WS_COMPANY_NAME, - &WS_Comment1, - BLOCK_COMMENT_X, BLOCK_COMPANY_Y, - 0,0, - NULL,NULL + WS_COMPANY_NAME, + &WS_Comment1, + BLOCK_COMMENT_X,BLOCK_COMPANY_Y, + 0, 0, + NULL, NULL }; Ki_WorkSheetData WS_Comment1 = { - WS_COMMENT1, - &WS_Comment2, + WS_COMMENT1, + &WS_Comment2, #if defined(KICAD_GOST) - STAMP_OX, STAMP_OY, - STAMP_OX, 0, + STAMP_OX, STAMP_OY, + STAMP_OX, 0, #else - BLOCK_COMMENT_X, BLOCK_COMMENT1_Y, - 0,0, + BLOCK_COMMENT_X,BLOCK_COMMENT1_Y, + 0, 0, #endif - NULL,NULL + NULL, NULL }; Ki_WorkSheetData WS_Comment2 = { - WS_COMMENT2, - &WS_Comment3, + WS_COMMENT2, + &WS_Comment3, #if defined(KICAD_GOST) - STAMP_OX, STAMP_OY, - STAMP_OX, 0, + STAMP_OX, STAMP_OY, + STAMP_OX, 0, #else - BLOCK_COMMENT_X, BLOCK_COMMENT2_Y, - 0,0, + BLOCK_COMMENT_X,BLOCK_COMMENT2_Y, + 0, 0, #endif - NULL,NULL + NULL, NULL }; Ki_WorkSheetData WS_Comment3 = { - WS_COMMENT3, - &WS_Comment4, + WS_COMMENT3, + &WS_Comment4, #if defined(KICAD_GOST) - STAMP_OX, STAMP_OY, - STAMP_OX, 0, + STAMP_OX, STAMP_OY, + STAMP_OX, 0, #else - BLOCK_COMMENT_X, BLOCK_COMMENT3_Y, - 0,0, + BLOCK_COMMENT_X,BLOCK_COMMENT3_Y, + 0, 0, #endif - NULL,NULL + NULL, NULL }; Ki_WorkSheetData WS_Comment4 = { - WS_COMMENT4, - &WS_MostLeftLine, + WS_COMMENT4, + &WS_MostLeftLine, #if defined(KICAD_GOST) - STAMP_OX, STAMP_OY, - STAMP_OX, 0, + STAMP_OX, STAMP_OY, + STAMP_OX, 0, #else - BLOCK_COMMENT_X, BLOCK_COMMENT4_Y, - 0,0, + BLOCK_COMMENT_X, BLOCK_COMMENT4_Y, + 0, 0, #endif - NULL,NULL + NULL, NULL }; Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */ { - WS_LEFT_SEGMENT, + WS_LEFT_SEGMENT, #if defined(KICAD_GOST) - &WS_MostUpperLine, - STAMP_OX, STAMP_OY, - STAMP_OX, 0, + &WS_MostUpperLine, + STAMP_OX, STAMP_OY, + STAMP_OX, 0, #else - &WS_SeparatorLine, - BLOCK_OX, SIZETEXT * 16, - BLOCK_OX, 0, - NULL,NULL + &WS_SeparatorLine, + BLOCK_OX, SIZETEXT * 16, + BLOCK_OX, 0, + NULL, NULL }; -Ki_WorkSheetData WS_SeparatorLine = /* horizontal segment between filename and comments*/ +Ki_WorkSheetData WS_SeparatorLine = /* horizontal segment between filename and comments*/ { - WS_SEGMENT, - &WS_MostUpperLine, - BLOCK_OX, VARIABLE_BLOCK_START_POSITION, - 0, VARIABLE_BLOCK_START_POSITION, + WS_SEGMENT, + &WS_MostUpperLine, + BLOCK_OX, VARIABLE_BLOCK_START_POSITION, + 0, VARIABLE_BLOCK_START_POSITION, #endif - NULL,NULL + NULL, NULL }; -Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */ +Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */ { - WS_UPPER_SEGMENT, - &WS_Segm3, + WS_UPPER_SEGMENT, + &WS_Segm3, #if defined(KICAD_GOST) - STAMP_OX, STAMP_OY, - 0, STAMP_OY, + STAMP_OX, STAMP_OY, + 0, STAMP_OY, #else - BLOCK_OX, SIZETEXT * 16, - 0, SIZETEXT * 16, + BLOCK_OX, SIZETEXT * 16, + 0, SIZETEXT * 16, #endif - NULL,NULL + NULL, NULL }; -Ki_WorkSheetData WS_Segm3 = /* segment horizontal au dessus de NAME COMPANY */ +Ki_WorkSheetData WS_Segm3 = /* segment horizontal au dessus de NAME COMPANY */ { - WS_SEGMENT, - &WS_Segm4, + WS_SEGMENT, + &WS_Segm4, #if defined(KICAD_GOST) - STAMP_OX, STAMP_Y_50, - STAMP_X_120, STAMP_Y_50, + STAMP_OX, STAMP_Y_50, + STAMP_X_120,STAMP_Y_50, #else - BLOCK_OX, SIZETEXT * 6, - 0, SIZETEXT * 6, + BLOCK_OX, SIZETEXT * 6, + 0, SIZETEXT * 6, #endif - NULL,NULL + NULL, NULL }; -Ki_WorkSheetData WS_Segm4 = /* segment vertical a gauche de SHEET et REV */ +Ki_WorkSheetData WS_Segm4 = /* segment vertical a gauche de SHEET et REV */ { - WS_SEGMENT, - &WS_Segm5, + WS_SEGMENT, + &WS_Segm5, #if defined(KICAD_GOST) - STAMP_OX, STAMP_Y_45, - STAMP_X_120, STAMP_Y_45, + STAMP_OX, STAMP_Y_45, + STAMP_X_120, STAMP_Y_45, #else - BLOCK_REV_X + SIZETEXT, SIZETEXT * 4, - BLOCK_REV_X + SIZETEXT, 0, + BLOCK_REV_X + SIZETEXT,SIZETEXT * 4, + BLOCK_REV_X + SIZETEXT,0, #endif - NULL,NULL + NULL, NULL }; -Ki_WorkSheetData WS_Segm5 = /* 1er segment horizontal */ +Ki_WorkSheetData WS_Segm5 = /* 1er segment horizontal */ { - WS_SEGMENT, - &WS_Segm6, + WS_SEGMENT, + &WS_Segm6, #if defined(KICAD_GOST) - STAMP_OX, STAMP_Y_40, - 0, STAMP_Y_40, + STAMP_OX, STAMP_Y_40, + 0, STAMP_Y_40, #else - BLOCK_OX, SIZETEXT * 2, - 0, SIZETEXT * 2, + BLOCK_OX, SIZETEXT * 2, + 0, SIZETEXT * 2, #endif - NULL,NULL + NULL, NULL }; -Ki_WorkSheetData WS_Segm6 = /* 2eme segment horizontal */ +Ki_WorkSheetData WS_Segm6 = /* 2eme segment horizontal */ { - WS_SEGMENT, - &WS_Segm7, + WS_SEGMENT, + &WS_Segm7, #if defined(KICAD_GOST) - STAMP_OX, STAMP_Y_35, - STAMP_X_120, STAMP_Y_35, + STAMP_OX, STAMP_Y_35, + STAMP_X_120,STAMP_Y_35, #else - BLOCK_OX, SIZETEXT * 4, - 0, SIZETEXT * 4, + BLOCK_OX, SIZETEXT * 4, + 0, SIZETEXT * 4, #endif - NULL,NULL + NULL, NULL }; -Ki_WorkSheetData WS_Segm7 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm7 = /* segment vertical apres SIZE */ { - WS_SEGMENT, + WS_SEGMENT, #if defined(KICAD_GOST) - &WS_Segm8, - STAMP_X_50, STAMP_Y_35, - 0, STAMP_Y_35, - NULL,NULL + &WS_Segm8, + STAMP_X_50,STAMP_Y_35, + 0, STAMP_Y_35, + NULL, NULL }; -Ki_WorkSheetData WS_Segm8 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm8 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm9, - STAMP_OX, STAMP_Y_30, - STAMP_X_120, STAMP_Y_30, - NULL,NULL + WS_SEGMENT, + &WS_Segm9, + STAMP_OX, STAMP_Y_30, + STAMP_X_120,STAMP_Y_30, + NULL, NULL }; -Ki_WorkSheetData WS_Segm9 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm9 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm10, - STAMP_OX, STAMP_Y_25, - STAMP_X_120, STAMP_Y_25, - NULL,NULL + WS_SEGMENT, + &WS_Segm10, + STAMP_OX, STAMP_Y_25, + STAMP_X_120,STAMP_Y_25, + NULL, NULL }; -Ki_WorkSheetData WS_Segm10 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm10 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm11, - STAMP_OX, STAMP_Y_20, - STAMP_X_120, STAMP_Y_20, - NULL,NULL + WS_SEGMENT, + &WS_Segm11, + STAMP_OX, STAMP_Y_20, + STAMP_X_120,STAMP_Y_20, + NULL, NULL }; -Ki_WorkSheetData WS_Segm11 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm11 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm12, - STAMP_X_50, STAMP_Y_20, - 0, STAMP_Y_20, - NULL,NULL + WS_SEGMENT, + &WS_Segm12, + STAMP_X_50,STAMP_Y_20, + 0, STAMP_Y_20, + NULL, NULL }; -Ki_WorkSheetData WS_Segm12 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm12 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm13, - STAMP_OX, STAMP_Y_15, - 0, STAMP_Y_15, - NULL,NULL + WS_SEGMENT, + &WS_Segm13, + STAMP_OX, STAMP_Y_15, + 0, STAMP_Y_15, + NULL, NULL }; -Ki_WorkSheetData WS_Segm13 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm13 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm14, - STAMP_OX, STAMP_Y_10, - STAMP_X_120, STAMP_Y_10, - NULL,NULL + WS_SEGMENT, + &WS_Segm14, + STAMP_OX, STAMP_Y_10, + STAMP_X_120,STAMP_Y_10, + NULL, NULL }; -Ki_WorkSheetData WS_Segm14 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm14 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm15, - STAMP_OX, STAMP_Y_5, - STAMP_X_120, STAMP_Y_5, - NULL,NULL + WS_SEGMENT, + &WS_Segm15, + STAMP_OX, STAMP_Y_5, + STAMP_X_120,STAMP_Y_5, + NULL, NULL }; -Ki_WorkSheetData WS_Segm15 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm15 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm16, - STAMP_X_178, STAMP_OY, - STAMP_X_178, STAMP_Y_30, - NULL,NULL + WS_SEGMENT, + &WS_Segm16, + STAMP_X_178,STAMP_OY, + STAMP_X_178,STAMP_Y_30, + NULL, NULL }; -Ki_WorkSheetData WS_Segm16 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm16 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm17, - STAMP_X_168, STAMP_OY, - STAMP_X_168, 0, - NULL,NULL + WS_SEGMENT, + &WS_Segm17, + STAMP_X_168,STAMP_OY, + STAMP_X_168,0, + NULL, NULL }; -Ki_WorkSheetData WS_Segm17 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm17 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm18, - STAMP_X_145, STAMP_OY, - STAMP_X_145, 0, - NULL,NULL + WS_SEGMENT, + &WS_Segm18, + STAMP_X_145,STAMP_OY, + STAMP_X_145,0, + NULL, NULL }; -Ki_WorkSheetData WS_Segm18 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm18 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm19, - STAMP_X_130, STAMP_OY, - STAMP_X_130, 0, - NULL,NULL + WS_SEGMENT, + &WS_Segm19, + STAMP_X_130,STAMP_OY, + STAMP_X_130,0, + NULL, NULL }; -Ki_WorkSheetData WS_Segm19 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm19 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm20, - STAMP_X_120, STAMP_OY, - STAMP_X_120, 0, - NULL,NULL + WS_SEGMENT, + &WS_Segm20, + STAMP_X_120,STAMP_OY, + STAMP_X_120,0, + NULL, NULL }; -Ki_WorkSheetData WS_Segm20 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm20 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm21, - STAMP_X_50, STAMP_Y_40, - STAMP_X_50, 0, - NULL,NULL + WS_SEGMENT, + &WS_Segm21, + STAMP_X_50,STAMP_Y_40, + STAMP_X_50,0, + NULL, NULL }; -Ki_WorkSheetData WS_Segm21 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm21 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm22, - STAMP_X_45, STAMP_Y_35, - STAMP_X_45, STAMP_Y_20, - NULL,NULL + WS_SEGMENT, + &WS_Segm22, + STAMP_X_45,STAMP_Y_35, + STAMP_X_45,STAMP_Y_20, + NULL, NULL }; -Ki_WorkSheetData WS_Segm22 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm22 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm23, - STAMP_X_40, STAMP_Y_35, - STAMP_X_40, STAMP_Y_20, - NULL,NULL + WS_SEGMENT, + &WS_Segm23, + STAMP_X_40,STAMP_Y_35, + STAMP_X_40,STAMP_Y_20, + NULL, NULL }; -Ki_WorkSheetData WS_Segm23 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm23 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm24, - STAMP_X_35, STAMP_Y_40, - STAMP_X_35, STAMP_Y_20, - NULL,NULL + WS_SEGMENT, + &WS_Segm24, + STAMP_X_35,STAMP_Y_40, + STAMP_X_35,STAMP_Y_20, + NULL, NULL }; -Ki_WorkSheetData WS_Segm24 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm24 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Segm25, - STAMP_X_30, STAMP_Y_20, - STAMP_X_30, STAMP_Y_15, - NULL,NULL + WS_SEGMENT, + &WS_Segm25, + STAMP_X_30,STAMP_Y_20, + STAMP_X_30,STAMP_Y_15, + NULL, NULL }; -Ki_WorkSheetData WS_Segm25 = /* segment vertical apres SIZE */ +Ki_WorkSheetData WS_Segm25 = /* segment vertical apres SIZE */ { - WS_SEGMENT, - &WS_Izm, - STAMP_X_18, STAMP_Y_40, - STAMP_X_18, STAMP_Y_20, - NULL,NULL + WS_SEGMENT, + &WS_Izm, + STAMP_X_18,STAMP_Y_40, + STAMP_X_18,STAMP_Y_20, + NULL, NULL }; Ki_WorkSheetData WS_Izm = { - WS_PODPIS, - &WS_Razr, - STAMP_X_185 - 30,STAMP_Y_30 + 90, - 0,0, - wxT("Изм."), NULL + WS_PODPIS, + &WS_Razr, + STAMP_X_185 - 30,STAMP_Y_30 + 90, + 0, 0, + wxT( "Изм." ),NULL }; Ki_WorkSheetData WS_Razr = { - WS_PODPIS, - &WS_Prov, - STAMP_X_185 - 30,STAMP_Y_25 + 90, - 0,0, - wxT("Разраб."), NULL + WS_PODPIS, + &WS_Prov, + STAMP_X_185 - 30, STAMP_Y_25 + 90, + 0, 0, + wxT( "Разраб." ),NULL }; Ki_WorkSheetData WS_Prov = { - WS_PODPIS, - &WS_TKon, - STAMP_X_185 - 30,STAMP_Y_20 + 90, - 0,0, - wxT("Пров."), NULL + WS_PODPIS, + &WS_TKon, + STAMP_X_185 - 30, STAMP_Y_20 + 90, + 0, 0, + wxT( "Пров." ),NULL }; Ki_WorkSheetData WS_TKon = { - WS_PODPIS, - &WS_NKon, - STAMP_X_185 - 30,STAMP_Y_15 + 90, - 0,0, - wxT("Т.контр."), NULL + WS_PODPIS, + &WS_NKon, + STAMP_X_185 - 30, STAMP_Y_15 + 90, + 0, 0, + wxT( "Т.контр." ),NULL }; Ki_WorkSheetData WS_NKon = { - WS_PODPIS, - &WS_Utv, - STAMP_X_185 - 30,STAMP_Y_5 + 90, - 0,0, - wxT("Н.контр."), NULL + WS_PODPIS, + &WS_Utv, + STAMP_X_185 - 30, STAMP_Y_5 + 90, + 0, 0, + wxT( "Н.контр." ),NULL }; Ki_WorkSheetData WS_Utv = { - WS_PODPIS, - &WS_List, - STAMP_X_185 - 30,STAMP_Y_0 + 90, - 0,0, - wxT("Утв."), NULL + WS_PODPIS, + &WS_List, + STAMP_X_185 - 30,STAMP_Y_0 + 90, + 0, 0, + wxT( "Утв." ),NULL }; Ki_WorkSheetData WS_List = { - WS_PODPIS, - &WS_NDoc, - STAMP_X_178 - 30,STAMP_Y_30 + 90, - 0,0, - wxT("Лист"), NULL + WS_PODPIS, + &WS_NDoc, + STAMP_X_178 - 30, STAMP_Y_30 + 90, + 0, 0, + wxT( "Лист" ),NULL }; Ki_WorkSheetData WS_NDoc = { - WS_PODPIS, - &WS_Podp, - STAMP_X_168 - 30,STAMP_Y_30 + 90, - 0,0, - wxT("N докум."), NULL + WS_PODPIS, + &WS_Podp, + STAMP_X_168 - 30, STAMP_Y_30 + 90, + 0, 0, + wxT( "N докум." ),NULL }; Ki_WorkSheetData WS_Podp = { - WS_PODPIS, - &WS_Data, - STAMP_X_145 - 30,STAMP_Y_30 + 90, - 0,0, - wxT("Подп."), NULL + WS_PODPIS, + &WS_Data, + STAMP_X_145 - 30, STAMP_Y_30 + 90, + 0, 0, + wxT( "Подп." ),NULL }; Ki_WorkSheetData WS_Data = { - WS_PODPIS, - &WS_Art, - STAMP_X_130 - 30,STAMP_Y_30 + 90, - 0,0, - wxT("Дата"), NULL + WS_PODPIS, + &WS_Art, + STAMP_X_130 - 30, STAMP_Y_30 + 90, + 0, 0, + wxT( "Дата" ),NULL }; Ki_WorkSheetData WS_Art = { - WS_PODPIS, - &WS_Mass, - STAMP_X_50 - 30,STAMP_Y_35 + 90, - 0,0, - wxT("Арт."), NULL + WS_PODPIS, + &WS_Mass, + STAMP_X_50 - 30, STAMP_Y_35 + 90, + 0, 0, + wxT( "Арт." ),NULL }; Ki_WorkSheetData WS_Mass = { - WS_PODPIS, - &WS_Msht, - STAMP_X_35 - 30,STAMP_Y_35 + 90, - 0,0, - wxT("Масса"), NULL + WS_PODPIS, + &WS_Msht, + STAMP_X_35 - 30, STAMP_Y_35 + 90, + 0, 0, + wxT( "Масса" ),NULL }; Ki_WorkSheetData WS_Msht = { - WS_PODPIS, - &WS_List1, - STAMP_X_18 - 30,STAMP_Y_35 + 90, - 0,0, - wxT("Масштаб"), NULL + WS_PODPIS, + &WS_List1, + STAMP_X_18 - 30, STAMP_Y_35 + 90, + 0, 0, + wxT( "Масштаб" ),NULL }; Ki_WorkSheetData WS_List1 = { - WS_IDENTSHEET, - &WS_List2, - STAMP_X_50 - 30,STAMP_Y_15 + 90, - 0,0, - wxT("Лист "), NULL + WS_IDENTSHEET, + &WS_List2, + STAMP_X_50 - 30, STAMP_Y_15 + 90, + 0, 0, + wxT( "Лист " ),NULL }; Ki_WorkSheetData WS_List2 = { - WS_SHEETS, - NULL, - STAMP_X_30 - 30,STAMP_Y_15 + 90, - 0,0, - wxT("Листов "), NULL + WS_SHEETS, + NULL, + STAMP_X_30 - 30, STAMP_Y_15 + 90, + 0, 0, + wxT( "Листов " ),NULL }; Ki_WorkSheetData WS_CADRE_D = { - WS_CADRE, - &WS_Segm1_D, - STAMP_OX, 0, - 0,0, - NULL, NULL + WS_CADRE, + &WS_Segm1_D, + STAMP_OX, 0, + 0, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm1_D = { - WS_LEFT_SEGMENT_D, - &WS_Segm2_D, - STAMP_OX, STAMP_Y_15, - STAMP_OX, 0, - NULL, NULL + WS_LEFT_SEGMENT_D, + &WS_Segm2_D, + STAMP_OX, STAMP_Y_15, + STAMP_OX, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm2_D = { - WS_SEGMENT_D, - &WS_Segm3_D, - STAMP_X_178, STAMP_Y_15, - STAMP_X_178, 0, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm3_D, + STAMP_X_178, STAMP_Y_15, + STAMP_X_178, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm3_D = { - WS_SEGMENT_D, - &WS_Segm4_D, - STAMP_X_168, STAMP_Y_15, - STAMP_X_168, 0, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm4_D, + STAMP_X_168, STAMP_Y_15, + STAMP_X_168, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm4_D = { - WS_SEGMENT_D, - &WS_Segm5_D, - STAMP_X_145, STAMP_Y_15, - STAMP_X_145, 0, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm5_D, + STAMP_X_145, STAMP_Y_15, + STAMP_X_145, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm5_D = { - WS_SEGMENT_D, - &WS_Segm6_D, - STAMP_X_130, STAMP_Y_15, - STAMP_X_130, 0, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm6_D, + STAMP_X_130, STAMP_Y_15, + STAMP_X_130, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm6_D = { - WS_SEGMENT_D, - &WS_Segm7_D, - STAMP_X_120, STAMP_Y_15, - STAMP_X_120, 0, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm7_D, + STAMP_X_120, STAMP_Y_15, + STAMP_X_120, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm7_D = { - WS_SEGMENT_D, - &WS_Segm8_D, - STAMP_X_10, STAMP_Y_15, - STAMP_X_10, 0, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm8_D, + STAMP_X_10, STAMP_Y_15, + STAMP_X_10, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm8_D = { - WS_SEGMENT_D, - &WS_Segm9_D, - STAMP_X_185, STAMP_Y_10, - STAMP_X_120, STAMP_Y_10, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm9_D, + STAMP_X_185, STAMP_Y_10, + STAMP_X_120, STAMP_Y_10, + NULL, NULL }; Ki_WorkSheetData WS_Segm9_D = { - WS_SEGMENT_D, - &WS_Segm10_D, - STAMP_X_185, STAMP_Y_5, - STAMP_X_120, STAMP_Y_5, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm10_D, + STAMP_X_185, STAMP_Y_5, + STAMP_X_120, STAMP_Y_5, + NULL, NULL }; Ki_WorkSheetData WS_Segm10_D = { - WS_SEGMENT_D, - &WS_Segm11_D, - STAMP_X_10, STAMP_Y_8, - 0, STAMP_Y_8, - NULL, NULL + WS_SEGMENT_D, + &WS_Segm11_D, + STAMP_X_10, STAMP_Y_8, + 0, STAMP_Y_8, + NULL, NULL }; Ki_WorkSheetData WS_Segm11_D = { - WS_SEGMENT_D, - &WS_Izm_D, - STAMP_X_185, STAMP_Y_15, - 0, STAMP_Y_15, - NULL, NULL + WS_SEGMENT_D, + &WS_Izm_D, + STAMP_X_185, STAMP_Y_15, + 0, STAMP_Y_15, + NULL, NULL }; Ki_WorkSheetData WS_Izm_D = { - WS_PODPIS_D, - &WS_List_D, - STAMP_X_185 - 30, STAMP_Y_0 + 90, - 0, 0, - wxT("Изм."), NULL + WS_PODPIS_D, + &WS_List_D, + STAMP_X_185 - 30,STAMP_Y_0 + 90, + 0, 0, + wxT( "Изм." ),NULL }; Ki_WorkSheetData WS_List_D = { - WS_PODPIS_D, - &WS_NDoc_D, - STAMP_X_178 - 30, STAMP_Y_0 + 90, - 0, 0, - wxT("Лист"), NULL + WS_PODPIS_D, + &WS_NDoc_D, + STAMP_X_178 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT( "Лист" ),NULL }; Ki_WorkSheetData WS_NDoc_D = { - WS_PODPIS_D, - &WS_Podp_D, - STAMP_X_168 - 30, STAMP_Y_0 + 90, - 0, 0, - wxT("N докум."), NULL + WS_PODPIS_D, + &WS_Podp_D, + STAMP_X_168 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT( "N докум." ),NULL }; Ki_WorkSheetData WS_Podp_D = { - WS_PODPIS_D, - &WS_Date_D, - STAMP_X_145 - 30, STAMP_Y_0 + 90, - 0, 0, - wxT("Подп."), NULL + WS_PODPIS_D, + &WS_Date_D, + STAMP_X_145 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT( "Подп." ),NULL }; Ki_WorkSheetData WS_Date_D = { - WS_PODPIS_D, - &WS_List1_D, - STAMP_X_130 - 30, STAMP_Y_0 + 90, - 0, 0, - wxT("Дата"), NULL + WS_PODPIS_D, + &WS_List1_D, + STAMP_X_130 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT( "Дата" ),NULL }; Ki_WorkSheetData WS_List1_D = { - WS_PODPIS_D, - &WS_ListN_D, - STAMP_X_10 - 30, STAMP_Y_8 + 90, - 0, 0, - wxT("Лист"), NULL + WS_PODPIS_D, + &WS_ListN_D, + STAMP_X_10 - 30, STAMP_Y_8 + 90, + 0, 0, + wxT( "Лист" ),NULL }; Ki_WorkSheetData WS_ListN_D = { - WS_IDENTSHEET_D, - NULL, - STAMP_Y_0 + 196, STAMP_Y_0 + 90, - 0, 0, - NULL, NULL + WS_IDENTSHEET_D, + NULL, + STAMP_Y_0 + 196,STAMP_Y_0 + 90, + 0, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm1_LU = { - WS_SEGMENT_LU, - &WS_Segm2_LU, - STAMP_12, STAMP_145, - STAMP_12, 0, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm2_LU, + STAMP_12, STAMP_145, + STAMP_12, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm2_LU = { - WS_SEGMENT_LU, - &WS_Segm3_LU, - STAMP_7, STAMP_145, - STAMP_7, 0, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm3_LU, + STAMP_7, STAMP_145, + STAMP_7, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm3_LU = { - WS_SEGMENT_LU, - &WS_Segm4_LU, - STAMP_12, STAMP_145, - 0, STAMP_145, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm4_LU, + STAMP_12, STAMP_145, + 0, STAMP_145, + NULL, NULL }; Ki_WorkSheetData WS_Segm4_LU = { - WS_SEGMENT_LU, - &WS_Segm5_LU, - STAMP_12, STAMP_110, - 0, STAMP_110, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm5_LU, + STAMP_12, STAMP_110, + 0, STAMP_110, + NULL, NULL }; Ki_WorkSheetData WS_Segm5_LU = { - WS_SEGMENT_LU, - &WS_Segm6_LU, - STAMP_12, STAMP_85, - 0, STAMP_85, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm6_LU, + STAMP_12, STAMP_85, + 0, STAMP_85, + NULL, NULL }; Ki_WorkSheetData WS_Segm6_LU = { - WS_SEGMENT_LU, - &WS_Segm7_LU, - STAMP_12, STAMP_60, - 0, STAMP_60, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm7_LU, + STAMP_12, STAMP_60, + 0, STAMP_60, + NULL, NULL }; Ki_WorkSheetData WS_Segm7_LU = { - WS_SEGMENT_LU, - &WS_Segm8_LU, - STAMP_12, STAMP_25, - 0, STAMP_25, - NULL, NULL + WS_SEGMENT_LU, + &WS_Segm8_LU, + STAMP_12, STAMP_25, + 0, STAMP_25, + NULL, NULL }; Ki_WorkSheetData WS_Segm8_LU = { - WS_SEGMENT_LU, - &WS_Podp1_LU, - STAMP_12, 0, - 0, 0, - NULL, NULL + WS_SEGMENT_LU, + &WS_Podp1_LU, + STAMP_12, 0, + 0, 0, + NULL, NULL }; Ki_WorkSheetData WS_Podp1_LU = { - WS_PODPIS_LU, - &WS_Podp2_LU, - STAMP_7 + 90, 0 + 492, - 0, 0, - wxT("Инв.N подл."), NULL + WS_PODPIS_LU, + &WS_Podp2_LU, + STAMP_7 + 90, 0 + 492, + 0, 0, + wxT( "Инв.N подл." ),NULL }; Ki_WorkSheetData WS_Podp2_LU = { - WS_PODPIS_LU, - &WS_Podp3_LU, - STAMP_7 + 90, STAMP_25 + 688, - 0, 0, - wxT("Подп. и дата"), NULL + WS_PODPIS_LU, + &WS_Podp3_LU, + STAMP_7 + 90, STAMP_25 + 688, + 0, 0, + wxT( "Подп. и дата" ),NULL }; Ki_WorkSheetData WS_Podp3_LU = { - WS_PODPIS_LU, - &WS_Podp4_LU, - STAMP_7 + 90, STAMP_60 + 492, - 0, 0, - wxT("Взам.инв.N"), NULL + WS_PODPIS_LU, + &WS_Podp4_LU, + STAMP_7 + 90, STAMP_60 + 492, + 0, 0, + wxT( "Взам.инв.N" ),NULL }; Ki_WorkSheetData WS_Podp4_LU = { - WS_PODPIS_LU, - &WS_Podp5_LU, - STAMP_7 + 90, STAMP_85 + 492, - 0, 0, - wxT("Инв.N дубл."), NULL + WS_PODPIS_LU, + &WS_Podp5_LU, + STAMP_7 + 90, STAMP_85 + 492, + 0, 0, + wxT( "Инв.N дубл." ),NULL }; Ki_WorkSheetData WS_Podp5_LU = { - WS_PODPIS_LU, - NULL, - STAMP_7 + 90, STAMP_110 + 688, - 0, 0, - wxT("Подп. и дата"), NULL + WS_PODPIS_LU, + NULL, + STAMP_7 + 90, STAMP_110 + 688, + 0, 0, + wxT( "Подп. и дата" ),NULL }; Ki_WorkSheetData WS_Segm1_LT = { - WS_SEGMENT_LT, - &WS_Segm2_LT, - STAMP_X_0, STAMP_Y_14, - STAMP_X_137, STAMP_Y_14, - NULL, NULL + WS_SEGMENT_LT, + &WS_Segm2_LT, + STAMP_X_0, STAMP_Y_14, + STAMP_X_137, STAMP_Y_14, + NULL, NULL }; Ki_WorkSheetData WS_Segm2_LT = { - WS_SEGMENT_LT, - &WS_Segm3_LT, - STAMP_X_137, STAMP_Y_14, - STAMP_X_137, 0, - NULL, NULL + WS_SEGMENT_LT, + &WS_Segm3_LT, + STAMP_X_137, STAMP_Y_14, + STAMP_X_137, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm3_LT = { - WS_SEGMENT_LT, - &WS_Segm4_LT, - STAMP_X_137, STAMP_Y_7, - STAMP_X_84, STAMP_Y_7, - NULL, NULL + WS_SEGMENT_LT, + &WS_Segm4_LT, + STAMP_X_137, STAMP_Y_7, + STAMP_X_84, STAMP_Y_7, + NULL, NULL }; Ki_WorkSheetData WS_Segm4_LT = { - WS_SEGMENT_LT, - &WS_Segm5_LT, - STAMP_X_84, STAMP_Y_14, - STAMP_X_84, 0, - NULL, NULL + WS_SEGMENT_LT, + &WS_Segm5_LT, + STAMP_X_84, STAMP_Y_14, + STAMP_X_84, 0, + NULL, NULL }; Ki_WorkSheetData WS_Segm5_LT = { - WS_SEGMENT_LT, - NULL, - STAMP_X_70, STAMP_Y_14, - STAMP_X_70, 0, + WS_SEGMENT_LT, + NULL, + STAMP_X_70, STAMP_Y_14, + STAMP_X_70, 0, #else - NULL, - BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 4, - BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 2, + NULL, + BLOCK_OX - (SIZETEXT * 11),SIZETEXT * 4, + BLOCK_OX - (SIZETEXT * 11),SIZETEXT * 2, #endif - NULL, NULL + NULL, NULL }; /*************************************************************************************/ @@ -926,26 +926,26 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w if( !m_Draw_Sheet_Ref ) return; - Ki_PageDescr* Sheet = screen->m_CurrentSheetDesc; - int ii, jj, xg, yg, ipas, gxpas, gypas; - wxPoint pos; - int refx, refy; - EDA_Colors Color; - wxString Line; + Ki_PageDescr* Sheet = screen->m_CurrentSheetDesc; + int ii, jj, xg, yg, ipas, gxpas, gypas; + wxPoint pos; + int refx, refy; + EDA_Colors Color; + wxString Line; Ki_WorkSheetData* WsItem; - int scale = m_InternalUnits / 1000; - wxSize size( SIZETEXT * scale, SIZETEXT * scale ); - wxSize size_ref( SIZETEXT_REF * scale, SIZETEXT_REF * scale ); + int scale = m_InternalUnits / 1000; + wxSize size( SIZETEXT * scale, SIZETEXT * scale ); + wxSize size_ref( SIZETEXT_REF * scale, SIZETEXT_REF * scale ); - wxString msg; - int UpperLimit = VARIABLE_BLOCK_START_POSITION; - int width = line_width; + wxString msg; + int UpperLimit = VARIABLE_BLOCK_START_POSITION; + int width = line_width; Color = RED; if( Sheet == NULL ) { DisplayError( this, - wxT( "WinEDA_DrawFrame::TraceWorkSheet() error: NULL Sheet" ) ); + wxT( "WinEDA_DrawFrame::TraceWorkSheet() error: NULL Sheet" ) ); return; } @@ -978,6 +978,7 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w refx += GRID_REF_W; refy += GRID_REF_W; xg -= GRID_REF_W; yg -= GRID_REF_W; } + #endif /* trace des reperes */ @@ -986,44 +987,49 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w refy = Sheet->m_Size.y - Sheet->m_BottomMargin; /* Lower left corner */ for( WsItem = &WS_Segm1_LU; WsItem != NULL; WsItem = WsItem->Pnext ) { - pos.x = (refx - WsItem->m_Posx)* scale; - pos.y = (refy - WsItem->m_Posy)* scale; + pos.x = (refx - WsItem->m_Posx) * scale; + pos.y = (refy - WsItem->m_Posy) * scale; msg.Empty(); switch( WsItem->m_Type ) { - case WS_CADRE: + case WS_CADRE: break; - case WS_PODPIS_LU: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_VERT, size, - GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM,width, - false, false, false); + + case WS_PODPIS_LU: + if( WsItem->m_Legende ) + msg = WsItem->m_Legende; + DrawGraphicText( DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_VERT, size, + GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM, width, + false, false ); break; - case WS_SEGMENT_LU: + + case WS_SEGMENT_LU: xg = Sheet->m_LeftMargin - WsItem->m_Endx; yg = Sheet->m_Size.y - Sheet->m_BottomMargin - WsItem->m_Endy; - GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, - xg * scale, yg * scale, width, Color); + GRLine( &DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color ); break; } } + refy = Sheet->m_BottomMargin; /* Left Top corner */ for( WsItem = &WS_Segm1_LT; WsItem != NULL; WsItem = WsItem->Pnext ) { - pos.x = (refx + WsItem->m_Posx)* scale; - pos.y = (refy + WsItem->m_Posy)* scale; + pos.x = (refx + WsItem->m_Posx) * scale; + pos.y = (refy + WsItem->m_Posy) * scale; msg.Empty(); switch( WsItem->m_Type ) { - case WS_SEGMENT_LT: + case WS_SEGMENT_LT: xg = Sheet->m_LeftMargin + WsItem->m_Endx; yg = Sheet->m_BottomMargin + WsItem->m_Endy; - GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, - xg * scale, yg * scale, width, Color); + GRLine( &DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color ); break; } } + #else refy = Sheet->m_TopMargin; /* Upper left corner */ xg = Sheet->m_Size.x - Sheet->m_RightMargin; @@ -1045,7 +1051,7 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, - width, false, false, false ); + width, false, false ); if( ii < xg - PAS_REF / 2 ) { GRLine( &DrawPanel->m_ClipBox, DC, ii * scale, yg * scale, @@ -1053,10 +1059,10 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w } DrawGraphicText( DrawPanel, DC, wxPoint( (ii - gxpas / 2) * scale, - (yg - GRID_REF_W / 2) * scale ), + (yg - GRID_REF_W / 2) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, - width, false, false, false ); + width, false, false ); } /* Trace des reperes selon l'axe Y */ @@ -1076,11 +1082,11 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w } DrawGraphicText( DrawPanel, DC, wxPoint( (refx + GRID_REF_W / 2) * scale, - (ii - gypas / 2) * scale ), + (ii - gypas / 2) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, - width, false, false, false ); + width, false, false ); if( ii < yg - PAS_REF / 2 ) { GRLine( &DrawPanel->m_ClipBox, DC, xg * scale, ii * scale, @@ -1088,118 +1094,160 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w } DrawGraphicText( DrawPanel, DC, wxPoint( (xg - GRID_REF_W / 2) * scale, - (ii - gxpas / 2) * scale ), + (ii - gxpas / 2) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, - width, false, false, false ); + width, false, false ); } + #endif /* Trace du cartouche */ #if defined(KICAD_GOST) refx = Sheet->m_Size.x - Sheet->m_RightMargin; refy = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ - if (screen->m_ScreenNumber == 1) + if( screen->m_ScreenNumber == 1 ) { for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext ) { - pos.x = (refx - WsItem->m_Posx)* scale; - pos.y = (refy - WsItem->m_Posy)* scale; + pos.x = (refx - WsItem->m_Posx) * scale; + pos.y = (refy - WsItem->m_Posy) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_DATE: break; + case WS_REV: break; + case WS_KICAD_VERSION: break; + case WS_PODPIS: if( WsItem->m_Legende ) msg = WsItem->m_Legende; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, - width, false, false, false ); + width, false, false ); break; + case WS_SIZESHEET: break; + case WS_IDENTSHEET: - if(WsItem->m_Legende) + if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg << screen->m_ScreenNumber; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, - GR_TEXT_VJUSTIFY_CENTER, width, false, false, false); + GR_TEXT_VJUSTIFY_CENTER, width, false, false, false ); break; + case WS_SHEETS: - if(WsItem->m_Legende) + if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg << screen->m_NumberOfScreen; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, - GR_TEXT_VJUSTIFY_CENTER, width, false, false, false); + GR_TEXT_VJUSTIFY_CENTER, width, false, false, false ); break; + case WS_COMPANY_NAME: break; + case WS_TITLE: break; + case WS_COMMENT1: break; + case WS_COMMENT2: break; + case WS_COMMENT3: break; + case WS_COMMENT4: break; + case WS_UPPER_SEGMENT: case WS_LEFT_SEGMENT: WS_MostUpperLine.m_Posy = - WS_MostUpperLine.m_Endy = - WS_MostLeftLine.m_Posy = STAMP_OY; - pos.y = (refy - WsItem->m_Posy)* scale; + WS_MostUpperLine.m_Endy = + WS_MostLeftLine.m_Posy = STAMP_OY; + pos.y = (refy - WsItem->m_Posy) * scale; + case WS_SEGMENT: xg = Sheet->m_Size.x - - Sheet->m_RightMargin - WsItem->m_Endx; + Sheet->m_RightMargin - WsItem->m_Endx; yg = Sheet->m_Size.y - - Sheet->m_BottomMargin - WsItem->m_Endy; - GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, - xg * scale, yg * scale, width, Color); + Sheet->m_BottomMargin - WsItem->m_Endy; + GRLine( &DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color ); break; } } - } else { + } + else + { for( WsItem = &WS_CADRE_D; WsItem != NULL; WsItem = WsItem->Pnext ) { - pos.x = (refx - WsItem->m_Posx)* scale; - pos.y = (refy - WsItem->m_Posy)* scale; + pos.x = (refx - WsItem->m_Posx) * scale; + pos.y = (refy - WsItem->m_Posy) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_CADRE: - /* Begin list number > 1 */ + /* Begin list number > 1 */ case WS_PODPIS_D: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,width, false, false, false); + if( WsItem->m_Legende ) + msg = WsItem->m_Legende; + DrawGraphicText( DrawPanel, + DC, + pos, + Color, + msg, + TEXT_ORIENT_HORIZ, + size, + GR_TEXT_HJUSTIFY_LEFT, + GR_TEXT_VJUSTIFY_CENTER, + width, + false, + false, + false ); break; + case WS_IDENTSHEET_D: - if(WsItem->m_Legende) msg = WsItem->m_Legende; + if( WsItem->m_Legende ) + msg = WsItem->m_Legende; msg << screen->m_ScreenNumber; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,width, false, false, false); + DrawGraphicText( DrawPanel, + DC, + pos, + Color, + msg, + TEXT_ORIENT_HORIZ, + size, + GR_TEXT_HJUSTIFY_LEFT, + GR_TEXT_VJUSTIFY_CENTER, + width, + false, + false, + false ); break; + case WS_LEFT_SEGMENT_D: - pos.y = (refy - WsItem->m_Posy)* scale; + pos.y = (refy - WsItem->m_Posy) * scale; + case WS_SEGMENT_D: xg = Sheet->m_Size.x - - Sheet->m_RightMargin - WsItem->m_Endx; + Sheet->m_RightMargin - WsItem->m_Endx; yg = Sheet->m_Size.y - - Sheet->m_BottomMargin - WsItem->m_Endy; - GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, - xg * scale, yg * scale, width, Color); + Sheet->m_BottomMargin - WsItem->m_Endy; + GRLine( &DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color ); break; } } @@ -1222,8 +1270,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg += screen->m_Date; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, true, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, true ); break; case WS_REV: @@ -1232,8 +1280,9 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg += screen->m_Revision; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, true, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, + GetPenSizeForBold( MIN( size.x, size.y ) ), + false, true ); break; case WS_KICAD_VERSION: @@ -1243,8 +1292,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg += wxT( " " ) + GetBuildVersion(); DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); break; case WS_SIZESHEET: @@ -1253,8 +1302,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg += Sheet->m_Name; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); break; @@ -1264,8 +1313,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg << screen->m_ScreenNumber << wxT( "/" ) << screen->m_NumberOfScreen; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); break; case WS_FILENAME: @@ -1277,8 +1326,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg << fname << wxT( "." ) << fext; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); } break; @@ -1288,8 +1337,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg += GetScreenDesc(); DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); break; @@ -1301,8 +1350,9 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w { DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, true, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, + GetPenSizeForBold( MIN( size.x, size.y ) ), + false, true ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; @@ -1313,8 +1363,9 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w msg += screen->m_Title; DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, true, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, + GetPenSizeForBold( MIN( size.x, size.y ) ), + false, true ); break; case WS_COMMENT1: @@ -1325,8 +1376,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w { DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; @@ -1339,8 +1390,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w { DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; @@ -1353,8 +1404,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w { DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; @@ -1367,8 +1418,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w { DrawGraphicText( DrawPanel, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, - false, false, false ); + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, + false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; @@ -1378,21 +1429,22 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w break; case WS_LEFT_SEGMENT: - WS_MostUpperLine.m_Posy = + WS_MostUpperLine.m_Posy = WS_MostUpperLine.m_Endy = - WS_MostLeftLine.m_Posy = UpperLimit; + WS_MostLeftLine.m_Posy = UpperLimit; pos.y = (refy - WsItem->m_Posy) * scale; case WS_SEGMENT: xg = Sheet->m_Size.x - - GRID_REF_W - Sheet->m_RightMargin - WsItem->m_Endx; + GRID_REF_W - Sheet->m_RightMargin - WsItem->m_Endx; yg = Sheet->m_Size.y - - GRID_REF_W - Sheet->m_BottomMargin - WsItem->m_Endy; + GRID_REF_W - Sheet->m_BottomMargin - WsItem->m_Endy; GRLine( &DrawPanel->m_ClipBox, DC, pos.x, pos.y, xg * scale, yg * scale, width, Color ); break; } } + #endif } @@ -1409,14 +1461,14 @@ wxString WinEDA_DrawFrame::GetXYSheetReferences( BASE_SCREEN* aScreen, const wxP */ { Ki_PageDescr* Sheet = aScreen->m_CurrentSheetDesc; - int ii, xg, yg, ipas, gxpas, gypas; - int refx, refy; - wxString msg; + int ii, xg, yg, ipas, gxpas, gypas; + int refx, refy; + wxString msg; if( Sheet == NULL ) { DisplayError( this, - wxT( "WinEDA_DrawFrame::GetXYSheetReferences() error: NULL Sheet" ) ); + wxT( "WinEDA_DrawFrame::GetXYSheetReferences() error: NULL Sheet" ) ); return msg; } diff --git a/eeschema/class_text-label.cpp b/eeschema/class_text-label.cpp index ecaf7e7f36..f1b5f420fa 100644 --- a/eeschema/class_text-label.cpp +++ b/eeschema/class_text-label.cpp @@ -520,7 +520,7 @@ bool SCH_TEXT::Save( FILE* aFile ) const if( fprintf( aFile, "Text Notes %-4d %-4d %-4d %-4d %s %d\n%s\n", m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, - shape, (m_Bold?1:0), + shape, m_Width, CONV_TO_UTF8( text ) ) == EOF ) { success = false; @@ -577,7 +577,7 @@ bool SCH_LABEL::Save( FILE* aFile ) const if( fprintf( aFile, "Text Label %-4d %-4d %-4d %-4d %s %d\n%s\n", m_Pos.x, m_Pos.y, - m_SchematicOrientation, m_Size.x, shape, (m_Bold?1:0), + m_SchematicOrientation, m_Size.x, shape, m_Width, CONV_TO_UTF8( m_Text ) ) == EOF ) { success = false; @@ -616,7 +616,7 @@ bool SCH_GLOBALLABEL::Save( FILE* aFile ) const m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, SheetLabelType[m_Shape], - shape, (m_Bold?1:0), + shape, m_Width, CONV_TO_UTF8( m_Text ) ) == EOF ) { success = false; @@ -670,7 +670,7 @@ bool SCH_HIERLABEL::Save( FILE* aFile ) const m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, SheetLabelType[m_Shape], - shape, (m_Bold?1:0), + shape, m_Width, CONV_TO_UTF8( m_Text ) ) == EOF ) { success = false; diff --git a/eeschema/edit_label.cpp b/eeschema/edit_label.cpp index 18f670a536..6078038911 100644 --- a/eeschema/edit_label.cpp +++ b/eeschema/edit_label.cpp @@ -6,6 +6,8 @@ #include "fctsys.h" #include "gr_basic.h" #include "common.h" +#include "base_struct.h" +#include "drawtxt.h" #include "class_drawpanel.h" #include "confirm.h" @@ -61,9 +63,15 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& event ) m_CurrentText->m_Italic = 0; if ( ( style & 2 ) ) + { m_CurrentText->m_Bold = true; + m_CurrentText->m_Width = GetPenSizeForBold( m_CurrentText->m_Size.x ); + } else + { m_CurrentText->m_Bold = false; + m_CurrentText->m_Width = 0; + } m_Parent->GetScreen()->SetModify(); diff --git a/eeschema/read_from_file_schematic_items_descriptions.cpp b/eeschema/read_from_file_schematic_items_descriptions.cpp index 62af2e12d7..6d73b297ce 100644 --- a/eeschema/read_from_file_schematic_items_descriptions.cpp +++ b/eeschema/read_from_file_schematic_items_descriptions.cpp @@ -9,6 +9,7 @@ #include "program.h" #include "libcmp.h" #include "general.h" +#include "drawtxt.h" #include "protos.h" @@ -69,7 +70,7 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, if( text == NULL ) return NULL; - if( Name1[0] == 'L' ) + if( Name1[0] == 'L' ) // Reading a simple label (SCH_LABEL item) { SCH_LABEL* TextStruct = new SCH_LABEL( pos, CONV_FROM_UTF8( text ) ); @@ -80,12 +81,13 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, { thickness = atol( Name3 ); TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Width = TextStruct->m_Bold ? GetPenSizeForBold( size ) : 0; } Struct = TextStruct; if( stricmp( Name2, "Italic" ) == 0 ) TextStruct->m_Italic = 1; } - else if( Name1[0] == 'G' && aSchematicFileVersion > '1' ) + else if( Name1[0] == 'G' && aSchematicFileVersion > '1' ) // Reading a global label (SCH_GLOBALLABEL item) { SCH_GLOBALLABEL* TextStruct = new SCH_GLOBALLABEL( pos, CONV_FROM_UTF8( text ) ); @@ -94,7 +96,8 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, TextStruct->m_Size.x = TextStruct->m_Size.y = size; TextStruct->SetSchematicTextOrientation( orient ); TextStruct->m_Shape = NET_INPUT; - TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Width = TextStruct->m_Bold ? GetPenSizeForBold( size ) : 0; if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 ) TextStruct->m_Shape = NET_OUTPUT; @@ -107,7 +110,7 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, if( stricmp( Name3, "Italic" ) == 0 ) TextStruct->m_Italic = 1; } - else if( (Name1[0] == 'H') + else if( (Name1[0] == 'H') // Reading a hierarchical label (SCH_HIERLABEL item) || (Name1[0] == 'G' && aSchematicFileVersion == '1') ) //in schematic file version 1, glabels were actually hierarchal labels. { SCH_HIERLABEL* TextStruct = @@ -117,7 +120,8 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, TextStruct->m_Size.x = TextStruct->m_Size.y = size; TextStruct->SetSchematicTextOrientation( orient ); TextStruct->m_Shape = NET_INPUT; - TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Width = TextStruct->m_Bold ? GetPenSizeForBold( size ) : 0; if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 ) TextStruct->m_Shape = NET_OUTPUT; @@ -130,7 +134,7 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, if( stricmp( Name3, "Italic" ) == 0 ) TextStruct->m_Italic = 1; } - else + else // reading a graphic text (comment) { wxString val = CONV_FROM_UTF8( text ); @@ -152,7 +156,8 @@ SCH_ITEM* ReadTextDescr( FILE* aFile, if( isdigit( Name3[0] ) ) { thickness = atol( Name3 ); - TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Bold = (thickness != 0); + TextStruct->m_Width = TextStruct->m_Bold ? GetPenSizeForBold( size ) : 0; } if( strnicmp( Name2, "Italic", 6 ) == 0 ) diff --git a/include/HersheyCyrillic.h b/include/HersheyCyrillic.h new file mode 100644 index 0000000000..18b17005a8 --- /dev/null +++ b/include/HersheyCyrillic.h @@ -0,0 +1,70 @@ +/* Hershey Cyrillic definition + * First shape has unicode value 0x410 +*/ +const static char* hershey_cyrillic[] = +{ + "H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[", + "G]LFL[ RMFM[ RIFYFYLXF RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[", + "G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[", + "I[NFN[ ROFO[ RKFZFZLYF RK[R[", + "F^NFNLMTLXKZJ[ RXFX[ RYFY[ RKF\\F RG[\\[ RG[Gb RH[Gb R[[\\b R\\[\\b", + "G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[", + "CbRFR[ RSFS[ ROFVF RGGHHGIFHFGGFHFIGJIKMLONPWPYOZM[I\\G]F^F_G_H^I]H^G RNPLQKSJXIZH[ RNPMQLSKXJZI[G[FZEX RWPYQZS[X\\Z][ RWPXQYSZX[Z\\[^[_Z`X RO[V[", + "H\\LIKFKLLINGPFTFWGXIXLWNTOQO RTFVGWIWLVNTO RTOVPXRYTYWXYWZT[O[MZLYKWKVLUMVLW RWQXTXWWYVZT[", + "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[", + "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[ RN@N?M?M@NBPCTCVBW@", + "F^KFK[ RLFL[ RHFOF RLPSPUOVMWIXGYFZF[G[HZIYHZG RSPUQVSWXXZY[ RSPTQUSVXWZX[Z[[Z\\X RH[O[", + "E^MFMLLTKXJZI[H[GZGYHXIYHZ RXFX[ RYFY[ RJF\\F RU[\\[", + "F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][", + "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[", + "G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF", + "F^KFK[ RLFL[ RXFX[ RYFY[ RHF\\F RH[O[ RU[\\[", + "G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[", + "G\\XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXXYV RQFOGMILKKNKSLVMXOZQ[", + "I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[", + "H]KFRV RLFSV RZFSVQYPZN[M[LZLYMXNYMZ RIFOF RVF\\F", + "F_RFR[ RSFS[ ROFVF RPILJJLIOIRJULWPXUXYW[U\\R\\O[LYJUIPI RPIMJKLJOJRKUMWPX RUXXWZU[R[OZLXJUI RO[V[", + "H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[", + "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RH[\\[ R[[\\b R\\[\\b", + "F]KFKQLSOTRTUSWQ RLFLQMSOT RWFW[ RXFX[ RHFOF RTF[F RT[[[", + "BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[", + "BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[ R`[ab Ra[ab", + "F`PFP[ RQFQ[ RIFHLHFTF RQPXP[Q\\R]T]W\\Y[ZX[M[ RXPZQ[R\\T\\W[YZZX[", /* Ъ */ + "CaHFH[ RIFI[ REFLF RIPPPSQTRUTUWTYSZP[E[ RPPRQSRTTTWSYRZP[ R[F[[ R\\F\\[ RXF_F RX[_[", /* Ы */ + "H]MFM[ RNFN[ RJFQF RNPUPXQYRZTZWYYXZU[J[ RUPWQXRYTYWXYWZU[", /* Ь */ + "H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP", /* Э */ + "CbHFH[ RIFI[ REFLF RE[L[ RVFSGQIPKOOORPVQXSZV[X[[Z]X^V_R_O^K]I[GXFVF RVFTGRIQKPOPRQVRXTZV[ RX[ZZ\\X]V^R^O]K\\IZGXF RIPOP", /* Ю */ + "G]WFW[ RXFX[ R[FOFLGKHJJJLKNLOOPWP ROFMGLHKJKLLNMOOP RRPPQORLYKZJZIY RPQOSMZL[J[IYIX RT[[[", /* Я */ + "I]NONPMPMONNPMTMVNWOXQXXYZZ[ RWOWXXZZ[[[ RWQVRPSMTLVLXMZP[S[UZWX RPSNTMVMXNZP[", /* letter */ + "H\\XFWGQINKLNKQKULXNZQ[S[VZXXYUYSXPVNSMQMNNLPKS RXFWHUIQJNLLN RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM", + "H\\MMM[ RNMN[ RJMUMXNYPYQXSUT RUMWNXPXQWSUT RNTUTXUYWYXXZU[J[ RUTWUXWXXWZU[", + "HZMMM[ RNMN[ RJMXMXRWM RJ[Q[", + "F]NMNQMWLZK[ RWMW[ RXMX[ RKM[M RI[H`H[[[[`Z[", + "H[LSXSXQWOVNTMQMNNLPKSKULXNZQ[S[VZXX RWSWPVN RQMONMPLSLUMXOZQ[", + "E`RMR[ RSMS[ ROMVM RJNIOHNIMJMKNMRNSPTUTWSXRZN[M\\M]N\\O[N RPTNUMVKZJ[ RPTNVLZK[I[HZGX RUTWUXVZZ[[ RUTWVYZZ[\\[]Z^X RO[V[", + "I[MOLMLQMONNPMTMWNXPXQWSTT RTMVNWPWQVSTT RQTTTWUXWXXWZT[P[MZLXLWMVNWMX RTTVUWWWXVZT[", + "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ", + "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ ROGOFNFNGOIQJSJUIVG", + "H\\MMM[ RNMN[ RJMQM RNTPTSSTRVNWMXMYNXOWN RPTSUTVVZW[ RPTRUSVUZV[X[YZZX RJ[Q[", + "G]NMNQMWLZK[J[IZJYKZ RWMW[ RXMX[ RKM[M RT[[[", + "G^LML[ RLMR[ RMMRY RXMR[ RXMX[ RYMY[ RIMMM RXM\\M RI[O[ RU[\\[", + "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RMTWT RI[P[ RT[[[", + "H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM", + "G]LML[ RMMM[ RWMW[ RXMX[ RIM[M RI[P[ RT[[[", + "G\\LMLb RMMMb RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIMMM RIbPb", + "H[WPVQWRXQXPVNTMQMNNLPKSKULXNZQ[S[VZXX RQMONMPLSLUMXOZQ[", + "I\\RMR[ RSMS[ RMMLRLMYMYRXM RO[V[", + "I[LMR[ RMMRY RXMR[P_NaLbKbJaK`La RJMPM RTMZM", + "H]RFRb RSFSb ROFSF RRPQNPMNMLNKQKWLZN[P[QZRX RNMMNLQLWMZN[ RWMXNYQYWXZW[ RSPTNUMWMYNZQZWYZW[U[TZSX RObVb", + "H\\LMW[ RMMX[ RXML[ RJMPM RTMZM RJ[P[ RT[Z[", + "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[[[[`Z[", + "G]LMLTMVPWRWUVWT RMMMTNVPW RWMW[ RXMX[ RIMPM RTM[M RT[[[", + "CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[", + "CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[``_[", + "H]QMQ[ RRMR[ RLMKRKMUM RRTVTYUZWZXYZV[N[ RVTXUYWYXXZV[", /* ъ */ + "E_JMJ[ RKMK[ RGMNM RKTOTRUSWSXRZO[G[ ROTQURWRXQZO[ RYMY[ RZMZ[ RVM]M RV[][", /* ы */ + "J[OMO[ RPMP[ RLMSM RPTTTWUXWXXWZT[L[ RTTVUWWWXVZT[", /* ь */ + "H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP", /* э */ + "DaIMI[ RJMJ[ RFMMM RF[M[ RVMSNQPPSPUQXSZV[X[[Z]X^U^S]P[NXMVM RVMTNRPQSQURXTZV[ RX[ZZ\\X]U]S\\PZNXM RJTPT", /* ю */ + "G\\VMV[ RWMW[ RZMOMLNKPKQLSOTVT ROMMNLPLQMSOT RTTQUPVNZM[ RTTRUQVOZN[L[KZJX RS[Z[" /* я */ +}; diff --git a/include/HersheySimplexRoman_sans_normal.h b/include/HersheySimplexRoman_sans_normal.h new file mode 100644 index 0000000000..a3d76ea6fe --- /dev/null +++ b/include/HersheySimplexRoman_sans_normal.h @@ -0,0 +1,102 @@ +/* Hershey Simplex Roman (sans) definition + * First shape has unicode (or ascii) value 0x20 (space) +*/ +const static char* hershey_simplex[] = +{ + "JZ", + "MWRFRT RRYQZR[SZRY", + "JZNFNM RVFVM", + "H]SBLb RYBRb RLOZO RKUYU", + "H\\PBP_ RTBT_ RYIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX", + "F^[FI[ RNFPHPJOLMMKMIKIIJGLFNFPGSHVHYG[F RWTUUTWTYV[X[ZZ[X[VYTWT", + "E_\\O\\N[MZMYNXPVUTXRZP[L[JZIYHWHUISJRQNRMSKSIRGPFNGMIMKNNPQUXWZY[[[\\Z\\Y", + "MWRHQGRFSGSIRKQL", + "KYVBTDRGPKOPOTPYR]T`Vb", + "KYNBPDRGTKUPUTTYR]P`Nb", + "JZRFRR RMIWO RWIMO", + "E_RIR[ RIR[R", + "MWSZR[QZRYSZS\\R^Q_", + "E_IR[R", + "MWRYQZR[SZRY", + "G][BIb", + "H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF", + "H\\NJPISFS[", + "H\\LKLJMHNGPFTFVGWHXJXLWNUQK[Y[", + "H\\MFXFRNUNWOXPYSYUXXVZS[P[MZLYKW", + "H\\UFKTZT RUFU[", + "H\\WFMFLOMNPMSMVNXPYSYUXXVZS[P[MZLYKW", + "H\\XIWGTFRFOGMJLOLTMXOZR[S[VZXXYUYTXQVOSNRNOOMQLT", + "H\\YFO[ RKFYF", + "H\\PFMGLILKMMONSOVPXRYTYWXYWZT[P[MZLYKWKTLRNPQOUNWMXKXIWGTFPF", + "H\\XMWPURRSQSNRLPKMKLLINGQFRFUGWIXMXRWWUZR[P[MZLX", + "MWRMQNROSNRM RRYQZR[SZRY", + "MWRMQNROSNRM RSZR[QZRYSZS\\R^Q_", + "F^ZIJRZ[", + "E_IO[O RIU[U", + "F^JIZRJ[", + "I[LKLJMHNGPFTFVGWHXJXLWNVORQRT RRYQZR[SZRY", + "E`WNVLTKQKOLNMMPMSNUPVSVUUVS RQKOMNPNSOUPV RWKVSVUXVZV\\T]Q]O\\L[JYHWGTFQFNGLHJJILHOHRIUJWLYNZQ[T[WZYYZX RXKWSWUXV", + "I[RFJ[ RRFZ[ RMTWT", + "G\\KFK[ RKFTFWGXHYJYLXNWOTP RKPTPWQXRYTYWXYWZT[K[", + "H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZV", + "G\\KFK[ RKFRFUGWIXKYNYSXVWXUZR[K[", + "H[LFL[ RLFYF RLPTP RL[Y[", + "HZLFL[ RLFYF RLPTP", + "H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZVZS RUSZS", + "G]KFK[ RYFY[ RKPYP", + "NVRFR[", + "JZVFVVUYTZR[P[NZMYLVLT", + "G\\KFK[ RYFKT RPOY[", + "HYLFL[ RL[X[", + "F^JFJ[ RJFR[ RZFR[ RZFZ[", + "G]KFK[ RKFY[ RYFY[", + "G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF", + "G\\KFK[ RKFTFWGXHYJYMXOWPTQKQ", + "G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RSWY]", + "G\\KFK[ RKFTFWGXHYJYLXNWOTPKP RRPY[", + "H\\YIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX", + "JZRFR[ RKFYF", + "G]KFKULXNZQ[S[VZXXYUYF", + "I[JFR[ RZFR[", + "F^HFM[ RRFM[ RRFW[ R\\FW[", + "H\\KFY[ RYFK[", + "I[JFRPR[ RZFRP", + "H\\YFK[ RKFYF RK[Y[", + "KYOBOb RPBPb ROBVB RObVb", + "KYKFY^", + "KYTBTb RUBUb RNBUB RNbUb", + "JZPLRITL RMORJWO RRJR[", + "JZJ]Z]", + "MWSFRGQIQKRLSKRJ", + "I\\XMX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + "H[LFL[ RLPNNPMSMUNWPXSXUWXUZS[P[NZLX", + "I[XPVNTMQMONMPLSLUMXOZQ[T[VZXX", + "I\\XFX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + "I[LSXSXQWOVNTMQMONMPLSLUMXOZQ[T[VZXX", + "MYWFUFSGRJR[ ROMVM", + "I\\XMX]W`VaTbQbOa RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + "I\\MFM[ RMQPNRMUMWNXQX[", + "NVQFRGSFREQF RRMR[", + "MWRFSGTFSERF RSMS^RaPbNb", + "IZMFM[ RWMMW RQSX[", + "NVRFR[", + "CaGMG[ RGQJNLMOMQNRQR[ RRQUNWMZM\\N]Q][", + "I\\MMM[ RMQPNRMUMWNXQX[", + "I\\QMONMPLSLUMXOZQ[T[VZXXYUYSXPVNTMQM", + "H[LMLb RLPNNPMSMUNWPXSXUWXUZS[P[NZLX", + "I\\XMXb RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + "KXOMO[ ROSPPRNTMWM", + "J[XPWNTMQMNNMPNRPSUTWUXWXXWZT[Q[NZMX", + "MYRFRWSZU[W[ ROMVM", + "I\\MMMWNZP[S[UZXW RXMX[", + "JZLMR[ RXMR[", + "G]JMN[ RRMN[ RRMV[ RZMV[", + "J[MMX[ RXMM[", + "JZLMR[ RXMR[P_NaLbKb", + "J[XMM[ RMMXM RM[X[", + "KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb", + "NVRBRb", + "KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb", + "F^IUISJPLONOPPTSVTXTZS[Q RISJQLPNPPQTTVUXUZT[Q[O", + "KYQFOGNINKOMQNSNUMVKVIUGSFQF" +}; diff --git a/include/base_struct.h b/include/base_struct.h index a4da530487..e813709fab 100644 --- a/include/base_struct.h +++ b/include/base_struct.h @@ -491,14 +491,14 @@ public: wxString m_Text; /* text! */ wxPoint m_Pos; /* XY position of anchor text. */ wxSize m_Size; /* XY size of text */ - int m_Width; /* text width */ + int m_Width; /* pen size used to draw this text */ int m_Orient; /* Orient in 0.1 degrees */ - bool m_Mirror; // Display Normal / mirror + bool m_Mirror; /* Display Normal / mirror */ int m_Attributs; /* flags (visible...) */ - bool m_Italic; /* true to simulate an italic font... */ - bool m_Bold; /* true to use a bold font... */ - GRTextHorizJustifyType m_HJustify; /* Horiz Justify */ - GRTextVertJustifyType m_VJustify; /* Vertical and Vert Justify */ + bool m_Italic; /* true to simulate (or use if exists) an italic font... */ + bool m_Bold; /* true to simulate a bold font ... */ + GRTextHorizJustifyType m_HJustify; /* Horiz justification */ + GRTextVertJustifyType m_VJustify; /* Vertical justification */ bool m_MultilineAllowed; /* true to use multiline option, false to use only single line text * Single line is faster in calculations than multiline */ @@ -576,7 +576,7 @@ public: * If aLine == -1, the full area (considering all lines) is returned */ EDA_Rect GetTextBox( int aLine = -1); - + /** Function GetInterline * return the distance between 2 text lines * has meaning only for multiline texts diff --git a/include/drawtxt.h b/include/drawtxt.h index 3d1cf1b080..30567e6988 100644 --- a/include/drawtxt.h +++ b/include/drawtxt.h @@ -9,6 +9,26 @@ class WinEDA_DrawPanel; +/** Function Clamp_Text_PenSize + *As a rule, pen width should not be >1/4em, otherwise the character + * will be cluttered up in its own fatness + * The pen width max is aSize/4 for bold texts, and aSize/6 for normal texts + * The "best" pen width is aSize/5 for bold texts, + * so the clamp is consistant with bold option. + * @param aPenSize = the pen size to clamp + * @param aSize the char size (height or width, od its wxSize) + * @param aBold = true if text accept bold pen size + * @return the max pen size allowed +*/ +int Clamp_Text_PenSize( int aPenSize, int aSize, bool aBold = true); +int Clamp_Text_PenSize( int aPenSize, wxSize aSize, bool aBold = true); + +/** Function GetPensizeForBold + * @return the "best" value for a pen size to draw/plot a bold text + * @param aTextSize = the char size (height or width) + */ +int GetPenSizeForBold( int aTextSize ); + /** Function ReturnGraphicTextWidth * @return the X size of the graphic text * the full X size is ReturnGraphicTextWidth + the thickness of graphic lines @@ -32,9 +52,9 @@ int NegableTextLength( const wxString& aText ); * @param aV_justify = vertical justification (bottom, center, top) * @param aWidth = line width (pen width) (default = 0) * if width < 0 : draw segments in sketch mode, width = abs(width) + * Use a value min(aSize.x, aSize.y) / 5 for a bold text * @param aItalic = true to simulate an italic font * @param aBold = true to use a bold font - * @param aNegable = true to enable the ~ char for overbarring * @param aCallback() = function called (if non null) to draw each segment. * used to draw 3D texts or for plotting, NULL for normal drawings */ @@ -49,7 +69,7 @@ void DrawGraphicText( WinEDA_DrawPanel * aPanel, enum GRTextVertJustifyType aV_justify, int aWidth, bool aItalic, - bool aBold, + bool aBold, void (*aCallback)( int x0, int y0, int xf, int yf ) = NULL ); /** Function PlotGraphicText diff --git a/include/hershey_fonts.h b/include/hershey_fonts.h index 147a058bae..947330ecef 100644 --- a/include/hershey_fonts.h +++ b/include/hershey_fonts.h @@ -27,7 +27,7 @@ /* * Hershey fonts are vectored fonts. * Note one can find many formats for these vectored fonts - * here is the formats used : + * here is the format used : * >shapes are a set of polygons. * >A given shape includes one or more polygons. * >corner coordinates are coded by a XY pair. @@ -35,273 +35,8 @@ * >The coordinate (-50,0) or " R" is the Pen Up command (end of the current polygon) */ -/* Hershey Simplex Roman (sans) definition */ -const static char* hershey_simplex[] = -{ - "JZ", - "MWRFRT RRYQZR[SZRY", - "JZNFNM RVFVM", - "H]SBLb RYBRb RLOZO RKUYU", - "H\\PBP_ RTBT_ RYIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX", - "F^[FI[ RNFPHPJOLMMKMIKIIJGLFNFPGSHVHYG[F RWTUUTWTYV[X[ZZ[X[VYTWT", - "E_\\O\\N[MZMYNXPVUTXRZP[L[JZIYHWHUISJRQNRMSKSIRGPFNGMIMKNNPQUXWZY[[[\\Z\\Y", - "MWRHQGRFSGSIRKQL", - "KYVBTDRGPKOPOTPYR]T`Vb", - "KYNBPDRGTKUPUTTYR]P`Nb", - "JZRFRR RMIWO RWIMO", - "E_RIR[ RIR[R", - "MWSZR[QZRYSZS\\R^Q_", - "E_IR[R", - "MWRYQZR[SZRY", - "G][BIb", - "H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF", - "H\\NJPISFS[", - "H\\LKLJMHNGPFTFVGWHXJXLWNUQK[Y[", - "H\\MFXFRNUNWOXPYSYUXXVZS[P[MZLYKW", - "H\\UFKTZT RUFU[", - "H\\WFMFLOMNPMSMVNXPYSYUXXVZS[P[MZLYKW", - "H\\XIWGTFRFOGMJLOLTMXOZR[S[VZXXYUYTXQVOSNRNOOMQLT", - "H\\YFO[ RKFYF", - "H\\PFMGLILKMMONSOVPXRYTYWXYWZT[P[MZLYKWKTLRNPQOUNWMXKXIWGTFPF", - "H\\XMWPURRSQSNRLPKMKLLINGQFRFUGWIXMXRWWUZR[P[MZLX", - "MWRMQNROSNRM RRYQZR[SZRY", - "MWRMQNROSNRM RSZR[QZRYSZS\\R^Q_", - "F^ZIJRZ[", - "E_IO[O RIU[U", - "F^JIZRJ[", - "I[LKLJMHNGPFTFVGWHXJXLWNVORQRT RRYQZR[SZRY", - "E`WNVLTKQKOLNMMPMSNUPVSVUUVS RQKOMNPNSOUPV RWKVSVUXVZV\\T]Q]O\\L[JYHWGTFQFNGLHJJILHOHRIUJWLYNZQ[T[WZYYZX RXKWSWUXV", - "I[RFJ[ RRFZ[ RMTWT", - "G\\KFK[ RKFTFWGXHYJYLXNWOTP RKPTPWQXRYTYWXYWZT[K[", - "H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZV", - "G\\KFK[ RKFRFUGWIXKYNYSXVWXUZR[K[", - "H[LFL[ RLFYF RLPTP RL[Y[", - "HZLFL[ RLFYF RLPTP", - "H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZVZS RUSZS", - "G]KFK[ RYFY[ RKPYP", - "NVRFR[", - "JZVFVVUYTZR[P[NZMYLVLT", - "G\\KFK[ RYFKT RPOY[", - "HYLFL[ RL[X[", - "F^JFJ[ RJFR[ RZFR[ RZFZ[", - "G]KFK[ RKFY[ RYFY[", - "G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF", - "G\\KFK[ RKFTFWGXHYJYMXOWPTQKQ", - "G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RSWY]", - "G\\KFK[ RKFTFWGXHYJYLXNWOTPKP RRPY[", - "H\\YIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX", - "JZRFR[ RKFYF", - "G]KFKULXNZQ[S[VZXXYUYF", - "I[JFR[ RZFR[", - "F^HFM[ RRFM[ RRFW[ R\\FW[", - "H\\KFY[ RYFK[", - "I[JFRPR[ RZFRP", - "H\\YFK[ RKFYF RK[Y[", - "KYOBOb RPBPb ROBVB RObVb", - "KYKFY^", - "KYTBTb RUBUb RNBUB RNbUb", - "JZPLRITL RMORJWO RRJR[", - "JZJ]Z]", - "MWSFRGQIQKRLSKRJ", - "I\\XMX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", - "H[LFL[ RLPNNPMSMUNWPXSXUWXUZS[P[NZLX", - "I[XPVNTMQMONMPLSLUMXOZQ[T[VZXX", - "I\\XFX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", - "I[LSXSXQWOVNTMQMONMPLSLUMXOZQ[T[VZXX", - "MYWFUFSGRJR[ ROMVM", - "I\\XMX]W`VaTbQbOa RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", - "I\\MFM[ RMQPNRMUMWNXQX[", - "NVQFRGSFREQF RRMR[", - "MWRFSGTFSERF RSMS^RaPbNb", - "IZMFM[ RWMMW RQSX[", - "NVRFR[", - "CaGMG[ RGQJNLMOMQNRQR[ RRQUNWMZM\\N]Q][", - "I\\MMM[ RMQPNRMUMWNXQX[", - "I\\QMONMPLSLUMXOZQ[T[VZXXYUYSXPVNTMQM", - "H[LMLb RLPNNPMSMUNWPXSXUWXUZS[P[NZLX", - "I\\XMXb RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", - "KXOMO[ ROSPPRNTMWM", - "J[XPWNTMQMNNMPNRPSUTWUXWXXWZT[Q[NZMX", - "MYRFRWSZU[W[ ROMVM", - "I\\MMMWNZP[S[UZXW RXMX[", - "JZLMR[ RXMR[", - "G]JMN[ RRMN[ RRMV[ RZMV[", - "J[MMX[ RXMM[", - "JZLMR[ RXMR[P_NaLbKb", - "J[XMM[ RMMXM RM[X[", - "KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb", - "NVRBRb", - "KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb", - "F^IUISJPLONOPPTSVTXTZS[Q RISJQLPNPPQTTVUXUZT[Q[O", - "KYQFOGNINKOMQNSNUMVKVIUGSFQF" -}; +#include "HersheySimplexRoman_sans_normal.h" -/* Hershey Duplex Roman (sans bold) definition */ -const static char* hershey_duplex[] = -{ - "JZ", - "MXRFRTST RRFSFST RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY", - "I[NFMGMM RNGMM RNFOGMM RWFVGVM RWGVM RWFXGVM", - "H]SFLb RYFRb RLQZQ RKWYW", - "I\\RBR_S_ RRBSBS_ RWIYIWGTFQFNGLILKMMNNVRWSXUXWWYTZQZOYNX RWIVHTGQGNHMIMKNMVQXSYUYWXYWZT[Q[NZLXNX RXXUZ", - "F^[FI[ RNFPHPJOLMMKMIKIIJGLFNFPGSHVHYG[F RWTUUTWTYV[X[ZZ[X[VYTWT", - "F_\\MZMXNWPUVTXSYQZMZKYJWJUKSLRQOSMTKTISGQFPFNGMIMKNNPQUWXZZ[\\[ R\\M\\NZNXO RYNXPVVUXSZQ[M[KZJYIWIUJSLQQNRMSKSIRG RSHQGPGNH ROGNINKONQQVWXYZZ\\Z\\[", - "MXTHSIRIQHQGRFSFTGTJSLQM RRGRHSHSGRG RSITJ RTHSL", - "KYUBSDQGOKNPNTOYQ]S`UbVb RUBVBTDRGPKOPOTPYR]T`Vb", - "KYNBPDRGTKUPUTTYR]P`NbOb RNBOBQDSGUKVPVTUYS]Q`Ob", - "JZRFQGSQRR RRFRR RRFSGQQRR RMINIVOWO RMIWO RMIMJWNWO RWIVINOMO RWIMO RWIWJMNMO", - "F_RIRZSZ RRISISZ RJQ[Q[R RJQJR[R", - "MXTZS[R[QZQYRXSXTYT\\S^Q_ RRYRZSZSYRY RS[T\\ RTZS^", - "F_JQ[Q[R RJQJR[R", - "MXRXQYQZR[S[TZTYSXRX RRYRZSZSYRY", - "G^[BIbJb R[B\\BJb", - "H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF ROGMJLOLRMWOZ RNYQZSZVY RUZWWXRXOWJUG RVHSGQGNH", - "H\\NJPISFS[ RNJNKPJRHR[S[", - "H\\LKLJMHNGPFTFVGWHXJXLWNUQL[ RLKMKMJNHPGTGVHWJWLVNTQK[ RLZYZY[ RK[Y[", - "H\\MFXFQO RMFMGWG RWFPO RQNSNVOXQYTYUXXVZS[P[MZLYKWLW RPOSOVPXS RTOWQXTXUWXTZ RXVVYSZPZMYLW ROZLX", - "H\\UIU[V[ RVFV[ RVFKVZV RUILV RLUZUZV", - "H\\MFLO RNGMN RMFWFWG RNGWG RMNPMSMVNXPYSYUXXVZS[P[MZLYKWLW RLOMOONSNVOXR RTNWPXSXUWXTZ RXVVYSZPZMYLW ROZLX", - "H\\VGWIXIWGTFRFOGMJLOLTMXOZR[S[VZXXYUYTXQVOSNRNOOMQ RWHTGRGOH RPGNJMOMTNXQZ RMVOYRZSZVYXV RTZWXXUXTWQTO RXSVPSOROOPMS RQONQMT", - "H\\KFYFO[ RKFKGXG RXFN[O[", - "H\\PFMGLILKMMNNPOTPVQWRXTXWWYTZPZMYLWLTMRNQPPTOVNWMXKXIWGTFPF RNGMIMKNMPNTOVPXRYTYWXYWZT[P[MZLYKWKTLRNPPOTNVMWKWIVG RWHTGPGMH RLXOZ RUZXX", - "H\\WPURRSQSNRLPKMKLLINGQFRFUGWIXMXRWWUZR[P[MZLXMXNZ RWMVPSR RWNUQRRQRNQLN RPRMPLMLLMIPG RLKNHQGRGUHWK RSGVIWMWRVWTZ RUYRZPZMY", - "MXRMQNQORPSPTOTNSMRM RRNROSOSNRN RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY", - "MXRMQNQORPSPTOTNSMRM RRNROSOSNRN RTZS[R[QZQYRXSXTYT\\S^Q_ RRYRZSZSYRY RS[T\\ RTZS^", - "F^ZIJRZ[", - "F_JM[M[N RJMJN[N RJU[U[V RJUJV[V", - "F^JIZRJ[", - "I\\LKLJMHNGQFTFWGXHYJYLXNWOUPRQ RLKMKMJNHQGTGWHXJXLWNUORP RMIPG RUGXI RXMTP RRPRTSTSP RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY", - "E`WNVLTKQKOLNMMPMSNUPVSVUUVS RQKOMNPNSOUPV RWKVSVUXVZV\\T]Q]O\\L[JYHWGTFQFNGLHJJILHOHRIUJWLYNZQ[T[WZYYZX RXKWSWUXV", - "H\\RFJ[ RRIK[J[ RRIY[Z[ RRFZ[ RMUWU RLVXV", - "H\\LFL[ RMGMZ RLFTFWGXHYJYMXOWPTQ RMGTGWHXJXMWOTP RMPTPWQXRYTYWXYWZT[L[ RMQTQWRXTXWWYTZMZ", - "H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZV RZKYKXIWHUGQGOHMKLNLSMVOYQZUZWYXXYVZV", - "H]LFL[ RMGMZ RLFSFVGXIYKZNZSYVXXVZS[L[ RMGSGVHWIXKYNYSXVWXVYSZMZ", - "I\\MFM[ RNGNZ RMFYF RNGYGYF RNPTPTQ RNQTQ RNZYZY[ RM[Y[", - "I[MFM[ RNGN[M[ RMFYF RNGYGYF RNPTPTQ RNQTQ", - "H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZVZRUR RZKYKXIWHUGQGOHNIMKLNLSMVNXOYQZUZWYXXYVYSUSUR", - "G]KFK[ RKFLFL[K[ RYFXFX[Y[ RYFY[ RLPXP RLQXQ", - "NWRFR[S[ RRFSFS[", - "J[VFVVUYSZQZOYNVMV RVFWFWVVYUZS[Q[OZNYMV", - "H]LFL[M[ RLFMFM[ RZFYFMR RZFMS RPOY[Z[ RQOZ[", - "IZMFM[ RMFNFNZ RNZYZY[ RM[Y[", - "F^JFJ[ RKKK[J[ RKKR[ RJFRX RZFRX RYKR[ RYKY[Z[ RZFZ[", - "G]KFK[ RLIL[K[ RLIY[ RKFXX RXFXX RXFYFY[", - "G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RQGNHLKKNKSLVNYQZSZVYXVYSYNXKVHSGQG", - "H\\LFL[ RMGM[L[ RLFUFWGXHYJYMXOWPUQMQ RMGUGWHXJXMWOUPMP", - "G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RQGNHLKKNKSLVNYQZSZVYXVYSYNXKVHSGQG RSXX]Y] RSXTXY]", - "H\\LFL[ RMGM[L[ RLFTFWGXHYJYMXOWPTQMQ RMGTGWHXJXMWOTPMP RRQX[Y[ RSQY[", - "H\\YIWGTFPFMGKIKKLMMNOOTQVRWSXUXXWYTZPZNYMXKX RYIWIVHTGPGMHLILKMMONTPVQXSYUYXWZT[P[MZKX", - "J[RGR[ RSGS[R[ RLFYFYG RLFLGYG", - "G]KFKULXNZQ[S[VZXXYUYF RKFLFLUMXNYQZSZVYWXXUXFYF", - "H\\JFR[ RJFKFRX RZFYFRX RZFR[", - "E_GFM[ RGFHFMX RRFMX RRIM[ RRIW[ RRFWX R]F\\FWX R]FW[", - "H\\KFX[Y[ RKFLFY[ RYFXFK[ RYFL[K[", - "I\\KFRPR[S[ RKFLFSP RZFYFRP RZFSPS[", - "H\\XFK[ RYFL[ RKFYF RKFKGXG RLZYZY[ RK[Y[", - "KYOBOb RPBPb ROBVB RObVb", - "KYKFY^", - "KYTBTb RUBUb RNBUB RNbUb", - "JZPLRITL RMORJWO RRJR[", - "JZJ]Z]", - "MXTFRGQIQLRMSMTLTKSJRJQK RRKRLSLSKRK RRGQK RQIRJ", - "H\\WMW[X[ RWMXMX[ RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX", - "H\\LFL[M[ RLFMFM[ RMPONQMTMVNXPYSYUXXVZT[Q[OZMX RMPQNTNVOWPXSXUWXVYTZQZMX", - "I[XPVNTMQMONMPLSLUMXOZQ[T[VZXX RXPWQVOTNQNOONPMSMUNXOYQZTZVYWWXX", - "H\\WFW[X[ RWFXFX[ RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX", - "I[MTXTXQWOVNTMQMONMPLSLUMXOZQ[T[VZXX RMSWSWQVOTNQNOONPMSMUNXOYQZTZVYWWXX", - "LZWFUFSGRJR[S[ RWFWGUGSH RTGSJS[ ROMVMVN ROMONVN", - "H\\XMWMW\\V_U`SaQaO`N_L_ RXMX\\W_UaSbPbNaL_ RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX", - "H\\LFL[M[ RLFMFM[ RMQPNRMUMWNXQX[ RMQPORNTNVOWQW[X[", - "NWRFQGQHRISITHTGSFRF RRGRHSHSGRG RRMR[S[ RRMSMS[", - "NWRFQGQHRISITHTGSFRF RRGRHSHSGRG RRMRbSb RRMSMSb", - "H[LFL[M[ RLFMFM[ RXMWMMW RXMMX RPTV[X[ RQSX[", - "NWRFR[S[ RRFSFS[", - "CbGMG[H[ RGMHMH[ RHQKNMMPMRNSQS[ RHQKOMNONQORQR[S[ RSQVNXM[M]N^Q^[ RSQVOXNZN\\O]Q][^[", - "H\\LML[M[ RLMMMM[ RMQPNRMUMWNXQX[ RMQPORNTNVOWQW[X[", - "I\\QMONMPLSLUMXOZQ[T[VZXXYUYSXPVNTMQM RQNOONPMSMUNXOYQZTZVYWXXUXSWPVOTNQN", - "H\\LMLbMb RLMMMMb RMPONQMTMVNXPYSYUXXVZT[Q[OZMX RMPQNTNVOWPXSXUWXVYTZQZMX", - "H\\WMWbXb RWMXMXb RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX", - "KYOMO[P[ ROMPMP[ RPSQPSNUMXM RPSQQSOUNXNXM", - "J[XPWNTMQMNNMPNRPSUUWV RVUWWWXVZ RWYTZQZNY ROZNXMX RXPWPVN RWOTNQNNO RONNPOR RNQPRUTWUXWXXWZT[Q[NZMX", - "MXRFR[S[ RRFSFS[ ROMVMVN ROMONVN", - "H\\LMLWMZO[R[TZWW RLMMMMWNYPZRZTYWW RWMW[X[ RWMXMX[", - "JZLMR[ RLMMMRY RXMWMRY RXMR[", - "F^IMN[ RIMJMNX RRMNX RRPN[ RRPV[ RRMVX R[MZMVX R[MV[", - "I[LMW[X[ RLMMMX[ RXMWML[ RXMM[L[", - "JZLMR[ RLMMMRY RXMWMRYNb RXMR[ObNb", - "I[VNL[ RXMNZ RLMXM RLMLNVN RNZXZX[ RL[X[", - "KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb", - "NVRBRb", - "KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb", - "F^IUISJPLONOPPTSVTXTZS[Q RISJQLPNPPQTTVUXUZT[Q[O", - "KYQFOGNINKOMQNSNUMVKVIUGSFQF RQFNIOMSNVKUGQF RSFOGNKQNUMVISF" -}; #if defined(KICAD_CYRILLIC) -const static char* hershey_cyrillic[] = -{ - "H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[", - "G]LFL[ RMFM[ RIFYFYLXF RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[", - "G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[", - "I[NFN[ ROFO[ RKFZFZLYF RK[R[", - "F^NFNLMTLXKZJ[ RXFX[ RYFY[ RKF\\F RG[\\[ RG[Gb RH[Gb R[[\\b R\\[\\b", - "G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[", - "CbRFR[ RSFS[ ROFVF RGGHHGIFHFGGFHFIGJIKMLONPWPYOZM[I\\G]F^F_G_H^I]H^G RNPLQKSJXIZH[ RNPMQLSKXJZI[G[FZEX RWPYQZS[X\\Z][ RWPXQYSZX[Z\\[^[_Z`X RO[V[", - "H\\LIKFKLLINGPFTFWGXIXLWNTOQO RTFVGWIWLVNTO RTOVPXRYTYWXYWZT[O[MZLYKWKVLUMVLW RWQXTXWWYVZT[", - "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[", - "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[ RN@N?M?M@NBPCTCVBW@", - "F^KFK[ RLFL[ RHFOF RLPSPUOVMWIXGYFZF[G[HZIYHZG RSPUQVSWXXZY[ RSPTQUSVXWZX[Z[[Z\\X RH[O[", - "E^MFMLLTKXJZI[H[GZGYHXIYHZ RXFX[ RYFY[ RJF\\F RU[\\[", - "F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][", - "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[", - "G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF", - "F^KFK[ RLFL[ RXFX[ RYFY[ RHF\\F RH[O[ RU[\\[", - "G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[", - "G\\XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXXYV RQFOGMILKKNKSLVMXOZQ[", - "I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[", - "H]KFRV RLFSV RZFSVQYPZN[M[LZLYMXNYMZ RIFOF RVF\\F", - "F_RFR[ RSFS[ ROFVF RPILJJLIOIRJULWPXUXYW[U\\R\\O[LYJUIPI RPIMJKLJOJRKUMWPX RUXXWZU[R[OZLXJUI RO[V[", - "H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[", - "F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RH[\\[ R[[\\b R\\[\\b", - "F]KFKQLSOTRTUSWQ RLFLQMSOT RWFW[ RXFX[ RHFOF RTF[F RT[[[", - "BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[", - "BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[ R`[ab Ra[ab", - "F`PFP[ RQFQ[ RIFHLHFTF RQPXP[Q\\R]T]W\\Y[ZX[M[ RXPZQ[R\\T\\W[YZZX[", /* Ъ */ - "CaHFH[ RIFI[ REFLF RIPPPSQTRUTUWTYSZP[E[ RPPRQSRTTTWSYRZP[ R[F[[ R\\F\\[ RXF_F RX[_[", /* Ы */ - "H]MFM[ RNFN[ RJFQF RNPUPXQYRZTZWYYXZU[J[ RUPWQXRYTYWXYWZU[", /* Ь */ - "H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP", /* Э */ - "CbHFH[ RIFI[ REFLF RE[L[ RVFSGQIPKOOORPVQXSZV[X[[Z]X^V_R_O^K]I[GXFVF RVFTGRIQKPOPRQVRXTZV[ RX[ZZ\\X]V^R^O]K\\IZGXF RIPOP", /* Ю */ - "G]WFW[ RXFX[ R[FOFLGKHJJJLKNLOOPWP ROFMGLHKJKLLNMOOP RRPPQORLYKZJZIY RPQOSMZL[J[IYIX RT[[[", /* Я */ - "I]NONPMPMONNPMTMVNWOXQXXYZZ[ RWOWXXZZ[[[ RWQVRPSMTLVLXMZP[S[UZWX RPSNTMVMXNZP[", /* letter */ - "H\\XFWGQINKLNKQKULXNZQ[S[VZXXYUYSXPVNSMQMNNLPKS RXFWHUIQJNLLN RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM", - "H\\MMM[ RNMN[ RJMUMXNYPYQXSUT RUMWNXPXQWSUT RNTUTXUYWYXXZU[J[ RUTWUXWXXWZU[", - "HZMMM[ RNMN[ RJMXMXRWM RJ[Q[", - "F]NMNQMWLZK[ RWMW[ RXMX[ RKM[M RI[H`H[[[[`Z[", - "H[LSXSXQWOVNTMQMNNLPKSKULXNZQ[S[VZXX RWSWPVN RQMONMPLSLUMXOZQ[", - "E`RMR[ RSMS[ ROMVM RJNIOHNIMJMKNMRNSPTUTWSXRZN[M\\M]N\\O[N RPTNUMVKZJ[ RPTNVLZK[I[HZGX RUTWUXVZZ[[ RUTWVYZZ[\\[]Z^X RO[V[", - "I[MOLMLQMONNPMTMWNXPXQWSTT RTMVNWPWQVSTT RQTTTWUXWXXWZT[P[MZLXLWMVNWMX RTTVUWWWXVZT[", - "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ", - "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ ROGOFNFNGOIQJSJUIVG", - "H\\MMM[ RNMN[ RJMQM RNTPTSSTRVNWMXMYNXOWN RPTSUTVVZW[ RPTRUSVUZV[X[YZZX RJ[Q[", - "G]NMNQMWLZK[J[IZJYKZ RWMW[ RXMX[ RKM[M RT[[[", - "G^LML[ RLMR[ RMMRY RXMR[ RXMX[ RYMY[ RIMMM RXM\\M RI[O[ RU[\\[", - "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RMTWT RI[P[ RT[[[", - "H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM", - "G]LML[ RMMM[ RWMW[ RXMX[ RIM[M RI[P[ RT[[[", - "G\\LMLb RMMMb RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIMMM RIbPb", - "H[WPVQWRXQXPVNTMQMNNLPKSKULXNZQ[S[VZXX RQMONMPLSLUMXOZQ[", - "I\\RMR[ RSMS[ RMMLRLMYMYRXM RO[V[", - "I[LMR[ RMMRY RXMR[P_NaLbKbJaK`La RJMPM RTMZM", - "H]RFRb RSFSb ROFSF RRPQNPMNMLNKQKWLZN[P[QZRX RNMMNLQLWMZN[ RWMXNYQYWXZW[ RSPTNUMWMYNZQZWYZW[U[TZSX RObVb", - "H\\LMW[ RMMX[ RXML[ RJMPM RTMZM RJ[P[ RT[Z[", - "G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[[[[`Z[", - "G]LMLTMVPWRWUVWT RMMMTNVPW RWMW[ RXMX[ RIMPM RTM[M RT[[[", - "CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[", - "CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[``_[", - "H]QMQ[ RRMR[ RLMKRKMUM RRTVTYUZWZXYZV[N[ RVTXUYWYXXZV[", /* ъ */ - "E_JMJ[ RKMK[ RGMNM RKTOTRUSWSXRZO[G[ ROTQURWRXQZO[ RYMY[ RZMZ[ RVM]M RV[][", /* ы */ - "J[OMO[ RPMP[ RLMSM RPTTTWUXWXXWZT[L[ RTTVUWWWXVZT[", /* ь */ - "H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP", /* э */ - "DaIMI[ RJMJ[ RFMMM RF[M[ RVMSNQPPSPUQXSZV[X[[Z]X^U^S]P[NXMVM RVMTNRPQSQURXTZV[ RX[ZZ\\X]U]S\\PZNXM RJTPT", /* ю */ - "G\\VMV[ RWMW[ RZMOMLNKPKQLSOTVT ROMMNLPLQMSOT RTTQUPVNZM[ RTTRUQVOZN[L[KZJX RS[Z[" /* я */ -}; +#include "HersheyCyrillic.h" #endif diff --git a/include/worksheet.h b/include/worksheet.h index 30b3e95fc4..bcdc49a4a1 100644 --- a/include/worksheet.h +++ b/include/worksheet.h @@ -11,32 +11,32 @@ #ifndef __WORKSHEET_H__ #define __WORKSHEET_H__ -#define GRID_REF_W 70 /* hauteur de la bande de reference grille */ -#define SIZETEXT 60 /* Dimension des textes du cartouche */ -#define SIZETEXT_REF 50 /* Dimension des lettres du marquage des reperes */ -#define PAS_REF 2000 /* pas des marquages de reference des reperes */ -#define TEXT_VTAB_HEIGHT SIZETEXT*2 +#define GRID_REF_W 70 /* hauteur de la bande de reference grille */ +#define SIZETEXT 60 /* Dimension des textes du cartouche */ +#define SIZETEXT_REF 50 /* Dimension des lettres du marquage des reperes */ +#define PAS_REF 2000 /* pas des marquages de reference des reperes */ +#define TEXT_VTAB_HEIGHT SIZETEXT * 2 #if defined(KICAD_GOST) /* Shtamp */ -#define STAMP_OX 185 * 10000 / 254 -#define STAMP_OY 55 * 10000 / 254 +#define STAMP_OX 185 * 10000 / 254 +#define STAMP_OY 55 * 10000 / 254 -#define STAMP_Y_0 0 -#define STAMP_Y_5 5 * 10000 / 254 -#define STAMP_Y_8 8 * 10000 / 254 -#define STAMP_Y_7 7 * 10000 / 254 -#define STAMP_Y_10 10 * 10000 / 254 -#define STAMP_Y_14 14 * 10000 / 254 -#define STAMP_Y_15 15 * 10000 / 254 -#define STAMP_Y_20 20 * 10000 / 254 -#define STAMP_Y_25 25 * 10000 / 254 -#define STAMP_Y_30 30 * 10000 / 254 -#define STAMP_Y_35 35 * 10000 / 254 -#define STAMP_Y_40 40 * 10000 / 254 -#define STAMP_Y_45 45 * 10000 / 254 -#define STAMP_Y_50 50 * 10000 / 254 -#define STAMP_Y_55 55 * 10000 / 254 +#define STAMP_Y_0 0 +#define STAMP_Y_5 5 * 10000 / 254 +#define STAMP_Y_8 8 * 10000 / 254 +#define STAMP_Y_7 7 * 10000 / 254 +#define STAMP_Y_10 10 * 10000 / 254 +#define STAMP_Y_14 14 * 10000 / 254 +#define STAMP_Y_15 15 * 10000 / 254 +#define STAMP_Y_20 20 * 10000 / 254 +#define STAMP_Y_25 25 * 10000 / 254 +#define STAMP_Y_30 30 * 10000 / 254 +#define STAMP_Y_35 35 * 10000 / 254 +#define STAMP_Y_40 40 * 10000 / 254 +#define STAMP_Y_45 45 * 10000 / 254 +#define STAMP_Y_50 50 * 10000 / 254 +#define STAMP_Y_55 55 * 10000 / 254 #define STAMP_X_0 0 #define STAMP_X_10 10 * 10000 / 254 @@ -58,59 +58,58 @@ #define STAMP_X_178 178 * 10000 / 254 #define STAMP_X_185 185 * 10000 / 254 -#define STAMP_5 5 * 10000 / 254 -#define STAMP_7 7 * 10000 / 254 -#define STAMP_12 12 * 10000 / 254 +#define STAMP_5 5 * 10000 / 254 +#define STAMP_7 7 * 10000 / 254 +#define STAMP_12 12 * 10000 / 254 -#define STAMP_145 145 * 10000 / 254 -#define STAMP_110 110 * 10000 / 254 -#define STAMP_85 85 * 10000 / 254 -#define STAMP_60 60 * 10000 / 254 -#define STAMP_25 25 * 10000 / 254 +#define STAMP_145 145 * 10000 / 254 +#define STAMP_110 110 * 10000 / 254 +#define STAMP_85 85 * 10000 / 254 +#define STAMP_60 60 * 10000 / 254 +#define STAMP_25 25 * 10000 / 254 #endif /* Les coord ci dessous sont relatives au coin bas - droit de la feuille, et -seront soustraires de cette origine -*/ -#define BLOCK_OX 4200 -#define BLOCK_KICAD_VERSION_X BLOCK_OX - SIZETEXT -#define BLOCK_KICAD_VERSION_Y SIZETEXT -#define BLOCK_REV_X 820 -#define BLOCK_REV_Y (SIZETEXT*3) -#define BLOCK_DATE_X BLOCK_OX - (SIZETEXT*15) -#define BLOCK_DATE_Y (SIZETEXT*3) -#define BLOCK_ID_SHEET_X 820 -#define BLOCK_ID_SHEET_Y SIZETEXT -#define BLOCK_SIZE_SHEET_X BLOCK_OX - SIZETEXT -#define BLOCK_SIZE_SHEET_Y (SIZETEXT*3) -#define BLOCK_TITLE_X BLOCK_OX - SIZETEXT -#define BLOCK_TITLE_Y (SIZETEXT*5) -#define BLOCK_FULLSHEETNAME_X BLOCK_OX - SIZETEXT -#define BLOCK_FULLSHEETNAME_Y (SIZETEXT * 7) -#define BLOCK_FILENAME_X BLOCK_OX - SIZETEXT -#define BLOCK_FILENAME_Y (SIZETEXT * 9) -#define BLOCK_COMMENT_X BLOCK_OX - SIZETEXT + * seront soustraires de cette origine + */ +#define BLOCK_OX 4200 +#define BLOCK_KICAD_VERSION_X BLOCK_OX - SIZETEXT +#define BLOCK_KICAD_VERSION_Y SIZETEXT +#define BLOCK_REV_X 820 +#define BLOCK_REV_Y (SIZETEXT * 3) +#define BLOCK_DATE_X BLOCK_OX - (SIZETEXT * 15) +#define BLOCK_DATE_Y (SIZETEXT * 3) +#define BLOCK_ID_SHEET_X 820 +#define BLOCK_ID_SHEET_Y SIZETEXT +#define BLOCK_SIZE_SHEET_X BLOCK_OX - SIZETEXT +#define BLOCK_SIZE_SHEET_Y (SIZETEXT * 3) +#define BLOCK_TITLE_X BLOCK_OX - SIZETEXT +#define BLOCK_TITLE_Y (SIZETEXT * 5) +#define BLOCK_FULLSHEETNAME_X BLOCK_OX - SIZETEXT +#define BLOCK_FULLSHEETNAME_Y (SIZETEXT * 7) +#define BLOCK_FILENAME_X BLOCK_OX - SIZETEXT +#define BLOCK_FILENAME_Y (SIZETEXT * 9) +#define BLOCK_COMMENT_X BLOCK_OX - SIZETEXT #define VARIABLE_BLOCK_START_POSITION (SIZETEXT * 10) -#define BLOCK_COMPANY_Y (SIZETEXT*11) -#define BLOCK_COMMENT1_Y (SIZETEXT*13) -#define BLOCK_COMMENT2_Y (SIZETEXT*15) -#define BLOCK_COMMENT3_Y (SIZETEXT*17) -#define BLOCK_COMMENT4_Y (SIZETEXT*19) +#define BLOCK_COMPANY_Y (SIZETEXT * 11) +#define BLOCK_COMMENT1_Y (SIZETEXT * 13) +#define BLOCK_COMMENT2_Y (SIZETEXT * 15) +#define BLOCK_COMMENT3_Y (SIZETEXT * 17) +#define BLOCK_COMMENT4_Y (SIZETEXT * 19) struct Ki_WorkSheetData { public: - int m_Type; /* nombre permettant de reconnaitre la description */ - Ki_WorkSheetData * Pnext; - int m_Posx, m_Posy; /* position de l'element ou point de depart du segment */ - int m_Endx, m_Endy; /* extremite d'un element type segment ou cadre */ - const wxChar * m_Legende; /* Pour m_Textes: texte a afficher avant le texte lui meme */ - const wxChar * m_Text; /* Pour m_Textes:pointeur sur le texte a afficher */ + int m_Type; /* nombre permettant de reconnaitre la description */ + Ki_WorkSheetData* Pnext; + int m_Posx, m_Posy; /* position de l'element ou point de depart du segment */ + int m_Endx, m_Endy; /* extremite d'un element type segment ou cadre */ + const wxChar* m_Legende; /* Pour m_Textes: texte a afficher avant le texte lui meme */ + const wxChar* m_Text; /* Pour m_Textes:pointeur sur le texte a afficher */ }; /* Type des descriptions Ki_WorkSheetData */ -enum TypeKi_WorkSheetData -{ +enum TypeKi_WorkSheetData { WS_DATE, WS_REV, WS_KICAD_VERSION, diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 41bf7d29b602ce98e279add4e68bf9282fa347db..b35c5d3bd215d1c5bbbc04d5a06fede36a26b85c 100644 GIT binary patch delta 58403 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 I*jLW`A9}7o-2eap diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 173ed5b2c0..cc3bdd61e5 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-21 17:31+0100\n" -"PO-Revision-Date: 2009-05-27 13:36+0100\n" -"Last-Translator: jp charras \n" +"POT-Creation-Date: 2009-05-30 18:52+0100\n" +"PO-Revision-Date: 2009-05-30 18:56+0100\n" +"Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -47,14 +47,6 @@ msgid "Browse Libs modules" msgstr "Liste modules" #: pcbnew/xchgmod.cpp:144 -#: pcbnew/pcbplot.cpp:295 -#: pcbnew/dialog_print_using_printer_base.cpp:128 -#: pcbnew/dialog_netlist_fbp.cpp:85 -#: eeschema/plotps.cpp:212 -#: eeschema/dialog_build_BOM_base.cpp:135 -#: eeschema/annotate_dialog.cpp:216 -#: eeschema/dialog_print_using_printer_base.cpp:72 -#: common/zoom.cpp:273 msgid "Close" msgstr "Fermer" @@ -67,7 +59,6 @@ msgid "Current Value" msgstr "Valeur courante" #: pcbnew/xchgmod.cpp:164 -#: pcbnew/tool_modedit.cpp:60 msgid "New Module" msgstr "Nouveau Module" @@ -101,8 +92,6 @@ msgid "Change module %s (%s) " msgstr "Change module %s (%s) " #: pcbnew/xchgmod.cpp:629 -#: pcbnew/automove.cpp:209 -#: pcbnew/build_BOM_from_board.cpp:58 msgid "No Modules!" msgstr "Pas de Modules!" @@ -115,10 +104,6 @@ msgid "Save Component Files" msgstr "Sauver Fichier Composant" #: pcbnew/xchgmod.cpp:651 -#: pcbnew/gendrill.cpp:330 -#: pcbnew/gendrill.cpp:818 -#: pcbnew/plotps.cpp:46 -#: pcbnew/build_BOM_from_board.cpp:79 msgid "Unable to create file " msgstr "Impossible de créer le fichier " @@ -158,81 +143,45 @@ msgstr "Ok pour arrêter ?" msgid "Incorrect value for Via drill. No via drill change" msgstr "Valeur incorrecte pour perçage. Pas de changement pour la via" -#: pcbnew/class_pcb_text.cpp:226 +#: pcbnew/class_pcb_text.cpp:234 msgid "COTATION" msgstr "COTATION" -#: pcbnew/class_pcb_text.cpp:228 +#: pcbnew/class_pcb_text.cpp:236 msgid "PCB Text" msgstr "Texte PCB" -#: pcbnew/class_pcb_text.cpp:230 -#: pcbnew/class_module.cpp:941 -#: pcbnew/dialog_edit_module.cpp:253 -#: pcbnew/class_drawsegment.cpp:298 -#: pcbnew/class_text_mod.cpp:491 -#: pcbnew/class_zone.cpp:912 -#: pcbnew/sel_layer.cpp:146 -#: pcbnew/class_track.cpp:948 -#: pcbnew/dialog_print_using_printer.cpp:176 -#: pcbnew/class_pad.cpp:554 +#: pcbnew/class_pcb_text.cpp:238 msgid "Layer" msgstr "Couche" -#: pcbnew/class_pcb_text.cpp:234 +#: pcbnew/class_pcb_text.cpp:242 #: pcbnew/cotation.cpp:109 -#: pcbnew/class_text_mod.cpp:497 -#: pcbnew/modedit_onclick.cpp:245 -#: pcbnew/dialog_pcb_text_properties.cpp:166 -#: pcbnew/dialog_print_using_printer_base.cpp:94 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:54 msgid "Mirror" msgstr "Miroir" -#: pcbnew/class_pcb_text.cpp:236 -#: pcbnew/class_text_mod.cpp:481 -#: pcbnew/dialog_display_options_base.cpp:120 -#: eeschema/dialog_options.cpp:266 +#: pcbnew/class_pcb_text.cpp:244 msgid "No" msgstr "Non" -#: pcbnew/class_pcb_text.cpp:238 -#: pcbnew/class_text_mod.cpp:483 -#: pcbnew/dialog_display_options_base.cpp:120 -#: eeschema/dialog_options.cpp:265 +#: pcbnew/class_pcb_text.cpp:246 msgid "Yes" msgstr "Oui" -#: pcbnew/class_pcb_text.cpp:241 -#: pcbnew/class_module.cpp:966 -#: pcbnew/dialog_edit_module.cpp:264 -#: pcbnew/class_text_mod.cpp:500 -#: pcbnew/class_pad.cpp:597 -#: eeschema/class_pin.cpp:1052 +#: pcbnew/class_pcb_text.cpp:249 msgid "Orient" msgstr "Orient" -#: pcbnew/class_pcb_text.cpp:244 +#: pcbnew/class_pcb_text.cpp:252 #: pcbnew/cotation.cpp:125 -#: pcbnew/mirepcb.cpp:110 -#: pcbnew/class_edge_mod.cpp:247 -#: pcbnew/class_drawsegment.cpp:303 -#: pcbnew/class_text_mod.cpp:503 -#: pcbnew/class_track.cpp:976 -#: pcbnew/dialog_pcb_text_properties.cpp:115 -#: eeschema/dialog_cmp_graphic_properties.cpp:185 msgid "Width" msgstr "Epaisseur" -#: pcbnew/class_pcb_text.cpp:247 -#: pcbnew/class_text_mod.cpp:506 -#: pcbnew/class_pad.cpp:568 +#: pcbnew/class_pcb_text.cpp:255 msgid "H Size" msgstr "Taille H" -#: pcbnew/class_pcb_text.cpp:250 -#: pcbnew/class_text_mod.cpp:509 -#: pcbnew/class_pad.cpp:572 +#: pcbnew/class_pcb_text.cpp:258 msgid "V Size" msgstr "Taille V" @@ -245,123 +194,26 @@ msgid "Dimension properties" msgstr "Propriétés des Cotes" #: pcbnew/cotation.cpp:103 -#: pcbnew/muonde.cpp:865 -#: pcbnew/dialog_gendrill.cpp:291 -#: pcbnew/dialog_edit_module.cpp:116 -#: pcbnew/block.cpp:159 -#: pcbnew/mirepcb.cpp:98 -#: pcbnew/set_color.cpp:340 -#: pcbnew/sel_layer.cpp:159 -#: pcbnew/sel_layer.cpp:315 -#: pcbnew/dialog_track_options_base.cpp:132 -#: pcbnew/dialog_non_copper_zones_properties_base.cpp:65 -#: pcbnew/dialog_pcb_text_properties.cpp:97 -#: pcbnew/dialog_edit_module_text_base.cpp:105 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:152 -#: pcbnew/dialog_display_options_base.cpp:131 -#: pcbnew/dialog_orient_footprints.cpp:164 -#: eeschema/eelayer.cpp:237 -#: eeschema/sheetlab.cpp:95 -#: eeschema/dialog_edit_label_base.cpp:68 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:71 -#: gerbview/options.cpp:169 -#: gerbview/options.cpp:297 -#: gerbview/reglage.cpp:106 -#: gerbview/set_color.cpp:311 -#: common/get_component_dialog.cpp:123 -#: common/displlst.cpp:105 msgid "OK" msgstr "OK" #: pcbnew/cotation.cpp:106 -#: pcbnew/muonde.cpp:868 -#: pcbnew/dialog_gendrill.cpp:295 -#: pcbnew/dialog_edit_module.cpp:119 -#: pcbnew/block.cpp:157 -#: pcbnew/mirepcb.cpp:101 -#: pcbnew/set_color.cpp:343 -#: pcbnew/sel_layer.cpp:162 -#: pcbnew/sel_layer.cpp:318 -#: pcbnew/dialog_track_options_base.cpp:136 -#: pcbnew/modedit_onclick.cpp:194 -#: pcbnew/modedit_onclick.cpp:226 -#: pcbnew/dialog_non_copper_zones_properties_base.cpp:69 -#: pcbnew/onrightclick.cpp:123 -#: pcbnew/onrightclick.cpp:137 -#: pcbnew/dialog_copper_zones_base.cpp:159 -#: pcbnew/dialog_pcb_text_properties.cpp:101 -#: pcbnew/dialog_pad_properties_base.cpp:95 -#: pcbnew/dialog_edit_module_text_base.cpp:109 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:156 -#: pcbnew/dialog_display_options_base.cpp:134 -#: pcbnew/dialog_orient_footprints.cpp:167 -#: pcbnew/globaleditpad.cpp:102 -#: eeschema/eelayer.cpp:240 -#: eeschema/sheetlab.cpp:98 -#: eeschema/onrightclick.cpp:84 -#: eeschema/onrightclick.cpp:96 -#: eeschema/dialog_edit_label_base.cpp:71 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:74 -#: eeschema/libedit_onrightclick.cpp:42 -#: eeschema/libedit_onrightclick.cpp:57 -#: gerbview/options.cpp:172 -#: gerbview/options.cpp:300 -#: gerbview/reglage.cpp:109 -#: gerbview/onrightclick.cpp:39 -#: gerbview/onrightclick.cpp:59 -#: gerbview/set_color.cpp:314 -#: common/get_component_dialog.cpp:133 -#: common/selcolor.cpp:173 -#: common/displlst.cpp:110 msgid "Cancel" msgstr "Annuler" #: pcbnew/cotation.cpp:109 -#: pcbnew/muonde.cpp:874 -#: pcbnew/dialog_edit_module.cpp:261 -#: pcbnew/dialog_edit_module.cpp:307 -#: pcbnew/dialog_pcb_text_properties.cpp:166 -#: pcbnew/dialog_pcb_text_properties.cpp:177 -#: pcbnew/dialog_edit_module_text_base.cpp:96 -#: eeschema/onrightclick.cpp:279 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:52 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 -#: eeschema/dialog_edit_label_base.cpp:43 -#: eeschema/dialog_options.cpp:234 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:60 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:99 -#: eeschema/component_wizard/component_setup_frame.cpp:50 msgid "Normal" msgstr "Normal" #: pcbnew/cotation.cpp:110 -#: pcbnew/class_text_mod.cpp:484 -#: pcbnew/dialog_pcb_text_properties.cpp:167 -#: pcbnew/dialog_edit_module_text_base.cpp:87 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:22 -#: eeschema/class_pin.cpp:1021 -#: gerbview/options.cpp:179 -#: gerbview/tool_gerber.cpp:90 msgid "Display" msgstr "Affichage" #: pcbnew/cotation.cpp:121 -#: pcbnew/muonde.cpp:881 -#: pcbnew/mirepcb.cpp:105 -#: pcbnew/dialog_pcb_text_properties.cpp:110 -#: eeschema/sheet.cpp:167 -#: eeschema/sheet.cpp:173 -#: eeschema/dialog_edit_label_base.cpp:58 -#: eeschema/pinedit-dialog.cpp:195 -#: eeschema/pinedit-dialog.cpp:201 -#: eeschema/dialog_edit_component_in_schematic.cpp:91 -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:156 -#: common/wxwineda.cpp:108 msgid "Size" msgstr "Taille " #: pcbnew/cotation.cpp:129 -#: pcbnew/dialog_copper_zones_base.cpp:201 msgid "Layer:" msgstr "Couche:" @@ -371,7 +223,6 @@ msgstr "Longueur (pouces):" #: pcbnew/muonde.cpp:237 #: pcbnew/muonde.cpp:243 -#: eeschema/class_pin.cpp:1026 msgid "Length" msgstr "Longueur" @@ -411,7 +262,6 @@ msgid "Arc Stub" msgstr "Arc Stub" #: pcbnew/muonde.cpp:695 -#: common/common.cpp:249 msgid " (mm):" msgstr " (mm):" @@ -486,8 +336,6 @@ msgid "Gap (inch):" msgstr "Gap (inch):" #: pcbnew/modules.cpp:82 -#: pcbnew/librairi.cpp:522 -#: common/get_component_dialog.cpp:103 msgid "Name:" msgstr "Nom:" @@ -496,13 +344,10 @@ msgid "Search footprint" msgstr "Cherche Module" #: pcbnew/modules.cpp:310 -#: pcbnew/onrightclick.cpp:739 msgid "Delete Module" msgstr "Supprimer Module" #: pcbnew/modules.cpp:311 -#: eeschema/find.cpp:221 -#: eeschema/onrightclick.cpp:290 msgid "Value " msgstr "Valeur " @@ -533,7 +378,6 @@ msgid "3:3" msgstr "3:3" #: pcbnew/gendrill.cpp:745 -#: pcbnew/pcbplot.cpp:691 msgid "HPGL plot files (.plt)|*.plt" msgstr "Fichiers Tracé HPGL (.plt)|*.plt" @@ -562,9 +406,6 @@ msgid "Board modified, Save before exit ?" msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" #: pcbnew/pcbframe.cpp:304 -#: eeschema/schframe.cpp:317 -#: cvpcb/cvframe.cpp:265 -#: common/confirm.cpp:106 msgid "Confirmation" msgstr "Confirmation" @@ -637,35 +478,26 @@ msgid "Normal Contrast Mode Display" msgstr "Mode d'affichage Contraste normal" #: pcbnew/pcbframe.cpp:474 -#: pcbnew/tool_pcb.cpp:374 msgid "Hight Contrast Mode Display" msgstr "Mode d'affichage Haut Contraste" #: pcbnew/pcbframe.cpp:487 -#: pcbnew/class_board_item.cpp:122 -#: pcbnew/class_track.cpp:867 msgid "Track" msgstr "Piste" #: pcbnew/pcbframe.cpp:519 -#: pcbnew/class_board_item.cpp:186 msgid "Via" msgstr "Via" #: pcbnew/pcbframe.cpp:591 -#: pcbnew/moduleframe.cpp:391 -#: cvpcb/displayframe.cpp:302 msgid "3D Frame already opened" msgstr "Fenêtre 3D déjà ouverte" #: pcbnew/pcbframe.cpp:595 -#: pcbnew/moduleframe.cpp:395 -#: cvpcb/displayframe.cpp:306 msgid "3D Viewer" msgstr "Visu 3D" #: pcbnew/editmod.cpp:43 -#: pcbnew/edit.cpp:183 msgid "Module Editor" msgstr "Ouvrir Editeur de modules" @@ -711,25 +543,18 @@ msgid "Add Pad" msgstr "Ajouter Pastilles" #: pcbnew/modedit.cpp:411 -#: pcbnew/menubarmodedit.cpp:45 -#: pcbnew/tool_modedit.cpp:127 msgid "Pad Settings" msgstr "Caract pads" #: pcbnew/modedit.cpp:421 -#: eeschema/schedit.cpp:203 msgid "Add Drawing" msgstr "Ajout d'éléments graphiques" #: pcbnew/modedit.cpp:425 -#: pcbnew/tool_modedit.cpp:180 msgid "Place anchor" msgstr "Place Ancre" #: pcbnew/modedit.cpp:439 -#: pcbnew/edit.cpp:616 -#: eeschema/schedit.cpp:373 -#: eeschema/libframe.cpp:636 msgid "Delete item" msgstr "Suppression d'éléments" @@ -738,7 +563,6 @@ msgid "Error: Unexpected end of file !" msgstr "Erreur: Fin de fichier inattendue !" #: pcbnew/class_drc_item.cpp:39 -#: pcbnew/dialog_drc.cpp:484 msgid "Unconnected pads" msgstr "Pads non connectés" @@ -815,22 +639,14 @@ msgid "Netlist path" msgstr "Chemin Netliste " #: pcbnew/class_module.cpp:954 -#: pcbnew/menubarpcb.cpp:230 -#: pcbnew/class_netinfo_item.cpp:151 -#: pcbnew/class_board.cpp:503 msgid "Pads" msgstr "Pads" #: pcbnew/class_module.cpp:962 -#: pcbnew/class_track.cpp:932 msgid "Stat" msgstr "Stat" #: pcbnew/class_module.cpp:969 -#: pcbnew/class_edge_mod.cpp:236 -#: pcbnew/class_text_mod.cpp:469 -#: pcbnew/class_pad.cpp:464 -#: cvpcb/setvisu.cpp:37 msgid "Module" msgstr "Module" @@ -847,14 +663,10 @@ msgid "KeyW: " msgstr "KeyW: " #: pcbnew/dialog_gendrill.cpp:165 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:30 msgid "Millimeters" msgstr "Millimètres" #: pcbnew/dialog_gendrill.cpp:166 -#: pcbnew/set_grid.cpp:119 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:30 -#: gerbview/options.cpp:190 msgid "Inches" msgstr "Pouces" @@ -912,7 +724,6 @@ msgstr "Choisir l'origine des coordonnées: absolue ou relative à l'axe auxilia #: pcbnew/dialog_gendrill.cpp:204 #: pcbnew/dialog_gendrill.cpp:214 -#: eeschema/libedit.cpp:38 msgid "None" msgstr "Aucun" @@ -953,17 +764,10 @@ msgid "Speed (cm/s)" msgstr "Vitesse plume ( cm/s )" #: pcbnew/dialog_gendrill.cpp:232 -#: eeschema/plothpgl.cpp:243 msgid "Pen Number" msgstr "Numéro de plume" #: pcbnew/dialog_gendrill.cpp:238 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:80 -#: pcbnew/dialog_print_using_printer_base.cpp:76 -#: eeschema/dialog_build_BOM_base.cpp:20 -#: eeschema/dialog_build_BOM_base.cpp:60 -#: eeschema/netlist_control.cpp:127 -#: eeschema/dialog_print_using_printer_base.cpp:23 msgid "Options:" msgstr "Options :" @@ -980,7 +784,6 @@ msgid "If checked, the EXCELLON header is minimal" msgstr "Si activé, l'entête du fichier EXELLON est minimale" #: pcbnew/dialog_gendrill.cpp:255 -#: common/confirm.cpp:92 msgid "Info:" msgstr "Infos:" @@ -1013,7 +816,6 @@ msgid "Through Vias:" msgstr "Via Traversantes:" #: pcbnew/dialog_gendrill.cpp:283 -#: pcbnew/dialog_track_options_base.cpp:67 msgid "Micro Vias:" msgstr "Micro Vias:" @@ -1070,16 +872,10 @@ msgid "3D settings" msgstr "3D Caract" #: pcbnew/dialog_edit_module.cpp:180 -#: eeschema/dialog_edit_component_in_schematic.cpp:95 -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:160 -#: common/wxwineda.cpp:227 msgid "X" msgstr "X" #: pcbnew/dialog_edit_module.cpp:181 -#: eeschema/dialog_edit_component_in_schematic.cpp:100 -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:165 -#: common/wxwineda.cpp:240 msgid "Y" msgstr "Y" @@ -1088,18 +884,14 @@ msgid "Change module(s)" msgstr "Change module(s)" #: pcbnew/dialog_edit_module.cpp:186 -#: pcbnew/modedit_onclick.cpp:252 msgid "Edit Module" msgstr "Edit Module" #: pcbnew/dialog_edit_module.cpp:189 -#: pcbnew/dialog_pcb_text_properties.cpp:120 msgid "Position" msgstr "Position" #: pcbnew/dialog_edit_module.cpp:214 -#: eeschema/onrightclick.cpp:329 -#: eeschema/dialog_edit_component_in_lib.cpp:196 msgid "Doc" msgstr "Doc" @@ -1112,24 +904,18 @@ msgid "Fields:" msgstr "Champs:" #: pcbnew/dialog_edit_module.cpp:238 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:94 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:28 msgid "Add Field" msgstr "Ajouter Champ" #: pcbnew/dialog_edit_module.cpp:242 -#: eeschema/onrightclick.cpp:234 msgid "Edit Field" msgstr "Editer Champ" #: pcbnew/dialog_edit_module.cpp:246 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:99 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:33 msgid "Delete Field" msgstr "Supprimer Champ" #: pcbnew/dialog_edit_module.cpp:252 -#: common/common.cpp:587 msgid "Component" msgstr "Composant" @@ -1138,7 +924,6 @@ msgid "Copper" msgstr "Cuivre" #: pcbnew/dialog_edit_module.cpp:261 -#: pcbnew/dialog_pad_properties_base.cpp:64 msgid "User" msgstr "Utilisateur" @@ -1207,8 +992,6 @@ msgid "3D Shape Name" msgstr "3D forme" #: pcbnew/dialog_edit_module.cpp:412 -#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:61 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:87 msgid "Browse" msgstr "Examiner" @@ -1247,7 +1030,6 @@ msgstr "Supprimer [%s]" #: pcbnew/pcbplot.cpp:151 #: pcbnew/pcbplot.cpp:286 -#: gerbview/tool_gerber.cpp:72 msgid "Plot" msgstr "Tracer" @@ -1304,7 +1086,6 @@ msgid "X scale adjust" msgstr "Ajustage Echelle X" #: pcbnew/pcbplot.cpp:273 -#: pcbnew/dialog_print_using_printer_base.cpp:57 msgid "Set X scale adjust for exact scale plotting" msgstr "Ajuster échelle X pour traçage à l'échelle exacte" @@ -1313,7 +1094,6 @@ msgid "Y scale adjust" msgstr "Ajustage Echelle Y" #: pcbnew/pcbplot.cpp:278 -#: pcbnew/dialog_print_using_printer_base.cpp:66 msgid "Set Y scale adjust for exact scale plotting" msgstr "Ajuster échelle Y pour traçage à l'échelle exacte" @@ -1334,7 +1114,6 @@ msgid "Exclude Edges_Pcb layer" msgstr "Exclure Couche Contours PCB" #: pcbnew/pcbplot.cpp:342 -#: pcbnew/dialog_print_using_printer_base.cpp:37 msgid "Exclude contents of Edges_Pcb layer from all other layers" msgstr "Exclure les tracés contour PCB des autres couches" @@ -1419,12 +1198,10 @@ msgid "Scale 1.5" msgstr "Echelle 1,5" #: pcbnew/pcbplot.cpp:416 -#: pcbnew/dialog_print_using_printer_base.cpp:46 msgid "Scale 2" msgstr "Echelle 2" #: pcbnew/pcbplot.cpp:416 -#: pcbnew/dialog_print_using_printer_base.cpp:46 msgid "Scale 3" msgstr "Echelle 3" @@ -1433,36 +1210,14 @@ msgid "Scale Opt" msgstr "Echelle" #: pcbnew/pcbplot.cpp:425 -#: pcbnew/class_board_item.cpp:23 -#: pcbnew/dialog_non_copper_zones_properties_base.cpp:54 -#: pcbnew/dialog_copper_zones_base.cpp:107 -#: pcbnew/dialog_display_options_base.cpp:67 -#: pcbnew/dialog_display_options_base.cpp:73 -#: pcbnew/dialog_display_options_base.cpp:114 -#: gerbview/options.cpp:327 msgid "Line" msgstr "Ligne" #: pcbnew/pcbplot.cpp:425 -#: pcbnew/dialog_display_options_base.cpp:22 -#: pcbnew/dialog_display_options_base.cpp:67 -#: pcbnew/dialog_display_options_base.cpp:73 -#: pcbnew/dialog_display_options_base.cpp:84 -#: pcbnew/dialog_display_options_base.cpp:114 -#: eeschema/dialog_cmp_graphic_properties.cpp:167 -#: gerbview/options.cpp:304 -#: gerbview/options.cpp:327 msgid "Filled" msgstr "Plein" #: pcbnew/pcbplot.cpp:425 -#: pcbnew/dialog_display_options_base.cpp:22 -#: pcbnew/dialog_display_options_base.cpp:67 -#: pcbnew/dialog_display_options_base.cpp:73 -#: pcbnew/dialog_display_options_base.cpp:84 -#: pcbnew/dialog_display_options_base.cpp:114 -#: gerbview/options.cpp:304 -#: gerbview/options.cpp:327 msgid "Sketch" msgstr "Contour" @@ -1499,19 +1254,14 @@ msgid "GERBER photo plot files (.pho)|*.pho" msgstr "Fichiers phottraçage GERBER (.pho)|*.pho" #: pcbnew/pcbplot.cpp:697 -#: pcbnew/dialog_print_using_printer.cpp:647 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 -#: pcbnew/dialog_print_using_printer.cpp:643 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 -#: pcbnew/dialog_print_using_printer.cpp:414 -#: pcbnew/dialog_print_using_printer.cpp:454 -#: gerbview/edit.cpp:233 msgid "No layer selected" msgstr "Pas de couche sélectionnée" @@ -1548,9 +1298,6 @@ msgid "Include board outline layer" msgstr "Inclure couche contour pcb" #: pcbnew/block.cpp:451 -#: pcbnew/onrightclick.cpp:463 -#: eeschema/onrightclick.cpp:622 -#: eeschema/libedit_onrightclick.cpp:249 msgid "Delete Block" msgstr "Effacer Bloc" @@ -1559,7 +1306,6 @@ msgid "Delete zones" msgstr "SuppressionZones" #: pcbnew/block.cpp:603 -#: pcbnew/onrightclick.cpp:461 msgid "Rotate Block" msgstr "Rotation Bloc" @@ -1576,9 +1322,6 @@ msgid "Move Block" msgstr "Déplacer Bloc" #: pcbnew/block.cpp:1097 -#: pcbnew/onrightclick.cpp:457 -#: eeschema/onrightclick.cpp:618 -#: eeschema/libedit_onrightclick.cpp:246 msgid "Copy Block" msgstr "Copie Bloc" @@ -1597,8 +1340,6 @@ msgstr "Librairie modules PCB %s non trouvée dans les chemins de recherche" #: pcbnew/loadcmp.cpp:239 #: pcbnew/loadcmp.cpp:363 #: pcbnew/loadcmp.cpp:399 -#: eeschema/eelibs_read_libraryfiles.cpp:143 -#: cvpcb/cvpcb.cpp:31 msgid "Library Load Error" msgstr "Erreur en Chargement de librairie" @@ -1624,13 +1365,10 @@ msgid "Module <%s> not found" msgstr "Module <%s> non trouvé" #: pcbnew/loadcmp.cpp:388 -#: pcbnew/librairi.cpp:243 -#: eeschema/eelibs_read_libraryfiles.cpp:153 msgid "Library " msgstr "Librairie " #: pcbnew/loadcmp.cpp:388 -#: eeschema/eelibs_read_libraryfiles.cpp:157 msgid " loaded" msgstr " chargé" @@ -1641,8 +1379,6 @@ msgid "Modules [%d items]" msgstr "Modules [%d éléments]" #: pcbnew/files.cpp:21 -#: kicad/files-io.cpp:34 -#: gerbview/files.cpp:25 msgid "Printed circuit board" msgstr "Circuit imprimé" @@ -1651,13 +1387,6 @@ msgid "Recovery file " msgstr "Fichier de secours " #: pcbnew/files.cpp:85 -#: pcbnew/librairi.cpp:243 -#: eeschema/find.cpp:242 -#: eeschema/find.cpp:250 -#: eeschema/find.cpp:691 -#: gerbview/readgerb.cpp:146 -#: gerbview/dcode.cpp:290 -#: common/eda_doc.cpp:152 msgid " not found" msgstr " non trouvé" @@ -1674,7 +1403,6 @@ msgid "Open Board File:" msgstr "Ouvrir Fichier C.I.:" #: pcbnew/files.cpp:199 -#: pcbnew/librairi.cpp:79 #, c-format msgid "File <%s> not found" msgstr " fichier %s non trouvé" @@ -1687,41 +1415,28 @@ msgstr "Ce fichier a été créé par une version plus récente de PCBnew et peu msgid "This file was created by an older version of PCBnew. It will be stored in the new file format when you save this file again." msgstr "Ce fichier a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." -#: pcbnew/files.cpp:308 +#: pcbnew/files.cpp:309 msgid "Save Board File" msgstr "Sauver Fichier C.I." -#: pcbnew/files.cpp:342 +#: pcbnew/files.cpp:343 msgid "Warning: unable to create backup file " msgstr "Attention: impossible de créer un fichier backup " -#: pcbnew/files.cpp:359 +#: pcbnew/files.cpp:360 #: pcbnew/plothpgl.cpp:68 -#: pcbnew/librairi.cpp:296 -#: pcbnew/librairi.cpp:445 -#: pcbnew/librairi.cpp:600 -#: pcbnew/librairi.cpp:803 -#: pcbnew/gen_modules_placefile.cpp:145 -#: pcbnew/gen_modules_placefile.cpp:161 -#: pcbnew/gen_modules_placefile.cpp:333 -#: pcbnew/export_gencad.cpp:83 -#: eeschema/plotps.cpp:428 -#: eeschema/plothpgl.cpp:605 -#: cvpcb/genequiv.cpp:41 -#: gerbview/export_to_pcbnew.cpp:78 -#: common/hotkeys_basic.cpp:405 msgid "Unable to create " msgstr "Impossible de créer " -#: pcbnew/files.cpp:378 +#: pcbnew/files.cpp:379 msgid "Backup file: " msgstr "Fichier backup: " -#: pcbnew/files.cpp:382 +#: pcbnew/files.cpp:383 msgid "Wrote board file: " msgstr "Ecriture fichier CI: " -#: pcbnew/files.cpp:384 +#: pcbnew/files.cpp:385 msgid "Failed to create " msgstr "Impossible de créer fichier " @@ -1741,21 +1456,19 @@ msgstr "Epaisseur Contour" msgid "Incorrect number, no change" msgstr "Nombre incorrect, pas de changement" -#: pcbnew/surbrill.cpp:33 +#: pcbnew/surbrill.cpp:34 msgid "Filter for net names:" msgstr "Filtre pour nets:" -#: pcbnew/surbrill.cpp:33 +#: pcbnew/surbrill.cpp:34 msgid "Net Filter" msgstr "Filtre Equipot" -#: pcbnew/surbrill.cpp:37 +#: pcbnew/surbrill.cpp:38 msgid "List Nets" msgstr "Liste équipots" #: pcbnew/plothpgl.cpp:75 -#: pcbnew/plotps.cpp:53 -#: pcbnew/plotgerb.cpp:114 msgid "File" msgstr "Fichier" @@ -1816,7 +1529,6 @@ msgid "Target Shape:" msgstr "Forme Mire:" #: pcbnew/set_grid.cpp:120 -#: common/drawframe.cpp:305 msgid "mm" msgstr "mm" @@ -1833,38 +1545,10 @@ msgid "User Grid Size Y" msgstr "Grille perso dim Y" #: pcbnew/set_grid.cpp:142 -#: pcbnew/dialog_initpcb.cpp:159 -#: pcbnew/swap_layers.cpp:257 -#: pcbnew/dialog_drc.cpp:546 -#: pcbnew/dialog_graphic_items_options.cpp:261 -#: eeschema/sheet.cpp:187 -#: eeschema/dialog_create_component.cpp:185 -#: eeschema/dialog_edit_component_in_lib.cpp:210 -#: eeschema/dialog_options.cpp:274 -#: eeschema/dialog_cmp_graphic_properties.cpp:176 -#: eeschema/pinedit-dialog.cpp:227 -#: cvpcb/dialog_display_options.cpp:169 -#: gerbview/select_layers_to_pcb.cpp:317 -#: share/setpage.cpp:406 msgid "&OK" msgstr "&OK" #: pcbnew/set_grid.cpp:146 -#: pcbnew/dialog_initpcb.cpp:162 -#: pcbnew/swap_layers.cpp:261 -#: pcbnew/dialog_drc.cpp:543 -#: pcbnew/dialog_graphic_items_options.cpp:264 -#: eeschema/sheet.cpp:184 -#: eeschema/dialog_create_component.cpp:189 -#: eeschema/dialog_edit_component_in_lib.cpp:207 -#: eeschema/dialog_options.cpp:278 -#: eeschema/netlist_control.cpp:148 -#: eeschema/netlist_control.cpp:281 -#: eeschema/dialog_cmp_graphic_properties.cpp:180 -#: eeschema/pinedit-dialog.cpp:224 -#: cvpcb/dialog_display_options.cpp:172 -#: gerbview/select_layers_to_pcb.cpp:321 -#: share/setpage.cpp:409 msgid "&Cancel" msgstr "&Annuler" @@ -1932,33 +1616,6 @@ msgstr "Inclure Pistes Autoroutées" msgid "Include Locked Tracks" msgstr "Inclure Pistes Verrouillées" -#: pcbnew/plot_rtn.cpp:207 -#, c-format -msgid "" -"Your BOARD has a bad layer number of %u for module\n" -" %s's \"reference\" text." -msgstr "" -"Votre PCB a un mauvais numero de couche %u pour le module\n" -" %s's \"référence\"." - -#: pcbnew/plot_rtn.cpp:227 -#, c-format -msgid "" -"Your BOARD has a bad layer number of %u for module\n" -" %s's \"value\" text." -msgstr "" -"Votre PCB a un mauvais numero de couche %u pour le module\n" -" %s's \"valeur\"." - -#: pcbnew/plot_rtn.cpp:268 -#, c-format -msgid "" -"Your BOARD has a bad layer number of %u for module\n" -" %s's \"module text\" text of %s." -msgstr "" -"Votre PCB a un mauvais numero de couche %u pour le module\n" -" %s's \"texte module\" de %s." - #: pcbnew/automove.cpp:213 msgid "Move Modules ?" msgstr "Déplacer Modules ?" @@ -1986,7 +1643,6 @@ msgid "<%s> Not Found" msgstr "<%s> Non trouvé" #: pcbnew/find.cpp:236 -#: eeschema/dialog_find.cpp:117 msgid "Item to find:" msgstr "Elément à chercher:" @@ -2006,6 +1662,33 @@ msgstr "Chercher Marqueur" msgid "Find Next Marker" msgstr "Marqueur Suivant" +#: pcbnew/plot_rtn.cpp:207 +#, c-format +msgid "" +"Your BOARD has a bad layer number of %u for module\n" +" %s's \"reference\" text." +msgstr "" +"Votre PCB a un mauvais numero de couche %u pour le module\n" +" %s's \"référence\"." + +#: pcbnew/plot_rtn.cpp:227 +#, c-format +msgid "" +"Your BOARD has a bad layer number of %u for module\n" +" %s's \"value\" text." +msgstr "" +"Votre PCB a un mauvais numero de couche %u pour le module\n" +" %s's \"valeur\"." + +#: pcbnew/plot_rtn.cpp:268 +#, c-format +msgid "" +"Your BOARD has a bad layer number of %u for module\n" +" %s's \"module text\" text of %s." +msgstr "" +"Votre PCB a un mauvais numero de couche %u pour le module\n" +" %s's \"texte module\" de %s." + #: pcbnew/solve.cpp:240 msgid "Abort routing?" msgstr "Arrêter le routage?" @@ -2043,7 +1726,6 @@ msgid "Export Module" msgstr "Exporter Module" #: pcbnew/librairi.cpp:189 -#: eeschema/symbedit.cpp:187 #, c-format msgid "Unable to create <%s>" msgstr "Incapable de créer <%s>" @@ -2174,13 +1856,10 @@ msgstr "Place Cells" #: pcbnew/set_color.cpp:258 #: pcbnew/set_color.cpp:284 -#: gerbview/set_color.cpp:246 -#: gerbview/set_color.cpp:272 msgid "Show None" msgstr "Rien Afficher" #: pcbnew/set_color.cpp:267 -#: gerbview/set_color.cpp:255 msgid "Show All" msgstr "Tout Afficher" @@ -2193,8 +1872,6 @@ msgid "Switch off all of the copper layers" msgstr "N'affiche pas les couches cuivre" #: pcbnew/set_color.cpp:346 -#: eeschema/eelayer.cpp:244 -#: gerbview/set_color.cpp:317 msgid "Apply" msgstr "Appliquer" @@ -2203,7 +1880,6 @@ msgid "Error : Zone clearance is set to an unreasonnable value" msgstr "Erreur: l'isolation de zone est réglée à une valeur déraisonnable." #: pcbnew/dialog_copper_zones.cpp:285 -#: pcbnew/zones_non_copper_type_functions.cpp:141 msgid "" "Error :\n" "you must choose a copper min thickness value bigger than 0.001 inch (or 0.0254 mm)" @@ -2220,7 +1896,6 @@ msgstr "" "vous devez choisir une valeur pour l'épaisseur de cuivre dans les freins thermiques plus grande que l'épaisseur de cuivre minimum des zones" #: pcbnew/dialog_copper_zones.cpp:322 -#: pcbnew/zones_non_copper_type_functions.cpp:177 msgid "Error : you must choose a layer" msgstr "Erreur. Vous devez choisir une couche" @@ -2237,13 +1912,6 @@ msgid "Seg" msgstr "Seg" #: pcbnew/class_edge_mod.cpp:237 -#: pcbnew/class_text_mod.cpp:463 -#: pcbnew/class_board_item.cpp:99 -#: eeschema/class_libentry_fields.cpp:339 -#: eeschema/edit_component_in_schematic.cpp:345 -#: eeschema/dialog_edit_component_in_schematic.cpp:88 -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:153 -#: eeschema/eelayer.h:158 msgid "Value" msgstr "Valeur" @@ -2330,8 +1998,6 @@ msgid "Save current board as.." msgstr "Sauver le Circuit Imprimé courant sous.." #: pcbnew/menubarpcb.cpp:76 -#: eeschema/menubar.cpp:71 -#: gerbview/tool_gerber.cpp:71 msgid "P&rint" msgstr "Imp&rimer" @@ -2348,7 +2014,6 @@ msgid "Plot pcb board in SVG format" msgstr "Tracer le circuit imprimé en format SVG" #: pcbnew/menubarpcb.cpp:87 -#: eeschema/menubar.cpp:104 msgid "&Plot" msgstr "&Tracer" @@ -2397,7 +2062,6 @@ msgid "Import a routed \"Specctra Session\" (*.ses) file" msgstr "Importer un fichier de routage \"Specctra Session\" (*.ses) " #: pcbnew/menubarpcb.cpp:135 -#: eeschema/libframe.cpp:584 msgid "Import" msgstr "Importer" @@ -2430,10 +2094,6 @@ msgid "Archive or add footprints in a library file" msgstr "Archiver ou ajouter les modules dans un fichier librairie" #: pcbnew/menubarpcb.cpp:161 -#: eeschema/menubar.cpp:108 -#: cvpcb/menucfg.cpp:51 -#: kicad/buildmnu.cpp:136 -#: gerbview/tool_gerber.cpp:76 msgid "E&xit" msgstr "&Quitter" @@ -2442,7 +2102,6 @@ msgid "Quit PCBNEW" msgstr "Quitter PCBNEW" #: pcbnew/menubarpcb.cpp:172 -#: eeschema/menubar.cpp:285 msgid "&Library" msgstr "&Librairie" @@ -2479,8 +2138,6 @@ msgid "&Save Preferences" msgstr "&Sauver Préférences" #: pcbnew/menubarpcb.cpp:196 -#: eeschema/menubar.cpp:305 -#: gerbview/tool_gerber.cpp:98 msgid "Save application preferences" msgstr "Sauver les préférences de l'application" @@ -2489,7 +2146,6 @@ msgid "&Read Preferences" msgstr "&Lire Préférences" #: pcbnew/menubarpcb.cpp:201 -#: eeschema/menubar.cpp:310 msgid "Read application preferences" msgstr "Lire les préférences de l'application" @@ -2502,26 +2158,18 @@ msgid "Adjust size and width for tracks and vias" msgstr "Ajuster largeur des pistes et diamètre de vias" #: pcbnew/menubarpcb.cpp:219 -#: pcbnew/tool_pcb.cpp:604 -#: eeschema/eelayer.cpp:209 -#: pcbnew/set_color.h:414 -#: eeschema/eelayer.h:214 -#: gerbview/set_color.h:324 msgid "Grid" msgstr "Grille" #: pcbnew/menubarpcb.cpp:220 -#: pcbnew/menubarmodedit.cpp:51 msgid "Adjust User Grid" msgstr "Ajuster Grille utilisateur" #: pcbnew/menubarpcb.cpp:225 -#: pcbnew/dialog_graphic_items_options.h:47 msgid "Texts and Drawings" msgstr "Textes et Tracés" #: pcbnew/menubarpcb.cpp:226 -#: pcbnew/menubarmodedit.cpp:41 msgid "Adjust width for texts and drawings" msgstr "Ajuster dims pour textes et graphiques" @@ -2530,7 +2178,6 @@ msgid "Adjust size,shape,layers... for pads" msgstr "Ajuster taille, forme, couches... pour pads" #: pcbnew/menubarpcb.cpp:236 -#: gerbview/tool_gerber.cpp:97 msgid "&Save Setup" msgstr "&Sauver Options" @@ -2603,11 +2250,6 @@ msgid "Swap tracks on copper layers or drawings on others layers" msgstr "Permutation de couches" #: pcbnew/menubarpcb.cpp:301 -#: pcbnew/menubarmodedit.cpp:64 -#: eeschema/menubar.cpp:319 -#: cvpcb/menucfg.cpp:82 -#: kicad/buildmnu.cpp:225 -#: gerbview/tool_gerber.cpp:127 msgid "&Contents" msgstr "&Contenu" @@ -2624,40 +2266,26 @@ msgid "About PCBNEW printed circuit board designer" msgstr "Au Sujet de PCBNEW outil de conception de C.I." #: pcbnew/menubarpcb.cpp:316 -#: pcbnew/menubarmodedit.cpp:82 msgid "3D Display" msgstr "3D Visu" #: pcbnew/menubarpcb.cpp:316 -#: pcbnew/menubarmodedit.cpp:82 msgid "Show board in 3D viewer" msgstr "Visualisation du circuit en 3D" #: pcbnew/menubarpcb.cpp:320 -#: eeschema/menubar.cpp:330 -#: cvpcb/menucfg.cpp:92 -#: kicad/buildmnu.cpp:237 -#: gerbview/tool_gerber.cpp:133 -#: 3d-viewer/3d_toolbar.cpp:123 msgid "&File" msgstr "&Fichiers" #: pcbnew/menubarpcb.cpp:321 -#: eeschema/menubar.cpp:334 -#: cvpcb/menucfg.cpp:93 -#: kicad/buildmnu.cpp:239 -#: gerbview/tool_gerber.cpp:134 -#: 3d-viewer/3d_toolbar.cpp:131 msgid "&Preferences" msgstr "&Préférences" #: pcbnew/menubarpcb.cpp:322 -#: pcbnew/menubarmodedit.cpp:86 msgid "&Dimensions" msgstr "&Dimensions" #: pcbnew/menubarpcb.cpp:323 -#: gerbview/tool_gerber.cpp:135 msgid "&Miscellaneous" msgstr "&Divers" @@ -2666,16 +2294,10 @@ msgid "P&ostprocess" msgstr "P&ostprocesseurs" #: pcbnew/menubarpcb.cpp:325 -#: pcbnew/menubarmodedit.cpp:87 msgid "&3D Display" msgstr "&3D Visu" #: pcbnew/menubarpcb.cpp:326 -#: pcbnew/menubarmodedit.cpp:88 -#: eeschema/menubar.cpp:335 -#: cvpcb/menucfg.cpp:94 -#: kicad/buildmnu.cpp:240 -#: gerbview/tool_gerber.cpp:138 msgid "&Help" msgstr "&Aide" @@ -2808,7 +2430,6 @@ msgid "Delete draw items?" msgstr "Suppression éléments graphiques?" #: pcbnew/initpcb.cpp:253 -#: gerbview/initpcb.cpp:134 msgid "Delete Tracks?" msgstr "Effacer Pistes ?" @@ -2817,7 +2438,6 @@ msgid "Delete Modules?" msgstr "Effacement des Modules?" #: pcbnew/initpcb.cpp:299 -#: gerbview/initpcb.cpp:157 msgid "Delete Pcb Texts" msgstr "Effacer Textes Pcb" @@ -2842,10 +2462,6 @@ msgid "Merge" msgstr "Fusion" #: pcbnew/clean.cpp:507 -#: pcbnew/dialog_pad_properties_base.cpp:64 -#: eeschema/dialog_erc.cpp:178 -#: eeschema/dialog_erc.cpp:181 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:39 msgid "0" msgstr "0" @@ -2882,11 +2498,7 @@ msgid "Segm" msgstr "Segm" #: pcbnew/class_drawsegment.cpp:273 -#: pcbnew/class_text_mod.cpp:478 #: pcbnew/class_zone.cpp:878 -#: pcbnew/class_track.cpp:879 -#: pcbnew/class_marker.cpp:134 -#: eeschema/classes_body_items.cpp:65 msgid "Type" msgstr "Type" @@ -2896,16 +2508,11 @@ msgstr "Forme" #: pcbnew/class_drawsegment.cpp:278 #: pcbnew/class_board_item.cpp:26 -#: pcbnew/class_track.cpp:909 -#: pcbnew/dialog_pad_properties_base.cpp:44 -#: pcbnew/dialog_pad_properties_base.cpp:53 -#: eeschema/classes_body_items.cpp:344 msgid "Circle" msgstr "Cercle" #: pcbnew/class_drawsegment.cpp:282 #: pcbnew/class_board_item.cpp:25 -#: eeschema/classes_body_items.cpp:92 msgid "Arc" msgstr "Arc" @@ -2914,30 +2521,16 @@ msgid "Angle" msgstr "Angle" #: pcbnew/class_drawsegment.cpp:288 -#: pcbnew/class_track.cpp:907 -#: eeschema/classes_body_items.cpp:704 msgid "Segment" msgstr "Segment" -#: pcbnew/class_text_mod.cpp:463 -msgid "Ref." -msgstr "Ref." - -#: pcbnew/class_text_mod.cpp:463 -#: pcbnew/class_text_mod.cpp:472 -#: pcbnew/class_board_item.cpp:104 -#: eeschema/dialog_edit_label_base.cpp:19 -#: eeschema/classes_body_items.cpp:468 -msgid "Text" -msgstr "Texte" - -#: pcbnew/class_text_mod.cpp:493 -msgid " No" -msgstr "Non" - -#: pcbnew/class_text_mod.cpp:495 -msgid " Yes" -msgstr "Oui" +#: 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" +"Plot uses circle shape for some drill values" +msgstr "" +"Plan de perçage: trop de diamètres différents pour tracer 1 symbole par diamètre (max 13)\n" +"Le tracé utilise des cercles pour quelques valeurs " #: pcbnew/class_zone.cpp:871 #: pcbnew/class_board_item.cpp:134 @@ -2955,8 +2548,6 @@ msgid "Not Found" msgstr " Non Trouvé" #: pcbnew/class_zone.cpp:900 -#: pcbnew/class_track.cpp:896 -#: pcbnew/zones_by_polygon.cpp:899 msgid "NetName" msgstr "NetName" @@ -2965,7 +2556,6 @@ msgid "Non Copper Zone" msgstr "Zone non Cuivre" #: pcbnew/class_zone.cpp:908 -#: pcbnew/class_track.cpp:902 msgid "NetCode" msgstr "NetCode" @@ -3053,14 +2643,10 @@ msgid "Warning: The Top Layer and Bottom Layer are same." msgstr "Attention: Les couches dessus et dessous sont les mêmes" #: pcbnew/dialog_SVG_print.cpp:206 -#: eeschema/dialog_SVG_print.cpp:170 -#: eeschema/dialog_SVG_print.cpp:191 msgid "Create file " msgstr "Créer Fichier " #: pcbnew/dialog_SVG_print.cpp:208 -#: eeschema/dialog_SVG_print.cpp:172 -#: eeschema/dialog_SVG_print.cpp:194 msgid " error" msgstr " erreur" @@ -3089,10 +2675,6 @@ msgid "Add Graphic" msgstr "Addition éléments graphiques" #: pcbnew/edit.cpp:293 -#: pcbnew/tool_modedit.cpp:175 -#: eeschema/schedit.cpp:223 -#: eeschema/libframe.cpp:560 -#: gerbview/tool_gerber.cpp:313 msgid "Add Text" msgstr "Ajout de Texte" @@ -3113,7 +2695,6 @@ msgid "Local Ratsnest" msgstr "Montrer le chevelu général" #: pcbnew/pcbcfg.cpp:74 -#: eeschema/eeconfig.cpp:63 msgid "Read Project File" msgstr "Lire Fichier Projet" @@ -3123,20 +2704,14 @@ msgid "File %s not found" msgstr "Fichier %s non trouvé" #: pcbnew/pcbcfg.cpp:209 -#: cvpcb/cfg.cpp:103 -#: kicad/prjconfig.cpp:125 msgid "Save Project File" msgstr "Sauver Fichier Projet" #: pcbnew/class_board_item.cpp:24 -#: pcbnew/dialog_pad_properties_base.cpp:44 msgid "Rect" msgstr "Rect" #: pcbnew/class_board_item.cpp:57 -#: eeschema/class_libentry_fields.cpp:341 -#: eeschema/dialog_build_BOM_base.cpp:79 -#: eeschema/edit_component_in_schematic.cpp:386 msgid "Footprint" msgstr "Module" @@ -3180,12 +2755,6 @@ msgid "Pcb Text" msgstr "Texte Pcb" #: pcbnew/class_board_item.cpp:95 -#: pcbnew/dialog_netlist_fbp.cpp:25 -#: eeschema/class_libentry_fields.cpp:338 -#: eeschema/onrightclick.cpp:293 -#: eeschema/dialog_create_component.cpp:154 -#: eeschema/edit_component_in_schematic.cpp:307 -#: eeschema/eelayer.h:152 msgid "Reference" msgstr "Référence" @@ -3195,13 +2764,16 @@ msgstr "Référence" msgid " of " msgstr " de " +#: pcbnew/class_board_item.cpp:104 +msgid "Text" +msgstr "Texte" + #: pcbnew/class_board_item.cpp:112 msgid "Graphic" msgstr "Graphique" #: pcbnew/class_board_item.cpp:129 #: pcbnew/class_board_item.cpp:200 -#: pcbnew/dialog_copper_zones_base.cpp:194 msgid "Net:" msgstr "Net:" @@ -3210,7 +2782,6 @@ msgid "Not on copper layer" msgstr "Pas sur Couches Cuivre" #: pcbnew/class_board_item.cpp:168 -#: pcbnew/class_track.cpp:871 msgid "Zone" msgstr "Zone" @@ -3219,12 +2790,10 @@ msgid "Blind/Buried" msgstr "Borgne/Aveugle" #: pcbnew/class_board_item.cpp:192 -#: common/pcbcommon.cpp:62 msgid "Micro Via" msgstr "Micro Via" #: pcbnew/class_board_item.cpp:215 -#: pcbnew/class_marker.cpp:134 msgid "Marker" msgstr "Marqueur" @@ -3240,32 +2809,6 @@ msgstr "Mire" msgid "size" msgstr "dimension" -#: pcbnew/class_track.cpp:911 -#: pcbnew/dialog_pad_properties_base.cpp:80 -msgid "Standard" -msgstr "Standard" - -#: pcbnew/class_track.cpp:919 -msgid "Flags" -msgstr "Flags" - -#: pcbnew/class_track.cpp:957 -msgid "Diam" -msgstr "Diam" - -#: pcbnew/class_track.cpp:965 -#: pcbnew/class_pad.cpp:578 -msgid "Drill" -msgstr "Perçage" - -#: pcbnew/class_track.cpp:969 -msgid "(Specific)" -msgstr "(Specifique)" - -#: pcbnew/class_track.cpp:971 -msgid "(Default)" -msgstr "(Défaut)" - #: pcbnew/dialog_track_options_base.cpp:27 msgid "Vias:" msgstr "Vias:" @@ -3303,7 +2846,6 @@ msgstr "" "et mettre le trou de la via à cette valeur spécifique en utilisant le menu popup." #: pcbnew/dialog_track_options_base.cpp:56 -#: common/pcbcommon.cpp:64 msgid "Through Via" msgstr "Via Traversante" @@ -3356,7 +2898,6 @@ msgid "Enter the current track width" msgstr "Entrer la largeur de piste courante" #: pcbnew/dialog_track_options_base.cpp:106 -#: pcbnew/dialog_drc.cpp:440 msgid "Clearance" msgstr "Isolation" @@ -3413,8 +2954,6 @@ msgid "The URL of the FreeRouting.net website" msgstr "L' URL du site FreeRouting.net" #: pcbnew/dialog_freeroute_exchange.cpp:213 -#: eeschema/dialog_erc.cpp:201 -#: eeschema/plothpgl.cpp:277 msgid "&Close" msgstr "&Fermer" @@ -3454,11 +2993,6 @@ msgid "Multiple components have identical reference IDs of \"%s\"." msgstr "Multiple composants ont une reference identique \"%s\"." #: pcbnew/dialog_drc.cpp:430 -#: eeschema/dialog_erc.cpp:220 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:23 -#: eeschema/dialog_create_component.cpp:166 -#: eeschema/dialog_edit_component_in_lib.cpp:164 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:49 msgid "Options" msgstr "Options" @@ -3499,7 +3033,6 @@ msgid "Include tests for clearances between pad to pads" msgstr "Inclure test de l'isolation entre pads" #: pcbnew/dialog_drc.cpp:478 -#: pcbnew/onrightclick.cpp:649 msgid "Zones" msgstr "Zones" @@ -3611,25 +3144,18 @@ msgid "Open module editor" msgstr "Ouvrir Editeur de modules" #: pcbnew/tool_pcb.cpp:221 -#: eeschema/tool_sch.cpp:62 -#: gerbview/tool_gerber.cpp:193 msgid "Cut selected item" msgstr "Suppression des éléments sélectionnés" #: pcbnew/tool_pcb.cpp:225 -#: eeschema/tool_sch.cpp:65 -#: gerbview/tool_gerber.cpp:197 msgid "Copy selected item" msgstr "Copie des éléments sélectionnés" #: pcbnew/tool_pcb.cpp:228 -#: eeschema/tool_sch.cpp:68 -#: gerbview/tool_gerber.cpp:201 msgid "Paste" msgstr "Copie des éléments sauvegardés" #: pcbnew/tool_pcb.cpp:232 -#: gerbview/tool_gerber.cpp:206 msgid "Undelete" msgstr "Annulation du dernier effacement" @@ -3642,59 +3168,22 @@ msgid "Plot (HPGL, PostScript, or GERBER format)" msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" #: pcbnew/tool_pcb.cpp:241 -#: pcbnew/tool_modedit.cpp:105 -#: eeschema/tool_lib.cpp:170 -#: eeschema/tool_sch.cpp:89 -#: eeschema/menubar.cpp:154 -#: eeschema/menubar.cpp:155 -#: eeschema/tool_viewlib.cpp:70 -#: gerbview/tool_gerber.cpp:214 -#: common/zoom.cpp:206 -#: 3d-viewer/3d_toolbar.cpp:44 msgid "Zoom in" msgstr "Zoom +" #: pcbnew/tool_pcb.cpp:246 -#: pcbnew/tool_modedit.cpp:110 -#: eeschema/tool_lib.cpp:174 -#: eeschema/tool_sch.cpp:93 -#: eeschema/menubar.cpp:160 -#: eeschema/menubar.cpp:162 -#: eeschema/tool_viewlib.cpp:74 -#: gerbview/tool_gerber.cpp:219 -#: common/zoom.cpp:207 -#: 3d-viewer/3d_toolbar.cpp:47 msgid "Zoom out" msgstr "Zoom -" #: pcbnew/tool_pcb.cpp:251 -#: pcbnew/tool_modedit.cpp:115 -#: eeschema/tool_lib.cpp:178 -#: eeschema/tool_sch.cpp:97 -#: eeschema/menubar.cpp:174 -#: eeschema/tool_viewlib.cpp:78 -#: gerbview/tool_gerber.cpp:224 -#: common/zoom.cpp:215 -#: 3d-viewer/3d_toolbar.cpp:51 msgid "Redraw view" msgstr "Redessin de l'écran" #: pcbnew/tool_pcb.cpp:258 -#: pcbnew/tool_modedit.cpp:122 -#: eeschema/tool_lib.cpp:184 -#: eeschema/tool_sch.cpp:102 -#: eeschema/menubar.cpp:167 -#: eeschema/menubar.cpp:168 -#: eeschema/menubar.cpp:176 -#: gerbview/tool_gerber.cpp:232 -#: common/zoom.cpp:208 -#: 3d-viewer/3d_toolbar.cpp:54 msgid "Zoom auto" msgstr "Zoom Automatique" #: pcbnew/tool_pcb.cpp:261 -#: eeschema/tool_sch.cpp:106 -#: eeschema/menubar.cpp:140 msgid "Find components and texts" msgstr "Recherche de composants et textes" @@ -3723,36 +3212,22 @@ msgid "Drc OFF" msgstr "Drc DESACTIVEE" #: pcbnew/tool_pcb.cpp:323 -#: pcbnew/tool_modedit.cpp:206 -#: eeschema/tool_sch.cpp:247 -#: gerbview/tool_gerber.cpp:342 msgid "Display Grid OFF" msgstr "Suppression de l'affichage de la grille" #: pcbnew/tool_pcb.cpp:326 -#: pcbnew/tool_modedit.cpp:210 -#: gerbview/tool_gerber.cpp:346 msgid "Display Polar Coord ON" msgstr "Activer affichage coord Polaires" #: pcbnew/tool_pcb.cpp:329 -#: pcbnew/tool_modedit.cpp:214 -#: eeschema/tool_sch.cpp:251 -#: gerbview/tool_gerber.cpp:350 msgid "Units in inches" msgstr "Unités en pouces" #: pcbnew/tool_pcb.cpp:332 -#: pcbnew/tool_modedit.cpp:218 -#: eeschema/tool_sch.cpp:255 -#: gerbview/tool_gerber.cpp:354 msgid "Units in millimeters" msgstr "Unités en millimètres" #: pcbnew/tool_pcb.cpp:335 -#: pcbnew/tool_modedit.cpp:222 -#: eeschema/tool_sch.cpp:259 -#: gerbview/tool_gerber.cpp:358 msgid "Change Cursor Shape" msgstr "Sélection de la forme du curseur" @@ -3781,7 +3256,6 @@ msgid "Show outlines of filled areas only in zones" msgstr "Afficher uniquement les contours des surfaces remplies dans les zones" #: pcbnew/tool_pcb.cpp:365 -#: pcbnew/tool_modedit.cpp:227 msgid "Show Pads Sketch" msgstr "Afficher pastilles en contour" @@ -3818,17 +3292,14 @@ msgid "Add zones" msgstr "Addition de Zones" #: pcbnew/tool_pcb.cpp:438 -#: pcbnew/tool_modedit.cpp:163 msgid "Add graphic line or polygon" msgstr "Addition de lignes ou polygones graphiques" #: pcbnew/tool_pcb.cpp:442 -#: pcbnew/tool_modedit.cpp:167 msgid "Add graphic circle" msgstr "Addition de graphiques (Cercle)" #: pcbnew/tool_pcb.cpp:446 -#: pcbnew/tool_modedit.cpp:171 msgid "Add graphic arc" msgstr "Addition de graphiques (Arc de Cercle)" @@ -3841,16 +3312,10 @@ msgid "Add dimension" msgstr "Ajout des cotes" #: pcbnew/tool_pcb.cpp:459 -#: gerbview/tool_gerber.cpp:308 msgid "Add layer alignment target" msgstr "Ajouter Mire de superposition" #: pcbnew/tool_pcb.cpp:464 -#: pcbnew/tool_modedit.cpp:185 -#: eeschema/tool_lib.cpp:91 -#: eeschema/tool_sch.cpp:225 -#: eeschema/menubar.cpp:133 -#: gerbview/tool_gerber.cpp:319 msgid "Delete items" msgstr "Suppression d'éléments" @@ -3887,19 +3352,14 @@ msgstr "" " sinon utiliser la largeur courante" #: pcbnew/tool_pcb.cpp:580 -#: pcbnew/tool_modedit.cpp:271 -#: eeschema/plotps.cpp:176 msgid "Auto" msgstr "Auto" #: pcbnew/tool_pcb.cpp:584 -#: pcbnew/tool_modedit.cpp:275 msgid "Zoom " msgstr "Zoom " #: pcbnew/tool_pcb.cpp:622 -#: pcbnew/tool_modedit.cpp:310 -#: common/zoom.cpp:256 msgid "User Grid" msgstr "Grille perso" @@ -3917,20 +3377,14 @@ msgid "Drc error, cancelled" msgstr "Erreur DRC, annulation" #: pcbnew/dialog_print_using_printer.cpp:129 -#: eeschema/dialog_print_using_printer.cpp:107 msgid "Error Init Printer info" msgstr "Erreur Init info imprimante" #: pcbnew/dialog_print_using_printer.cpp:163 -#: pcbnew/dialog_pad_properties_base.cpp:102 -#: pcbnew/dialog_SVG_print_base.cpp:23 -#: pcbnew/dialog_general_options_BoardEditor_base.cpp:53 -#: pcbnew/dialog_print_using_printer_base.cpp:20 msgid "Layers:" msgstr "Couches:" #: pcbnew/dialog_print_using_printer.cpp:374 -#: eeschema/dialog_print_using_printer.cpp:215 msgid "Printer Problem!" msgstr "Problème d'imprimante" @@ -3939,20 +3393,14 @@ msgid "Print Preview" msgstr "Prévisualisation" #: pcbnew/dialog_print_using_printer.cpp:465 -#: pcbnew/dialog_print_using_printer_base.cpp:125 -#: eeschema/dialog_print_using_printer_base.cpp:69 -#: pcbnew/dialog_print_using_printer_base.h:76 -#: eeschema/dialog_print_using_printer_base.h:66 msgid "Print" msgstr "Imprimer" #: pcbnew/dialog_print_using_printer.cpp:476 -#: eeschema/dialog_print_using_printer.cpp:287 msgid "There was a problem printing" msgstr "Il y a un problème d'impression" #: pcbnew/dialog_print_using_printer.cpp:492 -#: eeschema/dialog_print_using_printer.cpp:303 #, c-format msgid "Print page %d" msgstr "Imprimer page %d" @@ -3982,32 +3430,18 @@ msgid "Un-terminated delimited string" msgstr "Ligne délimitée non terminée" #: pcbnew/modedit_onclick.cpp:198 -#: pcbnew/onrightclick.cpp:128 -#: eeschema/onrightclick.cpp:88 -#: eeschema/libedit_onrightclick.cpp:47 -#: gerbview/onrightclick.cpp:41 msgid "End Tool" msgstr "Fin Outil" #: pcbnew/modedit_onclick.cpp:208 -#: pcbnew/onrightclick.cpp:450 -#: eeschema/onrightclick.cpp:604 -#: eeschema/libedit_onrightclick.cpp:233 -#: gerbview/onrightclick.cpp:50 msgid "Cancel Block" msgstr "Annuler Bloc" #: pcbnew/modedit_onclick.cpp:210 -#: eeschema/libedit_onrightclick.cpp:236 -#: gerbview/onrightclick.cpp:51 msgid "Zoom Block (drag middle mouse)" msgstr "Zoom Bloc (drag bouton du milieu souris)" #: pcbnew/modedit_onclick.cpp:213 -#: pcbnew/onrightclick.cpp:455 -#: eeschema/onrightclick.cpp:612 -#: eeschema/libedit_onrightclick.cpp:240 -#: gerbview/onrightclick.cpp:53 msgid "Place Block" msgstr "Place Bloc" @@ -4028,10 +3462,6 @@ msgid "Delete Block (shift+ctrl + drag mouse)" msgstr "Effacement Bloc (shift+ctrl + drag souris)" #: pcbnew/modedit_onclick.cpp:243 -#: pcbnew/onrightclick.cpp:765 -#: pcbnew/onrightclick.cpp:869 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:126 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:91 msgid "Rotate" msgstr "Rotation" @@ -4056,17 +3486,14 @@ msgid "Move Pad" msgstr "Déplace Pad" #: pcbnew/modedit_onclick.cpp:265 -#: pcbnew/onrightclick.cpp:804 msgid "Edit Pad" msgstr "Edit Pad" #: pcbnew/modedit_onclick.cpp:267 -#: pcbnew/onrightclick.cpp:808 msgid "New Pad Settings" msgstr "Nouvelles Caract. Pads" #: pcbnew/modedit_onclick.cpp:269 -#: pcbnew/onrightclick.cpp:812 msgid "Export Pad Settings" msgstr "Exporte Caract. Pads" @@ -4075,7 +3502,6 @@ msgid "delete Pad" msgstr "Supprimer Pad" #: pcbnew/modedit_onclick.cpp:276 -#: pcbnew/onrightclick.cpp:819 msgid "Global Pad Settings" msgstr "Edition Globale des pads" @@ -4108,10 +3534,6 @@ msgid "Place edge" msgstr "Place contour" #: pcbnew/modedit_onclick.cpp:308 -#: pcbnew/onrightclick.cpp:733 -#: pcbnew/onrightclick.cpp:767 -#: pcbnew/onrightclick.cpp:871 -#: eeschema/onrightclick.cpp:286 msgid "Edit" msgstr "Editer" @@ -4180,7 +3602,6 @@ msgid "Adjust size,shape,layers... for Pads" msgstr "Ajuster taille, forme, couches... pour pads" #: pcbnew/menubarmodedit.cpp:50 -#: pcbnew/set_grid.h:42 msgid "User Grid Size" msgstr "Dim Grille utilisteur" @@ -4219,94 +3640,17 @@ msgstr "No Net" msgid "Delete Pad (module %s %s) " msgstr "Effacer Pad (module %s %s) " -#: pcbnew/tool_modedit.cpp:41 -#: eeschema/tool_lib.cpp:122 -msgid "Select working library" -msgstr "Sélection de la librairie de travail" +#: pcbnew/class_text_mod.cpp:464 +msgid "Ref." +msgstr "Ref." -#: pcbnew/tool_modedit.cpp:45 -msgid "Save Module in working library" -msgstr "Sauver Module en librairie de travail" +#: pcbnew/class_text_mod.cpp:494 +msgid " No" +msgstr "Non" -#: pcbnew/tool_modedit.cpp:50 -msgid "Create new library and save current module" -msgstr "Créer une nouvelle librairie et y sauver le composant" - -#: pcbnew/tool_modedit.cpp:55 -msgid "Delete part in current library" -msgstr "Supprimer composant en librairie de travail" - -#: pcbnew/tool_modedit.cpp:64 -msgid "Load module from lib" -msgstr "Charger un module à partir d'une librairie" - -#: pcbnew/tool_modedit.cpp:69 -msgid "Load module from current board" -msgstr "Charger module à partir du C.I." - -#: pcbnew/tool_modedit.cpp:73 -msgid "Update module in current board" -msgstr "Remplacer module dans le C.I." - -#: pcbnew/tool_modedit.cpp:77 -msgid "Insert module into current board" -msgstr "Placer module dans le C.I." - -#: pcbnew/tool_modedit.cpp:82 -msgid "import module" -msgstr "Importer Module" - -#: pcbnew/tool_modedit.cpp:86 -msgid "export module" -msgstr "Exporter Module" - -#: pcbnew/tool_modedit.cpp:91 -#: eeschema/tool_lib.cpp:150 -#: eeschema/tool_sch.cpp:71 -#: eeschema/menubar.cpp:120 -msgid "Undo last edition" -msgstr "Défait dernière édition" - -#: pcbnew/tool_modedit.cpp:93 -#: eeschema/tool_lib.cpp:152 -#: eeschema/tool_sch.cpp:74 -#: eeschema/menubar.cpp:126 -msgid "Redo the last undo command" -msgstr "Refait la dernière commande defaite" - -#: pcbnew/tool_modedit.cpp:98 -msgid "Module Properties" -msgstr "Propriétés du Module" - -#: pcbnew/tool_modedit.cpp:102 -msgid "Print Module" -msgstr "Imprimer Module" - -#: pcbnew/tool_modedit.cpp:132 -msgid "Module Check" -msgstr "Test module" - -#: pcbnew/tool_modedit.cpp:158 -msgid "Add Pads" -msgstr "Addition de \"pins\"" - -#: pcbnew/tool_modedit.cpp:231 -msgid "Show Texts Sketch" -msgstr "Afficher textes en contour" - -#: pcbnew/tool_modedit.cpp:235 -msgid "Show Edges Sketch" -msgstr "Afficher Modules en contour" - -#: pcbnew/tool_modedit.cpp:304 -#, c-format -msgid "Grid %.1f" -msgstr "Grille %.1f" - -#: pcbnew/tool_modedit.cpp:306 -#, c-format -msgid "Grid %.3f" -msgstr "Grille %.3f" +#: pcbnew/class_text_mod.cpp:496 +msgid " Yes" +msgstr "Oui" #: pcbnew/onleftclick.cpp:183 msgid "Graphic not authorized on Copper layers" @@ -4368,7 +3712,6 @@ msgstr "Options des Contours:" #: pcbnew/dialog_non_copper_zones_properties_base.cpp:48 #: pcbnew/dialog_copper_zones_base.cpp:101 -#: eeschema/dialog_options.cpp:259 msgid "Any" msgstr "Tout" @@ -4393,7 +3736,6 @@ msgid "Outlines Appearence" msgstr "Aspect des Contours" #: pcbnew/dialog_non_copper_zones_properties_base.cpp:76 -#: gerbview/select_layers_to_pcb.cpp:91 msgid "Layer selection:" msgstr "Sélection couche:" @@ -4446,7 +3788,6 @@ msgid "Move Drawing" msgstr "Déplace Tracé" #: pcbnew/onrightclick.cpp:239 -#: eeschema/onrightclick.cpp:194 msgid "End Drawing" msgstr "Fin tracé" @@ -4455,7 +3796,6 @@ msgid "Edit Drawing" msgstr "Edit Tracé" #: pcbnew/onrightclick.cpp:244 -#: eeschema/onrightclick.cpp:196 msgid "Delete Drawing" msgstr "Supprimer Tracé" @@ -4472,7 +3812,6 @@ msgid "Delete Last Corner" msgstr "Supprimer Dernier Sommet" #: pcbnew/onrightclick.cpp:276 -#: eeschema/onrightclick.cpp:141 msgid "Delete Marker" msgstr "Effacer Marqueur" @@ -4708,11 +4047,6 @@ msgstr "Changer TOUTES Pistes (Pas les Vias)" #: pcbnew/onrightclick.cpp:771 #: pcbnew/onrightclick.cpp:826 #: pcbnew/onrightclick.cpp:875 -#: pcbnew/dialog_netlist_fbp.cpp:46 -#: pcbnew/dialog_netlist_fbp.cpp:54 -#: eeschema/menubar.cpp:133 -#: eeschema/edit_component_in_lib.cpp:126 -#: eeschema/edit_component_in_lib.cpp:201 msgid "Delete" msgstr "Supprimer" @@ -4837,7 +4171,6 @@ msgid "Rotate +" msgstr "Rotation +" #: pcbnew/onrightclick.cpp:728 -#: eeschema/onrightclick.cpp:274 msgid "Rotate -" msgstr "Rotation -" @@ -4924,13 +4257,31 @@ msgstr "Le fichier Session a une 'reference' à un composant non existant \"%s\" msgid "A wire_via references a missing padstack \"%s\"" msgstr "Une piste ou via a une référence vers un pad \"%s\" manquant" -#: 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" -"Plot uses circle shape for some drill values" -msgstr "" -"Plan de perçage: trop de diamètres différents pour tracer 1 symbole par diamètre (max 13)\n" -"Le tracé utilise des cercles pour quelques valeurs " +#: pcbnew/class_track.cpp:913 +#: pcbnew/dialog_pad_properties_base.cpp:80 +msgid "Standard" +msgstr "Standard" + +#: pcbnew/class_track.cpp:921 +msgid "Flags" +msgstr "Flags" + +#: pcbnew/class_track.cpp:959 +msgid "Diam" +msgstr "Diam" + +#: pcbnew/class_track.cpp:967 +#: pcbnew/class_pad.cpp:578 +msgid "Drill" +msgstr "Perçage" + +#: pcbnew/class_track.cpp:971 +msgid "(Specific)" +msgstr "(Specifique)" + +#: pcbnew/class_track.cpp:973 +msgid "(Default)" +msgstr "(Défaut)" #: pcbnew/dialog_copper_zones_base.cpp:32 msgid "Zone Setup:" @@ -5058,7 +4409,6 @@ msgstr "Exporter ces options vers les autres zones de cuivre" #: pcbnew/dialog_copper_zones_base.cpp:155 #: pcbnew/dialog_pad_properties_base.cpp:91 -#: eeschema/dialog_build_BOM_base.cpp:131 msgid "Ok" msgstr "Ok" @@ -5100,37 +4450,30 @@ msgstr "" "Modèle en mode avancé, pour filtrer les noms de net en liste\n" "Les noms de net correspondant à ce modèle ne sont pas listés" -#: pcbnew/dialog_pcb_text_properties.cpp:73 +#: pcbnew/dialog_pcb_text_properties.cpp:75 msgid "TextPCB properties" msgstr "Propriétés des textes PCB" -#: pcbnew/dialog_pcb_text_properties.cpp:104 -#: pcbnew/dialog_edit_module_text.cpp:97 -#: eeschema/sheetlab.cpp:101 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:22 +#: pcbnew/dialog_pcb_text_properties.cpp:106 msgid "Text:" msgstr "Texte:" -#: pcbnew/dialog_pcb_text_properties.cpp:142 -#: pcbnew/dialog_edit_module_text_base.cpp:81 +#: pcbnew/dialog_pcb_text_properties.cpp:144 msgid "Orientation" msgstr "Orientation" -#: pcbnew/dialog_pcb_text_properties.cpp:177 -#: pcbnew/dialog_edit_module_text_base.cpp:96 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 -#: eeschema/dialog_edit_label_base.cpp:43 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:60 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:99 +#: pcbnew/dialog_pcb_text_properties.cpp:179 msgid "Italic" msgstr "Italique" -#: pcbnew/dialog_pcb_text_properties.cpp:178 -#: pcbnew/dialog_edit_module_text_base.cpp:98 -#: eeschema/dialog_edit_label_base.cpp:45 +#: pcbnew/dialog_pcb_text_properties.cpp:180 msgid "Style" msgstr "Style" +#: pcbnew/dialog_pcb_text_properties.cpp:229 +msgid "The text thickness is too large for the text size. It will be clamped" +msgstr "L'épaisseur du texte est trop grande pour ses dimensions, Elle sera limitée" + #: pcbnew/dialog_pad_properties_base.cpp:22 msgid "Pad Num :" msgstr "Num Pad :" @@ -5161,12 +4504,10 @@ msgid "90" msgstr "90" #: pcbnew/dialog_pad_properties_base.cpp:64 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:39 msgid "-90" msgstr "-90" #: pcbnew/dialog_pad_properties_base.cpp:64 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:39 msgid "180" msgstr "180" @@ -5183,7 +4524,6 @@ msgid "SMD" msgstr "CMS" #: pcbnew/dialog_pad_properties_base.cpp:80 -#: eeschema/netlist.cpp:250 msgid "Conn" msgstr "Conn" @@ -5272,54 +4612,38 @@ msgid "Y pos" msgstr "Y pos" #: pcbnew/dialog_SVG_print_base.cpp:25 -#: pcbnew/dialog_print_using_printer_base.cpp:25 msgid "Copper Layers:" msgstr "Couches Cuivre:" #: pcbnew/dialog_SVG_print_base.cpp:29 -#: pcbnew/dialog_print_using_printer_base.cpp:29 msgid "Technical Layers:" msgstr "Couches Techniques:" #: pcbnew/dialog_SVG_print_base.cpp:36 -#: eeschema/dialog_SVG_print_base.cpp:23 msgid "Print SVG options:" msgstr "Options d'impression SVG :" #: pcbnew/dialog_SVG_print_base.cpp:38 -#: eeschema/dialog_SVG_print_base.cpp:25 msgid "Pen width mini" msgstr "Epaiss plume mini" #: pcbnew/dialog_SVG_print_base.cpp:43 -#: pcbnew/dialog_print_using_printer_base.cpp:83 -#: eeschema/dialog_SVG_print_base.cpp:30 -#: eeschema/dialog_print_using_printer_base.cpp:30 msgid "Selection of the minimum pen thickness used to draw items." msgstr "Valeur de l'épaisseur minimum de plume pour tracer les éléments" #: pcbnew/dialog_SVG_print_base.cpp:47 -#: pcbnew/dialog_print_using_printer_base.cpp:100 -#: eeschema/plotps.cpp:191 -#: eeschema/dialog_SVG_print_base.cpp:34 -#: eeschema/dialog_print_using_printer_base.cpp:44 msgid "Color" msgstr "Couleur" #: pcbnew/dialog_SVG_print_base.cpp:47 -#: eeschema/dialog_SVG_print_base.cpp:34 msgid "Black and White" msgstr "Noir et Blanc" #: pcbnew/dialog_SVG_print_base.cpp:49 -#: eeschema/dialog_SVG_print_base.cpp:36 msgid "Print mode" msgstr "Mode d'impression" #: pcbnew/dialog_SVG_print_base.cpp:51 -#: pcbnew/dialog_print_using_printer_base.cpp:104 -#: eeschema/dialog_SVG_print_base.cpp:38 -#: eeschema/dialog_print_using_printer_base.cpp:48 msgid "" "Choose if you wand to draw the sheet like it appears on screen,\n" "or in black and white mode, better to print it when using black and white printers" @@ -5328,14 +4652,10 @@ msgstr "" "ou en noir et blanc, préférable pour l'imprimer lorsque l'on utilise des imprimantes monochromes" #: pcbnew/dialog_SVG_print_base.cpp:55 -#: eeschema/dialog_SVG_print_base.cpp:42 msgid "Print Frame Ref" msgstr "Imprimer cartouche" #: pcbnew/dialog_SVG_print_base.cpp:58 -#: pcbnew/dialog_print_using_printer_base.cpp:90 -#: eeschema/dialog_SVG_print_base.cpp:44 -#: eeschema/dialog_print_using_printer_base.cpp:38 msgid "Print (or not) the Frame references." msgstr "Imprimer (ou non) le cartouche" @@ -5356,18 +4676,14 @@ msgid "Print Board" msgstr "Imprimer le C.I." #: pcbnew/dialog_SVG_print_base.cpp:80 -#: eeschema/dialog_SVG_print_base.cpp:59 msgid "Quit" msgstr "Quitter" #: pcbnew/dialog_SVG_print_base.cpp:87 -#: eeschema/sheet.cpp:152 -#: eeschema/dialog_SVG_print_base.cpp:66 msgid "Filename:" msgstr "Nom Fichier:" #: pcbnew/dialog_SVG_print_base.cpp:92 -#: eeschema/dialog_SVG_print_base.cpp:71 msgid "" "Enter a filename if you do not want to use default file names\n" "Can be used only when printing the current sheet" @@ -5376,8 +4692,6 @@ msgstr "" "Ne peut être utilisé que pour imprimer la feuille courante" #: pcbnew/dialog_SVG_print_base.cpp:97 -#: pcbnew/dialog_netlist_fbp.cpp:102 -#: eeschema/dialog_SVG_print_base.cpp:76 msgid "Messages:" msgstr "Messages:" @@ -5390,7 +4704,6 @@ msgid "Net Code" msgstr "Net Code" #: pcbnew/class_netinfo_item.cpp:166 -#: pcbnew/class_board.cpp:513 msgid "Vias" msgstr "Vias" @@ -5429,7 +4742,6 @@ msgid "Module Editor: Module modified! Continue?" msgstr "Editeur de Module: Module modifié! Continuer ?" #: pcbnew/muwave_command.cpp:51 -#: eeschema/libframe.cpp:576 msgid "Add Line" msgstr "Addition de lignes" @@ -5511,12 +4823,10 @@ msgid "Invisible" msgstr "Invisible" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:22 -#: gerbview/options.cpp:178 msgid "No Display" msgstr "Pas d'affichage" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:24 -#: gerbview/options.cpp:181 msgid "Display Polar Coord" msgstr "Affichage coord Polaires" @@ -5529,8 +4839,6 @@ msgstr "" "au curseur, en coordonnées polaires (angle et distance)" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:32 -#: eeschema/dialog_options.cpp:250 -#: gerbview/options.cpp:193 msgid "Units" msgstr "Unités" @@ -5547,7 +4855,6 @@ msgid "Full screen cursor" msgstr "Curseur plein écran" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:40 -#: gerbview/options.cpp:201 msgid "Cursor" msgstr "Curseur" @@ -5556,48 +4863,38 @@ msgid "Main cursor shape selection (small cross or large cursor)" msgstr "Sélection de l'aspect du curseur principal (petite croix ou grand curseur)" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 -#: eeschema/component_wizard/dialog_component_setup.cpp:164 msgid "1" msgstr "1" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "2" msgstr "2" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "4" msgstr "4" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "6" msgstr "6" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "8" msgstr "8" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "10" msgstr "10" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "12" msgstr "12" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "14" msgstr "14" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:51 -#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:28 msgid "16" msgstr "16" @@ -5678,7 +4975,6 @@ msgid "If enabled, force segments directions to H, V or 45 degrees, when creatin msgstr "Si activé, frorce la direction des segments à H, V ou 45° en création de segments sur couches techniques" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:119 -#: eeschema/dialog_options.cpp:243 msgid "Auto PAN" msgstr "Auto PAN" @@ -5696,8 +4992,6 @@ msgstr "Si activé, utiliser 2 segments de piste, avec un angle de 45 degrés en #: pcbnew/dialog_general_options_BoardEditor_base.cpp:136 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:144 -#: pcbnew/dialog_display_options_base.cpp:30 -#: pcbnew/dialog_display_options_base.cpp:38 msgid "Never" msgstr "Jamais" @@ -5708,8 +5002,6 @@ msgstr "En création de pistes" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:136 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:144 -#: pcbnew/dialog_display_options_base.cpp:30 -#: pcbnew/dialog_display_options_base.cpp:38 msgid "Always" msgstr "Toujours" @@ -5830,22 +5122,18 @@ msgid "Y Scale Adjust" msgstr "Ajustage Echelle Y" #: pcbnew/dialog_print_using_printer_base.cpp:78 -#: eeschema/dialog_print_using_printer_base.cpp:25 msgid "Pen Width Mini" msgstr "Epaiss Plume Mini" #: pcbnew/dialog_print_using_printer_base.cpp:87 -#: eeschema/dialog_print_using_printer_base.cpp:35 msgid "Print frame ref" msgstr "Imprimer cartouche" #: pcbnew/dialog_print_using_printer_base.cpp:100 -#: eeschema/dialog_print_using_printer_base.cpp:44 msgid "Black and white" msgstr "Noir et blanc" #: pcbnew/dialog_print_using_printer_base.cpp:102 -#: eeschema/dialog_print_using_printer_base.cpp:46 msgid "Print Mode" msgstr "Mode d'impression" @@ -5858,19 +5146,14 @@ msgid "Single page" msgstr "Page unique" #: pcbnew/dialog_print_using_printer_base.cpp:110 -#: eeschema/dialog_print_using_printer_base.cpp:54 msgid "Page Print" msgstr "Imprimer Page" #: pcbnew/dialog_print_using_printer_base.cpp:119 -#: eeschema/dialog_print_using_printer_base.cpp:63 msgid "Page Options" msgstr "Options Pages" #: pcbnew/dialog_print_using_printer_base.cpp:122 -#: eeschema/dialog_print_using_printer_base.cpp:66 -#: eeschema/dialog_print_using_printer.cpp:236 -#: eeschema/dialog_print_using_printer.cpp:276 msgid "Preview" msgstr "Prévisualisation" @@ -5962,24 +5245,23 @@ msgstr "Recalculer le chevelu complet ( utile après une édition manuelle de no msgid "Netlist File:" msgstr "Fichier Netliste:" -#: pcbnew/class_board.cpp:516 +#: pcbnew/class_board.cpp:529 msgid "Nodes" msgstr "Nodes" -#: pcbnew/class_board.cpp:519 -msgid "Links" -msgstr "Liens" - -#: pcbnew/class_board.cpp:522 +#: pcbnew/class_board.cpp:532 msgid "Nets" msgstr "Nets" -#: pcbnew/class_board.cpp:525 +#: pcbnew/class_board.cpp:540 +msgid "Links" +msgstr "Liens" + +#: pcbnew/class_board.cpp:543 msgid "Connect" msgstr "Connect" -#: pcbnew/class_board.cpp:528 -#: eeschema/eelayer.h:115 +#: pcbnew/class_board.cpp:546 msgid "NoConn" msgstr "Non Conn" @@ -6064,7 +5346,6 @@ msgid "Module Edges:" msgstr "Contours modules:" #: pcbnew/dialog_display_options_base.cpp:75 -#: cvpcb/dialog_display_options.cpp:146 msgid "Texts:" msgstr "Textes:" @@ -6093,12 +5374,10 @@ msgid "Others:" msgstr "Autres:" #: pcbnew/dialog_display_options_base.cpp:116 -#: gerbview/options.cpp:328 msgid "Display other items:" msgstr "Afficher autres éléments" #: pcbnew/dialog_display_options_base.cpp:122 -#: eeschema/dialog_options.cpp:267 msgid "Show page limits" msgstr " Afficher limites de page" @@ -6191,52 +5470,121 @@ msgstr "Change Perçage" msgid "Change Orientation" msgstr "Change Orientation" +#: pcbnew/tool_modedit.cpp:41 +msgid "Select working library" +msgstr "Sélection de la librairie de travail" + +#: pcbnew/tool_modedit.cpp:45 +msgid "Save Module in working library" +msgstr "Sauver Module en librairie de travail" + +#: pcbnew/tool_modedit.cpp:50 +msgid "Create new library and save current module" +msgstr "Créer une nouvelle librairie et y sauver le composant" + +#: pcbnew/tool_modedit.cpp:55 +msgid "Delete part in current library" +msgstr "Supprimer composant en librairie de travail" + +#: pcbnew/tool_modedit.cpp:64 +msgid "Load module from lib" +msgstr "Charger un module à partir d'une librairie" + +#: pcbnew/tool_modedit.cpp:69 +msgid "Load module from current board" +msgstr "Charger module à partir du C.I." + +#: pcbnew/tool_modedit.cpp:73 +msgid "Update module in current board" +msgstr "Remplacer module dans le C.I." + +#: pcbnew/tool_modedit.cpp:77 +msgid "Insert module into current board" +msgstr "Placer module dans le C.I." + +#: pcbnew/tool_modedit.cpp:82 +msgid "import module" +msgstr "Importer Module" + +#: pcbnew/tool_modedit.cpp:86 +msgid "export module" +msgstr "Exporter Module" + +#: pcbnew/tool_modedit.cpp:91 +msgid "Undo last edition" +msgstr "Défait dernière édition" + +#: pcbnew/tool_modedit.cpp:93 +msgid "Redo the last undo command" +msgstr "Refait la dernière commande defaite" + +#: pcbnew/tool_modedit.cpp:98 +msgid "Module Properties" +msgstr "Propriétés du Module" + +#: pcbnew/tool_modedit.cpp:102 +msgid "Print Module" +msgstr "Imprimer Module" + +#: pcbnew/tool_modedit.cpp:132 +msgid "Module Check" +msgstr "Test module" + +#: pcbnew/tool_modedit.cpp:158 +msgid "Add Pads" +msgstr "Addition de \"pins\"" + +#: pcbnew/tool_modedit.cpp:232 +msgid "Show Texts Sketch" +msgstr "Afficher textes en contour" + +#: pcbnew/tool_modedit.cpp:236 +msgid "Show Edges Sketch" +msgstr "Afficher Modules en contour" + +#: pcbnew/tool_modedit.cpp:305 +#, c-format +msgid "Grid %.1f" +msgstr "Grille %.1f" + +#: pcbnew/tool_modedit.cpp:307 +#, c-format +msgid "Grid %.3f" +msgstr "Grille %.3f" + #: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:39 -#: eeschema/dialog_eeschema_config.cpp:76 -#: gerbview/reglage.cpp:88 msgid "from " msgstr "De " #: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:185 -#: cvpcb/dialog_cvpcb_config.cpp:209 msgid "Footprint library files:" msgstr "Fichiers Library Modules:" #: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:235 -#: eeschema/dialog_eeschema_config.cpp:274 -#: cvpcb/dialog_cvpcb_config.cpp:259 msgid "Library already in use" msgstr "Librairie déjà en usage" #: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:248 -#: eeschema/dialog_eeschema_config.cpp:288 -#: cvpcb/dialog_cvpcb_config.cpp:272 msgid "Default Path for Libraries" msgstr "Chemin par Défaut des Librairies" #: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:283 -#: eeschema/dialog_eeschema_config.cpp:322 -#: cvpcb/dialog_cvpcb_config.cpp:309 msgid "Path already in use" msgstr "Chemin déjà en usage" #: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:322 -#: cvpcb/dialog_cvpcb_config.cpp:349 msgid "Footprint document file:" msgstr "Documentation des Modules:" -#: pcbnew/dialog_edit_module_text.cpp:95 +#: pcbnew/dialog_edit_module_text.cpp:97 msgid "Value:" msgstr "Valeur:" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:20 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:20 msgid "Footprint library files" msgstr "Fichiers librairies modules" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:28 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:23 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:54 msgid "" "List of active library files.\n" "Only library files in this list are loaded by Pcbnew.\n" @@ -6250,82 +5598,48 @@ msgstr "" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:36 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:83 -#: eeschema/edit_component_in_lib.cpp:121 -#: eeschema/edit_component_in_lib.cpp:194 -#: eeschema/dialog_eeschema_config_fbp.cpp:31 -#: eeschema/dialog_eeschema_config_fbp.cpp:62 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:31 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:62 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:109 msgid "Add" msgstr "Ajouter" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:37 -#: eeschema/dialog_eeschema_config_fbp.cpp:32 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:32 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:63 msgid "Add a new library after the selected library, and load it" msgstr "Ajouter une nouvelle librairie après la librairie sélectionnée, et la charger" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:41 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:86 -#: eeschema/dialog_eeschema_config_fbp.cpp:36 -#: eeschema/dialog_eeschema_config_fbp.cpp:65 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:36 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:67 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:112 msgid "Insert" msgstr "Insérer" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:42 -#: eeschema/dialog_eeschema_config_fbp.cpp:37 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:37 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:68 msgid "Add a new library before the selected library, and load it" msgstr "Ajouter une nouvelle librairie avant la librairie sélectionnée, et la charger" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:46 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:89 -#: eeschema/dialog_eeschema_config_fbp.cpp:41 -#: eeschema/dialog_eeschema_config_fbp.cpp:68 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:41 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:72 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:115 msgid "Remove" msgstr "Enlever" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:47 -#: eeschema/dialog_eeschema_config_fbp.cpp:42 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:42 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:73 msgid "Unload the selected library" msgstr "Décharger la librairie sélectionnée" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:56 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:82 msgid "Footprint documentation file" msgstr "Fichier documentation des modules" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:67 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:93 msgid "User defined search paths" msgstr "Chemins de recherche défini par l'utilisateur" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:74 -#: eeschema/dialog_eeschema_config_fbp.cpp:54 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:99 msgid "Additional paths used in this project. The priority is highter than default Kicad paths." msgstr "Chemins additionnels utilisés dans ce projet. La priorité est plus haute que les chemins par défaut de Kicad." #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:97 -#: eeschema/dialog_eeschema_config_fbp.cpp:76 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:123 msgid "Current search path list" msgstr "Liste des chemins de recherche courrants" #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:105 -#: eeschema/dialog_eeschema_config_fbp.cpp:79 -#: cvpcb/dialog_cvpcb_config_fbp.cpp:126 msgid "" "Paths (system paths and user paths) used to search and load libraries files and component doc files.\n" "Sorted by decreasing priority order." @@ -6488,7 +5802,6 @@ msgid "Add NoConnect Flag" msgstr "Ajoutde symboles de non connexion" #: eeschema/schedit.cpp:195 -#: eeschema/hotkeys.cpp:310 msgid "Add Wire" msgstr "Ajouter Fils" @@ -6497,14 +5810,10 @@ msgid "Add Bus" msgstr "Addition de Bus" #: eeschema/schedit.cpp:207 -#: eeschema/onrightclick.cpp:504 -#: eeschema/onrightclick.cpp:536 msgid "Add Junction" msgstr "Ajout jonctions" #: eeschema/schedit.cpp:211 -#: eeschema/onrightclick.cpp:505 -#: eeschema/onrightclick.cpp:537 msgid "Add Label" msgstr "Ajout Label" @@ -6537,7 +5846,6 @@ msgid "Import PinSheet" msgstr "Importer Connecteur de hiérarchie" #: eeschema/schedit.cpp:247 -#: eeschema/hotkeys.cpp:285 msgid "Add Component" msgstr "Ajout Composant" @@ -6545,15 +5853,6 @@ msgstr "Ajout Composant" msgid "Add Power" msgstr "Ajouter Alims" -#: eeschema/class_libentry_fields.cpp:343 -msgid "Datasheet" -msgstr "Documentation" - -#: eeschema/class_libentry_fields.cpp:351 -#: eeschema/build_BOM.cpp:621 -msgid "Field" -msgstr "Champ" - #: eeschema/tool_lib.cpp:46 msgid "deselect current tool" msgstr "Désélection outil courant" @@ -6655,7 +5954,6 @@ msgid "Edit pins part per part (Carefully use!)" msgstr "Editer pins unité par unité (Utiliser en connaissance de cause)" #: eeschema/tool_lib.cpp:237 -#: eeschema/tool_viewlib.cpp:137 #, c-format msgid "Part %c" msgstr "Composant %c" @@ -6696,7 +5994,6 @@ msgid " in library" msgstr " en librairie" #: eeschema/netlist.cpp:202 -#: eeschema/dialog_build_BOM_base.cpp:47 msgid "List" msgstr "Liste" @@ -6808,7 +6105,6 @@ msgid "Nothing found" msgstr " Rien trouvé" #: eeschema/eeredraw.cpp:100 -#: eeschema/eelayer.h:171 msgid "Sheet" msgstr "Feuille" @@ -6850,7 +6146,6 @@ msgstr "Erreur en création de " #: eeschema/netform.cpp:63 #: eeschema/netform.cpp:281 -#: eeschema/save_schemas.cpp:84 msgid "Failed to create file " msgstr "Impossible de créer le fichier " @@ -6867,7 +6162,6 @@ msgid "Root" msgstr "Racine" #: eeschema/tool_sch.cpp:36 -#: eeschema/menubar.cpp:43 msgid "New schematic project" msgstr "Nouveau Projet schématique" @@ -6888,8 +6182,6 @@ msgid "Library editor" msgstr "Editeur de librairies" #: eeschema/tool_sch.cpp:53 -#: eeschema/viewlibs.cpp:122 -#: eeschema/viewlib_frame.cpp:66 msgid "Library browser" msgstr "Visualisateur des librairies" @@ -6950,12 +6242,10 @@ msgid "Place a bus" msgstr "Placer un bus" #: eeschema/tool_sch.cpp:170 -#: eeschema/menubar.cpp:207 msgid "Place a wire to bus entry" msgstr "Placer une Entrée de Bus (type fil vers bus)" #: eeschema/tool_sch.cpp:174 -#: eeschema/menubar.cpp:213 msgid "Place a bus to bus entry" msgstr "Placer une Entrée de Bus (type bus vers bus)" @@ -6964,7 +6254,6 @@ msgid "Place no connect flag" msgstr "Placer symbole de non connexion" #: eeschema/tool_sch.cpp:183 -#: eeschema/menubar.cpp:223 msgid "Place net name" msgstr "Place nom de net" @@ -6981,7 +6270,6 @@ msgid "Place a junction" msgstr "Placer une jonction" #: eeschema/tool_sch.cpp:197 -#: eeschema/menubar.cpp:242 msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol" msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole" @@ -7002,7 +6290,6 @@ msgid "Place graphic line or polygon" msgstr "Placer ligne ou polygone graphique" #: eeschema/tool_sch.cpp:220 -#: eeschema/menubar.cpp:278 msgid "Place graphic text (comment)" msgstr "Placer textes graphiques (commentaires)" @@ -7014,60 +6301,21 @@ 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/plotps.cpp:177 -#: eeschema/plothpgl.cpp:210 -msgid "Page Size A4" -msgstr "Feuille A4" +#: eeschema/libfield.cpp:248 +msgid "Edit field" +msgstr "Editer Champ" -#: eeschema/plotps.cpp:178 -#: eeschema/plothpgl.cpp:215 -msgid "Page Size A" -msgstr "Feuille A" +#: eeschema/libfield.cpp:265 +msgid "" +"This name is an existing alias of the component\n" +"Aborting" +msgstr "" +"Ce nom est celui d'un alias existant du composant\n" +"Abandon." -#: eeschema/plotps.cpp:179 -#: eeschema/plothpgl.cpp:220 -msgid "Plot page size:" -msgstr "Format de la feuille:" - -#: eeschema/plotps.cpp:185 -msgid "Plot Options:" -msgstr "Options de Tracé:" - -#: eeschema/plotps.cpp:190 -msgid "B/W" -msgstr "N/B" - -#: eeschema/plotps.cpp:192 -msgid "Plot Color:" -msgstr "Tracé et Couleurs:" - -#: eeschema/plotps.cpp:196 -msgid "Print Sheet Ref" -msgstr "Imprimer cartouche" - -#: eeschema/plotps.cpp:205 -#: eeschema/plothpgl.cpp:270 -msgid "&Plot Page" -msgstr "&Tracer Page" - -#: eeschema/plotps.cpp:209 -#: eeschema/plothpgl.cpp:274 -msgid "Plot A&LL" -msgstr "&Tout Tracer" - -#: eeschema/plotps.cpp:218 -msgid "Messages :" -msgstr "Messages :" - -#: eeschema/plotps.cpp:232 -#: eeschema/dialog_options.cpp:310 -msgid "Default Line Width" -msgstr "Epaiss. ligne par défaut" - -#: eeschema/plotps.cpp:435 -#, c-format -msgid "Plot: %s\n" -msgstr "Trace: %s\n" +#: eeschema/libfield.cpp:285 +msgid "No new text: no change" +msgstr "Pas de nouveau texte: pas de changements" #: eeschema/schframe.cpp:316 msgid "Schematic modified, Save before exit ?" @@ -7094,7 +6342,6 @@ msgid "Hide grid" msgstr "Ne pas afficher la grille" #: eeschema/schframe.cpp:472 -#: eeschema/dialog_options.cpp:218 msgid "Show grid" msgstr "Afficher grille" @@ -7293,12 +6540,10 @@ msgid "Warning More than 1 Pin connected to UnConnect symbol" msgstr "Attention: plus de 1 Pin connectée à un symbole de non connexion" #: eeschema/erc.cpp:594 -#: common/confirm.cpp:70 msgid "Warning" msgstr "Avertissement" #: eeschema/erc.cpp:597 -#: common/confirm.cpp:74 msgid "Error" msgstr "Erreur" @@ -7412,7 +6657,6 @@ msgstr "Empreinte: " #: eeschema/onrightclick.cpp:301 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:73 -#: eeschema/classes_body_items.cpp:82 msgid "Convert" msgstr "Convert" @@ -7423,7 +6667,6 @@ msgstr "Unité %d %c" #: eeschema/onrightclick.cpp:314 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:26 -#: eeschema/classes_body_items.cpp:72 msgid "Unit" msgstr "Unité" @@ -7522,7 +6765,6 @@ msgid "Move Text" msgstr "Déplacer Texte" #: eeschema/onrightclick.cpp:425 -#: eeschema/libedit_onrightclick.cpp:130 msgid "Rotate Text" msgstr "Rot. Texte" @@ -7639,7 +6881,6 @@ msgid "Drag Block" msgstr "Drag Bloc" #: eeschema/onrightclick.cpp:624 -#: eeschema/libedit_onrightclick.cpp:247 msgid "Mirror Block ||" msgstr "Miroir Bloc ||" @@ -7647,6 +6888,10 @@ msgstr "Miroir Bloc ||" msgid "Copy to Clipboard" msgstr "Copie dans Presse papier" +#: eeschema/edit_label.cpp:50 +msgid "Empty Text!" +msgstr "Texte vide" + #: eeschema/viewlibs.cpp:129 msgid "none selected" msgstr "Pas de sélection" @@ -7727,6 +6972,10 @@ msgstr "" "\n" "#End List\n" +#: eeschema/build_BOM.cpp:621 +msgid "Field" +msgstr "Champ" + #: eeschema/build_BOM.cpp:629 msgid "" "\n" @@ -7768,12 +7017,10 @@ msgid "#End labels\n" msgstr "#End labels\n" #: eeschema/menubar.cpp:42 -#: gerbview/tool_gerber.cpp:53 msgid "&New" msgstr "&Nouveau" #: eeschema/menubar.cpp:47 -#: cvpcb/menucfg.cpp:38 msgid "&Open" msgstr "&Ouvrir " @@ -7858,7 +7105,6 @@ msgid "&Redo\t" msgstr "&Redo\t" #: eeschema/menubar.cpp:139 -#: pcbnew/find.h:43 msgid "Find" msgstr "Chercher" @@ -7931,7 +7177,6 @@ msgid "Place a global label. Warning: all global labels with the same name are c msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hiérarchie" #: eeschema/menubar.cpp:233 -#: eeschema/eelayer.h:85 msgid "Junction" msgstr "Jonction" @@ -7984,7 +7229,6 @@ msgid "Library preferences" msgstr "Préférences pour Librairie" #: eeschema/menubar.cpp:290 -#: gerbview/tool_gerber.cpp:84 msgid "&Colors" msgstr "&Couleurs" @@ -7993,7 +7237,6 @@ msgid "Color preferences" msgstr "Préférences de couleurs" #: eeschema/menubar.cpp:296 -#: gerbview/tool_gerber.cpp:87 msgid "&Options" msgstr "&Options" @@ -8014,7 +7257,6 @@ msgid "Open the eeschema manual" msgstr "Ouvrir la documentation de eeschema" #: eeschema/menubar.cpp:324 -#: kicad/buildmnu.cpp:231 msgid "&About" msgstr "&Au Sujet de" @@ -8060,94 +7302,54 @@ msgstr "Exporter le symbole" msgid "Save Symbol in [%s]" msgstr "Symbole sauvé en [%s]" -#: eeschema/class_drawsheet.cpp:252 -msgid "Ok to cleanup this sheet" -msgstr "Ok pour nettoyer cette feuille" +#: eeschema/plotps.cpp:177 +msgid "Page Size A4" +msgstr "Feuille A4" -#: eeschema/class_drawsheet.cpp:610 +#: eeschema/plotps.cpp:178 +msgid "Page Size A" +msgstr "Feuille A" + +#: eeschema/plotps.cpp:179 +msgid "Plot page size:" +msgstr "Format de la feuille:" + +#: eeschema/plotps.cpp:185 +msgid "Plot Options:" +msgstr "Options de Tracé:" + +#: eeschema/plotps.cpp:190 +msgid "B/W" +msgstr "N/B" + +#: eeschema/plotps.cpp:192 +msgid "Plot Color:" +msgstr "Tracé et Couleurs:" + +#: eeschema/plotps.cpp:196 +msgid "Print Sheet Ref" +msgstr "Imprimer cartouche" + +#: eeschema/plotps.cpp:205 +msgid "&Plot Page" +msgstr "&Tracer Page" + +#: eeschema/plotps.cpp:209 +msgid "Plot A&LL" +msgstr "&Tout Tracer" + +#: eeschema/plotps.cpp:218 +msgid "Messages :" +msgstr "Messages :" + +#: eeschema/plotps.cpp:232 +msgid "Default Line Width" +msgstr "Epaiss. ligne par défaut" + +#: eeschema/plotps.cpp:435 #, c-format -msgid "A Sub Hierarchy named %s exists, Use it (The data in this sheet will be replaced)?" -msgstr "Une sous Hiérarchie nommée %s existe, L'utiliser (Les données de cette page seront remplacées)?" - -#: eeschema/class_drawsheet.cpp:614 -msgid "Sheet Filename Renaming Aborted" -msgstr " Renommage de Fichier de Feuille Abandonné" - -#: eeschema/class_drawsheet.cpp:622 -#, c-format -msgid "A file named %s exists, load it (otherwise keep current sheet data if possible)?" -msgstr "Un fichier %s existe, Le charger (autrement garder le contenu de la feuille active, si c'est possible) ?" - -#: eeschema/class_drawsheet.cpp:640 -msgid "This sheet uses shared data in a complex hierarchy" -msgstr "Cette feuille utilise des données partagées dans une hiérarchie complexe" - -#: eeschema/class_drawsheet.cpp:643 -msgid "Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)" -msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement supprimer les données courantes)" - -#: eeschema/class_drawsheet.cpp:693 -#: eeschema/dialog_create_component.cpp:147 -#: eeschema/dialog_edit_component_in_schematic.cpp:85 -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:150 -msgid "Name" -msgstr "Nom" - -#: eeschema/class_drawsheet.cpp:694 -msgid "FileName" -msgstr "Nom Fichier" - -#: eeschema/class_pin.cpp:29 -#: eeschema/eelayer.h:134 -msgid "Pin" -msgstr "Pin" - -#: eeschema/class_pin.cpp:999 -msgid "PinName" -msgstr "Nom Pin" - -#: eeschema/class_pin.cpp:1008 -#: eeschema/eelayer.h:140 -msgid "PinNum" -msgstr "Num Pin" - -#: eeschema/class_pin.cpp:1012 -msgid "PinType" -msgstr "Type Pin" - -#: eeschema/class_pin.cpp:1018 -#: eeschema/classes_body_items.cpp:77 -msgid "no" -msgstr "non" - -#: eeschema/class_pin.cpp:1020 -#: eeschema/classes_body_items.cpp:79 -msgid "yes" -msgstr "oui" - -#: eeschema/class_pin.cpp:1032 -#: eeschema/dialog_edit_label_base.cpp:37 -#: eeschema/pinedit-dialog.cpp:212 -msgid "Up" -msgstr "Haut" - -#: eeschema/class_pin.cpp:1036 -#: eeschema/dialog_edit_label_base.cpp:37 -#: eeschema/pinedit-dialog.cpp:213 -msgid "Down" -msgstr "Bas" - -#: eeschema/class_pin.cpp:1040 -#: eeschema/dialog_edit_label_base.cpp:37 -#: eeschema/pinedit-dialog.cpp:211 -msgid "Left" -msgstr "Gauche" - -#: eeschema/class_pin.cpp:1044 -#: eeschema/dialog_edit_label_base.cpp:37 -#: eeschema/pinedit-dialog.cpp:210 -msgid "Right" -msgstr "Droite" +msgid "Plot: %s\n" +msgstr "Trace: %s\n" #: eeschema/sheet.cpp:158 msgid "Sheetname:" @@ -8241,7 +7443,6 @@ msgid "Orientation (Degrees)" msgstr "Orientation (Degrés)" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:43 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:58 msgid "Select if the component is to be rotated when drawn" msgstr "Sélectionner si le composant doit être tourné lors de l'affichage." @@ -8254,12 +7455,10 @@ msgid "Mirror |" msgstr "Miroir |" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:56 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:71 msgid "Pick the graphical transformation to be used when displaying the component, if any" msgstr "Ajuster la transformation graphique à utiliser pour afficher le composant" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:63 -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:445 msgid "Chip Name" msgstr "Nom en librairie" @@ -8276,73 +7475,54 @@ 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" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:86 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:20 -#: eeschema/eelayer.h:164 msgid "Fields" msgstr "Champs" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:95 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:29 msgid "Add a new custom field" msgstr "Ajouter un nouveau champ utilisateur" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:100 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:34 msgid "Delete one of the optional fields" msgstr "Supprimer un des champs optionnels." #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:104 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:38 msgid "Move Up" msgstr "Vers le haut ^" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:105 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:39 msgid "Move the selected optional fields up one position" msgstr "Déplacer le champ optionnel sélectionné de une position vers le haut" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:115 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:80 msgid "Visibility" msgstr "Visibilité" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:120 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:85 msgid "Show" msgstr "Visible" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:122 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:87 msgid "Check if you want this field visible" msgstr "Activer si vous voulez avoir ce champ visible" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:128 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:93 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 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:60 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:99 msgid "Bold" msgstr "Gras" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 -#: eeschema/dialog_edit_label_base.cpp:43 -#: eeschema/dialog_bodygraphictext_properties_base.cpp:60 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:99 msgid "Bold Italic" msgstr "Gras Italique" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:136 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:101 msgid "Style:" msgstr "Style:" @@ -8351,7 +7531,6 @@ msgid "The style of the currently selected field's text in the schemati" msgstr "Le style du texte du champ actuellement sélectionné" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:147 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:110 msgid "Field Name" msgstr "Nom Champ" @@ -8364,18 +7543,14 @@ msgstr "" "Quelques noms de champs fixés ne sont pas modifiables." #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:161 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:124 msgid "Field Value" msgstr "Texte Champ" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:166 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:115 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:129 msgid "The text (or value) of the currently selected field" msgstr "Le texte (ou la valeur) du champ actuellement sélectionné" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:175 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:138 msgid "Size(\")" msgstr "Taille(\")" @@ -8384,7 +7559,6 @@ msgid "The size of the currently selected field's text in the schematic" msgstr "La taille du texte du champ actuellement sélectionné" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:192 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:155 msgid "PosX(\")" msgstr "PosX" @@ -8393,12 +7567,10 @@ msgid "The X coordinate of the text relative to the component" msgstr "La position X du texte relativement au composant" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:206 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:167 msgid "PosY(\")" msgstr "PosY" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:211 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:172 msgid "The Y coordinate of the text relative to the component" msgstr "La position Y du texte relativement au composant" @@ -8514,33 +7686,46 @@ msgstr "Champ 8" msgid "All existing users fields" msgstr "Tous les champs existants" -#: eeschema/dialog_edit_label.cpp:68 -msgid "Global Label Properties" -msgstr "Propriétés du Label Global" +#: eeschema/class_drawsheet.cpp:252 +msgid "Ok to cleanup this sheet" +msgstr "Ok pour nettoyer cette feuille" -#: eeschema/dialog_edit_label.cpp:72 -msgid "Hierarchal Label Properties" -msgstr "Propriétés du Label Hiérarchique" +#: eeschema/class_drawsheet.cpp:610 +#, c-format +msgid "A Sub Hierarchy named %s exists, Use it (The data in this sheet will be replaced)?" +msgstr "Une sous Hiérarchie nommée %s existe, L'utiliser (Les données de cette page seront remplacées)?" -#: eeschema/dialog_edit_label.cpp:73 -msgid "Hlabel Shape" -msgstr "Forme HLabel" +#: eeschema/class_drawsheet.cpp:614 +msgid "Sheet Filename Renaming Aborted" +msgstr " Renommage de Fichier de Feuille Abandonné" -#: eeschema/dialog_edit_label.cpp:77 -msgid "Label Properties" -msgstr "Propriétés du label" +#: eeschema/class_drawsheet.cpp:622 +#, c-format +msgid "A file named %s exists, load it (otherwise keep current sheet data if possible)?" +msgstr "Un fichier %s existe, Le charger (autrement garder le contenu de la feuille active, si c'est possible) ?" -#: eeschema/dialog_edit_label.cpp:81 -msgid "Text Properties" -msgstr "Propriétés du Texte" +#: eeschema/class_drawsheet.cpp:640 +msgid "This sheet uses shared data in a complex hierarchy" +msgstr "Cette feuille utilise des données partagées dans une hiérarchie complexe" + +#: eeschema/class_drawsheet.cpp:643 +msgid "Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)" +msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement supprimer les données courantes)" + +#: eeschema/class_drawsheet.cpp:693 +#: eeschema/dialog_create_component.cpp:147 +msgid "Name" +msgstr "Nom" + +#: eeschema/class_drawsheet.cpp:694 +msgid "FileName" +msgstr "Nom Fichier" #: eeschema/dialog_create_component.cpp:158 -#: eeschema/component_class.cpp:185 msgid "U" msgstr "U" #: eeschema/dialog_create_component.cpp:170 -#: eeschema/edit_component_in_lib.cpp:278 msgid "As Convert" msgstr "A une forme \"convertie\"" @@ -8666,12 +7851,10 @@ msgid "Show Pin Number" msgstr "Montrer Numéro de Pin" #: eeschema/dialog_create_component.cpp:239 -#: eeschema/edit_component_in_lib.cpp:295 msgid "Show Pin Name" msgstr "Montre Nom de Pin" #: eeschema/dialog_create_component.cpp:243 -#: eeschema/edit_component_in_lib.cpp:306 msgid "Pin Name Inside" msgstr "Nom de pin à l'intérieur" @@ -8689,24 +7872,35 @@ 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" #: eeschema/dialog_edit_label_base.cpp:49 -#: eeschema/pinedit-dialog.cpp:247 -#: eeschema/component_wizard/dialog_component_setup.cpp:201 msgid "Input" msgstr "Entrée" #: eeschema/dialog_edit_label_base.cpp:49 -#: eeschema/pinedit-dialog.cpp:248 -#: eeschema/component_wizard/dialog_component_setup.cpp:202 msgid "Output" msgstr "Sortie" #: eeschema/dialog_edit_label_base.cpp:49 -#: eeschema/pinedit-dialog.cpp:249 msgid "Bidi" msgstr "Bidi" @@ -8715,8 +7909,6 @@ msgid "TriState" msgstr "3 états" #: eeschema/dialog_edit_label_base.cpp:49 -#: eeschema/pinedit-dialog.cpp:251 -#: eeschema/component_wizard/dialog_component_setup.cpp:205 msgid "Passive" msgstr "Passive" @@ -8725,37 +7917,30 @@ msgid "Glabel Shape" msgstr "Forme GLabel" #: eeschema/pinedit.cpp:22 -#: eeschema/pinedit-dialog.cpp:235 msgid "line" msgstr "Ligne" #: eeschema/pinedit.cpp:22 -#: eeschema/pinedit-dialog.cpp:236 msgid "invert" msgstr "invert" #: eeschema/pinedit.cpp:22 -#: eeschema/pinedit-dialog.cpp:237 msgid "clock" msgstr "clock" #: eeschema/pinedit.cpp:22 -#: eeschema/pinedit-dialog.cpp:238 msgid "clock inv" msgstr "clock inv" #: eeschema/pinedit.cpp:23 -#: eeschema/pinedit-dialog.cpp:239 msgid "low in" msgstr "low in" #: eeschema/pinedit.cpp:23 -#: eeschema/pinedit-dialog.cpp:240 msgid "low clock" msgstr "low clock" #: eeschema/pinedit.cpp:23 -#: eeschema/pinedit-dialog.cpp:241 msgid "low out" msgstr "low out" @@ -8849,9 +8034,90 @@ msgstr "&Accepter Offset" msgid "Plot " msgstr "Trace " -#: eeschema/edit_label.cpp:48 -msgid "Empty Text!" -msgstr "Texte vide" +#: eeschema/classes_body_items.cpp:48 +msgid "Undefined" +msgstr "Non Défini" + +#: eeschema/classes_body_items.cpp:69 +#: eeschema/classes_body_items.cpp:75 +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" +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 +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 +msgid "Bounding box" +msgstr "Rectange dencadrement" + +#: eeschema/classes_body_items.cpp:365 +#, c-format +msgid "circle only had %d parameters of the required 6" +msgstr "le cercle a seulement %d paramètres sur les 6 requis" + +#: eeschema/classes_body_items.cpp:455 +msgid "Radius" +msgstr "Rayon" + +#: eeschema/classes_body_items.cpp:504 +#, c-format +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 +msgid "Rectangle" +msgstr "Rectangle" + +#: eeschema/classes_body_items.cpp:616 +#, 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 +msgid "PolyLine" +msgstr "PolyLigne" + +#: eeschema/classes_body_items.cpp:821 +#, 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 +#, 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 +#, 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 +#, 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" #: eeschema/dialog_edit_component_in_lib.cpp:134 msgid "General :" @@ -8882,7 +8148,6 @@ msgid "Browse DocFiles" msgstr "Examen Fichiers de Doc" #: eeschema/dialog_edit_component_in_lib.cpp:200 -#: eeschema/edit_component_in_lib.cpp:105 msgid "Alias" msgstr "Alias" @@ -8966,7 +8231,6 @@ msgstr "Taille Label par défaut" #: eeschema/netlist_control.cpp:131 #: eeschema/netlist_control.cpp:255 -#: gerbview/options.cpp:209 msgid "Default format" msgstr "Format par défaut" @@ -8988,7 +8252,6 @@ msgstr "&Supprimer" #: eeschema/netlist_control.cpp:171 #: eeschema/netlist_control.cpp:275 -#: cvpcb/cvframe.cpp:440 msgid "Netlist" msgstr "Netliste" @@ -9021,7 +8284,6 @@ msgid "Netlist command:" msgstr "Commande netliste:" #: eeschema/netlist_control.cpp:342 -#: share/setpage.cpp:334 msgid "Title:" msgstr "Titre:" @@ -9107,7 +8369,6 @@ msgid "Fill:" msgstr "Remplissage:" #: eeschema/edit_component_in_lib.cpp:68 -#: eeschema/dialog_edit_component_in_lib.h:56 msgid "Lib Component Properties" msgstr "Propriétés du composant librairie" @@ -9179,7 +8440,6 @@ msgid "Delete Convert items" msgstr "Suppression des éléments convertis" #: eeschema/edit_component_in_lib.cpp:747 -#: common/eda_doc.cpp:135 msgid "Doc Files" msgstr "Fichiers de Doc" @@ -9210,21 +8470,25 @@ msgstr "" msgid "User defined search path" msgstr "Chemin de recherche défini par l'utilisateur" -#: eeschema/libfield.cpp:247 -msgid "Edit field" -msgstr "Editer Champ" +#: eeschema/class_pin.cpp:29 +msgid "Pin" +msgstr "Pin" -#: eeschema/libfield.cpp:264 -msgid "" -"This name is an existing alias of the component\n" -"Aborting" -msgstr "" -"Ce nom est celui d'un alias existant du composant\n" -"Abandon." +#: eeschema/class_pin.cpp:984 +msgid "PinName" +msgstr "Nom Pin" -#: eeschema/libfield.cpp:283 -msgid "No new text: no change" -msgstr "Pas de nouveau texte: pas de changements" +#: 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 +msgid "Datasheet" +msgstr "Documentation" #: eeschema/pinedit-dialog.cpp:148 msgid "Pin Name :" @@ -9259,7 +8523,6 @@ msgid "3 States" msgstr "3 Etats" #: eeschema/pinedit-dialog.cpp:252 -#: eeschema/component_wizard/dialog_component_setup.cpp:206 msgid "Unspecified" msgstr "Non specifié" @@ -9373,7 +8636,6 @@ msgid "Move Text " msgstr "Déplacer Texte" #: eeschema/libedit_onrightclick.cpp:128 -#: eeschema/dialog_edit_label_base.h:60 msgid "Text Editor" msgstr "Editeur de Texte" @@ -9617,83 +8879,25 @@ msgstr "Placer composant en schématique" msgid "Current" msgstr "Courant" -#: eeschema/dialog_print_using_printer_base.cpp:52 -#: eeschema/classes_body_items.cpp:69 -#: eeschema/classes_body_items.cpp:75 -msgid "All" -msgstr "Tout" +#: eeschema/dialog_edit_label.cpp:68 +msgid "Global Label Properties" +msgstr "Propriétés du Label Global" -#: eeschema/classes_body_items.cpp:48 -msgid "Undefined" -msgstr "Non Défini" +#: eeschema/dialog_edit_label.cpp:72 +msgid "Hierarchal Label Properties" +msgstr "Propriétés du Label Hiérarchique" -#: eeschema/classes_body_items.cpp:132 -#, c-format -msgid "arc only had %d parameters of the required 8" -msgstr "l'arc a seulement %d paramètres sur les 8 requis" +#: eeschema/dialog_edit_label.cpp:73 +msgid "Hlabel Shape" +msgstr "Forme HLabel" -#: eeschema/classes_body_items.cpp:331 -#: eeschema/classes_body_items.cpp:451 -#: eeschema/classes_body_items.cpp:581 -#: eeschema/classes_body_items.cpp:687 -#: eeschema/classes_body_items.cpp:771 -#: eeschema/classes_body_items.cpp:1008 -msgid "Line width" -msgstr "Epaisseur ligne" +#: eeschema/dialog_edit_label.cpp:77 +msgid "Label Properties" +msgstr "Propriétés du label" -#: eeschema/classes_body_items.cpp:336 -#: eeschema/classes_body_items.cpp:460 -#: eeschema/classes_body_items.cpp:776 -#: eeschema/classes_body_items.cpp:1013 -msgid "Bounding box" -msgstr "Rectange dencadrement" - -#: eeschema/classes_body_items.cpp:365 -#, c-format -msgid "circle only had %d parameters of the required 6" -msgstr "le cercle a seulement %d paramètres sur les 6 requis" - -#: eeschema/classes_body_items.cpp:455 -msgid "Radius" -msgstr "Rayon" - -#: eeschema/classes_body_items.cpp:504 -#, c-format -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:589 -msgid "Rectangle" -msgstr "Rectangle" - -#: eeschema/classes_body_items.cpp:612 -#, 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:785 -msgid "PolyLine" -msgstr "PolyLigne" - -#: eeschema/classes_body_items.cpp:817 -#, 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:822 -#, 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:838 -#, 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:845 -#, 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" +#: eeschema/dialog_edit_label.cpp:81 +msgid "Text Properties" +msgstr "Propriétés du Texte" #: eeschema/class_drawsheetpath.cpp:180 #, c-format @@ -9716,7 +8920,6 @@ msgstr " erreur!" #: eeschema/eelibs_read_libraryfiles.cpp:313 #: eeschema/eelibs_read_libraryfiles.cpp:320 -#: cvpcb/readschematicnetlist.cpp:113 msgid "File <" msgstr "Fichier <" @@ -9780,8 +8983,6 @@ msgstr "Module du Composant" #: eeschema/dialog_edit_component_in_schematic.cpp:99 #: eeschema/dialog_edit_libentry_fields_in_lib.cpp:159 #: eeschema/dialog_edit_libentry_fields_in_lib.cpp:164 -#: common/wxwineda.cpp:224 -#: common/wxwineda.cpp:237 msgid "Pos " msgstr "Pos " @@ -9794,17 +8995,6 @@ msgstr "Pas de nom de composant!" msgid "Component [%s] not found!" msgstr "Composant [%s] non trouvé!" -#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:228 -#, c-format -msgid "" -"A new name is entered for this component\n" -"An alias %s already exists!\n" -"Cannot update this component" -msgstr "" -"Un noveau nom a été entré pour ce composant\n" -"Un alias %s existe déjà!\n" -"Ne peut mettre à jour ce composant" - #: eeschema/load_one_schematic_file.cpp:70 msgid "Failed to open " msgstr "Erreur ouverture " @@ -9830,6 +9020,17 @@ msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enreg msgid "Done Loading " msgstr "Chargement terminé" +#: eeschema/dialog_edit_libentry_fields_in_lib.cpp:228 +#, c-format +msgid "" +"A new name is entered for this component\n" +"An alias %s already exists!\n" +"Cannot update this component" +msgstr "" +"Un noveau nom a été entré pour ce composant\n" +"Un alias %s existe déjà!\n" +"Ne peut mettre à jour ce composant" + #: eeschema/save_schemas.cpp:65 msgid "Schematic Files" msgstr "Fichiers Schématiques" @@ -9983,7 +9184,7 @@ msgstr "Effacement des associations existantes" #: cvpcb/tool_cvpcb.cpp:68 msgid "Create export file (component/footprint list, used by eeschema to fill the footprint field of components)" -msgstr "" +msgstr "Créer un fichier export(liste composant/empreinte, utilisée par Eeschema pour remplir le champ Module des composants)" #: cvpcb/tool_cvpcb.cpp:74 msgid "Display footprints list documentation" @@ -10062,13 +9263,11 @@ msgid "Project File Error" msgstr "Erreur en Fichier Projet" #: cvpcb/listlib.cpp:73 -#: cvpcb/loadcmp.cpp:50 #, c-format msgid "PCB foot print library file <%s> could not be found in the default search paths." msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut." #: cvpcb/listlib.cpp:84 -#: cvpcb/loadcmp.cpp:60 #, c-format msgid "Could not open PCB foot print library file <%s>." msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>." @@ -10244,7 +9443,6 @@ msgid " [no file]" msgstr " [pas de fichier]" #: cvpcb/displayframe.cpp:124 -#: cvpcb/dialog_display_options.h:50 msgid "Display Options" msgstr "Options d'Affichage" @@ -10266,7 +9464,6 @@ msgid "1:1 zoom" msgstr "1:1 zoom" #: cvpcb/readschematicnetlist.cpp:114 -#: kicad/prjconfig.cpp:94 msgid "> not found" msgstr "> non trouvé" @@ -10759,7 +9956,6 @@ msgid "Layer modified, Continue ?" msgstr "Couche modifiée, Continuer ?" #: gerbview/readgerb.cpp:146 -#: gerbview/dcode.cpp:290 msgid "File " msgstr "Fichier " @@ -10769,14 +9965,14 @@ msgid "%d errors while reading Gerber file [%s]" msgstr "%d erreurs pendant lecture fichier gerber [%s]" #: gerbview/readgerb.cpp:274 -#: gerbview/files.cpp:184 -#: gerbview/files.cpp:219 +#: gerbview/files.cpp:208 +#: gerbview/files.cpp:243 #, c-format msgid "Gerber DCODE files (%s)|*.%s" msgstr "Fichiers Gerber DCODE (%s)|*.%s" #: gerbview/readgerb.cpp:278 -#: gerbview/files.cpp:189 +#: gerbview/files.cpp:213 msgid "Load GERBER DCODE File" msgstr "Charger Fichier de DCodes" @@ -10789,6 +9985,70 @@ msgstr "Commande <%c%c> ignorée par Gerbview" msgid "Too many include files!!" msgstr "Trop de fichiers inclus!!" +#: gerbview/files.cpp:88 +msgid "Not yet available..." +msgstr "non encore disponible" + +#: gerbview/files.cpp:138 +msgid "Gerber files (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" +msgstr "Fichiers Gerber (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" + +#: gerbview/files.cpp:142 +msgid "Top layer (*.GTL)|*.GTL;*.gtl|" +msgstr "" + +#: gerbview/files.cpp:143 +msgid "Bottom layer (*.GBL)|*.GBL;*.gbl|" +msgstr "" + +#: gerbview/files.cpp:144 +msgid "Bottom solder resist (*.GBS)|*.GBS;*.gbs|" +msgstr "" + +#: gerbview/files.cpp:145 +msgid "Top solder resist (*.GTS)|*.GTS;*.gts|" +msgstr "" + +#: gerbview/files.cpp:146 +msgid "Bottom overlay (*.GBO)|*.GBO;*.gbo|" +msgstr "" + +#: gerbview/files.cpp:147 +msgid "Top overlay (*.GTO)|*.GTO;*.gto|" +msgstr "" + +#: gerbview/files.cpp:148 +msgid "Bottom paste (*.GBP)|*.GBP;*.gto|" +msgstr "" + +#: gerbview/files.cpp:149 +msgid "Top paste (*.GTP)|*.GTP;*.gtp|" +msgstr "" + +#: gerbview/files.cpp:150 +msgid "Keep-out layer (*.GKO)|*.GKO;*.gko|" +msgstr "" + +#: gerbview/files.cpp:151 +msgid "Mechanical layers (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" +msgstr "" + +#: gerbview/files.cpp:152 +msgid "Top Pad Master (*.GPT)|*.GPT;*.gpt|" +msgstr "" + +#: gerbview/files.cpp:153 +msgid "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|" +msgstr "" + +#: gerbview/files.cpp:163 +msgid "Open Gerber File" +msgstr "Ouvrir Fichier Gerber" + +#: gerbview/files.cpp:246 +msgid "Save Gerber File" +msgstr "Sauver Fichier Gerber" + #: gerbview/initpcb.cpp:35 msgid "Current Data will be lost ?" msgstr "Les données courante seront perdues ?" @@ -10802,23 +10062,6 @@ msgstr "Effacer Zones ?" msgid "Delete Layer %d" msgstr "Effacer Couche %d" -#: gerbview/files.cpp:88 -msgid "Not yet available..." -msgstr "non encore disponible" - -#: gerbview/files.cpp:133 -#, c-format -msgid "Gerber files (.%s .gbr .gbx .lgr .ger .pho)| *.%s;*.gbr;*.gbx;*.lgr;*.ger;*.pho|" -msgstr "Fichiers Gerber (.%s .gbr .gbx .lgr .ger .pho)|*.%s;*.gbr;*.gbx;*.lgr;*.ger;*.pho|" - -#: gerbview/files.cpp:141 -msgid "Open Gerber File" -msgstr "Ouvrir Fichier Gerber" - -#: gerbview/files.cpp:222 -msgid "Save Gerber File" -msgstr "Sauver Fichier Gerber" - #: gerbview/options.cpp:150 msgid "Gerbview Options" msgstr "Gerbview Options " @@ -11859,7 +11102,6 @@ msgid "Netlist Dialog" msgstr "Dialogue Netliste" #: pcbnew/dialog_SVG_print_base.h:68 -#: eeschema/dialog_SVG_print_base.h:65 msgid "Create SVG file" msgstr "Créer Fichier SVG" @@ -11906,7 +11148,6 @@ msgid "Tech Layers" msgstr "Couches Tech." #: pcbnew/set_color.h:327 -#: gerbview/set_color.h:318 msgid "Others" msgstr "Autres" diff --git a/pcbnew/class_pad_draw_functions.cpp b/pcbnew/class_pad_draw_functions.cpp index 7721d8b2ec..babea24c3a 100644 --- a/pcbnew/class_pad_draw_functions.cpp +++ b/pcbnew/class_pad_draw_functions.cpp @@ -205,6 +205,8 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin if( ( m_Masque_Layer & ALL_CU_LAYERS ) == 0 ) DisplayIsol = FALSE; + SetAlpha(&color, 170); + switch( GetShape() ) { case PAD_CIRCLE: diff --git a/pcbnew/class_pcb_text.cpp b/pcbnew/class_pcb_text.cpp index dfc83ff31f..889427b00a 100644 --- a/pcbnew/class_pcb_text.cpp +++ b/pcbnew/class_pcb_text.cpp @@ -5,7 +5,9 @@ #include "fctsys.h" #include "wxstruct.h" #include "gr_basic.h" +#include "base_struct.h" #include "common.h" +#include "drawtxt.h" #include "kicad_string.h" #include "pcbnew.h" @@ -42,6 +44,7 @@ void TEXTE_PCB::Copy( TEXTE_PCB* source ) m_Width = source->m_Width; m_Attributs = source->m_Attributs; m_Italic = source->m_Italic; + m_Bold = source->m_Bold; m_HJustify = source->m_HJustify; m_VJustify = source->m_VJustify; m_MultilineAllowed = m_MultilineAllowed; @@ -131,6 +134,11 @@ int TEXTE_PCB::ReadTextePcbDescr( FILE* File, int* LineNum ) } } + // Set a reasonnable width: + if( m_Width < 1 ) + m_Width = 1; + m_Width = Clamp_Text_PenSize( m_Width, m_Size ); + return 1; } @@ -194,7 +202,7 @@ void TEXTE_PCB::Draw( WinEDA_DrawPanel* panel, wxDC* DC, GRFillMode fillmode = FILLED; if ( DisplayOpt.DisplayDrawItems == SKETCH) fillmode = SKETCH; - + EDA_TextStruct::Draw( panel, DC, offset, diff --git a/pcbnew/class_text_mod.cpp b/pcbnew/class_text_mod.cpp index 75309180bf..cb1449b69f 100644 --- a/pcbnew/class_text_mod.cpp +++ b/pcbnew/class_text_mod.cpp @@ -166,19 +166,18 @@ int TEXTE_MODULE::ReadDescr( char* aLine, FILE* aFile, int* aLineNum ) ReadDelimitedText( BufLine, aLine, sizeof(BufLine) ); m_Text = CONV_FROM_UTF8( BufLine ); - // Test for a reasonnable width: - if( m_Width <= 1 ) - m_Width = 1; - if( m_Width > TEXTS_MAX_WIDTH ) - m_Width = TEXTS_MAX_WIDTH; - // Test for a reasonnable size: if( m_Size.x < TEXTS_MIN_SIZE ) m_Size.x = TEXTS_MIN_SIZE; if( m_Size.y < TEXTS_MIN_SIZE ) m_Size.y = TEXTS_MIN_SIZE; - return success; + // Set a reasonnable width: + if( m_Width < 1 ) + m_Width = 1; + m_Width = Clamp_Text_PenSize( m_Width, m_Size ); + + return success; } @@ -203,6 +202,8 @@ void TEXTE_MODULE::Copy( TEXTE_MODULE* source ) m_Size = source->m_Size; m_Width = source->m_Width; + m_Italic = source->m_Italic; + m_Bold = source->m_Bold; m_Text = source->m_Text; } diff --git a/pcbnew/dialog_edit_module_text.cpp b/pcbnew/dialog_edit_module_text.cpp index b252f4960c..0686fa0c5d 100644 --- a/pcbnew/dialog_edit_module_text.cpp +++ b/pcbnew/dialog_edit_module_text.cpp @@ -10,6 +10,8 @@ #include "common.h" #include "class_drawpanel.h" #include "pcbnew.h" +#include "drawtxt.h" +#include "confirm.h" #include "dialog_edit_module_text_base.h" @@ -178,9 +180,12 @@ void DialogEditModuleText::OnOkClick( wxCommandEvent& event ) // Test for a reasonnable width: if( width <= 1 ) width = 1; - int minthickness = min(m_CurrentTextMod->m_Size.x, m_CurrentTextMod->m_Size.y) / 4; - if( width > minthickness ) - width = minthickness; + int maxthickness = Clamp_Text_PenSize(width, m_CurrentTextMod->m_Size ); + if( width > maxthickness ) + { + DisplayError(this, _("The text thickness is too large for the text size. It will be clamped")); + width = maxthickness; + } m_CurrentTextMod->SetWidth( width ); m_CurrentTextMod->m_NoShow = (m_Show->GetSelection() == 0) ? 0 : 1; diff --git a/pcbnew/dialog_pcb_text_properties.cpp b/pcbnew/dialog_pcb_text_properties.cpp index e6196d0680..9ac8f7cbf3 100644 --- a/pcbnew/dialog_pcb_text_properties.cpp +++ b/pcbnew/dialog_pcb_text_properties.cpp @@ -7,6 +7,8 @@ #include "common.h" #include "class_drawpanel.h" #include "pcbnew.h" +#include "drawtxt.h" +#include "confirm.h" enum id_TextPCB_properties { ID_TEXTPCB_SELECT_LAYER = 1900 @@ -221,10 +223,12 @@ void WinEDA_TextPCBPropertiesFrame::OnOkClick( wxCommandEvent& event ) CurrentTextPCB->m_Width = m_TxtWidthCtlr->GetValue(); // test for acceptable values for parameters: - int max_tickness = min( CurrentTextPCB->m_Size.x, CurrentTextPCB->m_Size.y ); - max_tickness /= 4; - if( CurrentTextPCB->m_Width > max_tickness ) - CurrentTextPCB->m_Width = max_tickness; + int maxthickness = Clamp_Text_PenSize( CurrentTextPCB->m_Width, CurrentTextPCB->m_Size ); + if( CurrentTextPCB->m_Width > maxthickness ) + { + DisplayError(this, _("The text thickness is too large for the text size. It will be clamped")); + CurrentTextPCB->m_Width = maxthickness; + } CurrentTextPCB->m_Mirror = (m_Mirror->GetSelection() == 1) ? true : false; CurrentTextPCB->m_Orient = m_Orient->GetSelection() * 900; diff --git a/pcbnew/edtxtmod.cpp b/pcbnew/edtxtmod.cpp index 442e5a981b..10cb3c7ad2 100644 --- a/pcbnew/edtxtmod.cpp +++ b/pcbnew/edtxtmod.cpp @@ -11,6 +11,7 @@ #include "class_drawpanel.h" #include "pcbnew.h" +#include "drawtxt.h" #include "trigo.h" #include "protos.h" @@ -44,6 +45,8 @@ TEXTE_MODULE* WinEDA_BasePcbFrame::CreateTextModule( MODULE* Module, wxDC* DC ) Text->m_Text = wxT( "text" ); + ModuleTextWidth = Clamp_Text_PenSize( ModuleTextWidth, + MIN(ModuleTextSize.x, ModuleTextSize.y), true ); Text->m_Size = ModuleTextSize; Text->m_Width = ModuleTextWidth; Text->m_Pos = GetScreen()->m_Curseur;