diff --git a/change_log.txt b/change_log.txt index 7ded6d4ef7..e8894f513b 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-Jul-25 UPDATE Jean-Pierre Charras +================================================================================ + ** Some minor enhancements ++ pcbnew + In Drc diags, better (more explicit) messages + Change (and simplify) code in 'update' as well as 'insert' modules into main PCB from within the module editor, + because it had a bug (crashes when there was no footprint in pcb) + + + 2007-June-21 UPDATE Tim Hanson ================================================================================ + pcbnew diff --git a/cvpcb/cvpcb.h b/cvpcb/cvpcb.h index af2ef9c4aa..72a18405ea 100644 --- a/cvpcb/cvpcb.h +++ b/cvpcb/cvpcb.h @@ -15,7 +15,7 @@ #include "colors.h" // Define print format d to display a schematic component line -#define CMP_FORMAT wxT("%3d %8.8s - %16.16s : %-.32s") +#define CMP_FORMAT wxT("%3d %+8s - %+16s : %-.32s") #define FILTERFOOTPRINTKEY "FilterFootprint" diff --git a/cvpcb/options.cpp b/cvpcb/options.cpp deleted file mode 100644 index 8035fb373a..0000000000 --- a/cvpcb/options.cpp +++ /dev/null @@ -1,225 +0,0 @@ - /*****************************************************************/ - /** options.cpp: options pour la visualisation des composants **/ - /****************************************************************/ - -#include "fctsys.h" - -#include "wxstruct.h" -#include "common.h" -#include "cvpcb.h" -#include "protos.h" - -enum { - SET_OPTION = 8000, - SET_EDGE_FORMAT, - SET_TEXTE_FORMAT, - PADFILL_OPT, - PADNUM_OPT, - EDGE_SELECT, - TEXT_SELECT, - ID_SAVE_CONFIG - }; - - -/********************************************/ -/* Classes derivees pour la fenetre Options */ -/********************************************/ - -class wxMyCheckBox: public wxCheckBox -{ -private: -protected: -public: - bool * BoolVar; - - // Constructor and destructor - wxMyCheckBox(wxWindow *parent, int id, const wxString & Title, - bool * RefVar, wxPoint& pos); - ~wxMyCheckBox(void) { }; -}; - - - /************************************************************/ - /* classe derivee pour la fenetre de selection des options */ - /* d'affichage du module */ - /************************************************************/ - -class wxOptionsBox: public wxDialog -{ -private: -protected: -public: - - WinEDA_BasePcbFrame * m_Parent; - wxMyCheckBox * IsShowPadFill; - wxMyCheckBox * IsShowPadNum; - wxRadioBox * EdgeRadioBox; - wxRadioBox *TextRadioBox; - - // Constructor and destructor - wxOptionsBox(WinEDA_BasePcbFrame * parent, wxPoint& pos); - ~wxOptionsBox(void); - - bool OnClose(void); - void SetOptPadFill( wxCommandEvent& event); - void SetOptPadNum( wxCommandEvent& event); - void ReturnDisplayEdgeFormat(wxCommandEvent& event); - void ReturnDisplayTexteFormat(wxCommandEvent& event); - void SaveConfig(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; -BEGIN_EVENT_TABLE(wxOptionsBox, wxDialog ) - EVT_CHECKBOX(PADFILL_OPT, wxOptionsBox::SetOptPadFill) - EVT_CHECKBOX(PADNUM_OPT, wxOptionsBox::SetOptPadNum) - EVT_RADIOBOX(EDGE_SELECT, wxOptionsBox::ReturnDisplayEdgeFormat) - EVT_RADIOBOX(TEXT_SELECT, wxOptionsBox::ReturnDisplayTexteFormat) - EVT_BUTTON(ID_SAVE_CONFIG, wxOptionsBox::SaveConfig) -END_EVENT_TABLE() - - -/*********************************************************************/ -void WinEDA_DisplayFrame::InstallOptionsDisplay(wxCommandEvent& event) -/*********************************************************************/ -/* Creation de la fenetre d'options de la fenetre de visu */ -{ -wxPoint pos; - - GetPosition(&pos.x, &pos.y); - pos.x += 10; if (pos.x < 0 ) pos.x = 0; - pos.y += 50; if (pos.y < 0 ) pos.y = 0; - - wxOptionsBox * OptionWindow = new wxOptionsBox(this, pos); - OptionWindow->ShowModal(); OptionWindow->Destroy(); -} - - - - /********************************/ - /* Constructeur de wxMyCheckBox */ - /********************************/ - -wxMyCheckBox::wxMyCheckBox(wxWindow *parent, int id, const wxString & Title, - bool * RefVar, wxPoint& pos): - wxCheckBox(parent, id, Title, pos) -{ - BoolVar = RefVar; - if( * BoolVar ) this->SetValue(TRUE); - else this->SetValue(FALSE); -} - - -/******************************************************/ -void wxOptionsBox::SetOptPadFill(wxCommandEvent& event) -/******************************************************/ -{ - *IsShowPadFill->BoolVar == 0 ? - * IsShowPadFill->BoolVar = 1 : * IsShowPadFill->BoolVar = 0; - DisplayOpt.DisplayPadFill = m_Parent->m_DisplayPadFill = IsShowPadFill->BoolVar; - m_Parent->ReDrawPanel(); -} - -/******************************************************/ -void wxOptionsBox::SetOptPadNum(wxCommandEvent& event) -/******************************************************/ -{ - *IsShowPadNum->BoolVar == 0 ? - *IsShowPadNum->BoolVar = TRUE : *IsShowPadNum->BoolVar = FALSE; - - DisplayOpt.DisplayPadNum = m_Parent->m_DisplayPadNum = IsShowPadNum->BoolVar; - m_Parent->ReDrawPanel(); -} - - /********************************/ - /* Constructeur de wxOptionsBox */ - /********************************/ - -wxOptionsBox::wxOptionsBox(WinEDA_BasePcbFrame * parent, wxPoint& bpos): - wxDialog(parent, -1, _("Options"), bpos, wxSize(220, 195), - DIALOG_STYLE) -{ -wxPoint pos; - - m_Parent = parent; - - SetFont(*g_DialogFont); - - pos.x = 100; pos.y = 15; - new wxButton(this, ID_SAVE_CONFIG, _("Save Cfg"), pos); - - pos.x = 10; pos.y = 10; - IsShowPadFill = new wxMyCheckBox(this, - PADFILL_OPT, - _("&Pad Fill"), - &DisplayOpt.DisplayPadFill, pos); - - pos.y += 20; - IsShowPadNum = new wxMyCheckBox(this, - PADNUM_OPT, - _("Pad &Num"), - &DisplayOpt.DisplayPadNum, pos); - - pos.y += 25; -wxString DrawOpt[] = { _("&Filaire"), _("&Filled"), _("&Sketch")}; - EdgeRadioBox = new wxRadioBox(this, EDGE_SELECT, - _("Edges:"), - pos, wxSize(-1,-1), - 3,DrawOpt,1,wxRA_SPECIFY_COLS); - - EdgeRadioBox->SetSelection(DisplayOpt.DisplayModEdge); - - pos.x += 100; - TextRadioBox = new wxRadioBox(this, TEXT_SELECT, - _("Texts:"), - pos,wxSize(-1,-1), - 3, DrawOpt, 1,wxRA_SPECIFY_COLS); - - TextRadioBox->SetSelection(DisplayOpt.DisplayModText); - -} - - /*****************************/ - /* Destructeur de OptionsBox */ - /*****************************/ - -wxOptionsBox::~wxOptionsBox(void) -{ -} - - - /**************************************/ - /* Fonctions de base de wxMyDialogBox */ - /**************************************/ - -/*******************************/ -bool wxOptionsBox::OnClose(void) -/*******************************/ -{ - Show(FALSE); - return TRUE; -} - -/****************************************************************/ -void wxOptionsBox::ReturnDisplayEdgeFormat(wxCommandEvent& event) -/****************************************************************/ -{ - DisplayOpt.DisplayModEdge = m_Parent->m_DisplayModEdge = EdgeRadioBox->GetSelection(); - m_Parent->ReDrawPanel(); -} - -/****************************************************************/ -void wxOptionsBox::ReturnDisplayTexteFormat(wxCommandEvent& event) -/****************************************************************/ -{ - DisplayOpt.DisplayModText = m_Parent->m_DisplayModText = TextRadioBox->GetSelection(); - m_Parent->ReDrawPanel(); -} - - -/***************************************************/ -void wxOptionsBox::SaveConfig(wxCommandEvent& event) -/***************************************************/ -{ - Save_Config(this); -} - diff --git a/cvpcb/rdorcad.cpp b/cvpcb/rdorcad.cpp deleted file mode 100644 index 3664cbde90..0000000000 --- a/cvpcb/rdorcad.cpp +++ /dev/null @@ -1,320 +0,0 @@ - /************/ - /* rdorcad()*/ - /************/ - -/* convertit la netliste ORCADPCB en netliste ORCADPCB (fichier temporaire) -assure la r‚affectation des alimentations selon le format : -( XXXXXX VALEUR|(pin1,pin2,...=newalim) ID VALEUR -*/ - -#include "fctsys.h" - -#include "wxstruct.h" -#include "common.h" -#include "cvpcb.h" - -#include "protos.h" - -#define SEPARATEUR '|' /* caractere separateur dans netliste */ - -/* routines locales : */ - -int pin_orcad(STORECMP * CurrentCmp); - - - /****************************************/ - /* int WinEDA_CvpcbFrame::rdorcad(void) */ - /****************************************/ - -int WinEDA_CvpcbFrame::rdorcad(void) -{ -int i , j , k ,l ; -char * LibName; -char Line[1024]; -int FlagEESchema = 0; -char label[80] ; /* buffer des references composants */ -char ref_schema[80] ; /* buffer de la ref schematique */ -char val[80] ; /* buffer des valeurs/ref.lib */ -char postval[80] ; /* buffer de la valeur de fin de ligne (vraie valeur) */ -char *ptchar ; /* pointeur de service */ -STORECMP * Cmp; - - modified = 0; - Rjustify = 0; - - /* Raz buffer et variable de gestion */ - if( BaseListeCmp ) FreeMemoryComponants(); - - /* Ouverture du fichier source */ - source = wxFopen(FFileName, wxT("rt")); - if (source == 0) - { - wxString msg; - msg.Printf( _("File <%s> not found"),FFileName.GetData()); - DisplayError(this, msg); return(-1); - } - - /* Read the file header (must be "( { OrCAD PCB" or "({ OrCAD PCB" ) */ - /* or "# EESchema Netliste"*/ - fgets(Line,255,source) ; - /* test for netlist type PCB2 */ - i = strnicmp(Line,"( {",3) ; - if( i != 0 ) - i = strnicmp(Line,"({",2) ; - if( i != 0 ) - { - i = strnicmp(Line,"# EESchema",7) ; /* net type EESchema */ - if( i == 0 ) FlagEESchema = 1; - } - - if ( i != 0 ) - { - wxString msg, Lineconv = CONV_FROM_UTF8(Line); - msg.Printf( _("Unknown file format <%s>"), Lineconv.GetData()); - DisplayError(this, msg); - fclose(source); return(-3) ; - } - - SetStatusText( _("Netlist Format: EESchema"), 0); - - - /* Lecture de la liste */ - for (;;) - { - /* recherche du debut de la description d'un composant */ - - if( fgets(Line,80,source) == 0 ) break; - - /* suppression des blancs en d‚but de ligne */ - i = 0 ; while (Line[i] == ' ') i++ ; - - /* elimination des lignes vides : */ - if (Line[i] < ' ') continue ; - - if (strnicmp(&Line[i],"( ",2) != 0) continue ; - - /****************************/ - /* debut description trouve */ - /****************************/ - /* memo ident schema */ - while ( Line[i] != ' ') i++ ; - while ( Line[i] == ' ') i++ ; /* i pointe 1er caractere de l'ident schema */ - - j = 0 ; while ( Line[i] != ' ') ref_schema[j++] = Line[i++] ; - ref_schema[j] = 0 ; - - /* recherche val/ref.lib */ - while ( Line[i] == ' ') i++ ; /* i pointe la valeur du composant */ - LibName = Line + i; - - memset(label, 0, sizeof(label)); - memset(val, 0, sizeof(val) ) ; - memset(postval, 0, sizeof(postval) ) ; - memset(alim, 0, sizeof(alim) ) ; - - /* lecture valeur du composant */ - - /* recherche fin de valeur (' ') */ - ptchar = strstr(&Line[i]," ") ; - if (ptchar == 0) - { - wxString msg; - msg.Printf( _("Netlist error: %s"),Line) ; - DisplayError(NULL, msg); - k = 0 ; - } - else k = ptchar - Line ; - - for (j = 0 ; i < k ; i++) - { - if ( Line[i] == SEPARATEUR ) break ; - if ( j < 8 ) val[j++] = Line[i] ; - } - - if ( (Line[++i] == '(') && (Line[k-1] == ')' ) ) - { - i++ ; l = 0 ; while ( k-1 > i ) alim[l++] = Line[i++] ; - } - - else i = k ; - - /* recherche reference du composant */ - while(Line[i] != ' ') i++ ; /* elimination fin valeur */ - while(Line[i] == ' ') i++ ; /* recherche debut reference */ - - /* debut reference trouv‚ */ - for ( k = 0 ; k < 8 ; i++ , k++ ) - { - if ( Line[i] <= ' ' ) break ; - label[k] = Line[i] ; - } - - /* recherche vraie valeur du composant */ - while(Line[i] != ' ') i++ ; /* elimination fin reference */ - while(Line[i] == ' ') i++ ; /* recherche debut vraie valeur */ - - /* debut vraie valeur trouv‚e */ - for ( k = 0 ; k < 16 ; i++ , k++ ) - { - if ( Line[i] <= ' ' ) break ; - postval[k] = Line[i] ; - } - - - /* classement du composant ,suivi de sa valeur */ - Cmp = new STORECMP(); - Cmp->Pnext = BaseListeCmp; - BaseListeCmp = Cmp; - Cmp->m_Reference = CONV_FROM_UTF8(label); - Cmp->m_Valeur = CONV_FROM_UTF8(postval) ; - - if( FlagEESchema ) /* Copie du nom module: */ - { - if( strnicmp(LibName, "$noname", 7 ) != 0 ) - { - while( *LibName > ' ' ) - { - Cmp->m_Module.Append(*LibName); - LibName++; - } - } - } - /* classement du TimeStamp */ - Cmp->m_TimeStamp = CONV_FROM_UTF8(ref_schema); - - pin_orcad( Cmp) ; - - nbcomp++ ; - } - fclose(source); - - /* reclassement alpab‚tique : */ - BaseListeCmp = TriListeComposantss( BaseListeCmp, nbcomp); - - return(0); -} - -/***********************************/ -int pin_orcad(STORECMP * Cmp) -/***********************************/ -{ -int i , jj; -char numpin[9] , net[1024] ; -char Line[1024]; -STOREPIN * Pin = NULL; -STOREPIN ** LastPin = & Cmp->m_Pins; - -for ( ;; ) - { - /* debut description trouv‚ */ - for ( ;; ) - { - if ( fgets(Line,80,source) == 0 ) return(-1) ; - - /* suppression des blancs en d‚but de ligne */ - i = 0 ; while (Line[i] == ' ') i++ ; - while (Line[i] == '(') i++ ; - while (Line[i] == ' ') i++ ; - - /* elimination des lignes vides : */ - if (Line[i] < ' ') continue ; - - /* fin de description ? */ - if (Line[i] == ')' ) return(0) ; - - memset( net, 0, sizeof(net) ); - memset( numpin, 0, sizeof(numpin) ); - - /* lecture name pin , 4 lettres */ - for (jj = 0 ; jj < 4 ; jj++ , i++) - { - if ( Line[i] == ' ' ) break ; - numpin[jj] = Line[i] ; - } - - /* recherche affectation forc‚e de net */ - if ( reaffect(numpin,net) != 0) - { - Pin = new STOREPIN(); - *LastPin = Pin; LastPin = &Pin->Pnext; - Pin->m_PinNum = CONV_FROM_UTF8(numpin); - Pin->m_PinNet = CONV_FROM_UTF8(net); - continue ; - } - - /* recherche netname */ - while(Line[i] == ' ') i++ ; /* recherche debut reference */ - - /* debut netname trouv‚ */ - for ( jj = 0 ; jj < (int)sizeof(net)-1 ; i++ , jj++ ) - { - if ( Line[i] <= ' ' ) break ; - net[jj] = Line[i] ; - } - - Pin = new STOREPIN(); - *LastPin = Pin; LastPin = &Pin->Pnext; - Pin->m_PinNum = CONV_FROM_UTF8(numpin); - Pin->m_PinNet = CONV_FROM_UTF8(net); - } - } -} - - -/****************************************************************/ -STORECMP * TriListeComposantss(STORECMP * BaseListe, int nbitems) -/****************************************************************/ -/* Tri la liste des composants par ordre alphabetique et me a jour -le nouveau chainage avant/arriere - retourne un pointeur sur le 1er element de la liste -*/ -{ -STORECMP ** bufferptr, * Item; -int ii; - - if (nbitems <= 0 ) return(NULL); - bufferptr = (STORECMP**)MyZMalloc( (nbitems+2) * sizeof(STORECMP*) ); - - for( ii= 1, Item = BaseListe; Item != NULL; Item = Item->Pnext, ii++) - { - bufferptr[ii] = Item; - } - - /* ici bufferptr[0] = NULL et bufferptr[nbitem+1] = NULL et ces 2 valeurs - representent le chainage arriere du 1er element, et le chainage avant - du dernier element */ - - qsort(bufferptr+1,nbitems,sizeof(STORECMP*), - (int(*)(const void*,const void*))CmpCompare) ; - /* Mise a jour du chainage */ - for( ii = 1; ii <= nbitems; ii++ ) - { - Item = bufferptr[ii]; - Item->m_Num = ii; - Item->Pnext = bufferptr[ii+1]; - Item->Pback = bufferptr[ii-1]; - } - return(bufferptr[1]); -} - - -/****************************************/ -int CmpCompare(void * mod1, void * mod2) -/****************************************/ -/* -routine compare() pour qsort() en classement alphabetique des composants -*/ -{ -int ii; -STORECMP *pt1 , *pt2 ; - - pt1 = * ((STORECMP**)mod1); - pt2 = * ((STORECMP**)mod2); - - //FIXME: - ii = StrNumICmp( (const wxChar*) pt1->m_Reference, (const wxChar*) pt2->m_Reference ); - return(ii); -} - - - diff --git a/cvpcb/readschematicnetlist.cpp b/cvpcb/readschematicnetlist.cpp index 3f500cf5e9..fb7958e404 100644 --- a/cvpcb/readschematicnetlist.cpp +++ b/cvpcb/readschematicnetlist.cpp @@ -29,10 +29,10 @@ int WinEDA_CvpcbFrame::ReadSchematicNetlist(void) int i , j , k ,l ; char * LibName; char Line[1024]; -char label[80] ; /* buffer des references composants */ -char ref_schema[80] ; /* buffer de la ref schematique */ -char val[80] ; /* buffer des valeurs/ref.lib */ -char postval[80] ; /* buffer de la valeur de fin de ligne (vraie valeur) */ +char component_reference[80] ; /* buffer des references composants */ +char ref_schema[80] ; /* buffer de la ref schematique */ +char footprint_name[80] ; /* buffer des ref.lib */ +char component_value[80] ; /* buffer des valeurs */ char *ptchar ; /* pointeur de service */ STORECMP * Cmp; @@ -111,9 +111,9 @@ STORECMP * Cmp; while ( Line[i] == ' ') i++ ; /* i pointe la valeur du composant */ LibName = Line + i; - memset(label, 0, sizeof(label)); - memset(val, 0, sizeof(val) ) ; - memset(postval, 0, sizeof(postval) ) ; + memset(component_reference, 0, sizeof(component_reference)); + memset(footprint_name, 0, sizeof(footprint_name) ) ; + memset(component_value, 0, sizeof(component_value) ) ; memset(alim, 0, sizeof(alim) ) ; /* lecture valeur du composant */ @@ -131,8 +131,9 @@ STORECMP * Cmp; for (j = 0 ; i < k ; i++) { - if ( Line[i] == SEPARATEUR ) break ; - if ( j < 8 ) val[j++] = Line[i] ; + if ( Line[i] == SEPARATEUR ) break ; + if ( j < (int)(sizeof(footprint_name)-1) ) + footprint_name[j++] = Line[i] ; } if ( (Line[++i] == '(') && (Line[k-1] == ')' ) ) @@ -147,21 +148,20 @@ STORECMP * Cmp; while(Line[i] == ' ') i++ ; /* recherche debut reference */ /* debut reference trouv‚ */ - for ( k = 0 ; k < 8 ; i++ , k++ ) + for ( k = 0 ; k < (int)(sizeof(component_reference)-1) ; i++ , k++ ) { if ( Line[i] <= ' ' ) break ; - label[k] = Line[i] ; + component_reference[k] = Line[i] ; } - /* recherche vraie valeur du composant */ - while(Line[i] != ' ') i++ ; /* elimination fin reference */ - while(Line[i] == ' ') i++ ; /* recherche debut vraie valeur */ + /* recherche valeur du composant */ + while(Line[i] == ' ') i++ ; /* recherche debut valeur */ - /* debut vraie valeur trouv‚e */ - for ( k = 0 ; k < 16 ; i++ , k++ ) + /* debut vraie valeur trouvee */ + for ( k = 0 ; k < (int)(sizeof(component_value)-1) ; i++ , k++ ) { if ( Line[i] <= ' ' ) break ; - postval[k] = Line[i] ; + component_value[k] = Line[i] ; } @@ -169,8 +169,8 @@ STORECMP * Cmp; Cmp = new STORECMP(); Cmp->Pnext = g_BaseListeCmp; g_BaseListeCmp = Cmp; - Cmp->m_Reference = CONV_FROM_UTF8(label); - Cmp->m_Valeur = CONV_FROM_UTF8(postval) ; + Cmp->m_Reference = CONV_FROM_UTF8(component_reference); + Cmp->m_Valeur = CONV_FROM_UTF8(component_value) ; if( g_FlagEESchema ) /* Copie du nom module: */ { diff --git a/include/build_version.h b/include/build_version.h index 6999641478..33d0a00ea6 100644 --- a/include/build_version.h +++ b/include/build_version.h @@ -5,7 +5,7 @@ COMMON_GLOBL wxString g_BuildVersion #ifdef EDA_BASE - (wxT("(2007-07-09)")) + (wxT("(2007-07-24)")) #endif ; diff --git a/include/id.h b/include/id.h index f260fa25dd..0bf1146f01 100644 --- a/include/id.h +++ b/include/id.h @@ -12,17 +12,17 @@ enum main_id { ID_PROJECT_TREE_REFRESH, ID_PROJECT_RUNPY, ID_PROJECT_NEWFILE, - ID_PROJECT_NEWSCH, - ID_PROJECT_NEWBRD, + ID_PROJECT_UNUSED0, + ID_PROJECT_UNUSED1, ID_PROJECT_NEWPY, - ID_PROJECT_NEWGERBER, + ID_PROJECT_UNUSED2, ID_PROJECT_NEWTXT, - ID_PROJECT_NEWNET, + ID_PROJECT_UNUSED3, ID_PROJECT_NEWDIR, ID_PROJECT_DELETE, ID_PROJECT_RENAME, - ID_PROJECT_UNUSED0, - ID_PROJECT_UNUSED1, + ID_PROJECT_OPEN_FILE_WITH_TEXT_EDITOR, + ID_PROJECT_UNUSED4, ID_MAIN_COMMAND, ID_TO_EDITOR, diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 5fdb36b916..c55b68ddfe 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 208611c9e2..8057a44c63 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2007-07-09 11:49+0100\n" -"Last-Translator: jp charras \n" +"PO-Revision-Date: 2007-07-25 10:24+0100\n" +"Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -66,7 +66,6 @@ msgstr "Fichiers C.I.:" #: pcbnew/files.cpp:181 #: pcbnew/librairi.cpp:62 #: cvpcb/readschematicnetlist.cpp:51 -#: cvpcb/rdorcad.cpp:53 #: cvpcb/rdpcad.cpp:45 #, c-format msgid "File <%s> not found" @@ -141,256 +140,6 @@ msgstr "It msgid "Ok to abort ?" msgstr "Ok pour arrêter ?" -#: pcbnew/dialog_edit_module.cpp:41 -msgid "Module properties" -msgstr "Propriétés du Module" - -#: pcbnew/dialog_edit_module.cpp:94 -msgid "Properties" -msgstr "Propriétés" - -#: pcbnew/dialog_edit_module.cpp:98 -#: pcbnew/dialog_edit_module.cpp:107 -#: pcbnew/dialog_edit_module.cpp:138 -msgid "3D settings" -msgstr "3D Caract" - -#: pcbnew/dialog_edit_module.cpp:119 -#: pcbnew/pcbtexte.cpp:113 -#: pcbnew/muonde.cpp:341 -#: pcbnew/block.cpp:117 -#: pcbnew/cotation.cpp:109 -#: pcbnew/zones.cpp:873 -#: pcbnew/mirepcb.cpp:102 -#: eeschema/fieldedi.cpp:208 -#: eeschema/sheetlab.cpp:99 -#: eeschema/libedpart.cpp:230 -#: eeschema/editpart.cpp:193 -#: common/displlst.cpp:102 -msgid "Ok" -msgstr "Ok" - -#: pcbnew/dialog_edit_module.cpp:124 -#: pcbnew/pcbtexte.cpp:118 -#: pcbnew/muonde.cpp:345 -#: pcbnew/modedit_onclick.cpp:195 -#: pcbnew/modedit_onclick.cpp:228 -#: pcbnew/onrightclick.cpp:153 -#: pcbnew/onrightclick.cpp:172 -#: pcbnew/block.cpp:122 -#: pcbnew/globaleditpad.cpp:111 -#: pcbnew/cotation.cpp:114 -#: pcbnew/swap_layers.cpp:86 -#: pcbnew/pcbpiste.cpp:87 -#: pcbnew/mirepcb.cpp:106 -#: pcbnew/sel_layer.cpp:123 -#: pcbnew/sel_layer.cpp:250 -#: eeschema/libedit_onrightclick.cpp:68 -#: eeschema/libedit_onrightclick.cpp:83 -#: eeschema/optionsframe.cpp:155 -#: eeschema/onrightclick.cpp:111 -#: eeschema/onrightclick.cpp:125 -#: eeschema/sheetlab.cpp:104 -#: eeschema/options.cpp:114 -#: eeschema/libedpart.cpp:219 -#: gerbview/onrightclick.cpp:39 -#: gerbview/onrightclick.cpp:57 -#: gerbview/options.cpp:175 -#: gerbview/options.cpp:305 -#: gerbview/select_layers_to_pcb.cpp:127 -#: common/get_component_dialog.cpp:121 -#: common/displlst.cpp:106 -msgid "Cancel" -msgstr "Annuler" - -#: pcbnew/dialog_edit_module.cpp:179 -msgid "Change module(s)" -msgstr "Change module(s)" - -#: pcbnew/dialog_edit_module.cpp:183 -msgid "Goto Module Editor" -msgstr "Ouvrir Editeur de modules" - -#: pcbnew/dialog_edit_module.cpp:189 -#: eeschema/fieldedi.cpp:283 -#: eeschema/onrightclick.cpp:315 -#: eeschema/dialog_edit_component_in_lib.cpp:203 -#: eeschema/libedpart.cpp:246 -msgid "Doc" -msgstr "Doc" - -#: pcbnew/dialog_edit_module.cpp:195 -msgid "Keywords" -msgstr "Mots Cles" - -#: pcbnew/dialog_edit_module.cpp:202 -msgid "Fields:" -msgstr "Champs:" - -#: pcbnew/dialog_edit_module.cpp:212 -msgid "Add Field" -msgstr "Ajouter Champ" - -#: pcbnew/dialog_edit_module.cpp:217 -#: eeschema/onrightclick.cpp:253 -msgid "Edit Field" -msgstr "Editer Champ" - -#: pcbnew/dialog_edit_module.cpp:222 -msgid "Delete Field" -msgstr "Supprimer Champ" - -#: pcbnew/dialog_edit_module.cpp:229 -#: common/common.cpp:242 -msgid "Component" -msgstr "Composant" - -#: pcbnew/dialog_edit_module.cpp:229 -msgid "Copper" -msgstr "Cuivre" - -#: pcbnew/dialog_edit_module.cpp:230 -#: pcbnew/class_pad.cpp:769 -#: pcbnew/affiche.cpp:36 -#: pcbnew/affiche.cpp:91 -#: pcbnew/affiche.cpp:95 -#: pcbnew/affiche.cpp:195 -#: pcbnew/affiche.cpp:244 -#: pcbnew/class_module.cpp:1040 -#: pcbnew/sel_layer.cpp:109 -#: gerbview/affiche.cpp:102 -msgid "Layer" -msgstr "Couche" - -#: pcbnew/dialog_edit_module.cpp:237 -#: pcbnew/dialog_edit_module.cpp:279 -#: pcbnew/pcbtexte.cpp:177 -#: pcbnew/muonde.cpp:353 -#: pcbnew/cotation.cpp:118 -#: eeschema/dialog_options.cpp:229 -#: eeschema/options.cpp:177 -#: eeschema/dialog_edit_component_in_schematic.cpp:182 -#: eeschema/editpart.cpp:312 -msgid "Normal" -msgstr "Normal" - -#: pcbnew/dialog_edit_module.cpp:237 -#: pcbnew/dialog_pad_edit.cpp:191 -msgid "User" -msgstr "User" - -#: pcbnew/dialog_edit_module.cpp:238 -#: pcbnew/class_pad.cpp:810 -#: pcbnew/affiche.cpp:47 -#: pcbnew/affiche.cpp:103 -#: pcbnew/class_module.cpp:1057 -#: eeschema/affiche.cpp:101 -#: gerbview/affiche.cpp:43 -msgid "Orient" -msgstr "Orient" - -#: pcbnew/dialog_edit_module.cpp:270 -msgid "Orient (0.1 deg)" -msgstr "Orient (0.1 deg)" - -#: pcbnew/dialog_edit_module.cpp:279 -msgid "Normal+Insert" -msgstr "Normal+Insert" - -#: pcbnew/dialog_edit_module.cpp:279 -msgid "Virtual" -msgstr "Virtuel" - -#: pcbnew/dialog_edit_module.cpp:280 -msgid "Attributs" -msgstr "Attributs" - -#: pcbnew/dialog_edit_module.cpp:282 -msgid "Use this attribute for most non smd components" -msgstr "Utiliser cet attribut pour la plupart des composants" - -#: pcbnew/dialog_edit_module.cpp:284 -msgid "" -"Use this attribute for smd components.\n" -"Only components with this option are put in the footprint position list file" -msgstr "" -"Uiliser cet attribut pour les composants CMS.\n" -"Seuls les composantsavec cette option sont mis dans le fichier de position des composants" - -#: pcbnew/dialog_edit_module.cpp:286 -msgid "Use this attribute for \"virtual\" components drawn on board (like a old ISA PC bus connector)" -msgstr "Uiliser cet attribut pour les composants \"virtuels\" directement dessinés sur le PCB (tel que les vieux connecteurs ISA de PC)" - -#: pcbnew/dialog_edit_module.cpp:309 -msgid "Free" -msgstr "Libre" - -#: pcbnew/dialog_edit_module.cpp:309 -msgid "Locked" -msgstr "Verrouillé" - -#: pcbnew/dialog_edit_module.cpp:310 -msgid "Move and Auto Place" -msgstr "Move et Placement Automatique" - -#: pcbnew/dialog_edit_module.cpp:314 -msgid "Enable hotkey move commands and Auto Placement" -msgstr "Autoriser les commandes clavier de déplacement et l'auto placement" - -#: pcbnew/dialog_edit_module.cpp:315 -msgid "Disable hotkey move commands and Auto Placement" -msgstr "Interdire les commandes clavier de déplacement et l'auto placement" - -#: pcbnew/dialog_edit_module.cpp:318 -msgid "Rot 90" -msgstr "Rot 90" - -#: pcbnew/dialog_edit_module.cpp:325 -msgid "Rot 180" -msgstr "Rot 180" - -#: pcbnew/dialog_edit_module.cpp:355 -msgid "3D Shape Name" -msgstr "3D forme" - -#: pcbnew/dialog_edit_module.cpp:371 -#: eeschema/dialog_eeschema_config.cpp:227 -msgid "Browse" -msgstr "Examiner" - -#: pcbnew/dialog_edit_module.cpp:375 -msgid "Add 3D Shape" -msgstr "Ajout Forme 3D" - -#: pcbnew/dialog_edit_module.cpp:381 -msgid "Remove 3D Shape" -msgstr "Suppr. Forme 3D:" - -#: pcbnew/dialog_edit_module.cpp:387 -msgid "Shape Scale:" -msgstr "Echelle de la forme:" - -#: pcbnew/dialog_edit_module.cpp:393 -msgid "Shape Offset:" -msgstr "Offset forme:" - -#: pcbnew/dialog_edit_module.cpp:400 -msgid "Shape Rotation:" -msgstr "Rot de la forme" - -#: pcbnew/dialog_edit_module.cpp:437 -msgid "3D Shape:" -msgstr "Forme 3D:" - -#: pcbnew/dialog_edit_module.cpp:726 -msgid "Reference or Value cannot be deleted" -msgstr "Référence ou Valeur ne peut etre effacée" - -#: pcbnew/dialog_edit_module.cpp:730 -#, c-format -msgid "Delete [%s]" -msgstr "Supprimer [%s]" - #: pcbnew/loadcmp.cpp:94 msgid "Module name:" msgstr "Nom module:" @@ -461,7 +210,6 @@ msgstr "De " #: eeschema/dialog_eeschema_config.cpp:161 #: eeschema/eestatus.cpp:116 #: cvpcb/dialog_display_options.cpp:145 -#: cvpcb/options.cpp:148 #: cvpcb/dialog_cvpcb_config.cpp:127 #: gerbview/reglage.cpp:110 msgid "Save Cfg" @@ -966,6 +714,54 @@ msgstr "Nb Modules" msgid "TextPCB properties" msgstr "Propriétés des textes PCB" +#: pcbnew/pcbtexte.cpp:113 +#: pcbnew/muonde.cpp:341 +#: pcbnew/block.cpp:117 +#: pcbnew/cotation.cpp:109 +#: pcbnew/zones.cpp:873 +#: pcbnew/mirepcb.cpp:102 +#: pcbnew/dialog_edit_module.cpp:119 +#: eeschema/fieldedi.cpp:208 +#: eeschema/sheetlab.cpp:99 +#: eeschema/libedpart.cpp:230 +#: eeschema/editpart.cpp:193 +#: common/displlst.cpp:102 +msgid "Ok" +msgstr "Ok" + +#: pcbnew/pcbtexte.cpp:118 +#: pcbnew/muonde.cpp:345 +#: pcbnew/modedit_onclick.cpp:195 +#: pcbnew/modedit_onclick.cpp:228 +#: pcbnew/onrightclick.cpp:153 +#: pcbnew/onrightclick.cpp:172 +#: pcbnew/block.cpp:122 +#: pcbnew/globaleditpad.cpp:111 +#: pcbnew/cotation.cpp:114 +#: pcbnew/swap_layers.cpp:86 +#: pcbnew/pcbpiste.cpp:87 +#: pcbnew/mirepcb.cpp:106 +#: pcbnew/dialog_edit_module.cpp:124 +#: pcbnew/sel_layer.cpp:123 +#: pcbnew/sel_layer.cpp:250 +#: eeschema/libedit_onrightclick.cpp:68 +#: eeschema/libedit_onrightclick.cpp:83 +#: eeschema/optionsframe.cpp:155 +#: eeschema/onrightclick.cpp:111 +#: eeschema/onrightclick.cpp:125 +#: eeschema/sheetlab.cpp:104 +#: eeschema/options.cpp:114 +#: eeschema/libedpart.cpp:219 +#: gerbview/onrightclick.cpp:39 +#: gerbview/onrightclick.cpp:57 +#: gerbview/options.cpp:175 +#: gerbview/options.cpp:305 +#: gerbview/select_layers_to_pcb.cpp:127 +#: common/get_component_dialog.cpp:121 +#: common/displlst.cpp:106 +msgid "Cancel" +msgstr "Annuler" + #: pcbnew/pcbtexte.cpp:122 #: pcbnew/dialog_edit_mod_text.cpp:314 #: eeschema/sheetlab.cpp:108 @@ -1010,6 +806,18 @@ msgstr "Position" msgid "Orientation" msgstr "Orientation" +#: pcbnew/pcbtexte.cpp:177 +#: pcbnew/muonde.cpp:353 +#: pcbnew/cotation.cpp:118 +#: pcbnew/dialog_edit_module.cpp:237 +#: pcbnew/dialog_edit_module.cpp:279 +#: eeschema/dialog_options.cpp:229 +#: eeschema/options.cpp:177 +#: eeschema/dialog_edit_component_in_schematic.cpp:182 +#: eeschema/editpart.cpp:312 +msgid "Normal" +msgstr "Normal" + #: pcbnew/pcbtexte.cpp:177 #: pcbnew/modedit_onclick.cpp:246 #: pcbnew/cotation.cpp:118 @@ -1794,75 +1602,78 @@ msgstr "Inclure pistes autorout msgid "Include Locked Tracks" msgstr "Inclure pistes verrouillées" -#: pcbnew/drc.cpp:72 -#, c-format -msgid "" -"Unconnected:\n" -"Pad @ %.4f,%.4f and\n" -"Pad @ %.4f,%.4f\n" -msgstr "" -"Non connecté:\n" -"Pad @ %.4f,%.4f et\n" -"Pad @ %.4f,%.4f\n" +#: pcbnew/drc.cpp:65 +msgid "Look for active routes\n" +msgstr "Recherche des chevelus actifs\n" -#: pcbnew/drc.cpp:78 +#: pcbnew/drc.cpp:71 +msgid "Unconnected found:\n" +msgstr "Non connecté trouvé:\n" + +#: pcbnew/drc.cpp:76 +#, c-format +msgid "%d > Pad %s (%s) @ %.4f,%.4f and " +msgstr "%d > Pad %s (%s) @ %.4f,%.4f et " + +#: pcbnew/drc.cpp:84 +#, c-format +msgid "Pad %s (%s) @ %.4f,%.4f\n" +msgstr "Pad %s (%s) @ %.4f,%.4f\n" + +#: pcbnew/drc.cpp:89 #, c-format msgid "Active routes: %d\n" msgstr "Active routes: %d\n" -#: pcbnew/drc.cpp:79 -msgid "OK! (No unconnect)\n" -msgstr "OK! (Pas de non connecté)\n" +#: pcbnew/drc.cpp:90 +msgid "OK! (No active routes)\n" +msgstr "OK! (Pas de chevelu actif)\n" -#: pcbnew/drc.cpp:81 -msgid "End tst" -msgstr "Fin tst" - -#: pcbnew/drc.cpp:99 +#: pcbnew/drc.cpp:112 #, c-format msgid "** End Drc: %d errors **\n" msgstr "** FinDrc: %d erreurs **\n" -#: pcbnew/drc.cpp:100 +#: pcbnew/drc.cpp:114 msgid "** End Drc: No Error **\n" msgstr "** Fin Drc: Aucune Erreur **\n" -#: pcbnew/drc.cpp:215 +#: pcbnew/drc.cpp:229 msgid "SegmNb" msgstr "SegmNb" -#: pcbnew/drc.cpp:216 +#: pcbnew/drc.cpp:230 msgid "Track Err" msgstr "Err Pistes" -#: pcbnew/drc.cpp:219 +#: pcbnew/drc.cpp:233 msgid "Tst Tracks\n" msgstr "Tst Pistes\n" -#: pcbnew/drc.cpp:238 +#: pcbnew/drc.cpp:252 #: eeschema/eelayer.cpp:141 msgid "Netname" msgstr "NetName" -#: pcbnew/drc.cpp:934 +#: pcbnew/drc.cpp:950 #, c-format -msgid "%d Err type %d sur PAD @ %d,%d\n" -msgstr "%d Err type %d sur PAD @ %d,%d\n" +msgid "%d Drc Err %d PAD %s (%s) @ %d,%d\n" +msgstr "%d Err Drc %d PAD %s (%s) @ %d,%d\n" -#: pcbnew/drc.cpp:943 +#: pcbnew/drc.cpp:961 #, c-format msgid "%d Err type %d: sur VIA @ %d,%d\n" msgstr "%d Err type %d: sur VIA @ %d,%d\n" -#: pcbnew/drc.cpp:954 +#: pcbnew/drc.cpp:972 #, c-format msgid "%d Err type %d: sur SEGMENT @ %d,%d\n" msgstr "%d Err type %d: sur SEGMENT @ %d,%d\n" -#: pcbnew/drc.cpp:986 +#: pcbnew/drc.cpp:1007 #, c-format -msgid "%d Err pad to pad (PAD @ %d,%d and PAD @ %d,%d\n" -msgstr "%d Err pad to pad (PAD @ %d,%d and PAD @ %d,%d\n" +msgid "%d Drc Err: PAD %s (%s) @ %d,%d and PAD %s (%s) @ %d,%d\n" +msgstr "%d Err Drc: PAD %s (%s) @ %d,%d et PAD %s (%s) @ %d,%d\n" #: pcbnew/editrack-part2.cpp:31 #, c-format @@ -2066,6 +1877,19 @@ msgstr "RefP" msgid "Net" msgstr "Net" +#: pcbnew/class_pad.cpp:769 +#: pcbnew/affiche.cpp:36 +#: pcbnew/affiche.cpp:91 +#: pcbnew/affiche.cpp:95 +#: pcbnew/affiche.cpp:195 +#: pcbnew/affiche.cpp:244 +#: pcbnew/class_module.cpp:1040 +#: pcbnew/dialog_edit_module.cpp:230 +#: pcbnew/sel_layer.cpp:109 +#: gerbview/affiche.cpp:102 +msgid "Layer" +msgstr "Couche" + #: pcbnew/class_pad.cpp:781 #: pcbnew/affiche.cpp:53 #: pcbnew/affiche.cpp:109 @@ -2092,6 +1916,16 @@ msgstr "Per msgid "Drill X / Y" msgstr "Perçage X/Y" +#: pcbnew/class_pad.cpp:810 +#: pcbnew/affiche.cpp:47 +#: pcbnew/affiche.cpp:103 +#: pcbnew/class_module.cpp:1057 +#: pcbnew/dialog_edit_module.cpp:238 +#: eeschema/affiche.cpp:101 +#: gerbview/affiche.cpp:43 +msgid "Orient" +msgstr "Orient" + #: pcbnew/class_pad.cpp:814 msgid "X Pos" msgstr "X Pos" @@ -3360,6 +3194,11 @@ msgstr "-90" msgid "180" msgstr "180" +#: pcbnew/dialog_pad_edit.cpp:191 +#: pcbnew/dialog_edit_module.cpp:237 +msgid "User" +msgstr "User" + #: pcbnew/dialog_pad_edit.cpp:193 msgid "Pad Orient:" msgstr "Orient pad:" @@ -4058,6 +3897,168 @@ msgstr "&3D Visu" msgid "&Help" msgstr "&Aide" +#: pcbnew/dialog_edit_module.cpp:41 +msgid "Module properties" +msgstr "Propriétés du Module" + +#: pcbnew/dialog_edit_module.cpp:94 +msgid "Properties" +msgstr "Propriétés" + +#: pcbnew/dialog_edit_module.cpp:98 +#: pcbnew/dialog_edit_module.cpp:107 +#: pcbnew/dialog_edit_module.cpp:138 +msgid "3D settings" +msgstr "3D Caract" + +#: pcbnew/dialog_edit_module.cpp:179 +msgid "Change module(s)" +msgstr "Change module(s)" + +#: pcbnew/dialog_edit_module.cpp:183 +msgid "Goto Module Editor" +msgstr "Ouvrir Editeur de modules" + +#: pcbnew/dialog_edit_module.cpp:189 +#: eeschema/fieldedi.cpp:283 +#: eeschema/onrightclick.cpp:315 +#: eeschema/dialog_edit_component_in_lib.cpp:203 +#: eeschema/libedpart.cpp:246 +msgid "Doc" +msgstr "Doc" + +#: pcbnew/dialog_edit_module.cpp:195 +msgid "Keywords" +msgstr "Mots Cles" + +#: pcbnew/dialog_edit_module.cpp:202 +msgid "Fields:" +msgstr "Champs:" + +#: pcbnew/dialog_edit_module.cpp:212 +msgid "Add Field" +msgstr "Ajouter Champ" + +#: pcbnew/dialog_edit_module.cpp:217 +#: eeschema/onrightclick.cpp:253 +msgid "Edit Field" +msgstr "Editer Champ" + +#: pcbnew/dialog_edit_module.cpp:222 +msgid "Delete Field" +msgstr "Supprimer Champ" + +#: pcbnew/dialog_edit_module.cpp:229 +#: common/common.cpp:242 +msgid "Component" +msgstr "Composant" + +#: pcbnew/dialog_edit_module.cpp:229 +msgid "Copper" +msgstr "Cuivre" + +#: pcbnew/dialog_edit_module.cpp:270 +msgid "Orient (0.1 deg)" +msgstr "Orient (0.1 deg)" + +#: pcbnew/dialog_edit_module.cpp:279 +msgid "Normal+Insert" +msgstr "Normal+Insert" + +#: pcbnew/dialog_edit_module.cpp:279 +msgid "Virtual" +msgstr "Virtuel" + +#: pcbnew/dialog_edit_module.cpp:280 +msgid "Attributs" +msgstr "Attributs" + +#: pcbnew/dialog_edit_module.cpp:283 +msgid "Use this attribute for most non smd components" +msgstr "Utiliser cet attribut pour la plupart des composants" + +#: pcbnew/dialog_edit_module.cpp:285 +msgid "" +"Use this attribute for smd components.\n" +"Only components with this option are put in the footprint position list file" +msgstr "" +"Uiliser cet attribut pour les composants CMS.\n" +"Seuls les composantsavec cette option sont mis dans le fichier de position des composants" + +#: pcbnew/dialog_edit_module.cpp:287 +msgid "Use this attribute for \"virtual\" components drawn on board (like a old ISA PC bus connector)" +msgstr "Uiliser cet attribut pour les composants \"virtuels\" directement dessinés sur le PCB (tel que les vieux connecteurs ISA de PC)" + +#: pcbnew/dialog_edit_module.cpp:311 +msgid "Free" +msgstr "Libre" + +#: pcbnew/dialog_edit_module.cpp:311 +msgid "Locked" +msgstr "Verrouillé" + +#: pcbnew/dialog_edit_module.cpp:312 +msgid "Move and Auto Place" +msgstr "Move et Placement Automatique" + +#: pcbnew/dialog_edit_module.cpp:317 +msgid "Enable hotkey move commands and Auto Placement" +msgstr "Autoriser les commandes clavier de déplacement et l'auto placement" + +#: pcbnew/dialog_edit_module.cpp:318 +msgid "Disable hotkey move commands and Auto Placement" +msgstr "Interdire les commandes clavier de déplacement et l'auto placement" + +#: pcbnew/dialog_edit_module.cpp:322 +msgid "Rot 90" +msgstr "Rot 90" + +#: pcbnew/dialog_edit_module.cpp:329 +msgid "Rot 180" +msgstr "Rot 180" + +#: pcbnew/dialog_edit_module.cpp:359 +msgid "3D Shape Name" +msgstr "3D forme" + +#: pcbnew/dialog_edit_module.cpp:375 +#: eeschema/dialog_eeschema_config.cpp:227 +msgid "Browse" +msgstr "Examiner" + +#: pcbnew/dialog_edit_module.cpp:379 +msgid "Add 3D Shape" +msgstr "Ajout Forme 3D" + +#: pcbnew/dialog_edit_module.cpp:385 +msgid "Remove 3D Shape" +msgstr "Suppr. Forme 3D:" + +#: pcbnew/dialog_edit_module.cpp:391 +msgid "Shape Scale:" +msgstr "Echelle de la forme:" + +#: pcbnew/dialog_edit_module.cpp:397 +msgid "Shape Offset:" +msgstr "Offset forme:" + +#: pcbnew/dialog_edit_module.cpp:404 +msgid "Shape Rotation:" +msgstr "Rot de la forme" + +#: pcbnew/dialog_edit_module.cpp:441 +msgid "3D Shape:" +msgstr "Forme 3D:" + +#: pcbnew/dialog_edit_module.cpp:730 +msgid "Reference or Value cannot be deleted" +msgstr "Référence ou Valeur ne peut etre effacée" + +#: pcbnew/dialog_edit_module.cpp:734 +#, c-format +msgid "Delete [%s]" +msgstr "Supprimer [%s]" + #: pcbnew/edit.cpp:154 msgid "Graphic not autorized on Copper layers" msgstr "Graphique non autorisé sur couches cuivre" @@ -4725,7 +4726,6 @@ msgstr "Propri #: eeschema/dialog_edit_component_in_schematic.cpp:204 #: eeschema/editpart.cpp:204 #: eeschema/dialog_build_BOM.cpp:279 -#: cvpcb/options.cpp:138 #: cvpcb/dialog_display_options.h:43 msgid "Options" msgstr "Options" @@ -7943,58 +7943,48 @@ msgid "&Del Annotate" msgstr "&Dénumérotation" #: cvpcb/dialog_display_options.cpp:141 -#: cvpcb/options.cpp:159 msgid "Pad &Num" msgstr "Pad &Num" #: cvpcb/dialog_display_options.cpp:148 -#: cvpcb/options.cpp:153 msgid "&Pad Fill" msgstr "&Pad plein" #: cvpcb/dialog_display_options.cpp:155 #: cvpcb/dialog_display_options.cpp:163 -#: cvpcb/options.cpp:163 msgid "&Filaire" msgstr "&Filaire" #: cvpcb/dialog_display_options.cpp:156 #: cvpcb/dialog_display_options.cpp:164 -#: cvpcb/options.cpp:163 msgid "&Filled" msgstr "&Plein" #: cvpcb/dialog_display_options.cpp:157 #: cvpcb/dialog_display_options.cpp:165 -#: cvpcb/options.cpp:163 msgid "&Sketch" msgstr "&Contour" #: cvpcb/dialog_display_options.cpp:159 -#: cvpcb/options.cpp:165 msgid "Edges:" msgstr "Contours:" #: cvpcb/dialog_display_options.cpp:167 -#: cvpcb/options.cpp:173 msgid "Texts:" msgstr "Textes:" #: cvpcb/readschematicnetlist.cpp:71 #: cvpcb/viewlogi.cpp:72 -#: cvpcb/rdorcad.cpp:73 #: cvpcb/rdpcad.cpp:56 #, c-format msgid "Unknown file format <%s>" msgstr " Format fichier inconnu <%s>" #: cvpcb/readschematicnetlist.cpp:76 -#: cvpcb/rdorcad.cpp:78 msgid "Netlist Format: EESchema" msgstr " Formats NetListe: EESchema" #: cvpcb/readschematicnetlist.cpp:126 -#: cvpcb/rdorcad.cpp:122 #, c-format msgid "Netlist error: %s" msgstr "Erreur Netliste: %s" @@ -8427,112 +8417,117 @@ msgstr "Executer le Script Python:" msgid "Load file:" msgstr "Charger Fichiers:" -#: kicad/treeprj_frame.cpp:63 +#: kicad/treeprj_frame.cpp:65 msgid "&Run" msgstr "Exécute&r" -#: kicad/treeprj_frame.cpp:64 +#: kicad/treeprj_frame.cpp:66 msgid "Run the Python Script" msgstr "Exécuter le Script Python" -#: kicad/treeprj_frame.cpp:70 +#: kicad/treeprj_frame.cpp:72 +#: kicad/treeprj_frame.cpp:118 msgid "&Edit in a text editor" msgstr "Editer avec un éditeur de Texte" -#: kicad/treeprj_frame.cpp:71 -msgid "Edit the Python Script in a Text Editor" -msgstr "Editer le script python" +#: kicad/treeprj_frame.cpp:73 +msgid "&Open the file in a Text Editor" +msgstr "&Ouvrir le fichier avec un Editeur de texte" -#: kicad/treeprj_frame.cpp:84 +#: kicad/treeprj_frame.cpp:86 msgid "New D&irectory" msgstr "&Nouveau Répertoire" -#: kicad/treeprj_frame.cpp:84 +#: kicad/treeprj_frame.cpp:86 msgid "Create a New Directory" msgstr "Créer un nouveau Répertoire" -#: kicad/treeprj_frame.cpp:89 +#: kicad/treeprj_frame.cpp:91 msgid "New P&ython Script" msgstr "Nouveau Script P&ython" -#: kicad/treeprj_frame.cpp:89 +#: kicad/treeprj_frame.cpp:91 msgid "Create a New Python Script" msgstr "Créer un nouveau script Python" -#: kicad/treeprj_frame.cpp:94 +#: kicad/treeprj_frame.cpp:96 msgid "New &Text File" msgstr "Nouveau Fichier &Texte" -#: kicad/treeprj_frame.cpp:94 +#: kicad/treeprj_frame.cpp:96 msgid "Create a New Txt File" msgstr "Créer un nouveau Fichier texte" -#: kicad/treeprj_frame.cpp:98 +#: kicad/treeprj_frame.cpp:100 msgid "New &File" msgstr "Nouveau &Fichier" -#: kicad/treeprj_frame.cpp:98 +#: kicad/treeprj_frame.cpp:100 msgid "Create a New File" msgstr "Créer un nouveau Fichier" -#: kicad/treeprj_frame.cpp:109 +#: kicad/treeprj_frame.cpp:111 msgid "&Rename File" msgstr "&Renommer Fichier" -#: kicad/treeprj_frame.cpp:109 +#: kicad/treeprj_frame.cpp:111 msgid "&Rename Directory" msgstr "&Renommer Répertoire" -#: kicad/treeprj_frame.cpp:110 +#: kicad/treeprj_frame.cpp:112 msgid "Rename the File" msgstr "Renommer le Fichier" -#: kicad/treeprj_frame.cpp:110 +#: kicad/treeprj_frame.cpp:112 msgid "&Rename the Directory" msgstr "&Renommer le Répertoire" -#: kicad/treeprj_frame.cpp:114 +#: kicad/treeprj_frame.cpp:119 +msgid "Open the file in a Text Editor" +msgstr "Ouvrir le fichier avec un Editeur de texte" + +#: kicad/treeprj_frame.cpp:124 msgid "&Delete File" msgstr "&Supprimer Fichier" -#: kicad/treeprj_frame.cpp:114 +#: kicad/treeprj_frame.cpp:124 msgid "&Delete Directory" msgstr "&Supprimer le Répertoire" -#: kicad/treeprj_frame.cpp:115 +#: kicad/treeprj_frame.cpp:125 msgid "Delete the File" msgstr "Supprimer le fichier" -#: kicad/treeprj_frame.cpp:115 +#: kicad/treeprj_frame.cpp:125 msgid "&Delete the Directory and its content" msgstr "Effacer le Répertoire et son contenu" -#: kicad/treeprj_frame.cpp:342 +#: kicad/treeprj_frame.cpp:344 msgid "Create New File:" msgstr "Créer un nouveau Fichier" -#: kicad/treeprj_frame.cpp:342 +#: kicad/treeprj_frame.cpp:344 msgid "Create New Directory" msgstr "Créer un nouveau Répertoire" -#: kicad/treeprj_frame.cpp:344 +#: kicad/treeprj_frame.cpp:346 msgid "noname" msgstr "noname" -#: kicad/treeprj_frame.cpp:643 +#: kicad/treeprj_frame.cpp:663 msgid "Change File Name: " msgstr "ChangerNom Fichier: " -#: kicad/treeprj_datas.cpp:186 +#: kicad/treeprj_datas.cpp:182 msgid "Unable to move file ... " msgstr "Impossible de déplacer le fichier " -#: kicad/treeprj_datas.cpp:186 -#: kicad/treeprj_datas.cpp:257 +#: kicad/treeprj_datas.cpp:182 +#: kicad/treeprj_datas.cpp:253 msgid "Permission error ?" msgstr "" -#: kicad/treeprj_datas.cpp:244 +#: kicad/treeprj_datas.cpp:240 msgid "" "Changing file extension will change file type.\n" " Do you want to continue ?" @@ -8540,19 +8535,19 @@ msgstr "" "Changer l'extension changera le type de fichier.\n" "Voulez vous continuer ?" -#: kicad/treeprj_datas.cpp:245 +#: kicad/treeprj_datas.cpp:241 msgid "Rename File" msgstr "Renommer Fichier" -#: kicad/treeprj_datas.cpp:257 +#: kicad/treeprj_datas.cpp:253 msgid "Unable to rename file ... " msgstr "Impossible de renommer le fichier... " -#: kicad/treeprj_datas.cpp:275 +#: kicad/treeprj_datas.cpp:271 msgid "Do you really want to delete " msgstr "Voulez vous réellemant effacer" -#: kicad/treeprj_datas.cpp:275 +#: kicad/treeprj_datas.cpp:271 msgid "Delete File" msgstr "Supprimer Fichier" @@ -9077,126 +9072,6 @@ msgstr "X" msgid "Y" msgstr "Y" -#: common/common.cpp:44 -msgid " (\"):" -msgstr " (\"):" - -#: common/common.cpp:239 -msgid "Copper " -msgstr "Cuivre " - -#: common/common.cpp:239 -msgid "Inner L1 " -msgstr "Interne 1" - -#: common/common.cpp:239 -msgid "Inner L2 " -msgstr "Interne 2" - -#: common/common.cpp:239 -msgid "Inner L3 " -msgstr "Interne 3" - -#: common/common.cpp:240 -msgid "Inner L4 " -msgstr "Interne 4" - -#: common/common.cpp:240 -msgid "Inner L5 " -msgstr "Interne 5" - -#: common/common.cpp:240 -msgid "Inner L6 " -msgstr "Interne 6" - -#: common/common.cpp:240 -msgid "Inner L7 " -msgstr "Interne 7" - -#: common/common.cpp:241 -msgid "Inner L8 " -msgstr "Interne 8" - -#: common/common.cpp:241 -msgid "Inner L9 " -msgstr "Interne 9" - -#: common/common.cpp:241 -msgid "Inner L10" -msgstr "Interne 10" - -#: common/common.cpp:241 -msgid "Inner L11" -msgstr "Interne 11" - -#: common/common.cpp:242 -msgid "Inner L12" -msgstr "Interne 12" - -#: common/common.cpp:242 -msgid "Inner L13" -msgstr "Interne 13" - -#: common/common.cpp:242 -msgid "Inner L14" -msgstr "Interne 14" - -#: common/common.cpp:243 -msgid "Adhes Cop" -msgstr "Adhes Cu " - -#: common/common.cpp:243 -msgid "Adhes Cmp" -msgstr "Adhe Cmp" - -#: common/common.cpp:243 -msgid "SoldP Cop" -msgstr "SoldP Cu " - -#: common/common.cpp:243 -msgid "SoldP Cmp" -msgstr "SoldP Cmp" - -#: common/common.cpp:244 -msgid "SilkS Cop" -msgstr "Sérigr Cu " - -#: common/common.cpp:244 -msgid "SilkS Cmp" -msgstr "Sérigr Cmp" - -#: common/common.cpp:244 -msgid "Mask Copp" -msgstr "Masque Cu " - -#: common/common.cpp:244 -msgid "Mask Cmp " -msgstr "Masque Cmp" - -#: common/common.cpp:245 -msgid "Drawings " -msgstr "Drawings " - -#: common/common.cpp:245 -msgid "Comments " -msgstr "Comments " - -#: common/common.cpp:245 -msgid "Eco1 " -msgstr "Eco1 " - -#: common/common.cpp:245 -msgid "Eco2 " -msgstr "Eco2 " - -#: common/common.cpp:246 -msgid "Edges Pcb" -msgstr "Contour Pcb" - -#: common/common.cpp:246 -msgid "--- " -msgstr "--- " - #: common/basicframe.cpp:217 #, c-format msgid "Help file %s not found" @@ -9365,6 +9240,126 @@ msgstr "Langage" msgid "No default editor found, you must choose it" msgstr "Pas d'éditeur par défaut trouvé, vous devez en choisir un" +#: common/common.cpp:44 +msgid " (\"):" +msgstr " (\"):" + +#: common/common.cpp:239 +msgid "Copper " +msgstr "Cuivre " + +#: common/common.cpp:239 +msgid "Inner L1 " +msgstr "Interne 1" + +#: common/common.cpp:239 +msgid "Inner L2 " +msgstr "Interne 2" + +#: common/common.cpp:239 +msgid "Inner L3 " +msgstr "Interne 3" + +#: common/common.cpp:240 +msgid "Inner L4 " +msgstr "Interne 4" + +#: common/common.cpp:240 +msgid "Inner L5 " +msgstr "Interne 5" + +#: common/common.cpp:240 +msgid "Inner L6 " +msgstr "Interne 6" + +#: common/common.cpp:240 +msgid "Inner L7 " +msgstr "Interne 7" + +#: common/common.cpp:241 +msgid "Inner L8 " +msgstr "Interne 8" + +#: common/common.cpp:241 +msgid "Inner L9 " +msgstr "Interne 9" + +#: common/common.cpp:241 +msgid "Inner L10" +msgstr "Interne 10" + +#: common/common.cpp:241 +msgid "Inner L11" +msgstr "Interne 11" + +#: common/common.cpp:242 +msgid "Inner L12" +msgstr "Interne 12" + +#: common/common.cpp:242 +msgid "Inner L13" +msgstr "Interne 13" + +#: common/common.cpp:242 +msgid "Inner L14" +msgstr "Interne 14" + +#: common/common.cpp:243 +msgid "Adhes Cop" +msgstr "Adhes Cu " + +#: common/common.cpp:243 +msgid "Adhes Cmp" +msgstr "Adhe Cmp" + +#: common/common.cpp:243 +msgid "SoldP Cop" +msgstr "SoldP Cu " + +#: common/common.cpp:243 +msgid "SoldP Cmp" +msgstr "SoldP Cmp" + +#: common/common.cpp:244 +msgid "SilkS Cop" +msgstr "Sérigr Cu " + +#: common/common.cpp:244 +msgid "SilkS Cmp" +msgstr "Sérigr Cmp" + +#: common/common.cpp:244 +msgid "Mask Cop " +msgstr "Masque Cu " + +#: common/common.cpp:244 +msgid "Mask Cmp " +msgstr "Masque Cmp" + +#: common/common.cpp:245 +msgid "Drawings " +msgstr "Drawings " + +#: common/common.cpp:245 +msgid "Comments " +msgstr "Comments " + +#: common/common.cpp:245 +msgid "Eco1 " +msgstr "Eco1 " + +#: common/common.cpp:245 +msgid "Eco2 " +msgstr "Eco2 " + +#: common/common.cpp:246 +msgid "Edges Pcb" +msgstr "Contour Pcb" + +#: common/common.cpp:246 +msgid "--- " +msgstr "--- " + #: 3d-viewer/3d_canvas.cpp:290 #: share/zoom.cpp:346 msgid "Zoom +" diff --git a/kicad/treeprj_datas.cpp b/kicad/treeprj_datas.cpp index 9a6a78f151..7a8fc84623 100644 --- a/kicad/treeprj_datas.cpp +++ b/kicad/treeprj_datas.cpp @@ -23,10 +23,6 @@ #include "bitmaps/icon_gerbview_small.xpm" #include "bitmaps/icon_cvpcb_small.xpm" #include "bitmaps/unknown.xpm" -//#include "bitmaps/new_gerb.xpm" -//#include "bitmaps/new_pcb.xpm" -//#include "bitmaps/new_sch.xpm" -//#include "bitmaps/new_cvpcb.xpm" #include "id.h" diff --git a/kicad/treeprj_frame.cpp b/kicad/treeprj_frame.cpp index e0a9582cad..bca8a901a2 100644 --- a/kicad/treeprj_frame.cpp +++ b/kicad/treeprj_frame.cpp @@ -20,7 +20,9 @@ #include "wx/dir.h" #include "bitmaps.h" +#ifdef KICAD_PYTHON #include "bitmaps/new_python.xpm" +#endif #include "id.h" @@ -68,7 +70,7 @@ WinEDA_PrjFrame::WinEDA_PrjFrame(WinEDA_MainFrame * parent, item = new wxMenuItem(menu, ID_PROJECT_TXTEDIT, _("&Edit in a text editor"), - _("Edit the Python Script in a Text Editor") ); + _("&Open the file in a Text Editor") ); item->SetBitmap( icon_txt_xpm ); menu->Append( item ); @@ -110,6 +112,14 @@ WinEDA_PrjFrame::WinEDA_PrjFrame(WinEDA_MainFrame * parent, , TREE_DIRECTORY != i ? _("Rename the File") : _("&Rename the Directory") ); item->SetBitmap( right_xpm ); menu->Append( item ); + if ( TREE_DIRECTORY != i ) + { + item = new wxMenuItem(menu, ID_PROJECT_TXTEDIT + , _("&Edit in a text editor") + , _("Open the file in a Text Editor")); + item->SetBitmap( icon_txt_xpm ); + menu->Append( item ); + } item = new wxMenuItem(menu, ID_PROJECT_DELETE , TREE_DIRECTORY != i ? _("&Delete File") : _("&Delete Directory") , TREE_DIRECTORY != i ? _("Delete the File") : _("&Delete the Directory and its content") ); @@ -132,12 +142,8 @@ BEGIN_EVENT_TABLE(WinEDA_PrjFrame, wxSashLayoutWindow) EVT_MENU(ID_PROJECT_TXTEDIT, WinEDA_PrjFrame::OnTxtEdit) EVT_MENU(ID_PROJECT_NEWFILE, WinEDA_PrjFrame::OnNewFile) EVT_MENU(ID_PROJECT_NEWDIR, WinEDA_PrjFrame::OnNewDirectory) - EVT_MENU(ID_PROJECT_NEWSCH, WinEDA_PrjFrame::OnNewSchFile) - EVT_MENU(ID_PROJECT_NEWBRD, WinEDA_PrjFrame::OnNewBrdFile) EVT_MENU(ID_PROJECT_NEWPY, WinEDA_PrjFrame::OnNewPyFile) - EVT_MENU(ID_PROJECT_NEWGERBER, WinEDA_PrjFrame::OnNewGerberFile) EVT_MENU(ID_PROJECT_NEWTXT, WinEDA_PrjFrame::OnNewTxtFile) - EVT_MENU(ID_PROJECT_NEWNET, WinEDA_PrjFrame::OnNewNetFile) EVT_MENU(ID_PROJECT_DELETE, WinEDA_PrjFrame::OnDeleteFile) EVT_MENU(ID_PROJECT_RENAME, WinEDA_PrjFrame::OnRenameFile) @@ -312,12 +318,8 @@ wxMenu * WinEDA_PrjFrame::GetContextMenu( int type ) void WinEDA_PrjFrame::OnNewDirectory(wxCommandEvent & event) { NewFile( TREE_DIRECTORY ); } void WinEDA_PrjFrame::OnNewFile(wxCommandEvent & event) { NewFile( TREE_UNKNOWN ); } -void WinEDA_PrjFrame::OnNewSchFile(wxCommandEvent & event) { NewFile( TREE_SCHEMA ); } -void WinEDA_PrjFrame::OnNewBrdFile(wxCommandEvent & event) { NewFile( TREE_PCB ); } void WinEDA_PrjFrame::OnNewPyFile(wxCommandEvent & event) { NewFile( TREE_PY ); } -void WinEDA_PrjFrame::OnNewGerberFile(wxCommandEvent & event) { NewFile( TREE_GERBER ); } void WinEDA_PrjFrame::OnNewTxtFile(wxCommandEvent & event) { NewFile( TREE_TXT ); } -void WinEDA_PrjFrame::OnNewNetFile(wxCommandEvent & event) { NewFile( TREE_NET ); } /******************************************************************/ void WinEDA_PrjFrame::NewFile( enum TreeFileType type ) @@ -393,30 +395,48 @@ void WinEDA_PrjFrame::NewFile( const wxString & name, wxString WinEDA_PrjFrame::GetFileExt( enum TreeFileType type ) /******************************************************************/ { -wxString extensions[] = -{ - wxT( "" ), // 0 is not used - wxT( ".pro" ), // TREE_PROJECT - g_SchExtBuffer, // TREE_SCHEMA - g_BoardExtBuffer, // TREE_PCB - wxT( ".py" ), // TREE_PY - g_GerberExtBuffer, // TREE_GERBER - wxT( ".pdf" ), // TREE_PDF - wxT( ".txt" ), // TREE_TXT - wxT( ".net" ), // TREE_NET - wxT( "" ), // TREE_UNKNOWN - wxT( "" ), // TREE_DIRECTORY +wxString ext; + + switch ( type ) + { + case 0 : + break; // 0 is not used + case TREE_PROJECT: + ext = wxT( ".pro" ); + break; + case TREE_SCHEMA: + ext = g_SchExtBuffer; + break; + case TREE_PCB: + ext = g_BoardExtBuffer; + break; + case TREE_PY: + ext = wxT( ".py" ); + break; + case TREE_GERBER: + ext = g_GerberExtBuffer; + break; + case TREE_PDF: + ext = wxT( ".pdf" ); + break; + case TREE_TXT: + ext = wxT( ".txt" ); + break; + case TREE_NET: + ext = wxT( ".net" ); + break; + default: + break; }; - if ( type < TREE_MAX ) return extensions[type]; - return wxEmptyString; + return ext; } /**************************************************************************/ void WinEDA_PrjFrame::AddFile( const wxString & name, wxTreeItemId & root ) /**************************************************************************/ /* add filename "name" to the tree - if name is adirectory, add the sub directory file names + if name is a directory, add the sub directory file names */ { wxTreeItemId cellule; diff --git a/libs.win b/libs.win index c70c06ae9b..a596284328 100644 --- a/libs.win +++ b/libs.win @@ -17,7 +17,7 @@ KICAD_BIN = /f/kicad/winexe #Define the wxWidget path (if not found in environment variables): ifndef WXWIN -WXWIN=/f/wxMSW-2.8.4 +WXWIN=f:/wxMSW-2.8.4 endif LIBVERSION = 2.8 diff --git a/nsis_win_installer/install.nsi b/nsis_win_installer/install.nsi index ee0b047596..bb6ff821ba 100644 --- a/nsis_win_installer/install.nsi +++ b/nsis_win_installer/install.nsi @@ -17,7 +17,7 @@ ; General Product Description Definitions !define PRODUCT_NAME "KiCad" -!define PRODUCT_VERSION "2007.05.25" +!define PRODUCT_VERSION "2007.07.09" !define PRODUCT_WEB_SITE "http://www.lis.inpg.fr/realise_au_lis/kicad/" !define COMPANY_NAME "" !define TRADE_MARKS "" diff --git a/pcbnew/class_pad.cpp b/pcbnew/class_pad.cpp index 0a748fd6d0..7863f1123d 100644 --- a/pcbnew/class_pad.cpp +++ b/pcbnew/class_pad.cpp @@ -78,7 +78,7 @@ void D_PAD::ComputeRayon(void) } /*********************************************/ -const wxPoint D_PAD::ReturnShapePos(void) const +const wxPoint D_PAD::ReturnShapePos(void) /*********************************************/ // retourne la position de la forme (pastilles excentrees) { diff --git a/pcbnew/class_pad.h b/pcbnew/class_pad.h index 81a2746398..7ccb718fa3 100644 --- a/pcbnew/class_pad.h +++ b/pcbnew/class_pad.h @@ -76,7 +76,7 @@ public: wxString ReturnStringPadName(void); // Return pad name as string in a wxString void ReturnStringPadName(wxString & text); // Return pad name as string in a buffer void ComputeRayon(void); // met a jour m_Rayon, rayon du cercle exinscrit - const wxPoint ReturnShapePos(void) const; // retourne la position + const wxPoint ReturnShapePos(void); // retourne la position // de la forme (pastilles excentrees) void Display_Infos(WinEDA_BasePcbFrame * frame); }; diff --git a/pcbnew/dialog_drc.h b/pcbnew/dialog_drc.h index 76929c30f1..ed2e8c7659 100644 --- a/pcbnew/dialog_drc.h +++ b/pcbnew/dialog_drc.h @@ -125,6 +125,7 @@ public: ////@end WinEDA_DrcFrame member variables WinEDA_PcbFrame * m_Parent; wxDC * m_DC; + int m_UnconnectedCount; }; #endif diff --git a/pcbnew/drc.cpp b/pcbnew/drc.cpp index 24c83db4e1..eb336bc2e4 100644 --- a/pcbnew/drc.cpp +++ b/pcbnew/drc.cpp @@ -1,7 +1,6 @@ - /*******************************/ - /* Edition des pistes */ - /* Routines DRC */ - /*******************************/ + /****************************/ + /* DRC control */ + /****************************/ #include "fctsys.h" #include "gr_basic.h" @@ -28,7 +27,7 @@ static int segm_long; // longueur du segment de reference static int xcliplo,ycliplo,xcliphi,ycliphi ; /* coord de la surface de securite du segment a comparer */ /* Routines Locales */ -static int Pad_to_Pad_Isol(const D_PAD * pad_ref, const D_PAD * pad, const int dist_min); +static int Pad_to_Pad_Isol(D_PAD * pad_ref, D_PAD * pad, const int dist_min); static bool TestPadDrc(WinEDA_BasePcbFrame *frame, wxDC * DC, D_PAD * pad_ref, LISTE_PAD * start_buffer, LISTE_PAD * end_buffer, int max_size, bool show_err); static int distance_a_pad(const D_PAD* pad_to_test, int seg_width, int isol); @@ -37,7 +36,7 @@ static int Tst_Ligne(int x1,int y1,int x2,int y2); static void Affiche_Erreur_DRC(WinEDA_DrawPanel * panel, wxDC * DC, BOARD * Pcb, TRACK * pt_ref, void * pt_item, int errnumber); static void Affiche_Erreur_DRC(WinEDA_DrawPanel * panel, wxDC * DC, - BOARD * Pcb, const D_PAD * pad1, const D_PAD * pad2); + BOARD * Pcb, D_PAD * pad1, D_PAD * pad2); @@ -51,9 +50,9 @@ void WinEDA_DrcFrame::ListUnconnectedPads(wxCommandEvent & event) /***************************************************************/ { if( (m_Parent->m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK) == 0 ) - { + { m_Parent->Compile_Ratsnest( m_DC, TRUE); - } + } if( m_Parent->m_Pcb->m_Ratsnest == NULL ) return; CHEVELU* Ratsnest = m_Parent->m_Pcb->m_Ratsnest; @@ -62,23 +61,34 @@ WinEDA_DrawPanel * panel = m_Parent->DrawPanel; int ii; wxString msg; float convert = 0.0001; -int unconnect = 0; - for( ii = m_Parent->m_Pcb->GetNumRatsnests() ;ii > 0; Ratsnest++, ii--) - { - if( (Ratsnest->status & CH_ACTIF) == 0) continue; - unconnect++; - Ratsnest->pad_start->Draw(panel, m_DC, wxPoint(0,0),draw_mode); - Ratsnest->pad_end->Draw(panel, m_DC, wxPoint(0,0),draw_mode); - msg.Printf(_("Unconnected:\nPad @ %.4f,%.4f and\nPad @ %.4f,%.4f\n"), - Ratsnest->pad_start->m_Pos.x * convert, Ratsnest->pad_start->m_Pos.y * convert, - Ratsnest->pad_end->m_Pos.x * convert, Ratsnest->pad_end->m_Pos.y * convert); - m_logWindow->AppendText(msg); - } - if ( unconnect ) msg.Printf(_("Active routes: %d\n"), unconnect); - else msg = _("OK! (No unconnect)\n"); + m_logWindow->AppendText(_("Look for active routes\n")); + m_UnconnectedCount = 0; + for( ii = m_Parent->m_Pcb->GetNumRatsnests() ;ii > 0; Ratsnest++, ii--) + { + if( (Ratsnest->status & CH_ACTIF) == 0) continue; + m_UnconnectedCount++; + if ( m_UnconnectedCount == 1 ) m_logWindow->AppendText(_("Unconnected found:\n") ); + D_PAD * pad = Ratsnest->pad_start; + pad->Draw(panel, m_DC, wxPoint(0,0),draw_mode); + wxString pad_name = pad->ReturnStringPadName(); + wxString module_name = ((MODULE*)(pad->m_Parent))->m_Reference->m_Text; + msg.Printf(_("%d > Pad %s (%s) @ %.4f,%.4f and "), m_UnconnectedCount, + pad_name.GetData(), module_name.GetData(), pad->m_Pos.x * convert, pad->m_Pos.y * convert); + m_logWindow->AppendText(msg); + + pad = Ratsnest->pad_end; + pad->Draw(panel, m_DC, wxPoint(0,0),draw_mode); + pad_name = pad->ReturnStringPadName(); + module_name = ((MODULE*)(pad->m_Parent))->m_Reference->m_Text; + msg.Printf(_("Pad %s (%s) @ %.4f,%.4f\n"), + pad_name.GetData(), module_name.GetData(), pad->m_Pos.x * convert, pad->m_Pos.y * convert); + m_logWindow->AppendText(msg); + } + + if ( m_UnconnectedCount ) msg.Printf(_("Active routes: %d\n"), m_UnconnectedCount); + else msg = _("OK! (No active routes)\n"); m_logWindow->AppendText(msg); - m_logWindow->AppendText(_("End tst")); } @@ -94,10 +104,14 @@ wxString msg; m_logWindow->Clear(); g_DesignSettings.m_TrackClearence = ReturnValueFromTextCtrl(*m_SetClearance, m_Parent->m_InternalUnits); + /* Test DRC errors (clearance errors, bad connections .. */ errors = m_Parent->Test_DRC(m_DC); + /* Serach for active routes (unconnected pads) */ + ListUnconnectedPads(event); if ( errors ) msg.Printf(_("** End Drc: %d errors **\n"),errors); - else msg = _("** End Drc: No Error **\n"); + else if ( m_UnconnectedCount == 0 ) + msg = _("** End Drc: No Error **\n"); m_logWindow->AppendText(msg); } else wxBell(); @@ -655,7 +669,7 @@ LISTE_PAD * pad_list = start_buffer; } /**************************************************************************************/ -static int Pad_to_Pad_Isol(const D_PAD * pad_ref, const D_PAD * pad, const int dist_min) +static int Pad_to_Pad_Isol(D_PAD * pad_ref, D_PAD * pad, const int dist_min) /***************************************************************************************/ /* Return OK_DRC si distance entre pad_ref et pas >= dist_min et BAD_DRC sinon */ @@ -922,45 +936,49 @@ static void Affiche_Erreur_DRC(WinEDA_DrawPanel * panel, wxDC * DC, BOARD * Pcb, number = numero d'identification */ { -int ercx, ercy; -D_PAD * pt_pad; +wxPoint erc_pos; +D_PAD * pad; TRACK * pt_segm; wxString msg; if( ((EDA_BaseStruct*)pt_item)->m_StructType == TYPEPAD ) - { - pt_pad = (D_PAD*) pt_item; - ercx = pt_pad->m_Pos.x; ercy = pt_pad->m_Pos.y; - msg.Printf(_("%d Err type %d sur PAD @ %d,%d\n"), - NumberOfErrors, errnumber, ercx,ercy); - } + { + pad = (D_PAD*) pt_item; + erc_pos = pad->m_Pos; + wxString pad_name = pad->ReturnStringPadName(); + wxString module_name = ((MODULE*)(pad->m_Parent))->m_Reference->m_Text; + msg.Printf(_("%d Drc Err %d PAD %s (%s) @ %d,%d\n"), + NumberOfErrors, errnumber, + pad_name.GetData(), module_name.GetData(), + erc_pos.x, erc_pos.y); + } else /* erreur sur segment de piste */ - { + { pt_segm = (TRACK *) pt_item; - ercx = pt_segm->m_Start.x; ercy = pt_segm->m_Start.y; + erc_pos = pt_segm->m_Start; if(pt_segm->m_StructType == TYPEVIA) - { + { msg.Printf(_("%d Err type %d: sur VIA @ %d,%d\n"), - NumberOfErrors, errnumber,ercx,ercy); - } - else - { - int ercfx = pt_segm->m_End.x, ercfy = pt_segm->m_End.y; - if(hypot( (double)(ercfx - pt_ref->m_End.x),(double)(ercfy - pt_ref->m_End.y) ) - < hypot( (double)(ercx - pt_ref->m_End.x),(double)(ercy - pt_ref->m_End.y) ) ) - { - EXCHG(ercfx, ercx); EXCHG(ercfy, ercy); - } - msg.Printf(_("%d Err type %d: sur SEGMENT @ %d,%d\n"), - NumberOfErrors, errnumber,ercx,ercy); - } + NumberOfErrors, errnumber,erc_pos.x,erc_pos.y); } + else + { + wxPoint erc_pos_f = pt_segm->m_End; + if(hypot( (double)(erc_pos_f.x - pt_ref->m_End.x),(double)(erc_pos_f.y - pt_ref->m_End.y) ) + < hypot( (double)(erc_pos.x - pt_ref->m_End.x),(double)(erc_pos.y - pt_ref->m_End.y) ) ) + { + EXCHG(erc_pos_f.x, erc_pos.x); EXCHG(erc_pos_f.y, erc_pos.y); + } + msg.Printf(_("%d Err type %d: sur SEGMENT @ %d,%d\n"), + NumberOfErrors, errnumber,erc_pos.x,erc_pos.y); + } + } if ( DrcFrame ) DrcFrame->m_logWindow->AppendText(msg); else panel->m_Parent->Affiche_Message(msg); if(current_marqueur == NULL) current_marqueur = new MARQUEUR(Pcb); - current_marqueur->m_Pos = wxPoint(ercx, ercy); + current_marqueur->m_Pos = wxPoint(erc_pos.x, erc_pos.y); current_marqueur->m_Color = WHITE; current_marqueur->m_Diag = msg; current_marqueur->Draw(panel, DC, GR_OR); @@ -969,7 +987,7 @@ wxString msg; /******************************************************************************/ static void Affiche_Erreur_DRC(WinEDA_DrawPanel * panel, wxDC * DC, BOARD * Pcb, - const D_PAD * pad1, const D_PAD * pad2) + D_PAD * pad1, D_PAD * pad2) /******************************************************************************/ /* affiche les erreurs de DRC : @@ -979,18 +997,21 @@ static void Affiche_Erreur_DRC(WinEDA_DrawPanel * panel, wxDC * DC, BOARD * Pcb, number = numero d'identification */ { -int ercx, ercy; wxString msg; - ercx = pad1->m_Pos.x; ercy = pad1->m_Pos.y; - msg.Printf( _("%d Err pad to pad (PAD @ %d,%d and PAD @ %d,%d\n"), - NumberOfErrors, ercx,ercy, - pad2->m_Pos.x, pad2->m_Pos.y); + wxString pad_name1 = pad1->ReturnStringPadName(); + wxString module_name1 = ((MODULE*)(pad1->m_Parent))->m_Reference->m_Text; + wxString pad_name2 = pad2->ReturnStringPadName(); + wxString module_name2 = ((MODULE*)(pad2->m_Parent))->m_Reference->m_Text; + + msg.Printf( _("%d Drc Err: PAD %s (%s) @ %d,%d and PAD %s (%s) @ %d,%d\n"), + NumberOfErrors, pad_name1.GetData(), module_name1.GetData(), pad1->m_Pos.x,pad1->m_Pos.y, + pad_name2.GetData(), module_name2.GetData(), pad2->m_Pos.x, pad2->m_Pos.y); if ( DrcFrame ) DrcFrame->m_logWindow->AppendText(msg); else panel->m_Parent->Affiche_Message(msg); if(current_marqueur == NULL) current_marqueur = new MARQUEUR(Pcb); - current_marqueur->m_Pos = wxPoint(ercx, ercy); + current_marqueur->m_Pos = pad1->m_Pos; current_marqueur->m_Color = WHITE; current_marqueur->m_Diag = msg; current_marqueur->Draw(panel, DC, GR_OR); diff --git a/pcbnew/modedit.cpp b/pcbnew/modedit.cpp index 1be3071c38..5f97d8da67 100644 --- a/pcbnew/modedit.cpp +++ b/pcbnew/modedit.cpp @@ -149,143 +149,77 @@ wxClientDC dc(DrawPanel); if ( m_Draw3DFrame ) m_Draw3DFrame->NewDisplay(); break; - case ID_MODEDIT_UPDATE_MODULE_IN_BOARD:{ - // update modules in the current board, - // not just add it to the board with total disregard for the - // netlist...? - WinEDA_PcbFrame * pcbframe = m_Parent->m_PcbFrame; - BOARD * mainpcb = pcbframe->m_Pcb; - MODULE * presmod = m_Pcb->m_Modules; //the module being edited. - //i guess we need to search through the modules here.. they are in a linked list. - //replace based on m_libref? - MODULE* mod = mainpcb->m_Modules; - do{ - //need to be careful in this doubly linked-list to maintain order & link - // also have to maintain netname on all the pads according to m_NumPadName. - if(mod->m_LibRef == presmod->m_LibRef){//have to be careful with this test of similarity? - wprintf(L"replace: mod->m_LibRef = %S @ %d %d orient: %d\n", mod->m_LibRef.c_str(), - mod->m_Pos.x, mod->m_Pos.y, mod->m_Orient); - MODULE* newmod = new MODULE(mainpcb); - newmod->Copy(presmod); //this will copy the padstack layers etc - newmod->m_Parent = mainpcb; //modify after the copy above - if(mod->m_Layer != CMP_N){//just changing m_Layer is insufficient. - Change_Side_Module(newmod, &dc); - } - newmod->m_Pos = mod->m_Pos; - newmod->m_Orient =0; //otherwise the pads will be rotated with respect to the module. - //copy data into the pads... - - D_PAD* newpad = newmod->m_Pads; - for(; newpad != NULL; newpad = (D_PAD*)newpad->Pnext){ - D_PAD* pad = mod->m_Pads; - for(; pad != NULL; pad = (D_PAD*)pad->Pnext){ - if(pad->m_NumPadName == newpad->m_NumPadName){ - wprintf(L" pad->NumPadName %d @ %d %d :new %d %d, orient: %d\n", pad->m_NumPadName, - pad->m_Pos.x, pad->m_Pos.y, newpad->m_Pos.x, newpad->m_Pos.y, pad->m_Orient); - wprintf(L" pad->m_Netname %S\n", pad->m_Netname.c_str()); - newpad->m_Netname = pad->m_Netname; - newpad->m_NetCode = pad->m_NetCode; - newpad->m_logical_connexion = pad->m_logical_connexion; - newpad->m_physical_connexion = pad->m_physical_connexion; - newpad->m_Pos.x += newmod->m_Pos.x; //the pad positions are apparently in global coordinates. - newpad->m_Pos.y += newmod->m_Pos.y; - newpad->m_Orient = pad->m_Orient; - } - } - } - - //not sure what to do about m_Drawings..assume they are ok? - //copy only the text in m_Ref and m_Val; - //leave the size and position as in the module in edit. - newmod->m_Reference->m_Text = mod->m_Reference->m_Text; - newmod->m_Value->m_Text = mod->m_Value->m_Text; - wprintf(L"replace: mod->m_Reference = %S\n", newmod->m_Reference->m_Text.c_str()); - wprintf(L"replace: mod->m_Value = %S\n", newmod->m_Value->m_Text.c_str()); - newmod->m_Attributs = mod->m_Attributs; - newmod->m_Orient = mod->m_Orient; - newmod->flag = mod->flag; - newmod->m_Flags = 0; //inherited from EDA_BaseStruct. - newmod->m_ModuleStatus = mod->m_ModuleStatus; - //redo the boundary boxes - newmod->Set_Rectangle_Encadrement(); - newmod->SetRectangleExinscrit(); - newmod->m_CntRot90 = mod->m_CntRot90; - newmod->m_CntRot180 = mod->m_CntRot180; - newmod->m_Surface = mod->m_Surface; - pcbframe->Rotate_Module(NULL, newmod, mod->m_Orient, false); - //now, need to replace 'mod' in the linked list with 'newmod'. - //this does not seem to be working correctly.. - MODULE* oldmod = mod; - mod = (MODULE*)mod->Pnext; - oldmod->UnLink(); - delete oldmod; - //insert the new one. - newmod->Pnext = mainpcb->m_Modules; - mainpcb->m_Modules->Pback = newmod; // check this! - mainpcb->m_Modules = newmod; - newmod->Pback = mainpcb; - wprintf(L"-----\n"); - }else{ - mod = (MODULE*)mod->Pnext; - } - }while(mod != NULL); - GetScreen()->ClrModify(); - pcbframe->GetScreen()->m_CurrentItem = NULL; - mainpcb->m_Status_Pcb = 0; - } - break; + case ID_MODEDIT_INSERT_MODULE_IN_BOARD: - { + case ID_MODEDIT_UPDATE_MODULE_IN_BOARD:{ + // update module in the current board, + // not just add it to the board with total disregard for the netlist... WinEDA_PcbFrame * pcbframe = m_Parent->m_PcbFrame; BOARD * mainpcb = pcbframe->m_Pcb; - MODULE * oldmodule = NULL; + MODULE * source_module = NULL; MODULE * module_in_edit = m_Pcb->m_Modules; - // creation du nouveau module sur le PCB en cours - // create a new unit on the PCB, of course. + // Search the old module (source) if exists + // Because this source could be deleted when editing the main board... + if ( module_in_edit->m_Link ) // this is not a new module ... + { + source_module = mainpcb->m_Modules; + for( ; source_module != NULL ; source_module = (MODULE *) source_module->Pnext ) + { + if( module_in_edit->m_Link == source_module->m_TimeStamp ) + break; + } + } + if ( (source_module == NULL) && id == (ID_MODEDIT_UPDATE_MODULE_IN_BOARD) ) // source not found + { + wxString msg; + msg.Printf( _("Unable to find the footprint source on the main board") ); + msg << _("\nCannot update the footprint"); + DisplayError(this, msg); + break; + } + + if ( (source_module != NULL) && id == (ID_MODEDIT_INSERT_MODULE_IN_BOARD) ) // source not found + { + wxString msg; + msg.Printf( _("A footprint source was found on the main board") ); + msg << _("\nCannot insert this footprint"); + DisplayError(this, msg); + break; + } + // Create the "new" module MODULE * newmodule = new MODULE(mainpcb); newmodule->Copy(module_in_edit); - newmodule->m_Parent = mainpcb; // modifie par la copie + newmodule->m_Parent = mainpcb; // modifie par la copie newmodule->m_Link = 0; - // Recherche de l'ancien module correspondant - //(qui a pu changer ou disparaitre a la suite d'�ditions) - //locate the corresponding former unit, which may have a different revision. - // I've taken this out, as it is superceded by 'update' above. - /* - if ( module_in_edit->m_Link ) - { - oldmodule = mainpcb->m_Modules; - for( ; oldmodule != NULL ; oldmodule = (MODULE *) oldmodule->Pnext ) - { - if( module_in_edit->m_Link == oldmodule->m_TimeStamp ) - break; - } - } - */ - // Placement du module dans la liste des modules du PCB. + // Put the footprint in the main pcb linked list. newmodule->Pnext = mainpcb->m_Modules; mainpcb->m_Modules = newmodule; newmodule->Pback = mainpcb; if ( newmodule->Pnext ) newmodule->Pnext->Pback = newmodule; - if ( oldmodule ) - { - newmodule = pcbframe->Exchange_Module(this, - oldmodule, newmodule); + if ( source_module ) // this is an update command + { + // The new module replace the old module (pos, orient, ref, value and connexions are kept) + // and the source_module (old module) is deleted + newmodule = pcbframe->Exchange_Module(this, source_module, newmodule); newmodule->m_TimeStamp = module_in_edit->m_Link; - } - else - { + } + else // This is an insert command + { + wxPoint cursor_pos = pcbframe->GetScreen()->m_Curseur; + pcbframe->GetScreen()->m_Curseur = wxPoint(0,0); pcbframe->Place_Module(newmodule, NULL); + pcbframe->GetScreen()->m_Curseur = cursor_pos; newmodule->m_TimeStamp = GetTimeStamp(); - } + } newmodule->m_Flags = 0; GetScreen()->ClrModify(); pcbframe->GetScreen()->m_CurrentItem = NULL; mainpcb->m_Status_Pcb = 0; - } - break; - + } + break; + case ID_LIBEDIT_IMPORT_PART: GetScreen()->ClearUndoRedoList(); GetScreen()->m_CurrentItem = NULL; diff --git a/pcbnew/moduleframe.cpp b/pcbnew/moduleframe.cpp index 744103aa17..22a3fbc35d 100644 --- a/pcbnew/moduleframe.cpp +++ b/pcbnew/moduleframe.cpp @@ -209,8 +209,35 @@ bool active, islib = TRUE; m_HToolBar->EnableTool(ID_LIBEDIT_EXPORT_PART,active); m_HToolBar->EnableTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART,active); m_HToolBar->EnableTool(ID_MODEDIT_SAVE_LIBMODULE,active && islib); - m_HToolBar->EnableTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD,active); - m_HToolBar->EnableTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD,active); + MODULE * module_in_edit = m_Pcb->m_Modules; + if ( module_in_edit && module_in_edit->m_Link ) // this is not a new module ... + { + WinEDA_PcbFrame * pcbframe = m_Parent->m_PcbFrame; + BOARD * mainpcb = pcbframe->m_Pcb; + MODULE * source_module = mainpcb->m_Modules; + // search if the source module was not deleted: + for( ; source_module != NULL ; source_module = (MODULE *) source_module->Pnext ) + { + if( module_in_edit->m_Link == source_module->m_TimeStamp ) + break; + } + if ( source_module ) + { + m_HToolBar->EnableTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD, false); + m_HToolBar->EnableTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD, true); + } + else // The source was deleted, therefore we can insert but not update the module + { + m_HToolBar->EnableTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD, true); + m_HToolBar->EnableTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD, false); + } + } + else + { + m_HToolBar->EnableTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD,active); + m_HToolBar->EnableTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD, false); + } + if ( GetScreen() ) { m_HToolBar->EnableTool(ID_MODEDIT_UNDO,GetScreen()->m_UndoList && active); diff --git a/pcbnew/move-drag_pads.cpp b/pcbnew/move-drag_pads.cpp index 5e2983d633..f880c3f3d6 100644 --- a/pcbnew/move-drag_pads.cpp +++ b/pcbnew/move-drag_pads.cpp @@ -16,7 +16,7 @@ /* Routines Locales */ /* Variables locales */ -D_PAD* pt_pad_selecte; /* pointeur sur le pad selecte pour edition */ +static D_PAD* s_CurrentSelectedPad; /* pointeur sur le pad selecte pour edition */ static wxPoint Pad_OldPos; @@ -29,7 +29,7 @@ static void Exit_Move_Pad(WinEDA_DrawPanel * Panel, wxDC * DC) Remise en etat des conditions initiales avant move si move en cours */ { -D_PAD * pad = pt_pad_selecte; +D_PAD * pad = s_CurrentSelectedPad; Panel->ManageCurseur = NULL; Panel->ForceCloseManageCurseur = NULL; @@ -55,7 +55,7 @@ D_PAD * pad = pt_pad_selecte; } EraseDragListe(); - pt_pad_selecte = NULL; + s_CurrentSelectedPad = NULL; g_Drag_Pistes_On = FALSE; } @@ -68,7 +68,7 @@ static void Show_Pad_Move(WinEDA_DrawPanel * panel, wxDC * DC, bool erase) TRACK * Track; DRAG_SEGM * pt_drag; BASE_SCREEN * screen = panel->GetScreen(); -D_PAD * pad = pt_pad_selecte; +D_PAD * pad = s_CurrentSelectedPad; if ( erase ) pad->Draw(panel, DC, wxPoint(0,0), GR_XOR); pad->m_Pos = screen->m_Curseur; @@ -238,7 +238,7 @@ int rX, rY; /*********************************************************/ void WinEDA_BasePcbFrame::DeletePad(D_PAD* Pad, wxDC * DC) /*********************************************************/ -/* Routine de suppression d'une pastille sur le module selectionne */ +/* Function to delete the pad "pad" */ { MODULE * Module; wxString line; @@ -268,27 +268,26 @@ wxString line; /*************************************************************/ void WinEDA_BasePcbFrame::StartMovePad(D_PAD * Pad, wxDC * DC) /*************************************************************/ -/* Routine de deplacement d'une pastille */ +/* Function to initialise the "move pad" command */ { MODULE * Module; - /* localisation d'une pastille ? */ if(Pad == NULL ) return; Module = (MODULE*) Pad->m_Parent; - pt_pad_selecte = Pad ; + s_CurrentSelectedPad = Pad ; Pad_OldPos = Pad->m_Pos; Pad->Display_Infos(this); DrawPanel->ManageCurseur = Show_Pad_Move; DrawPanel->ForceCloseManageCurseur = Exit_Move_Pad; - /* Affichage du pad en SKETCH */ + /* Draw the pad (SKETCH mode) */ Pad->Draw(DrawPanel, DC, wxPoint(0,0),GR_XOR); Pad->m_Flags |= IS_MOVED; Pad->Draw(DrawPanel, DC, wxPoint(0,0),GR_XOR); - /* Construction de la liste des segments a "dragger" */ + /* Build the list of track segments to drag */ Build_1_Pad_SegmentsToDrag(DrawPanel, DC, Pad); } @@ -318,7 +317,7 @@ MODULE * Module; dX = Pad->m_Pos.x - Pad_OldPos.x; dY = Pad->m_Pos.y - Pad_OldPos.y; RotatePoint(&dX, &dY, - Module->m_Orient ); - Pad->m_Pos0.x += dX; pt_pad_selecte->m_Pos0.y += dY; + Pad->m_Pos0.x += dX; s_CurrentSelectedPad->m_Pos0.y += dY; Pad->m_Flags = 0; @@ -330,11 +329,11 @@ MODULE * Module; /* Tracage des segments dragges */ pt_drag = g_DragSegmentList; for( ; pt_drag; pt_drag = pt_drag->Pnext) - { + { Track = pt_drag->m_Segm; Track->SetState(EDIT,OFF); Track->Draw(DrawPanel, DC, GR_OR); - } + } EraseDragListe(); GetScreen()->SetModify(); diff --git a/pcbnew/router.cpp b/pcbnew/router.cpp index 9c5891e80b..cc7d49f70f 100644 --- a/pcbnew/router.cpp +++ b/pcbnew/router.cpp @@ -568,7 +568,8 @@ int max_layer = m_Pcb->m_BoardSettings->m_CopperLayerCount; case 'T': // Track list start: fmt = T image layer t_count sscanf(Line+2, "%d %d %d", & image, & track_layer, & track_count); track_layer--; - if ( track_layer == max_layer-1 ) track_layer = CMP_N; + if ( (track_layer != CUIVRE_N) && (track_layer == max_layer-1) ) + track_layer = CMP_N; // Read corners: fmt = C x_pos y_pos for ( int ii = 0; ii < track_count; ii++ ) { diff --git a/pcbnew/tool_modedit.cpp b/pcbnew/tool_modedit.cpp index ab0935b3c6..14cdcb24f4 100644 --- a/pcbnew/tool_modedit.cpp +++ b/pcbnew/tool_modedit.cpp @@ -26,9 +26,9 @@ #include "Update_Module_Board.xpm" #ifdef __UNIX__ -#define LISTBOX_WIDTH 120 +#define LISTBOX_WIDTH 140 #else -#define LISTBOX_WIDTH 100 +#define LISTBOX_WIDTH 120 #endif /***************************************************/ diff --git a/share/infospgm.cpp b/share/infospgm.cpp index ce01bf5b88..5663f2008a 100644 --- a/share/infospgm.cpp +++ b/share/infospgm.cpp @@ -16,23 +16,23 @@ extern wxString g_Main_Title; wxString MsgInfos( #ifdef GERBVIEW -wxT("** GERBVIEW (jul 2001 .. 2006) **") +wxT("** GERBVIEW (jul 2001 .. 2007) **") #else #ifdef PCBNEW -wxT("** PCBNEW (sept 1992 .. 2006) **") +wxT("** PCBNEW (sept 1992 .. 2007) **") #endif #endif #ifdef CVPCB -wxT("** CVPCB (sept 1992 .. 2006) **") +wxT("** CVPCB (sept 1992 .. 2007) **") #endif #ifdef KICAD -wxT("** KICAD (jul 2000 .. 2006) **") +wxT("** KICAD (jul 2000 .. 2007) **") #endif #ifdef EESCHEMA -wxT("** EESCHEMA (sept 1994 .. 2006) **") +wxT("** EESCHEMA (sept 1994 .. 2007) **") #endif );