From 45cdad8b2d26ded033ef09b7e1c43e4825074979 Mon Sep 17 00:00:00 2001 From: CHARRAS Date: Tue, 16 Oct 2007 19:05:33 +0000 Subject: [PATCH] changes in track connectivity computation --- change_log.txt | 18 + include/wxstruct.h | 134 +- internat/fr/kicad.mo | Bin 133144 -> 133094 bytes internat/fr/kicad.po | 3026 +++++++++++++++++------------------ pcbnew/class_board_item.cpp | 4 +- pcbnew/class_track.h | 151 +- pcbnew/controle.cpp | 2 +- pcbnew/ioascii.cpp | 33 +- pcbnew/locate.cpp | 37 +- pcbnew/modedit_onclick.cpp | 22 +- pcbnew/ratsnest.cpp | 2 +- 11 files changed, 1717 insertions(+), 1712 deletions(-) diff --git a/change_log.txt b/change_log.txt index f65aafcad8..c19b1e1dc3 100644 --- a/change_log.txt +++ b/change_log.txt @@ -4,6 +4,24 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2007-Oct-13 UPDATE Jean-Pierre Charras +================================================================================ ++ pcbnew: + remove a change for Read VIA because via attributes + (TROUGH VIA, BLIND VIA or BURIED VIA) are autorisations for layer connection, + and are not a real layer indicator. + If a via connect layers from copper to component, it can have a BURIED VIA attribute. + the meaning is for this via the layer pair can be changed for other layer pair + if after editing this via connect 2 tracks which are only int internal layers, + its layer pair can be changed. + If a via has a TROUGH VIA attribute, it connects ALL layers, whenever tracks + connected to it. + Note: curenty: only TROUGH VIA are handled. + Other types (BLIND VIA and BURIED VIA) are only experimental. + A **lot** of code is needed for a full support. + enhancements in connectivity computation + + 2007-Oct-15 UPDATE Geoff Harland ================================================================================ diff --git a/include/wxstruct.h b/include/wxstruct.h index d9b38910c3..1f9926b9e4 100644 --- a/include/wxstruct.h +++ b/include/wxstruct.h @@ -31,7 +31,7 @@ #define PCB_INTERNAL_UNIT 10000 #endif -// Option d'affichage des fenetres de dialogue +// Option for dialog boxes // #define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxFRAME_FLOAT_ON_PARENT|wxSTAY_ON_TOP #define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT | MAYBE_RESIZE_BORDER @@ -52,10 +52,10 @@ class WinEDA_MainFrame; class BASE_SCREEN; class SCH_SCREEN; class PCB_SCREEN; -class WinEDA_SchematicFrame; // Edition des Schemas -class WinEDA_LibeditFrame; // Edition des composants -class WinEDA_ViewlibFrame; // Visualisation des composants -class WinEDA_GerberFrame; // Visualisation des fichiers GERBER +class WinEDA_SchematicFrame; // Schematic main frame +class WinEDA_LibeditFrame; // Component creation and edition main frame +class WinEDA_ViewlibFrame; // Component viewer main frame +class WinEDA_GerberFrame; // GERBER viewer main frame class WinEDA_Toolbar; class WinEDA_CvpcbFrame; class WinEDA_PcbFrame; @@ -65,7 +65,7 @@ class WinEDAChoiceBox; #define WinEDA_Menu wxMenu #define WinEDA_MenuItem wxMenuItem -// Utilisees mais non definies ici : +// Used but not defined here: class LibraryStruct; class EDA_LibComponentStruct; class LibEDA_BaseStruct; @@ -124,10 +124,10 @@ enum id_drawframe { }; enum id_toolbar { - TOOLBAR_MAIN = 1, // Toolbar horizontal (main) - TOOLBAR_TOOL, // Toolbar vertical tools - TOOLBAR_OPTION, // Toolbar vertical options - TOOLBAR_AUX + TOOLBAR_MAIN = 1, // Main horizontal Toolbar + TOOLBAR_TOOL, // Rigth vertical Toolbar (list of tools) + TOOLBAR_OPTION, // Left vertical Toolbar (option toolbar + TOOLBAR_AUX // Secondary horizontal Toolbar }; @@ -135,7 +135,7 @@ enum id_toolbar { /* Classes pour WXWIN */ /**********************/ -#define MSG_PANEL_DEFAULT_HEIGHT ( 28 ) // hauteur de la zone d'affichage des infos en bas d'ecran +#define MSG_PANEL_DEFAULT_HEIGHT ( 28 ) // height of the infos display window /**********************************************/ /* Class representing the entire Application */ @@ -143,9 +143,10 @@ enum id_toolbar { #include "appl_wxstruct.h" -/********************************************/ -/* classe pour la Fenetre generale de trace */ -/********************************************/ +/******************************************************************/ +/* Basic frame for kicad, eeschema, pcbnew and gerbview. */ +/* not directly used: the real frames are derived from this class */ +/******************************************************************/ class WinEDA_BasicFrame : public wxFrame { @@ -195,14 +196,14 @@ public: }; -/********************************************/ -/* classe pour la Fenetre generale de trace */ -/********************************************/ +/*******************************************************/ +/* Basic draw frame for eeschema, pcbnew and gerbview. */ +/*******************************************************/ class WinEDA_DrawFrame : public WinEDA_BasicFrame { public: - WinEDA_DrawPanel* DrawPanel; // surface de dessin + WinEDA_DrawPanel* DrawPanel; // Draw area WinEDA_MsgPanel* MsgPanel; // Zone d'affichage de caracteristiques WinEDA_Toolbar* m_VToolBar; // Vertical (right side) Toolbar WinEDA_Toolbar* m_AuxVToolBar; // Auxiliary Vertical (right side) Toolbar @@ -213,11 +214,11 @@ public: WinEDAChoiceBox* m_SelZoomBox; // Dialog box to choose the Zoom value int m_ZoomMaxValue; // Max zoom value: Draw min scale is 1/m_ZoomMaxValue - BASE_SCREEN* m_CurrentScreen; // SCREEN en cours + BASE_SCREEN* m_CurrentScreen; // current used SCREEN int m_CurrentCursorShape; // shape for cursor (0 = default cursor) - int m_ID_current_state; ///< Id of active button on the vertical toolbar - int m_HTOOL_current_state; ///< Id of active button on horizontal toolbar + int m_ID_current_state; // Id of active button on the vertical toolbar + int m_HTOOL_current_state; // Id of active button on horizontal toolbar int m_InternalUnits; // nombre d'unites internes pour 1 pouce // = 1000 pour schema, = 10000 pour PCB @@ -276,18 +277,14 @@ public: void OnPanning( int direction ); void OnGrid( int grid_type ); void Recadre_Trace( bool ToMouse ); - void PutOnGrid( wxPoint* coord ); /* corrige la valeur de la coordonnee coord - * pour etre sur le point de grille le plus proche */ + void PutOnGrid( wxPoint* coord ); /* set the coordiante "coord" to the nearest grid coordinate */ void Zoom_Automatique( bool move_mouse_cursor ); - /* Affiche le schema au meilleur zoom au meilleur centrage pour le dessin - * de facon a avoir tout le circuit affiche a l'ecran */ - + /* Set the zoom level to show the area Rect */ void Window_Zoom( EDA_Rect& Rect ); - /* Recalcule le zoom et les offsets pour que l'affichage se fasse dans la - * fenetre de coord x0, y0 a x1, y1 */ - virtual int BestZoom() = 0; // Retourne le meilleur zoom + /* Return the zoom level which displays the full page on screen */ + virtual int BestZoom() = 0; void ToPrinter( wxCommandEvent& event ); void SVG_Print( wxCommandEvent& event ); @@ -308,7 +305,7 @@ public: void Affiche_Status_Box(); /* Affichage des coord curseur, zoom .. */ void DisplayUnitsMsg(); - /* Gestion generale des operations sur block */ + /* Handlers for block commands */ virtual int ReturnBlockCommand( int key ); virtual void InitBlockPasteInfos(); virtual bool HandleBlockBegin( wxDC* DC, int cmd_type, const wxPoint& startpos ); @@ -328,10 +325,9 @@ public: EVT_ACTIVATE( WinEDA_DrawFrame::OnActivate ) -/**************************************************************/ -/* class WinEDA_BasePcbFrame: classe de base commune */ -/* aux classes d'affichage de PCB, et de l'editeur de Modules */ -/**************************************************************/ +/******************************************************************/ +/* class WinEDA_BasePcbFrame: Basic class for pcbnew and gerbview */ +/******************************************************************/ class WinEDA_BasePcbFrame : public WinEDA_DrawFrame { @@ -339,11 +335,11 @@ public: BOARD* m_Pcb; bool m_DisplayPadFill; // How show pads - bool m_DisplayPadNum; // show pads number + bool m_DisplayPadNum; // show pads numbers int m_DisplayModEdge; // How show module drawings int m_DisplayModText; // How show module texts - bool m_DisplayPcbTrackFill; /* FALSE = sketch , TRUE = rempli */ + bool m_DisplayPcbTrackFill; /* FALSE : tracks are show in sketch mode, TRUE = filled */ WinEDA3D_DrawFrame* m_Draw3DFrame; protected: @@ -369,7 +365,7 @@ public: virtual void ReCreateMenuBar(); PCB_SCREEN* GetScreen() { return (PCB_SCREEN*) m_CurrentScreen; } - int BestZoom(); // Retourne le meilleur zoom + int BestZoom(); void Show3D_Frame( wxCommandEvent& event ); @@ -396,7 +392,7 @@ public: int ReadSetup( FILE* File, int* LineNum ); int ReadGeneralDescrPcb( wxDC* DC, FILE* File, int* LineNum ); - // Gestion du PCB + // PCB handling bool Clear_Pcb( wxDC* DC, bool query ); /** @@ -436,13 +432,10 @@ public: */ GENERAL_COLLECTORS_GUIDE GetCollectorsGuide(); - // Gestion du curseur + /* Place un repere sur l'ecran au point de coordonnees PCB pos */ void place_marqueur( wxDC* DC, const wxPoint& pos, char* pt_bitmap, int DrawMode, int color, int type ); - /* Place un repere sur l'ecran au point de coordonnees PCB pos */ - - // Gestion des modules void InstallModuleOptionsFrame( MODULE* Module, wxDC* DC, const wxPoint& pos ); @@ -454,7 +447,7 @@ public: MODULE* Select_1_Module_From_BOARD( BOARD* Pcb ); MODULE* GetModuleByName(); - // Modules + // Modules (footprints) MODULE* Create_1_Module( wxDC* DC, const wxString& module_name ); void Edit_Module( MODULE* module, wxDC* DC ); void Rotate_Module( wxDC* DC, MODULE* module, int angle, bool incremental ); @@ -463,7 +456,7 @@ public: void InstallExchangeModuleFrame( MODULE* ExchangeModuleModule, wxDC* DC, const wxPoint& pos ); - // Textes sur modules + // module texts void RotateTextModule( TEXTE_MODULE* Text, wxDC* DC ); void DeleteTextModule( TEXTE_MODULE* Text, wxDC* DC ); void PlaceTexteModule( TEXTE_MODULE* Text, wxDC* DC ); @@ -485,7 +478,7 @@ public: void Global_Import_Pad_Settings( D_PAD* Pad, wxDC* DC ); - // Chargement de modules + // loading footprints MODULE* Get_Librairie_Module( wxWindow* winaff, const wxString& library, const wxString& ModuleName, bool show_msg_err ); @@ -495,7 +488,7 @@ public: MODULE* Load_Module_From_Library( const wxString& library, wxDC* DC ); - // Gestion des chevelus (ratsnest) + // ratsnest functions void Compile_Ratsnest( wxDC* DC, bool affiche ); /* Recalcul complet du chevelu */ void ReCompile_Ratsnest_After_Changes( wxDC* DC ); int Test_1_Net_Ratsnest( wxDC* DC, int net_code ); @@ -504,8 +497,7 @@ public: void Build_Board_Ratsnest( wxDC* DC ); void DrawGeneralRatsnest( wxDC* DC, int net_code = 0 ); void trace_ratsnest_pad( wxDC* DC ); - void recalcule_pad_net_code(); /* Routine de - * calcul et de mise a jour des net_codes des PADS */ + void recalcule_pad_net_code(); /* compute and update the PAD net codes */ void build_liste_pads(); int* build_ratsnest_pad( EDA_BaseStruct* ref, const wxPoint& refpos, bool init ); @@ -537,10 +529,10 @@ public: void Block_Move( wxDC* DC ); void Block_Duplicate( wxDC* DC ); - // Gestion des zones: + // zone handling: void DelLimitesZone( wxDC* DC, bool Redraw ); - // Gestion des layers: + // layerhandling: // (See pcbnew/sel_layer.cpp for description of why null_layer parameter is provided) int SelectLayer( int default_layer, int min_layer, int max_layer, bool null_layer = false ); @@ -672,7 +664,7 @@ public: void StartMove_Module( MODULE* module, wxDC* DC ); bool Delete_Module( MODULE* module, wxDC* DC ); - // Chargement de modules: voir WinEDA_BasePcbFrame + // loading modules: see WinEDA_BasePcbFrame // Gestion du PCB void Erase_Zones( wxDC* DC, bool query ); @@ -685,7 +677,7 @@ public: void RemoveStruct( EDA_BaseStruct* Item, wxDC* DC ); void Via_Edit_Control( wxDC* DC, int command_type, SEGVIA* via ); - // Mise en surbrillance des nets: + // Hightlight functions: int Select_High_Light( wxDC* DC ); void Hight_Light( wxDC* DC ); void DrawHightLight( wxDC* DC, int NetCode ); @@ -716,34 +708,34 @@ public: void Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC ); void SwitchLayer( wxDC* DC, int layer ); - // Edition des zones + // zone handling EDGE_ZONE* Del_SegmEdgeZone( wxDC* DC, EDGE_ZONE* edge_zone ); void CaptureNetName( wxDC* DC ); EDGE_ZONE* Begin_Zone(); void End_Zone( wxDC* DC ); void Fill_Zone( wxDC* DC ); - // Edition des mires de centrage + // Target handling MIREPCB* Create_Mire( wxDC* DC ); void Delete_Mire( MIREPCB* MirePcb, wxDC* DC ); void StartMove_Mire( MIREPCB* MirePcb, wxDC* DC ); void Place_Mire( MIREPCB* MirePcb, wxDC* DC ); void InstallMireOptionsFrame( MIREPCB* MirePcb, wxDC* DC, const wxPoint& pos ); - // Gestion des segments de dessin type DRAWSEGMENT: + // Graphic segments type DRAWSEGMENT handling: DRAWSEGMENT* Begin_DrawSegment( DRAWSEGMENT* Segment, int shape, wxDC* DC ); void End_Edge( DRAWSEGMENT* Segment, wxDC* DC ); void Drawing_SetNewWidth( DRAWSEGMENT* DrawSegm, wxDC* DC ); void Delete_Segment_Edge( DRAWSEGMENT* Segment, wxDC* DC ); void Delete_Drawings_All_Layer( DRAWSEGMENT* Segment, wxDC* DC ); - // Gestion des cotations: + // Dimension handling: void Install_Edit_Cotation( COTATION* Cotation, wxDC* DC, const wxPoint& pos ); COTATION* Begin_Cotation( COTATION* Cotation, wxDC* DC ); void Delete_Cotation( COTATION* Cotation, wxDC* DC ); - // Gestion des netlistes: + // netlist handling: void InstallNetlistFrame( wxDC* DC, const wxPoint& pos ); // Autoplacement: @@ -760,20 +752,19 @@ public: int GenPlaceBoard(); void DrawInfoPlace( wxDC* DC ); - // Autoroutage: + // Autorouting: int Solve( wxDC* DC, int two_sides ); void Reset_Noroutable( wxDC* DC ); void Autoroute( wxDC* DC, int mode ); void ReadAutoroutedTracks( wxDC* DC ); void GlobalRoute( wxDC* DC ); - // fonctions generales - void Show_1_Ratsnest( EDA_BaseStruct* item, wxDC* DC ); + // divers + void Show_1_Ratsnest( EDA_BaseStruct* item, wxDC* DC ); void Ratsnest_On_Off( wxDC* DC ); void Clean_Pcb( wxDC* DC ); BOARD_ITEM* SaveItemEfface( BOARD_ITEM* PtItem, int nbitems ); - // divers void InstallFindFrame( const wxPoint& pos, wxDC* DC ); /** @@ -784,7 +775,7 @@ public: */ void SendMessageToEESCHEMA( BOARD_ITEM* objectToSync ); - /* Special micro_ondes */ + /* Micro waves functions */ void Edit_Gap( wxDC* DC, MODULE* Module ); MODULE* Create_MuWaveBasicShape( wxDC* DC, const wxString& name, int pad_count ); MODULE* Create_MuWaveComponent( wxDC* DC, int shape_type ); @@ -840,7 +831,7 @@ public: void InstallPcbOptionsFrame( const wxPoint& pos, int id ); void InstallPcbGlobalDeleteFrame( const wxPoint& pos ); - /* Gestion generale des operations sur block */ + /* handlers for block commands */ int ReturnBlockCommand( int key ); virtual void HandleBlockPlace( wxDC* DC ); virtual int HandleBlockEnd( wxDC* DC ); @@ -872,14 +863,14 @@ public: /* Fonctions specifiques */ void Trace_Gerber( wxDC* DC, int draw_mode, int printmasklayer ); - // Gestion des textes sur pcb + // Copper texts void Rotate_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC ); TEXTE_PCB* Create_Texte_Pcb( wxDC* DC ); void Delete_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC ); void StartMoveTextePcb( TEXTE_PCB* TextePcb, wxDC* DC ); void Place_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC ); - // Gestion du PCB + // PCB handling bool Clear_Pcb( wxDC* DC, bool query ); void Erase_Current_Layer( wxDC* DC, bool query ); void Erase_Zones( wxDC* DC, bool query ); @@ -903,7 +894,7 @@ public: /*********************************************************/ /* class WinEDA_ModuleEditFrame: public WinEDA_DrawFrame */ -/* Class de la fenetre d'�dition des modules pour PCB */ +/* Class for the footprint editor */ /*********************************************************/ class WinEDA_ModuleEditFrame : public WinEDA_BasePcbFrame @@ -937,13 +928,14 @@ public: void OnSelectOptionToolbar( wxCommandEvent& event ); void OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct ); - /* Gestion generale des operations sur block */ + /* handlers for block commands */ int ReturnBlockCommand( int key ); virtual void HandleBlockPlace( wxDC* DC ); virtual int HandleBlockEnd( wxDC* DC ); BOARD_ITEM* ModeditLocateAndDisplay(); + /* Undo and redo functions */ public: void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, int flag_type_command = 0 ); @@ -953,17 +945,17 @@ private: public: - // Gestion des modules + // Footprint edition void Place_Ancre( MODULE* module, wxDC* DC ); void RemoveStruct( EDA_BaseStruct* Item, wxDC* DC ); void Transform( MODULE* module, wxDC* DC, int transform ); - // Chargement de modules + // loading Footprint MODULE* Import_Module( wxDC* DC ); void Export_Module( MODULE* ptmod, bool createlib ); void Load_Module_Module_From_BOARD( MODULE* Module ); - // Gestion des contours + // functions to edit footprint edges void Edit_Edge_Width( EDGE_MODULE* Edge, wxDC* DC ); void Edit_Edge_Layer( EDGE_MODULE* Edge, wxDC* DC ); void Delete_Edge_Module( EDGE_MODULE* Edge, wxDC* DC ); @@ -973,7 +965,7 @@ public: void Start_Move_EdgeMod( EDGE_MODULE* drawitem, wxDC* DC ); void Place_EdgeMod( EDGE_MODULE* drawitem, wxDC* DC ); - // Gestion des librairies: + // handlers for libraries: void Delete_Module_In_Library( const wxString& libname ); int Create_Librairie( const wxString& LibName ); void Select_Active_Library(); diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 6c3d64e8aec74ec0eb5843c028775330683bee34..149ffe46a1c3a0698c7e3e600cfdfbf6950c1a9c 100644 GIT binary patch delta 47790 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 M@9+fc^;ZJ^3nlAK0ssI2 diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index de526e45b7..66cfd60f49 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2007-10-12 09:04+0100\n" -"Last-Translator: jp charras \n" +"PO-Revision-Date: 2007-10-13 19:18+0100\n" +"Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -21,29 +21,6 @@ msgstr "" "X-Poedit-SearchPath-6: 3d-viewer\n" "X-Poedit-SearchPath-7: share\n" -#: pcbnew/editrout.cpp:116 -#: pcbnew/edit_track_width.cpp:117 -msgid "Edit All Tracks and Vias Sizes" -msgstr "Editer TOUTES Pistes et Vias" - -#: pcbnew/editrout.cpp:121 -#: pcbnew/edit_track_width.cpp:122 -msgid "Edit All Via Sizes" -msgstr "Editer TOUTES Vias" - -#: pcbnew/editrout.cpp:126 -#: pcbnew/edit_track_width.cpp:127 -msgid "Edit All Track Sizes" -msgstr "Editer TOUTES Pistes" - -#: pcbnew/edit_track_width.cpp:85 -msgid "Change track width (entire NET) ?" -msgstr "Change largeur piste ( NET complet) ?" - -#: pcbnew/pcbnew.cpp:42 -msgid "Pcbnew is already running, Continue?" -msgstr "Pcbnew est est cours d'exécution. Continuer ?" - #: pcbnew/autoplac.cpp:106 msgid "Footprints NOT LOCKED will be moved" msgstr "Les modules NON FIXES vont être déplacés" @@ -76,9 +53,106 @@ msgstr "It msgid "Ok to abort ?" msgstr "Ok pour arrêter ?" -#: pcbnew/ioascii.cpp:207 -msgid "Error: Unexpected end of file !" -msgstr "Erreur: Fin de fichier inattendue !" +#: pcbnew/class_board.cpp:304 +#: pcbnew/affiche.cpp:52 +#: pcbnew/class_module.cpp:1127 +msgid "Pads" +msgstr "Pads" + +#: pcbnew/class_board.cpp:314 +#: pcbnew/plotps.cpp:361 +#: pcbnew/affiche.cpp:63 +msgid "Vias" +msgstr "Vias" + +#: pcbnew/class_board.cpp:317 +msgid "Nodes" +msgstr "Nodes" + +#: pcbnew/class_board.cpp:320 +msgid "Links" +msgstr "Liens" + +#: pcbnew/class_board.cpp:323 +msgid "Nets" +msgstr "Nets" + +#: pcbnew/class_board.cpp:326 +msgid "Connect" +msgstr "Connect" + +#: pcbnew/class_board.cpp:329 +#: eeschema/eelayer.cpp:177 +msgid "NoConn" +msgstr "Non Conn" + +#: pcbnew/pcbnew.cpp:42 +msgid "Pcbnew is already running, Continue?" +msgstr "Pcbnew est est cours d'exécution. Continuer ?" + +#: pcbnew/edit.cpp:171 +#: pcbnew/editmod.cpp:45 +msgid "Module Editor" +msgstr "Ouvrir Editeur de modules" + +#: pcbnew/edit.cpp:251 +msgid "Add Tracks" +msgstr "Addition de pistes" + +#: pcbnew/edit.cpp:260 +msgid "Add Zones" +msgstr "Addition de Zones" + +#: pcbnew/edit.cpp:262 +msgid "Warning: Display Zone is OFF!!!" +msgstr "Attention: Affichage zones désactivé !!!" + +#: pcbnew/edit.cpp:269 +msgid "Add Layer Alignment Target" +msgstr "Ajouter Mire de superposition" + +#: pcbnew/edit.cpp:273 +msgid "Adjust Zero" +msgstr "Ajuster Zéro" + +#: pcbnew/edit.cpp:279 +msgid "Add Graphic" +msgstr "Addition éléments graphiques" + +#: pcbnew/edit.cpp:283 +#: pcbnew/tool_modedit.cpp:180 +#: eeschema/schedit.cpp:314 +#: eeschema/libframe.cpp:502 +#: gerbview/tool_gerber.cpp:383 +msgid "Add Text" +msgstr "Ajout de Texte" + +#: pcbnew/edit.cpp:287 +msgid "Add Modules" +msgstr "Addition de Modules" + +#: pcbnew/edit.cpp:291 +msgid "Add Dimension" +msgstr "Ajout de cotes" + +#: pcbnew/edit.cpp:299 +msgid "Net Highlight" +msgstr "Surbrillance des équipotentielles" + +#: pcbnew/edit.cpp:303 +msgid "Local Ratsnest" +msgstr "Monter le chevelu général" + +#: pcbnew/edit.cpp:461 +#: pcbnew/modedit.cpp:344 +#: eeschema/schedit.cpp:454 +#: eeschema/libframe.cpp:578 +msgid "Delete item" +msgstr "Suppression d'éléments" + +#: pcbnew/controle.cpp:172 +msgid "Selection Clarification" +msgstr "Clarification de la Sélection" #: pcbnew/modedit.cpp:181 msgid "Unable to find the footprint source on the main board" @@ -125,33 +199,6 @@ msgstr "Ajout d' msgid "Place anchor" msgstr "Place Ancre" -#: pcbnew/modedit.cpp:344 -#: pcbnew/edit.cpp:459 -#: eeschema/schedit.cpp:454 -#: eeschema/libframe.cpp:578 -msgid "Delete item" -msgstr "Suppression d'éléments" - -#: pcbnew/autorout.cpp:59 -msgid "Net not selected" -msgstr " Net non sélectionné" - -#: pcbnew/autorout.cpp:67 -msgid "Module not selected" -msgstr "Module non selectionné" - -#: pcbnew/autorout.cpp:75 -msgid "Pad not selected" -msgstr "Pad non sélectionné" - -#: pcbnew/autorout.cpp:136 -msgid "No memory for autorouting" -msgstr "Pas de memoire pour autoroutage" - -#: pcbnew/autorout.cpp:141 -msgid "Place Cells" -msgstr "Place Cells" - #: pcbnew/initpcb.cpp:126 msgid "Current Board will be lost ?" msgstr "Le C.I. courant sera perdu ?" @@ -182,65 +229,25 @@ msgstr "Effacement des Modules?" msgid "Delete Pcb Texts" msgstr "Effacer Textes Pcb" -#: pcbnew/clean.cpp:163 -msgid "Delete unconnected tracks:" -msgstr "Suppression Pistes non connectées" +#: pcbnew/autorout.cpp:59 +msgid "Net not selected" +msgstr " Net non sélectionné" -#: pcbnew/clean.cpp:181 -msgid "ViaDef" -msgstr "ViaDef" +#: pcbnew/autorout.cpp:67 +msgid "Module not selected" +msgstr "Module non selectionné" -#: pcbnew/clean.cpp:332 -msgid "Clean Null Segments" -msgstr "Nettoyage segments nulls" +#: pcbnew/autorout.cpp:75 +msgid "Pad not selected" +msgstr "Pad non sélectionné" -#: pcbnew/clean.cpp:420 -msgid "Merging Segments:" -msgstr "Associe Segment" +#: pcbnew/autorout.cpp:143 +msgid "No memory for autorouting" +msgstr "Pas de memoire pour autoroutage" -#: pcbnew/clean.cpp:422 -msgid "Merge" -msgstr "Merge" - -#: pcbnew/clean.cpp:422 -#: pcbnew/dialog_pad_edit.cpp:186 -#: eeschema/dialog_erc.cpp:192 -#: eeschema/dialog_erc.cpp:196 -#: eeschema/dialog_edit_component_in_schematic.cpp:172 -msgid "0" -msgstr "0" - -#: pcbnew/clean.cpp:435 -msgid "Merge: " -msgstr "Merge: " - -#: pcbnew/clean.cpp:647 -msgid "DRC Control:" -msgstr "Controle DRC:" - -#: pcbnew/clean.cpp:652 -msgid "NetCtr" -msgstr "NetCtr" - -#: pcbnew/clean.cpp:886 -msgid "Centre" -msgstr "Centre" - -#: pcbnew/clean.cpp:886 -msgid "0 " -msgstr "0" - -#: pcbnew/clean.cpp:897 -msgid "Pads: " -msgstr "Pastilles: " - -#: pcbnew/clean.cpp:900 -msgid "Max" -msgstr "Max" - -#: pcbnew/clean.cpp:902 -msgid "Segm" -msgstr "Segm" +#: pcbnew/autorout.cpp:148 +msgid "Place Cells" +msgstr "Place Cells" #: pcbnew/librairi.cpp:47 msgid "Import Module:" @@ -319,10 +326,10 @@ msgstr "Module [%s] non trouv #: pcbnew/librairi.cpp:712 #: pcbnew/plothpgl.cpp:67 #: pcbnew/files.cpp:314 -#: pcbnew/export_gencad.cpp:83 #: pcbnew/gen_modules_placefile.cpp:87 #: pcbnew/gen_modules_placefile.cpp:98 #: pcbnew/gen_modules_placefile.cpp:251 +#: pcbnew/export_gencad.cpp:83 #: eeschema/plothpgl.cpp:560 #: eeschema/plotps.cpp:389 #: cvpcb/genequiv.cpp:42 @@ -424,6 +431,98 @@ msgstr "Ajout de stub (arc)" msgid "Add Polynomial Shape" msgstr "Ajout Forme polynomiale" +#: pcbnew/drc.cpp:80 +msgid "Look for active routes\n" +msgstr "Recherche des chevelus actifs\n" + +#: pcbnew/drc.cpp:93 +msgid "Unconnected found:\n" +msgstr "Non connecté trouvé:\n" + +#: pcbnew/drc.cpp:101 +#, c-format +msgid "%d > Pad %s (%s) @ %.4f,%.4f and " +msgstr "%d > Pad %s (%s) @ %.4f,%.4f et " + +#: pcbnew/drc.cpp:115 +#, c-format +msgid "Pad %s (%s) @ %.4f,%.4f\n" +msgstr "Pad %s (%s) @ %.4f,%.4f\n" + +#: pcbnew/drc.cpp:125 +#, c-format +msgid "Active routes: %d\n" +msgstr "Active routes: %d\n" + +#: pcbnew/drc.cpp:127 +msgid "OK! (No active routes)\n" +msgstr "OK! (Pas de chevelu actif)\n" + +#: pcbnew/drc.cpp:186 +#, c-format +msgid "** End Drc: %d errors **\n" +msgstr "** FinDrc: %d erreurs **\n" + +#: pcbnew/drc.cpp:188 +msgid "** End Drc: No Error **\n" +msgstr "** Fin Drc: Aucune Erreur **\n" + +#: pcbnew/drc.cpp:197 +#, c-format +msgid "Report file <%s> created\n" +msgstr "Fichier rapport <%s> créé\n" + +#: pcbnew/drc.cpp:279 +msgid "Tst Pad to Pad\n" +msgstr "Tst Pad to Pad\n" + +#: pcbnew/drc.cpp:325 +#: pcbnew/drc.cpp:399 +msgid "SegmNb" +msgstr "SegmNb" + +#: pcbnew/drc.cpp:326 +msgid "Track Err" +msgstr "Err Pistes" + +#: pcbnew/drc.cpp:330 +msgid "Tst Tracks\n" +msgstr "Tst Pistes\n" + +#: pcbnew/drc.cpp:361 +#: pcbnew/drc.cpp:439 +#: eeschema/eelayer.cpp:141 +msgid "Netname" +msgstr "NetName" + +#: pcbnew/drc.cpp:400 +msgid "Zone Err" +msgstr "Err. Zone" + +#: pcbnew/drc.cpp:403 +msgid "Tst Zones\n" +msgstr "Test Zones\n" + +#: pcbnew/drc.cpp:1386 +#, c-format +msgid "%d Drc Err %d %s (net %s) and PAD %s (%s) net %s @ %d,%d\n" +msgstr "%d Err Drc %d %s (net %s) et PAD %s (%s) net %s @ %d,%d\n" + +#: pcbnew/drc.cpp:1403 +#, c-format +msgid "%d Err type %d: %s (net %s) and VIA (net %s) @ %d,%d\n" +msgstr "%d Err type %d: %s (net %s) et VIA (net %s) @ %d,%d\n" + +#: pcbnew/drc.cpp:1419 +#, c-format +msgid "%d Err type %d: %s (net %s) and track (net %s) @ %d,%d\n" +msgstr "%d Err type %d: %s (net %s) et piste (net %s) @ %d,%d\n" + +#: pcbnew/drc.cpp:1477 +#, c-format +msgid "%d Drc Err: PAD %s (%s) net %s @ %d,%d and PAD %s (%s) net %s @ %d,%d\n" +msgstr "%d Err Drc: PAD %s (%s) net %s @ %d,%d et PAD %s (%s) net %s @ %d,%d\n" + #: pcbnew/find.cpp:127 msgid "Marker found" msgstr "Marqueur trouvé" @@ -468,7 +567,7 @@ msgid "Drill tools" msgstr "Outils de perçage" #: pcbnew/gendrill.cpp:171 -#: pcbnew/dialog_general_options.cpp:271 +#: pcbnew/dialog_general_options.cpp:272 #: gerbview/options.cpp:184 msgid "millimeters" msgstr "millimetres" @@ -634,9 +733,9 @@ msgstr "Outils" #: pcbnew/gendrill.cpp:411 #: pcbnew/gendrill.cpp:1098 #: pcbnew/gendrill.cpp:1674 -#: pcbnew/class_pad.cpp:974 -#: pcbnew/class_track.cpp:791 -#: pcbnew/class_track.cpp:796 +#: pcbnew/class_pad.cpp:995 +#: pcbnew/class_track.cpp:812 +#: pcbnew/class_track.cpp:817 msgid "Drill" msgstr "Perçage" @@ -665,116 +764,210 @@ msgstr "Fichier rapport de per msgid "Incorrect value for Via drill. No via drill change" msgstr "Valeur incorrecte pour perçage.Pas de changement pour la via" -#: pcbnew/editpads.cpp:74 -msgid "Pad Position" -msgstr "Position Pad" +#: pcbnew/surbrill.cpp:35 +msgid "Filter for net names:" +msgstr "Filtre pour nets:" -#: pcbnew/editpads.cpp:78 -msgid "Pad Size" -msgstr "Taille Pad" - -#: pcbnew/editpads.cpp:82 -msgid "Delta" -msgstr "Delta" - -#: pcbnew/editpads.cpp:86 -msgid "Offset" -msgstr "Offset" - -#: pcbnew/editpads.cpp:92 -msgid "Pad Drill" -msgstr "Diam perçage" - -#: pcbnew/editpads.cpp:102 -msgid "Pad Orient (0.1 deg)" -msgstr "Orient Pad (0.1 deg)" - -#: pcbnew/editpads.cpp:333 -msgid "Incorrect value for pad drill: pad drill bigger than pad size" -msgstr "Valeur incorrecte pour diametre de perçage.percage plus grand que la taille du pad" - -#: pcbnew/editpads.cpp:339 -msgid "Incorrect value for pad offset" -msgstr "Valeur incorrecte pour offset du pad" - -#: pcbnew/edit.cpp:169 -#: pcbnew/editmod.cpp:45 -msgid "Module Editor" -msgstr "Ouvrir Editeur de modules" - -#: pcbnew/edit.cpp:249 -msgid "Add Tracks" -msgstr "Addition de pistes" - -#: pcbnew/edit.cpp:258 -msgid "Add Zones" -msgstr "Addition de Zones" - -#: pcbnew/edit.cpp:260 -msgid "Warning: Display Zone is OFF!!!" -msgstr "Attention: Affichage zones désactivé !!!" - -#: pcbnew/edit.cpp:267 -msgid "Add Layer Alignment Target" -msgstr "Ajouter Mire de superposition" - -#: pcbnew/edit.cpp:271 -msgid "Adjust Zero" -msgstr "Ajuster Zéro" - -#: pcbnew/edit.cpp:277 -msgid "Add Graphic" -msgstr "Addition éléments graphiques" - -#: pcbnew/edit.cpp:281 -#: pcbnew/tool_modedit.cpp:180 -#: eeschema/schedit.cpp:314 -#: eeschema/libframe.cpp:502 -#: gerbview/tool_gerber.cpp:383 -msgid "Add Text" -msgstr "Ajout de Texte" - -#: pcbnew/edit.cpp:285 -msgid "Add Modules" -msgstr "Addition de Modules" - -#: pcbnew/edit.cpp:289 -msgid "Add Cotation" -msgstr "Addition de Cotations" - -#: pcbnew/edit.cpp:297 -msgid "Net Highlight" -msgstr "Surbrillance des équipotentielles" - -#: pcbnew/edit.cpp:301 -msgid "Local Ratsnest" -msgstr "Monter le chevelu général" - -#: pcbnew/plotps.cpp:361 -#: pcbnew/affiche.cpp:63 -#: pcbnew/class_board.cpp:314 -msgid "Vias" -msgstr "Vias" +#: pcbnew/surbrill.cpp:39 +msgid "List Nets" +msgstr "Liste équipots" #: pcbnew/plotps.cpp:390 msgid "Tracks" msgstr "Pistes" -#: pcbnew/router.cpp:60 -msgid "Unable to create temporary file " -msgstr "Impossible de créer le fichier temporaire " +#: pcbnew/affiche.cpp:34 +msgid "Net Name" +msgstr "Equipot" -#: pcbnew/router.cpp:65 -msgid "Create temporary file " -msgstr "Creation fichier temporaire " +#: pcbnew/affiche.cpp:36 +msgid "No Net (not connected)" +msgstr "Pas de Net (non connecté)" -#: pcbnew/router.cpp:566 -msgid "Unable to find data file " -msgstr "Impossible de trouver le fichier de données " +#: pcbnew/affiche.cpp:39 +msgid "Net Code" +msgstr "Net Code" -#: pcbnew/router.cpp:572 -msgid "Reading autorouter data file " -msgstr "Lecture fichier données de l'autorouteur" +#: pcbnew/block.cpp:125 +msgid "Include Modules" +msgstr "Inclure Modules" + +#: pcbnew/block.cpp:129 +msgid "Include tracks" +msgstr "Inclure Pistes" + +#: pcbnew/block.cpp:133 +#: pcbnew/dialog_drc.cpp:165 +msgid "Include zones" +msgstr "Inclure zones" + +#: pcbnew/block.cpp:138 +msgid "Include Text on copper layers" +msgstr "Inclure Texte sur couches cuivre" + +#: pcbnew/block.cpp:142 +msgid "Include drawings" +msgstr "Inclure tracés" + +#: pcbnew/block.cpp:146 +msgid "Include egde layer" +msgstr "Inclure couche Edge" + +#: pcbnew/block.cpp:157 +#: pcbnew/cotation.cpp:109 +#: pcbnew/mirepcb.cpp:103 +#: pcbnew/muonde.cpp:352 +#: pcbnew/pcbtexte.cpp:116 +#: pcbnew/modedit_onclick.cpp:201 +#: pcbnew/modedit_onclick.cpp:233 +#: pcbnew/set_color.cpp:280 +#: pcbnew/swap_layers.cpp:103 +#: pcbnew/dialog_edit_module.cpp:121 +#: pcbnew/onrightclick.cpp:146 +#: pcbnew/onrightclick.cpp:160 +#: pcbnew/globaleditpad.cpp:108 +#: pcbnew/sel_layer.cpp:162 +#: pcbnew/sel_layer.cpp:320 +#: eeschema/sheetlab.cpp:97 +#: eeschema/libedit_onrightclick.cpp:68 +#: eeschema/libedit_onrightclick.cpp:83 +#: eeschema/onrightclick.cpp:121 +#: eeschema/onrightclick.cpp:133 +#: cvpcb/dialog_display_options.cpp:194 +#: gerbview/set_color.cpp:253 +#: gerbview/options.cpp:167 +#: gerbview/options.cpp:296 +#: gerbview/reglage.cpp:120 +#: gerbview/onrightclick.cpp:40 +#: gerbview/onrightclick.cpp:59 +#: gerbview/select_layers_to_pcb.cpp:171 +#: common/selcolor.cpp:147 +#: common/displlst.cpp:103 +#: common/get_component_dialog.cpp:121 +msgid "Cancel" +msgstr "Annuler" + +#: pcbnew/block.cpp:160 +#: pcbnew/cotation.cpp:105 +#: pcbnew/mirepcb.cpp:99 +#: pcbnew/muonde.cpp:348 +#: pcbnew/pcbtexte.cpp:111 +#: pcbnew/set_color.cpp:275 +#: pcbnew/swap_layers.cpp:98 +#: pcbnew/dialog_edit_module.cpp:117 +#: pcbnew/sel_layer.cpp:158 +#: pcbnew/sel_layer.cpp:316 +#: eeschema/sheetlab.cpp:93 +#: cvpcb/dialog_display_options.cpp:189 +#: gerbview/set_color.cpp:249 +#: gerbview/options.cpp:163 +#: gerbview/options.cpp:292 +#: gerbview/reglage.cpp:116 +#: gerbview/select_layers_to_pcb.cpp:167 +#: common/displlst.cpp:99 +#: common/get_component_dialog.cpp:112 +msgid "OK" +msgstr "OK" + +#: pcbnew/block.cpp:453 +msgid "Delete Block" +msgstr "Effacer Bloc" + +#: pcbnew/block.cpp:464 +msgid "Delete Footprints" +msgstr "Suppression modules" + +#: pcbnew/block.cpp:484 +msgid "Delete tracks" +msgstr "Suppression Pistes" + +#: pcbnew/block.cpp:505 +msgid "Delete draw layers" +msgstr "Suppression couches sessin" + +#: pcbnew/block.cpp:570 +msgid "Delete zones" +msgstr "SuppressionZones" + +#: pcbnew/block.cpp:605 +msgid "Rotate Block" +msgstr "Rotation Bloc" + +#: pcbnew/block.cpp:620 +msgid "Footprint rotation" +msgstr "Rotation modules" + +#: pcbnew/block.cpp:654 +msgid "Track rotation" +msgstr "Rotation pistes" + +#: pcbnew/block.cpp:675 +msgid "Zone rotation" +msgstr "Rotation Zones" + +#: pcbnew/block.cpp:696 +msgid "Draw layers rotation" +msgstr "Rotation couches dessin" + +#: pcbnew/block.cpp:815 +msgid "Block mirroring" +msgstr "Bloc Miroir" + +#: pcbnew/block.cpp:830 +msgid "Footprint mirroring" +msgstr "Miroir modules" + +#: pcbnew/block.cpp:863 +msgid "Track mirroring" +msgstr "Miroir Pistes" + +#: pcbnew/block.cpp:889 +msgid "Zone mirroring" +msgstr "Miroir zone" + +#: pcbnew/block.cpp:911 +msgid "Draw layers mirroring" +msgstr "Draw layers mirroring" + +#: pcbnew/block.cpp:1038 +msgid "Move Block" +msgstr "Déplacer Bloc" + +#: pcbnew/block.cpp:1050 +msgid "Move footprints" +msgstr "Déplacement modules" + +#: pcbnew/block.cpp:1083 +msgid "Move tracks" +msgstr "Déplacement pistes" + +#: pcbnew/block.cpp:1104 +msgid "Move zones" +msgstr "Déplacement zones" + +#: pcbnew/block.cpp:1125 +msgid "Move draw layers" +msgstr "Déplacement couches dessin" + +#: pcbnew/block.cpp:1230 +msgid "Copy Block" +msgstr "Copie Bloc" + +#: pcbnew/block.cpp:1242 +msgid "Module copy" +msgstr "Copie Modules" + +#: pcbnew/block.cpp:1281 +msgid "Track copy" +msgstr "Copie Piste" + +#: pcbnew/block.cpp:1305 +msgid "Zone copy" +msgstr "Copie Zone" + +#: pcbnew/block.cpp:1330 +msgid "Draw layers copy" +msgstr "Cpoie des couches dessin" #: pcbnew/class_pcb_text.cpp:163 #: gerbview/affiche.cpp:29 @@ -787,13 +980,13 @@ msgid "PCB Text" msgstr "Texte Pcb" #: pcbnew/class_pcb_text.cpp:167 -#: pcbnew/class_pad.cpp:951 #: pcbnew/classpcb.cpp:197 #: pcbnew/class_text_mod.cpp:347 #: pcbnew/class_text_mod.cpp:351 -#: pcbnew/sel_layer.cpp:145 +#: pcbnew/class_pad.cpp:972 +#: pcbnew/class_track.cpp:796 #: pcbnew/dialog_edit_module.cpp:234 -#: pcbnew/class_track.cpp:775 +#: pcbnew/sel_layer.cpp:145 #: pcbnew/class_module.cpp:1116 #: gerbview/affiche.cpp:109 msgid "Layer" @@ -803,7 +996,7 @@ msgstr "Couche" #: pcbnew/cotation.cpp:113 #: pcbnew/class_text_mod.cpp:358 #: pcbnew/pcbtexte.cpp:176 -#: pcbnew/modedit_onclick.cpp:253 +#: pcbnew/modedit_onclick.cpp:252 #: gerbview/affiche.cpp:40 #: share/dialog_print.cpp:178 msgid "Mirror" @@ -826,8 +1019,8 @@ msgid "Yes" msgstr "Oui" #: pcbnew/class_pcb_text.cpp:178 -#: pcbnew/class_pad.cpp:993 #: pcbnew/class_text_mod.cpp:361 +#: pcbnew/class_pad.cpp:1014 #: pcbnew/dialog_edit_module.cpp:245 #: pcbnew/class_module.cpp:1139 #: eeschema/affiche.cpp:117 @@ -842,8 +1035,8 @@ msgstr "Orient" #: pcbnew/classpcb.cpp:202 #: pcbnew/class_text_mod.cpp:364 #: pcbnew/pcbtexte.cpp:130 +#: pcbnew/class_track.cpp:820 #: pcbnew/class_edge_mod.cpp:297 -#: pcbnew/class_track.cpp:799 #: eeschema/affiche.cpp:188 #: eeschema/dialog_cmp_graphic_properties.cpp:188 #: gerbview/affiche.cpp:52 @@ -852,15 +1045,15 @@ msgid "Width" msgstr "Epaisseur" #: pcbnew/class_pcb_text.cpp:184 -#: pcbnew/class_pad.cpp:964 #: pcbnew/class_text_mod.cpp:367 +#: pcbnew/class_pad.cpp:985 #: gerbview/affiche.cpp:55 msgid "H Size" msgstr "Taille H" #: pcbnew/class_pcb_text.cpp:187 -#: pcbnew/class_pad.cpp:968 #: pcbnew/class_text_mod.cpp:370 +#: pcbnew/class_pad.cpp:989 #: gerbview/affiche.cpp:58 msgid "V Size" msgstr "Taille V" @@ -877,20 +1070,6 @@ msgstr "Novelle largeur (1/10000\"):" msgid "Incorrect number, no change" msgstr "Nombre incorrect, pas de changement" -#: pcbnew/modules.cpp:81 -msgid "Footprint name:" -msgstr "Nom Module: " - -#: pcbnew/modules.cpp:281 -#: pcbnew/onrightclick.cpp:688 -msgid "Delete Module" -msgstr "Supprimer Module" - -#: pcbnew/modules.cpp:282 -#: eeschema/find.cpp:228 -msgid "Value " -msgstr "Valeur " - #: pcbnew/dialog_edit_mod_text.cpp:156 #, c-format msgid "Module %s (%s) orient %.1f" @@ -922,8 +1101,8 @@ msgstr "Offset Y" #: pcbnew/dialog_display_options.cpp:280 #: pcbnew/set_grid.cpp:171 #: pcbnew/dialog_pad_edit.cpp:217 +#: pcbnew/dialog_general_options.cpp:368 #: pcbnew/dialog_graphic_items_options.cpp:261 -#: pcbnew/dialog_general_options.cpp:364 #: eeschema/symbtext.cpp:174 #: eeschema/sheet.cpp:221 #: eeschema/dialog_options.cpp:274 @@ -933,20 +1112,21 @@ msgstr "Offset Y" #: eeschema/dialog_edit_component_in_schematic.cpp:243 #: eeschema/dialog_cmp_graphic_properties.cpp:178 #: eeschema/pinedit-dialog.cpp:308 +#: eeschema/dialog_build_BOM.cpp:339 #: cvpcb/dialog_cvpcb_config.cpp:135 #: share/setpage.cpp:232 msgid "&OK" msgstr "&OK" #: pcbnew/dialog_edit_mod_text.cpp:217 -#: pcbnew/zones.cpp:216 #: pcbnew/dialog_initpcb.cpp:164 #: pcbnew/dialog_track_options.cpp:185 #: pcbnew/dialog_display_options.cpp:284 +#: pcbnew/zones.cpp:216 #: pcbnew/set_grid.cpp:176 #: pcbnew/dialog_pad_edit.cpp:221 +#: pcbnew/dialog_general_options.cpp:372 #: pcbnew/dialog_graphic_items_options.cpp:265 -#: pcbnew/dialog_general_options.cpp:368 #: eeschema/symbtext.cpp:178 #: eeschema/plothpgl.cpp:274 #: eeschema/sheet.cpp:216 @@ -955,6 +1135,7 @@ msgstr "&OK" #: eeschema/dialog_create_component.cpp:200 #: eeschema/dialog_cmp_graphic_properties.cpp:182 #: eeschema/pinedit-dialog.cpp:304 +#: eeschema/dialog_build_BOM.cpp:343 #: share/setpage.cpp:237 msgid "&Cancel" msgstr "&Annuler" @@ -1004,91 +1185,6 @@ msgstr "Valeur:" msgid "Text:" msgstr "Texte:" -#: pcbnew/zones.cpp:152 -#: pcbnew/zones.cpp:153 -#: pcbnew/zones.cpp:154 -#: pcbnew/zones.cpp:155 -msgid "0.00000" -msgstr "0.00000" - -#: pcbnew/zones.cpp:159 -msgid "Grid size:" -msgstr "Dim Grille" - -#: pcbnew/zones.cpp:164 -msgid "Zone clearance value (mm):" -msgstr "Valeur isolation zone (mm):" - -#: pcbnew/zones.cpp:181 -msgid "Include Pads" -msgstr "Inclure Pads" - -#: pcbnew/zones.cpp:182 -msgid "Thermal" -msgstr "Thermique" - -#: pcbnew/zones.cpp:183 -msgid "Exclude Pads" -msgstr "Exclure Pads" - -#: pcbnew/zones.cpp:187 -msgid "Pad options:" -msgstr "Options pads" - -#: pcbnew/zones.cpp:192 -#: eeschema/dialog_options.cpp:257 -msgid "Any" -msgstr "Tout" - -#: pcbnew/zones.cpp:193 -msgid "H , V and 45 deg" -msgstr "H, V et 45 deg" - -#: pcbnew/zones.cpp:197 -msgid "Zone edges orient:" -msgstr "Direction contours zone:" - -#: pcbnew/zones.cpp:209 -msgid "Fill" -msgstr "Remplissage" - -#: pcbnew/zones.cpp:223 -msgid "Update Options" -msgstr "Maj Options" - -#: pcbnew/zones.cpp:232 -msgid "Zone clearance value:" -msgstr "Valeur isolation zone:" - -#: pcbnew/zones.cpp:235 -msgid "Grid :" -msgstr "Grille:" - -#: pcbnew/zones.cpp:400 -msgid "New zone segment width: " -msgstr "Nouvelle largeur des segments zone:" - -#: pcbnew/zones.cpp:601 -msgid "Zone: No net selected" -msgstr "Zone: Net non sélectionné" - -#: pcbnew/zones.cpp:646 -msgid "Delete Current Zone Edges" -msgstr "Effacer contour zone courant" - -#: pcbnew/zones.cpp:914 -msgid "No Net" -msgstr "No Net" - -#: pcbnew/zones.cpp:916 -#: pcbnew/class_track.cpp:734 -msgid "NetName" -msgstr "NetName" - -#: pcbnew/zones.cpp:984 -msgid "Ok" -msgstr "Ok" - #: pcbnew/netlist.cpp:96 #, c-format msgid "Netlist file %s not found" @@ -1252,66 +1348,25 @@ msgstr "Fichiers Librairies" msgid "Library exists! No Change" msgstr "Librairie existante! Pas de changement" +#: pcbnew/editrout.cpp:116 +#: pcbnew/edit_track_width.cpp:117 +msgid "Edit All Tracks and Vias Sizes" +msgstr "Editer TOUTES Pistes et Vias" + +#: pcbnew/editrout.cpp:121 +#: pcbnew/edit_track_width.cpp:122 +msgid "Edit All Via Sizes" +msgstr "Editer TOUTES Vias" + +#: pcbnew/editrout.cpp:126 +#: pcbnew/edit_track_width.cpp:127 +msgid "Edit All Track Sizes" +msgstr "Editer TOUTES Pistes" + #: pcbnew/cotation.cpp:85 msgid "Dimension properties" msgstr "Propriétés des Cotes" -#: pcbnew/cotation.cpp:105 -#: pcbnew/mirepcb.cpp:99 -#: pcbnew/muonde.cpp:348 -#: pcbnew/block.cpp:156 -#: pcbnew/pcbtexte.cpp:111 -#: pcbnew/sel_layer.cpp:158 -#: pcbnew/sel_layer.cpp:309 -#: pcbnew/set_color.cpp:275 -#: pcbnew/swap_layers.cpp:98 -#: pcbnew/dialog_edit_module.cpp:117 -#: eeschema/sheetlab.cpp:93 -#: cvpcb/dialog_display_options.cpp:189 -#: gerbview/set_color.cpp:249 -#: gerbview/options.cpp:163 -#: gerbview/options.cpp:292 -#: gerbview/reglage.cpp:116 -#: gerbview/select_layers_to_pcb.cpp:167 -#: common/displlst.cpp:99 -#: common/get_component_dialog.cpp:112 -msgid "OK" -msgstr "OK" - -#: pcbnew/cotation.cpp:109 -#: pcbnew/mirepcb.cpp:103 -#: pcbnew/muonde.cpp:352 -#: pcbnew/block.cpp:153 -#: pcbnew/pcbtexte.cpp:116 -#: pcbnew/sel_layer.cpp:162 -#: pcbnew/sel_layer.cpp:313 -#: pcbnew/modedit_onclick.cpp:202 -#: pcbnew/modedit_onclick.cpp:234 -#: pcbnew/set_color.cpp:280 -#: pcbnew/swap_layers.cpp:103 -#: pcbnew/dialog_edit_module.cpp:121 -#: pcbnew/onrightclick.cpp:146 -#: pcbnew/onrightclick.cpp:160 -#: pcbnew/globaleditpad.cpp:108 -#: eeschema/sheetlab.cpp:97 -#: eeschema/libedit_onrightclick.cpp:68 -#: eeschema/libedit_onrightclick.cpp:83 -#: eeschema/onrightclick.cpp:121 -#: eeschema/onrightclick.cpp:133 -#: cvpcb/dialog_display_options.cpp:194 -#: gerbview/set_color.cpp:253 -#: gerbview/options.cpp:167 -#: gerbview/options.cpp:296 -#: gerbview/reglage.cpp:120 -#: gerbview/onrightclick.cpp:40 -#: gerbview/onrightclick.cpp:59 -#: gerbview/select_layers_to_pcb.cpp:171 -#: common/selcolor.cpp:147 -#: common/displlst.cpp:103 -#: common/get_component_dialog.cpp:121 -msgid "Cancel" -msgstr "Annuler" - #: pcbnew/cotation.cpp:113 #: pcbnew/muonde.cpp:360 #: pcbnew/pcbtexte.cpp:176 @@ -1341,7 +1396,7 @@ msgid "Layer:" msgstr "Couche:" #: pcbnew/dialog_netlist.cpp:133 -#: pcbnew/class_board_item.cpp:67 +#: pcbnew/class_board_item.cpp:76 #: eeschema/eelayer.cpp:99 #: eeschema/dialog_create_component.cpp:164 #: eeschema/onrightclick.cpp:317 @@ -1363,9 +1418,9 @@ msgid "Keep" msgstr "Garder" #: pcbnew/dialog_netlist.cpp:141 -#: pcbnew/onrightclick.cpp:613 -#: pcbnew/onrightclick.cpp:720 -#: pcbnew/onrightclick.cpp:817 +#: pcbnew/onrightclick.cpp:612 +#: pcbnew/onrightclick.cpp:719 +#: pcbnew/onrightclick.cpp:816 #: eeschema/edit_component_in_lib.cpp:239 #: eeschema/edit_component_in_lib.cpp:320 #: cvpcb/dialog_cvpcb_config.cpp:166 @@ -1502,13 +1557,13 @@ msgid "Hight Contrast Mode Display" msgstr "Mode d'affichage Haut Contraste" #: pcbnew/pcbframe.cpp:442 -#: pcbnew/class_board_item.cpp:127 -#: pcbnew/class_track.cpp:708 +#: pcbnew/class_board_item.cpp:140 +#: pcbnew/class_track.cpp:729 msgid "Track" msgstr "Piste" #: pcbnew/pcbframe.cpp:474 -#: pcbnew/class_board_item.cpp:154 +#: pcbnew/class_board_item.cpp:170 msgid "Via" msgstr "Via" @@ -1865,6 +1920,10 @@ msgstr "Inclure pistes autorout msgid "Include Locked Tracks" msgstr "Inclure pistes verrouillées" +#: pcbnew/deltrack.cpp:153 +msgid "Delete NET ?" +msgstr "Supprimer Net ?" + #: pcbnew/dialog_track_options.cpp:125 msgid "Via Size" msgstr "Diametre Via" @@ -1950,7 +2009,7 @@ msgstr "Pistes:" #: pcbnew/dialog_display_options.cpp:200 #: pcbnew/dialog_display_options.cpp:210 -#: pcbnew/dialog_general_options.cpp:354 +#: pcbnew/dialog_general_options.cpp:357 msgid "Always" msgstr "Toujours" @@ -1960,7 +2019,7 @@ msgstr "Nouvelle piste" #: pcbnew/dialog_display_options.cpp:202 #: pcbnew/dialog_display_options.cpp:208 -#: pcbnew/dialog_general_options.cpp:352 +#: pcbnew/dialog_general_options.cpp:355 msgid "Never" msgstr "Jamais" @@ -1984,7 +2043,7 @@ msgstr "Modules" #: pcbnew/dialog_display_options.cpp:231 #: pcbnew/dialog_display_options.cpp:264 #: pcbnew/pcbplot.cpp:330 -#: pcbnew/class_board_item.cpp:91 +#: pcbnew/class_board_item.cpp:99 #: gerbview/options.cpp:316 msgid "Line" msgstr "Ligne" @@ -2023,6 +2082,66 @@ msgstr "Afficher autres msgid "Show page limits" msgstr " Afficher limites de page" +#: pcbnew/clean.cpp:163 +msgid "Delete unconnected tracks:" +msgstr "Suppression Pistes non connectées" + +#: pcbnew/clean.cpp:181 +msgid "ViaDef" +msgstr "ViaDef" + +#: pcbnew/clean.cpp:332 +msgid "Clean Null Segments" +msgstr "Nettoyage segments nulls" + +#: pcbnew/clean.cpp:420 +msgid "Merging Segments:" +msgstr "Associe Segment" + +#: pcbnew/clean.cpp:422 +msgid "Merge" +msgstr "Merge" + +#: pcbnew/clean.cpp:422 +#: pcbnew/dialog_pad_edit.cpp:186 +#: eeschema/dialog_erc.cpp:192 +#: eeschema/dialog_erc.cpp:196 +#: eeschema/dialog_edit_component_in_schematic.cpp:172 +msgid "0" +msgstr "0" + +#: pcbnew/clean.cpp:435 +msgid "Merge: " +msgstr "Merge: " + +#: pcbnew/clean.cpp:647 +msgid "DRC Control:" +msgstr "Controle DRC:" + +#: pcbnew/clean.cpp:652 +msgid "NetCtr" +msgstr "NetCtr" + +#: pcbnew/clean.cpp:886 +msgid "Centre" +msgstr "Centre" + +#: pcbnew/clean.cpp:886 +msgid "0 " +msgstr "0" + +#: pcbnew/clean.cpp:897 +msgid "Pads: " +msgstr "Pastilles: " + +#: pcbnew/clean.cpp:900 +msgid "Max" +msgstr "Max" + +#: pcbnew/clean.cpp:902 +msgid "Segm" +msgstr "Segm" + #: pcbnew/plotgerb.cpp:72 msgid "unable to create file " msgstr "Impossible de créer fichier " @@ -2032,9 +2151,187 @@ msgstr "Impossible de cr msgid "unable to reopen file <%s>" msgstr "Ne peut pas réouvrir fichier <%s>" -#: pcbnew/solve.cpp:229 -msgid "Abort routing?" -msgstr "Stopper routage?" +#: pcbnew/router.cpp:60 +msgid "Unable to create temporary file " +msgstr "Impossible de créer le fichier temporaire " + +#: pcbnew/router.cpp:65 +msgid "Create temporary file " +msgstr "Creation fichier temporaire " + +#: pcbnew/router.cpp:566 +msgid "Unable to find data file " +msgstr "Impossible de trouver le fichier de données " + +#: pcbnew/router.cpp:572 +msgid "Reading autorouter data file " +msgstr "Lecture fichier données de l'autorouteur" + +#: pcbnew/zones.cpp:152 +#: pcbnew/zones.cpp:153 +#: pcbnew/zones.cpp:154 +#: pcbnew/zones.cpp:155 +msgid "0.00000" +msgstr "0.00000" + +#: pcbnew/zones.cpp:159 +msgid "Grid size:" +msgstr "Dim Grille" + +#: pcbnew/zones.cpp:164 +msgid "Zone clearance value (mm):" +msgstr "Valeur isolation zone (mm):" + +#: pcbnew/zones.cpp:181 +msgid "Include Pads" +msgstr "Inclure Pads" + +#: pcbnew/zones.cpp:182 +msgid "Thermal" +msgstr "Thermique" + +#: pcbnew/zones.cpp:183 +msgid "Exclude Pads" +msgstr "Exclure Pads" + +#: pcbnew/zones.cpp:187 +msgid "Pad options:" +msgstr "Options pads" + +#: pcbnew/zones.cpp:192 +#: eeschema/dialog_options.cpp:257 +msgid "Any" +msgstr "Tout" + +#: pcbnew/zones.cpp:193 +msgid "H , V and 45 deg" +msgstr "H, V et 45 deg" + +#: pcbnew/zones.cpp:197 +msgid "Zone edges orient:" +msgstr "Direction contours zone:" + +#: pcbnew/zones.cpp:209 +msgid "Fill" +msgstr "Remplissage" + +#: pcbnew/zones.cpp:223 +msgid "Update Options" +msgstr "Maj Options" + +#: pcbnew/zones.cpp:232 +msgid "Zone clearance value:" +msgstr "Valeur isolation zone:" + +#: pcbnew/zones.cpp:235 +msgid "Grid :" +msgstr "Grille:" + +#: pcbnew/zones.cpp:400 +msgid "New zone segment width: " +msgstr "Nouvelle largeur des segments zone:" + +#: pcbnew/zones.cpp:601 +msgid "Zone: No net selected" +msgstr "Zone: Net non sélectionné" + +#: pcbnew/zones.cpp:646 +msgid "Delete Current Zone Edges" +msgstr "Effacer contour zone courant" + +#: pcbnew/zones.cpp:914 +msgid "No Net" +msgstr "No Net" + +#: pcbnew/zones.cpp:916 +#: pcbnew/class_track.cpp:755 +msgid "NetName" +msgstr "NetName" + +#: pcbnew/zones.cpp:984 +msgid "Ok" +msgstr "Ok" + +#: pcbnew/xchgmod.cpp:80 +msgid "Exchange Modules" +msgstr "Echange modules:" + +#: pcbnew/xchgmod.cpp:107 +msgid "Change module" +msgstr "Change module" + +#: pcbnew/xchgmod.cpp:113 +msgid "Change same modules" +msgstr "Change modules id." + +#: pcbnew/xchgmod.cpp:119 +msgid "Ch. same module+value" +msgstr "Ch. module+valeur id." + +#: pcbnew/xchgmod.cpp:125 +msgid "Change all" +msgstr "Change tous" + +#: pcbnew/xchgmod.cpp:131 +msgid "Browse Libs modules" +msgstr "Liste modules" + +#: pcbnew/xchgmod.cpp:137 +#: pcbnew/pcbplot.cpp:209 +#: share/zoom.cpp:449 +msgid "Close" +msgstr "Fermer" + +#: pcbnew/xchgmod.cpp:142 +msgid "Current Module" +msgstr "Module courant" + +#: pcbnew/xchgmod.cpp:149 +msgid "Current Value" +msgstr "Valeur courante" + +#: pcbnew/xchgmod.cpp:156 +#: pcbnew/tool_modedit.cpp:70 +msgid "New Module" +msgstr "Nouveau Module" + +#: pcbnew/xchgmod.cpp:226 +#, c-format +msgid "file %s not found" +msgstr " fichier %s non trouvé" + +#: pcbnew/xchgmod.cpp:240 +#, c-format +msgid "Unable to create file %s" +msgstr "Impossible de créer fichier <%s>" + +#: pcbnew/xchgmod.cpp:347 +#, c-format +msgid "Change modules <%s> -> <%s> (val = %s)?" +msgstr "Change modules <%s> -> <%s> (val = %s)?" + +#: pcbnew/xchgmod.cpp:354 +#, c-format +msgid "Change modules <%s> -> <%s> ?" +msgstr "Change modules <%s> -> <%s> ?" + +#: pcbnew/xchgmod.cpp:418 +msgid "Change ALL modules ?" +msgstr "Change TOUS les modules ?" + +#: pcbnew/xchgmod.cpp:480 +#, c-format +msgid "Change module %s (%s) " +msgstr "Change module %s (%s) " + +#: pcbnew/xchgmod.cpp:614 +#: pcbnew/automove.cpp:208 +msgid "No Modules!" +msgstr "Pas de Modules" + +#: pcbnew/xchgmod.cpp:626 +msgid "Cmp files:" +msgstr "Fichiers Cmp: " #: pcbnew/muonde.cpp:149 msgid "Gap" @@ -2119,9 +2416,9 @@ msgstr "Gap (mm):" msgid "Gap (inch):" msgstr "Gap (inch):" -#: pcbnew/deltrack.cpp:153 -msgid "Delete NET ?" -msgstr "Supprimer Net ?" +#: pcbnew/solve.cpp:229 +msgid "Abort routing?" +msgstr "Stopper routage?" #: pcbnew/editedge.cpp:167 msgid "Copper layer global delete not allowed!" @@ -2135,232 +2432,12 @@ msgstr "Segment en cours d' msgid "Delete Layer " msgstr "Effacer Couche" -#: pcbnew/xchgmod.cpp:80 -msgid "Exchange Modules" -msgstr "Echange modules:" - -#: pcbnew/xchgmod.cpp:107 -msgid "Change module" -msgstr "Change module" - -#: pcbnew/xchgmod.cpp:113 -msgid "Change same modules" -msgstr "Change modules id." - -#: pcbnew/xchgmod.cpp:119 -msgid "Ch. same module+value" -msgstr "Ch. module+valeur id." - -#: pcbnew/xchgmod.cpp:125 -msgid "Change all" -msgstr "Change tous" - -#: pcbnew/xchgmod.cpp:131 -msgid "Browse Libs modules" -msgstr "Liste modules" - -#: pcbnew/xchgmod.cpp:137 -#: pcbnew/pcbplot.cpp:209 -#: share/zoom.cpp:449 -msgid "Close" -msgstr "Fermer" - -#: pcbnew/xchgmod.cpp:142 -msgid "Current Module" -msgstr "Module courant" - -#: pcbnew/xchgmod.cpp:149 -msgid "Current Value" -msgstr "Valeur courante" - -#: pcbnew/xchgmod.cpp:156 -#: pcbnew/tool_modedit.cpp:70 -msgid "New Module" -msgstr "Nouveau Module" - -#: pcbnew/xchgmod.cpp:226 -#, c-format -msgid "file %s not found" -msgstr " fichier %s non trouvé" - -#: pcbnew/xchgmod.cpp:240 -#, c-format -msgid "Unable to create file %s" -msgstr "Impossible de créer fichier <%s>" - -#: pcbnew/xchgmod.cpp:347 -#, c-format -msgid "Change modules <%s> -> <%s> (val = %s)?" -msgstr "Change modules <%s> -> <%s> (val = %s)?" - -#: pcbnew/xchgmod.cpp:354 -#, c-format -msgid "Change modules <%s> -> <%s> ?" -msgstr "Change modules <%s> -> <%s> ?" - -#: pcbnew/xchgmod.cpp:418 -msgid "Change ALL modules ?" -msgstr "Change TOUS les modules ?" - -#: pcbnew/xchgmod.cpp:480 -#, c-format -msgid "Change module %s (%s) " -msgstr "Change module %s (%s) " - -#: pcbnew/xchgmod.cpp:614 -#: pcbnew/automove.cpp:208 -msgid "No Modules!" -msgstr "Pas de Modules" - -#: pcbnew/xchgmod.cpp:626 -msgid "Cmp files:" -msgstr "Fichiers Cmp: " - -#: pcbnew/affiche.cpp:34 -msgid "Net Name" -msgstr "Equipot" - -#: pcbnew/affiche.cpp:36 -msgid "No Net (not connected)" -msgstr "Pas de Net (non connecté)" - -#: pcbnew/affiche.cpp:39 -msgid "Net Code" -msgstr "Net Code" - -#: pcbnew/affiche.cpp:52 -#: pcbnew/class_board.cpp:304 -#: pcbnew/class_module.cpp:1127 -msgid "Pads" -msgstr "Pads" - -#: pcbnew/block.cpp:121 -msgid "Include Modules" -msgstr "Inclure Modules" - -#: pcbnew/block.cpp:125 -msgid "Include tracks" -msgstr "Inclure Pistes" - -#: pcbnew/block.cpp:129 -#: pcbnew/dialog_drc.cpp:165 -msgid "Include zones" -msgstr "Inclure zones" - -#: pcbnew/block.cpp:134 -msgid "Include Text on copper layers" -msgstr "Inclure Texte sur couches cuivre" - -#: pcbnew/block.cpp:138 -msgid "Include drawings" -msgstr "Inclure tracés" - -#: pcbnew/block.cpp:142 -msgid "Include egde layer" -msgstr "Inclure couche Edge" - -#: pcbnew/block.cpp:449 -msgid "Delete Block" -msgstr "Effacer Bloc" - -#: pcbnew/block.cpp:460 -msgid "Delete Footprints" -msgstr "Suppression modules" - -#: pcbnew/block.cpp:480 -msgid "Delete tracks" -msgstr "Suppression Pistes" - -#: pcbnew/block.cpp:500 -msgid "Delete draw layers" -msgstr "Suppression couches sessin" - -#: pcbnew/block.cpp:565 -msgid "Delete zones" -msgstr "SuppressionZones" - -#: pcbnew/block.cpp:600 -msgid "Rotate Block" -msgstr "Rotation Bloc" - -#: pcbnew/block.cpp:615 -msgid "Footprint rotation" -msgstr "Rotation modules" - -#: pcbnew/block.cpp:649 -msgid "Track rotation" -msgstr "Rotation pistes" - -#: pcbnew/block.cpp:670 -msgid "Zone rotation" -msgstr "Rotation Zones" - -#: pcbnew/block.cpp:691 -msgid "Draw layers rotation" -msgstr "Rotation couches dessin" - -#: pcbnew/block.cpp:810 -msgid "Block mirroring" -msgstr "Bloc Miroir" - -#: pcbnew/block.cpp:825 -msgid "Footprint mirroring" -msgstr "Miroir modules" - -#: pcbnew/block.cpp:858 -msgid "Track mirroring" -msgstr "Miroir Pistes" - -#: pcbnew/block.cpp:884 -msgid "Zone mirroring" -msgstr "Miroir zone" - -#: pcbnew/block.cpp:906 -msgid "Draw layers mirroring" -msgstr "Draw layers mirroring" - -#: pcbnew/block.cpp:1033 -msgid "Move Block" -msgstr "Déplacer Bloc" - -#: pcbnew/block.cpp:1045 -msgid "Move footprints" -msgstr "Déplacement modules" - -#: pcbnew/block.cpp:1078 -msgid "Move tracks" -msgstr "Déplacement pistes" - -#: pcbnew/block.cpp:1099 -msgid "Move zones" -msgstr "Déplacement zones" - -#: pcbnew/block.cpp:1120 -msgid "Move draw layers" -msgstr "Déplacement couches dessin" - -#: pcbnew/block.cpp:1225 -msgid "Copy Block" -msgstr "Copie Bloc" - -#: pcbnew/block.cpp:1237 -msgid "Module copy" -msgstr "Copie Modules" - -#: pcbnew/block.cpp:1276 -msgid "Track copy" -msgstr "Copie Piste" - -#: pcbnew/block.cpp:1300 -msgid "Zone copy" -msgstr "Copie Zone" - -#: pcbnew/block.cpp:1325 -msgid "Draw layers copy" -msgstr "Cpoie des couches dessin" +#: pcbnew/ioascii.cpp:207 +msgid "Error: Unexpected end of file !" +msgstr "Erreur: Fin de fichier inattendue !" #: pcbnew/set_grid.cpp:147 -#: pcbnew/dialog_general_options.cpp:270 +#: pcbnew/dialog_general_options.cpp:271 #: gerbview/options.cpp:183 msgid "Inches" msgstr "Pouces" @@ -2391,6 +2468,38 @@ msgstr "Module %s trouv msgid "Delete module?" msgstr "Effacer Module?" +#: pcbnew/editpads.cpp:77 +msgid "Pad Position" +msgstr "Position Pad" + +#: pcbnew/editpads.cpp:84 +msgid "Pad Size" +msgstr "Taille Pad" + +#: pcbnew/editpads.cpp:91 +msgid "Delta" +msgstr "Delta" + +#: pcbnew/editpads.cpp:98 +msgid "Offset" +msgstr "Offset" + +#: pcbnew/editpads.cpp:107 +msgid "Pad Drill" +msgstr "Diam perçage" + +#: pcbnew/editpads.cpp:119 +msgid "Pad Orient (0.1 deg)" +msgstr "Orient Pad (0.1 deg)" + +#: pcbnew/editpads.cpp:389 +msgid "Incorrect value for pad drill: pad drill bigger than pad size" +msgstr "Valeur incorrecte pour diametre de perçage.percage plus grand que la taille du pad" + +#: pcbnew/editpads.cpp:395 +msgid "Incorrect value for pad offset" +msgstr "Valeur incorrecte pour offset du pad" + #: pcbnew/dialog_pad_edit.cpp:157 msgid "Pad Num :" msgstr "Num Pad :" @@ -2402,8 +2511,8 @@ msgstr "NetName Pad:" #: pcbnew/dialog_pad_edit.cpp:176 #: pcbnew/dialog_pad_edit.cpp:196 #: pcbnew/classpcb.cpp:186 -#: pcbnew/class_board_item.cpp:100 -#: pcbnew/class_track.cpp:745 +#: pcbnew/class_board_item.cpp:108 +#: pcbnew/class_track.cpp:766 msgid "Circle" msgstr "Cercle" @@ -2440,7 +2549,7 @@ msgid "Pad Orient:" msgstr "Orient pad:" #: pcbnew/dialog_pad_edit.cpp:198 -#: pcbnew/class_board_item.cpp:94 +#: pcbnew/class_board_item.cpp:102 msgid "Rect" msgstr "Rect" @@ -2453,7 +2562,7 @@ msgid "Pad Shape:" msgstr "Forme Pad:" #: pcbnew/dialog_pad_edit.cpp:205 -#: pcbnew/class_track.cpp:747 +#: pcbnew/class_track.cpp:768 msgid "Standard" msgstr "Standard" @@ -2534,9 +2643,19 @@ msgstr "couche E.C.O.2" msgid "Draft layer" msgstr "Couche dessin" -#: pcbnew/controle.cpp:172 -msgid "Selection Clarification" -msgstr "Clarification de la Sélection" +#: pcbnew/modules.cpp:81 +msgid "Footprint name:" +msgstr "Nom Module: " + +#: pcbnew/modules.cpp:281 +#: pcbnew/onrightclick.cpp:687 +msgid "Delete Module" +msgstr "Supprimer Module" + +#: pcbnew/modules.cpp:282 +#: eeschema/find.cpp:228 +msgid "Value " +msgstr "Valeur " #: pcbnew/pcbcfg.cpp:68 #: eeschema/eeconfig.cpp:58 @@ -2590,43 +2709,10 @@ msgstr "Librairie: " msgid "Modules (%d items)" msgstr "Modules (%d éléments)" -#: pcbnew/class_pad.cpp:776 -msgid "Unknown Pad shape" -msgstr "Forme pad inconnue" - -#: pcbnew/class_pad.cpp:862 -#: pcbnew/class_text_mod.cpp:328 -#: pcbnew/class_edge_mod.cpp:285 -#: pcbnew/class_module.cpp:1142 -#: cvpcb/setvisu.cpp:30 -msgid "Module" -msgstr "Module" - -#: pcbnew/class_pad.cpp:865 -msgid "RefP" -msgstr "RefP" - -#: pcbnew/class_pad.cpp:868 -#: pcbnew/class_board_item.cpp:35 -msgid "Net" -msgstr "Net" - -#: pcbnew/class_pad.cpp:982 -msgid "Drill X / Y" -msgstr "Perçage X/Y" - -#: pcbnew/class_pad.cpp:997 -msgid "X Pos" -msgstr "X Pos" - -#: pcbnew/class_pad.cpp:1001 -msgid "Y pos" -msgstr "Y pos" - #: pcbnew/classpcb.cpp:181 #: pcbnew/classpcb.cpp:313 #: pcbnew/class_text_mod.cpp:337 -#: pcbnew/class_track.cpp:719 +#: pcbnew/class_track.cpp:740 #: gerbview/affiche.cpp:93 msgid "Type" msgstr "Type" @@ -2640,12 +2726,12 @@ msgid " Arc " msgstr " Arc " #: pcbnew/classpcb.cpp:195 -#: pcbnew/class_track.cpp:743 +#: pcbnew/class_track.cpp:764 msgid "Segment" msgstr "Segment" #: pcbnew/classpcb.cpp:313 -#: pcbnew/class_board_item.cpp:182 +#: pcbnew/class_board_item.cpp:198 msgid "Marker" msgstr "Marqueur" @@ -2910,7 +2996,7 @@ msgid "Ref." msgstr "Ref." #: pcbnew/class_text_mod.cpp:323 -#: pcbnew/class_board_item.cpp:71 +#: pcbnew/class_board_item.cpp:80 #: pcbnew/class_edge_mod.cpp:286 #: eeschema/eelayer.cpp:105 #: eeschema/component_class.cpp:55 @@ -2921,101 +3007,17 @@ msgstr "Valeur" #: pcbnew/class_text_mod.cpp:323 #: pcbnew/class_text_mod.cpp:331 -#: pcbnew/class_board_item.cpp:76 +#: pcbnew/class_board_item.cpp:85 msgid "Text" msgstr "Texte" -#: pcbnew/drc.cpp:80 -msgid "Look for active routes\n" -msgstr "Recherche des chevelus actifs\n" - -#: pcbnew/drc.cpp:92 -msgid "Unconnected found:\n" -msgstr "Non connecté trouvé:\n" - -#: pcbnew/drc.cpp:97 -#, c-format -msgid "%d > Pad %s (%s) @ %.4f,%.4f and " -msgstr "%d > Pad %s (%s) @ %.4f,%.4f et " - -#: pcbnew/drc.cpp:108 -#, c-format -msgid "Pad %s (%s) @ %.4f,%.4f\n" -msgstr "Pad %s (%s) @ %.4f,%.4f\n" - -#: pcbnew/drc.cpp:117 -#, c-format -msgid "Active routes: %d\n" -msgstr "Active routes: %d\n" - -#: pcbnew/drc.cpp:119 -msgid "OK! (No active routes)\n" -msgstr "OK! (Pas de chevelu actif)\n" - -#: pcbnew/drc.cpp:171 -#, c-format -msgid "** End Drc: %d errors **\n" -msgstr "** FinDrc: %d erreurs **\n" - -#: pcbnew/drc.cpp:173 -msgid "** End Drc: No Error **\n" -msgstr "** Fin Drc: Aucune Erreur **\n" - -#: pcbnew/drc.cpp:182 -#, c-format -msgid "Report file <%s> created\n" -msgstr "Fichier rapport <%s> créé\n" - -#: pcbnew/drc.cpp:264 -msgid "Tst Pad to Pad\n" -msgstr "Tst Pad to Pad\n" - -#: pcbnew/drc.cpp:309 -#: pcbnew/drc.cpp:382 -msgid "SegmNb" -msgstr "SegmNb" - -#: pcbnew/drc.cpp:310 -msgid "Track Err" -msgstr "Err Pistes" - -#: pcbnew/drc.cpp:314 -msgid "Tst Tracks\n" -msgstr "Tst Pistes\n" - -#: pcbnew/drc.cpp:344 -#: pcbnew/drc.cpp:420 -#: eeschema/eelayer.cpp:141 -msgid "Netname" -msgstr "NetName" - -#: pcbnew/drc.cpp:383 -msgid "Zone Err" -msgstr "Err. Zone" - -#: pcbnew/drc.cpp:386 -msgid "Tst Zones\n" -msgstr "Test Zones\n" - -#: pcbnew/drc.cpp:1367 -#, c-format -msgid "%d Drc Err %d %s (net %s) and PAD %s (%s) net %s @ %d,%d\n" -msgstr "%d Err Drc %d %s (net %s) et PAD %s (%s) net %s @ %d,%d\n" - -#: pcbnew/drc.cpp:1384 -#, c-format -msgid "%d Err type %d: %s (net %s) and VIA (net %s) @ %d,%d\n" -msgstr "%d Err type %d: %s (net %s) et VIA (net %s) @ %d,%d\n" - -#: pcbnew/drc.cpp:1400 -#, c-format -msgid "%d Err type %d: %s (net %s) and track (net %s) @ %d,%d\n" -msgstr "%d Err type %d: %s (net %s) et piste (net %s) @ %d,%d\n" - -#: pcbnew/drc.cpp:1458 -#, c-format -msgid "%d Drc Err: PAD %s (%s) net %s @ %d,%d and PAD %s (%s) net %s @ %d,%d\n" -msgstr "%d Err Drc: PAD %s (%s) net %s @ %d,%d et PAD %s (%s) net %s @ %d,%d\n" +#: pcbnew/class_text_mod.cpp:328 +#: pcbnew/class_pad.cpp:883 +#: pcbnew/class_edge_mod.cpp:285 +#: pcbnew/class_module.cpp:1142 +#: cvpcb/setvisu.cpp:30 +msgid "Module" +msgstr "Module" #: pcbnew/pcbtexte.cpp:88 msgid "TextPCB properties" @@ -3025,13 +3027,101 @@ msgstr "Propri msgid "Position" msgstr "Position" -#: pcbnew/surbrill.cpp:35 -msgid "Filter for net names:" -msgstr "Filtre pour nets:" +#: pcbnew/dialog_general_options.cpp:263 +#: gerbview/options.cpp:173 +msgid "No Display" +msgstr "Pas d'affichage" -#: pcbnew/surbrill.cpp:39 -msgid "List Nets" -msgstr "Liste équipots" +#: pcbnew/dialog_general_options.cpp:267 +#: gerbview/options.cpp:175 +msgid "Display Polar Coord" +msgstr "Affichage coord Polaires" + +#: pcbnew/dialog_general_options.cpp:275 +#: eeschema/dialog_options.cpp:248 +#: gerbview/options.cpp:185 +msgid "Units" +msgstr "Unités" + +#: pcbnew/dialog_general_options.cpp:280 +#: gerbview/options.cpp:191 +msgid "Small" +msgstr "Petit" + +#: pcbnew/dialog_general_options.cpp:281 +#: gerbview/options.cpp:191 +msgid "Big" +msgstr "Grand" + +#: pcbnew/dialog_general_options.cpp:284 +#: gerbview/options.cpp:192 +msgid "Cursor" +msgstr "Curseur" + +#: pcbnew/dialog_general_options.cpp:291 +msgid "Number of Layers:" +msgstr "Nombre de Couches:" + +#: pcbnew/dialog_general_options.cpp:298 +msgid "Max Links:" +msgstr "Liens max:" + +#: pcbnew/dialog_general_options.cpp:305 +msgid "Auto Save (minuts):" +msgstr "Sauveg. Auto (min)" + +#: pcbnew/dialog_general_options.cpp:315 +#: eeschema/netlist_control.cpp:94 +#: eeschema/dialog_cmp_graphic_properties.cpp:151 +#: eeschema/dialog_build_BOM.cpp:282 +#: share/dialog_print.cpp:167 +msgid "Options:" +msgstr "Options :" + +#: pcbnew/dialog_general_options.cpp:319 +msgid "Drc ON" +msgstr "Drc ACTIVE" + +#: pcbnew/dialog_general_options.cpp:324 +msgid "Show Ratsnest" +msgstr "Monter le chevelu général" + +#: pcbnew/dialog_general_options.cpp:328 +msgid "Show Mod Ratsnest" +msgstr "Monter le chevelu du module" + +#: pcbnew/dialog_general_options.cpp:332 +msgid "Tracks Auto Del" +msgstr "Auto Supp. Pistes" + +#: pcbnew/dialog_general_options.cpp:336 +msgid "Track 45 Only" +msgstr "Pistes 45 seulement" + +#: pcbnew/dialog_general_options.cpp:340 +msgid "Segments 45 Only" +msgstr "Segments 45 seulement" + +#: pcbnew/dialog_general_options.cpp:344 +#: eeschema/dialog_options.cpp:239 +msgid "Auto PAN" +msgstr "Auto PAN" + +#: pcbnew/dialog_general_options.cpp:349 +msgid "Double Segm Track" +msgstr "2 segments pour piste" + +#: pcbnew/dialog_general_options.cpp:356 +msgid "When creating tracks" +msgstr "En creation de pistes" + +#: pcbnew/dialog_general_options.cpp:360 +msgid "Magnetic Pads" +msgstr " Pads magnétiques" + +#: pcbnew/dialog_general_options.cpp:362 +msgid "control the capture of the pcb cursor when the mouse cursor enters a pad area" +msgstr "Controle la capture du curseur pcb quand le curseuir souris est sur le pad" #: pcbnew/editmod.cpp:144 msgid "Text is REFERENCE!" @@ -3422,37 +3512,103 @@ msgstr "&3D Visu" msgid "&Help" msgstr "&Aide" -#: pcbnew/sel_layer.cpp:92 -msgid "Select Layer:" -msgstr "Selection couche:" +#: pcbnew/class_board_item.cpp:36 +#: pcbnew/class_pad.cpp:889 +msgid "Net" +msgstr "Net" -#: pcbnew/sel_layer.cpp:137 -msgid "(Deselect)" -msgstr "(Deselection)" +#: pcbnew/class_board_item.cpp:41 +#: eeschema/component_class.cpp:56 +msgid "Footprint" +msgstr "Module" -#: pcbnew/sel_layer.cpp:238 -msgid "Less than two copper layers are being used." -msgstr "Il y a moins de 2 couches cuivre utilisées." +#: pcbnew/class_board_item.cpp:47 +msgid "Pad" +msgstr "Pad" -#: pcbnew/sel_layer.cpp:239 -msgid "Hence Layer Pairs cannot be specified." -msgstr "Donc les paires de couche ne peuvent pas être spécifiées" +#: pcbnew/class_board_item.cpp:50 +msgid "all copper layers" +msgstr "Toutes Couches Cuivre" -#: pcbnew/sel_layer.cpp:256 -msgid "Select Layer Pair:" -msgstr "Selection paire de couches" +#: pcbnew/class_board_item.cpp:52 +msgid "copper layer" +msgstr "Couche Cuivre" -#: pcbnew/sel_layer.cpp:287 -msgid "Top Layer" -msgstr "Couche Sup." +#: pcbnew/class_board_item.cpp:54 +msgid "cmp layer" +msgstr "Couche Cmp" -#: pcbnew/sel_layer.cpp:292 -msgid "Bottom Layer" -msgstr "Couche Inf." +#: pcbnew/class_board_item.cpp:55 +msgid "???" +msgstr "???" -#: pcbnew/sel_layer.cpp:351 -msgid "The Top Layer and Bottom Layer must differ" -msgstr "Les couches dessus et dessous doivent différer" +#: pcbnew/class_board_item.cpp:56 +msgid ") of " +msgstr ") de " + +#: pcbnew/class_board_item.cpp:60 +msgid "Pcb Graphic" +msgstr "Pcb Graphic" + +#: pcbnew/class_board_item.cpp:60 +#: pcbnew/class_board_item.cpp:69 +#: pcbnew/class_board_item.cpp:146 +#: pcbnew/class_board_item.cpp:164 +#: pcbnew/class_board_item.cpp:191 +#: pcbnew/class_board_item.cpp:213 +msgid " on " +msgstr " sur " + +#: pcbnew/class_board_item.cpp:64 +msgid "Pcb Text" +msgstr "Texte Pcb" + +#: pcbnew/class_board_item.cpp:80 +#: pcbnew/class_board_item.cpp:86 +#: pcbnew/class_board_item.cpp:130 +msgid " of " +msgstr " de " + +#: pcbnew/class_board_item.cpp:93 +msgid "Graphic" +msgstr "Graphique" + +#: pcbnew/class_board_item.cpp:105 +msgid "Arc" +msgstr "Arc" + +#: pcbnew/class_board_item.cpp:147 +msgid "Net:" +msgstr "Net:" + +#: pcbnew/class_board_item.cpp:148 +msgid "Length:" +msgstr "Long.:" + +#: pcbnew/class_board_item.cpp:153 +#: pcbnew/class_track.cpp:733 +msgid "Zone" +msgstr "Zone" + +#: pcbnew/class_board_item.cpp:174 +msgid "Blind" +msgstr "Enterrée" + +#: pcbnew/class_board_item.cpp:176 +msgid "Buried" +msgstr "Borgne" + +#: pcbnew/class_board_item.cpp:202 +msgid "Dimension" +msgstr "Dimension" + +#: pcbnew/class_board_item.cpp:206 +msgid "Target" +msgstr "Mire" + +#: pcbnew/class_board_item.cpp:213 +msgid "Edge Zone" +msgstr "Contour Zone" #: pcbnew/automove.cpp:212 msgid "Move Modules ?" @@ -3467,6 +3623,26 @@ msgstr "Autoplace modules: pas de contours sur pcb, impossible de placer les mod msgid "Ok to set module orientation to %d degrees ?" msgstr "Ok pour orientation module à %d degrés ?" +#: pcbnew/class_pad.cpp:797 +msgid "Unknown Pad shape" +msgstr "Forme pad inconnue" + +#: pcbnew/class_pad.cpp:886 +msgid "RefP" +msgstr "RefP" + +#: pcbnew/class_pad.cpp:1003 +msgid "Drill X / Y" +msgstr "Perçage X/Y" + +#: pcbnew/class_pad.cpp:1018 +msgid "X Pos" +msgstr "X Pos" + +#: pcbnew/class_pad.cpp:1022 +msgid "Y pos" +msgstr "Y pos" + #: pcbnew/basepcbframe.cpp:119 msgid "3D Frame already opened" msgstr "Fenetre 3D déjà ouverte" @@ -3475,7 +3651,7 @@ msgstr "Fenetre 3D d msgid "3D Viewer" msgstr "Visu 3D" -#: pcbnew/modedit_onclick.cpp:206 +#: pcbnew/modedit_onclick.cpp:205 #: pcbnew/onrightclick.cpp:151 #: eeschema/libedit_onrightclick.cpp:73 #: eeschema/onrightclick.cpp:125 @@ -3483,161 +3659,161 @@ msgstr "Visu 3D" msgid "End Tool" msgstr "Fin Outil" -#: pcbnew/modedit_onclick.cpp:216 -#: pcbnew/onrightclick.cpp:495 +#: pcbnew/modedit_onclick.cpp:215 +#: pcbnew/onrightclick.cpp:494 #: eeschema/libedit_onrightclick.cpp:252 #: eeschema/onrightclick.cpp:581 #: gerbview/onrightclick.cpp:51 msgid "Cancel Block" msgstr "Annuler Bloc" -#: pcbnew/modedit_onclick.cpp:218 -#: pcbnew/onrightclick.cpp:497 +#: pcbnew/modedit_onclick.cpp:217 +#: pcbnew/onrightclick.cpp:496 #: gerbview/onrightclick.cpp:52 msgid "Zoom Block (Midd butt drag)" msgstr "Zoom Bloc (drag+bouton milieu)" -#: pcbnew/modedit_onclick.cpp:221 -#: pcbnew/onrightclick.cpp:500 +#: pcbnew/modedit_onclick.cpp:220 +#: pcbnew/onrightclick.cpp:499 #: eeschema/libedit_onrightclick.cpp:260 #: eeschema/onrightclick.cpp:589 #: gerbview/onrightclick.cpp:54 msgid "Place Block" msgstr "Place Bloc" -#: pcbnew/modedit_onclick.cpp:223 -#: pcbnew/onrightclick.cpp:502 +#: pcbnew/modedit_onclick.cpp:222 +#: pcbnew/onrightclick.cpp:501 #: eeschema/libedit_onrightclick.cpp:266 #: eeschema/onrightclick.cpp:598 msgid "Copy Block (shift + drag mouse)" msgstr "Copie Bloc (shift + drag mouse)" -#: pcbnew/modedit_onclick.cpp:225 +#: pcbnew/modedit_onclick.cpp:224 msgid "Mirror Block (alt + drag mouse)" msgstr "Bloc Miroir (alt + drag mouse)" -#: pcbnew/modedit_onclick.cpp:227 -#: pcbnew/onrightclick.cpp:506 +#: pcbnew/modedit_onclick.cpp:226 +#: pcbnew/onrightclick.cpp:505 msgid "Rotate Block (ctrl + drag mouse)" msgstr "Rotation Bloc (ctrl + drag mouse)" -#: pcbnew/modedit_onclick.cpp:229 -#: pcbnew/onrightclick.cpp:508 +#: pcbnew/modedit_onclick.cpp:228 +#: pcbnew/onrightclick.cpp:507 msgid "Delete Block (shift+ctrl + drag mouse)" msgstr "Effacement Bloc (shift+ctrl + drag mouse)" -#: pcbnew/modedit_onclick.cpp:251 -#: pcbnew/onrightclick.cpp:714 -#: pcbnew/onrightclick.cpp:811 +#: pcbnew/modedit_onclick.cpp:250 +#: pcbnew/onrightclick.cpp:713 +#: pcbnew/onrightclick.cpp:810 msgid "Rotate" msgstr "Rotation" -#: pcbnew/modedit_onclick.cpp:255 +#: pcbnew/modedit_onclick.cpp:254 msgid "Scale" msgstr "Echelle" -#: pcbnew/modedit_onclick.cpp:256 +#: pcbnew/modedit_onclick.cpp:255 msgid "Scale X" msgstr "Echelle X" -#: pcbnew/modedit_onclick.cpp:257 +#: pcbnew/modedit_onclick.cpp:256 msgid "Scale Y" msgstr "Echelle Y" -#: pcbnew/modedit_onclick.cpp:260 +#: pcbnew/modedit_onclick.cpp:259 #: pcbnew/dialog_edit_module.cpp:185 msgid "Edit Module" msgstr "Edit Module" -#: pcbnew/modedit_onclick.cpp:263 +#: pcbnew/modedit_onclick.cpp:262 msgid "Transform Module" msgstr "Transforme Module" -#: pcbnew/modedit_onclick.cpp:271 +#: pcbnew/modedit_onclick.cpp:270 msgid "Move Pad" msgstr "Déplace Pad" -#: pcbnew/modedit_onclick.cpp:273 -#: pcbnew/onrightclick.cpp:753 +#: pcbnew/modedit_onclick.cpp:272 +#: pcbnew/onrightclick.cpp:752 msgid "Edit Pad" msgstr "Edit Pad" -#: pcbnew/modedit_onclick.cpp:275 -#: pcbnew/onrightclick.cpp:757 +#: pcbnew/modedit_onclick.cpp:274 +#: pcbnew/onrightclick.cpp:756 msgid "New Pad Settings" msgstr "Nouvelles Caract. Pads" -#: pcbnew/modedit_onclick.cpp:277 -#: pcbnew/onrightclick.cpp:759 +#: pcbnew/modedit_onclick.cpp:276 +#: pcbnew/onrightclick.cpp:758 msgid "Export Pad Settings" msgstr "Exporte Caract. Pads" -#: pcbnew/modedit_onclick.cpp:279 +#: pcbnew/modedit_onclick.cpp:278 msgid "delete Pad" msgstr "Supprimer Pad" -#: pcbnew/modedit_onclick.cpp:284 -#: pcbnew/onrightclick.cpp:764 +#: pcbnew/modedit_onclick.cpp:283 +#: pcbnew/onrightclick.cpp:763 msgid "Global Pad Settings" msgstr "Edition Globale des pads" -#: pcbnew/modedit_onclick.cpp:292 +#: pcbnew/modedit_onclick.cpp:291 msgid "Move Text Mod." msgstr "Move Texte Mod." -#: pcbnew/modedit_onclick.cpp:295 +#: pcbnew/modedit_onclick.cpp:294 msgid "Rotate Text Mod." msgstr "Rot. Texte Mod." -#: pcbnew/modedit_onclick.cpp:297 +#: pcbnew/modedit_onclick.cpp:296 msgid "Edit Text Mod." msgstr "Edit Texte Mod." -#: pcbnew/modedit_onclick.cpp:300 +#: pcbnew/modedit_onclick.cpp:299 msgid "Delete Text Mod." msgstr "Supprimer Texte Mod." -#: pcbnew/modedit_onclick.cpp:307 +#: pcbnew/modedit_onclick.cpp:306 msgid "End edge" msgstr "Fin contour" -#: pcbnew/modedit_onclick.cpp:310 +#: pcbnew/modedit_onclick.cpp:309 msgid "Move edge" msgstr "Déplace contour" -#: pcbnew/modedit_onclick.cpp:313 +#: pcbnew/modedit_onclick.cpp:312 msgid "Place edge" msgstr "Place contour" -#: pcbnew/modedit_onclick.cpp:316 -#: pcbnew/onrightclick.cpp:682 -#: pcbnew/onrightclick.cpp:716 -#: pcbnew/onrightclick.cpp:813 +#: pcbnew/modedit_onclick.cpp:315 +#: pcbnew/onrightclick.cpp:681 +#: pcbnew/onrightclick.cpp:715 +#: pcbnew/onrightclick.cpp:812 #: eeschema/onrightclick.cpp:312 msgid "Edit" msgstr "Editer" -#: pcbnew/modedit_onclick.cpp:318 +#: pcbnew/modedit_onclick.cpp:317 msgid "Edit Width (Current)" msgstr "Edit Epaisseur (Courant)" -#: pcbnew/modedit_onclick.cpp:320 +#: pcbnew/modedit_onclick.cpp:319 msgid "Edit Width (All)" msgstr "Edit Epaisseur (Tous)" -#: pcbnew/modedit_onclick.cpp:322 +#: pcbnew/modedit_onclick.cpp:321 msgid "Edit Layer (Current)" msgstr "Edit Couche (Courant)" -#: pcbnew/modedit_onclick.cpp:324 +#: pcbnew/modedit_onclick.cpp:323 msgid "Edit Layer (All)" msgstr "Edit Couche (Tous)" -#: pcbnew/modedit_onclick.cpp:326 +#: pcbnew/modedit_onclick.cpp:325 msgid "Delete edge" msgstr "Effacement contour" -#: pcbnew/modedit_onclick.cpp:367 +#: pcbnew/modedit_onclick.cpp:366 msgid "Set Width" msgstr "Ajuste Epaiss" @@ -3808,10 +3984,6 @@ msgstr "Hauteur Texte Module" msgid "Text Module Size H" msgstr "Largeur Texte Module" -#: pcbnew/export_gencad.cpp:69 -msgid "GenCAD file:" -msgstr "Fichier GenCAD:" - #: pcbnew/swap_layers.cpp:59 msgid "Swap Layers:" msgstr "Permutte couches" @@ -3841,6 +4013,19 @@ msgstr "Deselection" msgid "Deselect this layer to restore its No Change state" msgstr "Deselectionner cette couche pour restorer l'option Pas de Changement" +#: pcbnew/class_track.cpp:760 +msgid "NetCode" +msgstr "NetCode" + +#: pcbnew/class_track.cpp:780 +#: pcbnew/class_module.cpp:1135 +msgid "Stat" +msgstr "Stat" + +#: pcbnew/class_track.cpp:804 +msgid "Diam" +msgstr "Diam" + #: pcbnew/dialog_edit_module.cpp:39 msgid "Module properties" msgstr "Propriétés du Module" @@ -3998,72 +4183,6 @@ msgstr "R msgid "Delete [%s]" msgstr "Supprimer [%s]" -#: pcbnew/class_board_item.cpp:40 -#: eeschema/component_class.cpp:56 -msgid "Footprint" -msgstr "Module" - -#: pcbnew/class_board_item.cpp:45 -msgid "Pad" -msgstr "Pad" - -#: pcbnew/class_board_item.cpp:45 -#: pcbnew/class_board_item.cpp:71 -#: pcbnew/class_board_item.cpp:77 -#: pcbnew/class_board_item.cpp:122 -msgid " of " -msgstr " de " - -#: pcbnew/class_board_item.cpp:50 -msgid "Pcb Graphic" -msgstr "Pcb Graphic" - -#: pcbnew/class_board_item.cpp:50 -#: pcbnew/class_board_item.cpp:59 -#: pcbnew/class_board_item.cpp:133 -#: pcbnew/class_board_item.cpp:148 -#: pcbnew/class_board_item.cpp:175 -#: pcbnew/class_board_item.cpp:197 -msgid " on " -msgstr " sur " - -#: pcbnew/class_board_item.cpp:54 -msgid "Pcb Text" -msgstr "Texte Pcb" - -#: pcbnew/class_board_item.cpp:85 -msgid "Graphic" -msgstr "Graphique" - -#: pcbnew/class_board_item.cpp:97 -msgid "Arc" -msgstr "Arc" - -#: pcbnew/class_board_item.cpp:137 -#: pcbnew/class_track.cpp:712 -msgid "Zone" -msgstr "Zone" - -#: pcbnew/class_board_item.cpp:158 -msgid "Blind" -msgstr "Enterrée" - -#: pcbnew/class_board_item.cpp:160 -msgid "Buried" -msgstr "Borgne" - -#: pcbnew/class_board_item.cpp:186 -msgid "Dimension" -msgstr "Dimension" - -#: pcbnew/class_board_item.cpp:190 -msgid "Target" -msgstr "Mire" - -#: pcbnew/class_board_item.cpp:197 -msgid "Edge Zone" -msgstr "Contour Zone" - #: pcbnew/class_edge_mod.cpp:283 msgid "Seg" msgstr "Seg" @@ -4081,13 +4200,9 @@ msgstr "Couche Mod." msgid "Seg Layer" msgstr "Couche Seg." -#: pcbnew/move_or_drag_track.cpp:709 -msgid "Unable to drag this segment: too many segments connected" -msgstr "Impossible de drag ce segment: trop de segments connectés" - -#: pcbnew/move_or_drag_track.cpp:762 -msgid "Unable to drag this segment: two collinear segments" -msgstr "Impossible de drag ce segment: 2 segments alignés" +#: pcbnew/moduleframe.cpp:177 +msgid "Module Editor: module modified!, Continue ?" +msgstr "Editeur de Module: module modifié! Continuer ?" #: pcbnew/cross-probing.cpp:51 #, c-format @@ -4109,23 +4224,6 @@ msgstr "Pin %s (module %s) non trouv msgid "Locate Pin %s (module %s)" msgstr "Pin localisée %s (module %s)" -#: pcbnew/moduleframe.cpp:177 -msgid "Module Editor: module modified!, Continue ?" -msgstr "Editeur de Module: module modifié! Continuer ?" - -#: pcbnew/class_track.cpp:739 -msgid "NetCode" -msgstr "NetCode" - -#: pcbnew/class_track.cpp:759 -#: pcbnew/class_module.cpp:1135 -msgid "Stat" -msgstr "Stat" - -#: pcbnew/class_track.cpp:783 -msgid "Diam" -msgstr "Diam" - #: pcbnew/gen_modules_placefile.cpp:76 msgid "No Modules for Automated Placement" msgstr "Pas de Module pour placement Automatisé" @@ -4162,344 +4260,344 @@ msgstr "Via %.1f" msgid "Via %.3f" msgstr "Via %.3f" -#: pcbnew/onrightclick.cpp:235 +#: pcbnew/onrightclick.cpp:234 msgid "Lock Module" msgstr "Verrouiller Modules" -#: pcbnew/onrightclick.cpp:243 +#: pcbnew/onrightclick.cpp:242 msgid "Unlock Module" msgstr "Déverrouiller Modules" -#: pcbnew/onrightclick.cpp:251 +#: pcbnew/onrightclick.cpp:250 msgid "Auto place Module" msgstr "Auto place Module" -#: pcbnew/onrightclick.cpp:257 +#: pcbnew/onrightclick.cpp:256 msgid "Autoroute" msgstr "Autoroute" -#: pcbnew/onrightclick.cpp:273 +#: pcbnew/onrightclick.cpp:272 msgid "Move Drawing" msgstr "Déplace Tracé" -#: pcbnew/onrightclick.cpp:278 +#: pcbnew/onrightclick.cpp:277 msgid "End Drawing" msgstr "Fin tracé" -#: pcbnew/onrightclick.cpp:280 +#: pcbnew/onrightclick.cpp:279 msgid "Edit Drawing" msgstr "Edit Tracé" -#: pcbnew/onrightclick.cpp:281 +#: pcbnew/onrightclick.cpp:280 msgid "Delete Drawing" msgstr "Supprimer Tracé" -#: pcbnew/onrightclick.cpp:288 +#: pcbnew/onrightclick.cpp:287 msgid "End edge zone" msgstr "Fin contour Zone" -#: pcbnew/onrightclick.cpp:291 +#: pcbnew/onrightclick.cpp:290 msgid "Delete edge zone" msgstr "Supprimer Contour Zone" -#: pcbnew/onrightclick.cpp:306 +#: pcbnew/onrightclick.cpp:305 msgid "Edit Zone" msgstr "Editer Zone" -#: pcbnew/onrightclick.cpp:308 +#: pcbnew/onrightclick.cpp:307 msgid "Delete Zone" msgstr "Supprimer Zone" -#: pcbnew/onrightclick.cpp:313 +#: pcbnew/onrightclick.cpp:312 msgid "Delete Marker" msgstr "Effacer Marqueur" -#: pcbnew/onrightclick.cpp:320 +#: pcbnew/onrightclick.cpp:319 msgid "Edit Dimension" msgstr "Edit Cote" -#: pcbnew/onrightclick.cpp:323 +#: pcbnew/onrightclick.cpp:322 msgid "Delete Dimension" msgstr "Suppression Cote" -#: pcbnew/onrightclick.cpp:330 +#: pcbnew/onrightclick.cpp:329 msgid "Move Target" msgstr "Déplacer Mire" -#: pcbnew/onrightclick.cpp:333 +#: pcbnew/onrightclick.cpp:332 msgid "Edit Target" msgstr "Editer Mire" -#: pcbnew/onrightclick.cpp:335 +#: pcbnew/onrightclick.cpp:334 msgid "Delete Target" msgstr "Supprimer Mire" -#: pcbnew/onrightclick.cpp:362 +#: pcbnew/onrightclick.cpp:361 msgid "Get and Move Footprint" msgstr "Sel et Dépl.t module" -#: pcbnew/onrightclick.cpp:374 +#: pcbnew/onrightclick.cpp:373 msgid "Fill zone" msgstr "Remplir zone" -#: pcbnew/onrightclick.cpp:382 +#: pcbnew/onrightclick.cpp:381 msgid "Select Net" msgstr "Sélection Net" -#: pcbnew/onrightclick.cpp:387 +#: pcbnew/onrightclick.cpp:386 msgid "Delete Zone Limit" msgstr "Supprimer Limite de Zone" -#: pcbnew/onrightclick.cpp:392 -#: pcbnew/onrightclick.cpp:403 -#: pcbnew/onrightclick.cpp:416 -#: pcbnew/onrightclick.cpp:477 +#: pcbnew/onrightclick.cpp:391 +#: pcbnew/onrightclick.cpp:402 +#: pcbnew/onrightclick.cpp:415 +#: pcbnew/onrightclick.cpp:476 msgid "Select Working Layer" msgstr "Sélection de la couche de travail" -#: pcbnew/onrightclick.cpp:401 -#: pcbnew/onrightclick.cpp:474 +#: pcbnew/onrightclick.cpp:400 +#: pcbnew/onrightclick.cpp:473 msgid "Select Track Width" msgstr "Sélection Epais. Piste" -#: pcbnew/onrightclick.cpp:405 +#: pcbnew/onrightclick.cpp:404 msgid "Select layer pair for vias" msgstr "Selection couple de couches pour Vias" -#: pcbnew/onrightclick.cpp:422 +#: pcbnew/onrightclick.cpp:421 msgid "Footprint documentation" msgstr "Documentation des modules" -#: pcbnew/onrightclick.cpp:432 +#: pcbnew/onrightclick.cpp:431 msgid "Glob Move and Place" msgstr "Move et Place Globaux" -#: pcbnew/onrightclick.cpp:434 +#: pcbnew/onrightclick.cpp:433 msgid "Unlock All Modules" msgstr "Déverrouiller tous les Modules" -#: pcbnew/onrightclick.cpp:436 +#: pcbnew/onrightclick.cpp:435 msgid "Lock All Modules" msgstr "Verrouiller tous les Modules" -#: pcbnew/onrightclick.cpp:439 +#: pcbnew/onrightclick.cpp:438 msgid "Move All Modules" msgstr "Déplace tous les Modules" -#: pcbnew/onrightclick.cpp:440 +#: pcbnew/onrightclick.cpp:439 msgid "Move New Modules" msgstr "Déplace nouveaux Modules" -#: pcbnew/onrightclick.cpp:442 +#: pcbnew/onrightclick.cpp:441 msgid "Autoplace All Modules" msgstr "Autoplace Tous Modules" -#: pcbnew/onrightclick.cpp:443 +#: pcbnew/onrightclick.cpp:442 msgid "Autoplace New Modules" msgstr "AutoPlace nouveaux Modules" -#: pcbnew/onrightclick.cpp:444 +#: pcbnew/onrightclick.cpp:443 msgid "Autoplace Next Module" msgstr "Autoplace Module suivant" -#: pcbnew/onrightclick.cpp:447 +#: pcbnew/onrightclick.cpp:446 msgid "Orient All Modules" msgstr "Oriente Tous Modules" -#: pcbnew/onrightclick.cpp:454 +#: pcbnew/onrightclick.cpp:453 msgid "Global Autoroute" msgstr "Autoroutage global" -#: pcbnew/onrightclick.cpp:456 +#: pcbnew/onrightclick.cpp:455 msgid "Select layer pair" msgstr "Selection couple de couches" -#: pcbnew/onrightclick.cpp:458 +#: pcbnew/onrightclick.cpp:457 msgid "Autoroute All Modules" msgstr "Autoroute Tous Modules" -#: pcbnew/onrightclick.cpp:460 +#: pcbnew/onrightclick.cpp:459 msgid "Reset Unrouted" msgstr "Réinit Non routés" -#: pcbnew/onrightclick.cpp:465 +#: pcbnew/onrightclick.cpp:464 msgid "Global AutoRouter" msgstr "Autorouteur Global" -#: pcbnew/onrightclick.cpp:467 +#: pcbnew/onrightclick.cpp:466 msgid "Read Global AutoRouter Data" msgstr "Lire Données de L'autorouteur global" -#: pcbnew/onrightclick.cpp:504 +#: pcbnew/onrightclick.cpp:503 msgid "Flip Block (alt + drag mouse)" msgstr "Inversion Bloc (alt + drag mouse)" -#: pcbnew/onrightclick.cpp:527 +#: pcbnew/onrightclick.cpp:526 msgid "Drag Via" msgstr "Drag Via" -#: pcbnew/onrightclick.cpp:531 +#: pcbnew/onrightclick.cpp:530 msgid "Edit Via" msgstr "Edit Via" -#: pcbnew/onrightclick.cpp:533 +#: pcbnew/onrightclick.cpp:532 msgid "Set via hole to Default" msgstr "Ajuste perçage via à défaut" -#: pcbnew/onrightclick.cpp:535 +#: pcbnew/onrightclick.cpp:534 msgid "Set via hole to alt value" msgstr "Ajuste perçage via à valeur alternative" -#: pcbnew/onrightclick.cpp:537 +#: pcbnew/onrightclick.cpp:536 msgid "Set the via hole alt value" msgstr "Ajuste la valeur alt. perçage via" -#: pcbnew/onrightclick.cpp:539 +#: pcbnew/onrightclick.cpp:538 msgid "Export Via hole to alt value" msgstr "Exporte perçage via à valeur alt." -#: pcbnew/onrightclick.cpp:541 +#: pcbnew/onrightclick.cpp:540 msgid "Export via hole to others id vias" msgstr "Exporte perçage via aux autres semblables." -#: pcbnew/onrightclick.cpp:543 +#: pcbnew/onrightclick.cpp:542 msgid "Set ALL via holes to default" msgstr "Ajuste perçage TOUTES vias au défaut" -#: pcbnew/onrightclick.cpp:556 +#: pcbnew/onrightclick.cpp:555 msgid "Move Node" msgstr "Déplace Noeud" -#: pcbnew/onrightclick.cpp:561 +#: pcbnew/onrightclick.cpp:560 msgid "Drag Segments, keep slope" msgstr "Drag Segments, garder direction" -#: pcbnew/onrightclick.cpp:563 +#: pcbnew/onrightclick.cpp:562 msgid "Drag Segment" msgstr "Drag Segment" -#: pcbnew/onrightclick.cpp:566 +#: pcbnew/onrightclick.cpp:565 msgid "Move Segment" msgstr "Déplace Segment" -#: pcbnew/onrightclick.cpp:569 +#: pcbnew/onrightclick.cpp:568 msgid "Break Track" msgstr "Briser piste" -#: pcbnew/onrightclick.cpp:576 +#: pcbnew/onrightclick.cpp:575 msgid "Place Node" msgstr "Place noeud" -#: pcbnew/onrightclick.cpp:583 +#: pcbnew/onrightclick.cpp:582 msgid "End Track" msgstr "Terminer Piste" -#: pcbnew/onrightclick.cpp:586 +#: pcbnew/onrightclick.cpp:585 msgid "Place Via" msgstr "Place Via" -#: pcbnew/onrightclick.cpp:593 +#: pcbnew/onrightclick.cpp:592 msgid "Change Width" msgstr "Change Largeur" -#: pcbnew/onrightclick.cpp:595 +#: pcbnew/onrightclick.cpp:594 msgid "Edit Segment" msgstr "Edit Segment" -#: pcbnew/onrightclick.cpp:599 +#: pcbnew/onrightclick.cpp:598 msgid "Edit Track" msgstr "Editer Piste" -#: pcbnew/onrightclick.cpp:601 +#: pcbnew/onrightclick.cpp:600 msgid "Edit Net" msgstr "Edit Net" -#: pcbnew/onrightclick.cpp:603 +#: pcbnew/onrightclick.cpp:602 msgid "Edit ALL Tracks and Vias" msgstr "Editer TOUTES Pistes et Vias" -#: pcbnew/onrightclick.cpp:605 +#: pcbnew/onrightclick.cpp:604 msgid "Edit ALL Vias (no track)" msgstr "Editer TOUTES Vias (pas les pistes)" -#: pcbnew/onrightclick.cpp:607 +#: pcbnew/onrightclick.cpp:606 msgid "Edit ALL Tracks (no via)" msgstr "Editer TOUTES Pistes (pas les vias)" -#: pcbnew/onrightclick.cpp:614 +#: pcbnew/onrightclick.cpp:613 msgid "Delete Segment" msgstr "SupprimerSegment" -#: pcbnew/onrightclick.cpp:619 +#: pcbnew/onrightclick.cpp:618 msgid "Delete Track" msgstr "Effacer Piste" -#: pcbnew/onrightclick.cpp:623 +#: pcbnew/onrightclick.cpp:622 msgid "Delete Net" msgstr "Supprimer Net" -#: pcbnew/onrightclick.cpp:628 +#: pcbnew/onrightclick.cpp:627 msgid "Set Flags" msgstr "Ajust. Flags" -#: pcbnew/onrightclick.cpp:629 +#: pcbnew/onrightclick.cpp:628 msgid "Locked: Yes" msgstr "Verrou: Oui" -#: pcbnew/onrightclick.cpp:630 +#: pcbnew/onrightclick.cpp:629 msgid "Locked: No" msgstr "Verrou: Non" -#: pcbnew/onrightclick.cpp:640 +#: pcbnew/onrightclick.cpp:639 msgid "Track Locked: Yes" msgstr "Piste verrouillée: Oui" -#: pcbnew/onrightclick.cpp:641 +#: pcbnew/onrightclick.cpp:640 msgid "Track Locked: No" msgstr "Piste verrouillée: Non" -#: pcbnew/onrightclick.cpp:643 +#: pcbnew/onrightclick.cpp:642 msgid "Net Locked: Yes" msgstr "Net verrouillé: Oui" -#: pcbnew/onrightclick.cpp:644 +#: pcbnew/onrightclick.cpp:643 msgid "Net Locked: No" msgstr "Net verrouillé: Non" -#: pcbnew/onrightclick.cpp:666 -#: pcbnew/onrightclick.cpp:711 -#: pcbnew/onrightclick.cpp:749 -#: pcbnew/onrightclick.cpp:808 +#: pcbnew/onrightclick.cpp:665 +#: pcbnew/onrightclick.cpp:710 +#: pcbnew/onrightclick.cpp:748 +#: pcbnew/onrightclick.cpp:807 msgid "Move" msgstr "Move" -#: pcbnew/onrightclick.cpp:669 -#: pcbnew/onrightclick.cpp:751 +#: pcbnew/onrightclick.cpp:668 +#: pcbnew/onrightclick.cpp:750 msgid "Drag" msgstr "Drag" -#: pcbnew/onrightclick.cpp:673 +#: pcbnew/onrightclick.cpp:672 msgid "Rotate +" msgstr "Rotation +" -#: pcbnew/onrightclick.cpp:677 +#: pcbnew/onrightclick.cpp:676 #: eeschema/onrightclick.cpp:300 msgid "Rotate -" msgstr "Rotation -" -#: pcbnew/onrightclick.cpp:678 +#: pcbnew/onrightclick.cpp:677 msgid "Flip" msgstr "Change côté" -#: pcbnew/onrightclick.cpp:768 +#: pcbnew/onrightclick.cpp:767 msgid "delete" msgstr "Effacer" -#: pcbnew/onrightclick.cpp:775 +#: pcbnew/onrightclick.cpp:774 msgid "Autoroute Pad" msgstr "Autoroute Pad" -#: pcbnew/onrightclick.cpp:776 +#: pcbnew/onrightclick.cpp:775 msgid "Autoroute Net" msgstr "Autoroute Net" @@ -4571,26 +4669,62 @@ msgstr "Change Per msgid "Change Orient" msgstr "Change Orientation" -#: pcbnew/class_board.cpp:317 -msgid "Nodes" -msgstr "Nodes" +#: pcbnew/sel_layer.cpp:92 +msgid "Select Layer:" +msgstr "Selection couche:" -#: pcbnew/class_board.cpp:320 -msgid "Links" -msgstr "Liens" +#: pcbnew/sel_layer.cpp:137 +msgid "(Deselect)" +msgstr "(Deselection)" -#: pcbnew/class_board.cpp:323 -msgid "Nets" -msgstr "Nets" +#: pcbnew/sel_layer.cpp:238 +msgid "Less than two copper layers are being used." +msgstr "Il y a moins de 2 couches cuivre utilisées." -#: pcbnew/class_board.cpp:326 -msgid "Connect" -msgstr "Connect" +#: pcbnew/sel_layer.cpp:239 +msgid "Hence Layer Pairs cannot be specified." +msgstr "Donc les paires de couche ne peuvent pas être spécifiées" -#: pcbnew/class_board.cpp:329 -#: eeschema/eelayer.cpp:177 -msgid "NoConn" -msgstr "Non Conn" +#: pcbnew/sel_layer.cpp:263 +msgid "Select Layer Pair:" +msgstr "Selection paire de couches" + +#: pcbnew/sel_layer.cpp:294 +msgid "Top Layer" +msgstr "Couche Sup." + +#: pcbnew/sel_layer.cpp:299 +msgid "Bottom Layer" +msgstr "Couche Inf." + +#: pcbnew/sel_layer.cpp:358 +msgid "The Top Layer and Bottom Layer must differ" +msgstr "Les couches dessus et dessous doivent différer" + +#: pcbnew/editrack-part2.cpp:32 +#, c-format +msgid "Track Width: %s Vias Size : %s" +msgstr "Larg. piste: %s Diam Vias : %s" + +#: pcbnew/editrack-part2.cpp:135 +msgid "Drc error, cancelled" +msgstr "Erreur DRC, annulation" + +#: pcbnew/edit_track_width.cpp:85 +msgid "Change track width (entire NET) ?" +msgstr "Change largeur piste ( NET complet) ?" + +#: pcbnew/move_or_drag_track.cpp:709 +msgid "Unable to drag this segment: too many segments connected" +msgstr "Impossible de drag ce segment: trop de segments connectés" + +#: pcbnew/move_or_drag_track.cpp:762 +msgid "Unable to drag this segment: two collinear segments" +msgstr "Impossible de drag ce segment: 2 segments alignés" + +#: pcbnew/export_gencad.cpp:69 +msgid "GenCAD file:" +msgstr "Fichier GenCAD:" #: pcbnew/move-drag_pads.cpp:251 #, c-format @@ -4618,7 +4752,6 @@ msgstr "KeyW: " #: eeschema/dialog_edit_component_in_lib.cpp:166 #: eeschema/dialog_create_component.cpp:176 #: eeschema/dialog_edit_component_in_schematic.cpp:204 -#: eeschema/dialog_build_BOM.cpp:279 #: cvpcb/dialog_display_options.h:43 msgid "Options" msgstr "Options" @@ -4669,15 +4802,6 @@ msgstr "Messages:" msgid "DRC Report file" msgstr "Fichier rapport de contrôle DRC:" -#: pcbnew/editrack-part2.cpp:32 -#, c-format -msgid "Track Width: %s Vias Size : %s" -msgstr "Larg. piste: %s Diam Vias : %s" - -#: pcbnew/editrack-part2.cpp:135 -msgid "Drc error, cancelled" -msgstr "Erreur DRC, annulation" - #: pcbnew/cleaningoptions_dialog.cpp:146 msgid "Static" msgstr "Static" @@ -4702,101 +4826,6 @@ msgstr "Connection aux pads" msgid "Clean pcb" msgstr "Nettoyage PCB" -#: pcbnew/dialog_general_options.cpp:263 -#: gerbview/options.cpp:173 -msgid "No Display" -msgstr "Pas d'affichage" - -#: pcbnew/dialog_general_options.cpp:266 -#: gerbview/options.cpp:175 -msgid "Display Polar Coord" -msgstr "Affichage coord Polaires" - -#: pcbnew/dialog_general_options.cpp:273 -#: eeschema/dialog_options.cpp:248 -#: gerbview/options.cpp:185 -msgid "Units" -msgstr "Unités" - -#: pcbnew/dialog_general_options.cpp:278 -#: gerbview/options.cpp:191 -msgid "Small" -msgstr "Petit" - -#: pcbnew/dialog_general_options.cpp:279 -#: gerbview/options.cpp:191 -msgid "Big" -msgstr "Grand" - -#: pcbnew/dialog_general_options.cpp:281 -#: gerbview/options.cpp:192 -msgid "Cursor" -msgstr "Curseur" - -#: pcbnew/dialog_general_options.cpp:288 -msgid "Number of Layers:" -msgstr "Nombre de Couches:" - -#: pcbnew/dialog_general_options.cpp:295 -msgid "Max Links:" -msgstr "Liens max:" - -#: pcbnew/dialog_general_options.cpp:302 -msgid "Auto Save (minuts):" -msgstr "Sauveg. Auto (min)" - -#: pcbnew/dialog_general_options.cpp:312 -#: eeschema/netlist_control.cpp:94 -#: eeschema/dialog_cmp_graphic_properties.cpp:151 -#: share/dialog_print.cpp:167 -msgid "Options:" -msgstr "Options :" - -#: pcbnew/dialog_general_options.cpp:316 -msgid "Drc ON" -msgstr "Drc ACTIVE" - -#: pcbnew/dialog_general_options.cpp:321 -msgid "Show Ratsnest" -msgstr "Monter le chevelu général" - -#: pcbnew/dialog_general_options.cpp:325 -msgid "Show Mod Ratsnest" -msgstr "Monter le chevelu du module" - -#: pcbnew/dialog_general_options.cpp:329 -msgid "Tracks Auto Del" -msgstr "Auto Supp. Pistes" - -#: pcbnew/dialog_general_options.cpp:333 -msgid "Track 45 Only" -msgstr "Pistes 45 seulement" - -#: pcbnew/dialog_general_options.cpp:337 -msgid "Segments 45 Only" -msgstr "Segments 45 seulement" - -#: pcbnew/dialog_general_options.cpp:341 -#: eeschema/dialog_options.cpp:239 -msgid "Auto PAN" -msgstr "Auto PAN" - -#: pcbnew/dialog_general_options.cpp:346 -msgid "Double Segm Track" -msgstr "2 segments pour piste" - -#: pcbnew/dialog_general_options.cpp:353 -msgid "When creating tracks" -msgstr "En creation de pistes" - -#: pcbnew/dialog_general_options.cpp:356 -msgid "Magnetic Pads" -msgstr " Pads magnétiques" - -#: pcbnew/dialog_general_options.cpp:358 -msgid "control the capture of the pcb cursor when the mouse cursor enters a pad area" -msgstr "Controle la capture du curseur pcb quand le curseuir souris est sur le pad" - #: eeschema/annotate.cpp:181 msgid "Previous Annotation will be deleted. Continue ?" msgstr "La numérotation existante va être détruite, continuer?" @@ -4896,86 +4925,43 @@ msgstr "Ajout Composant" msgid "Add Power" msgstr "Add Alims" -#: eeschema/erc.cpp:301 -msgid "Annotation Required!" -msgstr "Numérotation requise!" +#: eeschema/netlist.cpp:157 +#: eeschema/netlist.cpp:191 +#: eeschema/dialog_build_BOM.cpp:268 +msgid "List" +msgstr "Liste" -#: eeschema/erc.cpp:403 -msgid "ERC file:" -msgstr "Fichier ERC:" +#: eeschema/netlist.cpp:179 +msgid "No component" +msgstr "Pas de composants" -#: eeschema/erc.cpp:556 -#, c-format -msgid "Warning GLabel %s not connected to SheetLabel" -msgstr "Warning GLabel %s non connecté a SheetLabel" +#: eeschema/netlist.cpp:200 +#: eeschema/netlist.cpp:305 +#: eeschema/netlist.cpp:343 +#: eeschema/netlist.cpp:364 +#: eeschema/netlist.cpp:379 +msgid "Done" +msgstr "Fini" -#: eeschema/erc.cpp:560 -#, c-format -msgid "Warning SheetLabel %s not connected to GLabel" -msgstr "Warning SheetLabel %s non connecté a GLabel" +#: eeschema/netlist.cpp:203 +msgid "NbItems" +msgstr "NbItems" -#: eeschema/erc.cpp:574 -#, c-format -msgid "Warning Pin %s Unconnected" -msgstr "Warning Pin %s Non connectée" +#: eeschema/netlist.cpp:310 +msgid "Labels" +msgstr "Labels" -#: eeschema/erc.cpp:583 -#, c-format -msgid "Warning Pin %s not driven (Net %d)" -msgstr "Warning Pin %s non pilotée (Net %d)" +#: eeschema/netlist.cpp:346 +msgid "Hierar." +msgstr "Hiérar." -#: eeschema/erc.cpp:593 -msgid "Warning More than 1 Pin connected to UnConnect symbol" -msgstr "Warning: plus que 1 Pin connectée a un symbole de non connexion" +#: eeschema/netlist.cpp:367 +msgid "Sorting" +msgstr "Tri" -#: eeschema/erc.cpp:603 -#: common/confirm.cpp:79 -msgid "Warning" -msgstr "Avertissement" - -#: eeschema/erc.cpp:606 -#: common/confirm.cpp:82 -msgid "Error" -msgstr "Erreur" - -#: eeschema/erc.cpp:612 -#, c-format -msgid "%s: Pin %s connected to Pin %s (net %d)" -msgstr "%s: Pin %s connectée a Pin %s (net %d)" - -#: eeschema/erc.cpp:729 -msgid "ERC control" -msgstr "Controle ERC" - -#: eeschema/erc.cpp:739 -#, c-format -msgid "" -"\n" -"***** Sheet %d (%s)\n" -msgstr "" -"\n" -"***** feuille %d (%s)\n" - -#: eeschema/erc.cpp:741 -#: eeschema/genliste.cpp:616 -#: eeschema/hierarch.cpp:134 -#: eeschema/dialog_build_BOM.cpp:1009 -msgid "Root" -msgstr "Racine" - -#: eeschema/erc.cpp:757 -#, c-format -msgid "ERC: %s (X= %2.3f inches, Y= %2.3f inches\n" -msgstr "ERC: %s (X= %2.3f pouces, Y= %2.3f pouces\n" - -#: eeschema/erc.cpp:766 -#, c-format -msgid "" -"\n" -" >> Errors ERC: %d\n" -msgstr "" -"\n" -" >> Erreurs ERC: %d\n" +#: eeschema/netlist.cpp:808 +msgid "Bad Bus Label: " +msgstr "Mauvais label de Bus: " #: eeschema/symbtext.cpp:130 msgid " Text : " @@ -5222,12 +5208,6 @@ msgstr "Forme Pin de hi msgid "No New Global Label found" msgstr "Pas de nouveau Global Label trouvé" -#: eeschema/netform.cpp:55 -#: eeschema/netform.cpp:254 -#: eeschema/save_schemas.cpp:94 -msgid "Failed to create file " -msgstr "Impossible de créer le fichier " - #: eeschema/dialog_options.cpp:140 #: eeschema/dialog_options.cpp:288 msgid "Delta Step X" @@ -5515,7 +5495,6 @@ msgid "&Del Markers" msgstr "&Supprimer Marqueurs" #: eeschema/dialog_erc.cpp:218 -#: eeschema/dialog_build_BOM.cpp:336 msgid "&Quit" msgstr "&Quitter" @@ -5527,133 +5506,85 @@ msgstr "erc" msgid "Reset" msgstr "Défaut" -#: eeschema/genliste.cpp:101 -#: eeschema/dialog_build_BOM.h:58 -msgid "List of Material" -msgstr "Liste du Matériel" +#: eeschema/erc.cpp:301 +msgid "Annotation Required!" +msgstr "Numérotation requise!" -#: eeschema/genliste.cpp:123 -msgid " List items: " -msgstr " Liste éléments: " +#: eeschema/erc.cpp:403 +msgid "ERC file:" +msgstr "Fichier ERC:" -#: eeschema/genliste.cpp:126 -#: eeschema/dialog_build_BOM.cpp:244 -msgid "Components by Reference" -msgstr "Composants par référence" - -#: eeschema/genliste.cpp:129 -#: eeschema/dialog_build_BOM.cpp:252 -msgid "Components by Value" -msgstr "Composants par valeur" - -#: eeschema/genliste.cpp:132 -#: eeschema/dialog_build_BOM.cpp:248 -msgid "Sub Components (i.e U2A, U2B..)" -msgstr "Sous Composants (i.e U2A, U2B..)" - -#: eeschema/genliste.cpp:135 -#: eeschema/dialog_build_BOM.cpp:256 -msgid "Hierachy Pins by name" -msgstr "Pins de hierarchie par nom" - -#: eeschema/genliste.cpp:138 -#: eeschema/dialog_build_BOM.cpp:260 -msgid "Hierachy Pins by Sheets" -msgstr "Pins de hiérarchie par feuilles" - -#: eeschema/genliste.cpp:144 -#: eeschema/dialog_build_BOM.cpp:331 -msgid "&Create List" -msgstr "&Créer Liste" - -#: eeschema/genliste.cpp:149 -#: 3d-viewer/3d_toolbar.cpp:116 -msgid "&Exit" -msgstr "&Quitter" - -#: eeschema/genliste.cpp:172 -msgid "List of material:" -msgstr "Liste du Matériel:" - -#: eeschema/genliste.cpp:214 -#: eeschema/dialog_build_BOM.cpp:481 -#: eeschema/dialog_build_BOM.cpp:533 -msgid "Failed to open file " -msgstr "Erreur ouverture " - -#: eeschema/genliste.cpp:277 -msgid "" -"\n" -"#Glob labels ( order = Sheet Number )\n" -msgstr "" -"\n" -"#Glob labels ( ordre = Numéro de feuille )\n" - -#: eeschema/genliste.cpp:287 -msgid "" -"\n" -"#Glob labels ( order = Alphab. )\n" -msgstr "" -"\n" -"#Glob labels ( ordre = Alphab. )\n" - -#: eeschema/genliste.cpp:294 -#: eeschema/dialog_build_BOM.cpp:614 -msgid "" -"\n" -"#End List\n" -msgstr "" -"\n" -"#End List\n" - -#: eeschema/genliste.cpp:584 -#: eeschema/dialog_build_BOM.cpp:974 -msgid "" -"\n" -"#Cmp ( order = Reference )" -msgstr "" -"\n" -"#Cmp ( ordre = Reference )" - -#: eeschema/genliste.cpp:585 -#: eeschema/genliste.cpp:640 -#: eeschema/dialog_build_BOM.cpp:975 -#: eeschema/dialog_build_BOM.cpp:1041 -msgid " (with SubCmp)" -msgstr "avec sub-composants" - -#: eeschema/genliste.cpp:623 -#: eeschema/genliste.cpp:672 -#: eeschema/dialog_build_BOM.cpp:1023 -#: eeschema/dialog_build_BOM.cpp:1075 -msgid "#End Cmp\n" -msgstr "#End Cmp\n" - -#: eeschema/genliste.cpp:639 -#: eeschema/dialog_build_BOM.cpp:1040 -msgid "" -"\n" -"#Cmp ( order = Value )" -msgstr "" -"\n" -"#Cmp ( ordre = Valeur )" - -#: eeschema/genliste.cpp:697 -#: eeschema/dialog_build_BOM.cpp:1100 +#: eeschema/erc.cpp:556 #, c-format -msgid "> %-28.28s Global (Sheet %.2d) pos: %3.3f, %3.3f\n" -msgstr "> %-28.28s Global (feuille %.2d) pos: %3.3f, %3.3f\n" +msgid "Warning GLabel %s not connected to SheetLabel" +msgstr "Warning GLabel %s non connecté a SheetLabel" -#: eeschema/genliste.cpp:713 -#: eeschema/dialog_build_BOM.cpp:1116 +#: eeschema/erc.cpp:560 #, c-format -msgid "> %-28.28s Sheet %-7.7s (Sheet %.2d) pos: %3.3f, %3.3f\n" -msgstr "> %-28.28s Sheet %-7.7s (feuille %.2d) pos: %3.3f, %3.3f\n" +msgid "Warning SheetLabel %s not connected to GLabel" +msgstr "Warning SheetLabel %s non connecté a GLabel" -#: eeschema/genliste.cpp:726 -#: eeschema/dialog_build_BOM.cpp:1129 -msgid "#End labels\n" -msgstr "#End labels\n" +#: eeschema/erc.cpp:574 +#, c-format +msgid "Warning Pin %s Unconnected" +msgstr "Warning Pin %s Non connectée" + +#: eeschema/erc.cpp:583 +#, c-format +msgid "Warning Pin %s not driven (Net %d)" +msgstr "Warning Pin %s non pilotée (Net %d)" + +#: eeschema/erc.cpp:593 +msgid "Warning More than 1 Pin connected to UnConnect symbol" +msgstr "Warning: plus que 1 Pin connectée a un symbole de non connexion" + +#: eeschema/erc.cpp:603 +#: common/confirm.cpp:79 +msgid "Warning" +msgstr "Avertissement" + +#: eeschema/erc.cpp:606 +#: common/confirm.cpp:82 +msgid "Error" +msgstr "Erreur" + +#: eeschema/erc.cpp:612 +#, c-format +msgid "%s: Pin %s connected to Pin %s (net %d)" +msgstr "%s: Pin %s connectée a Pin %s (net %d)" + +#: eeschema/erc.cpp:729 +msgid "ERC control" +msgstr "Controle ERC" + +#: eeschema/erc.cpp:739 +#, c-format +msgid "" +"\n" +"***** Sheet %d (%s)\n" +msgstr "" +"\n" +"***** feuille %d (%s)\n" + +#: eeschema/erc.cpp:741 +#: eeschema/hierarch.cpp:134 +#: eeschema/dialog_build_BOM.cpp:1174 +msgid "Root" +msgstr "Racine" + +#: eeschema/erc.cpp:757 +#, c-format +msgid "ERC: %s (X= %2.3f inches, Y= %2.3f inches\n" +msgstr "ERC: %s (X= %2.3f pouces, Y= %2.3f pouces\n" + +#: eeschema/erc.cpp:766 +#, c-format +msgid "" +"\n" +" >> Errors ERC: %d\n" +msgstr "" +"\n" +" >> Erreurs ERC: %d\n" #: eeschema/find.cpp:220 msgid "Pin " @@ -6194,6 +6125,12 @@ msgstr "Taille " msgid "Schematic files:" msgstr "Fichiers schématiques:" +#: eeschema/save_schemas.cpp:94 +#: eeschema/netform.cpp:55 +#: eeschema/netform.cpp:254 +msgid "Failed to create file " +msgstr "Impossible de créer le fichier " + #: eeschema/save_schemas.cpp:99 msgid "Save file " msgstr "Sauver fichier " @@ -6893,44 +6830,6 @@ msgstr "Fond Plein" msgid "Fill:" msgstr "Remplissage:" -#: eeschema/netlist.cpp:157 -#: eeschema/netlist.cpp:191 -#: eeschema/dialog_build_BOM.cpp:265 -msgid "List" -msgstr "Liste" - -#: eeschema/netlist.cpp:179 -msgid "No component" -msgstr "Pas de composants" - -#: eeschema/netlist.cpp:200 -#: eeschema/netlist.cpp:305 -#: eeschema/netlist.cpp:343 -#: eeschema/netlist.cpp:364 -#: eeschema/netlist.cpp:379 -msgid "Done" -msgstr "Fini" - -#: eeschema/netlist.cpp:203 -msgid "NbItems" -msgstr "NbItems" - -#: eeschema/netlist.cpp:310 -msgid "Labels" -msgstr "Labels" - -#: eeschema/netlist.cpp:346 -msgid "Hierar." -msgstr "Hiérar." - -#: eeschema/netlist.cpp:367 -msgid "Sorting" -msgstr "Tri" - -#: eeschema/netlist.cpp:808 -msgid "Bad Bus Label: " -msgstr "Mauvais label de Bus: " - #: eeschema/files-io.cpp:57 msgid "Clear SubHierarchy ?" msgstr "Supprimer la sous hiérarchie?" @@ -7136,109 +7035,6 @@ msgstr "Emetteur ouv." msgid "Electrical Type:" msgstr "Type électrique:" -#: eeschema/dialog_build_BOM.cpp:240 -msgid "List items : " -msgstr "Liste éléments:" - -#: eeschema/dialog_build_BOM.cpp:266 -msgid "Text for spreadsheet import" -msgstr "Texte pour import dans tableur:" - -#: eeschema/dialog_build_BOM.cpp:267 -msgid "Output format:" -msgstr "Format de sortie" - -#: eeschema/dialog_build_BOM.cpp:272 -msgid "Tab" -msgstr "Tab" - -#: eeschema/dialog_build_BOM.cpp:273 -msgid ";" -msgstr ";" - -#: eeschema/dialog_build_BOM.cpp:274 -msgid "," -msgstr "," - -#: eeschema/dialog_build_BOM.cpp:275 -msgid "Field separator for spreadsheet import:" -msgstr "Separateur de champ pour import dans tableu:" - -#: eeschema/dialog_build_BOM.cpp:283 -msgid "Launch list browser" -msgstr "Lancer le visualisateur de liste" - -#: eeschema/dialog_build_BOM.cpp:290 -msgid "Fields to Add" -msgstr "Champ à ajouterr" - -#: eeschema/dialog_build_BOM.cpp:294 -msgid "Add Field 1" -msgstr "Ajouter Champ 1" - -#: eeschema/dialog_build_BOM.cpp:298 -msgid "Add Field 2" -msgstr "Ajouter Champ 2" - -#: eeschema/dialog_build_BOM.cpp:302 -msgid "Add Field 3" -msgstr "Ajouter Champ 3" - -#: eeschema/dialog_build_BOM.cpp:306 -msgid "Add Field 4" -msgstr "Ajouter Champ 4" - -#: eeschema/dialog_build_BOM.cpp:310 -msgid "Add Field 5" -msgstr "Ajouter Champ 5" - -#: eeschema/dialog_build_BOM.cpp:314 -msgid "Add Field 6" -msgstr "Ajouter Champ 6" - -#: eeschema/dialog_build_BOM.cpp:318 -msgid "Add Field 7" -msgstr "Ajouter Champ 7" - -#: eeschema/dialog_build_BOM.cpp:322 -msgid "Add Field 8" -msgstr "Ajouter Champ 8" - -#: eeschema/dialog_build_BOM.cpp:437 -msgid "Bill of material:" -msgstr "Liste du materiel:" - -#: eeschema/dialog_build_BOM.cpp:597 -#, c-format -msgid "" -"\n" -"#Glob labels ( order = Sheet Number ) count = %d\n" -msgstr "" -"\n" -"#Glob labels ( ordre = Numéro de feuiller ) nombre = %d\n" - -#: eeschema/dialog_build_BOM.cpp:607 -#, c-format -msgid "" -"\n" -"#Glob labels ( order = Alphab. ) count = %d\n" -"\n" -msgstr "" -"\n" -"#Glob labels ( ordre = Alphab. ) nombre = %d\n" - -#: eeschema/dialog_build_BOM.cpp:967 -#: eeschema/component_class.cpp:58 -#: eeschema/component_class.cpp:59 -#: eeschema/component_class.cpp:60 -#: eeschema/component_class.cpp:61 -#: eeschema/component_class.cpp:62 -#: eeschema/component_class.cpp:63 -#: eeschema/component_class.cpp:64 -#: eeschema/component_class.cpp:65 -msgid "Field" -msgstr "Champ" - #: eeschema/lib_export.cpp:39 msgid "Import part:" msgstr "Importer composant" @@ -7423,6 +7219,18 @@ msgstr "Effacement Bloc (shift+ctrl + drag mouse)" msgid "Library browser" msgstr "Visualisateur des librairies" +#: eeschema/component_class.cpp:58 +#: eeschema/component_class.cpp:59 +#: eeschema/component_class.cpp:60 +#: eeschema/component_class.cpp:61 +#: eeschema/component_class.cpp:62 +#: eeschema/component_class.cpp:63 +#: eeschema/component_class.cpp:64 +#: eeschema/component_class.cpp:65 +#: eeschema/dialog_build_BOM.cpp:1118 +msgid "Field" +msgstr "Champ" + #: eeschema/onrightclick.cpp:142 msgid "Leave Sheet" msgstr "Quitter sous-feuille" @@ -7840,6 +7648,178 @@ msgstr "R msgid "Value needed !, No change" msgstr "Valeur NECESSAIRE: changement refusé" +#: eeschema/dialog_build_BOM.cpp:243 +msgid "List items:" +msgstr " Liste éléments: " + +#: eeschema/dialog_build_BOM.cpp:247 +msgid "Components by Reference" +msgstr "Composants par référence" + +#: eeschema/dialog_build_BOM.cpp:251 +msgid "Sub Components (i.e. U2A, U2B ...)" +msgstr "Sous Composants (i.e U2A, U2B...)" + +#: eeschema/dialog_build_BOM.cpp:255 +msgid "Components by Value" +msgstr "Composants par valeur" + +#: eeschema/dialog_build_BOM.cpp:259 +msgid "Hierachy Pins by Name" +msgstr "Pins de hierarchie par Nom" + +#: eeschema/dialog_build_BOM.cpp:263 +msgid "Hierachy Pins by Sheets" +msgstr "Pins de hiérarchie par feuilles" + +#: eeschema/dialog_build_BOM.cpp:269 +msgid "Text for spreadsheet import" +msgstr "Texte pour import dans tableur:" + +#: eeschema/dialog_build_BOM.cpp:270 +msgid "Output format:" +msgstr "Format de sortie" + +#: eeschema/dialog_build_BOM.cpp:275 +msgid "Tab" +msgstr "Tab" + +#: eeschema/dialog_build_BOM.cpp:276 +msgid ";" +msgstr ";" + +#: eeschema/dialog_build_BOM.cpp:277 +msgid "," +msgstr "," + +#: eeschema/dialog_build_BOM.cpp:278 +msgid "Field separator for spreadsheet import:" +msgstr "Separateur de champ pour import dans tableu:" + +#: eeschema/dialog_build_BOM.cpp:286 +msgid "Launch list browser" +msgstr "Lancer le visualisateur de liste" + +#: eeschema/dialog_build_BOM.cpp:293 +msgid "Fields to add:" +msgstr "Champ à ajouter:" + +#: eeschema/dialog_build_BOM.cpp:297 +msgid "Add Field 1" +msgstr "Ajouter Champ 1" + +#: eeschema/dialog_build_BOM.cpp:301 +msgid "Add Field 2" +msgstr "Ajouter Champ 2" + +#: eeschema/dialog_build_BOM.cpp:305 +msgid "Add Field 3" +msgstr "Ajouter Champ 3" + +#: eeschema/dialog_build_BOM.cpp:309 +msgid "Add Field 4" +msgstr "Ajouter Champ 4" + +#: eeschema/dialog_build_BOM.cpp:313 +msgid "Add Field 5" +msgstr "Ajouter Champ 5" + +#: eeschema/dialog_build_BOM.cpp:317 +msgid "Add Field 6" +msgstr "Ajouter Champ 6" + +#: eeschema/dialog_build_BOM.cpp:321 +msgid "Add Field 7" +msgstr "Ajouter Champ 7" + +#: eeschema/dialog_build_BOM.cpp:325 +msgid "Add Field 8" +msgstr "Ajouter Champ 8" + +#: eeschema/dialog_build_BOM.cpp:331 +msgid "Create &List" +msgstr "Créer &Liste" + +#: eeschema/dialog_build_BOM.cpp:347 +msgid "&Apply" +msgstr "&Appliquer" + +#: eeschema/dialog_build_BOM.cpp:552 +msgid "Bill of material:" +msgstr "Liste du materiel:" + +#: eeschema/dialog_build_BOM.cpp:602 +#: eeschema/dialog_build_BOM.cpp:658 +msgid "Failed to open file " +msgstr "Erreur ouverture " + +#: eeschema/dialog_build_BOM.cpp:730 +#, c-format +msgid "" +"\n" +"#Glob labels ( order = Sheet Number ) count = %d\n" +msgstr "" +"\n" +"#Glob labels ( ordre = Numéro de feuiller ) nombre = %d\n" + +#: eeschema/dialog_build_BOM.cpp:741 +#, c-format +msgid "" +"\n" +"#Glob labels ( order = Alphab. ) count = %d\n" +"\n" +msgstr "" +"\n" +"#Glob labels ( ordre = Alphab. ) nombre = %d\n" + +#: eeschema/dialog_build_BOM.cpp:748 +msgid "" +"\n" +"#End List\n" +msgstr "" +"\n" +"#End List\n" + +#: eeschema/dialog_build_BOM.cpp:1126 +msgid "" +"\n" +"#Cmp ( order = Reference )" +msgstr "" +"\n" +"#Cmp ( ordre = Reference )" + +#: eeschema/dialog_build_BOM.cpp:1129 +#: eeschema/dialog_build_BOM.cpp:1209 +msgid " (with SubCmp)" +msgstr "avec sub-composants" + +#: eeschema/dialog_build_BOM.cpp:1189 +#: eeschema/dialog_build_BOM.cpp:1250 +msgid "#End Cmp\n" +msgstr "#End Cmp\n" + +#: eeschema/dialog_build_BOM.cpp:1206 +msgid "" +"\n" +"#Cmp ( order = Value )" +msgstr "" +"\n" +"#Cmp ( ordre = Valeur )" + +#: eeschema/dialog_build_BOM.cpp:1275 +#, c-format +msgid "> %-28.28s Global (Sheet %.2d) pos: %3.3f, %3.3f\n" +msgstr "> %-28.28s Global (feuille %.2d) pos: %3.3f, %3.3f\n" + +#: eeschema/dialog_build_BOM.cpp:1294 +#, c-format +msgid "> %-28.28s Sheet %-7.7s (Sheet %.2d) pos: %3.3f, %3.3f\n" +msgstr "> %-28.28s Sheet %-7.7s (feuille %.2d) pos: %3.3f, %3.3f\n" + +#: eeschema/dialog_build_BOM.cpp:1308 +msgid "#End labels\n" +msgstr "#End labels\n" + #: eeschema/annotate_dialog.cpp:122 msgid "Hierarchy" msgstr "Hiérarchie" @@ -8662,35 +8642,14 @@ msgstr "Commande <%c%c> ignor msgid "Too many include files!!" msgstr "Trop de fichiers inclus!!" -#: gerbview/affiche.cpp:34 -#: gerbview/tool_gerber.cpp:311 -msgid "Layer " -msgstr "Couche " - -#: gerbview/affiche.cpp:96 -msgid "Tool" -msgstr "Outils" - -#: gerbview/affiche.cpp:101 -msgid "D CODE" -msgstr "D CODE" - -#: gerbview/affiche.cpp:103 -msgid "D type" -msgstr "D type" - -#: gerbview/affiche.cpp:104 -msgid "????" -msgstr "????" +#: gerbview/block.cpp:267 +msgid "Ok to delete block ?" +msgstr "Ok pour effacer le bloc" #: gerbview/edit.cpp:246 msgid "No layer selected" msgstr "Pas de couche sélectionnée" -#: gerbview/block.cpp:267 -msgid "Ok to delete block ?" -msgstr "Ok pour effacer le bloc" - #: gerbview/initpcb.cpp:34 msgid "Current Data will be lost ?" msgstr "Les données courante seront perdues ?" @@ -8712,6 +8671,37 @@ msgstr "Gerbview: Couleur des couches" msgid "List D codes" msgstr "Liste D-Codes" +#: gerbview/readgerb.cpp:247 +#, c-format +msgid "%d errors while reading Gerber file [%s]" +msgstr "%d erreurs pendant lecture fichier gerber [%s]" + +#: gerbview/readgerb.cpp:265 +#: gerbview/files.cpp:183 +msgid "D codes files:" +msgstr "Fichiers D-Codes:" + +#: gerbview/affiche.cpp:34 +#: gerbview/tool_gerber.cpp:311 +msgid "Layer " +msgstr "Couche " + +#: gerbview/affiche.cpp:96 +msgid "Tool" +msgstr "Outils" + +#: gerbview/affiche.cpp:101 +msgid "D CODE" +msgstr "D CODE" + +#: gerbview/affiche.cpp:103 +msgid "D type" +msgstr "D type" + +#: gerbview/affiche.cpp:104 +msgid "????" +msgstr "????" + #: gerbview/options.cpp:147 msgid "Gerbview Options" msgstr "Gerbview Options " @@ -8761,11 +8751,6 @@ msgstr "non encore disponible" msgid "Gerber files:" msgstr "Fichiers Gerber:" -#: gerbview/files.cpp:183 -#: gerbview/readgerb.cpp:265 -msgid "D codes files:" -msgstr "Fichiers D-Codes:" - #: gerbview/onrightclick.cpp:55 msgid "Copy Block (shift mouse)" msgstr "Copie Bloc (shift mouse)" @@ -8787,11 +8772,6 @@ msgstr "Couche modifi msgid "Save config file" msgstr "Sauver config" -#: gerbview/readgerb.cpp:247 -#, c-format -msgid "%d errors while reading Gerber file [%s]" -msgstr "%d erreurs pendant lecture fichier gerber [%s]" - #: gerbview/select_layers_to_pcb.cpp:80 msgid "Layer selection:" msgstr "Sélection couche:" @@ -9489,6 +9469,10 @@ msgstr "Cr msgid "Create Image (jpeg format)" msgstr "Créer fichier Image (format jpeg)" +#: 3d-viewer/3d_toolbar.cpp:116 +msgid "&Exit" +msgstr "&Quitter" + #: 3d-viewer/3d_toolbar.cpp:122 msgid "Choose background color" msgstr "Choix Couleur du fond" @@ -9897,6 +9881,10 @@ msgstr "Num msgid "EESchema Locate" msgstr "Recherche" +#: eeschema/dialog_build_BOM.h:60 +msgid "List of Material" +msgstr "Liste du Matériel" + #: eeschema/sheet.h:43 msgid "Sheet properties" msgstr "Propriétés de la feuille" diff --git a/pcbnew/class_board_item.cpp b/pcbnew/class_board_item.cpp index 30d5d157a4..cc9b0f6b1a 100644 --- a/pcbnew/class_board_item.cpp +++ b/pcbnew/class_board_item.cpp @@ -49,9 +49,9 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const if ( (pad->m_Masque_Layer & ALL_CU_LAYERS) == ALL_CU_LAYERS ) text << _("all copper layers"); else if( (pad->m_Masque_Layer & CUIVRE_LAYER) == CUIVRE_LAYER ) - text << _("copper layers"); + text << _("copper layer"); else if( (pad->m_Masque_Layer & CMP_LAYER) == CMP_LAYER ) - text << _("cmp layers"); + text << _("cmp layer"); else text << _("???"); text << _( ") of " ) << ( (MODULE*) GetParent() )->GetReference(); break; diff --git a/pcbnew/class_track.h b/pcbnew/class_track.h index 4dbc75154c..fd6d8a2dd7 100644 --- a/pcbnew/class_track.h +++ b/pcbnew/class_track.h @@ -7,41 +7,43 @@ #include "base_struct.h" -/* Type des Vias (shape)*/ -/* Forme des Vias ( parametre .shape ) */ -#define VIA_NORMALE 3 /* type via : traversante (throught via) */ -#define VIA_ENTERREE 2 /* type via : enterree ou aveugle (blind via) */ -#define VIA_BORGNE 1 /* type via : borgne ou demi-traversante (buried via) */ -#define VIA_NOT_DEFINED 0 /* reserved */ -#define SQUARE_VIA 0x80000000 /* Flag pour forme carree */ +// Via attributes (m_Shape parmeter) +#define THROUGH_VIA 3 /* Always a through hole via */ +#define BURIED_VIA 2 /* this via can be on internal layers */ +#define BLIND_VIA 1 /* this via which connect from internal layers to an external layer */ +#define NOT_DEFINED_VIA 0 /* reserved (unused) */ +#define SQUARE_VIA_SHAPE 0x80000000 /* Flag pour forme carree */ +#define VIA_NORMALE THROUGH_VIA +#define VIA_ENTERREE BURIED_VIA +#define VIA_BORGNE BLIND_VIA /***/ class TRACK : public BOARD_ITEM { public: - int m_Width; // 0 = line, > 0 = tracks, bus ... - wxPoint m_Start; // Line start point - wxPoint m_End; // Line end point - - int m_Shape; // vias: shape and type, Track = shape.. - int m_Drill; // for vias: via drill (- 1 for default value) - - BOARD_ITEM* start; // pointers to a connected item (pad or track) - BOARD_ITEM* end; - - // chain = 0 indique une connexion non encore traitee - int m_Param; // Auxiliary variable ( used in some computations ) + int m_Width; // 0 = line, > 0 = tracks, bus ... + wxPoint m_Start; // Line start point + wxPoint m_End; // Line end point -protected: - int m_NetCode; // Net number - int m_Sous_Netcode; /* In rastnest routines : for the current net, + int m_Shape; // vias: shape and type, Track = shape.. + int m_Drill; // for vias: via drill (- 1 for default value) + + BOARD_ITEM* start; // pointers to a connected item (pad or track) + BOARD_ITEM* end; + + // chain = 0 indique une connexion non encore traitee + int m_Param; // Auxiliary variable ( used in some computations ) + +protected: + int m_NetCode; // Net number + int m_Sous_Netcode; /* In rastnest routines : for the current net, * block number (number common to the current connected items found) */ TRACK( const TRACK& track ); // protected so Copy() is used instead. - + public: TRACK( BOARD_ITEM* StructFather, KICAD_T idtype = TYPETRACK ); @@ -49,14 +51,14 @@ public: * Function Copy * will copy this object whether it is a TRACK or a SEGVIA returning * the corresponding type. - * @return - TRACK*, SEGVIA*, or SEGZONE*, declared as the least common + * @return - TRACK*, SEGVIA*, or SEGZONE*, declared as the least common * demoninator: TRACK */ - TRACK* Copy() const; + TRACK* Copy() const; - TRACK* Next() const { return (TRACK*) Pnext; } + TRACK* Next() const { return (TRACK*) Pnext; } - TRACK* Back() const { return (TRACK*) Pback; } + TRACK* Back() const { return (TRACK*) Pback; } /* supprime du chainage la structure Struct */ @@ -80,8 +82,8 @@ public: TRACK* GetBestInsertPoint( BOARD* Pcb ); /* Copie d'un Element d'une chaine de n elements - TRACK* CopyList( int NbSegm = 1 ) const; - */ + * TRACK* CopyList( int NbSegm = 1 ) const; + */ /* Recherche du debut du net * ( les elements sont classes par net_code croissant ) */ @@ -105,15 +107,15 @@ public: int GetSubNet() const { return m_Sous_Netcode; } void SetSubNet( int aSubNetCode ) { m_Sous_Netcode = aSubNetCode; } - + /** * Function GetLength * returns the length of the track using the hypotenuse calculation. * @return double - the length of the track */ - double GetLength() const; - - + double GetLength() const; + + /* Display on screen: */ void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode ); @@ -122,57 +124,57 @@ public: /** * Function ReturnMaskLayer - * returns a "layer mask", which is a bitmap of all layers on which the + * returns a "layer mask", which is a bitmap of all layers on which the * TRACK segment or SEGVIA physically resides. * @return int - a layer mask, see pcbstruct.h's CUIVRE_LAYER, etc. */ - int ReturnMaskLayer(); - - int IsPointOnEnds( const wxPoint& point, int min_dist = 0 ); - - bool IsNull(); // return TRUE if segment lenght = 0 + int ReturnMaskLayer(); + + int IsPointOnEnds( const wxPoint& point, int min_dist = 0 ); + + bool IsNull(); // return TRUE if segment lenght = 0 + - /** * Function Display_Infos * has knowledge about the frame and how and where to put status information * about this object into the frame's message panel. * Is virtual from EDA_BaseStruct. * @param frame A WinEDA_DrawFrame in which to print status information. - */ - void Display_Infos( WinEDA_DrawFrame* frame ); + */ + void Display_Infos( WinEDA_DrawFrame* frame ); + - /** * Function ShowWidth * returns the width of the track in displayable user units. */ - wxString ShowWidth(); - + wxString ShowWidth(); + /** * Function Visit * is re-implemented here because TRACKs and SEGVIAs are in the same list * within BOARD. If that were not true, then we could inherit the * version from EDA_BaseStruct. This one does not iterate through scanTypes - * but only looks at the first item in the list. + * but only looks at the first item in the list. * @param inspector An INSPECTOR instance to use in the inspection. * @param testData Arbitrary data used by the inspector. - * @param scanTypes Which KICAD_T types are of interest and the order + * @param scanTypes Which KICAD_T types are of interest and the order * is significant too, terminated by EOT. * @return SEARCH_RESULT - SEARCH_QUIT if the Iterator is to stop the scan, * else SCAN_CONTINUE, and determined by the inspector. */ - SEARCH_RESULT Visit( INSPECTOR* inspector, const void* testData, - const KICAD_T scanTypes[] ); - - + SEARCH_RESULT Visit( INSPECTOR* inspector, const void* testData, + const KICAD_T scanTypes[] ); + + /** * Function HitTest * tests if the given wxPoint is within the bounds of this object. * @param refPos A wxPoint to test * @return bool - true if a hit, else false */ - bool HitTest( const wxPoint& refPos ); + bool HitTest( const wxPoint& refPos ); /** * Function GetClass @@ -181,20 +183,22 @@ public: */ wxString GetClass() const { - return wxT("TRACK"); + return wxT( "TRACK" ); } - - -#if defined(DEBUG) + + +#if defined (DEBUG) + /** * Function Show * is used to output the object tree, currently for debugging only. - * @param nestLevel An aid to prettier tree indenting, and is the level + * @param nestLevel An aid to prettier tree indenting, and is the level * of nesting of this object within the overall tree. * @param os The ostream& to output to. */ void Show( int nestLevel, std::ostream& os ); -#endif + +#endif }; @@ -202,7 +206,7 @@ class SEGZONE : public TRACK { public: SEGZONE( BOARD_ITEM* StructFather ); - + /** * Function GetClass * returns the class name. @@ -210,11 +214,11 @@ public: */ wxString GetClass() const { - return wxT("ZONE"); + return wxT( "ZONE" ); } - - SEGZONE* Next() const { return (SEGZONE*) Pnext; } + + SEGZONE* Next() const { return (SEGZONE*) Pnext; } }; @@ -227,21 +231,21 @@ public: TRACK( source ) { } - - + + /** * Function IsOnLayer - * tests to see if this object is on the given layer. Is virtual + * tests to see if this object is on the given layer. Is virtual * from BOARD_ITEM. Tests the starting and ending range of layers for the * via. * @param aLayer The layer to test for. * @return bool - true if on given layer, else false. */ bool IsOnLayer( int aLayer ) const; - + void SetLayerPair( int top_layer, int bottom_layer ); void ReturnLayerPair( int* top_layer, int* bottom_layer ) const; - + /** * Function GetClass * returns the class name. @@ -249,21 +253,22 @@ public: */ wxString GetClass() const { - return wxT("VIA"); + return wxT( "VIA" ); } - -#if defined(DEBUG) + +#if defined (DEBUG) + /** * Function Show * is used to output the object tree, currently for debugging only. - * @param nestLevel An aid to prettier tree indenting, and is the level + * @param nestLevel An aid to prettier tree indenting, and is the level * of nesting of this object within the overall tree. * @param os The ostream& to output to. */ void Show( int nestLevel, std::ostream& os ); -#endif - + +#endif }; diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp index 925c833f45..631bd2cba4 100644 --- a/pcbnew/controle.cpp +++ b/pcbnew/controle.cpp @@ -413,5 +413,5 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) } SetToolbars(); - Affiche_Status_Box(); /* Affichage des coord curseur */ + Affiche_Status_Box(); /* Display new cursor coordinates */ } diff --git a/pcbnew/ioascii.cpp b/pcbnew/ioascii.cpp index d33e8ecd27..fad58d8b76 100644 --- a/pcbnew/ioascii.cpp +++ b/pcbnew/ioascii.cpp @@ -172,33 +172,12 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( wxDC* DC, FILE* File, PtSegm->m_Width = width; - // Before specifying the value for any new via's Shape property, check - // the values of its top_layer and bottom_layer properties, to determine - // what value should *really* be assigned to that property (as all - // versions of KiCad up until revision 335 (committed on 2007-Oct-13) - // could sometimes assign an inappropriate value to that property). if( makeType == TYPEVIA ) { - int b_layer = (layer >> 4) & 15; - int t_layer = layer & 15; - if( ( ( b_layer == COPPER_LAYER_N ) && ( t_layer == CMP_N ) ) - || ( ( b_layer == CMP_N ) && ( t_layer == COPPER_LAYER_N ) ) ) - { - // The via is really of a "standard" (through-hole) type - shape = VIA_NORMALE; - } - else if( ( b_layer == COPPER_LAYER_N ) || ( t_layer == CMP_N ) - || ( b_layer == CMP_N ) || ( t_layer == COPPER_LAYER_N ) ) - { - // The via is really of a "blind" type - shape = VIA_BORGNE; - } - else - { - // The via is really of a "buried" type - shape = VIA_ENTERREE; - } - } + // a THROUGH HOLE VIA always connects all layers + if ( shape == THROUGH_VIA ) + layer = (COPPER_LAYER_N << 4) + LAYER_CMP_N; + } PtSegm->m_Shape = shape; if( arg_count < 7 ) @@ -221,11 +200,11 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( wxDC* DC, FILE* File, { case TYPETRACK: case TYPEVIA: - DisplayActivity( PerCent, wxT( "Tracks:" ) ); + DisplayActivity( PerCent, _( "Tracks:" ) ); break; case TYPEZONE: - DisplayActivity( PerCent, wxT( "Zones:" ) ); + DisplayActivity( PerCent, _( "Zones:" ) ); break; } #endif diff --git a/pcbnew/locate.cpp b/pcbnew/locate.cpp index 413a0fdd18..6ab34ff488 100644 --- a/pcbnew/locate.cpp +++ b/pcbnew/locate.cpp @@ -663,6 +663,21 @@ TEXTE_MODULE* LocateTexteModule( BOARD* Pcb, MODULE** PtModule, int typeloc ) } + +/******************************************/ +inline int Dist(wxPoint & p1, wxPoint & p2) +/******************************************/ +/* +return the dist min between p1 and p2 +*/ +{ +int dist; + dist = abs(p1.x - p2.x) + abs (p1.y - p2.y); + dist *= 7; + dist /= 10; + return dist; +} + /**************************************************************/ TRACK* Locate_Piste_Connectee( TRACK* PtRefSegm, TRACK* pt_base, TRACK* pt_lim, int extr ) @@ -686,6 +701,7 @@ TRACK* Locate_Piste_Connectee( TRACK* PtRefSegm, TRACK* pt_base, int Reflayer; wxPoint pos_ref; int ii; + int min_dist; if( extr == START ) pos_ref = PtRefSegm->m_Start; @@ -708,13 +724,16 @@ TRACK* Locate_Piste_Connectee( TRACK* PtRefSegm, TRACK* pt_base, goto suite; if( PtSegmN == PtRefSegm ) goto suite; - if( pos_ref == PtSegmN->m_Start ) + + min_dist = (PtSegmN->m_Width + PtRefSegm->m_Width)/2; + + if( Dist(pos_ref, PtSegmN->m_Start) < min_dist ) { /* Test des couches */ if( Reflayer & PtSegmN->ReturnMaskLayer() ) return PtSegmN; } - if( pos_ref == PtSegmN->m_End ) + if( Dist(pos_ref, PtSegmN->m_End) < min_dist ) { /* Test des couches */ if( Reflayer & PtSegmN->ReturnMaskLayer() ) return PtSegmN; @@ -732,13 +751,16 @@ suite: goto suite1; if( PtSegmB == PtRefSegm ) goto suite1; - if( pos_ref == PtSegmB->m_Start ) + + min_dist = (PtSegmB->m_Width + PtRefSegm->m_Width)/2; + + if( Dist(pos_ref, PtSegmB->m_Start) < min_dist ) { /* Test des couches */ if( Reflayer & PtSegmB->ReturnMaskLayer() ) return PtSegmB; } - if( pos_ref == PtSegmB->m_End ) + if( Dist(pos_ref, PtSegmB->m_End) < min_dist ) { /* Test des couches */ if( Reflayer & PtSegmB->ReturnMaskLayer() ) return PtSegmB; @@ -769,13 +791,16 @@ suite1: continue; } - if( pos_ref == PtSegmN->m_Start ) + + min_dist = (PtSegmN->m_Width + PtRefSegm->m_Width)/2; + + if( Dist(pos_ref,PtSegmN->m_Start) < min_dist ) { /* Test des couches */ if( Reflayer & PtSegmN->ReturnMaskLayer() ) return PtSegmN; } - if( pos_ref == PtSegmN->m_End ) + if( Dist(pos_ref, PtSegmN->m_End) < min_dist ) { /* Test des couches */ if( Reflayer & PtSegmN->ReturnMaskLayer() ) return PtSegmN; diff --git a/pcbnew/modedit_onclick.cpp b/pcbnew/modedit_onclick.cpp index aa84095f9e..c688684ba1 100644 --- a/pcbnew/modedit_onclick.cpp +++ b/pcbnew/modedit_onclick.cpp @@ -30,8 +30,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) /*************************************************************************/ -/* Traite les commandes declenchée par le bouton gauche de la souris, - * quand un outil est deja selectionné +/* Handle the left click in footprint editor */ { BOARD_ITEM* DrawStruct = GetCurItem(); @@ -39,7 +38,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) DrawPanel->CursorOff( DC ); if( m_ID_current_state == 0 ) { - if( DrawStruct && DrawStruct->m_Flags ) // Commande "POPUP" en cours + if( DrawStruct && DrawStruct->m_Flags ) // Command in progress { switch( DrawStruct->Type() ) { @@ -75,7 +74,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) DrawStruct = GetCurItem(); if( !DrawStruct || (DrawStruct->m_Flags == 0) ) { - DrawStruct = (BOARD_ITEM*) ModeditLocateAndDisplay(); + DrawStruct = ModeditLocateAndDisplay(); SetCurItem( DrawStruct ); } @@ -177,9 +176,9 @@ bool WinEDA_ModuleEditFrame::OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ) /*********************************************************************/ -/* Prepare le menu PullUp affiché par un click sur le bouton droit - * de la souris. - * Ce menu est ensuite complété par la liste des commandes de ZOOM +/* Handle the right click in the footprint editor: + * Create the pull up menu + * After this menu is built, the standart ZOOM menu is added */ { BOARD_ITEM* DrawStruct = GetCurItem(); @@ -376,9 +375,8 @@ bool WinEDA_ModuleEditFrame::OnRightClick( const wxPoint& MousePos, void WinEDA_ModuleEditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) /****************************************************************************/ -/* Appelé sur un double click: - * pour un élément editable (textes, composant): - * appel de l'editeur correspondant. +/* Handle the double click in the footprin editor: + * If the double clicked item is editable: call the corresponding editor. */ { BOARD_ITEM* DrawStruct = GetCurItem(); @@ -392,13 +390,13 @@ void WinEDA_ModuleEditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) case 0: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - DrawStruct = PcbGeneralLocateAndDisplay(); + DrawStruct = ModeditLocateAndDisplay(); } if( (DrawStruct == NULL) || (DrawStruct->m_Flags != 0) ) break; - // Element localisé + // Item found SetCurItem( DrawStruct ); switch( DrawStruct->Type() ) diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp index 6c4becb344..bc9b02a541 100644 --- a/pcbnew/ratsnest.cpp +++ b/pcbnew/ratsnest.cpp @@ -33,7 +33,7 @@ static bool DisplayRastnestInProgress; // Enable the display of the ratsnes * Build_Board_Ratsnest( wxDC* DC ) Create this rastnest * for each net: * First: - * we create links (and therefore a logical block) between 2 pad. This is achieved by: + * we create a link (and therefore a logical block) between 2 pad. This is achieved by: * search for a pad without link. * search its nearest pad * link these 2 pads (i.e. create a ratsnest item)