diff --git a/3d-viewer/3d_draw.cpp b/3d-viewer/3d_draw.cpp index ef1a108908..7b763ce68a 100644 --- a/3d-viewer/3d_draw.cpp +++ b/3d-viewer/3d_draw.cpp @@ -250,7 +250,8 @@ double zpos, height; int color; r = via->m_Width * g_Parm_3D_Visu.m_BoardScale / 2; - hole = g_Parm_3D_Visu.m_BoardSettings->m_ViaDrill * g_Parm_3D_Visu.m_BoardScale / 2; + hole = via->GetDrillValue(); + hole *= g_Parm_3D_Visu.m_BoardScale / 2; x = via->m_Start.x * g_Parm_3D_Visu.m_BoardScale; y = via->m_Start.y * g_Parm_3D_Visu.m_BoardScale; diff --git a/change_log.txt b/change_log.txt index ada586dc25..2e9004e139 100644 --- a/change_log.txt +++ b/change_log.txt @@ -4,6 +4,16 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2007-Dec-12 UPDATE Jean-Pierre Charras +================================================================================ ++eeschema: + missing footprints in export netlist (bug 1867321) + Affected: PadsPcb converter did not list all footprints + ++pcbnew: + fixed: memory not freeed in block copy (minor bug) + Support for micro vias (generation of drill files not finished) + 2008-jan-06 UPDATE Jean-Pierre Charras ================================================================================ +pcbnew: diff --git a/eeschema/netform.cpp b/eeschema/netform.cpp index 0ffa83b491..432b2eade0 100644 --- a/eeschema/netform.cpp +++ b/eeschema/netform.cpp @@ -250,7 +250,8 @@ void Write_GENERIC_NetList( WinEDA_SchematicFrame* frame, /* Create netlist module section */ fprintf( tmpfile, "$BeginComponentList\n" ); - for( CurrScreen = ScreenSch; CurrScreen != NULL; CurrScreen = (BASE_SCREEN*) CurrScreen->Pnext ) + EDA_ScreenList ScreenList( NULL ); + for( CurrScreen = ScreenList.GetFirst(); CurrScreen != NULL; CurrScreen = ScreenList.GetNext() ) { for( DrawList = CurrScreen->EEDrawList; DrawList != NULL; DrawList = DrawList->Pnext ) { diff --git a/gerbview/export_to_pcbnew.cpp b/gerbview/export_to_pcbnew.cpp index 3fcb17d0d3..a12dc02cc3 100644 --- a/gerbview/export_to_pcbnew.cpp +++ b/gerbview/export_to_pcbnew.cpp @@ -181,7 +181,7 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile, newtrack->SetLayer( 0x0F ); // Layers are 0 to 15 (Cu/Cmp) - newtrack->m_Drill = -1; + newtrack->SetDrillDefault(); // Compute the via position from track position ( Via position is the // position of the middle of the track segment ) diff --git a/include/id.h b/include/id.h index 7c3a201fdd..0642b3ef95 100644 --- a/include/id.h +++ b/include/id.h @@ -577,6 +577,7 @@ enum main_id { ID_POPUP_PCB_EDIT_COTATION, ID_POPUP_PCB_END_TRACK, ID_POPUP_PCB_PLACE_VIA, + ID_POPUP_PCB_PLACE_MICROVIA, ID_POPUP_PCB_IMPORT_PAD_SETTINGS, ID_POPUP_PCB_EXPORT_PAD_SETTINGS, diff --git a/include/pcbstruct.h b/include/pcbstruct.h index c9f5111d95..c350b92cd0 100644 --- a/include/pcbstruct.h +++ b/include/pcbstruct.h @@ -150,7 +150,10 @@ class EDA_BoardDesignSettings public: int m_CopperLayerCount; // Number of copper layers for this design int m_ViaDrill; // via drill (for the entire board) + int m_MicroViaDrill; // micro via drill (for the entire board) int m_CurrentViaSize; // Current via size + int m_CurrentMicroViaSize; // Current micro via size + bool m_MicroViasAllowed; // true to allow micro vias int m_ViaSizeHistory[HIST0RY_NUMBER]; // Last HIST0RY_NUMBER used via sizes int m_CurrentViaType; // via type (BLIND, TROUGHT ...), bits 1 and 2 (not 0 and 1) int m_CurrentTrackWidth; // current track width @@ -222,6 +225,14 @@ public: * @return BOARD_ITEM* - the one selected, or NULL. */ BOARD_ITEM* GetCurItem() const { return (BOARD_ITEM*) BASE_SCREEN::GetCurItem(); } + + /* Return true if a microvia can be put on board + * A microvia ia a small via restricted to 2 near neighbour layers + * because its is hole is made by laser which can penetrate only one layer + * It is mainly used to connect BGA to the first inner layer + * And it is allowed from an external layer to the first inner layer + */ + bool IsMicroViaAcceptable(void); }; /**********************************/ diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index b9cb42970b..2f966f1b44 100644 Binary files a/internat/fr/kicad.mo and b/internat/fr/kicad.mo differ diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 24f6a6d03c..e91dd233ea 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2008-01-05 14:17+0100\n" +"PO-Revision-Date: 2008-01-12 09:15+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -21,195 +21,26 @@ msgstr "" "X-Poedit-SearchPath-6: 3d-viewer\n" "X-Poedit-SearchPath-7: share\n" -#: pcbnew/gendrill.cpp:150 -msgid "Drill tools" -msgstr "Outils de perçage" +#: pcbnew/specctra.cpp:1557 +#: pcbnew/specctra.cpp:1564 +msgid "Expecting" +msgstr "Attendu" -#: pcbnew/gendrill.cpp:171 -#: pcbnew/dialog_general_options.cpp:272 -#: gerbview/options.cpp:186 -msgid "millimeters" -msgstr "millimetres" +#: pcbnew/specctra.cpp:1573 +#: pcbnew/specctra.cpp:1580 +msgid "Unexpected" +msgstr "Inattendu" -#: pcbnew/gendrill.cpp:171 -#: eeschema/dialog_options.cpp:246 -msgid "inches" -msgstr "Pouces" - -#: pcbnew/gendrill.cpp:173 -msgid "Drill Units:" -msgstr "Unités perçage:" - -#: pcbnew/gendrill.cpp:181 -msgid "decimal format" -msgstr "Format décimal" - -#: pcbnew/gendrill.cpp:182 -msgid "suppress leading zeros" -msgstr "Suppression zeros de tête" - -#: pcbnew/gendrill.cpp:182 -msgid "suppress trailing zeros" -msgstr "Suppression zeros de fin" - -#: pcbnew/gendrill.cpp:182 -msgid "keep zeros" -msgstr "Garder les zéros" - -#: pcbnew/gendrill.cpp:185 -msgid "Zeros Format" -msgstr "Format des zéros" - -#: pcbnew/gendrill.cpp:192 -#: pcbnew/gendrill.cpp:452 -msgid "2:3" -msgstr "2:3" - -#: pcbnew/gendrill.cpp:192 -#: pcbnew/gendrill.cpp:453 -msgid "2:4" -msgstr "2:4" - -#: pcbnew/gendrill.cpp:193 -#: pcbnew/gendrill.cpp:458 -msgid "3:2" -msgstr "3:2" - -#: pcbnew/gendrill.cpp:193 -#: pcbnew/gendrill.cpp:459 -msgid "3:3" -msgstr "3:3" - -#: pcbnew/gendrill.cpp:199 -msgid "Precision" -msgstr "Précision" - -#: pcbnew/gendrill.cpp:211 -msgid "absolute" -msgstr "Absolu" - -#: pcbnew/gendrill.cpp:211 -msgid "auxiliary axis" -msgstr "Axe Auxiliaire" - -#: pcbnew/gendrill.cpp:213 -msgid "Drill Origin:" -msgstr "Origine des coord de percage:" - -#: pcbnew/gendrill.cpp:222 -#: pcbnew/gendrill.cpp:230 -#: eeschema/libedit.cpp:41 -#: eeschema/viewlibs.cpp:120 -msgid "None" -msgstr "Aucun" - -#: pcbnew/gendrill.cpp:222 -msgid "drill sheet (HPGL)" -msgstr "Plan de perçage (HPGL)" - -#: pcbnew/gendrill.cpp:222 -msgid "drill sheet (PostScript)" -msgstr "Plan de perçage (Postscript)" - -#: pcbnew/gendrill.cpp:224 -msgid "Drill Sheet:" -msgstr "Plan de perçage:" - -#: pcbnew/gendrill.cpp:230 -msgid "Drill report" -msgstr "Rapport de perçage" - -#: pcbnew/gendrill.cpp:232 -msgid "Drill Report:" -msgstr "Rapport de perçage:" - -#: pcbnew/gendrill.cpp:238 -msgid "Via Drill" -msgstr "Perçage des vias" - -#: pcbnew/gendrill.cpp:243 -#: eeschema/plothpgl.cpp:239 -msgid "Pen Number" -msgstr "Numéro de plume" - -#: pcbnew/gendrill.cpp:246 -msgid "Speed (cm/s)" -msgstr "Vitesse plume ( cm/s )" - -#: pcbnew/gendrill.cpp:249 -msgid "mirror y axis" -msgstr "Miroir sur axe Y" - -#: pcbnew/gendrill.cpp:253 -msgid "minimal header" -msgstr "Entête minimal" - -#: pcbnew/gendrill.cpp:259 -msgid "&Execute" -msgstr "&Exécuter" - -#: pcbnew/gendrill.cpp:263 -#: eeschema/plotps.cpp:208 -#: share/svg_print.cpp:222 -#: share/dialog_print.cpp:225 -msgid "&Close" -msgstr "&Fermer" - -#: pcbnew/gendrill.cpp:389 -msgid "Drill file" -msgstr "Fichier de percage" - -#: pcbnew/gendrill.cpp:403 -#: pcbnew/gendrill.cpp:1623 -#: pcbnew/plotps.cpp:51 -#: pcbnew/xchgmod.cpp:642 -msgid "Unable to create file " -msgstr "Impossible de créer le fichier " - -#: pcbnew/gendrill.cpp:410 -#: pcbnew/gendrill.cpp:1036 -#: pcbnew/gendrill.cpp:1629 -#: pcbnew/plothpgl.cpp:74 -#: pcbnew/plotps.cpp:58 -#: pcbnew/plotgerb.cpp:84 -msgid "File" -msgstr "Fichier" - -#: pcbnew/gendrill.cpp:416 -#: pcbnew/gendrill.cpp:1041 -#: pcbnew/gendrill.cpp:1634 -msgid "Tools" -msgstr "Outils" - -#: pcbnew/gendrill.cpp:420 -#: pcbnew/gendrill.cpp:1110 -#: pcbnew/gendrill.cpp:1686 -#: pcbnew/class_pad.cpp:1085 -#: pcbnew/class_track.cpp:822 -#: pcbnew/class_track.cpp:827 -msgid "Drill" -msgstr "Perçage" - -#: pcbnew/gendrill.cpp:971 -msgid "Drill Map file" -msgstr "Fichier Plan de perçage" - -#: pcbnew/gendrill.cpp:1030 +#: pcbnew/specctra.cpp:1601 +#: pcbnew/specctra.cpp:2846 #, c-format -msgid "Unable to create file <%s>" -msgstr "Impossible de créer fichier <%s>" +msgid "Unable to open file \"%s\"" +msgstr "Ne peut pas ouvrirle fichier \"%s\"" -#: pcbnew/gendrill.cpp:1332 -msgid "" -" Drill map: Too many diameter values to draw to draw one symbol per drill value (max 13)\n" -"Plot uses circle shape for some drill values" -msgstr "" -"Plan de perçage: trop de diametres différents pour tracer 1 symbole par diametre\n" -"Le tracé utilise des cercles pour quelques valeurs " - -#: pcbnew/gendrill.cpp:1608 -msgid "Drill Report file" -msgstr "Fichier rapport de perçage:" +#: pcbnew/specctra.cpp:2814 +#, c-format +msgid "System file error writing to file \"%s\"" +msgstr "Erreur système sur écriture fichier \"%s\"" #: pcbnew/files.cpp:57 msgid "Recovery file " @@ -255,7 +86,6 @@ msgid "Warning: unable to create bakfile " msgstr "Attention: Impossible de créer fichier backup " #: pcbnew/files.cpp:326 -#: pcbnew/plothpgl.cpp:67 #: pcbnew/librairi.cpp:255 #: pcbnew/librairi.cpp:401 #: pcbnew/librairi.cpp:551 @@ -264,6 +94,7 @@ msgstr "Attention: Impossible de cr #: pcbnew/gen_modules_placefile.cpp:98 #: pcbnew/gen_modules_placefile.cpp:251 #: pcbnew/export_gencad.cpp:83 +#: pcbnew/plothpgl.cpp:67 #: eeschema/plothpgl.cpp:560 #: eeschema/plotps.cpp:389 #: cvpcb/genequiv.cpp:42 @@ -311,6 +142,12 @@ msgstr "Affichage coord Polaires" msgid "Inches" msgstr "Pouces" +#: pcbnew/dialog_general_options.cpp:272 +#: pcbnew/gendrill.cpp:171 +#: gerbview/options.cpp:186 +msgid "millimeters" +msgstr "millimetres" + #: pcbnew/dialog_general_options.cpp:275 #: eeschema/dialog_options.cpp:248 #: gerbview/options.cpp:187 @@ -411,13 +248,13 @@ msgstr "Controle la capture du curseur pcb quand le curseuir souris est sur le p #: pcbnew/dialog_general_options.cpp:368 #: pcbnew/dialog_graphic_items_options.cpp:263 +#: pcbnew/dialog_pad_edit.cpp:217 #: pcbnew/dialog_initpcb.cpp:161 #: pcbnew/dialog_edit_mod_text.cpp:213 -#: pcbnew/dialog_track_options.cpp:186 +#: pcbnew/dialog_track_options.cpp:212 #: pcbnew/dialog_display_options.cpp:282 #: pcbnew/swap_layers.cpp:220 #: pcbnew/set_grid.cpp:171 -#: pcbnew/dialog_pad_edit.cpp:217 #: pcbnew/dialog_drc.cpp:549 #: eeschema/symbtext.cpp:174 #: eeschema/dialog_options.cpp:274 @@ -438,14 +275,14 @@ msgstr "&OK" #: pcbnew/dialog_general_options.cpp:372 #: pcbnew/dialog_graphic_items_options.cpp:267 +#: pcbnew/dialog_pad_edit.cpp:221 #: pcbnew/dialog_netlist.cpp:189 #: pcbnew/dialog_initpcb.cpp:164 #: pcbnew/dialog_edit_mod_text.cpp:217 -#: pcbnew/dialog_track_options.cpp:190 +#: pcbnew/dialog_track_options.cpp:216 #: pcbnew/dialog_display_options.cpp:286 #: pcbnew/swap_layers.cpp:224 #: pcbnew/set_grid.cpp:176 -#: pcbnew/dialog_pad_edit.cpp:221 #: pcbnew/zones.cpp:219 #: pcbnew/dialog_zones_by_polygon.cpp:204 #: pcbnew/dialog_drc.cpp:545 @@ -470,19 +307,19 @@ msgstr "&OK" msgid "&Cancel" msgstr "&Annuler" -#: pcbnew/edit_track_width.cpp:94 +#: pcbnew/edit_track_width.cpp:96 msgid "Change track width (entire NET) ?" msgstr "Change largeur piste ( NET complet) ?" -#: pcbnew/edit_track_width.cpp:128 +#: pcbnew/edit_track_width.cpp:130 msgid "Edit All Tracks and Vias Sizes" msgstr "Editer TOUTES Pistes et Vias" -#: pcbnew/edit_track_width.cpp:133 +#: pcbnew/edit_track_width.cpp:135 msgid "Edit All Via Sizes" msgstr "Editer TOUTES Vias" -#: pcbnew/edit_track_width.cpp:138 +#: pcbnew/edit_track_width.cpp:140 msgid "Edit All Track Sizes" msgstr "Editer TOUTES Pistes" @@ -533,15 +370,15 @@ msgid "3D settings" msgstr "3D Caract" #: pcbnew/dialog_edit_module.cpp:118 -#: pcbnew/pcbtexte.cpp:111 -#: pcbnew/sel_layer.cpp:158 -#: pcbnew/sel_layer.cpp:316 #: pcbnew/muonde.cpp:348 -#: pcbnew/block.cpp:160 +#: pcbnew/pcbtexte.cpp:111 +#: pcbnew/block.cpp:157 #: pcbnew/cotation.cpp:105 #: pcbnew/mirepcb.cpp:99 #: pcbnew/set_color.cpp:353 #: pcbnew/dialog_zones_by_polygon.cpp:201 +#: pcbnew/sel_layer.cpp:158 +#: pcbnew/sel_layer.cpp:316 #: eeschema/sheetlab.cpp:93 #: eeschema/eelayer.cpp:251 #: gerbview/reglage.cpp:108 @@ -554,19 +391,19 @@ msgid "OK" msgstr "OK" #: pcbnew/dialog_edit_module.cpp:122 -#: pcbnew/pcbtexte.cpp:116 -#: pcbnew/sel_layer.cpp:162 -#: pcbnew/sel_layer.cpp:320 #: pcbnew/muonde.cpp:352 +#: pcbnew/pcbtexte.cpp:116 #: pcbnew/modedit_onclick.cpp:203 #: pcbnew/modedit_onclick.cpp:235 #: pcbnew/onrightclick.cpp:145 #: pcbnew/onrightclick.cpp:159 -#: pcbnew/block.cpp:157 -#: pcbnew/globaleditpad.cpp:108 +#: pcbnew/block.cpp:154 #: pcbnew/cotation.cpp:109 #: pcbnew/mirepcb.cpp:103 #: pcbnew/set_color.cpp:357 +#: pcbnew/sel_layer.cpp:162 +#: pcbnew/sel_layer.cpp:320 +#: pcbnew/globaleditpad.cpp:108 #: eeschema/onrightclick.cpp:122 #: eeschema/onrightclick.cpp:134 #: eeschema/sheetlab.cpp:97 @@ -622,7 +459,9 @@ msgid "Delete Field" msgstr "Supprimer Champ" #: pcbnew/dialog_edit_module.cpp:234 -#: common/common.cpp:280 +#: common/common.cpp:298 +#: common/common.cpp:309 +#: common/common.cpp:342 msgid "Component" msgstr "Composant" @@ -633,21 +472,21 @@ msgstr "Cuivre" #: pcbnew/dialog_edit_module.cpp:235 #: pcbnew/class_text_mod.cpp:369 #: pcbnew/class_text_mod.cpp:373 -#: pcbnew/sel_layer.cpp:145 -#: pcbnew/class_pcb_text.cpp:198 +#: pcbnew/class_pcb_text.cpp:177 #: pcbnew/class_pad.cpp:1062 -#: pcbnew/classpcb.cpp:210 -#: pcbnew/class_track.cpp:806 +#: pcbnew/classpcb.cpp:189 +#: pcbnew/class_track.cpp:779 #: pcbnew/class_module.cpp:1217 -#: pcbnew/class_zone.cpp:441 +#: pcbnew/sel_layer.cpp:145 +#: pcbnew/class_zone.cpp:483 #: gerbview/affiche.cpp:109 msgid "Layer" msgstr "Couche" #: pcbnew/dialog_edit_module.cpp:243 #: pcbnew/dialog_edit_module.cpp:289 -#: pcbnew/pcbtexte.cpp:176 #: pcbnew/muonde.cpp:360 +#: pcbnew/pcbtexte.cpp:176 #: pcbnew/cotation.cpp:113 #: eeschema/dialog_options.cpp:229 #: eeschema/onrightclick.cpp:306 @@ -662,7 +501,7 @@ msgstr "User" #: pcbnew/dialog_edit_module.cpp:246 #: pcbnew/class_text_mod.cpp:383 -#: pcbnew/class_pcb_text.cpp:209 +#: pcbnew/class_pcb_text.cpp:188 #: pcbnew/class_pad.cpp:1104 #: pcbnew/class_module.cpp:1240 #: eeschema/affiche.cpp:117 @@ -914,6 +753,101 @@ msgstr "Fichiers Librairies" msgid "Library exists! No Change" msgstr "Librairie existante! Pas de changement" +#: pcbnew/muonde.cpp:149 +msgid "Gap" +msgstr "Gap" + +#: pcbnew/muonde.cpp:154 +msgid "Stub" +msgstr "Stub" + +#: pcbnew/muonde.cpp:160 +msgid "Arc Stub" +msgstr "Arc Stub" + +#: pcbnew/muonde.cpp:175 +#: common/common.cpp:53 +msgid " (mm):" +msgstr " (mm):" + +#: pcbnew/muonde.cpp:182 +msgid " (inch):" +msgstr " (pouce):" + +#: pcbnew/muonde.cpp:189 +#: pcbnew/muonde.cpp:202 +#: pcbnew/gen_self.h:231 +msgid "Incorrect number, abort" +msgstr "Nombre incorrect, arret" + +#: pcbnew/muonde.cpp:198 +msgid "Angle (0.1deg):" +msgstr "Angle (0.1deg):" + +#: pcbnew/muonde.cpp:330 +msgid "Complex shape" +msgstr "Formr complexe" + +#: pcbnew/muonde.cpp:356 +msgid "Read Shape Descr File..." +msgstr "Lire fichier de description de forme..." + +#: pcbnew/muonde.cpp:360 +msgid "Symmetrical" +msgstr "Symétrique" + +#: pcbnew/muonde.cpp:360 +msgid "Mirrored" +msgstr "Miroir" + +#: pcbnew/muonde.cpp:362 +msgid "Shape Option" +msgstr "Option Forme" + +#: pcbnew/muonde.cpp:367 +#: pcbnew/pcbtexte.cpp:126 +#: pcbnew/cotation.cpp:125 +#: pcbnew/mirepcb.cpp:108 +#: eeschema/sheet.cpp:189 +#: eeschema/sheet.cpp:200 +#: eeschema/pinedit-dialog.cpp:273 +#: eeschema/pinedit-dialog.cpp:279 +#: common/wxwineda.cpp:91 +msgid "Size" +msgstr "Taille " + +#: pcbnew/muonde.cpp:428 +msgid "Read descr shape file" +msgstr "Lire fichier de description de forme" + +#: pcbnew/muonde.cpp:444 +msgid "File not found" +msgstr "fichier non trouvé" + +#: pcbnew/muonde.cpp:548 +msgid "Shape has a null size!" +msgstr "La forme a une taille nulle" + +#: pcbnew/muonde.cpp:553 +msgid "Shape has no points!" +msgstr "La forme n'a pas de points" + +#: pcbnew/muonde.cpp:679 +msgid "No pad for this module" +msgstr "Pas de pad dans ce module" + +#: pcbnew/muonde.cpp:684 +msgid "Only one pad for this module" +msgstr "Seulement un pad dans ce module" + +#: pcbnew/muonde.cpp:698 +msgid "Gap (mm):" +msgstr "Gap (mm):" + +#: pcbnew/muonde.cpp:704 +msgid "Gap (inch):" +msgstr "Gap (inch):" + #: pcbnew/librairi.cpp:48 msgid "Import Module:" msgstr "Importer Module:" @@ -1354,16 +1288,16 @@ msgid "Module" msgstr "Module" #: pcbnew/class_text_mod.cpp:359 -#: pcbnew/classpcb.cpp:194 +#: pcbnew/classpcb.cpp:173 #: pcbnew/class_marker.cpp:112 -#: pcbnew/class_track.cpp:750 -#: pcbnew/class_zone.cpp:422 +#: pcbnew/class_track.cpp:723 +#: pcbnew/class_zone.cpp:454 #: gerbview/affiche.cpp:93 msgid "Type" msgstr "Type" #: pcbnew/class_text_mod.cpp:363 -#: pcbnew/class_pcb_text.cpp:204 +#: pcbnew/class_pcb_text.cpp:183 #: pcbnew/dialog_display_options.cpp:275 #: eeschema/dialog_options.cpp:265 #: gerbview/affiche.cpp:43 @@ -1371,7 +1305,7 @@ msgid "No" msgstr "Non" #: pcbnew/class_text_mod.cpp:365 -#: pcbnew/class_pcb_text.cpp:206 +#: pcbnew/class_pcb_text.cpp:185 #: pcbnew/dialog_display_options.cpp:274 #: eeschema/dialog_options.cpp:264 #: gerbview/affiche.cpp:45 @@ -1380,7 +1314,7 @@ msgstr "Oui" #: pcbnew/class_text_mod.cpp:380 #: pcbnew/pcbtexte.cpp:176 -#: pcbnew/class_pcb_text.cpp:202 +#: pcbnew/class_pcb_text.cpp:181 #: pcbnew/modedit_onclick.cpp:254 #: pcbnew/cotation.cpp:113 #: gerbview/affiche.cpp:40 @@ -1390,11 +1324,11 @@ msgstr "Miroir" #: pcbnew/class_text_mod.cpp:386 #: pcbnew/pcbtexte.cpp:130 -#: pcbnew/class_pcb_text.cpp:212 +#: pcbnew/class_pcb_text.cpp:191 #: pcbnew/dialog_edit_mod_text.cpp:204 -#: pcbnew/classpcb.cpp:215 +#: pcbnew/classpcb.cpp:194 #: pcbnew/cotation.cpp:129 -#: pcbnew/class_track.cpp:830 +#: pcbnew/class_track.cpp:806 #: pcbnew/mirepcb.cpp:113 #: pcbnew/class_edge_mod.cpp:297 #: eeschema/dialog_cmp_graphic_properties.cpp:188 @@ -1405,14 +1339,14 @@ msgid "Width" msgstr "Epaisseur" #: pcbnew/class_text_mod.cpp:389 -#: pcbnew/class_pcb_text.cpp:215 +#: pcbnew/class_pcb_text.cpp:194 #: pcbnew/class_pad.cpp:1075 #: gerbview/affiche.cpp:55 msgid "H Size" msgstr "Taille H" #: pcbnew/class_text_mod.cpp:392 -#: pcbnew/class_pcb_text.cpp:218 +#: pcbnew/class_pcb_text.cpp:197 #: pcbnew/class_pad.cpp:1079 #: gerbview/affiche.cpp:58 msgid "V Size" @@ -1429,18 +1363,6 @@ msgstr "Propri msgid "Text:" msgstr "Texte:" -#: pcbnew/pcbtexte.cpp:126 -#: pcbnew/muonde.cpp:367 -#: pcbnew/cotation.cpp:125 -#: pcbnew/mirepcb.cpp:108 -#: eeschema/sheet.cpp:189 -#: eeschema/sheet.cpp:200 -#: eeschema/pinedit-dialog.cpp:273 -#: eeschema/pinedit-dialog.cpp:279 -#: common/wxwineda.cpp:91 -msgid "Size" -msgstr "Taille " - #: pcbnew/pcbtexte.cpp:134 msgid "Position" msgstr "Position" @@ -1450,37 +1372,65 @@ msgstr "Position" msgid "Orientation" msgstr "Orientation" -#: pcbnew/sel_layer.cpp:92 -msgid "Select Layer:" -msgstr "Selection couche:" +#: pcbnew/clean.cpp:179 +msgid "Delete unconnected tracks:" +msgstr "Suppression Pistes non connectées" -#: pcbnew/sel_layer.cpp:137 -msgid "(Deselect)" -msgstr "(Deselection)" +#: pcbnew/clean.cpp:198 +msgid "ViaDef" +msgstr "ViaDef" -#: 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/clean.cpp:370 +msgid "Clean Null Segments" +msgstr "Nettoyage segments nulls" -#: 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/clean.cpp:462 +msgid "Merging Segments:" +msgstr "Associe Segment" -#: pcbnew/sel_layer.cpp:263 -msgid "Select Layer Pair:" -msgstr "Selection paire de couches" +#: pcbnew/clean.cpp:464 +msgid "Merge" +msgstr "Merge" -#: pcbnew/sel_layer.cpp:294 -msgid "Top Layer" -msgstr "Couche Sup." +#: pcbnew/clean.cpp:464 +#: pcbnew/dialog_pad_edit.cpp:186 +#: eeschema/dialog_erc.cpp:192 +#: eeschema/dialog_erc.cpp:196 +#: eeschema/dialog_edit_component_in_schematic.cpp:171 +msgid "0" +msgstr "0" -#: pcbnew/sel_layer.cpp:299 -msgid "Bottom Layer" -msgstr "Couche Inf." +#: pcbnew/clean.cpp:480 +msgid "Merge: " +msgstr "Merge: " -#: pcbnew/sel_layer.cpp:358 -msgid "The Top Layer and Bottom Layer must differ" -msgstr "Les couches dessus et dessous doivent différer" +#: pcbnew/clean.cpp:710 +msgid "DRC Control:" +msgstr "Controle DRC:" + +#: pcbnew/clean.cpp:715 +msgid "NetCtr" +msgstr "NetCtr" + +#: pcbnew/clean.cpp:1061 +msgid "Centre" +msgstr "Centre" + +#: pcbnew/clean.cpp:1061 +msgid "0 " +msgstr "0" + +#: pcbnew/clean.cpp:1072 +msgid "Pads: " +msgstr "Pastilles: " + +#: pcbnew/clean.cpp:1076 +msgid "Max" +msgstr "Max" + +#: pcbnew/clean.cpp:1079 +msgid "Segm" +msgstr "Segm" #: pcbnew/autorout.cpp:59 msgid "Net not selected" @@ -1502,89 +1452,6 @@ msgstr "Pas de memoire pour autoroutage" msgid "Place Cells" msgstr "Place Cells" -#: pcbnew/muonde.cpp:149 -msgid "Gap" -msgstr "Gap" - -#: pcbnew/muonde.cpp:154 -msgid "Stub" -msgstr "Stub" - -#: pcbnew/muonde.cpp:160 -msgid "Arc Stub" -msgstr "Arc Stub" - -#: pcbnew/muonde.cpp:175 -#: common/common.cpp:52 -msgid " (mm):" -msgstr " (mm):" - -#: pcbnew/muonde.cpp:182 -msgid " (inch):" -msgstr " (pouce):" - -#: pcbnew/muonde.cpp:189 -#: pcbnew/muonde.cpp:202 -#: pcbnew/gen_self.h:231 -msgid "Incorrect number, abort" -msgstr "Nombre incorrect, arret" - -#: pcbnew/muonde.cpp:198 -msgid "Angle (0.1deg):" -msgstr "Angle (0.1deg):" - -#: pcbnew/muonde.cpp:330 -msgid "Complex shape" -msgstr "Formr complexe" - -#: pcbnew/muonde.cpp:356 -msgid "Read Shape Descr File..." -msgstr "Lire fichier de description de forme..." - -#: pcbnew/muonde.cpp:360 -msgid "Symmetrical" -msgstr "Symétrique" - -#: pcbnew/muonde.cpp:360 -msgid "Mirrored" -msgstr "Miroir" - -#: pcbnew/muonde.cpp:362 -msgid "Shape Option" -msgstr "Option Forme" - -#: pcbnew/muonde.cpp:428 -msgid "Read descr shape file" -msgstr "Lire fichier de description de forme" - -#: pcbnew/muonde.cpp:444 -msgid "File not found" -msgstr "fichier non trouvé" - -#: pcbnew/muonde.cpp:548 -msgid "Shape has a null size!" -msgstr "La forme a une taille nulle" - -#: pcbnew/muonde.cpp:553 -msgid "Shape has no points!" -msgstr "La forme n'a pas de points" - -#: pcbnew/muonde.cpp:679 -msgid "No pad for this module" -msgstr "Pas de pad dans ce module" - -#: pcbnew/muonde.cpp:684 -msgid "Only one pad for this module" -msgstr "Seulement un pad dans ce module" - -#: pcbnew/muonde.cpp:698 -msgid "Gap (mm):" -msgstr "Gap (mm):" - -#: pcbnew/muonde.cpp:704 -msgid "Gap (inch):" -msgstr "Gap (inch):" - #: pcbnew/dialog_graphic_items_options.cpp:194 msgid "Graphics:" msgstr "Eléments graphiques;" @@ -1629,13 +1496,143 @@ msgstr "Hauteur Texte Module" msgid "Text Module Size H" msgstr "Largeur Texte Module" -#: pcbnew/zone_filling_algorithm.cpp:155 -msgid "No pads or starting point found to fill this zone outline" -msgstr "Pas de pads ou de points de départ pour remplir ce contour de zone" +#: pcbnew/dialog_pad_edit.cpp:157 +msgid "Pad Num :" +msgstr "Num Pad :" -#: pcbnew/zone_filling_algorithm.cpp:193 -msgid "Ok" -msgstr "Ok" +#: pcbnew/dialog_pad_edit.cpp:163 +msgid "Pad Net Name :" +msgstr "NetName Pad:" + +#: pcbnew/dialog_pad_edit.cpp:176 +#: pcbnew/dialog_pad_edit.cpp:196 +#: pcbnew/classpcb.cpp:178 +#: pcbnew/class_board_item.cpp:107 +#: pcbnew/class_track.cpp:749 +msgid "Circle" +msgstr "Cercle" + +#: pcbnew/dialog_pad_edit.cpp:177 +#: pcbnew/dialog_pad_edit.cpp:197 +msgid "Oval" +msgstr "Ovale" + +#: pcbnew/dialog_pad_edit.cpp:178 +msgid "Drill Shape:" +msgstr "Forme du perçage:" + +#: pcbnew/dialog_pad_edit.cpp:187 +msgid "90" +msgstr "90" + +#: pcbnew/dialog_pad_edit.cpp:188 +#: eeschema/dialog_edit_component_in_schematic.cpp:174 +msgid "-90" +msgstr "-90" + +#: pcbnew/dialog_pad_edit.cpp:189 +#: eeschema/dialog_edit_component_in_schematic.cpp:173 +msgid "180" +msgstr "180" + +#: pcbnew/dialog_pad_edit.cpp:191 +msgid "Pad Orient:" +msgstr "Orient pad:" + +#: pcbnew/dialog_pad_edit.cpp:198 +#: pcbnew/class_board_item.cpp:101 +msgid "Rect" +msgstr "Rect" + +#: pcbnew/dialog_pad_edit.cpp:199 +msgid "Trapezoidal" +msgstr "Trapezoidal" + +#: pcbnew/dialog_pad_edit.cpp:200 +msgid "Pad Shape:" +msgstr "Forme Pad:" + +#: pcbnew/dialog_pad_edit.cpp:205 +#: pcbnew/class_track.cpp:751 +msgid "Standard" +msgstr "Standard" + +#: pcbnew/dialog_pad_edit.cpp:206 +msgid "SMD" +msgstr "CMS" + +#: pcbnew/dialog_pad_edit.cpp:207 +#: eeschema/netlist.cpp:210 +msgid "Conn" +msgstr "Conn" + +#: pcbnew/dialog_pad_edit.cpp:208 +msgid "Hole" +msgstr "Hole" + +#: pcbnew/dialog_pad_edit.cpp:209 +msgid "Mechanical" +msgstr "Mechanical" + +#: pcbnew/dialog_pad_edit.cpp:210 +msgid "Pad Type:" +msgstr "Type Pad:" + +#: pcbnew/dialog_pad_edit.cpp:225 +msgid "Layers:" +msgstr "Couches:" + +#: pcbnew/dialog_pad_edit.cpp:229 +msgid "Copper layer" +msgstr "Couches Cuivre" + +#: pcbnew/dialog_pad_edit.cpp:233 +msgid "Comp layer" +msgstr "Couche Cmp" + +#: pcbnew/dialog_pad_edit.cpp:239 +msgid "Adhesive Cmp" +msgstr "Adhesive Cmp" + +#: pcbnew/dialog_pad_edit.cpp:243 +msgid "Adhesive Copper" +msgstr "Adhesive Cu" + +#: pcbnew/dialog_pad_edit.cpp:247 +msgid "Solder paste Cmp" +msgstr "Pate à souder Cmp" + +#: pcbnew/dialog_pad_edit.cpp:251 +msgid "Solder paste Copper" +msgstr "Pate à souder cuivre" + +#: pcbnew/dialog_pad_edit.cpp:255 +msgid "Silkscreen Cmp" +msgstr "Sérigr Cmp" + +#: pcbnew/dialog_pad_edit.cpp:259 +msgid "Silkscreen Copper" +msgstr "Sérigr Cu " + +#: pcbnew/dialog_pad_edit.cpp:263 +msgid "Solder mask Cmp" +msgstr "Masque soudure Cmp" + +#: pcbnew/dialog_pad_edit.cpp:267 +msgid "Solder mask Copper" +msgstr "Masque soudure cuivre" + +#: pcbnew/dialog_pad_edit.cpp:271 +msgid "E.C.O.1 layer" +msgstr "couche E.C.O.1" + +#: pcbnew/dialog_pad_edit.cpp:275 +msgid "E.C.O.2 layer" +msgstr "couche E.C.O.2" + +#: pcbnew/dialog_pad_edit.cpp:279 +msgid "Draft layer" +msgstr "Couche dessin" #: pcbnew/tool_modedit.cpp:53 #: eeschema/tool_lib.cpp:123 @@ -1864,21 +1861,236 @@ msgstr "Grille %.3f" msgid "User Grid" msgstr "Grille perso" +#: pcbnew/gendrill.cpp:150 +msgid "Drill tools" +msgstr "Outils de perçage" + +#: pcbnew/gendrill.cpp:171 +#: eeschema/dialog_options.cpp:246 +msgid "inches" +msgstr "Pouces" + +#: pcbnew/gendrill.cpp:173 +msgid "Drill Units:" +msgstr "Unités perçage:" + +#: pcbnew/gendrill.cpp:181 +msgid "decimal format" +msgstr "Format décimal" + +#: pcbnew/gendrill.cpp:182 +msgid "suppress leading zeros" +msgstr "Suppression zeros de tête" + +#: pcbnew/gendrill.cpp:182 +msgid "suppress trailing zeros" +msgstr "Suppression zeros de fin" + +#: pcbnew/gendrill.cpp:182 +msgid "keep zeros" +msgstr "Garder les zéros" + +#: pcbnew/gendrill.cpp:185 +msgid "Zeros Format" +msgstr "Format des zéros" + +#: pcbnew/gendrill.cpp:192 +#: pcbnew/gendrill.cpp:452 +msgid "2:3" +msgstr "2:3" + +#: pcbnew/gendrill.cpp:192 +#: pcbnew/gendrill.cpp:453 +msgid "2:4" +msgstr "2:4" + +#: pcbnew/gendrill.cpp:193 +#: pcbnew/gendrill.cpp:458 +msgid "3:2" +msgstr "3:2" + +#: pcbnew/gendrill.cpp:193 +#: pcbnew/gendrill.cpp:459 +msgid "3:3" +msgstr "3:3" + +#: pcbnew/gendrill.cpp:199 +msgid "Precision" +msgstr "Précision" + +#: pcbnew/gendrill.cpp:211 +msgid "absolute" +msgstr "Absolu" + +#: pcbnew/gendrill.cpp:211 +msgid "auxiliary axis" +msgstr "Axe Auxiliaire" + +#: pcbnew/gendrill.cpp:213 +msgid "Drill Origin:" +msgstr "Origine des coord de percage:" + +#: pcbnew/gendrill.cpp:222 +#: pcbnew/gendrill.cpp:230 +#: eeschema/libedit.cpp:41 +#: eeschema/viewlibs.cpp:120 +msgid "None" +msgstr "Aucun" + +#: pcbnew/gendrill.cpp:222 +msgid "drill sheet (HPGL)" +msgstr "Plan de perçage (HPGL)" + +#: pcbnew/gendrill.cpp:222 +msgid "drill sheet (PostScript)" +msgstr "Plan de perçage (Postscript)" + +#: pcbnew/gendrill.cpp:224 +msgid "Drill Sheet:" +msgstr "Plan de perçage:" + +#: pcbnew/gendrill.cpp:230 +msgid "Drill report" +msgstr "Rapport de perçage" + +#: pcbnew/gendrill.cpp:232 +msgid "Drill Report:" +msgstr "Rapport de perçage:" + +#: pcbnew/gendrill.cpp:238 +msgid "Via Drill" +msgstr "Perçage des vias" + +#: pcbnew/gendrill.cpp:243 +#: eeschema/plothpgl.cpp:239 +msgid "Pen Number" +msgstr "Numéro de plume" + +#: pcbnew/gendrill.cpp:246 +msgid "Speed (cm/s)" +msgstr "Vitesse plume ( cm/s )" + +#: pcbnew/gendrill.cpp:249 +msgid "mirror y axis" +msgstr "Miroir sur axe Y" + +#: pcbnew/gendrill.cpp:253 +msgid "minimal header" +msgstr "Entête minimal" + +#: pcbnew/gendrill.cpp:259 +msgid "&Execute" +msgstr "&Exécuter" + +#: pcbnew/gendrill.cpp:263 +#: eeschema/plotps.cpp:208 +#: share/svg_print.cpp:222 +#: share/dialog_print.cpp:225 +msgid "&Close" +msgstr "&Fermer" + +#: pcbnew/gendrill.cpp:389 +msgid "Drill file" +msgstr "Fichier de percage" + +#: pcbnew/gendrill.cpp:403 +#: pcbnew/gendrill.cpp:1623 +#: pcbnew/plotps.cpp:51 +#: pcbnew/xchgmod.cpp:642 +msgid "Unable to create file " +msgstr "Impossible de créer le fichier " + +#: pcbnew/gendrill.cpp:410 +#: pcbnew/gendrill.cpp:1036 +#: pcbnew/gendrill.cpp:1629 +#: pcbnew/plotps.cpp:58 +#: pcbnew/plotgerb.cpp:84 +#: pcbnew/plothpgl.cpp:74 +msgid "File" +msgstr "Fichier" + +#: pcbnew/gendrill.cpp:416 +#: pcbnew/gendrill.cpp:1041 +#: pcbnew/gendrill.cpp:1634 +msgid "Tools" +msgstr "Outils" + +#: pcbnew/gendrill.cpp:420 +#: pcbnew/gendrill.cpp:1110 +#: pcbnew/gendrill.cpp:1686 +#: pcbnew/class_pad.cpp:1085 +#: pcbnew/class_track.cpp:798 +#: pcbnew/class_track.cpp:803 +msgid "Drill" +msgstr "Perçage" + +#: pcbnew/gendrill.cpp:971 +msgid "Drill Map file" +msgstr "Fichier Plan de perçage" + +#: pcbnew/gendrill.cpp:1030 +#, c-format +msgid "Unable to create file <%s>" +msgstr "Impossible de créer fichier <%s>" + +#: pcbnew/gendrill.cpp:1332 +msgid "" +" Drill map: Too many diameter values to draw to draw one symbol per drill value (max 13)\n" +"Plot uses circle shape for some drill values" +msgstr "" +"Plan de perçage: trop de diametres différents pour tracer 1 symbole par diametre\n" +"Le tracé utilise des cercles pour quelques valeurs " + +#: pcbnew/gendrill.cpp:1608 +msgid "Drill Report file" +msgstr "Fichier rapport de perçage:" + #: pcbnew/via_edit.cpp:51 msgid "Incorrect value for Via drill. No via drill change" msgstr "Valeur incorrecte pour perçage.Pas de changement pour la via" -#: pcbnew/move-drag_pads.cpp:251 -#, c-format -msgid "Delete Pad (module %s %s) " -msgstr "Effacer Pad (module %s %s) " +#: pcbnew/editpads.cpp:77 +msgid "Pad Position" +msgstr "Position Pad" -#: pcbnew/class_pcb_text.cpp:194 +#: 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/export_gencad.cpp:69 +msgid "GenCAD file:" +msgstr "Fichier GenCAD:" + +#: pcbnew/class_pcb_text.cpp:173 #: gerbview/affiche.cpp:29 msgid "COTATION" msgstr "COTATION" -#: pcbnew/class_pcb_text.cpp:196 +#: pcbnew/class_pcb_text.cpp:175 #: gerbview/affiche.cpp:32 msgid "PCB Text" msgstr "Texte Pcb" @@ -1910,9 +2122,9 @@ msgid "Keep" msgstr "Garder" #: pcbnew/dialog_netlist.cpp:143 -#: pcbnew/onrightclick.cpp:589 -#: pcbnew/onrightclick.cpp:754 -#: pcbnew/onrightclick.cpp:851 +#: pcbnew/onrightclick.cpp:599 +#: pcbnew/onrightclick.cpp:764 +#: pcbnew/onrightclick.cpp:861 #: eeschema/edit_component_in_lib.cpp:239 #: eeschema/edit_component_in_lib.cpp:320 msgid "Delete" @@ -2043,9 +2255,31 @@ msgstr "Invisible" msgid "Value:" msgstr "Valeur:" -#: pcbnew/export_gencad.cpp:69 -msgid "GenCAD file:" -msgstr "Fichier GenCAD:" +#: pcbnew/class_pad.cpp:801 +#: pcbnew/class_pad.cpp:887 +msgid "Unknown Pad shape" +msgstr "Forme pad inconnue" + +#: pcbnew/class_pad.cpp:976 +msgid "RefP" +msgstr "RefP" + +#: pcbnew/class_pad.cpp:979 +#: pcbnew/class_board_item.cpp:35 +msgid "Net" +msgstr "Net" + +#: pcbnew/class_pad.cpp:1093 +msgid "Drill X / Y" +msgstr "Perçage X/Y" + +#: pcbnew/class_pad.cpp:1108 +msgid "X Pos" +msgstr "X Pos" + +#: pcbnew/class_pad.cpp:1112 +msgid "Y pos" +msgstr "Y pos" #: pcbnew/modedit.cpp:77 #: pcbnew/controle.cpp:172 @@ -2086,7 +2320,7 @@ msgid "Add Drawing" msgstr "Ajout d'éléments graphiques" #: pcbnew/modedit.cpp:424 -#: pcbnew/edit.cpp:518 +#: pcbnew/edit.cpp:519 #: eeschema/schedit.cpp:455 #: eeschema/libframe.cpp:579 msgid "Delete item" @@ -2144,8 +2378,8 @@ msgid "Delete Block (shift+ctrl + drag mouse)" msgstr "Effacement Bloc (shift+ctrl + drag mouse)" #: pcbnew/modedit_onclick.cpp:252 -#: pcbnew/onrightclick.cpp:748 -#: pcbnew/onrightclick.cpp:845 +#: pcbnew/onrightclick.cpp:758 +#: pcbnew/onrightclick.cpp:855 msgid "Rotate" msgstr "Rotation" @@ -2170,17 +2404,17 @@ msgid "Move Pad" msgstr "Déplace Pad" #: pcbnew/modedit_onclick.cpp:274 -#: pcbnew/onrightclick.cpp:787 +#: pcbnew/onrightclick.cpp:797 msgid "Edit Pad" msgstr "Edit Pad" #: pcbnew/modedit_onclick.cpp:276 -#: pcbnew/onrightclick.cpp:791 +#: pcbnew/onrightclick.cpp:801 msgid "New Pad Settings" msgstr "Nouvelles Caract. Pads" #: pcbnew/modedit_onclick.cpp:278 -#: pcbnew/onrightclick.cpp:793 +#: pcbnew/onrightclick.cpp:803 msgid "Export Pad Settings" msgstr "Exporte Caract. Pads" @@ -2189,7 +2423,7 @@ msgid "delete Pad" msgstr "Supprimer Pad" #: pcbnew/modedit_onclick.cpp:285 -#: pcbnew/onrightclick.cpp:798 +#: pcbnew/onrightclick.cpp:808 msgid "Global Pad Settings" msgstr "Edition Globale des pads" @@ -2222,9 +2456,9 @@ msgid "Place edge" msgstr "Place contour" #: pcbnew/modedit_onclick.cpp:317 -#: pcbnew/onrightclick.cpp:716 -#: pcbnew/onrightclick.cpp:750 -#: pcbnew/onrightclick.cpp:847 +#: pcbnew/onrightclick.cpp:726 +#: pcbnew/onrightclick.cpp:760 +#: pcbnew/onrightclick.cpp:857 #: eeschema/onrightclick.cpp:313 msgid "Edit" msgstr "Editer" @@ -2253,84 +2487,37 @@ msgstr "Effacement contour" msgid "Set Width" msgstr "Ajuste Epaiss" -#: pcbnew/class_pad.cpp:801 -#: pcbnew/class_pad.cpp:887 -msgid "Unknown Pad shape" -msgstr "Forme pad inconnue" +#: pcbnew/plotps.cpp:361 +#: pcbnew/affiche.cpp:63 +#: pcbnew/class_board.cpp:406 +msgid "Vias" +msgstr "Vias" -#: pcbnew/class_pad.cpp:976 -msgid "RefP" -msgstr "RefP" +#: pcbnew/plotps.cpp:390 +msgid "Tracks" +msgstr "Pistes" -#: pcbnew/class_pad.cpp:979 -#: pcbnew/class_board_item.cpp:35 -msgid "Net" -msgstr "Net" - -#: pcbnew/class_pad.cpp:1093 -msgid "Drill X / Y" -msgstr "Perçage X/Y" - -#: pcbnew/class_pad.cpp:1108 -msgid "X Pos" -msgstr "X Pos" - -#: pcbnew/class_pad.cpp:1112 -msgid "Y pos" -msgstr "Y pos" - -#: pcbnew/classpcb.cpp:196 +#: pcbnew/classpcb.cpp:175 msgid "Shape" msgstr "Forme" -#: pcbnew/classpcb.cpp:199 -#: pcbnew/class_board_item.cpp:107 -#: pcbnew/class_track.cpp:776 -#: pcbnew/dialog_pad_edit.cpp:176 -#: pcbnew/dialog_pad_edit.cpp:196 -msgid "Circle" -msgstr "Cercle" - -#: pcbnew/classpcb.cpp:203 +#: pcbnew/classpcb.cpp:182 msgid " Arc " msgstr " Arc " -#: pcbnew/classpcb.cpp:208 -#: pcbnew/class_track.cpp:774 +#: pcbnew/classpcb.cpp:187 +#: pcbnew/class_track.cpp:747 msgid "Segment" msgstr "Segment" -#: pcbnew/editpads.cpp:77 -msgid "Pad Position" -msgstr "Position Pad" +#: pcbnew/plotgerb.cpp:72 +msgid "unable to create file " +msgstr "Impossible de créer fichier " -#: 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/plotgerb.cpp:817 +#, c-format +msgid "unable to reopen file <%s>" +msgstr "Ne peut pas réouvrir fichier <%s>" #: pcbnew/onleftclick.cpp:173 msgid "Graphic not authorized on Copper layers" @@ -2344,56 +2531,79 @@ msgstr "Pistes sur couches cuivre seulement" msgid "Cotation not authorized on Copper layers" msgstr "Cotation non autorisée sur Couches Cuivre" -#: pcbnew/dialog_track_options.cpp:130 +#: pcbnew/dialog_track_options.cpp:134 +msgid "Vias:" +msgstr "Vias:" + +#: pcbnew/dialog_track_options.cpp:138 msgid "Via Size" msgstr "Diametre Via" -#: pcbnew/dialog_track_options.cpp:136 +#: pcbnew/dialog_track_options.cpp:144 msgid "Default Via Drill" msgstr "Perçage vias par défaut" -#: pcbnew/dialog_track_options.cpp:142 +#: pcbnew/dialog_track_options.cpp:150 msgid "Alternate Via Drill" msgstr "Perçage vias alternatif" -#: pcbnew/dialog_track_options.cpp:151 -#: pcbnew/pcbnew.h:289 -msgid "Blind Via" -msgstr "Via borgne" - -#: pcbnew/dialog_track_options.cpp:152 -#: pcbnew/pcbnew.h:290 -msgid "Buried Via" -msgstr "Via enterrée" - -#: pcbnew/dialog_track_options.cpp:153 +#: pcbnew/dialog_track_options.cpp:157 #: pcbnew/pcbnew.h:291 -msgid "Standard Via" -msgstr "Via Standard" +msgid "Through Via" +msgstr "Via Traversante" -#: pcbnew/dialog_track_options.cpp:154 -msgid "Via Type" -msgstr "Type de Via" +#: pcbnew/dialog_track_options.cpp:158 +msgid "Blind or Buried Via " +msgstr "Via enterrée ou Aveugle" + +#: pcbnew/dialog_track_options.cpp:159 +msgid "Default Via Type" +msgstr "Via par Défaut" #: pcbnew/dialog_track_options.cpp:163 +msgid "Micro Vias:" +msgstr "Micro Vias:" + +#: pcbnew/dialog_track_options.cpp:167 +msgid "Micro Via Size" +msgstr "Diametre Micro Via" + +#: pcbnew/dialog_track_options.cpp:173 +msgid "Micro Via Drill" +msgstr "Perçage Micro Via" + +#: pcbnew/dialog_track_options.cpp:181 +msgid "Allows Micro Vias" +msgstr "Autorise Micro Vias" + +#: pcbnew/dialog_track_options.cpp:183 +#: pcbnew/dialog_track_options.cpp:185 +msgid "" +"Allows use of micro vias\n" +"They are very small vias only from an external copper layer to its near neightbour\n" +msgstr "" +"Autorise l'utilisation de micro vias\n" +"Ce sont de petites vias allant d'une couche externe a la plus proche couche interne uniquement\n" + +#: pcbnew/dialog_track_options.cpp:191 msgid "Track Width" msgstr "Epais. Piste" -#: pcbnew/dialog_track_options.cpp:169 +#: pcbnew/dialog_track_options.cpp:197 #: pcbnew/dialog_drc.cpp:439 msgid "Clearance" msgstr "Isolation" -#: pcbnew/dialog_track_options.cpp:175 +#: pcbnew/dialog_track_options.cpp:203 msgid "Mask clearance" msgstr "Retrait Masque" -#: pcbnew/dialog_track_options.cpp:262 +#: pcbnew/dialog_track_options.cpp:303 msgid "" -"You have selected VIA Blind or VIA Buried\n" +"You have selected VIA Blind and Buried\n" "WARNING: this feature is EXPERIMENTAL!!! Accept ?" msgstr "" -"Vous avez sélectionné VIA borgne ou VIA enterrée\n" +"Vous avez sélectionné VIA borgne et enterrée\n" "ATTENTION: Cette possibilité est EXPERIMENTALE!!! Accepter ?" #: pcbnew/dialog_display_options.cpp:186 @@ -2565,7 +2775,7 @@ msgid "Footprint name:" msgstr "Nom Module: " #: pcbnew/modules.cpp:281 -#: pcbnew/onrightclick.cpp:722 +#: pcbnew/onrightclick.cpp:732 msgid "Delete Module" msgstr "Supprimer Module" @@ -3059,7 +3269,7 @@ msgid "Drag Via" msgstr "Drag Via" #: pcbnew/onrightclick.cpp:505 -#: pcbnew/onrightclick.cpp:569 +#: pcbnew/onrightclick.cpp:579 msgid "Edit Via" msgstr "Edit Via" @@ -3119,331 +3329,216 @@ msgstr "Terminer Piste" msgid "Place Via" msgstr "Place Via" -#: pcbnew/onrightclick.cpp:567 +#: pcbnew/onrightclick.cpp:568 +msgid "Place Micro Via" +msgstr "Place Micro Via" + +#: pcbnew/onrightclick.cpp:577 msgid "Change Width" msgstr "Change Largeur" -#: pcbnew/onrightclick.cpp:570 +#: pcbnew/onrightclick.cpp:580 msgid "Edit Segment" msgstr "Edit Segment" -#: pcbnew/onrightclick.cpp:575 +#: pcbnew/onrightclick.cpp:585 msgid "Edit Track" msgstr "Editer Piste" -#: pcbnew/onrightclick.cpp:577 +#: pcbnew/onrightclick.cpp:587 msgid "Edit Net" msgstr "Edit Net" -#: pcbnew/onrightclick.cpp:579 +#: pcbnew/onrightclick.cpp:589 msgid "Edit ALL Tracks and Vias" msgstr "Editer TOUTES Pistes et Vias" -#: pcbnew/onrightclick.cpp:581 +#: pcbnew/onrightclick.cpp:591 msgid "Edit ALL Vias (no track)" msgstr "Editer TOUTES Vias (pas les pistes)" -#: pcbnew/onrightclick.cpp:583 +#: pcbnew/onrightclick.cpp:593 msgid "Edit ALL Tracks (no via)" msgstr "Editer TOUTES Pistes (pas les vias)" -#: pcbnew/onrightclick.cpp:591 +#: pcbnew/onrightclick.cpp:601 msgid "Delete Via" msgstr "Suppression Via" -#: pcbnew/onrightclick.cpp:591 +#: pcbnew/onrightclick.cpp:601 msgid "Delete Segment" msgstr "SupprimerSegment" -#: pcbnew/onrightclick.cpp:598 +#: pcbnew/onrightclick.cpp:608 msgid "Delete Track" msgstr "Effacer Piste" -#: pcbnew/onrightclick.cpp:602 +#: pcbnew/onrightclick.cpp:612 msgid "Delete Net" msgstr "Supprimer Net" -#: pcbnew/onrightclick.cpp:607 +#: pcbnew/onrightclick.cpp:617 msgid "Set Flags" msgstr "Ajust. Flags" -#: pcbnew/onrightclick.cpp:608 +#: pcbnew/onrightclick.cpp:618 msgid "Locked: Yes" msgstr "Verrou: Oui" -#: pcbnew/onrightclick.cpp:609 +#: pcbnew/onrightclick.cpp:619 msgid "Locked: No" msgstr "Verrou: Non" -#: pcbnew/onrightclick.cpp:619 +#: pcbnew/onrightclick.cpp:629 msgid "Track Locked: Yes" msgstr "Piste verrouillée: Oui" -#: pcbnew/onrightclick.cpp:620 +#: pcbnew/onrightclick.cpp:630 msgid "Track Locked: No" msgstr "Piste verrouillée: Non" -#: pcbnew/onrightclick.cpp:622 +#: pcbnew/onrightclick.cpp:632 msgid "Net Locked: Yes" msgstr "Net verrouillé: Oui" -#: pcbnew/onrightclick.cpp:623 +#: pcbnew/onrightclick.cpp:633 msgid "Net Locked: No" msgstr "Net verrouillé: Non" -#: pcbnew/onrightclick.cpp:638 +#: pcbnew/onrightclick.cpp:648 msgid "Place Corner" msgstr "Place Sommet" -#: pcbnew/onrightclick.cpp:648 +#: pcbnew/onrightclick.cpp:654 +#: pcbnew/dialog_drc.cpp:477 +msgid "Zones" +msgstr "Zones" + +#: pcbnew/onrightclick.cpp:659 msgid "Move Corner" msgstr "Déplace Sommet" -#: pcbnew/onrightclick.cpp:650 +#: pcbnew/onrightclick.cpp:661 msgid "Delete Corner" msgstr "Supprimer Sommet" -#: pcbnew/onrightclick.cpp:656 +#: pcbnew/onrightclick.cpp:666 msgid "Create Corner" msgstr "Créer Sommet" -#: pcbnew/onrightclick.cpp:661 +#: pcbnew/onrightclick.cpp:671 msgid "Add Similar Zone" msgstr "Addition d'une Zone Semblable" -#: pcbnew/onrightclick.cpp:664 +#: pcbnew/onrightclick.cpp:674 msgid "Add Cutout Area" msgstr "Addition d'une Zone Interdite" -#: pcbnew/onrightclick.cpp:668 +#: pcbnew/onrightclick.cpp:678 msgid "Fill Zone" msgstr "Remplir Zone" -#: pcbnew/onrightclick.cpp:671 +#: pcbnew/onrightclick.cpp:681 msgid "Edit Zone Params" msgstr "Editer Paramètres de la Zone" -#: pcbnew/onrightclick.cpp:675 +#: pcbnew/onrightclick.cpp:685 msgid "Delete Cutout" msgstr "Supprimer Zone Interdite" -#: pcbnew/onrightclick.cpp:678 +#: pcbnew/onrightclick.cpp:688 msgid "Delete Zone Outline" msgstr "Supprimer Contour de Zone" -#: pcbnew/onrightclick.cpp:700 -#: pcbnew/onrightclick.cpp:745 -#: pcbnew/onrightclick.cpp:783 -#: pcbnew/onrightclick.cpp:842 +#: pcbnew/onrightclick.cpp:710 +#: pcbnew/onrightclick.cpp:755 +#: pcbnew/onrightclick.cpp:793 +#: pcbnew/onrightclick.cpp:852 msgid "Move" msgstr "Move" -#: pcbnew/onrightclick.cpp:703 -#: pcbnew/onrightclick.cpp:785 +#: pcbnew/onrightclick.cpp:713 +#: pcbnew/onrightclick.cpp:795 msgid "Drag" msgstr "Drag" -#: pcbnew/onrightclick.cpp:707 +#: pcbnew/onrightclick.cpp:717 msgid "Rotate +" msgstr "Rotation +" -#: pcbnew/onrightclick.cpp:711 +#: pcbnew/onrightclick.cpp:721 #: eeschema/onrightclick.cpp:301 msgid "Rotate -" msgstr "Rotation -" -#: pcbnew/onrightclick.cpp:712 +#: pcbnew/onrightclick.cpp:722 msgid "Flip" msgstr "Change côté" -#: pcbnew/onrightclick.cpp:802 +#: pcbnew/onrightclick.cpp:812 msgid "delete" msgstr "Effacer" -#: pcbnew/onrightclick.cpp:809 +#: pcbnew/onrightclick.cpp:819 msgid "Autoroute Pad" msgstr "Autoroute Pad" -#: pcbnew/onrightclick.cpp:810 +#: pcbnew/onrightclick.cpp:820 msgid "Autoroute Net" msgstr "Autoroute Net" -#: pcbnew/block.cpp:125 +#: pcbnew/block.cpp:122 msgid "Include Modules" msgstr "Inclure Modules" -#: pcbnew/block.cpp:129 +#: pcbnew/block.cpp:126 msgid "Include tracks" msgstr "Inclure Pistes" -#: pcbnew/block.cpp:133 +#: pcbnew/block.cpp:130 msgid "Include zones" msgstr "Inclure zones" -#: pcbnew/block.cpp:138 +#: pcbnew/block.cpp:135 msgid "Include Text on copper layers" msgstr "Inclure Texte sur couches cuivre" -#: pcbnew/block.cpp:142 +#: pcbnew/block.cpp:139 msgid "Include drawings" msgstr "Inclure tracés" -#: pcbnew/block.cpp:146 +#: pcbnew/block.cpp:143 msgid "Include egde layer" msgstr "Inclure couche Edge" -#: pcbnew/block.cpp:453 +#: pcbnew/block.cpp:450 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 +#: pcbnew/block.cpp:559 msgid "Delete zones" msgstr "SuppressionZones" -#: pcbnew/block.cpp:605 +#: pcbnew/block.cpp:601 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 +#: pcbnew/block.cpp:658 msgid "Zone rotation" msgstr "Rotation Zones" -#: pcbnew/block.cpp:696 -msgid "Draw layers rotation" -msgstr "Rotation couches dessin" - -#: pcbnew/block.cpp:815 +#: pcbnew/block.cpp:766 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 +#: pcbnew/block.cpp:954 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 +#: pcbnew/block.cpp:1109 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/globaleditpad.cpp:76 -msgid "Pads Global Edit" -msgstr "Pads: Edition globale" - -#: pcbnew/globaleditpad.cpp:94 -msgid "Pad Settings..." -msgstr "Caract pad ..." - -#: pcbnew/globaleditpad.cpp:99 -msgid "Change Module" -msgstr "Change module" - -#: pcbnew/globaleditpad.cpp:104 -msgid "Change Id Modules" -msgstr "Change Modules ident." - -#: pcbnew/globaleditpad.cpp:114 -msgid "Pad Filter :" -msgstr "Filtre Pad :" - -#: pcbnew/globaleditpad.cpp:118 -msgid "Shape Filter" -msgstr "Filtre sur forme" - -#: pcbnew/globaleditpad.cpp:122 -msgid "Layer Filter" -msgstr "Filtre sur couche" - -#: pcbnew/globaleditpad.cpp:126 -msgid "Orient Filter" -msgstr "Filtre Orientation" - -#: pcbnew/globaleditpad.cpp:132 -msgid "Change Items :" -msgstr "Eléments à changer:" - -#: pcbnew/globaleditpad.cpp:136 -msgid "Change Size" -msgstr "Change Taille" - -#: pcbnew/globaleditpad.cpp:140 -msgid "Change Shape" -msgstr "Change Forme" - -#: pcbnew/globaleditpad.cpp:144 -msgid "Change Drill" -msgstr "Change Perçage" - -#: pcbnew/globaleditpad.cpp:148 -msgid "Change Orient" -msgstr "Change Orientation" - #: pcbnew/edit.cpp:171 #: pcbnew/editmod.cpp:45 msgid "Module Editor" @@ -3489,15 +3584,21 @@ msgstr "Surbrillance des msgid "Local Ratsnest" msgstr "Monter le chevelu général" -#: pcbnew/plotps.cpp:361 -#: pcbnew/affiche.cpp:63 -#: pcbnew/class_board.cpp:400 -msgid "Vias" -msgstr "Vias" +#: pcbnew/router.cpp:60 +msgid "Unable to create temporary file " +msgstr "Impossible de créer le fichier temporaire " -#: pcbnew/plotps.cpp:390 -msgid "Tracks" -msgstr "Pistes" +#: 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/netlist.cpp:96 #, c-format @@ -3615,11 +3716,11 @@ msgstr "Pcb Graphic" #: pcbnew/class_board_item.cpp:59 #: pcbnew/class_board_item.cpp:68 #: pcbnew/class_board_item.cpp:145 -#: pcbnew/class_board_item.cpp:169 -#: pcbnew/class_board_item.cpp:185 -#: pcbnew/class_board_item.cpp:212 -#: pcbnew/class_board_item.cpp:229 -#: pcbnew/class_board_item.cpp:235 +#: pcbnew/class_board_item.cpp:177 +#: pcbnew/class_board_item.cpp:193 +#: pcbnew/class_board_item.cpp:220 +#: pcbnew/class_board_item.cpp:237 +#: pcbnew/class_board_item.cpp:243 msgid " on " msgstr " sur " @@ -3637,23 +3738,18 @@ msgstr " de " msgid "Graphic" msgstr "Graphique" -#: pcbnew/class_board_item.cpp:101 -#: pcbnew/dialog_pad_edit.cpp:198 -msgid "Rect" -msgstr "Rect" - #: pcbnew/class_board_item.cpp:104 msgid "Arc" msgstr "Arc" #: pcbnew/class_board_item.cpp:139 #: pcbnew/pcbframe.cpp:447 -#: pcbnew/class_track.cpp:739 +#: pcbnew/class_track.cpp:712 msgid "Track" msgstr "Piste" #: pcbnew/class_board_item.cpp:146 -#: pcbnew/dialog_zones_by_polygon.cpp:220 +#: pcbnew/dialog_zones_by_polygon.cpp:228 msgid "Net:" msgstr "Net:" @@ -3662,51 +3758,57 @@ msgid "Length:" msgstr "Long.:" #: pcbnew/class_board_item.cpp:152 -#: pcbnew/class_zone.cpp:416 +#: pcbnew/class_zone.cpp:448 msgid "Zone Outline" msgstr "Contour de Zone" #: pcbnew/class_board_item.cpp:156 -#: pcbnew/class_zone.cpp:419 +#: pcbnew/class_zone.cpp:451 msgid "(Cutout)" msgstr "(Cutout)" -#: pcbnew/class_board_item.cpp:173 -#: pcbnew/class_track.cpp:743 +#: pcbnew/class_board_item.cpp:175 +#: pcbnew/class_zone.cpp:471 +msgid "Not Found" +msgstr " Non Trouvé" + +#: pcbnew/class_board_item.cpp:181 +#: pcbnew/class_track.cpp:716 msgid "Zone" msgstr "Zone" -#: pcbnew/class_board_item.cpp:191 +#: pcbnew/class_board_item.cpp:199 #: pcbnew/pcbframe.cpp:479 msgid "Via" msgstr "Via" -#: pcbnew/class_board_item.cpp:195 -msgid "Blind" -msgstr "Enterrée" +#: pcbnew/class_board_item.cpp:203 +msgid "Blind/Buried" +msgstr "Borgne/Aveugle" -#: pcbnew/class_board_item.cpp:197 -msgid "Buried" -msgstr "Borgne" +#: pcbnew/class_board_item.cpp:205 +#: pcbnew/pcbnew.h:289 +msgid "Micro Via" +msgstr "Micro Via" -#: pcbnew/class_board_item.cpp:219 +#: pcbnew/class_board_item.cpp:227 #: pcbnew/class_marker.cpp:112 msgid "Marker" msgstr "Marqueur" -#: pcbnew/class_board_item.cpp:224 +#: pcbnew/class_board_item.cpp:232 msgid "Dimension" msgstr "Dimension" -#: pcbnew/class_board_item.cpp:229 +#: pcbnew/class_board_item.cpp:237 msgid "Target" msgstr "Mire" -#: pcbnew/class_board_item.cpp:230 +#: pcbnew/class_board_item.cpp:238 msgid "size" msgstr "dimension" -#: pcbnew/class_board_item.cpp:235 +#: pcbnew/class_board_item.cpp:243 msgid "Edge Zone" msgstr "Contour Zone" @@ -3722,15 +3824,6 @@ msgstr "Type Err" msgid "Pcbnew is already running, Continue?" msgstr "Pcbnew est est cours d'exécution. Continuer ?" -#: pcbnew/plotgerb.cpp:72 -msgid "unable to create file " -msgstr "Impossible de créer fichier " - -#: pcbnew/plotgerb.cpp:817 -#, c-format -msgid "unable to reopen file <%s>" -msgstr "Ne peut pas réouvrir fichier <%s>" - #: pcbnew/pcbframe.cpp:266 msgid "Board modified, Save before exit ?" msgstr "Circuit Imprimé modifiée, Sauver avant de quitter ?" @@ -3832,27 +3925,11 @@ msgid "Dimension properties" msgstr "Propriétés des Cotes" #: pcbnew/cotation.cpp:133 -#: pcbnew/dialog_zones_by_polygon.cpp:227 +#: pcbnew/dialog_zones_by_polygon.cpp:235 #: gerbview/affiche.cpp:37 msgid "Layer:" msgstr "Couche:" -#: 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/editrack-part2.cpp:32 #, c-format msgid "Track Width: %s Vias Size : %s" @@ -3876,33 +3953,28 @@ msgstr "Net Code" #: pcbnew/affiche.cpp:52 #: pcbnew/class_module.cpp:1228 -#: pcbnew/class_board.cpp:390 +#: pcbnew/class_board.cpp:396 msgid "Pads" msgstr "Pads" -#: pcbnew/class_track.cpp:765 +#: pcbnew/class_track.cpp:738 #: pcbnew/zones.cpp:873 -#: pcbnew/zones_by_polygon.cpp:831 -#: pcbnew/class_zone.cpp:432 +#: pcbnew/zones_by_polygon.cpp:864 +#: pcbnew/class_zone.cpp:474 msgid "NetName" msgstr "NetName" -#: pcbnew/class_track.cpp:770 -#: pcbnew/class_zone.cpp:437 +#: pcbnew/class_track.cpp:743 +#: pcbnew/class_zone.cpp:479 msgid "NetCode" msgstr "NetCode" -#: pcbnew/class_track.cpp:778 -#: pcbnew/dialog_pad_edit.cpp:205 -msgid "Standard" -msgstr "Standard" - -#: pcbnew/class_track.cpp:790 +#: pcbnew/class_track.cpp:763 #: pcbnew/class_module.cpp:1236 msgid "Stat" msgstr "Stat" -#: pcbnew/class_track.cpp:814 +#: pcbnew/class_track.cpp:787 msgid "Diam" msgstr "Diam" @@ -4068,134 +4140,6 @@ msgstr "Pin %s (module %s) non trouv msgid "Locate Pin %s (module %s)" msgstr "Pin localisée %s (module %s)" -#: pcbnew/dialog_pad_edit.cpp:157 -msgid "Pad Num :" -msgstr "Num Pad :" - -#: pcbnew/dialog_pad_edit.cpp:163 -msgid "Pad Net Name :" -msgstr "NetName Pad:" - -#: pcbnew/dialog_pad_edit.cpp:177 -#: pcbnew/dialog_pad_edit.cpp:197 -msgid "Oval" -msgstr "Ovale" - -#: pcbnew/dialog_pad_edit.cpp:178 -msgid "Drill Shape:" -msgstr "Forme du perçage:" - -#: pcbnew/dialog_pad_edit.cpp:186 -#: pcbnew/clean.cpp:462 -#: eeschema/dialog_erc.cpp:192 -#: eeschema/dialog_erc.cpp:196 -#: eeschema/dialog_edit_component_in_schematic.cpp:171 -msgid "0" -msgstr "0" - -#: pcbnew/dialog_pad_edit.cpp:187 -msgid "90" -msgstr "90" - -#: pcbnew/dialog_pad_edit.cpp:188 -#: eeschema/dialog_edit_component_in_schematic.cpp:174 -msgid "-90" -msgstr "-90" - -#: pcbnew/dialog_pad_edit.cpp:189 -#: eeschema/dialog_edit_component_in_schematic.cpp:173 -msgid "180" -msgstr "180" - -#: pcbnew/dialog_pad_edit.cpp:191 -msgid "Pad Orient:" -msgstr "Orient pad:" - -#: pcbnew/dialog_pad_edit.cpp:199 -msgid "Trapezoidal" -msgstr "Trapezoidal" - -#: pcbnew/dialog_pad_edit.cpp:200 -msgid "Pad Shape:" -msgstr "Forme Pad:" - -#: pcbnew/dialog_pad_edit.cpp:206 -msgid "SMD" -msgstr "CMS" - -#: pcbnew/dialog_pad_edit.cpp:207 -#: eeschema/netlist.cpp:210 -msgid "Conn" -msgstr "Conn" - -#: pcbnew/dialog_pad_edit.cpp:208 -msgid "Hole" -msgstr "Hole" - -#: pcbnew/dialog_pad_edit.cpp:209 -msgid "Mechanical" -msgstr "Mechanical" - -#: pcbnew/dialog_pad_edit.cpp:210 -msgid "Pad Type:" -msgstr "Type Pad:" - -#: pcbnew/dialog_pad_edit.cpp:225 -msgid "Layers:" -msgstr "Couches:" - -#: pcbnew/dialog_pad_edit.cpp:229 -msgid "Copper layer" -msgstr "Couches Cuivre" - -#: pcbnew/dialog_pad_edit.cpp:233 -msgid "Comp layer" -msgstr "Couche Cmp" - -#: pcbnew/dialog_pad_edit.cpp:239 -msgid "Adhesive Cmp" -msgstr "Adhesive Cmp" - -#: pcbnew/dialog_pad_edit.cpp:243 -msgid "Adhesive Copper" -msgstr "Adhesive Cu" - -#: pcbnew/dialog_pad_edit.cpp:247 -msgid "Solder paste Cmp" -msgstr "Pate à souder Cmp" - -#: pcbnew/dialog_pad_edit.cpp:251 -msgid "Solder paste Copper" -msgstr "Pate à souder cuivre" - -#: pcbnew/dialog_pad_edit.cpp:255 -msgid "Silkscreen Cmp" -msgstr "Sérigr Cmp" - -#: pcbnew/dialog_pad_edit.cpp:259 -msgid "Silkscreen Copper" -msgstr "Sérigr Cu " - -#: pcbnew/dialog_pad_edit.cpp:263 -msgid "Solder mask Cmp" -msgstr "Masque soudure Cmp" - -#: pcbnew/dialog_pad_edit.cpp:267 -msgid "Solder mask Copper" -msgstr "Masque soudure cuivre" - -#: pcbnew/dialog_pad_edit.cpp:271 -msgid "E.C.O.1 layer" -msgstr "couche E.C.O.1" - -#: pcbnew/dialog_pad_edit.cpp:275 -msgid "E.C.O.2 layer" -msgstr "couche E.C.O.2" - -#: pcbnew/dialog_pad_edit.cpp:279 -msgid "Draft layer" -msgstr "Couche dessin" - #: pcbnew/class_edge_mod.cpp:283 msgid "Seg" msgstr "Seg" @@ -4303,58 +4247,6 @@ msgstr "Change module %s (%s) " msgid "Cmp files:" msgstr "Fichiers Cmp: " -#: pcbnew/clean.cpp:177 -msgid "Delete unconnected tracks:" -msgstr "Suppression Pistes non connectées" - -#: pcbnew/clean.cpp:196 -msgid "ViaDef" -msgstr "ViaDef" - -#: pcbnew/clean.cpp:368 -msgid "Clean Null Segments" -msgstr "Nettoyage segments nulls" - -#: pcbnew/clean.cpp:460 -msgid "Merging Segments:" -msgstr "Associe Segment" - -#: pcbnew/clean.cpp:462 -msgid "Merge" -msgstr "Merge" - -#: pcbnew/clean.cpp:478 -msgid "Merge: " -msgstr "Merge: " - -#: pcbnew/clean.cpp:708 -msgid "DRC Control:" -msgstr "Controle DRC:" - -#: pcbnew/clean.cpp:713 -msgid "NetCtr" -msgstr "NetCtr" - -#: pcbnew/clean.cpp:1059 -msgid "Centre" -msgstr "Centre" - -#: pcbnew/clean.cpp:1059 -msgid "0 " -msgstr "0" - -#: pcbnew/clean.cpp:1070 -msgid "Pads: " -msgstr "Pastilles: " - -#: pcbnew/clean.cpp:1074 -msgid "Max" -msgstr "Max" - -#: pcbnew/clean.cpp:1077 -msgid "Segm" -msgstr "Segm" - #: pcbnew/zones.cpp:155 #: pcbnew/zones.cpp:156 #: pcbnew/zones.cpp:157 @@ -4419,12 +4311,12 @@ msgid "Update Options" msgstr "Maj Options" #: pcbnew/zones.cpp:235 -#: pcbnew/dialog_zones_by_polygon.cpp:239 +#: pcbnew/dialog_zones_by_polygon.cpp:247 msgid "Zone clearance value:" msgstr "Valeur isolation zone:" #: pcbnew/zones.cpp:238 -#: pcbnew/dialog_zones_by_polygon.cpp:242 +#: pcbnew/dialog_zones_by_polygon.cpp:250 msgid "Grid :" msgstr "Grille:" @@ -4441,30 +4333,39 @@ msgid "Delete Current Zone Edges" msgstr "Effacer contour zone courant" #: pcbnew/zones.cpp:871 -#: pcbnew/zones_by_polygon.cpp:829 +#: pcbnew/zones_by_polygon.cpp:862 msgid "No Net" msgstr "No Net" -#: pcbnew/specctra.cpp:1015 -#: pcbnew/specctra.cpp:1022 -msgid "Expecting" -msgstr "Attendu" +#: pcbnew/dsn.cpp:469 +msgid "Line length exceeded" +msgstr "Longueur de ligne dépassée" -#: pcbnew/specctra.cpp:1031 -#: pcbnew/specctra.cpp:1038 -msgid "Unexpected" -msgstr "Inattendu" +#: pcbnew/dsn.cpp:579 +msgid "in file" +msgstr "dans le fichier" -#: pcbnew/specctra.cpp:1059 -#: pcbnew/specctra.cpp:1817 -#, c-format -msgid "Unable to open file \"%s\"" -msgstr "Ne peut pas ouvrirle fichier \"%s\"" +#: pcbnew/dsn.cpp:580 +msgid "on line" +msgstr "en ligne" -#: pcbnew/specctra.cpp:1792 -#, c-format -msgid "System file error writing to file \"%s\"" -msgstr "Erreur système sur écriture fichier \"%s\"" +#: pcbnew/dsn.cpp:581 +msgid "at offset" +msgstr "a l'offset" + +#: pcbnew/dsn.cpp:629 +msgid "String delimiter must be a single character of ', \", or $" +msgstr "Le caractère de délimitation de ligne doit être un seul caractère ', \", or $" + +#: pcbnew/dsn.cpp:708 +msgid "Un-terminated delimited string" +msgstr "Ligne délimitée non terminée" + +#: pcbnew/zones_by_polygon.cpp:324 +#: pcbnew/zones_by_polygon.cpp:378 +#: pcbnew/zones_by_polygon.cpp:667 +msgid "Area: DRC outline error" +msgstr "Zone; Erreur DRC sur contour" #: pcbnew/move_or_drag_track.cpp:714 msgid "Unable to drag this segment: too many segments connected" @@ -4502,38 +4403,22 @@ msgstr "Avanc msgid "Net sorting:" msgstr "Tri des Equipotentielles:" -#: pcbnew/dialog_zones_by_polygon.cpp:462 +#: pcbnew/dialog_zones_by_polygon.cpp:217 +msgid "Filter" +msgstr "Filtre" + +#: pcbnew/dialog_zones_by_polygon.cpp:222 +msgid "Do not list net names which match with this text, in advanced mode" +msgstr "" + +#: pcbnew/dialog_zones_by_polygon.cpp:501 msgid "Error : you must choose a layer" msgstr "Erreur. Vous devez choisir une couche" -#: pcbnew/dialog_zones_by_polygon.cpp:471 +#: pcbnew/dialog_zones_by_polygon.cpp:510 msgid "Error : you must choose a net name" msgstr "Erreur. Vous devez choisir une équipotentielle" -#: pcbnew/dsn.cpp:467 -msgid "Line length exceeded" -msgstr "Longueur de ligne dépassée" - -#: pcbnew/dsn.cpp:577 -msgid "in file" -msgstr "dans le fichier" - -#: pcbnew/dsn.cpp:578 -msgid "on line" -msgstr "en ligne" - -#: pcbnew/dsn.cpp:579 -msgid "at offset" -msgstr "a l'offset" - -#: pcbnew/dsn.cpp:618 -msgid "String delimiter must be a single character of ', \", or $" -msgstr "Le caractère de délimitation de ligne doit être un seul caractère ', \", or $" - -#: pcbnew/dsn.cpp:697 -msgid "Un-terminated delimited string" -msgstr "Ligne délimitée non terminée" - #: pcbnew/initpcb.cpp:125 msgid "Current Board will be lost ?" msgstr "Le C.I. courant sera perdu ?" @@ -4564,6 +4449,103 @@ msgstr "Effacement des Modules?" msgid "Delete Pcb Texts" msgstr "Effacer Textes Pcb" +#: pcbnew/sel_layer.cpp:92 +msgid "Select Layer:" +msgstr "Selection couche:" + +#: pcbnew/sel_layer.cpp:137 +msgid "(Deselect)" +msgstr "(Deselection)" + +#: 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/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/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/move-drag_pads.cpp:251 +#, c-format +msgid "Delete Pad (module %s %s) " +msgstr "Effacer Pad (module %s %s) " + +#: pcbnew/globaleditpad.cpp:76 +msgid "Pads Global Edit" +msgstr "Pads: Edition globale" + +#: pcbnew/globaleditpad.cpp:94 +msgid "Pad Settings..." +msgstr "Caract pad ..." + +#: pcbnew/globaleditpad.cpp:99 +msgid "Change Module" +msgstr "Change module" + +#: pcbnew/globaleditpad.cpp:104 +msgid "Change Id Modules" +msgstr "Change Modules ident." + +#: pcbnew/globaleditpad.cpp:114 +msgid "Pad Filter :" +msgstr "Filtre Pad :" + +#: pcbnew/globaleditpad.cpp:118 +msgid "Shape Filter" +msgstr "Filtre sur forme" + +#: pcbnew/globaleditpad.cpp:122 +msgid "Layer Filter" +msgstr "Filtre sur couche" + +#: pcbnew/globaleditpad.cpp:126 +msgid "Orient Filter" +msgstr "Filtre Orientation" + +#: pcbnew/globaleditpad.cpp:132 +msgid "Change Items :" +msgstr "Eléments à changer:" + +#: pcbnew/globaleditpad.cpp:136 +msgid "Change Size" +msgstr "Change Taille" + +#: pcbnew/globaleditpad.cpp:140 +msgid "Change Shape" +msgstr "Change Forme" + +#: pcbnew/globaleditpad.cpp:144 +msgid "Change Drill" +msgstr "Change Perçage" + +#: pcbnew/globaleditpad.cpp:148 +msgid "Change Orient" +msgstr "Change Orientation" + +#: pcbnew/zone_filling_algorithm.cpp:155 +msgid "No pads or starting point found to fill this zone outline" +msgstr "Pas de pads ou de points de départ pour remplir ce contour de zone" + +#: pcbnew/zone_filling_algorithm.cpp:193 +msgid "Ok" +msgstr "Ok" + #: pcbnew/find.cpp:114 msgid "Marker found" msgstr "Marqueur trouvé" @@ -4603,115 +4585,27 @@ msgstr "Chercher Marqueur" msgid "Find Next Marker" msgstr "Marqueur Suivant" -#: pcbnew/class_board.cpp:403 +#: pcbnew/class_board.cpp:409 msgid "Nodes" msgstr "Nodes" -#: pcbnew/class_board.cpp:406 +#: pcbnew/class_board.cpp:412 msgid "Links" msgstr "Liens" -#: pcbnew/class_board.cpp:409 +#: pcbnew/class_board.cpp:415 msgid "Nets" msgstr "Nets" -#: pcbnew/class_board.cpp:412 +#: pcbnew/class_board.cpp:418 msgid "Connect" msgstr "Connect" -#: pcbnew/class_board.cpp:415 +#: pcbnew/class_board.cpp:421 #: eeschema/eelayer.h:116 msgid "NoConn" msgstr "Non Conn" -#: pcbnew/drc.cpp:1324 -msgid "Tst Pad to Pad\n" -msgstr "Tst Pad to Pad\n" - -#: pcbnew/drc.cpp:1370 -#: pcbnew/drc.cpp:1444 -msgid "SegmNb" -msgstr "SegmNb" - -#: pcbnew/drc.cpp:1371 -msgid "Track Err" -msgstr "Err Pistes" - -#: pcbnew/drc.cpp:1375 -msgid "Tst Tracks\n" -msgstr "Tst Pistes\n" - -#: pcbnew/drc.cpp:1406 -#: pcbnew/drc.cpp:1484 -#: eeschema/eelayer.h:104 -msgid "Netname" -msgstr "NetName" - -#: pcbnew/drc.cpp:1445 -msgid "Zone Err" -msgstr "Err. Zone" - -#: pcbnew/drc.cpp:1448 -msgid "Tst Zones\n" -msgstr "Test Zones\n" - -#: pcbnew/drc.cpp:1571 -msgid "Look for active routes\n" -msgstr "Recherche des chevelus actifs\n" - -#: pcbnew/drc.cpp:1594 -#, c-format -msgid "%d > Pad %s (%s) @ %.4f,%.4f and " -msgstr "%d > Pad %s (%s) @ %.4f,%.4f et " - -#: pcbnew/drc.cpp:1608 -#, c-format -msgid "Pad %s (%s) @ %.4f,%.4f\n" -msgstr "Pad %s (%s) @ %.4f,%.4f\n" - -#: pcbnew/drc.cpp:1618 -#, c-format -msgid "Active routes: %d\n" -msgstr "Active routes: %d\n" - -#: pcbnew/drc.cpp:1620 -msgid "OK! (No active routes)\n" -msgstr "OK! (Pas de chevelu actif)\n" - -#: pcbnew/drc.cpp:1679 -#, c-format -msgid "** End Drc: %d errors **\n" -msgstr "** FinDrc: %d erreurs **\n" - -#: pcbnew/drc.cpp:1681 -msgid "** End Drc: No Error **\n" -msgstr "** Fin Drc: Aucune Erreur **\n" - -#: pcbnew/drc.cpp:1690 -#, c-format -msgid "Report file <%s> created\n" -msgstr "Fichier rapport <%s> créé\n" - -#: pcbnew/drc.cpp:2588 -#, 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:2605 -#, 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:2621 -#, 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:2681 -#, 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/basepcbframe.cpp:159 msgid "3D Frame already opened" msgstr "Fenetre 3D déjà ouverte" @@ -4765,10 +4659,6 @@ msgstr "Pad msgid "Include tests for clearances between pad to pads" msgstr "Inclure test de l'isolation entre pads" -#: pcbnew/dialog_drc.cpp:477 -msgid "Zones" -msgstr "Zones" - #: pcbnew/dialog_drc.cpp:480 msgid "Include zones in clearance or unconnected tests" msgstr "Inclure zones dans les test d'isolation en test tests de nonconnexion" @@ -4849,11 +4739,11 @@ msgstr "Fichier rapport termin msgid "DRC Report file" msgstr "Fichier rapport de contrôle DRC:" -#: pcbnew/class_zone.cpp:445 +#: pcbnew/class_zone.cpp:487 msgid "Corners" msgstr "Sommets" -#: pcbnew/class_zone.cpp:449 +#: pcbnew/class_zone.cpp:491 msgid "Hatch lines" msgstr "Lignes de Hachure" @@ -4897,12 +4787,20 @@ msgstr "Pad pr msgid "Via hole > diameter" msgstr "Perçage via > diamètre" -#: pcbnew/hotkeys.cpp:443 +#: pcbnew/class_drc_item.cpp:69 +msgid "Copper area inside copper area" +msgstr "Zone de cuivre à l'intérieur d'une zone de cuivre" + +#: pcbnew/class_drc_item.cpp:71 +msgid "Copper areas intersect or too close" +msgstr "Les zones de cuivre se coupent ou sont trop proches" + +#: pcbnew/hotkeys.cpp:467 #, c-format msgid "Footprint %s found, but locked" msgstr "Module %s trouvé, mais verrouillé" -#: pcbnew/hotkeys.cpp:608 +#: pcbnew/hotkeys.cpp:632 msgid "Delete module?" msgstr "Effacer Module?" @@ -5195,7 +5093,7 @@ msgstr "\" de la librairie \"" #: eeschema/libedit.cpp:373 msgid "Clear old component from screen (changes will be lost)?" -msgstr "" +msgstr "Supprimer l'ancien composant de l'écran (les changements seront perdus)?" #: eeschema/libedit.cpp:391 msgid "\" exists in library \"" @@ -7113,38 +7011,6 @@ msgstr "Erreur. Vous devez entre une ligne de commande" msgid "Error. You must provide a Title" msgstr "Erreur. Vous devez entre un titre" -#: 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/edit_component_in_lib.cpp:168 #: eeschema/dialog_edit_component_in_lib.h:43 msgid "Lib Component Properties" @@ -7806,6 +7672,11 @@ msgstr "Tout" msgid "default" msgstr "Défaut" +#: eeschema/symbdraw.cpp:795 +#, c-format +msgid "Arc %.1f deg" +msgstr "Arc %.1f deg" + #: eeschema/delsheet.cpp:42 #, c-format msgid "Sheet %s (file %s) modified. Save it?" @@ -7867,11 +7738,6 @@ msgstr "Noir" msgid "Background Color:" msgstr "Couleur du Fond:" -#: eeschema/symbdraw.cpp:795 -#, c-format -msgid "Arc %.1f deg" -msgstr "Arc %.1f deg" - #: eeschema/pinedit-dialog.cpp:233 msgid "Pin Name :" msgstr "Nom de la pin :" @@ -8060,6 +7926,38 @@ msgstr "S msgid "Mirror Block (ctrl + drag mouse)" msgstr "Bloc Miroir (ctrl + drag mouse)" +#: 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/eelibs_read_libraryfiles.cpp:115 msgid "Start loading schematic libs" msgstr "Demarre chargement des librairies schématiques" @@ -8290,16 +8188,6 @@ msgstr "Format Netliste: ViewLogic net&pkg" msgid "Component [%s] not found in .pkg file" msgstr "Composant [%s] non trouvé en fichier .pkg" -#: cvpcb/listlib.cpp:69 -#, c-format -msgid "Library file <%s> not found" -msgstr "Librairie %s non trouvée" - -#: cvpcb/listlib.cpp:79 -#, c-format -msgid "Library file <%s> is not a module library" -msgstr "Le fichier %s n'est pas une librairie eeschema" - #: cvpcb/init.cpp:64 #, c-format msgid "Components: %d (free: %d)" @@ -8428,6 +8316,16 @@ msgstr "Ouvrir la documentation de cvpcb" msgid "Netlist Format: Pcad" msgstr " Format NetListe: Pcad" +#: cvpcb/listlib.cpp:69 +#, c-format +msgid "Library file <%s> not found" +msgstr "Librairie %s non trouvée" + +#: cvpcb/listlib.cpp:79 +#, c-format +msgid "Library file <%s> is not a module library" +msgstr "Le fichier %s n'est pas une librairie eeschema" + #: cvpcb/cvframe.cpp:175 msgid "Netlist and Cmp list modified, Save before exit ?" msgstr "Netlist et liste composants modifiés, Sauver avant de quitter ?" @@ -9260,126 +9158,6 @@ msgstr "X" msgid "Y" msgstr "Y" -#: common/common.cpp:48 -msgid " (\"):" -msgstr " (\"):" - -#: common/common.cpp:277 -msgid "Copper " -msgstr "Cuivre " - -#: common/common.cpp:277 -msgid "Inner L1 " -msgstr "Interne 1" - -#: common/common.cpp:277 -msgid "Inner L2 " -msgstr "Interne 2" - -#: common/common.cpp:277 -msgid "Inner L3 " -msgstr "Interne 3" - -#: common/common.cpp:278 -msgid "Inner L4 " -msgstr "Interne 4" - -#: common/common.cpp:278 -msgid "Inner L5 " -msgstr "Interne 5" - -#: common/common.cpp:278 -msgid "Inner L6 " -msgstr "Interne 6" - -#: common/common.cpp:278 -msgid "Inner L7 " -msgstr "Interne 7" - -#: common/common.cpp:279 -msgid "Inner L8 " -msgstr "Interne 8" - -#: common/common.cpp:279 -msgid "Inner L9 " -msgstr "Interne 9" - -#: common/common.cpp:279 -msgid "Inner L10" -msgstr "Interne 10" - -#: common/common.cpp:279 -msgid "Inner L11" -msgstr "Interne 11" - -#: common/common.cpp:280 -msgid "Inner L12" -msgstr "Interne 12" - -#: common/common.cpp:280 -msgid "Inner L13" -msgstr "Interne 13" - -#: common/common.cpp:280 -msgid "Inner L14" -msgstr "Interne 14" - -#: common/common.cpp:281 -msgid "Adhes Cop" -msgstr "Adhes Cu " - -#: common/common.cpp:281 -msgid "Adhes Cmp" -msgstr "Adhe Cmp" - -#: common/common.cpp:281 -msgid "SoldP Cop" -msgstr "SoldP Cu " - -#: common/common.cpp:281 -msgid "SoldP Cmp" -msgstr "SoldP Cmp" - -#: common/common.cpp:282 -msgid "SilkS Cop" -msgstr "Sérigr Cu " - -#: common/common.cpp:282 -msgid "SilkS Cmp" -msgstr "Sérigr Cmp" - -#: common/common.cpp:282 -msgid "Mask Cop " -msgstr "Masque Cu " - -#: common/common.cpp:282 -msgid "Mask Cmp " -msgstr "Masque Cmp" - -#: common/common.cpp:283 -msgid "Drawings " -msgstr "Drawings " - -#: common/common.cpp:283 -msgid "Comments " -msgstr "Comments " - -#: common/common.cpp:283 -msgid "Eco1 " -msgstr "Eco1 " - -#: common/common.cpp:283 -msgid "Eco2 " -msgstr "Eco2 " - -#: common/common.cpp:284 -msgid "Edges Pcb" -msgstr "Contour Pcb" - -#: common/common.cpp:284 -msgid "--- " -msgstr "--- " - #: common/basicframe.cpp:216 #, c-format msgid "Help file %s not found" @@ -9499,6 +9277,202 @@ msgstr "Inversion Bloc" msgid "Block Mirror" msgstr "Bloc Miroir" +#: common/common.cpp:49 +msgid " (\"):" +msgstr " (\"):" + +#: common/common.cpp:295 +msgid "H2 Bottom" +msgstr "H2 Bottom" + +#: common/common.cpp:295 +msgid "Power" +msgstr "Power" + +#: common/common.cpp:295 +msgid "V2 Signal" +msgstr "V2 Signal" + +#: common/common.cpp:295 +msgid "H1 Signal" +msgstr "H1 Signal" + +#: common/common.cpp:296 +msgid "Ground" +msgstr "Ground" + +#: common/common.cpp:296 +#: common/common.cpp:307 +#: common/common.cpp:340 +msgid "Inner L5 " +msgstr "Interne 5" + +#: common/common.cpp:296 +#: common/common.cpp:307 +#: common/common.cpp:340 +msgid "Inner L6 " +msgstr "Interne 6" + +#: common/common.cpp:296 +#: common/common.cpp:307 +#: common/common.cpp:340 +msgid "Inner L7 " +msgstr "Interne 7" + +#: common/common.cpp:297 +#: common/common.cpp:308 +#: common/common.cpp:341 +msgid "Inner L8 " +msgstr "Interne 8" + +#: common/common.cpp:297 +#: common/common.cpp:308 +#: common/common.cpp:341 +msgid "Inner L9 " +msgstr "Interne 9" + +#: common/common.cpp:297 +#: common/common.cpp:308 +#: common/common.cpp:341 +msgid "Inner L10" +msgstr "Interne 10" + +#: common/common.cpp:297 +#: common/common.cpp:308 +#: common/common.cpp:341 +msgid "Inner L11" +msgstr "Interne 11" + +#: common/common.cpp:298 +#: common/common.cpp:309 +#: common/common.cpp:342 +msgid "Inner L12" +msgstr "Interne 12" + +#: common/common.cpp:298 +#: common/common.cpp:309 +#: common/common.cpp:342 +msgid "Inner L13" +msgstr "Interne 13" + +#: common/common.cpp:298 +#: common/common.cpp:309 +#: common/common.cpp:342 +msgid "Inner L14" +msgstr "Interne 14" + +#: common/common.cpp:299 +#: common/common.cpp:310 +#: common/common.cpp:343 +msgid "Adhes Cop" +msgstr "Adhes Cu " + +#: common/common.cpp:299 +#: common/common.cpp:310 +#: common/common.cpp:343 +msgid "Adhes Cmp" +msgstr "Adhe Cmp" + +#: common/common.cpp:299 +#: common/common.cpp:310 +#: common/common.cpp:343 +msgid "SoldP Cop" +msgstr "SoldP Cu " + +#: common/common.cpp:299 +#: common/common.cpp:310 +#: common/common.cpp:343 +msgid "SoldP Cmp" +msgstr "SoldP Cmp" + +#: common/common.cpp:300 +#: common/common.cpp:311 +#: common/common.cpp:344 +msgid "SilkS Cop" +msgstr "Sérigr Cu " + +#: common/common.cpp:300 +#: common/common.cpp:311 +#: common/common.cpp:344 +msgid "SilkS Cmp" +msgstr "Sérigr Cmp" + +#: common/common.cpp:300 +#: common/common.cpp:311 +#: common/common.cpp:344 +msgid "Mask Cop " +msgstr "Masque Cu " + +#: common/common.cpp:300 +#: common/common.cpp:311 +#: common/common.cpp:344 +msgid "Mask Cmp " +msgstr "Masque Cmp" + +#: common/common.cpp:301 +#: common/common.cpp:312 +#: common/common.cpp:345 +msgid "Drawings " +msgstr "Drawings " + +#: common/common.cpp:301 +#: common/common.cpp:312 +#: common/common.cpp:345 +msgid "Comments " +msgstr "Comments " + +#: common/common.cpp:301 +#: common/common.cpp:312 +#: common/common.cpp:345 +msgid "Eco1 " +msgstr "Eco1 " + +#: common/common.cpp:301 +#: common/common.cpp:312 +#: common/common.cpp:345 +msgid "Eco2 " +msgstr "Eco2 " + +#: common/common.cpp:302 +#: common/common.cpp:313 +#: common/common.cpp:346 +msgid "Edges Pcb" +msgstr "Contour Pcb" + +#: common/common.cpp:302 +#: common/common.cpp:313 +msgid "BAD INDEX" +msgstr "BAD INDEX" + +#: common/common.cpp:306 +#: common/common.cpp:339 +msgid "Copper " +msgstr "Cuivre " + +#: common/common.cpp:306 +#: common/common.cpp:339 +msgid "Inner L1 " +msgstr "Interne 1" + +#: common/common.cpp:306 +#: common/common.cpp:339 +msgid "Inner L2 " +msgstr "Interne 2" + +#: common/common.cpp:306 +#: common/common.cpp:339 +msgid "Inner L3 " +msgstr "Interne 3" + +#: common/common.cpp:307 +#: common/common.cpp:340 +msgid "Inner L4 " +msgstr "Interne 4" + +#: common/common.cpp:346 +msgid "--- " +msgstr "--- " + #: common/gestfich.cpp:621 msgid "No default editor found, you must choose it" msgstr "Pas d'éditeur par défaut trouvé, vous devez en choisir un" @@ -9996,18 +9970,10 @@ msgid "grid user" msgstr "grille user" #: pcbnew/zones.h:59 -#: pcbnew/dialog_zones_by_polygon.h:52 +#: pcbnew/dialog_zones_by_polygon.h:53 msgid "Fill Zones Options" msgstr "Options de remplissage de Zone" -#: pcbnew/dialog_initpcb.h:38 -msgid "Global Delete" -msgstr "Effacements Généraux" - -#: pcbnew/dialog_edit_mod_text.h:43 -msgid "TextMod properties" -msgstr "Propriétés du Texte sur Module" - #: pcbnew/gen_self.h:217 msgid "Length(inch):" msgstr "Longueur (pouces):" @@ -10029,6 +9995,14 @@ msgstr "Incapable de cr msgid "Segm count = %d, Lenght = " msgstr "Nbr segm = %d, Longueur = " +#: pcbnew/dialog_initpcb.h:38 +msgid "Global Delete" +msgstr "Effacements Généraux" + +#: pcbnew/dialog_edit_mod_text.h:43 +msgid "TextMod properties" +msgstr "Propriétés du Texte sur Module" + #: pcbnew/find.h:38 msgid "Find" msgstr "Chercher" @@ -10037,7 +10011,7 @@ msgstr "Chercher" msgid "Pad properties" msgstr "Propriétés des Pads" -#: pcbnew/dialog_track_options.h:49 +#: pcbnew/dialog_track_options.h:53 msgid "Tracks and Vias Sizes" msgstr "Dims pistes et vias" @@ -10060,6 +10034,15 @@ msgstr "Options de nettoyage" msgid "General Options" msgstr "Options générales" +#: pcbnew/pcbnew.h:288 +msgid "??? Via" +msgstr "??? Via" + +#: pcbnew/pcbnew.h:290 +#, fuzzy +msgid "Blind/Buried Via" +msgstr "Via enterrée" + #: pcbnew/set_color.h:38 msgid "Pcbnew Layer Colors:" msgstr "Pcbnew: Couleur desCouches" @@ -10112,7 +10095,7 @@ msgstr "Afficher Modules Cmp" msgid "Show Modules Cu" msgstr "Afficher Modules Cu" -#: pcbnew/drc_stuff.h:120 +#: pcbnew/drc_stuff.h:121 #, c-format msgid "ErrType(%d): %s
  • %s: %s
  • %s: %s
" msgstr "Type Err(%d): %s
  • %s: %s
  • %s: %s
" @@ -10157,6 +10140,10 @@ msgstr "Label" msgid "GlobLabel" msgstr "Lab Global" +#: eeschema/eelayer.h:104 +msgid "Netname" +msgstr "NetName" + #: eeschema/eelayer.h:110 msgid "Notes" msgstr "Notes" diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp index 75c95b1280..8a8a9f9113 100644 --- a/pcbnew/class_board.cpp +++ b/pcbnew/class_board.cpp @@ -110,6 +110,12 @@ void BOARD::UnLink() void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl ) { + if ( aBoardItem == NULL ) + { + wxFAIL_MSG( wxT("BOARD::Add() param error: aBoardItem NULL") ); + return; + } + switch( aBoardItem->Type() ) { // this one uses a vector diff --git a/pcbnew/class_board_item.cpp b/pcbnew/class_board_item.cpp index c283ccaac8..7f7bd4a63a 100644 --- a/pcbnew/class_board_item.cpp +++ b/pcbnew/class_board_item.cpp @@ -199,10 +199,10 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const text << _( "Via" ) << wxT( " " ) << via->ShowWidth(); int shape = via->Shape(); - if( shape == VIA_BURIED ) - text << wxT(" ") << _( "Blind" ); - else if( shape == VIA_BLIND ) - text << wxT(" ") << _("Buried"); + if( shape == VIA_BLIND_BURIED ) + text << wxT(" ") << _( "Blind/Buried" ); + else if( shape == VIA_MICROVIA ) + text << wxT(" ") << _("Micro Via"); // else say nothing about normal (through) vias net = aPcb->FindNet( via->GetNet() ); diff --git a/pcbnew/class_drc_item.cpp b/pcbnew/class_drc_item.cpp index cc6f927f11..21f9f0bb12 100644 --- a/pcbnew/class_drc_item.cpp +++ b/pcbnew/class_drc_item.cpp @@ -65,6 +65,8 @@ wxString DRC_ITEM::GetErrorText() const return wxString( _("Pad near pad") ); case DRCE_VIA_HOLE_BIGGER: return wxString( _("Via hole > diameter")); + case DRCE_MICRO_VIA_INCORRECT_LAYER_PAIR: + return wxString( _("Micro Via: incorrect layer pairs (not adjacent)")); case COPPERAREA_INSIDE_COPPERAREA: return wxString( _("Copper area inside copper area")); case COPPERAREA_CLOSE_TO_COPPERAREA: diff --git a/pcbnew/class_marker.cpp b/pcbnew/class_marker.cpp index f7943915c7..5da83d1c1c 100644 --- a/pcbnew/class_marker.cpp +++ b/pcbnew/class_marker.cpp @@ -68,6 +68,16 @@ MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos, bText, bPos ); } +MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos, + const wxString& aText, const wxPoint& aPos ) : + BOARD_ITEM( NULL, TYPEMARKER ) // parent set during BOARD::Add() +{ + init(); + + SetData( aErrorCode, aMarkerPos, + aText, aPos ); +} + /* Effacement memoire de la structure */ MARKER::~MARKER() @@ -91,6 +101,17 @@ void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos, } +void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos, + const wxString& aText, const wxPoint& aPos ) +{ + m_drc.SetData( aErrorCode, aMarkerPos, + aText, aPos ); + + // @todo: switch on error code to set error code specific color, and possibly bitmap. + m_Color = WHITE; +} + + /* supprime du chainage la structure Struct * les structures arrieres et avant sont chainees directement */ @@ -122,7 +143,8 @@ void MARKER::Display_Infos( WinEDA_DrawFrame* frame ) txtA << DRC_ITEM::ShowCoord( rpt.GetPointA() ) << wxT(": ") << rpt.GetTextA(); wxString txtB; - txtB << DRC_ITEM::ShowCoord( rpt.GetPointB() ) << wxT(": ") << rpt.GetTextB(); + if ( rpt.AsSecondItem() ) + txtB << DRC_ITEM::ShowCoord( rpt.GetPointB() ) << wxT(": ") << rpt.GetTextB(); text_pos = 25; Affiche_1_Parametre( frame, text_pos, txtA, txtB, DARKBROWN ); diff --git a/pcbnew/class_marker.h b/pcbnew/class_marker.h index b312eeec4d..664ec220f2 100644 --- a/pcbnew/class_marker.h +++ b/pcbnew/class_marker.h @@ -37,8 +37,18 @@ public: MARKER( int aErrorCode, const wxPoint& aMarkerPos, const wxString& aText, const wxPoint& aPos, const wxString& bText, const wxPoint& bPos ); - - ~MARKER(); + /** + * Constructor + * @param aErrorCode The categorizing identifier for an error + * @param aMarkerPos The position of the MARKER on the BOARD + * @param aText Text describing the object + * @param aPos The position of the object + */ + MARKER( int aErrorCode, const wxPoint& aMarkerPos, + const wxString& aText, const wxPoint& aPos ); + + + ~MARKER(); void UnLink(); void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode ); @@ -78,6 +88,17 @@ public: const wxString& aText, const wxPoint& aPos, const wxString& bText, const wxPoint& bPos ); + /** + * Function SetData + * fills in all the reportable data associated with a MARKER. + * @param aErrorCode The categorizing identifier for an error + * @param aMarkerPos The position of the MARKER on the BOARD + * @param aText Text describing the object + * @param aPos The position of the object + */ + void SetData( int aErrorCode, const wxPoint& aMarkerPos, + const wxString& aText, const wxPoint& aPos ); + /** * Function GetReporter diff --git a/pcbnew/class_track.cpp b/pcbnew/class_track.cpp index f62a9a0fd4..fe7e1d6693 100644 --- a/pcbnew/class_track.cpp +++ b/pcbnew/class_track.cpp @@ -52,7 +52,7 @@ TRACK::TRACK( BOARD_ITEM* StructFather, KICAD_T idtype ) : start = end = NULL; SetNet( 0 ); SetSubNet( 0 ); - m_Drill = -1; + SetDrillDefault(); m_Param = 0; } @@ -131,6 +131,24 @@ TRACK* TRACK::Copy() const } +/** + * Function GetDrillValue + * calculate the drill value for vias (m-Drill if > 0, or default drill value for the board + * @return real drill_value +*/ +int TRACK::GetDrillValue(void) +{ + if ( Type() != TYPEVIA ) return 0; + + if ( m_Drill >= 0 ) return m_Drill; + + if ( m_Shape == VIA_MICROVIA ) + return g_DesignSettings.m_MicroViaDrill; + + return g_DesignSettings.m_ViaDrill; +} + + /***********************/ bool TRACK::IsNull() /***********************/ @@ -253,7 +271,7 @@ int TRACK::ReturnMaskLayer() if( via_type == VIA_THROUGH ) return ALL_CU_LAYERS; - // VIA_BLIND or VIA_BURIED: + // VIA_BLIND_BURIED or VIA_MICRVIA: int bottom_layer, top_layer; @@ -522,33 +540,6 @@ TRACK* TRACK::GetEndNetCode( int NetCode ) } -#if 0 // replaced by Save() -/********************************************/ -bool TRACK::WriteTrackDescr( FILE* File ) -/********************************************/ -/* write a via description on file -*/ -{ - int type = 0; - - if( Type() == TYPEVIA ) - type = 1; - - if( GetState( DELETED ) ) - return FALSE; - - fprintf( File, "Po %d %d %d %d %d %d %d\n", m_Shape, - m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width, m_Drill ); - - fprintf( File, "De %d %d %d %lX %X\n", - m_Layer, type, GetNet(), - m_TimeStamp, ReturnStatus() ); - - return TRUE; -} -#endif - - bool TRACK::Save( FILE* aFile ) const { int type = 0; @@ -631,21 +622,18 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode ) GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color ); if( rayon > (4 * zoom) ) { - int drill_rayon, inner_rayon = rayon - (2 * zoom); + int drill_rayon = GetDrillValue() / 2; + int inner_rayon = rayon - (2 * zoom); GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, inner_rayon, color ); // Draw the via hole if the display option allows it if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW ) { - if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) - || ( m_Drill > 0 ) ) + if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) || // Display all drill holes requested + ( (drill_rayon > 0 ) && ! IsDrillDefault() ) ) // Or Display non default holes requested { - if( m_Drill > 0 ) - drill_rayon = m_Drill / 2; - else - drill_rayon = g_DesignSettings.m_ViaDrill / 2; - if( drill_rayon < inner_rayon ) // We can show the via hole + if( drill_rayon < inner_rayon ) // We can show the via hole { GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, drill_rayon, color ); @@ -656,6 +644,33 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode ) if( DisplayOpt.DisplayTrackIsol ) GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon + g_DesignSettings.m_TrackClearence, color ); + // for Micro Vias, draw a partial cross : + // X on component layer, or + on copper layer + // (so we can see 2 superimposed microvias ): + if ( Shape() == VIA_MICROVIA ) + { + int ax, ay, bx, by; + if ( IsOnLayer(COPPER_LAYER_N) ) + { + ax = rayon; ay = 0; + bx = drill_rayon; by = 0; + } + else + { + ax = ay = (rayon * 707) / 1000; + bx = by = (drill_rayon * 707) / 1000; + } + /* lines | or \ */ + GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay, + m_Start.x - bx , m_Start.y - by, 0, color ); + GRLine( &panel->m_ClipBox, DC, m_Start.x + bx , m_Start.y + by, + m_Start.x + ax , m_Start.y + ay, 0, color ); + /* lines - or / */ + GRLine( &panel->m_ClipBox, DC, m_Start.x + ay, m_Start.y - ax , + m_Start.x + by, m_Start.y - bx, 0, color ); + GRLine( &panel->m_ClipBox, DC, m_Start.x - by, m_Start.y + bx , + m_Start.x - ay, m_Start.y + ax, 0, color ); + } } return; } @@ -813,8 +828,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame ) { Affiche_1_Parametre( frame, text_pos, _( "Diam" ), msg, DARKCYAN ); - int drill_value = m_Drill >= 0 ? - m_Drill : g_DesignSettings.m_ViaDrill; + int drill_value = GetDrillValue(); valeur_param( (unsigned) drill_value, msg ); @@ -909,7 +923,7 @@ void TRACK::Show( int nestLevel, std::ostream& os ) " layer=\"" << m_Layer << '"' << " width=\"" << m_Width << '"' << -// " drill=\"" << m_Drill << '"' << +// " drill=\"" << GetDrillValue() << '"' << " netcode=\"" << GetNet() << "\">" << "" << ""; @@ -935,12 +949,12 @@ void SEGVIA::Show( int nestLevel, std::ostream& os ) cp = "through"; break; - case VIA_BURIED: - cp = "blind"; + case VIA_BLIND_BURIED: + cp = "blind/buried"; break; - case VIA_BLIND: - cp = "buried"; + case VIA_MICROVIA: + cp = "micro via"; break; default: @@ -959,7 +973,7 @@ void SEGVIA::Show( int nestLevel, std::ostream& os ) " layers=\"" << ReturnPcbLayerName( topLayer ).Trim().mb_str() << "," << ReturnPcbLayerName( botLayer ).Trim().mb_str() << '"' << " width=\"" << m_Width << '"' << - " drill=\"" << m_Drill << '"' << + " drill=\"" << GetDrillValue() << '"' << " netcode=\"" << GetNet() << "\">" << ""; diff --git a/pcbnew/class_track.h b/pcbnew/class_track.h index 8a4bfd1c9d..6c0feb5720 100644 --- a/pcbnew/class_track.h +++ b/pcbnew/class_track.h @@ -9,10 +9,10 @@ // Via attributes (m_Shape parmeter) -#define VIA_THROUGH 3 /* Always a through hole via */ -#define VIA_BURIED 2 /* this via can be on internal layers */ -#define VIA_BLIND 1 /* this via which connect from internal layers to an external layer */ -#define VIA_NOT_DEFINED 0 /* reserved (unused) */ +#define VIA_THROUGH 3 /* Always a through hole via */ +#define VIA_BLIND_BURIED 2 /* this via can be on internal layers */ +#define VIA_MICROVIA 1 /* this via which connect from an external layer to the near neightbour internal layer */ +#define VIA_NOT_DEFINED 0 /* not yet used */ /***/ @@ -22,10 +22,12 @@ 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) +protected: + int m_Drill; // for vias: via drill (- 1 for default value) + +public: BOARD_ITEM* start; // pointers to a connected item (pad or track) BOARD_ITEM* end; @@ -64,20 +66,20 @@ public: { return m_Start; // it had to be start or end. } - + /* supprime du chainage la structure Struct */ void UnLink(); - + /** * Function Save * writes the data structures for this object out to a FILE in "*.brd" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. - */ - bool Save( FILE* aFile ) const; - + */ + bool Save( FILE* aFile ) const; + /** * Function Insert * inserts a single TRACK, SEGVIA or SEGZONE, or a list of such, @@ -90,13 +92,13 @@ public: * @param InsertPoint See above */ void Insert( BOARD* aPcb, BOARD_ITEM* InsertPoint ); - + /** * Function GetBestInsertPoint * searches the "best" insertion point within the track linked list. * The best point is the begging of the corresponding net code section. * (The BOARD::m_Track and BOARD::m_Zone lists are sorted by netcode.) - * @param aPcb The BOARD to search for the insertion point. + * @param aPcb The BOARD to search for the insertion point. * @return TRACK* - the item found in the linked list (or NULL if no track) */ TRACK* GetBestInsertPoint( BOARD* aPcb ); @@ -134,8 +136,9 @@ public: */ double GetLength() const { - int dx = m_Start.x - m_End.x; - int dy = m_Start.y - m_End.y; + int dx = m_Start.x - m_End.x; + int dy = m_Start.y - m_End.y; + return hypot( dx, dy ); } @@ -145,6 +148,32 @@ public: /* divers */ int Shape() const { return m_Shape & 0xFF; } + + /** + * Function SetDrillValue + * Set the drill value for vias + * @param drill_value = new drill value + */ + void SetDrillValue(int drill_value) { m_Drill = drill_value; } + + /** + * Function SetDrillDefault + * Set the drill value for vias at default value (-1) + */ + void SetDrillDefault(void) { m_Drill = -1; } + + /** + * Function IsDrillDefault + * @return true if the drill value is default value (-1) + */ + bool IsDrillDefault(void) { return m_Drill < 0; } + + /** + * Function GetDrillValue + * calculate the drill value for vias (m-Drill if > 0, or default drill value for the board + * @return real drill_value + */ + int GetDrillValue(void); /** * Function ReturnMaskLayer @@ -203,13 +232,13 @@ public: /** * Function HitTest (overlayed) * tests if the given wxRect intersect this object. - * For now, an ending point must be inside this rect. + * For now, an ending point must be inside this rect. * @param refPos A wxPoint to test * @return bool - true if a hit, else false */ - bool HitTest( EDA_Rect& refArea ); + bool HitTest( EDA_Rect& refArea ); - /** + /** * Function GetClass * returns the class name. * @return wxString @@ -284,12 +313,14 @@ public: * returns the position of this object. * @return const wxPoint& - The position of this object. */ - wxPoint& GetPosition() - { - return m_Start; + wxPoint& GetPosition() + { + return m_Start; } - void SetPosition( const wxPoint& aPoint ) { m_Start=aPoint; m_End=aPoint; } - + + + void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; } + /** * Function GetClass * returns the class name. diff --git a/pcbnew/classpcb.cpp b/pcbnew/classpcb.cpp index b55fbcd522..1babe715c3 100644 --- a/pcbnew/classpcb.cpp +++ b/pcbnew/classpcb.cpp @@ -19,6 +19,8 @@ #include "trigo.h" + + /**************************************************************/ void EDA_BaseStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC ) /**************************************************************/ @@ -301,6 +303,29 @@ void PCB_SCREEN::Init() } +/* Return true if a microvia can be put on board + * A microvia ia a small via restricted to 2 near neighbour layers + * because its is hole is made by laser which can penetrate only one layer + * It is mainly used to connect BGA to the first inner layer + * And it is allowed from an external layer to the first inner layer + */ +bool PCB_SCREEN::IsMicroViaAcceptable(void) +{ + int copperlayercnt = g_DesignSettings.m_CopperLayerCount; + + if ( ! g_DesignSettings.m_MicroViasAllowed ) + return false; // Obvious.. + if ( copperlayercnt < 4 ) + return false; // Only on multilayer boards.. + if ( (m_Active_Layer == COPPER_LAYER_N) || + (m_Active_Layer == LAYER_CMP_N) || + (m_Active_Layer == g_DesignSettings.m_CopperLayerCount - 2) || + (m_Active_Layer == LAYER_N_2) ) + return true; + + return false; +} + /*************************/ /* class DISPLAY_OPTIONS */ /*************************/ @@ -381,8 +406,9 @@ EDA_BoardDesignSettings::EDA_BoardDesignSettings() m_LayerColor[ii] = default_layer_color[ii]; // Layer colors (tracks and graphic items) - m_ViaColor[VIA_BLIND] = CYAN; - m_ViaColor[VIA_BURIED] = BROWN; + m_ViaColor[VIA_NOT_DEFINED] = DARKGRAY; + m_ViaColor[VIA_MICROVIA] = CYAN; + m_ViaColor[VIA_BLIND_BURIED] = BROWN; m_ViaColor[VIA_THROUGH] = WHITE; m_ModuleTextCMPColor = LIGHTGRAY; // Text module color for modules on the COMPONENT layer m_ModuleTextCUColor = MAGENTA; // Text module color for modules on the COPPER layer diff --git a/pcbnew/dialog_track_options.cpp b/pcbnew/dialog_track_options.cpp index 6a68430757..5bcef3ba00 100644 --- a/pcbnew/dialog_track_options.cpp +++ b/pcbnew/dialog_track_options.cpp @@ -49,6 +49,8 @@ BEGIN_EVENT_TABLE( WinEDA_PcbTracksDialog, wxDialog ) ////@begin WinEDA_PcbTracksDialog event table entries EVT_INIT_DIALOG( WinEDA_PcbTracksDialog::OnInitDialog ) + EVT_CHECKBOX( ID_CHECKBOX_ALLOWS_MICROVIA, WinEDA_PcbTracksDialog::OnCheckboxAllowsMicroviaClick ) + EVT_BUTTON( wxID_OK, WinEDA_PcbTracksDialog::OnOkClick ) EVT_BUTTON( wxID_CANCEL, WinEDA_PcbTracksDialog::OnCancelClick ) @@ -86,6 +88,11 @@ bool WinEDA_PcbTracksDialog::Create( wxWindow* parent, wxWindowID id, const wxSt m_ViaAltDrillValueTitle = NULL; m_OptCustomViaDrill = NULL; m_OptViaType = NULL; + m_MicroViaSizeTitle = NULL; + m_MicroViaSizeCtrl = NULL; + m_MicroViaDrillTitle = NULL; + m_MicroViaDrillCtrl = NULL; + m_AllowMicroViaCtrl = NULL; m_TrackWidthTitle = NULL; m_OptTrackWidth = NULL; m_TrackClearanceTitle = NULL; @@ -117,80 +124,101 @@ void WinEDA_PcbTracksDialog::CreateControls() SetFont(*g_DialogFont); ////@begin WinEDA_PcbTracksDialog content construction - // Generated by DialogBlocks, Sun 25 Nov 2007 15:41:58 CST (unregistered) + // Generated by DialogBlocks, 11/01/2008 21:51:48 (unregistered) WinEDA_PcbTracksDialog* itemDialog1 = this; wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); itemDialog1->SetSizer(itemBoxSizer2); - wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(itemBoxSizer3, 0, wxGROW|wxALL, 5); + wxStaticBox* itemStaticBoxSizer3Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Vias:")); + wxStaticBoxSizer* itemStaticBoxSizer3 = new wxStaticBoxSizer(itemStaticBoxSizer3Static, wxVERTICAL); + itemBoxSizer2->Add(itemStaticBoxSizer3, 0, wxGROW|wxALL, 5); m_ViaSizeTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Via Size"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(m_ViaSizeTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemStaticBoxSizer3->Add(m_ViaSizeTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_OptViaSize = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(m_OptViaSize, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + itemStaticBoxSizer3->Add(m_OptViaSize, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); m_ViaDefaultDrillValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Default Via Drill"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(m_ViaDefaultDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemStaticBoxSizer3->Add(m_ViaDefaultDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_OptViaDrill = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(m_OptViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + itemStaticBoxSizer3->Add(m_OptViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); m_ViaAltDrillValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Alternate Via Drill"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(m_ViaAltDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemStaticBoxSizer3->Add(m_ViaAltDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_OptCustomViaDrill = new wxTextCtrl( itemDialog1, ID_TEXTCTRL2, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(m_OptCustomViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); - - itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + itemStaticBoxSizer3->Add(m_OptCustomViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); wxArrayString m_OptViaTypeStrings; - m_OptViaTypeStrings.Add(_("Blind Via")); - m_OptViaTypeStrings.Add(_("Buried Via")); - m_OptViaTypeStrings.Add(_("Standard Via")); - m_OptViaType = new wxRadioBox( itemDialog1, ID_VIA_TYPE_SELECTION, _("Via Type"), wxDefaultPosition, wxDefaultSize, m_OptViaTypeStrings, 1, wxRA_SPECIFY_COLS ); + m_OptViaTypeStrings.Add(_("Through Via")); + m_OptViaTypeStrings.Add(_("Blind or Buried Via ")); + m_OptViaType = new wxRadioBox( itemDialog1, ID_VIA_TYPE_SELECTION, _("Default Via Type"), wxDefaultPosition, wxDefaultSize, m_OptViaTypeStrings, 1, wxRA_SPECIFY_COLS ); m_OptViaType->SetSelection(0); - itemBoxSizer3->Add(m_OptViaType, 0, wxGROW|wxALL, 5); + itemStaticBoxSizer3->Add(m_OptViaType, 0, wxGROW|wxALL, 5); - itemBoxSizer2->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + wxStaticBox* itemStaticBoxSizer11Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Micro Vias:")); + wxStaticBoxSizer* itemStaticBoxSizer11 = new wxStaticBoxSizer(itemStaticBoxSizer11Static, wxVERTICAL); + itemBoxSizer2->Add(itemStaticBoxSizer11, 0, wxGROW|wxALL, 5); - wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(itemBoxSizer13, 0, wxGROW|wxALL, 5); + m_MicroViaSizeTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Micro Via Size"), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticBoxSizer11->Add(m_MicroViaSizeTitle, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5); + + m_MicroViaSizeCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL7, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticBoxSizer11->Add(m_MicroViaSizeCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + + m_MicroViaDrillTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Micro Via Drill"), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticBoxSizer11->Add(m_MicroViaDrillTitle, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5); + + m_MicroViaDrillCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL6, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticBoxSizer11->Add(m_MicroViaDrillCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + + itemStaticBoxSizer11->Add(5, 5, 0, wxGROW|wxALL, 5); + + m_AllowMicroViaCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX_ALLOWS_MICROVIA, _("Allows Micro Vias"), wxDefaultPosition, wxDefaultSize, 0 ); + m_AllowMicroViaCtrl->SetValue(false); + m_AllowMicroViaCtrl->SetHelpText(_("Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n")); + if (WinEDA_PcbTracksDialog::ShowToolTips()) + m_AllowMicroViaCtrl->SetToolTip(_("Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n")); + itemStaticBoxSizer11->Add(m_AllowMicroViaCtrl, 0, wxGROW|wxALL, 5); + + wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL); + itemBoxSizer2->Add(itemBoxSizer18, 0, wxGROW|wxALL, 5); m_TrackWidthTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Track Width"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer13->Add(m_TrackWidthTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer18->Add(m_TrackWidthTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_OptTrackWidth = new wxTextCtrl( itemDialog1, ID_TEXTCTRL3, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer13->Add(m_OptTrackWidth, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + itemBoxSizer18->Add(m_OptTrackWidth, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); m_TrackClearanceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer13->Add(m_TrackClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer18->Add(m_TrackClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_OptTrackClearance = new wxTextCtrl( itemDialog1, ID_TEXTCTRL4, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer13->Add(m_OptTrackClearance, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + itemBoxSizer18->Add(m_OptTrackClearance, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); m_MaskClearanceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Mask clearance"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer13->Add(m_MaskClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer18->Add(m_MaskClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_OptMaskMargin = new wxTextCtrl( itemDialog1, ID_TEXTCTRL5, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer13->Add(m_OptMaskMargin, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + itemBoxSizer18->Add(m_OptMaskMargin, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); - itemBoxSizer13->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxVERTICAL); + itemBoxSizer2->Add(itemBoxSizer25, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer13->Add(itemBoxSizer21, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + wxButton* itemButton26 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); + itemButton26->SetForegroundColour(wxColour(210, 0, 0)); + itemBoxSizer25->Add(itemButton26, 0, wxGROW|wxALL, 5); - wxButton* itemButton22 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton22->SetForegroundColour(wxColour(210, 0, 0)); - itemBoxSizer21->Add(itemButton22, 0, wxGROW|wxALL, 5); - - wxButton* itemButton23 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, wxBU_LEFT ); - itemButton23->SetForegroundColour(wxColour(0, 0, 255)); - itemBoxSizer21->Add(itemButton23, 0, wxGROW|wxALL, 5); + wxButton* itemButton27 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, wxBU_LEFT ); + itemButton27->SetForegroundColour(wxColour(0, 0, 255)); + itemBoxSizer25->Add(itemButton27, 0, wxGROW|wxALL, 5); + // Set validators + m_AllowMicroViaCtrl->SetValidator( wxGenericValidator(& g_DesignSettings.m_MicroViasAllowed) ); ////@end WinEDA_PcbTracksDialog content construction SetDisplayValue(); } @@ -235,7 +263,9 @@ void WinEDA_PcbTracksDialog::SetDisplayValue() /*************************************************/ { AddUnitSymbol(*m_ViaSizeTitle); + AddUnitSymbol(*m_MicroViaSizeTitle); AddUnitSymbol(*m_ViaDefaultDrillValueTitle); + AddUnitSymbol(*m_MicroViaDrillTitle); AddUnitSymbol(*m_ViaAltDrillValueTitle); AddUnitSymbol(*m_TrackWidthTitle); AddUnitSymbol(*m_TrackClearanceTitle); @@ -243,32 +273,50 @@ void WinEDA_PcbTracksDialog::SetDisplayValue() int Internal_Unit = m_Parent->m_InternalUnits; PutValueInLocalUnits(*m_OptViaSize, g_DesignSettings.m_CurrentViaSize, Internal_Unit); + PutValueInLocalUnits(*m_MicroViaSizeCtrl, g_DesignSettings.m_CurrentMicroViaSize, Internal_Unit); PutValueInLocalUnits(*m_OptViaDrill, g_DesignSettings.m_ViaDrill, Internal_Unit); + PutValueInLocalUnits(*m_MicroViaDrillCtrl, g_DesignSettings.m_MicroViaDrill, Internal_Unit); PutValueInLocalUnits(*m_OptCustomViaDrill, g_ViaHoleLastValue, Internal_Unit); PutValueInLocalUnits(*m_OptTrackWidth, g_DesignSettings.m_CurrentTrackWidth, Internal_Unit); PutValueInLocalUnits(*m_OptTrackClearance, g_DesignSettings.m_TrackClearence, Internal_Unit); PutValueInLocalUnits(*m_OptMaskMargin, g_DesignSettings.m_MaskMargin, Internal_Unit); - m_OptViaType->SetSelection(g_DesignSettings.m_CurrentViaType - 1); + if ( g_DesignSettings.m_CurrentViaType != VIA_THROUGH ) + m_OptViaType->SetSelection(1); + + m_MicroViaSizeTitle->Enable(g_DesignSettings.m_MicroViasAllowed); + m_MicroViaSizeCtrl->Enable(g_DesignSettings.m_MicroViasAllowed); + + m_MicroViaDrillTitle->Enable(g_DesignSettings.m_MicroViasAllowed); + m_MicroViaDrillCtrl->Enable(g_DesignSettings.m_MicroViasAllowed); } /*******************************************************************/ void WinEDA_PcbTracksDialog::AcceptPcbOptions(wxCommandEvent& event) /*******************************************************************/ { - g_DesignSettings.m_CurrentViaType = m_OptViaType->GetSelection() + 1; + g_DesignSettings.m_CurrentViaType = VIA_THROUGH; + if ( m_OptViaType->GetSelection() > 0 ) + g_DesignSettings.m_CurrentViaType = VIA_BLIND_BURIED; if ( g_DesignSettings.m_CurrentViaType != VIA_THROUGH ) { if( ! IsOK(this, - _("You have selected VIA Blind or VIA Buried\nWARNING: this feature is EXPERIMENTAL!!! Accept ?") ) ) + _("You have selected VIA Blind and Buried\nWARNING: this feature is EXPERIMENTAL!!! Accept ?") ) ) g_DesignSettings.m_CurrentViaType = VIA_THROUGH; } g_DesignSettings.m_CurrentViaSize = ReturnValueFromTextCtrl(*m_OptViaSize, m_Parent->m_InternalUnits); + g_DesignSettings.m_CurrentMicroViaSize = + ReturnValueFromTextCtrl(*m_MicroViaSizeCtrl, m_Parent->m_InternalUnits); + + g_DesignSettings.m_MicroViaDrill = + ReturnValueFromTextCtrl(*m_MicroViaDrillCtrl, m_Parent->m_InternalUnits); g_DesignSettings.m_ViaDrill = ReturnValueFromTextCtrl(*m_OptViaDrill, m_Parent->m_InternalUnits); g_ViaHoleLastValue = ReturnValueFromTextCtrl(*m_OptCustomViaDrill, m_Parent->m_InternalUnits); + g_DesignSettings.m_MicroViasAllowed = m_AllowMicroViaCtrl->IsChecked(); + g_DesignSettings.m_CurrentTrackWidth = ReturnValueFromTextCtrl(*m_OptTrackWidth, m_Parent->m_InternalUnits); g_DesignSettings.m_TrackClearence = @@ -391,3 +439,17 @@ void WinEDA_PcbTracksDialog::OnInitDialog( wxInitDialogEvent& event ) event.Skip(); } + +/*! + * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_ALLOWS_MICROVIA + */ + +void WinEDA_PcbTracksDialog::OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ) +{ + bool state = m_AllowMicroViaCtrl->IsChecked(); + m_MicroViaSizeTitle->Enable(state); + m_MicroViaSizeCtrl->Enable(state); + m_MicroViaDrillTitle->Enable(state); + m_MicroViaDrillCtrl->Enable(state); +} + diff --git a/pcbnew/dialog_track_options.h b/pcbnew/dialog_track_options.h index 7a3dd0c8d4..02c119fe87 100644 --- a/pcbnew/dialog_track_options.h +++ b/pcbnew/dialog_track_options.h @@ -23,6 +23,7 @@ */ ////@begin includes +#include "wx/valgen.h" ////@end includes /*! @@ -42,6 +43,9 @@ #define ID_TEXTCTRL1 10002 #define ID_TEXTCTRL2 10003 #define ID_VIA_TYPE_SELECTION 10004 +#define ID_TEXTCTRL7 10008 +#define ID_TEXTCTRL6 10010 +#define ID_CHECKBOX_ALLOWS_MICROVIA 10009 #define ID_TEXTCTRL3 10005 #define ID_TEXTCTRL4 10006 #define ID_TEXTCTRL5 10007 @@ -85,6 +89,9 @@ public: /// wxEVT_INIT_DIALOG event handler for ID_DIALOG void OnInitDialog( wxInitDialogEvent& event ); + /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_ALLOWS_MICROVIA + void OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ); + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK void OnOkClick( wxCommandEvent& event ); @@ -115,6 +122,11 @@ public: wxStaticText* m_ViaAltDrillValueTitle; wxTextCtrl* m_OptCustomViaDrill; wxRadioBox* m_OptViaType; + wxStaticText* m_MicroViaSizeTitle; + wxTextCtrl* m_MicroViaSizeCtrl; + wxStaticText* m_MicroViaDrillTitle; + wxTextCtrl* m_MicroViaDrillCtrl; + wxCheckBox* m_AllowMicroViaCtrl; wxStaticText* m_TrackWidthTitle; wxTextCtrl* m_OptTrackWidth; wxStaticText* m_TrackClearanceTitle; diff --git a/pcbnew/dialog_track_options.pjd b/pcbnew/dialog_track_options.pjd index 15a44c073f..105fa8f6f2 100644 --- a/pcbnew/dialog_track_options.pjd +++ b/pcbnew/dialog_track_options.pjd @@ -108,10 +108,12 @@ 0 0 1 + 0 1 1 0 1 + 0 @@ -247,7 +249,6 @@ 0 1 0 - 0 1 0 0 @@ -295,7 +296,7 @@ 0 "<Any platform>" - "wxBoxSizer V" + "wxStaticBoxSizer V" "dialog-control-document" "" "sizer" @@ -304,9 +305,18 @@ 0 0 "24/4/2006" - "wbBoxSizerProxy" - "Vertical" + "wbStaticBoxSizerProxy" + "wxID_ANY" + -1 + "Vias:" "" + "" + "" + "" + 0 + 1 + "wxStaticBox" + "Vertical" "Centre" "Expand" 0 @@ -328,7 +338,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbStaticTextProxy" "wxID_STATIC" 5105 @@ -398,7 +408,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbTextCtrlProxy" "ID_TEXTCTRL" 10001 @@ -470,7 +480,6 @@ 0 "" "" - 0 "wxStaticText: wxID_STATIC" @@ -481,7 +490,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbStaticTextProxy" "wxID_STATIC" 5105 @@ -551,7 +560,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbTextCtrlProxy" "ID_TEXTCTRL1" 10002 @@ -623,7 +632,6 @@ 0 "" "" - 0 "wxStaticText: wxID_STATIC" @@ -634,7 +642,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbStaticTextProxy" "wxID_STATIC" 5105 @@ -704,7 +712,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbTextCtrlProxy" "ID_TEXTCTRL2" 10003 @@ -776,33 +784,6 @@ 0 "" "" - 0 - - - "Spacer" - "dialog-control-document" - "" - "spacer" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbSpacerProxy" - 5 - 5 - "Centre" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "<Any platform>" "wxRadioBox: ID_VIA_TYPE_SELECTION" @@ -813,7 +794,7 @@ 1 0 0 - "24/4/2006" + "11/1/2008" "wbRadioBoxProxy" "ID_VIA_TYPE_SELECTION" 10004 @@ -825,9 +806,9 @@ "" "" "m_OptViaType" - "Via Type" + "Default Via Type" 1 - "Blind Via|Buried Via|Standard Via" + "Through Via|Blind or Buried Via " 0 "" "" @@ -870,20 +851,29 @@ - "Spacer" + "wxStaticBoxSizer V" "dialog-control-document" "" - "spacer" + "sizer" 0 1 0 0 - "24/4/2006" - "wbSpacerProxy" - 5 - 5 + "11/1/2008" + "wbStaticBoxSizerProxy" + "wxID_ANY" + -1 + "Micro Vias:" + "" + "" + "" + "" + 0 + 1 + "wxStaticBox" + "Vertical" "Centre" - "Centre" + "Expand" 0 5 1 @@ -894,6 +884,403 @@ 0 0 "<Any platform>" + + "wxStaticText: wxID_STATIC" + "dialog-control-document" + "" + "statictext" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbStaticTextProxy" + "wxID_STATIC" + 5105 + "" + "wxStaticText" + "wxStaticText" + 1 + 0 + "" + "" + "m_MicroViaSizeTitle" + "Micro Via Size" + -1 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + "" + "" + + + "wxTextCtrl: ID_TEXTCTRL7" + "dialog-control-document" + "" + "textctrl" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbTextCtrlProxy" + "ID_TEXTCTRL7" + 10008 + "" + "wxTextCtrl" + "wxTextCtrl" + 1 + 0 + "" + "" + "m_MicroViaSizeCtrl" + "" + 0 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + "" + "" + + + "wxStaticText: wxID_STATIC" + "dialog-control-document" + "" + "statictext" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbStaticTextProxy" + "wxID_STATIC" + 5105 + "" + "wxStaticText" + "wxStaticText" + 1 + 0 + "" + "" + "m_MicroViaDrillTitle" + "Micro Via Drill" + -1 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + "" + "" + + + "wxTextCtrl: ID_TEXTCTRL6" + "dialog-control-document" + "" + "textctrl" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbTextCtrlProxy" + "ID_TEXTCTRL6" + 10010 + "" + "wxTextCtrl" + "wxTextCtrl" + 1 + 0 + "" + "" + "m_MicroViaDrillCtrl" + "" + 0 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + "" + "" + + + "Spacer" + "dialog-control-document" + "" + "spacer" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbSpacerProxy" + 5 + 5 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "<Any platform>" + + + "wxCheckBox: ID_CHECKBOX_ALLOWS_MICROVIA" + "dialog-control-document" + "" + "checkbox" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbCheckBoxProxy" + "wxEVT_COMMAND_CHECKBOX_CLICKED|OnCheckboxAllowsMicroviaClick|NONE||WinEDA_PcbTracksDialog" + "ID_CHECKBOX_ALLOWS_MICROVIA" + 10009 + "" + "wxCheckBox" + "wxCheckBox" + 1 + 0 + "" + "" + "m_AllowMicroViaCtrl" + "Allows Micro Vias" + 0 + "Allows use of micro vias +They are very small vias only from an external copper layer to its near neightbour +" + "" + "g_DesignSettings.m_MicroViasAllowed" + "wxGenericValidator(& %VARIABLE%)" + "" + "" + "" + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "" + "" + "wxBoxSizer V" @@ -1379,20 +1766,86 @@ "" 0 + + + "wxBoxSizer V" + "dialog-control-document" + "" + "sizer" + 0 + 1 + 0 + 0 + "11/1/2008" + "wbBoxSizerProxy" + "Vertical" + "" + "Centre" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "<Any platform>" - "Spacer" + "wxButton: wxID_OK" "dialog-control-document" "" - "spacer" + "dialogcontrol" 0 1 0 0 - "24/4/2006" - "wbSpacerProxy" - 5 - 5 - "Centre" + "11/1/2008" + "wbButtonProxy" + "wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick" + "wxID_OK" + 5100 + "" + "wxButton" + "wxButton" + 1 + 0 + "" + "" + "" + "&OK" + 0 + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "D20000" + "" + 0 + 1 + "<Any platform>" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" "Centre" 0 5 @@ -1403,22 +1856,63 @@ 0 0 0 - "<Any platform>" + "" + "" - "wxBoxSizer V" + "wxButton: wxID_CANCEL" "dialog-control-document" "" - "sizer" + "dialogcontrol" 0 1 0 0 - "25/2/2006" - "wbBoxSizerProxy" - "Vertical" + "11/1/2008" + "wbButtonProxy" + "wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick" + "wxID_CANCEL" + 5101 + "" + "wxButton" + "wxButton" + 1 + 0 + "" + "" "" - "Centre" + "&Cancel" + 0 + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "0000FF" + "" + 0 + 1 + "<Any platform>" + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" "Centre" 0 5 @@ -1429,141 +1923,8 @@ 0 0 0 - "<Any platform>" - - "wxButton: wxID_OK" - "dialog-control-document" - "" - "dialogcontrol" - 0 - 1 - 0 - 0 - "25/2/2006" - "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick" - "wxID_OK" - 5100 - "" - "wxButton" - "wxButton" - 1 - 0 - "" - "" - "" - "&OK" - 0 - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "D20000" - "" - 0 - 1 - "<Any platform>" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "" - "" - - - "wxButton: wxID_CANCEL" - "dialog-control-document" - "" - "dialogcontrol" - 0 - 1 - 0 - 0 - "25/2/2006" - "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick" - "wxID_CANCEL" - 5101 - "" - "wxButton" - "wxButton" - 1 - 0 - "" - "" - "" - "&Cancel" - 0 - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "0000FF" - "" - 0 - 1 - "<Any platform>" - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "" - "" - + "" + "" diff --git a/pcbnew/drc.cpp b/pcbnew/drc.cpp index 6eba9ed970..6e5d1e10b6 100644 --- a/pcbnew/drc.cpp +++ b/pcbnew/drc.cpp @@ -215,8 +215,8 @@ void DRC::testTracks() if( !doTrackDrc( segm, segm->Next() ) ) { wxASSERT( m_currentMarker ); - m_pcb->Add( m_currentMarker ); - m_currentMarker = 0; + m_pcb->Add( m_currentMarker ); + m_currentMarker = 0; } } } @@ -367,13 +367,25 @@ MARKER* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, MARKE if( fillMe ) - fillMe->SetData( aErrorCode, position, + { + if ( aItem ) + fillMe->SetData( aErrorCode, position, textA, aTrack->GetPosition(), textB, posB ); + else + fillMe->SetData( aErrorCode, position, + textA, aTrack->GetPosition() ); + } else - fillMe = new MARKER( aErrorCode, position, + { + if ( aItem ) + fillMe = new MARKER( aErrorCode, position, textA, aTrack->GetPosition(), textB, posB ); + else + fillMe = new MARKER( aErrorCode, position, + textA, aTrack->GetPosition() ); + } return fillMe; } @@ -421,23 +433,41 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart ) m_segmAngle = 0; - // @todo: is this necessary? - /**************************************************************/ - /* Phase 0 : test if via's hole is bigger than its diameter : */ - /**************************************************************/ - + /* Phase 0 : Test vias : */ if( aRefSeg->Type() == TYPEVIA ) { + // test if via's hole is bigger than its diameter // This test seems necessary since the dialog box that displays the // desired via hole size and width does not enforce a hole size smaller // than the via's diameter. - if( aRefSeg->m_Drill > aRefSeg->m_Width ) + if( aRefSeg->GetDrillValue() > aRefSeg->m_Width ) { m_currentMarker = fillMarker( aRefSeg, NULL, DRCE_VIA_HOLE_BIGGER, m_currentMarker ); return false; } + + // For microvias: test if they are blindvias and only between 2 layers + // because they are used for very small drill size and are drill by laser + // and **only** one layer can be drilled + if( aRefSeg->Shape() == VIA_MICROVIA ) + { + int layer1, layer2; + bool err = true; + ((SEGVIA*)aRefSeg)->ReturnLayerPair(&layer1, &layer2); + if (layer1> layer2 ) EXCHG(layer1,layer2); + // test: + if (layer1 == COPPER_LAYER_N && layer2 == LAYER_N_2 ) err = false; + if (layer1 == (g_DesignSettings.m_CopperLayerCount - 2 ) && layer2 == LAYER_CMP_N ) err = false; + if ( err ) + { + m_currentMarker = fillMarker( aRefSeg, NULL, + DRCE_MICRO_VIA_INCORRECT_LAYER_PAIR, m_currentMarker ); + return false; + } + } + } // for a non horizontal or vertical segment Compute the segment angle diff --git a/pcbnew/drc_stuff.h b/pcbnew/drc_stuff.h index e1ca3fca65..bc25c874cf 100644 --- a/pcbnew/drc_stuff.h +++ b/pcbnew/drc_stuff.h @@ -34,28 +34,29 @@ /// DRC error codes: -#define DRCE_ 1 // not used yet -#define DRCE_UNCONNECTED_PADS 2 ///< pads are unconnected -#define DRCE_TRACK_NEAR_THROUGH_HOLE 3 ///< thru hole is too close to track -#define DRCE_TRACK_NEAR_PAD 4 ///< pad too close to track -#define DRCE_TRACK_NEAR_VIA 5 ///< track too close to via -#define DRCE_VIA_NEAR_VIA 6 ///< via too close to via -#define DRCE_VIA_NEAR_TRACK 7 ///< via too close to track -#define DRCE_TRACK_ENDS1 8 ///< @todo say what this problem is -#define DRCE_TRACK_ENDS2 9 ///< @todo say what this problem is -#define DRCE_TRACK_ENDS3 10 ///< @todo say what this problem is -#define DRCE_TRACK_ENDS4 11 ///< @todo say what this problem is -#define DRCE_TRACK_UNKNOWN1 12 ///< @todo check source code and change this comment -#define DRCE_TRACKS_CROSSING 13 ///< tracks are crossing -#define DRCE_ENDS_PROBLEM1 14 ///< track ends are too close -#define DRCE_ENDS_PROBLEM2 15 ///< track ends are too close -#define DRCE_ENDS_PROBLEM3 16 ///< track ends are too close -#define DRCE_ENDS_PROBLEM4 17 ///< track ends are too close -#define DRCE_ENDS_PROBLEM5 18 ///< track ends are too close -#define DRCE_PAD_NEAR_PAD1 19 ///< pad too close to pad -#define DRCE_VIA_HOLE_BIGGER 20 ///< via's hole is bigger than its diameter -#define COPPERAREA_INSIDE_COPPERAREA 21 ///< copper area outlines intersect -#define COPPERAREA_CLOSE_TO_COPPERAREA 22 ///< copper area outlines are too close +#define DRCE_ 1 // not used yet +#define DRCE_UNCONNECTED_PADS 2 ///< pads are unconnected +#define DRCE_TRACK_NEAR_THROUGH_HOLE 3 ///< thru hole is too close to track +#define DRCE_TRACK_NEAR_PAD 4 ///< pad too close to track +#define DRCE_TRACK_NEAR_VIA 5 ///< track too close to via +#define DRCE_VIA_NEAR_VIA 6 ///< via too close to via +#define DRCE_VIA_NEAR_TRACK 7 ///< via too close to track +#define DRCE_TRACK_ENDS1 8 ///< @todo say what this problem is +#define DRCE_TRACK_ENDS2 9 ///< @todo say what this problem is +#define DRCE_TRACK_ENDS3 10 ///< @todo say what this problem is +#define DRCE_TRACK_ENDS4 11 ///< @todo say what this problem is +#define DRCE_TRACK_UNKNOWN1 12 ///< @todo check source code and change this comment +#define DRCE_TRACKS_CROSSING 13 ///< tracks are crossing +#define DRCE_ENDS_PROBLEM1 14 ///< track ends are too close +#define DRCE_ENDS_PROBLEM2 15 ///< track ends are too close +#define DRCE_ENDS_PROBLEM3 16 ///< track ends are too close +#define DRCE_ENDS_PROBLEM4 17 ///< track ends are too close +#define DRCE_ENDS_PROBLEM5 18 ///< track ends are too close +#define DRCE_PAD_NEAR_PAD1 19 ///< pad too close to pad +#define DRCE_VIA_HOLE_BIGGER 20 ///< via's hole is bigger than its diameter +#define DRCE_MICRO_VIA_INCORRECT_LAYER_PAIR 21 ///< micro via's layer pair incorrect (layers must be adjacent) +#define COPPERAREA_INSIDE_COPPERAREA 22 ///< copper area outlines intersect +#define COPPERAREA_CLOSE_TO_COPPERAREA 23 ///< copper area outlines are too close /** * Class DRC_ITEM @@ -64,48 +65,67 @@ * information held is the board coordinate and the MenuText for each item. * Also held is the type of error by number and the location of the MARKER. * A function is provided to translate that number into text. + * Some errors involve only one item (item with an incorrect param) so m_AsSecondItem is set to false in this case */ -class DRC_ITEM +class DRC_ITEM { - protected: - int m_ErrorCode; ///< the error code's numeric value - wxPoint m_Pos; ///< position of the issue - wxString m_AText; ///< text for the first BOARD_ITEM - wxString m_BText; ///< text for the second BOARD_ITEM - wxPoint m_APos; ///< the location of the first BOARD_ITEM - wxPoint m_BPos; ///< the location of the first BOARD_ITEM + int m_ErrorCode; ///< the error code's numeric value + wxPoint m_Pos; ///< position of the issue + wxString m_AText; ///< text for the first BOARD_ITEM + wxString m_BText; ///< text for the second BOARD_ITEM + wxPoint m_APos; ///< the location of the first (or main ) BOARD_ITEM + wxPoint m_BPos; ///< the location of the second BOARD_ITEM + bool m_AsSecondItem; ///< true when 2 items create a DRC error, false if only one item public: DRC_ITEM() : - m_ErrorCode(0) + m_ErrorCode( 0 ) { } - DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos, - const wxString& aText, const wxString& bText, - const wxPoint& aPos, const wxPoint& bPos ) + + DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos, + const wxString& aText, const wxString& bText, + const wxPoint& aPos, const wxPoint& bPos ) { - SetData( aErrorCode, aIssuePos, + SetData( aErrorCode, aIssuePos, aText, bText, aPos, bPos ); } - void SetData( int aErrorCode, const wxPoint& aIssuePos, - const wxString& aText, const wxString& bText, - const wxPoint& aPos, const wxPoint& bPos ) + DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos, + const wxString& aText, const wxPoint& aPos ) + { + SetData( aErrorCode, aIssuePos, aText, aPos ); + } + + + void SetData( int aErrorCode, const wxPoint& aIssuePos, + const wxString& aText, const wxPoint& aPos ) + { + SetData( aErrorCode, aIssuePos, + aText, aText, + aPos, aPos ); + m_AsSecondItem = false; + } + + void SetData( int aErrorCode, const wxPoint& aIssuePos, + const wxString& aText, const wxString& bText, + const wxPoint& aPos, const wxPoint& bPos ) { m_ErrorCode = aErrorCode; - m_Pos = aIssuePos; - m_AText = aText; - m_BText = bText; - m_APos = aPos; - m_BPos = bPos; + m_Pos = aIssuePos; + m_AText = aText; + m_BText = bText; + m_APos = aPos; + m_BPos = bPos; + m_AsSecondItem = true; } - - + + bool AsSecondItem(void) const { return m_AsSecondItem; } /** * Function ShowHtml * translates this object into a fragment of HTML suitable for the @@ -118,16 +138,16 @@ public: // an html fragment for the entire message in the listbox. feel free // to add color if you want: - ret.Printf( _("ErrType(%d): %s
  • %s: %s
  • %s: %s
"), - m_ErrorCode, - GetErrorText().GetData(), - ShowCoord( m_APos ).GetData(), m_AText.GetData(), - ShowCoord( m_BPos ).GetData(), m_BText.GetData() ); + ret.Printf( _( "ErrType(%d): %s
  • %s: %s
  • %s: %s
" ), + m_ErrorCode, + GetErrorText().GetData(), + ShowCoord( m_APos ).GetData(), m_AText.GetData(), + ShowCoord( m_BPos ).GetData(), m_BText.GetData() ); return ret; } - + /** * Function ShowReport * translates this object into a text string suitable for saving @@ -138,15 +158,16 @@ public: { wxString ret; - ret.Printf( wxT("ErrType(%d): %s\n %s: %s\n %s: %s\n"), - m_ErrorCode, - GetErrorText().GetData(), - ShowCoord( m_APos ).GetData(), m_AText.GetData(), - ShowCoord( m_BPos ).GetData(), m_BText.GetData() ); - + ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n %s: %s\n" ), + m_ErrorCode, + GetErrorText().GetData(), + ShowCoord( m_APos ).GetData(), m_AText.GetData(), + ShowCoord( m_BPos ).GetData(), m_BText.GetData() ); + return ret; } + /** * Function GetErrorCode * returns the error code. @@ -156,7 +177,7 @@ public: return m_ErrorCode; } - + /** * Function GetErrorText * returns the string form of a drc error code. @@ -167,33 +188,37 @@ public: { return m_AText; } - + + const wxString& GetTextB() const { return m_BText; } - - - const wxPoint& GetPointA() const + + + const wxPoint& GetPointA() const { return m_APos; } - - const wxPoint& GetPointB() const + + + const wxPoint& GetPointB() const { return m_BPos; } - + + /** * Function GetPosition - * @return wxPoint& - the position of this report item within + * @return wxPoint& - the position of this report item within * the drawing. */ - const wxPoint& GetPosition() const + const wxPoint& GetPosition() const { return m_Pos; } + /** * Function ShowCoord * formats a coordinate or position to text. @@ -225,7 +250,7 @@ public: * removes and deletes all the items in the list. */ virtual void DeleteAllItems() = 0; - + /** * Function GetItem * retrieves a DRC_ITEM by pointer. The actual item remains owned by the @@ -233,12 +258,12 @@ public: * @param aIndex The 0 based index into the list of the desired item. * @return const DRC_ITEM* - the desired item or NULL if aIndex is out of range. */ - virtual const DRC_ITEM* GetItem( int aIndex ) = 0; + virtual const DRC_ITEM* GetItem( int aIndex ) = 0; /** * Function DeleteAllItems * removes and deletes desired item from the list. - * @param aIndex The 0 based index into the list of the desired item which + * @param aIndex The 0 based index into the list of the desired item which * is to be deleted. */ virtual void DeleteItem( int aIndex ) = 0; @@ -247,13 +272,13 @@ public: * Function GetCount * returns the number of items in the list. */ - virtual int GetCount() = 0; - - virtual ~DRC_ITEM_LIST() {} + virtual int GetCount() = 0; + + virtual ~DRC_ITEM_LIST() { } }; -typedef std::vector DRC_LIST; +typedef std::vector DRC_LIST; /** @@ -264,88 +289,89 @@ typedef std::vector DRC_LIST; * be sent to a text file on disk. * This class is given access to the windows and the BOARD * that it needs via its constructor or public access functions. - */ + */ class DRC { - friend class DrcDialog; - -private: - // protected or private functions() are lowercase first character. - - bool m_doPad2PadTest; - bool m_doUnconnectedTest; - bool m_doZonesTest; - bool m_doCreateRptFile; - - wxString m_rptFilename; - - // int m_errorCount; - - MARKER* m_currentMarker; - - bool m_aboartDRC; - bool m_drcInProgress; - int m_spotcx; - int m_spotcy; - int m_finx; - int m_finy; // coord relatives de l'extremite du segm de reference - - int m_segmAngle; // angle d'inclinaison du segment de reference en 0,1 degre - int m_segmLength; // length of the reference segment - - int m_xcliplo; - int m_ycliplo; - int m_xcliphi; - int m_ycliphi; // coord de la surface de securite du segment a comparer - - WinEDA_PcbFrame* m_mainWindow; - WinEDA_DrawPanel* m_drawPanel; - BOARD* m_pcb; - DrcDialog* m_ui; + friend class DrcDialog; - DRC_LIST m_unconnected; ///< list of unconnected pads, as DRC_ITEMs - - - /** +private: + + // protected or private functions() are lowercase first character. + + bool m_doPad2PadTest; + bool m_doUnconnectedTest; + bool m_doZonesTest; + bool m_doCreateRptFile; + + wxString m_rptFilename; + + // int m_errorCount; + + MARKER* m_currentMarker; + + bool m_aboartDRC; + bool m_drcInProgress; + int m_spotcx; + int m_spotcy; + int m_finx; + int m_finy; // coord relatives de l'extremite du segm de reference + + int m_segmAngle; // angle d'inclinaison du segment de reference en 0,1 degre + int m_segmLength; // length of the reference segment + + int m_xcliplo; + int m_ycliplo; + int m_xcliphi; + int m_ycliphi; // coord de la surface de securite du segment a comparer + + WinEDA_PcbFrame* m_mainWindow; + WinEDA_DrawPanel* m_drawPanel; + BOARD* m_pcb; + DrcDialog* m_ui; + + DRC_LIST m_unconnected; ///< list of unconnected pads, as DRC_ITEMs + + + /** * Function updatePointers * is a private helper function used to update needed pointers from the * one pointer which is known not to change, m_mainWindow. */ - void updatePointers(); - + void updatePointers(); + /** * Function fillMarker - * optionally creates a marker and fills it in with information, - * but does not add it to the BOARD. Use this to report any kind of + * optionally creates a marker and fills it in with information, + * but does not add it to the BOARD. Use this to report any kind of * DRC problem, or unconnected pad problem. * * @param aTrack The reference track - * @param aItem Another item on the BOARD, such as a SEGVIA, SEGZONE, + * @param aItem Another item on the BOARD, such as a SEGVIA, SEGZONE, * or TRACK. * @param aErrorCode A categorizing identifier for the particular type * of error that is being reported. - * @param fillMe A MARKER* which is to be filled in, or NULL if one is to + * @param fillMe A MARKER* which is to be filled in, or NULL if one is to * first be allocated, then filled. */ MARKER* fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, MARKER* fillMe ); MARKER* fillMarker( D_PAD* aPad, D_PAD* bPad, int aErrorCode, MARKER* fillMe ); - - //---------------------------------------------- - - void testTracks(); - - void testPad2Pad(); - void testUnconnected(); + //---------------------------------------------- - void testZones(); + void testTracks(); + + void testPad2Pad(); + + void testUnconnected(); + + void testZones(); + + + //---------------------------------------------- - - //---------------------------------------------- - /** * Function doPadToPadsDrc * tests the clearance between aRefPad and other pads. @@ -355,18 +381,18 @@ private: * @param aEnd Marks the end of the list and is not included * @param max_size The size of the biggest pad (used to stop the test when the X distance is > max_size) */ - bool doPadToPadsDrc( D_PAD* aRefPad, LISTE_PAD* aStart, - LISTE_PAD* aEnd, int max_size ); - + bool doPadToPadsDrc( D_PAD* aRefPad, LISTE_PAD* aStart, + LISTE_PAD* aEnd, int max_size ); + /** * Function DoTrackDrc - * tests the current segment. + * tests the current segment. * @param aRefSeg The segment to test * @param aStart The head of a list of tracks to test against (usually BOARD::m_Track) - * @return bool - true if no poblems, else false and m_currentMarker is + * @return bool - true if no poblems, else false and m_currentMarker is * filled in with the problem information. */ - bool doTrackDrc( TRACK* aRefSeg, TRACK* aStart ); + bool doTrackDrc( TRACK* aRefSeg, TRACK* aStart ); //--------------------------------------------------- @@ -377,9 +403,9 @@ private: * @param aPad Another pad to check against * @return bool - true if clearance between aRefPad and pad is >= dist_min, else false */ - bool checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad, const int dist_min ); - - + bool checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad, const int dist_min ); + + /** * Function checkClearanceSegmToPad * check the distance from a pad to segment. This function uses several @@ -390,30 +416,30 @@ private: * spot_cX, spot_cY = position of pad / origin of segment * @param pad_to_test Is the pad involved in the check * @param w_segm Hhalf width of the segment to test - * @param dist_min Is the minimum clearance needed + * @param dist_min Is the minimum clearance needed * * @return false distance >= dist_min, * true if distance < dist_min */ - bool checkClearanceSegmToPad( const D_PAD* pad_to_test, int w_segm, int dist_min ); + bool checkClearanceSegmToPad( const D_PAD* pad_to_test, int w_segm, int dist_min ); + - /** * Function checkMarginToCircle * @todo this translation is no good, fix this: * calculates the distance from a circle (via or round end of track) to the * segment of reference on the right hand side. - * + * * @param cx The x coordinate of the circle's center - * @param cy The y coordinate of the circle's center - * @param radius A "keep out" radius centered over the circle + * @param cy The y coordinate of the circle's center + * @param radius A "keep out" radius centered over the circle * @param length The length of the segment (i.e. coordinate of end) * @return bool - true if distance >= radius, else * false when distance < radius */ static bool checkMarginToCircle( int cx, int cy, int radius, int length ); - + /** * Function checkLine * tests to see if one track is in contact with another track. @@ -422,15 +448,15 @@ private: * dans le cadre (xcliplo,ycliplo xcliphi,ycliphi) (variables globales, * locales a ce fichier) */ - bool checkLine( int x1, int y1, int x2, int y2 ); - + bool checkLine( int x1, int y1, int x2, int y2 ); + //-------------------------------------------------- - + public: DRC( WinEDA_PcbFrame* aPcbWindow ); ~DRC(); - + /** * Function Drc * tests the current segment and returns the result and displays the error @@ -441,10 +467,10 @@ public: */ int Drc( TRACK* aRefSeg, TRACK* aList ); - + /** * Function DrcBlind - * tests the current segment and returns the result. Any error is not + * tests the current segment and returns the result. Any error is not * displayed in the status panel. * @param aRefSeg The current segment to test. * @param aList The track list to test (usually m_Pcb->m_Track) @@ -453,18 +479,18 @@ public: int DrcBlind( TRACK* aRefSeg, TRACK* aList ) { updatePointers(); - + return doTrackDrc( aRefSeg, aList ) ? OK_DRC : BAD_DRC; } - - + + /** * Function ShowDialog - * opens a dialog and prompts the user, then if a test run button is + * opens a dialog and prompts the user, then if a test run button is * clicked, runs the test(s) and creates the MARKERS. The dialog is only * created if it is not already in existence. */ - void ShowDialog(); + void ShowDialog(); /** @@ -473,9 +499,9 @@ public: * the state of the dialog's existence. * @param aReason Indication of which button was clicked to cause the destruction. */ - void DestroyDialog( int aReason ); + void DestroyDialog( int aReason ); + - /** * Function SetSettings * saves all the UI or test settings and may be called before running the tests. @@ -483,38 +509,36 @@ public: * @param aUnconnectedTest Tells whether to list unconnected pads. * @param aZonesTest Tells whether to test zones. * @param aReportName A string telling the disk file report name entered. - * @param aSaveReport A boolean telling whether to generate disk file report. + * @param aSaveReport A boolean telling whether to generate disk file report. */ - void SetSettings( bool aPad2PadTest, bool aUnconnectedTest, - bool aZonesTest, const wxString& aReportName, bool aSaveReport ) + void SetSettings( bool aPad2PadTest, bool aUnconnectedTest, + bool aZonesTest, const wxString& aReportName, bool aSaveReport ) { m_doPad2PadTest = aPad2PadTest; m_doUnconnectedTest = aUnconnectedTest; - m_doZonesTest = aZonesTest; - m_rptFilename = aReportName; - m_doCreateRptFile = aSaveReport; + m_doZonesTest = aZonesTest; + m_rptFilename = aReportName; + m_doCreateRptFile = aSaveReport; } - + /** * Function RunTests * will actually run all the tests specified with a previous call to * SetSettings() */ - void RunTests(); + void RunTests(); /** * Function ListUnconnectedPad - * gathers a list of all the unconnected pads and shows them in the + * gathers a list of all the unconnected pads and shows them in the * dialog, and optionally prints a report of such. */ - void ListUnconnectedPads(); - + void ListUnconnectedPads(); }; - #endif // _DRC_STUFF_H //EOF diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index 53cb37a260..564e51a725 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -61,6 +61,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_PCB_STOP_CURRENT_DRAWING: case ID_POPUP_PCB_END_TRACK: case ID_POPUP_PCB_PLACE_VIA: + case ID_POPUP_PCB_PLACE_MICROVIA: case ID_POPUP_PCB_IMPORT_PAD_SETTINGS: case ID_POPUP_PCB_EXPORT_PAD_SETTINGS: case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS: @@ -372,6 +373,9 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) } break; + case ID_POPUP_PCB_PLACE_MICROVIA: + if ( ! GetScreen()->IsMicroViaAcceptable() ) + break; case ID_POPUP_PCB_PLACE_VIA: DrawPanel->MouseToCursorSchema(); if( GetCurItem()->m_Flags & IS_DRAGGED ) @@ -380,13 +384,17 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) } else { + int v_type = g_DesignSettings.m_CurrentViaType; + if ( id == ID_POPUP_PCB_PLACE_MICROVIA ) + g_DesignSettings.m_CurrentViaType = VIA_MICROVIA; // place micro via and switch layer Other_Layer_Route( (TRACK*) GetCurItem(), &dc ); + g_DesignSettings.m_CurrentViaType = v_type; if( DisplayOpt.ContrastModeDisplay ) GetScreen()->SetRefreshReq(); } break; - case ID_POPUP_PCB_DELETE_TRACKSEG: + case ID_POPUP_PCB_DELETE_TRACKSEG: if( GetCurItem() == NULL ) break; DrawPanel->MouseToCursorSchema(); diff --git a/pcbnew/edit_track_width.cpp b/pcbnew/edit_track_width.cpp index 159f13ec9d..a8e056b6b7 100644 --- a/pcbnew/edit_track_width.cpp +++ b/pcbnew/edit_track_width.cpp @@ -34,6 +34,8 @@ int WinEDA_PcbFrame::Edit_TrackSegm_Width( wxDC* DC, TRACK* pt_segm ) if( pt_segm->Type() == TYPEVIA ) { consigne = pt_segm->m_Width = g_DesignSettings.m_CurrentViaSize; + if ( pt_segm->m_Shape == VIA_MICROVIA ) + consigne = pt_segm->m_Width = g_DesignSettings.m_CurrentMicroViaSize; } if( old_w < consigne ) /* DRC utile puisque augm de dimension */ diff --git a/pcbnew/editrack-part2.cpp b/pcbnew/editrack-part2.cpp index dda0972eaf..15eee52001 100644 --- a/pcbnew/editrack-part2.cpp +++ b/pcbnew/editrack-part2.cpp @@ -210,11 +210,10 @@ bool WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC ) /* create the via */ Via = new SEGVIA( m_Pcb ); Via->m_Flags = IS_NEW; - Via->m_Width = g_DesignSettings.m_CurrentViaSize; Via->m_Shape = g_DesignSettings.m_CurrentViaType; + Via->m_Width = g_DesignSettings.m_CurrentViaSize; Via->SetNet( g_HightLigth_NetCode ); Via->m_Start = Via->m_End = g_CurrentTrackSegment->m_End; - int old_layer = GetScreen()->m_Active_Layer; //swap the layers. @@ -224,21 +223,30 @@ bool WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC ) GetScreen()->m_Active_Layer = GetScreen()->m_Route_Layer_BOTTOM; /* Adjust the via layer pair */ - if( Via->Shape() == VIA_BURIED ) - { - Via->SetLayerPair( old_layer, GetScreen()->m_Active_Layer ); - } + switch ( Via->Shape() ) + { + case VIA_BLIND_BURIED: + Via->SetLayerPair( old_layer, GetScreen()->m_Active_Layer ); + break; + + case VIA_MICROVIA: // from external to the near neghbour inner layer + if ( old_layer == COPPER_LAYER_N ) + GetScreen()->m_Active_Layer = LAYER_N_2; + else if ( old_layer == LAYER_CMP_N ) + GetScreen()->m_Active_Layer = m_Pcb->m_BoardSettings->m_CopperLayerCount - 2; + else if ( old_layer == LAYER_N_2 ) + GetScreen()->m_Active_Layer = COPPER_LAYER_N; + else if ( old_layer == m_Pcb->m_BoardSettings->m_CopperLayerCount - 2 ) + GetScreen()->m_Active_Layer = LAYER_CMP_N; + // else error + Via->SetLayerPair( old_layer, GetScreen()->m_Active_Layer ); + Via->m_Width = g_DesignSettings.m_CurrentMicroViaSize; + break; - else if( Via->Shape() == VIA_BLIND ) //blind via - { - // A revoir! ( la via devrait deboucher sur 1 cote ) - Via->SetLayerPair( old_layer, GetScreen()->m_Active_Layer ); - } - - else - { - // Usual via is from copper to component; layer pair is 0 and 0x0F. - Via->SetLayerPair( COPPER_LAYER_N, LAYER_CMP_N ); + default: + // Usual via is from copper to component; layer pair is 0 and 0x0F. + Via->SetLayerPair( COPPER_LAYER_N, LAYER_CMP_N ); + break; } if( Drc_On && BAD_DRC==m_drc->Drc( Via, m_Pcb->m_Track ) ) diff --git a/pcbnew/gendrill.cpp b/pcbnew/gendrill.cpp index 635574ef98..d41644609e 100644 --- a/pcbnew/gendrill.cpp +++ b/pcbnew/gendrill.cpp @@ -469,7 +469,7 @@ void WinEDA_DrillFrame::UpdatePrecisionOptions( wxCommandEvent& event ) int WinEDA_DrillFrame::Gen_Drill_File_EXCELLON( FORET* buffer ) /***************************************************************/ -/* Create the drill file in EXECELLON format +/* Create the drill file in EXCELLON format * Return hole count * buffer: Drill tools list */ @@ -497,10 +497,10 @@ int WinEDA_DrillFrame::Gen_Drill_File_EXCELLON( FORET* buffer ) { if( pt_piste->Type() != TYPEVIA ) continue; - if( pt_piste->m_Drill == 0 ) + int via_drill = pt_piste->GetDrillValue(); + if( via_drill == 0 ) continue; - int via_drill = ( pt_piste->m_Drill < - 0 ) ? g_DesignSettings.m_ViaDrill : pt_piste->m_Drill; + if( foret->m_Diameter != via_drill ) continue; @@ -789,11 +789,9 @@ int WinEDA_DrillFrame::Gen_Liste_Forets( FORET* buffer, bool print_header ) { if( pt_piste->Type() != TYPEVIA ) continue; - if( pt_piste->m_Drill == 0 ) + int via_drill = pt_piste->GetDrillValue(); + if( via_drill == 0 ) continue; - int via_drill = g_DesignSettings.m_ViaDrill; - if( pt_piste->m_Drill > 0 ) // Drill value is not the default value - via_drill = pt_piste->m_Drill; foret = GetOrAddForet( buffer, via_drill ); if( foret ) foret->m_TotalCount++; @@ -1343,9 +1341,7 @@ int WinEDA_DrillFrame::Plot_Drill_PcbMap( FORET* buffer, int format ) { if( pt_piste->Type() != TYPEVIA ) continue; - int via_drill = g_DesignSettings.m_ViaDrill; - if( pt_piste->m_Drill >= 0 ) - via_drill = pt_piste->m_Drill; + int via_drill = pt_piste->GetDrillValue(); if( via_drill != foret->m_Diameter ) continue; pos = pt_piste->m_Start; diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index f39c2ab50f..d3e3bfa819 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -69,7 +69,8 @@ static Ki_HotkeyInfo HkSavefile( wxT( "Save board" ), HK_SAVE_BOARD, 'S' + GR_KB static Ki_HotkeyInfo HkLoadfile( wxT( "Load board" ), HK_LOAD_BOARD, 'L' + GR_KB_CTRL ); static Ki_HotkeyInfo HkFindItem( wxT( "Find Item" ), HK_FIND_ITEM, 'F' + GR_KB_CTRL ); static Ki_HotkeyInfo HkBackspace( wxT( "Delete track segment" ), HK_BACK_SPACE, WXK_BACK ); -static Ki_HotkeyInfo HkAddVia( wxT( "Add Via" ), HK_ADD_VIA, 'V' ); +static Ki_HotkeyInfo HkAddMicroVia( wxT( "Add Via" ), HK_ADD_VIA, 'V' ); +static Ki_HotkeyInfo HkAddVia( wxT( "Add MicroVia" ), HK_ADD_MICROVIA, 'V' + GR_KB_CTRL ); static Ki_HotkeyInfo HkEndTrack( wxT( "End Track" ), HK_END_TRACK, WXK_END ); static Ki_HotkeyInfo HkFlipFootprint( wxT( "Flip Footprint" ), HK_FLIP_FOOTPRINT, 'F' ); static Ki_HotkeyInfo HkRotateFootprint( wxT( "Rotate Footprint" ), HK_ROTATE_FOOTPRINT, 'R' ); @@ -105,7 +106,9 @@ Ki_HotkeyInfo* s_Common_Hotkey_List[] = { Ki_HotkeyInfo* s_board_edit_Hotkey_List[] = { &HkTrackDisplayMode, &HkDelete, &HkBackspace, - &HkAddVia, &HkEndTrack, + &HkAddVia, + &HkAddMicroVia, + &HkEndTrack, &HkMoveFootprint, &HkFlipFootprint, &HkRotateFootprint, &HkDragFootprint, &HkGetAndMoveFootprint, @@ -382,6 +385,28 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, } break; + case HK_ADD_MICROVIA: // Place a micro via if a track is in progress + if( m_ID_current_state != ID_TRACK_BUTT ) + return; + if( ItemFree ) // no track in progress: nothing to do + break; + if( GetCurItem()->Type() != TYPETRACK ) // Should not occur + return; + if( (GetCurItem()->m_Flags & IS_NEW) == 0 ) + return; + + // place micro via and switch layer + if ( GetScreen()->IsMicroViaAcceptable() ) + { + int v_type = g_DesignSettings.m_CurrentViaType; + g_DesignSettings.m_CurrentViaType = VIA_MICROVIA; + Other_Layer_Route( (TRACK*) GetCurItem(), DC ); + g_DesignSettings.m_CurrentViaType = v_type; + if( DisplayOpt.ContrastModeDisplay ) + GetScreen()->SetRefreshReq(); + } + break; + case HK_ADD_VIA: // Switch to alternate layer and Place a via if a track is in progress if( m_ID_current_state != ID_TRACK_BUTT ) return; diff --git a/pcbnew/hotkeys.h b/pcbnew/hotkeys.h index 71aed5e381..5165311aec 100644 --- a/pcbnew/hotkeys.h +++ b/pcbnew/hotkeys.h @@ -22,7 +22,9 @@ enum hotkey_id_commnand { HK_FLIP_FOOTPRINT, HK_GET_AND_MOVE_FOOTPRINT, HK_LOCK_UNLOCK_FOOTPRINT, - HK_ADD_VIA, HK_END_TRACK, + HK_ADD_VIA, + HK_ADD_MICROVIA, + HK_END_TRACK, HK_SAVE_BOARD, HK_LOAD_BOARD, HK_SWITCH_UNITS, HK_SWITCH_TRACK_DISPLAY_MODE, diff --git a/pcbnew/ioascii.cpp b/pcbnew/ioascii.cpp index 871344c7aa..74af5bf038 100644 --- a/pcbnew/ioascii.cpp +++ b/pcbnew/ioascii.cpp @@ -88,7 +88,7 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( FILE* File, * @return items count or - count if no end block ($End...) found. */ { - int shape, width, layer, type, flags, net_code; + int shape, width, drill, layer, type, flags, net_code; int ii = 0; char line1[256]; char line2[256]; @@ -149,13 +149,15 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( FILE* File, int arg_count = sscanf( line1 + 2, " %d %d %d %d %d %d %d", &shape, &PtSegm->m_Start.x, &PtSegm->m_Start.y, &PtSegm->m_End.x, &PtSegm->m_End.y, &width, - &PtSegm->m_Drill ); + &drill ); PtSegm->m_Width = width; PtSegm->m_Shape = shape; - if( arg_count < 7 ) - PtSegm->m_Drill = -1; + if( arg_count < 7 || drill <= 0 ) + PtSegm->SetDrillDefault(); + else + PtSegm->SetDrillValue(drill); PtSegm->SetLayer( layer ); PtSegm->SetNet( net_code ); @@ -399,6 +401,12 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) continue; } + if( stricmp( Line, "MicroViaSize" ) == 0 ) + { + g_DesignSettings.m_CurrentMicroViaSize = atoi( data ); + continue; + } + if( stricmp( Line, "ViaSizeHistory" ) == 0 ) { int tmp = atoi( data ); @@ -412,6 +420,18 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) continue; } + if( stricmp( Line, "MicroViaDrill" ) == 0 ) + { + g_DesignSettings.m_MicroViaDrill = atoi( data ); + continue; + } + + if( stricmp( Line, "MicroViasAllowed" ) == 0 ) + { + g_DesignSettings.m_MicroViasAllowed = atoi( data ); + continue; + } + if( stricmp( Line, "TextPcbWidth" ) == 0 ) { g_DesignSettings.m_PcbTextWidth = atoi( data ); @@ -521,6 +541,10 @@ static int WriteSetup( FILE* File, WinEDA_BasePcbFrame* frame ) fprintf( File, "ViaSizeHistory %d\n", g_DesignSettings.m_ViaSizeHistory[ii] ); } + fprintf( File, "MicroViaSize %d\n", g_DesignSettings.m_CurrentMicroViaSize); + fprintf( File, "MicroViaDrill %d\n", g_DesignSettings.m_MicroViaDrill); + fprintf( File, "MicroViasAllowed %d\n", g_DesignSettings.m_MicroViasAllowed); + fprintf( File, "TextPcbWidth %d\n", g_DesignSettings.m_PcbTextWidth ); fprintf( File, "TextPcbSize %d %d\n", g_DesignSettings.m_PcbTextSize.x, g_DesignSettings.m_PcbTextSize.y ); diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index d96aa56a31..ea1982b88b 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -515,7 +515,7 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) _( "Export via hole to others id vias" ), global_options_pad_xpm ); ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT, _( "Set ALL via holes to default" ), apply_xpm ); - if( Track->m_Drill <= 0 ) + if( ! Track->IsDrillDefault() ) { via_mnu->Enable( ID_POPUP_PCB_VIA_HOLE_EXPORT, FALSE ); } @@ -559,6 +559,12 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) } msg = AddHotkeyName( _( "Place Via" ), s_Board_Editor_Hokeys_Descr, HK_ADD_VIA ); PopMenu->Append( ID_POPUP_PCB_PLACE_VIA, msg ); + // See if we can place a Micro Via (4 or more layers, and start from an external layer): + if ( GetScreen()->IsMicroViaAcceptable() ) + { + msg = AddHotkeyName( _( "Place Micro Via" ), s_Board_Editor_Hokeys_Descr, HK_ADD_MICROVIA ); + PopMenu->Append( ID_POPUP_PCB_PLACE_MICROVIA, msg ); + } } // track Width control : diff --git a/pcbnew/pcbcfg.h b/pcbnew/pcbcfg.h index fd9e41af7a..82d0f5fc8e 100644 --- a/pcbnew/pcbcfg.h +++ b/pcbnew/pcbcfg.h @@ -20,21 +20,21 @@ static int Pcbdiv_grille; /* memorisation temporaire */ static PARAM_CFG_WXSTRING UserLibDirBufCfg ( wxT( "LibDir" ), /* Keyword */ - & g_UserLibDirBuffer, /* Parameter address */ + &g_UserLibDirBuffer, /* Parameter address */ GROUPLIB ); static PARAM_CFG_LIBNAME_LIST LibNameBufCfg ( wxT( "LibName" ), /* Keyword */ - & g_LibName_List, /* Parameter address */ + &g_LibName_List, /* Parameter address */ GROUPLIB ); static PARAM_CFG_INT PadDrillCfg ( wxT( "PadDrlX" ), /* Keyword */ - & g_Pad_Master.m_Drill.x, /* Parameter address */ + &g_Pad_Master.m_Drill.x, /* Parameter address */ 320, /* Default value */ 0, 0x7FFF /* Valeurs extremes */ ); @@ -42,7 +42,7 @@ static PARAM_CFG_INT PadDrillCfg static PARAM_CFG_INT PadDimHCfg //Pad Diameter / H Size ( wxT( "PadDimH" ), /* Keyword */ - & g_Pad_Master.m_Size.x, /* Parameter address */ + &g_Pad_Master.m_Size.x, /* Parameter address */ 550, /* Default value */ 0, 0x7FFF /* Valeurs extremes */ ); @@ -50,7 +50,7 @@ static PARAM_CFG_INT PadDimHCfg //Pad Diameter / H Size static PARAM_CFG_INT PadDimVCfg ( wxT( "PadDimV" ), /* Keyword */ - & g_Pad_Master.m_Size.y, /* Parameter address */ + &g_Pad_Master.m_Size.y, /* Parameter address */ 550, /* Default value */ 0, 0x7FFF /* Valeurs extremes */ ); @@ -59,7 +59,7 @@ static PARAM_CFG_INT PadDimVCfg static PARAM_CFG_INT PadFormeCfg ( wxT( "PadForm" ), /* Keyword */ - & g_Pad_Master.m_PadShape, /* Parameter address */ + &g_Pad_Master.m_PadShape, /* Parameter address */ PAD_CIRCLE, /* Default value */ 0, 0x7F /* Valeurs extremes */ ); @@ -67,14 +67,14 @@ static PARAM_CFG_INT PadFormeCfg static PARAM_CFG_INT PadMasqueLayerCfg ( wxT( "PadMask" ), /* Keyword */ - & g_Pad_Master.m_Masque_Layer, /* Parameter address */ + &g_Pad_Master.m_Masque_Layer, /* Parameter address */ 0x0000FFFF /* Default value */ ); static PARAM_CFG_INT ViaDiametreCfg ( wxT( "ViaDiam" ), /* Keyword */ - & g_DesignSettings.m_CurrentViaSize, /* Parameter address */ + &g_DesignSettings.m_CurrentViaSize, /* Parameter address */ 450, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -82,15 +82,32 @@ static PARAM_CFG_INT ViaDiametreCfg static PARAM_CFG_INT ViaDrillCfg ( wxT( "ViaDril" ), /* Keyword */ - & g_DesignSettings.m_ViaDrill, /* Parameter address */ + &g_DesignSettings.m_ViaDrill, /* Parameter address */ 250, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); + +static PARAM_CFG_INT MicroViaDiametreCfg +( + wxT( "MViaDia" ), /* Keyword */ + &g_DesignSettings.m_CurrentMicroViaSize, /* Parameter address */ + 200, /* Default value */ + 0, 1000 /* Valeurs extremes */ +); + +static PARAM_CFG_INT MicroViaDrillCfg +( + wxT( "MViaDrl" ), /* Keyword */ + &g_DesignSettings.m_MicroViaDrill, /* Parameter address */ + 80, /* Default value */ + 0, 800 /* Valeurs extremes */ +); + static PARAM_CFG_INT ViaShowHoleCfg ( INSETUP, wxT( "ViaSHole" ), /* Keyword */ - & DisplayOpt.m_DisplayViaMode, /* Parameter address */ + &DisplayOpt.m_DisplayViaMode, /* Parameter address */ VIA_SPECIAL_HOLE_SHOW, /* Default value */ VIA_HOLE_NOT_SHOW, /* Valeurs extremes */ OPT_VIA_HOLE_END - 1 /* Valeurs extremes */ @@ -99,7 +116,7 @@ static PARAM_CFG_INT ViaShowHoleCfg static PARAM_CFG_INT TrackClearenceCfg ( wxT( "Isol" ), /* Keyword */ - & g_DesignSettings.m_TrackClearence, /* Parameter address */ + &g_DesignSettings.m_TrackClearence, /* Parameter address */ 120, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -107,15 +124,15 @@ static PARAM_CFG_INT TrackClearenceCfg static PARAM_CFG_INT LayerCountCfg // Mask Working Layers ( wxT( "Countlayer" ), /* Keyword */ - & g_DesignSettings.m_CopperLayerCount, /* Parameter address */ + &g_DesignSettings.m_CopperLayerCount, /* Parameter address */ 2, /* Default value */ - 1, NB_COPPER_LAYERS /* Valeurs extremes */ + 1, NB_COPPER_LAYERS /* Valeurs extremes */ ); static PARAM_CFG_INT TrackWidthCfg ( wxT( "Lpiste" ), /* Keyword */ - & g_DesignSettings.m_CurrentTrackWidth, /* Parameter address */ + &g_DesignSettings.m_CurrentTrackWidth, /* Parameter address */ 170, /* Default value */ 2, 0xFFFF /* Valeurs extremes */ ); @@ -123,7 +140,7 @@ static PARAM_CFG_INT TrackWidthCfg static PARAM_CFG_INT RouteLayTopCfg // First current working layer ( wxT( "RouteTo" ), /* Keyword */ - & Route_Layer_TOP, /* Parameter address */ + &Route_Layer_TOP, /* Parameter address */ 15, /* Default value */ 0, 15 /* Valeurs extremes */ ); @@ -131,7 +148,7 @@ static PARAM_CFG_INT RouteLayTopCfg // First current working layer static PARAM_CFG_INT RouteLayBotCfg // second current working layer ( wxT( "RouteBo" ), /* Keyword */ - & Route_Layer_BOTTOM, /* Parameter address */ + &Route_Layer_BOTTOM, /* Parameter address */ 0, /* Default value */ 0, 15 /* Valeurs extremes */ ); @@ -139,7 +156,7 @@ static PARAM_CFG_INT RouteLayBotCfg // second current working layer static PARAM_CFG_INT TypeViaCfg ( wxT( "TypeVia" ), /* Keyword */ - & g_DesignSettings.m_CurrentViaType, /* Parameter address */ + &g_DesignSettings.m_CurrentViaType, /* Parameter address */ VIA_THROUGH, /* Default value */ 0, 3 /* Valeurs extremes */ ); @@ -147,70 +164,70 @@ static PARAM_CFG_INT TypeViaCfg static PARAM_CFG_BOOL Segm45Cfg // Segm Pistes a 0, 45, 90 degres uniquement ( wxT( "Segm45" ), /* Keyword */ - & Track_45_Only, /* Parameter address */ + &Track_45_Only, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_BOOL Raccord45Cfg // Generation automatique des Raccords a 45 degres ( wxT( "Racc45" ), /* Keyword */ - & g_Raccord_45_Auto, /* Parameter address */ + &g_Raccord_45_Auto, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_INT UnitCfg // Units: 0 inch, 1 mm ( wxT( "Unite" ), /* Keyword */ - & g_UnitMetric, /* Parameter address */ + &g_UnitMetric, /* Parameter address */ FALSE /* Default value */ ); static PARAM_CFG_BOOL SegmFillCfg ( wxT( "SegFill" ), /* Keyword */ - & DisplayOpt.DisplayPcbTrackFill, /* Parameter address */ + &DisplayOpt.DisplayPcbTrackFill, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_BOOL NewTrackAfficheGardeCfg ( wxT( "NewAffG" ), /* Keyword */ - & g_ShowIsolDuringCreateTrack, /* Parameter address */ + &g_ShowIsolDuringCreateTrack, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_BOOL TrackAfficheGardeCfg ( wxT( "SegAffG" ), /* Keyword */ - & DisplayOpt.DisplayTrackIsol, /* Parameter address */ + &DisplayOpt.DisplayTrackIsol, /* Parameter address */ FALSE /* Default value */ ); static PARAM_CFG_BOOL PadFillCfg ( wxT( "PadFill" ), /* Keyword */ - & DisplayOpt.DisplayPadFill, /* Parameter address */ + &DisplayOpt.DisplayPadFill, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_BOOL PadAfficheGardeCfg ( wxT( "PadAffG" ), /* Keyword */ - & DisplayOpt.DisplayPadIsol, /* Parameter address */ + &DisplayOpt.DisplayPadIsol, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_BOOL PadShowNumCfg ( wxT( "PadSNum" ), /* Keyword */ - & DisplayOpt.DisplayPadNum, /* Parameter address */ + &DisplayOpt.DisplayPadNum, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_INT AfficheContourModuleCfg // Module Edges: fill/line/sketch ( wxT( "ModAffC" ), /* Keyword */ - & DisplayOpt.DisplayModEdge, /* Parameter address */ + &DisplayOpt.DisplayModEdge, /* Parameter address */ FILAIRE, /* Default value */ 0, 2 /* Valeurs extremes */ ); @@ -218,7 +235,7 @@ static PARAM_CFG_INT AfficheContourModuleCfg // Module Edges: fill/line/sketc static PARAM_CFG_INT AfficheTexteModuleCfg // Module Texts: fill/line/sketch ( wxT( "ModAffT" ), /* Keyword */ - & DisplayOpt.DisplayModText, /* Parameter address */ + &DisplayOpt.DisplayModText, /* Parameter address */ FILAIRE, /* Default value */ 0, 2 /* Valeurs extremes */ ); @@ -226,7 +243,7 @@ static PARAM_CFG_INT AfficheTexteModuleCfg // Module Texts: fill/line/sketch static PARAM_CFG_INT AfficheTextePcbCfg // PCB Texts: fill/line/sketch ( wxT( "PcbAffT" ), /* Keyword */ - & DisplayOpt.DisplayDrawItems, /* Parameter address */ + &DisplayOpt.DisplayDrawItems, /* Parameter address */ FILAIRE, /* Default value */ 0, 2 /* Valeurs extremes */ ); @@ -234,14 +251,14 @@ static PARAM_CFG_INT AfficheTextePcbCfg // PCB Texts: fill/line/sketch static PARAM_CFG_BOOL SegmPcb45Cfg // Force 45 degrees for segments ( wxT( "SgPcb45" ), /* Keyword */ - & Segments_45_Only, /* Parameter address */ + &Segments_45_Only, /* Parameter address */ TRUE /* Default value */ ); static PARAM_CFG_INT TextePcbDimVCfg ( wxT( "TxtPcbV" ), /* Keyword */ - & g_DesignSettings.m_PcbTextSize.y, /* Parameter address */ + &g_DesignSettings.m_PcbTextSize.y, /* Parameter address */ 600, /* Default value */ 10, 2000 /* Valeurs extremes */ ); @@ -249,7 +266,7 @@ static PARAM_CFG_INT TextePcbDimVCfg static PARAM_CFG_INT TextePcbDimHCfg ( wxT( "TxtPcbH" ), /* Keyword */ - & g_DesignSettings.m_PcbTextSize.x, /* Parameter address */ + &g_DesignSettings.m_PcbTextSize.x, /* Parameter address */ 600, /* Default value */ 10, 2000 /* Valeurs extremes */ ); @@ -258,7 +275,7 @@ static PARAM_CFG_SETCOLOR ColorLayer0Cfg // CU Layer Color ( INSETUP, wxT( "ColLay0" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[0], /* Parameter address */ + &g_DesignSettings.m_LayerColor[0], /* Parameter address */ GREEN /* Default value */ ); @@ -266,7 +283,7 @@ static PARAM_CFG_SETCOLOR ColorLayer1Cfg ( INSETUP, wxT( "ColLay1" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[1], /* Parameter address */ + &g_DesignSettings.m_LayerColor[1], /* Parameter address */ BLUE /* Default value */ ); @@ -274,7 +291,7 @@ static PARAM_CFG_SETCOLOR ColorLayer2Cfg ( INSETUP, wxT( "ColLay2" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[2], /* Parameter address */ + &g_DesignSettings.m_LayerColor[2], /* Parameter address */ LIGHTGRAY /* Default value */ ); @@ -282,7 +299,7 @@ static PARAM_CFG_SETCOLOR ColorLayer3Cfg ( INSETUP, wxT( "ColLay3" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[3], /* Parameter address */ + &g_DesignSettings.m_LayerColor[3], /* Parameter address */ 5 /* Default value */ ); @@ -290,7 +307,7 @@ static PARAM_CFG_SETCOLOR ColorLayer4Cfg ( INSETUP, wxT( "ColLay4" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[4], /* Parameter address */ + &g_DesignSettings.m_LayerColor[4], /* Parameter address */ 4 /* Default value */ ); @@ -298,7 +315,7 @@ static PARAM_CFG_SETCOLOR ColorLayer5Cfg ( INSETUP, wxT( "ColLay5" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[5], /* Parameter address */ + &g_DesignSettings.m_LayerColor[5], /* Parameter address */ 5 /* Default value */ ); @@ -306,7 +323,7 @@ static PARAM_CFG_SETCOLOR ColorLayer6Cfg ( INSETUP, wxT( "ColLay6" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[6], /* Parameter address */ + &g_DesignSettings.m_LayerColor[6], /* Parameter address */ 6 /* Default value */ ); @@ -314,7 +331,7 @@ static PARAM_CFG_SETCOLOR ColorLayer7Cfg ( INSETUP, wxT( "ColLay7" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[7], /* Parameter address */ + &g_DesignSettings.m_LayerColor[7], /* Parameter address */ 5 /* Default value */ ); @@ -322,7 +339,7 @@ static PARAM_CFG_SETCOLOR ColorLayer8Cfg ( INSETUP, wxT( "ColLay8" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[8], /* Parameter address */ + &g_DesignSettings.m_LayerColor[8], /* Parameter address */ 7 /* Default value */ ); @@ -330,7 +347,7 @@ static PARAM_CFG_SETCOLOR ColorLayer9Cfg ( INSETUP, wxT( "ColLay9" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[9], /* Parameter address */ + &g_DesignSettings.m_LayerColor[9], /* Parameter address */ 1 /* Default value */ ); @@ -338,7 +355,7 @@ static PARAM_CFG_SETCOLOR ColorLayer10Cfg ( INSETUP, wxT( "ColLayA" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[10], /* Parameter address */ + &g_DesignSettings.m_LayerColor[10], /* Parameter address */ 2 /* Default value */ ); @@ -346,7 +363,7 @@ static PARAM_CFG_SETCOLOR ColorLayer11Cfg ( INSETUP, wxT( "ColLayB" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[11], /* Parameter address */ + &g_DesignSettings.m_LayerColor[11], /* Parameter address */ 3 /* Default value */ ); @@ -354,7 +371,7 @@ static PARAM_CFG_SETCOLOR ColorLayer12Cfg ( INSETUP, wxT( "ColLayC" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[12], /* Parameter address */ + &g_DesignSettings.m_LayerColor[12], /* Parameter address */ 12 /* Default value */ ); @@ -362,7 +379,7 @@ static PARAM_CFG_SETCOLOR ColorLayer13Cfg ( INSETUP, wxT( "ColLayD" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[13], /* Parameter address */ + &g_DesignSettings.m_LayerColor[13], /* Parameter address */ 13 /* Default value */ ); @@ -370,7 +387,7 @@ static PARAM_CFG_SETCOLOR ColorLayer14Cfg ( INSETUP, wxT( "ColLayE" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[14], /* Parameter address */ + &g_DesignSettings.m_LayerColor[14], /* Parameter address */ 14 /* Default value */ ); @@ -378,7 +395,7 @@ static PARAM_CFG_SETCOLOR ColorLayer15Cfg // CMP Layer Color ( INSETUP, wxT( "ColLayF" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[15], /* Parameter address */ + &g_DesignSettings.m_LayerColor[15], /* Parameter address */ RED /* Default value */ ); @@ -386,7 +403,7 @@ static PARAM_CFG_SETCOLOR ColorLayer16Cfg // Adhesive CU Layer Color ( INSETUP, wxT( "ColLayG" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[16], /* Parameter address */ + &g_DesignSettings.m_LayerColor[16], /* Parameter address */ 1 /* Default value */ ); @@ -394,7 +411,7 @@ static PARAM_CFG_SETCOLOR ColorLayer17Cfg // Adhesive CMP Layer Color ( INSETUP, wxT( "ColLayH" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[17], /* Parameter address */ + &g_DesignSettings.m_LayerColor[17], /* Parameter address */ 5 /* Default value */ ); @@ -402,7 +419,7 @@ static PARAM_CFG_SETCOLOR ColorLayer18Cfg // Solder Mask CU Layer Color ( INSETUP, wxT( "ColLayI" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[18], /* Parameter address */ + &g_DesignSettings.m_LayerColor[18], /* Parameter address */ 11 /* Default value */ ); @@ -410,7 +427,7 @@ static PARAM_CFG_SETCOLOR ColorLayer19Cfg // Solder Mask CMP Layer Color ( INSETUP, wxT( "ColLayJ" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[19], /* Parameter address */ + &g_DesignSettings.m_LayerColor[19], /* Parameter address */ 4 /* Default value */ ); @@ -418,7 +435,7 @@ static PARAM_CFG_SETCOLOR ColorLayer20Cfg // Silk Screen CU Layer Color ( INSETUP, wxT( "ColLayK" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[20], /* Parameter address */ + &g_DesignSettings.m_LayerColor[20], /* Parameter address */ 5 /* Default value */ ); @@ -426,7 +443,7 @@ static PARAM_CFG_SETCOLOR ColorLayer21Cfg // Silk Screen CMP Layer Color ( INSETUP, wxT( "ColLayL" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[21], /* Parameter address */ + &g_DesignSettings.m_LayerColor[21], /* Parameter address */ 3 /* Default value */ ); @@ -434,7 +451,7 @@ static PARAM_CFG_SETCOLOR ColorLayer22Cfg // Mask CU Layer Color ( INSETUP, wxT( "ColLayM" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[22], /* Parameter address */ + &g_DesignSettings.m_LayerColor[22], /* Parameter address */ 6 /* Default value */ ); @@ -442,7 +459,7 @@ static PARAM_CFG_SETCOLOR ColorLayer23Cfg // Mask CMP Layer Color ( INSETUP, wxT( "ColLayN" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[23], /* Parameter address */ + &g_DesignSettings.m_LayerColor[23], /* Parameter address */ 5 /* Default value */ ); @@ -450,7 +467,7 @@ static PARAM_CFG_SETCOLOR ColorLayer24Cfg // DRAW Layer Color ( INSETUP, wxT( "ColLayO" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[24], /* Parameter address */ + &g_DesignSettings.m_LayerColor[24], /* Parameter address */ LIGHTGRAY /* Default value */ ); @@ -458,7 +475,7 @@ static PARAM_CFG_SETCOLOR ColorLayer25Cfg // Comment Layer Color ( INSETUP, wxT( "ColLayP" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[25], /* Parameter address */ + &g_DesignSettings.m_LayerColor[25], /* Parameter address */ 1 /* Default value */ ); @@ -466,7 +483,7 @@ static PARAM_CFG_SETCOLOR ColorLayer26Cfg // ECO1 Layer Color ( INSETUP, wxT( "ColLayQ" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[26], /* Parameter address */ + &g_DesignSettings.m_LayerColor[26], /* Parameter address */ 2 /* Default value */ ); @@ -474,7 +491,7 @@ static PARAM_CFG_SETCOLOR ColorLayer27Cfg //ECO2 Layer Color ( INSETUP, wxT( "ColLayR" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[27], /* Parameter address */ + &g_DesignSettings.m_LayerColor[27], /* Parameter address */ 14 /* Default value */ ); @@ -482,7 +499,7 @@ static PARAM_CFG_SETCOLOR ColorLayer28Cfg // EDGES Layer Color ( INSETUP, wxT( "ColLayS" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[28], /* Parameter address */ + &g_DesignSettings.m_LayerColor[28], /* Parameter address */ YELLOW /* Default value */ ); @@ -490,7 +507,7 @@ static PARAM_CFG_SETCOLOR ColorLayer29Cfg ( INSETUP, wxT( "ColLayT" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[29], /* Parameter address */ + &g_DesignSettings.m_LayerColor[29], /* Parameter address */ 13 /* Default value */ ); @@ -498,7 +515,7 @@ static PARAM_CFG_SETCOLOR ColorLayer30Cfg ( INSETUP, wxT( "ColLayU" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[30], /* Parameter address */ + &g_DesignSettings.m_LayerColor[30], /* Parameter address */ 14 /* Default value */ ); @@ -506,7 +523,7 @@ static PARAM_CFG_SETCOLOR ColorLayer31Cfg ( INSETUP, wxT( "ColLayV" ), /* Keyword */ - & g_DesignSettings.m_LayerColor[31], /* Parameter address */ + &g_DesignSettings.m_LayerColor[31], /* Parameter address */ 7 /* Default value */ ); @@ -514,7 +531,7 @@ static PARAM_CFG_SETCOLOR ColorTxtModCmpCfg ( INSETUP, wxT( "CTxtMoC" ), /* Keyword */ - & g_ModuleTextCMPColor, /* Parameter address */ + &g_ModuleTextCMPColor, /* Parameter address */ LIGHTGRAY /* Default value */ ); @@ -522,7 +539,7 @@ static PARAM_CFG_SETCOLOR ColorTxtModCuCfg ( INSETUP, wxT( "CTxtMoS" ), /* Keyword */ - & g_ModuleTextCUColor, /* Parameter address */ + &g_ModuleTextCUColor, /* Parameter address */ 1 /* Default value */ ); @@ -530,14 +547,14 @@ static PARAM_CFG_SETCOLOR VisibleTxtModCfg ( INSETUP, wxT( "CTxtVis" ), /* Keyword */ - & g_ModuleTextNOVColor, /* Parameter address */ + &g_ModuleTextNOVColor, /* Parameter address */ DARKGRAY /* Default value */ ); static PARAM_CFG_INT TexteModDimVCfg ( wxT( "TxtModV" ), /* Keyword */ - & ModuleTextSize.y, /* Parameter address */ + &ModuleTextSize.y, /* Parameter address */ 500, /* Default value */ 1, 20000 /* Valeurs extremes */ ); @@ -545,7 +562,7 @@ static PARAM_CFG_INT TexteModDimVCfg static PARAM_CFG_INT TexteModDimHCfg ( wxT( "TxtModH" ), /* Keyword */ - & ModuleTextSize.x, /* Parameter address */ + &ModuleTextSize.x, /* Parameter address */ 500, /* Default value */ 1, 20000 /* Valeurs extremes */ ); @@ -553,7 +570,7 @@ static PARAM_CFG_INT TexteModDimHCfg static PARAM_CFG_INT TexteModWidthCfg ( wxT( "TxtModW" ), /* Keyword */ - & ModuleTextWidth, /* Parameter address */ + &ModuleTextWidth, /* Parameter address */ 100, /* Default value */ 1, 10000 /* Valeurs extremes */ ); @@ -562,7 +579,7 @@ static PARAM_CFG_SETCOLOR ColorAncreModCfg ( INSETUP, wxT( "CAncreM" ), /* Keyword */ - & g_AnchorColor, /* Parameter address */ + &g_AnchorColor, /* Parameter address */ BLUE /* Default value */ ); @@ -570,7 +587,7 @@ static PARAM_CFG_SETCOLOR ColorPadCuCfg ( INSETUP, wxT( "CoPadCu" ), /* Keyword */ - & g_PadCUColor, /* Parameter address */ + &g_PadCUColor, /* Parameter address */ GREEN /* Default value */ ); @@ -578,39 +595,39 @@ static PARAM_CFG_SETCOLOR ColorPadCmpCfg ( INSETUP, wxT( "CoPadCm" ), /* Keyword */ - & g_PadCMPColor, /* Parameter address */ + &g_PadCMPColor, /* Parameter address */ RED /* Default value */ ); -static PARAM_CFG_SETCOLOR ColorViaNormCfg +static PARAM_CFG_SETCOLOR ColorViaThroughCfg ( INSETUP, - wxT( "CoViaNo" ), /* Keyword */ - & g_DesignSettings.m_ViaColor[VIA_THROUGH], /* Parameter address */ + wxT( "CoViaTh" ), /* Keyword */ + &g_DesignSettings.m_ViaColor[VIA_THROUGH], /* Parameter address */ LIGHTGRAY /* Default value */ ); -static PARAM_CFG_SETCOLOR ColorViaborgneCfg +static PARAM_CFG_SETCOLOR ColorViaBlindBuriedCfg ( INSETUP, - wxT( "CoViaBo" ), /* Keyword */ - & g_DesignSettings.m_ViaColor[VIA_BURIED], /* Parameter address */ - CYAN /* Default value */ + wxT( "CoViaBu" ), /* Keyword */ + &g_DesignSettings.m_ViaColor[VIA_BLIND_BURIED], /* Parameter address */ + BROWN /* Default value */ ); -static PARAM_CFG_SETCOLOR ColorViaEnterreeCfg // Buried Via Color +static PARAM_CFG_SETCOLOR ColorViaMicroViaCfg // Buried Via Color ( INSETUP, - wxT( "CoViaEn" ), /* Keyword */ - & g_DesignSettings.m_ViaColor[VIA_BLIND], /* Parameter address */ - BROWN /* Default value */ + wxT( "CoViaMi" ), /* Keyword */ + &g_DesignSettings.m_ViaColor[VIA_MICROVIA], /* Parameter address */ + CYAN /* Default value */ ); static PARAM_CFG_SETCOLOR ColorpcbGrilleCfg ( INSETUP, wxT( "CoPcbGr" ), /* Keyword */ - & g_GridColor, /* Parameter address */ + &g_GridColor, /* Parameter address */ DARKGRAY /* Default value */ ); @@ -618,14 +635,14 @@ static PARAM_CFG_SETCOLOR ColorCheveluCfg ( INSETUP, wxT( "CoRatsN" ), /* Keyword */ - & g_DesignSettings.m_RatsnestColor, /* Parameter address */ + &g_DesignSettings.m_RatsnestColor, /* Parameter address */ WHITE /* Default value */ ); static PARAM_CFG_INT HPGLpenNumCfg ( wxT( "HPGLnum" ), /* Keyword */ - & g_HPGL_Pen_Num, /* Parameter address */ + &g_HPGL_Pen_Num, /* Parameter address */ 1, /* Default value */ 1, 16 /* Valeurs extremes */ ); @@ -633,7 +650,7 @@ static PARAM_CFG_INT HPGLpenNumCfg static PARAM_CFG_INT HPGLdiamCfg // HPGL pen size (mils) ( wxT( "HPGdiam" ), /* Keyword */ - & g_HPGL_Pen_Diam, /* Parameter address */ + &g_HPGL_Pen_Diam, /* Parameter address */ 15, /* Default value */ 0, 100 /* Valeurs extremes */ ); @@ -641,7 +658,7 @@ static PARAM_CFG_INT HPGLdiamCfg // HPGL pen size (mils) static PARAM_CFG_INT HPGLspeedCfg //HPGL pen speed (cm/s) ( wxT( "HPGLSpd" ), /* Keyword */ - & g_HPGL_Pen_Speed, /* Parameter address */ + &g_HPGL_Pen_Speed, /* Parameter address */ 20, /* Default value */ 0, 1000 /* Valeurs extremes */ ); @@ -649,7 +666,7 @@ static PARAM_CFG_INT HPGLspeedCfg //HPGL pen speed (cm/s) static PARAM_CFG_INT HPGLrecouvrementCfg ( wxT( "HPGLrec" ), /* Keyword */ - & g_HPGL_Pen_Recouvrement, /* Parameter address */ + &g_HPGL_Pen_Recouvrement, /* Parameter address */ 2, /* Default value */ 0, 0x100 /* Valeurs extremes */ ); @@ -657,14 +674,14 @@ static PARAM_CFG_INT HPGLrecouvrementCfg static PARAM_CFG_BOOL HPGLcenterCfg //HPGL Org Coord ( 0 normal, 1 Centre) ( wxT( "HPGLorg" ), /* Keyword */ - & HPGL_Org_Centre, /* Parameter address */ + &HPGL_Org_Centre, /* Parameter address */ FALSE /* Default value */ ); static PARAM_CFG_INT GERBERSpotMiniCfg //Aperture Mini (mils) ( wxT( "GERBmin" ), /* Keyword */ - & spot_mini, /* Parameter address */ + &spot_mini, /* Parameter address */ 15, /* Default value */ 1, 100 /* Valeurs extremes */ ); @@ -672,7 +689,7 @@ static PARAM_CFG_INT GERBERSpotMiniCfg //Aperture Mini (mils) static PARAM_CFG_INT VernisEpargneGardeCfg ( wxT( "VEgarde" ), /* Keyword */ - & g_DesignSettings.m_MaskMargin, /* Parameter address */ + &g_DesignSettings.m_MaskMargin, /* Parameter address */ 100, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -680,7 +697,7 @@ static PARAM_CFG_INT VernisEpargneGardeCfg static PARAM_CFG_INT DrawSegmLargeurCfg ( wxT( "DrawLar" ), /* Keyword */ - & g_DesignSettings.m_DrawSegmentWidth, /* Parameter address */ + &g_DesignSettings.m_DrawSegmentWidth, /* Parameter address */ 120, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -688,7 +705,7 @@ static PARAM_CFG_INT DrawSegmLargeurCfg static PARAM_CFG_INT EdgeSegmLargeurCfg ( wxT( "EdgeLar" ), /* Keyword */ - & g_DesignSettings.m_EdgeSegmentWidth, /* Parameter address */ + &g_DesignSettings.m_EdgeSegmentWidth, /* Parameter address */ 120, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -696,7 +713,7 @@ static PARAM_CFG_INT EdgeSegmLargeurCfg static PARAM_CFG_INT TexteSegmLargeurCfg ( wxT( "TxtLar" ), /* Keyword */ - & g_DesignSettings.m_PcbTextWidth, /* Parameter address */ + &g_DesignSettings.m_PcbTextWidth, /* Parameter address */ 120, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -704,7 +721,7 @@ static PARAM_CFG_INT TexteSegmLargeurCfg static PARAM_CFG_INT ModuleSegmWidthCfg ( wxT( "MSegLar" ), /* Keyword */ - & ModuleSegmentWidth, /* Parameter address */ + &ModuleSegmentWidth, /* Parameter address */ 120, /* Default value */ 0, 0xFFFF /* Valeurs extremes */ ); @@ -712,7 +729,7 @@ static PARAM_CFG_INT ModuleSegmWidthCfg static PARAM_CFG_INT FormatPlotCfg ( wxT( "ForPlot" ), /* Keyword */ - & format_plot, /* Parameter address */ + &format_plot, /* Parameter address */ 1, /* Default value */ 0, 3 /* Valeurs extremes */ ); @@ -720,7 +737,7 @@ static PARAM_CFG_INT FormatPlotCfg static PARAM_CFG_INT WTraitSerigraphiePlotCfg ( wxT( "WpenSer" ), /* Keyword */ - & g_PlotLine_Width, /* Parameter address */ + &g_PlotLine_Width, /* Parameter address */ 10, /* Default value */ 1, 10000 /* Valeurs extremes */ ); @@ -728,7 +745,7 @@ static PARAM_CFG_INT WTraitSerigraphiePlotCfg static PARAM_CFG_DOUBLE UserGrilleXCfg ( wxT( "UserGrX" ), /* Keyword */ - & g_UserGrid.x, /* Parameter address */ + &g_UserGrid.x, /* Parameter address */ 0.01, /* Default value */ 0.0001, 100.0 /* Valeurs extremes (inches)*/ ); @@ -736,7 +753,7 @@ static PARAM_CFG_DOUBLE UserGrilleXCfg static PARAM_CFG_DOUBLE UserGrilleYCfg ( wxT( "UserGrY" ), /* Keyword */ - & g_UserGrid.y, /* Parameter address */ + &g_UserGrid.y, /* Parameter address */ 0.01, /* Default value */ 0.0001, 100.0 /* Valeurs extremes (inches)*/ ); @@ -744,7 +761,7 @@ static PARAM_CFG_DOUBLE UserGrilleYCfg static PARAM_CFG_INT UserGrilleUnitCfg ( wxT( "UserGrU" ), /* Keyword */ - & g_UserGrid_Unit, /* Parameter address */ + &g_UserGrid_Unit, /* Parameter address */ 1, /* Default value */ 0, 1 /* Valeurs extremes */ ); @@ -752,7 +769,7 @@ static PARAM_CFG_INT UserGrilleUnitCfg static PARAM_CFG_INT DivGrillePcbCfg ( wxT( "DivGrPc" ), /* Keyword */ - & Pcbdiv_grille, /* Parameter address */ + &Pcbdiv_grille, /* Parameter address */ 1, /* Default value */ 1, 10 /* Valeurs extremes */ ); @@ -760,7 +777,7 @@ static PARAM_CFG_INT DivGrillePcbCfg static PARAM_CFG_INT TimeOutCfg //Duree entre Sauvegardes auto en secondes ( wxT( "TimeOut" ), /* Keyword */ - & g_TimeOut, /* Parameter address */ + &g_TimeOut, /* Parameter address */ 600, /* Default value */ 0, 60000 /* Valeurs extremes */ ); @@ -769,7 +786,7 @@ static PARAM_CFG_BOOL DisplPolairCfg ( INSETUP, wxT( "DPolair" ), /* Keyword */ - & DisplayOpt.DisplayPolarCood, /* Parameter address */ + &DisplayOpt.DisplayPolarCood, /* Parameter address */ FALSE /* Default value */ ); @@ -777,7 +794,7 @@ static PARAM_CFG_INT CursorShapeCfg ( INSETUP, wxT( "CuShape" ), /* Keyword */ - & g_CursorShape, /* Parameter address */ + &g_CursorShape, /* Parameter address */ 0, /* Default value */ 0, 1 /* Valeurs extremes */ ); @@ -785,7 +802,7 @@ static PARAM_CFG_INT CursorShapeCfg static PARAM_CFG_INT PrmMaxLinksShowed ( wxT( "MaxLnkS" ), /* Keyword */ - & g_MaxLinksShowed, /* Parameter address */ + &g_MaxLinksShowed, /* Parameter address */ 3, /* Default value */ 0, 15 /* Valeurs extremes */ ); @@ -793,14 +810,14 @@ static PARAM_CFG_INT PrmMaxLinksShowed static PARAM_CFG_BOOL ShowRatsnestCfg ( wxT( "ShowRat" ), /* Keyword */ - & g_Show_Ratsnest, /* Parameter address */ + &g_Show_Ratsnest, /* Parameter address */ FALSE /* Default value */ ); static PARAM_CFG_BOOL ShowModuleRatsnestCfg ( wxT( "ShowMRa" ), /* Keyword */ - & g_Show_Module_Ratsnest, /* Parameter address */ + &g_Show_Module_Ratsnest, /* Parameter address */ TRUE /* Default value */ ); @@ -808,7 +825,7 @@ static PARAM_CFG_BOOL TwoSegmentTrackBuildCfg ( INSETUP, wxT( "TwoSegT" ), /* Keyword */ - & g_TwoSegmentTrackBuild, /* Parameter address */ + &g_TwoSegmentTrackBuild, /* Parameter address */ TRUE /* Default value */ ); @@ -823,6 +840,8 @@ PARAM_CFG_BASE* ParamCfgList[] = &PadMasqueLayerCfg, &ViaDiametreCfg, &ViaDrillCfg, + &MicroViaDiametreCfg, + &MicroViaDrillCfg, &ViaShowHoleCfg, &TrackClearenceCfg, &LayerCountCfg, @@ -886,9 +905,9 @@ PARAM_CFG_BASE* ParamCfgList[] = &ColorAncreModCfg, &ColorPadCuCfg, &ColorPadCmpCfg, - &ColorViaNormCfg, - &ColorViaborgneCfg, - &ColorViaEnterreeCfg, + &ColorViaThroughCfg, + &ColorViaBlindBuriedCfg, + &ColorViaMicroViaCfg, &ColorpcbGrilleCfg, &ColorCheveluCfg, &HPGLpenNumCfg, diff --git a/pcbnew/pcbnew.h b/pcbnew/pcbnew.h index e811151417..4a397db8e1 100644 --- a/pcbnew/pcbnew.h +++ b/pcbnew/pcbnew.h @@ -109,7 +109,7 @@ eda_global bool Drc_On #endif ; eda_global bool g_AutoDeleteOldTrack /* Allows automatic deletion of the old track after -creation of a new track */ + * creation of a new track */ #ifdef MAIN = TRUE #endif @@ -157,9 +157,9 @@ bool inline IsModuleLayerVisible( int layer ) { eda_global bool Track_45_Only; /* Flag pour limiter l'inclinaison * pistes a 45 degres seulement */ -eda_global bool Segments_45_Only;/* Flag pour limiter l'inclinaison +eda_global bool Segments_45_Only; /* Flag pour limiter l'inclinaison * edge pcb a 45 degres seulement */ -eda_global wxString PcbExtBuffer // Board file extension +eda_global wxString PcbExtBuffer // Board file extension #ifdef MAIN ( wxT( ".brd" ) ) #endif @@ -169,13 +169,13 @@ eda_global wxString g_SaveFileName // File Name for periodic saving ( wxT( "$savepcb" ) ) #endif ; -eda_global wxString NetNameBuffer; // Netlist file extension +eda_global wxString NetNameBuffer; // Netlist file extension eda_global wxString NetExtBuffer #ifdef MAIN ( wxT( ".net" ) ) #endif ; -eda_global wxString NetCmpExtBuffer // cmp/footprint association file extension +eda_global wxString NetCmpExtBuffer // cmp/footprint association file extension #ifdef MAIN ( wxT( ".cmp" ) ) #endif @@ -187,7 +187,7 @@ eda_global wxString LibExtBuffer ( wxT( ".mod" ) ) #endif ; -eda_global wxString g_Shapes3DExtBuffer //3D shape file extension +eda_global wxString g_Shapes3DExtBuffer //3D shape file extension #ifdef MAIN ( wxT( ".wrl" ) ) #endif @@ -237,7 +237,7 @@ eda_global class EDA_BoardDesignSettings g_DesignSettings; // Default values for pad editions #ifndef GERBVIEW #ifdef MAIN -D_PAD g_Pad_Master( (MODULE*) NULL ); +D_PAD g_Pad_Master( (MODULE*) NULL ); #else extern D_PAD g_Pad_Master; @@ -285,10 +285,10 @@ eda_global int g_TrackSegmentCount; // New created segment count eda_global wxString g_ViaType_Name[4] #if defined MAIN = { - wxT( "???" ), // Unused - _( "Blind Via" ), // from inner layer to external layer (TOP or BOTTOM) - _( "Buried Via" ), // from inner to inner layer - _( "Standard Via" ) // Usual via (from TOP to BOTTOM layer) + _( "??? Via" ), // Not used yet + _( "Micro Via" ), // from external layer (TOP or BOTTOM) from the near neightbour inner layer only + _( "Blind/Buried Via" ), // from inner or external to inner or external layer (no restriction) + _( "Through Via" ) // Usual via (from TOP to BOTTOM layer only ) } diff --git a/pcbnew/plotps.cpp b/pcbnew/plotps.cpp index 6338c36945..4d4863cbc2 100644 --- a/pcbnew/plotps.cpp +++ b/pcbnew/plotps.cpp @@ -464,12 +464,8 @@ static void PrintDrillMark( BOARD* Pcb ) if( g_DrillShapeOpt == DRILL_MARK ) diam.x = diam.y = SMALL_DRILL; else - { - if( pts->m_Drill < 0 ) - diam.x = diam.y = g_DesignSettings.m_ViaDrill; - else - diam.x = diam.y = pts->m_Drill; - } + diam.x = diam.y = pts->GetDrillValue(); + trace_1_pastille_RONDE_POST( pos, diam.x, FILLED ); } diff --git a/pcbnew/router.cpp b/pcbnew/router.cpp index 696d30d329..f370026b49 100644 --- a/pcbnew/router.cpp +++ b/pcbnew/router.cpp @@ -606,7 +606,7 @@ void WinEDA_PcbFrame::ReadAutoroutedTracks( wxDC* DC ) if( NewVia->GetLayer() == 0x0F || NewVia->GetLayer() == 0xF0 ) NewVia->m_Shape = VIA_THROUGH; else - NewVia->m_Shape = VIA_BURIED; + NewVia->m_Shape = VIA_BLIND_BURIED; NewVia->Insert( m_Pcb, NULL ); NbTrack++; diff --git a/pcbnew/set_color.h b/pcbnew/set_color.h index ffdceb901f..2801eaacca 100644 --- a/pcbnew/set_color.h +++ b/pcbnew/set_color.h @@ -336,19 +336,19 @@ static ColorButton VIA_THROUGH_Butt = TRUE // Toggle ITEM_NOT_SHOW bit of the color variable }; -static ColorButton Via_Aveugle_Butt = +static ColorButton VIA_BLIND_BURIED_Butt = { wxT( "*" ), - VIA_BLIND, // Layer - &g_DesignSettings.m_ViaColor[VIA_BLIND], // Address of optional parameter + VIA_BLIND_BURIED, // Layer + &g_DesignSettings.m_ViaColor[VIA_BLIND_BURIED], // Address of optional parameter TRUE // Toggle ITEM_NOT_SHOW bit of the color variable }; -static ColorButton BLIND_VIA_Butt = +static ColorButton MICRO_VIA_Butt = { wxT( "*" ), - VIA_BURIED, // Layer - &g_DesignSettings.m_ViaColor[VIA_BURIED], // Address of optional parameter + VIA_MICROVIA, // Layer + &g_DesignSettings.m_ViaColor[VIA_MICROVIA], // Address of optional parameter TRUE // Toggle ITEM_NOT_SHOW bit of the color variable }; @@ -491,8 +491,8 @@ static ColorButton* laytool_list[] = { // &Layer_32_Butt, &VIA_THROUGH_Butt, - &Via_Aveugle_Butt, - &BLIND_VIA_Butt, + &VIA_BLIND_BURIED_Butt, + &MICRO_VIA_Butt, &Ratsnest_Butt, &Pad_Cu_Butt, &Pad_Cmp_Butt, diff --git a/pcbnew/via_edit.cpp b/pcbnew/via_edit.cpp index 8fd943e6fd..d879f0672a 100644 --- a/pcbnew/via_edit.cpp +++ b/pcbnew/via_edit.cpp @@ -1,6 +1,6 @@ - /**********************************************/ - /* vi_edit.cpp: som editing function for vias */ - /**********************************************/ +/**********************************************/ +/* vi_edit.cpp: som editing function for vias */ +/**********************************************/ #include "fctsys.h" #include "gr_basic.h" @@ -12,93 +12,102 @@ /**********************************************************************************/ -void WinEDA_PcbFrame::Via_Edit_Control(wxDC * DC, int command_type, SEGVIA * via) +void WinEDA_PcbFrame::Via_Edit_Control( wxDC* DC, int command_type, SEGVIA* via ) /**********************************************************************************/ -/* - Execute edit commands relative to vias -*/ -{ -int ii; -TRACK * via_struct ; - - switch ( command_type ) - { - case ID_POPUP_PCB_SELECT_VIASIZE1: - case ID_POPUP_PCB_SELECT_VIASIZE2: - case ID_POPUP_PCB_SELECT_VIASIZE3: - case ID_POPUP_PCB_SELECT_VIASIZE4: - case ID_POPUP_PCB_SELECT_VIASIZE5: - case ID_POPUP_PCB_SELECT_VIASIZE6: - case ID_POPUP_PCB_SELECT_VIASIZE7: - case ID_POPUP_PCB_SELECT_VIASIZE8: // selec the new current value for via size (via diameter) - DrawPanel->MouseToCursorSchema(); - ii = command_type - ID_POPUP_PCB_SELECT_VIASIZE1; - g_DesignSettings.m_CurrentViaSize = g_DesignSettings.m_ViaSizeHistory[ii]; - DisplayTrackSettings(); - break; - - case ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE: // Enter a new alternate value for drill via - InstallPcbOptionsFrame(wxDefaultPosition, DC, ID_PCB_TRACK_SIZE_SETUP); - DrawPanel->MouseToCursorSchema(); - case ID_POPUP_PCB_VIA_HOLE_TO_VALUE: // Set the drill via to custom - if ( (g_ViaHoleLastValue > 0) && (g_ViaHoleLastValue < via->m_Width) ) - { - via->Draw(DrawPanel, DC, GR_XOR); - via->m_Drill = g_ViaHoleLastValue; - via->Draw(DrawPanel, DC, GR_OR); - GetScreen()->SetModify(); - } - else DisplayError(this, _("Incorrect value for Via drill. No via drill change")); - break; - - - case ID_POPUP_PCB_VIA_HOLE_EXPORT: // Export the current drill value as the new custom value - if ( via->m_Drill > 0 ) g_ViaHoleLastValue = via->m_Drill; - break; - - case ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS:// Export the current drill value to via which héave the same size - if ( via->m_Drill > 0 ) g_ViaHoleLastValue = via->m_Drill; - via_struct = m_Pcb->m_Track ; - for ( ; via_struct != NULL; via_struct = (TRACK*) via_struct->Pnext ) - { - if( via_struct->Type() == TYPEVIA ) /* mise a jour du diametre de la via */ - { - if ( via_struct->m_Width != via->m_Width ) continue; - via_struct->Draw(DrawPanel, DC, GR_XOR); - via_struct->m_Drill = via->m_Drill; - via_struct->Draw(DrawPanel, DC, GR_OR); - } - } - GetScreen()->SetModify(); - break; - case ID_POPUP_PCB_VIA_HOLE_TO_DEFAULT: - via->Draw(DrawPanel, DC, GR_XOR); - via->m_Drill = -1; - via->Draw(DrawPanel, DC, GR_OR); - GetScreen()->SetModify(); - break; - - case ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT: // Reset all via hole to default value - via_struct = m_Pcb->m_Track ; - for ( ; via_struct != NULL; via_struct = (TRACK*) via_struct->Pnext ) - { - if( via_struct->Type() == TYPEVIA ) /* mise a jour du diametre de la via */ - { - if( via_struct->m_Drill != -1 ) - { - via_struct->Draw(DrawPanel, DC, GR_XOR); - via_struct->m_Drill = -1; - via_struct->Draw(DrawPanel, DC, GR_OR); - } - } - } - GetScreen()->SetModify(); - break; - - default: - DisplayError( this, wxT("WinEDA_PcbFrame::Via_Edition() error: unknown command")); - break; - } - DrawPanel->MouseToCursorSchema(); +/* + * Execute edit commands relative to vias + */ +{ + int ii; + TRACK* via_struct; + + switch( command_type ) + { + case ID_POPUP_PCB_SELECT_VIASIZE1: + case ID_POPUP_PCB_SELECT_VIASIZE2: + case ID_POPUP_PCB_SELECT_VIASIZE3: + case ID_POPUP_PCB_SELECT_VIASIZE4: + case ID_POPUP_PCB_SELECT_VIASIZE5: + case ID_POPUP_PCB_SELECT_VIASIZE6: + case ID_POPUP_PCB_SELECT_VIASIZE7: + case ID_POPUP_PCB_SELECT_VIASIZE8: // selec the new current value for via size (via diameter) + DrawPanel->MouseToCursorSchema(); + ii = command_type - ID_POPUP_PCB_SELECT_VIASIZE1; + g_DesignSettings.m_CurrentViaSize = g_DesignSettings.m_ViaSizeHistory[ii]; + DisplayTrackSettings(); + break; + + case ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE: // Enter a new alternate value for drill via + InstallPcbOptionsFrame( wxDefaultPosition, DC, ID_PCB_TRACK_SIZE_SETUP ); + DrawPanel->MouseToCursorSchema(); + + case ID_POPUP_PCB_VIA_HOLE_TO_VALUE: // Set the drill via to custom + if( (g_ViaHoleLastValue > 0) && (g_ViaHoleLastValue < via->m_Width) ) + { + via->Draw( DrawPanel, DC, GR_XOR ); + via->SetDrillValue( g_ViaHoleLastValue ); + via->Draw( DrawPanel, DC, GR_OR ); + GetScreen()->SetModify(); + } + else + DisplayError( this, _( "Incorrect value for Via drill. No via drill change" ) ); + break; + + + case ID_POPUP_PCB_VIA_HOLE_EXPORT: // Export the current drill value as the new custom value + if( via->GetDrillValue() > 0 ) + g_ViaHoleLastValue = via->GetDrillValue(); + break; + + case ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS: // Export the current drill value to via which héave the same size + if( via->GetDrillValue() > 0 ) + g_ViaHoleLastValue = via->GetDrillValue(); + via_struct = m_Pcb->m_Track; + for( ; via_struct != NULL; via_struct = (TRACK*) via_struct->Pnext ) + { + if( via_struct->Type() == TYPEVIA ) /* mise a jour du diametre de la via */ + { + if( via_struct->m_Width != via->m_Width ) + continue; + via_struct->Draw( DrawPanel, DC, GR_XOR ); + via_struct->SetDrillValue( via->GetDrillValue() ); + via_struct->Draw( DrawPanel, DC, GR_OR ); + } + } + + GetScreen()->SetModify(); + break; + + case ID_POPUP_PCB_VIA_HOLE_TO_DEFAULT: + via->Draw( DrawPanel, DC, GR_XOR ); + via->SetDrillDefault(); + via->Draw( DrawPanel, DC, GR_OR ); + GetScreen()->SetModify(); + break; + + case ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT: // Reset all via hole to default value + via_struct = m_Pcb->m_Track; + for( ; via_struct != NULL; via_struct = (TRACK*) via_struct->Pnext ) + { + if( via_struct->Type() == TYPEVIA ) /* mise a jour du diametre de la via */ + { + if( via_struct->IsDrillDefault() ) + { + via_struct->Draw( DrawPanel, DC, GR_XOR ); + via_struct->SetDrillDefault(); + via_struct->Draw( DrawPanel, DC, GR_OR ); + } + } + } + + GetScreen()->SetModify(); + break; + + default: + DisplayError( this, wxT( "WinEDA_PcbFrame::Via_Edition() error: unknown command" ) ); + break; + } + + DrawPanel->MouseToCursorSchema(); }