From a55ef8df3cb7170f51d71f8364685d9e5b4e45da Mon Sep 17 00:00:00 2001 From: charras Date: Wed, 16 Apr 2008 17:21:01 +0000 Subject: [PATCH] Update and use annotate_dialog.pjd to create and maintain annotate dialog --- change_log.txt | 1 + eeschema/annotate.cpp | 7 - eeschema/annotate_dialog.cpp | 365 +++++++++++------------ eeschema/annotate_dialog.h | 128 ++++---- eeschema/annotate_dialog.pjd | 548 +++++++++++++++++++++++++++-------- internat/fr/kicad.mo | Bin 152867 -> 152897 bytes internat/fr/kicad.po | 198 ++++++------- 7 files changed, 790 insertions(+), 457 deletions(-) diff --git a/change_log.txt b/change_log.txt index 4436e33e06..91380eef4f 100644 --- a/change_log.txt +++ b/change_log.txt @@ -10,6 +10,7 @@ email address. +eeschema In complex hierarchies, multiples parts per packages now should work, without restrictions + Update and use annotate_dialog.pjd to create annotate dialog 2008-Apr-15 UPDATE Jean-Pierre Charras diff --git a/eeschema/annotate.cpp b/eeschema/annotate.cpp index 76b4cbd6f0..1ddfd51819 100644 --- a/eeschema/annotate.cpp +++ b/eeschema/annotate.cpp @@ -440,9 +440,6 @@ void BreakReference( CmpListStruct* BaseListeCmp, int NbOfCmp ) } } - wxLogDebug( wxT( "BreakReference(): %s number found: %d\n" ), - BaseListeCmp[ii].m_TextRef, - BaseListeCmp[ii].m_NumRef ); } } @@ -667,7 +664,6 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) if( NbOfCmp == 0 ) { - wxBell(); return 0; } @@ -675,7 +671,6 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) /* Second pass : create the list of components */ ListeCmp = AllocateCmpListStrct( NbOfCmp ); - printf( "CheckAnnotate() listing all components:\n" ); if( !oneSheetOnly ) { ii = 0; @@ -687,8 +682,6 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) else ListeComposants( ListeCmp, frame->GetSheet() ); - printf( "CheckAnnotate() done:\n" ); - qsort( ListeCmp, NbOfCmp, sizeof(CmpListStruct), AnnotateByValue ); /* Break full components reference in name (prefix) and number: example: diff --git a/eeschema/annotate_dialog.cpp b/eeschema/annotate_dialog.cpp index 8e6e3ceac1..b5fc1430b0 100644 --- a/eeschema/annotate_dialog.cpp +++ b/eeschema/annotate_dialog.cpp @@ -1,19 +1,17 @@ ///////////////////////////////////////////////////////////////////////////// - // Name: annotate_dialog.cpp // Purpose: // Author: jean-pierre Charras -// Modified by: Wayne Stambaugh -// -// Created: 05/02/2006 12:31:28 -// Modified 02/21/2008 13:47:10 +// Modified by: +// Created: 16/04/2008 17:50:59 // RCS-ID: // Copyright: License GNU // Licence: ///////////////////////////////////////////////////////////////////////////// +// Generated by DialogBlocks (unregistered), 16/04/2008 17:50:59 -#if defined (__GNUG__) && !defined (NO_GCC_PRAGMA) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "annotate_dialog.h" #endif @@ -28,6 +26,9 @@ #include "wx/wx.h" #endif +////@begin includes +////@end includes + #include "fctsys.h" #include "common.h" #include "program.h" @@ -40,6 +41,9 @@ extern void AnnotateComponents( WinEDA_SchematicFrame* parent, bool sortByPosition, bool resetAnnotation ); +////@begin XPM images +////@end XPM images + /*! * WinEDA_AnnotateFrame type definition @@ -47,38 +51,39 @@ extern void AnnotateComponents( WinEDA_SchematicFrame* parent, IMPLEMENT_DYNAMIC_CLASS( WinEDA_AnnotateFrame, wxDialog ) + /*! * WinEDA_AnnotateFrame event table definition */ BEGIN_EVENT_TABLE( WinEDA_AnnotateFrame, wxDialog ) - EVT_BUTTON( ID_CLEAR_ANNOTATION, WinEDA_AnnotateFrame::OnClearAnnotation ) - EVT_BUTTON( wxID_APPLY, WinEDA_AnnotateFrame::OnApply ) - EVT_BUTTON( wxID_CANCEL, WinEDA_AnnotateFrame::OnCancel ) + +////@begin WinEDA_AnnotateFrame event table entries + EVT_BUTTON( wxID_CANCEL, WinEDA_AnnotateFrame::OnCancelClick ) + + EVT_BUTTON( ID_CLEAR_ANNOTATION_CMP, WinEDA_AnnotateFrame::OnClearAnnotationCmpClick ) + + EVT_BUTTON( wxID_APPLY, WinEDA_AnnotateFrame::OnApplyClick ) + +////@end WinEDA_AnnotateFrame event table entries + END_EVENT_TABLE() + /*! * WinEDA_AnnotateFrame constructors */ WinEDA_AnnotateFrame::WinEDA_AnnotateFrame() { - m_rbEntireSchematic = NULL; - m_cbResetAnnotation = NULL; - m_rbSortByPosition = NULL; - m_btnClear = NULL; + Init(); } - -WinEDA_AnnotateFrame::WinEDA_AnnotateFrame( WinEDA_SchematicFrame* parent, - wxWindowID id, - const wxString& caption, - const wxPoint& pos, - const wxSize& size, - long style ) +WinEDA_AnnotateFrame::WinEDA_AnnotateFrame( WinEDA_SchematicFrame* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { m_Parent = parent; - Create( parent, id, caption, pos, size, style ); + Init(); + Create(parent, id, caption, pos, size, style); } @@ -86,198 +91,132 @@ WinEDA_AnnotateFrame::WinEDA_AnnotateFrame( WinEDA_SchematicFrame* parent, * WinEDA_AnnotateFrame creator */ -bool WinEDA_AnnotateFrame::Create( wxWindow* parent, - wxWindowID id, - const wxString& caption, - const wxPoint& pos, - const wxSize& size, - long style ) +bool WinEDA_AnnotateFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { - SetExtraStyle( wxWS_EX_BLOCK_EVENTS ); +////@begin WinEDA_AnnotateFrame creation + SetExtraStyle(wxWS_EX_BLOCK_EVENTS); wxDialog::Create( parent, id, caption, pos, size, style ); CreateControls(); - if( GetSizer() ) + if (GetSizer()) { - GetSizer()->SetSizeHints( this ); + GetSizer()->SetSizeHints(this); } Centre(); - +////@end WinEDA_AnnotateFrame creation return true; } +/*! + * WinEDA_AnnotateFrame destructor + */ + +WinEDA_AnnotateFrame::~WinEDA_AnnotateFrame() +{ +////@begin WinEDA_AnnotateFrame destruction +////@end WinEDA_AnnotateFrame destruction +} + + +/*! + * Member initialisation + */ + +void WinEDA_AnnotateFrame::Init() +{ +////@begin WinEDA_AnnotateFrame member initialisation + m_rbEntireSchematic = NULL; + m_cbResetAnnotation = NULL; + m_rbSortByPosition = NULL; + rbSortByValue = NULL; + sizerDialogButtons = NULL; + m_btnClose = NULL; + m_btnClear = NULL; + m_btnApply = NULL; +////@end WinEDA_AnnotateFrame member initialisation +} + + /*! * Control creation for WinEDA_AnnotateFrame */ void WinEDA_AnnotateFrame::CreateControls() { - wxFont fontBold = this->GetFont(); - fontBold.SetWeight(wxFONTWEIGHT_BOLD); +////@begin WinEDA_AnnotateFrame content construction + // Generated by DialogBlocks, 16/04/2008 20:16:13 (unregistered) - wxBoxSizer* sizerTop = new wxBoxSizer( wxVERTICAL ); + WinEDA_AnnotateFrame* itemDialog1 = this; - /* Sizer flags for setting up the spacing of the controls in the dialog - * box. These eventually should be moved to a file with a header in - * the common directory so all of the dialogs share the same layout - * spacing */ + wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); + itemDialog1->SetSizer(itemBoxSizer2); - /* Spacing for grouping labels in a dialog box. */ - wxSizerFlags flagsLabelSpacing( 0 ); - flagsLabelSpacing.Align( wxALIGN_TOP | wxALIGN_LEFT ); - flagsLabelSpacing.Border( wxLEFT | wxTOP, 6 ); + wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); + itemBoxSizer2->Add(itemBoxSizer3, 0, wxGROW|wxRIGHT|wxTOP|wxBOTTOM, 5); - /* Spacing for grouping radio buttons inside the grouping sizer. */ - wxSizerFlags flagsRadioButtonSpacing( 0 ); - flagsRadioButtonSpacing.Align( wxALIGN_LEFT ); - flagsRadioButtonSpacing.Border( wxTOP | wxLEFT | wxRIGHT, 6 ); + wxStaticText* itemStaticText4 = new wxStaticText( itemDialog1, wxID_STATIC, _("Scope"), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticText4->SetForegroundColour(wxColour(0, 128, 64)); + itemStaticText4->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxBOLD, false, wxT("Tahoma"))); + itemBoxSizer3->Add(itemStaticText4, 0, wxALIGN_LEFT|wxALL, 5); - /* Spacing for the radio button sizer inside the group sizer. */ - wxSizerFlags flagsRadioButtonSizerSpacing( 0 ); - flagsRadioButtonSizerSpacing.Align( wxALIGN_TOP | wxALIGN_LEFT ); - flagsRadioButtonSizerSpacing.Border( wxLEFT, 20 ); + wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL); + itemBoxSizer3->Add(itemBoxSizer5, 0, wxGROW|wxLEFT, 25); - /* Spacing for the vertical group sizers. */ - wxSizerFlags flagsGroupSizerSpacing( 1 ); - flagsGroupSizerSpacing.Align( wxALIGN_TOP | wxALIGN_LEFT ); - flagsGroupSizerSpacing.Border( wxTOP | wxLEFT | wxRIGHT, 12 ); + m_rbEntireSchematic = new wxRadioButton( itemDialog1, ID_ENTIRE_SCHEMATIC, _("Annotate the &entire schematic"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_rbEntireSchematic->SetValue(true); + itemBoxSizer5->Add(m_rbEntireSchematic, 0, wxGROW|wxALL, 5); - /* Spacing for dialog button sizer. */ - wxSizerFlags flagsDialogButtonSizerSpacing( 0 ); - flagsDialogButtonSizerSpacing.Border( wxALL, 12 ); + wxRadioButton* itemRadioButton7 = new wxRadioButton( itemDialog1, ID_CURRENT_PAGE, _("Annotate the current &page only"), wxDefaultPosition, wxDefaultSize, 0 ); + itemRadioButton7->SetValue(false); + itemBoxSizer5->Add(itemRadioButton7, 0, wxGROW|wxALL, 5); - /* Spacing for the dialog buttons. */ - wxSizerFlags flagsDialogButtonSpacing( 0 ); - flagsDialogButtonSpacing.Border( wxLEFT | wxRIGHT, 3 ); + m_cbResetAnnotation = new wxCheckBox( itemDialog1, ID_RESET_ANNOTATION, _("&Reset existing annotation"), wxDefaultPosition, wxDefaultSize, 0 ); + m_cbResetAnnotation->SetValue(false); + m_cbResetAnnotation->SetForegroundColour(wxColour(217, 38, 52)); + itemBoxSizer5->Add(m_cbResetAnnotation, 0, wxGROW|wxALL, 5); - /* Annotate scope sizers, label, and radio buttons. */ - wxBoxSizer* sizerAnnotate = new wxBoxSizer( wxVERTICAL ); - wxStaticText* labelAnnotate = new wxStaticText( this, -1, - _( "Scope" ) ); - labelAnnotate->SetFont( fontBold ); - sizerAnnotate->Add( labelAnnotate, flagsLabelSpacing ); - wxBoxSizer* sizerAnnotateItems = new wxBoxSizer( wxVERTICAL ); - m_rbEntireSchematic = - new wxRadioButton( this, ID_ENTIRE_SCHEMATIC, - _( "Annotate the &entire schematic" ), - wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); - wxRadioButton* rbCurrentPage = - new wxRadioButton( this, ID_CURRENT_PAGE, - _( "Annotate the current &page only" ) ); - m_rbEntireSchematic->SetValue( true ); - m_cbResetAnnotation = new wxCheckBox( this, ID_RESET_ANNOTATION, - _( "&Reset existing annotation" ) ); + wxStaticText* itemStaticText9 = new wxStaticText( itemDialog1, wxID_STATIC, _("Order"), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticText9->SetForegroundColour(wxColour(125, 2, 12)); + itemStaticText9->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxBOLD, false, wxT("Tahoma"))); + itemBoxSizer3->Add(itemStaticText9, 0, wxALIGN_LEFT|wxALL, 5); - sizerAnnotateItems->Add( m_rbEntireSchematic, flagsRadioButtonSpacing ); - sizerAnnotateItems->Add( rbCurrentPage, flagsRadioButtonSpacing ); - sizerAnnotateItems->Add( m_cbResetAnnotation, flagsRadioButtonSpacing ); - sizerAnnotate->Add( sizerAnnotateItems, flagsRadioButtonSizerSpacing ); - sizerTop->Add( sizerAnnotate, flagsGroupSizerSpacing ); - /* This is an ugly hack to make sure the focus is set correctly so the - * escape key closes the dialog without requiring one of the controls - * to be activated by the user first. This problem only occurs on the - * GTK version of wxWidgets */ -#ifdef __WXGTK__ - m_rbEntireSchematic->SetFocus( ); -#endif + wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxVERTICAL); + itemBoxSizer3->Add(itemBoxSizer10, 0, wxGROW|wxLEFT, 25); - /* Annotation sort order sizers, label, and radio buttons. */ - wxBoxSizer* sizerSort = new wxBoxSizer( wxVERTICAL ); - wxStaticText* labelSort = new wxStaticText( this, wxID_ANY, - _( "Order" ) ); - labelSort->SetFont( fontBold ); - sizerSort->Add( labelSort, flagsLabelSpacing ); - wxBoxSizer* sizerSortItems = new wxBoxSizer( wxVERTICAL ); - m_rbSortByPosition = new wxRadioButton( this, - ID_SORT_BY_POSITION, - _( "Sort components by p&osition" ), - wxDefaultPosition, - wxDefaultSize, - wxRB_GROUP ); - wxRadioButton* rbSortByValue = - new wxRadioButton( this, ID_SORT_BY_VALUE, - _( "Sort components by &value" ) ); - sizerSortItems->Add( m_rbSortByPosition, flagsRadioButtonSpacing ); - sizerSortItems->Add( rbSortByValue, flagsRadioButtonSpacing ); - sizerSort->Add( sizerSortItems, flagsRadioButtonSizerSpacing ); - sizerTop->Add( sizerSort, flagsGroupSizerSpacing ); + m_rbSortByPosition = new wxRadioButton( itemDialog1, ID_SORT_BY_POSITION, _("Sort Components by &Y Position"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_rbSortByPosition->SetValue(true); + itemBoxSizer10->Add(m_rbSortByPosition, 0, wxGROW|wxALL, 5); - /* Standard dialog buttons and sizer. */ - wxBoxSizer* sizerDialogButtons = new wxBoxSizer( wxHORIZONTAL ); - wxButton* btnClose = new wxButton( this, wxID_CANCEL, _("Close") ); - /* TODO: Check if there is any existing annotation and enable/disable - * the clear button accordingly. Probably should also enable/ - * disable new components radio button if all of the components - * are already annotated. Some low level work on the DrawSheetPath - * class will need to be done to accomadate this. - */ - m_btnClear = new wxButton( this, ID_CLEAR_ANNOTATION, _("Clear Annotation") ); - wxButton* btnApply = new wxButton( this, wxID_APPLY, _("Annotation") ); - sizerDialogButtons->Add( btnClose, flagsDialogButtonSpacing ); - sizerDialogButtons->Add( new wxBoxSizer( wxHORIZONTAL ), - wxSizerFlags( 1 ).Expand( ) ); - sizerDialogButtons->Add( m_btnClear, flagsDialogButtonSpacing ); - sizerDialogButtons->Add( btnApply, flagsDialogButtonSpacing ); - sizerTop->Add( sizerDialogButtons, flagsDialogButtonSizerSpacing ); - SetSizer( sizerTop ); + rbSortByValue = new wxRadioButton( itemDialog1, ID_SORT_BY_VALUE, _("Sort Components by &Value"), wxDefaultPosition, wxDefaultSize, 0 ); + rbSortByValue->SetValue(false); + itemBoxSizer10->Add(rbSortByValue, 0, wxGROW|wxALL, 5); + + sizerDialogButtons = new wxBoxSizer(wxHORIZONTAL); + itemBoxSizer2->Add(sizerDialogButtons, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + + m_btnClose = new wxButton( itemDialog1, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + m_btnClose->SetDefault(); + sizerDialogButtons->Add(m_btnClose, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + + m_btnClear = new wxButton( itemDialog1, ID_CLEAR_ANNOTATION_CMP, _("Clear Annotation"), wxDefaultPosition, wxDefaultSize, 0 ); + m_btnClear->SetForegroundColour(wxColour(0, 0, 230)); + sizerDialogButtons->Add(m_btnClear, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + + m_btnApply = new wxButton( itemDialog1, wxID_APPLY, _("Annotation"), wxDefaultPosition, wxDefaultSize, 0 ); + m_btnApply->SetDefault(); + m_btnApply->SetForegroundColour(wxColour(198, 0, 0)); + sizerDialogButtons->Add(m_btnApply, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + +////@end WinEDA_AnnotateFrame content construction } /*! - * Should we show tooltips? + * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_APPLY */ -bool WinEDA_AnnotateFrame::ShowToolTips() -{ - return true; -} - - -/*! - * Get bitmap resources - */ - -wxBitmap WinEDA_AnnotateFrame::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval - wxUnusedVar( name ); - return wxNullBitmap; -} - - -/*! - * Get icon resources - */ - -wxIcon WinEDA_AnnotateFrame::GetIconResource( const wxString& name ) -{ - // Icon retrieval - wxUnusedVar( name ); - return wxNullIcon; -} - -void WinEDA_AnnotateFrame::OnClearAnnotation( wxCommandEvent& event ) -{ - int response; - - wxString message = _( "Clear the existing annotation for " ); - if( GetLevel() ) - message += _( "the entire schematic?" ); - else - message += _( "the current sheet?" ); - - message += _( "\n\nThis operation will clear the existing annotation " \ - "and cannot be undone." ); - response = wxMessageBox( message, wxT( "" ), - wxICON_EXCLAMATION | wxOK | wxCANCEL ); - if (response == wxCANCEL) - return; - DeleteAnnotation( m_Parent, GetLevel() ); - m_btnClear->Enable(false); -} - -void WinEDA_AnnotateFrame::OnApply( wxCommandEvent& event ) +void WinEDA_AnnotateFrame::OnApplyClick( wxCommandEvent& event ) { int response; wxString message; @@ -302,7 +241,37 @@ void WinEDA_AnnotateFrame::OnApply( wxCommandEvent& event ) m_btnClear->Enable(); } -void WinEDA_AnnotateFrame::OnCancel( wxCommandEvent& event ) + +/*! + * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DEANNOTATE_CMP + */ + +void WinEDA_AnnotateFrame::OnClearAnnotationCmpClick( wxCommandEvent& event ) +{ + int response; + + wxString message = _( "Clear the existing annotation for " ); + if( GetLevel() ) + message += _( "the entire schematic?" ); + else + message += _( "the current sheet?" ); + + message += _( "\n\nThis operation will clear the existing annotation " \ + "and cannot be undone." ); + response = wxMessageBox( message, wxT( "" ), + wxICON_EXCLAMATION | wxOK | wxCANCEL ); + if (response == wxCANCEL) + return; + DeleteAnnotation( m_Parent, GetLevel() ); + m_btnClear->Enable(false); +} + + +/*! + * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL + */ + +void WinEDA_AnnotateFrame::OnCancelClick( wxCommandEvent& event ) { if( IsModal() ) EndModal( wxID_CANCEL ); @@ -313,6 +282,7 @@ void WinEDA_AnnotateFrame::OnCancel( wxCommandEvent& event ) } } + bool WinEDA_AnnotateFrame::GetLevel( void ) { wxASSERT_MSG( ((m_rbEntireSchematic != NULL) && @@ -342,3 +312,40 @@ bool WinEDA_AnnotateFrame::GetSortOrder( void ) return m_rbSortByPosition->GetValue(); } + + + +/*! + * Should we show tooltips? + */ + +bool WinEDA_AnnotateFrame::ShowToolTips() +{ + return true; +} + +/*! + * Get bitmap resources + */ + +wxBitmap WinEDA_AnnotateFrame::GetBitmapResource( const wxString& name ) +{ + // Bitmap retrieval +////@begin WinEDA_AnnotateFrame bitmap retrieval + wxUnusedVar(name); + return wxNullBitmap; +////@end WinEDA_AnnotateFrame bitmap retrieval +} + +/*! + * Get icon resources + */ + +wxIcon WinEDA_AnnotateFrame::GetIconResource( const wxString& name ) +{ + // Icon retrieval +////@begin WinEDA_AnnotateFrame icon retrieval + wxUnusedVar(name); + return wxNullIcon; +////@end WinEDA_AnnotateFrame icon retrieval +} diff --git a/eeschema/annotate_dialog.h b/eeschema/annotate_dialog.h index 770ca71d83..640c0ec6e8 100644 --- a/eeschema/annotate_dialog.h +++ b/eeschema/annotate_dialog.h @@ -1,20 +1,20 @@ ///////////////////////////////////////////////////////////////////////////// - // Name: annotate_dialog.h // Purpose: // Author: jean-pierre Charras // Modified by: -// Created: 05/02/2006 12:31:28 +// Created: 16/04/2008 17:50:59 // RCS-ID: // Copyright: License GNU // Licence: ///////////////////////////////////////////////////////////////////////////// +// Generated by DialogBlocks (unregistered), 16/04/2008 17:50:59 #ifndef _ANNOTATE_DIALOG_H_ #define _ANNOTATE_DIALOG_H_ -#if defined (__GNUG__) && !defined (NO_GCC_PRAGMA) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "annotate_dialog.h" #endif @@ -22,99 +22,107 @@ * Includes */ -#include "fctsys.h" +////@begin includes +////@end includes -#include "common.h" -#include "program.h" -#include "libcmp.h" -#include "general.h" +/*! + * Forward declarations + */ +////@begin forward declarations +class wxBoxSizer; +////@end forward declarations /*! * Control identifiers */ -#define ID_DIALOG 10000 -#define ID_ENTIRE_SCHEMATIC 10001 -#define ID_CURRENT_PAGE 10002 -#define ID_RESET_ANNOTATION 10003 -#define ID_SORT_BY_POSITION 10004 -#define ID_SORT_BY_VALUE 10005 -#define ID_CLEAR_ANNOTATION 10006 +////@begin control identifiers +#define ID_DIALOG 10000 +#define ID_ENTIRE_SCHEMATIC 10002 +#define ID_CURRENT_PAGE 10003 +#define ID_RESET_ANNOTATION 10009 +#define ID_SORT_BY_POSITION 10010 +#define ID_SORT_BY_VALUE 10011 +#define ID_CLEAR_ANNOTATION_CMP 10004 +#define SYMBOL_WINEDA_ANNOTATEFRAME_STYLE wxDEFAULT_DIALOG_STYLE|MAYBE_RESIZE_BORDER +#define SYMBOL_WINEDA_ANNOTATEFRAME_TITLE _("EESchema Annotation") +#define SYMBOL_WINEDA_ANNOTATEFRAME_IDNAME ID_DIALOG +#define SYMBOL_WINEDA_ANNOTATEFRAME_SIZE wxSize(400, 300) +#define SYMBOL_WINEDA_ANNOTATEFRAME_POSITION wxDefaultPosition +////@end control identifiers -#define ANNOTATE_DIALOG_STYLE wxDEFAULT_DIALOG_STYLE | MAYBE_RESIZE_BORDER -#define ANNOTATE_DIALOG_TITLE _( "Annotate" ) - - -/*! - * Compatibility - */ - -#ifndef wxCLOSE_BOX -#define wxCLOSE_BOX 0x1000 -#endif - /*! * WinEDA_AnnotateFrame class declaration */ -class WinEDA_AnnotateFrame : public wxDialog +class WinEDA_AnnotateFrame: public wxDialog { DECLARE_DYNAMIC_CLASS( WinEDA_AnnotateFrame ) + DECLARE_EVENT_TABLE() public: - /// Constructors WinEDA_AnnotateFrame(); - WinEDA_AnnotateFrame( WinEDA_SchematicFrame* parent, - wxWindowID id = wxID_ANY, - const wxString& caption = ANNOTATE_DIALOG_TITLE, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = ANNOTATE_DIALOG_STYLE ); + WinEDA_AnnotateFrame( WinEDA_SchematicFrame* parent, wxWindowID id = SYMBOL_WINEDA_ANNOTATEFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_ANNOTATEFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_ANNOTATEFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_ANNOTATEFRAME_SIZE, long style = SYMBOL_WINEDA_ANNOTATEFRAME_STYLE ); /// Creation - bool Create( wxWindow* parent, - wxWindowID id = wxID_ANY, - const wxString& caption = ANNOTATE_DIALOG_TITLE, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = ANNOTATE_DIALOG_STYLE ); + bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_ANNOTATEFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_ANNOTATEFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_ANNOTATEFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_ANNOTATEFRAME_SIZE, long style = SYMBOL_WINEDA_ANNOTATEFRAME_STYLE ); + + /// Destructor + ~WinEDA_AnnotateFrame(); + + /// Initialises member variables + void Init(); /// Creates the controls and sizers - void CreateControls(); + void CreateControls(); + +////@begin WinEDA_AnnotateFrame event handler declarations + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL + void OnCancelClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_ANNOTATION_CMP + void OnClearAnnotationCmpClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_APPLY + void OnApplyClick( wxCommandEvent& event ); + +////@end WinEDA_AnnotateFrame event handler declarations + +////@begin WinEDA_AnnotateFrame member function declarations /// Retrieves bitmap resources - wxBitmap GetBitmapResource( const wxString& name ); + wxBitmap GetBitmapResource( const wxString& name ); /// Retrieves icon resources - wxIcon GetIconResource( const wxString& name ); - - bool GetLevel( void ); - bool GetResetItems( void ); - bool GetSortOrder( void ); + wxIcon GetIconResource( const wxString& name ); +////@end WinEDA_AnnotateFrame member function declarations /// Should we show tooltips? static bool ShowToolTips(); - WinEDA_SchematicFrame* m_Parent; - -private: - void CloseDialog( void ); - - void OnClearAnnotation( wxCommandEvent& event ); - void OnApply( wxCommandEvent& event ); - void OnCancel( wxCommandEvent& event ); + // User functions: + bool GetLevel( void ); + bool GetResetItems( void ); + bool GetSortOrder( void ); +////@begin WinEDA_AnnotateFrame member variables wxRadioButton* m_rbEntireSchematic; - wxRadioButton* m_rbSortByPosition; wxCheckBox* m_cbResetAnnotation; + wxRadioButton* m_rbSortByPosition; + wxRadioButton* rbSortByValue; + wxBoxSizer* sizerDialogButtons; + wxButton* m_btnClose; wxButton* m_btnClear; + wxButton* m_btnApply; +////@end WinEDA_AnnotateFrame member variables + + WinEDA_SchematicFrame * m_Parent; - DECLARE_EVENT_TABLE() }; #endif - -// _ANNOTATE_DIALOG_H_ + // _ANNOTATE_DIALOG_H_ diff --git a/eeschema/annotate_dialog.pjd b/eeschema/annotate_dialog.pjd index b97453be83..cc4af0e2e7 100644 --- a/eeschema/annotate_dialog.pjd +++ b/eeschema/annotate_dialog.pjd @@ -108,10 +108,12 @@ 0 0 1 + 0 1 1 0 1 + 0 @@ -134,6 +136,7 @@ 0 "" 1 + -8519680 "" "Debug" "ANSI" @@ -175,6 +178,8 @@ "%AUTO%" "%AUTO%" "%AUTO%" + 0 + 1 @@ -246,7 +251,6 @@ 1 0 0 - 0 0 0 0 @@ -278,7 +282,7 @@ 0 "" - "wxBoxSizer H" + "wxBoxSizer V" "dialog-control-document" "" "sizer" @@ -287,7 +291,7 @@ 0 0 "wbBoxSizerProxy" - "Horizontal" + "Vertical" "" 0 0 @@ -306,7 +310,7 @@ "wbBoxSizerProxy" "Vertical" "" - "Centre" + "Expand" "Centre" 0 5 @@ -319,34 +323,33 @@ 0 "<Any platform>" - "wxRadioBox: ID_RADIOBOX" + "wxStaticText: wxID_STATIC" "dialog-control-document" "" - "radiobox" + "statictext" 0 1 0 0 - "5/2/2006" - "wbRadioBoxProxy" - "ID_RADIOBOX" - 10001 - "wxRadioBox" - "wxRadioBox" + "16/4/2008" + "wbStaticTextProxy" + "wxID_STATIC" + 5105 + "" + "wxStaticText" + "wxStaticText" 1 0 "" "" - "m_AnnotProjetCtrl" - "annotate:" - 1 - "Hierarchy|Current sheet" - 0 + "" + "Scope" + -1 "" "" "" - "" - "" + "008040" + "8, wxSWISS, wxNORMAL, wxBOLD, false, Tahoma" 0 1 "<Any platform>" @@ -357,8 +360,16 @@ "" "" "" - 0 - 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 0 0 0 @@ -367,7 +378,7 @@ -1 -1 -1 - "Expand" + "Left" "Centre" 0 5 @@ -382,34 +393,247 @@ "" - "wxRadioBox: ID_RADIOBOX1" + "wxBoxSizer V" "dialog-control-document" "" - "radiobox" + "sizer" 0 1 0 0 - "5/2/2006" - "wbRadioBoxProxy" - "ID_RADIOBOX1" - 10002 - "wxRadioBox" - "wxRadioBox" + "16/4/2008" + "wbBoxSizerProxy" + "Vertical" + "" + "Expand" + "Centre" + 0 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + "<Any platform>" + + "wxRadioButton: ID_ENTIRE_SCHEMATIC" + "dialog-control-document" + "" + "radiobutton" + 0 + 1 + 0 + 0 + "16/4/2008" + "wbRadioButtonProxy" + "ID_ENTIRE_SCHEMATIC" + 10002 + "" + "wxRadioButton" + "wxRadioButton" + 1 + 0 + "" + "" + "m_rbEntireSchematic" + "Annotate the &entire schematic" + 1 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 1 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "" + "" + + + "wxRadioButton: ID_CURRENT_PAGE" + "dialog-control-document" + "" + "radiobutton" + 0 + 1 + 0 + 0 + "16/4/2008" + "wbRadioButtonProxy" + "ID_CURRENT_PAGE" + 10003 + "" + "wxRadioButton" + "wxRadioButton" + 1 + 0 + "" + "" + "" + "Annotate the current &page only" + 0 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "" + "" + + + "wxCheckBox: ID_RESET_ANNOTATION" + "dialog-control-document" + "" + "checkbox" + 0 + 1 + 0 + 0 + "16/4/2008" + "wbCheckBoxProxy" + "ID_RESET_ANNOTATION" + 10009 + "" + "wxCheckBox" + "wxCheckBox" + 1 + 0 + "" + "" + "m_cbResetAnnotation" + "&Reset existing annotation" + 0 + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "D92634" + "" + 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 + "" + "" + + + + "wxStaticText: wxID_STATIC" + "dialog-control-document" + "" + "statictext" + 0 + 1 + 0 + 0 + "16/4/2008" + "wbStaticTextProxy" + "wxID_STATIC" + 5105 + "" + "wxStaticText" + "wxStaticText" 1 0 "" "" - "m_AnnotNewCmpCtrl" - "select items:" - 1 - "all components|new components only" - 0 + "" + "Order" + -1 "" "" "" - "" - "" + "7D020C" + "8, wxSWISS, wxNORMAL, wxBOLD, false, Tahoma" 0 1 "<Any platform>" @@ -420,8 +644,16 @@ "" "" "" - 0 - 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 0 0 0 @@ -430,7 +662,7 @@ -1 -1 -1 - "Expand" + "Left" "Centre" 0 5 @@ -445,71 +677,158 @@ "" - "wxRadioBox: ID_RADIOBOX2" + "wxBoxSizer V" "dialog-control-document" "" - "radiobox" + "sizer" 0 1 0 0 - "5/7/2007" - "wbRadioBoxProxy" - "ID_RADIOBOX2" - 10005 - "wxRadioBox" - "wxRadioBox" - 1 - 0 - "" - "" - "m_AnnotSortCmpCtrl" - "sorting:" - 1 - "by position|by value" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 1 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 + "16/4/2008" + "wbBoxSizerProxy" + "Vertical" + "" "Expand" "Centre" 0 - 5 + 25 1 - 1 - 1 - 1 + 0 + 0 + 0 0 0 0 - "" - "" + "<Any platform>" + + "wxRadioButton: ID_SORT_BY_POSITION" + "dialog-control-document" + "" + "radiobutton" + 0 + 1 + 0 + 0 + "16/4/2008" + "wbRadioButtonProxy" + "ID_SORT_BY_POSITION" + 10010 + "" + "wxRadioButton" + "wxRadioButton" + 1 + 0 + "" + "" + "m_rbSortByPosition" + "Sort Components by &Y Position" + 1 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 1 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "" + "" + + + "wxRadioButton: ID_SORT_BY_VALUE" + "dialog-control-document" + "" + "radiobutton" + 0 + 1 + 0 + 0 + "16/4/2008" + "wbRadioButtonProxy" + "ID_SORT_BY_VALUE" + 10011 + "" + "wxRadioButton" + "wxRadioButton" + 1 + 0 + "" + "" + "rbSortByValue" + "Sort Components by &Value" + 0 + "" + "" + "" + "" + "" + 0 + 1 + "<Any platform>" + "" + "" + "" + "" + "" + "" + "" + 0 + 0 + 0 + 0 + 0 + "" + -1 + -1 + -1 + -1 + "Expand" + "Centre" + 0 + 5 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "" + "" + - "wxBoxSizer V" + "wxBoxSizer H" "dialog-control-document" "" "sizer" @@ -519,8 +838,8 @@ 0 "5/2/2006" "wbBoxSizerProxy" - "Vertical" - "" + "Horizontal" + "sizerDialogButtons" "Centre" "Centre" 0 @@ -534,7 +853,7 @@ 0 "<Any platform>" - "wxButton: ID_ANNOTATE_CMP" + "wxButton: wxID_CANCEL" "dialog-control-document" "" "dialogcontrol" @@ -542,19 +861,20 @@ 1 0 0 - "5/2/2006" + "16/4/2008" "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnAnnotateCmpClick" - "ID_ANNOTATE_CMP" - 10003 + "wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick|||" + "wxID_CANCEL" + 5101 + "" "wxButton" "wxButton" 1 0 "" "" - "" - "&Annotate" + "m_btnClose" + "Close" 1 "" "" @@ -566,7 +886,7 @@ "" "" "" - "C60000" + "" "" 0 1 @@ -600,7 +920,7 @@ "" - "wxButton: ID_DEANNOTATE_CMP" + "wxButton: ID_CLEAR_ANNOTATION_CMP" "dialog-control-document" "" "dialogcontrol" @@ -608,19 +928,20 @@ 1 0 0 - "5/2/2006" + "16/4/2008" "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnDeannotateCmpClick" - "ID_DEANNOTATE_CMP" + "wxEVT_COMMAND_BUTTON_CLICKED|OnClearAnnotationCmpClick|||" + "ID_CLEAR_ANNOTATION_CMP" 10004 + "" "wxButton" "wxButton" 1 0 "" "" - "" - "&Del Annotate" + "m_btnClear" + "Clear Annotation" 0 "" "" @@ -666,7 +987,7 @@ "" - "wxButton: wxID_CANCEL" + "wxButton: wxID_APPLY" "dialog-control-document" "" "dialogcontrol" @@ -676,18 +997,19 @@ 0 "5/2/2006" "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick|||" - "wxID_CANCEL" - 5101 + "wxEVT_COMMAND_BUTTON_CLICKED|OnApplyClick|||" + "wxID_APPLY" + 5102 + "" "wxButton" "wxButton" 1 0 "" "" - "" - "&Cancel" - 0 + "m_btnApply" + "Annotation" + 1 "" "" "" @@ -698,7 +1020,7 @@ "" "" "" - "" + "C60000" "" 0 1 diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 7f4e914e3a8b6fdedfa4a201ee6c9f4b20b3e9bc..ae12078cf0384ec0e6b6895593eefe942b4aaf34 100644 GIT binary patch delta 40665 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

C4Yu{9F@t+E^=jCc157t2__W_S5( zrS|l1=vVXPD9Xd5GaFm+t5=gv4U)5?5u0+7Z%6Ytb*XU^_s(VR!$OZExW1TYp5SLT zKXdq*%g^el_~z{7zfqITJqqL@M}7uHk8ZA9<5QlvjhH@QJ~gD!;rc~>R#PrT-ATstbBya{JiU{i{o~LCvgfCE)MQI` z^7ClGmJ*!`a{sk30)OQ(@e<|x>FY7tK7jn;GSQ!insd+3WUj9Z?JuRx&JgX#(JNa@ z@v{DKOS3#5alc7a^5x1ED-g|eu5O?wKlO;@7oLi!yBAMIy{MXv7*GwvKc`bu`0(V?f()cQw4KkIn%-Dv+SwaRRvREcLB5<`1h*2gWh zydWyMt#Wc%)MQ($sxQ;#Vd`I|@5(&Ah;|oqJr3`{BKTJ{e_N^I`MB!Mm7kZ0=Iv!8 zd!?ey+ne!yaC&=Y@{6eCj&@D>hb)O-`I$|u8T4{}nDcmI%_a&zpKyO+Sl3F_@1kyb z^yrQf1%Bfy7f-z$t=`eD(-N-UL&6;nP|pqnI$K4=M-Zd=4S~l zTXMH=wBxlB#Sd_2KBM?~m!HDXSFdFzZ;0~jY;|QZ`Yy-MkT7x`?oXio^Yr3}zp?xO zey*Z!TWFUTKjPl3uyQ6n@mMYIbUr7`QV_${~XwwD<@a#KL z^7YCEey4?>bE7)1=VbhyFY5n#g=F4n!s}gzo#ocA48;FUst%EgD#ssW?jK#ThPY>Ni( z>Q%8H?fhq8ex9T47$!K7IzLY`&VcBXU6}<|hMFIu zGv)`B`-DW=rZ8=$M4jFkmHa;1{6?$fhUm;26|?s7HwAA}|H)8>Dln~1~D z{j?ZOq_w&CCFT2~e!E+h>_X}Pep)cnrfA*na(TAW&&Fu~?h?tTqOW#0XmJPEM|u8M zn)kr3oezCKOAk|t^Wo6bBa~-Szk>F~>1`Hmdq!98$w}sqrtZlspWxn`)KB4lJMQ^8 zk7sA_+>g1}qIcn^HvBO4<+&D5%^0TXJw;MI$mQf=I zj~qKDYv7$()vg+F^KF9@y+(~5oAv*@(>v?3jbr;ITV0U*!g@{X&)#@vvPvFH7i~Ox zXR^!%8*@LA{61&)oQfG2Y~;V@@z97WbT#<4(fmI*7&drx*3E;*#2t=7@bwk M9-nTIac{-{2QtYdxc~qF delta 40636 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 diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 4fcd9a57b1..e75749d2df 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-04-16 11:26+0100\n" -"PO-Revision-Date: 2008-04-16 11:31+0100\n" +"POT-Creation-Date: 2008-04-16 20:16+0100\n" +"PO-Revision-Date: 2008-04-16 20:16+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -5865,39 +5865,39 @@ msgstr "Tri" msgid "Bad Bus Label: " msgstr "Mauvais label de Bus: " -#: eeschema/annotate.cpp:713 +#: eeschema/annotate.cpp:706 #, c-format msgid "item not annotated: %s%s" msgstr "item non numéroté: %s%s" -#: eeschema/annotate.cpp:718 +#: eeschema/annotate.cpp:711 #, c-format msgid "( unit %d)" msgstr "( Unité %d)" -#: eeschema/annotate.cpp:735 +#: eeschema/annotate.cpp:728 #, c-format msgid "Error item %s%s" msgstr "Erreur item %s%s" -#: eeschema/annotate.cpp:738 +#: eeschema/annotate.cpp:731 #, c-format msgid " unit %d and no more than %d parts" msgstr " unité %d et plus que %d parts" -#: eeschema/annotate.cpp:772 -#: eeschema/annotate.cpp:795 +#: eeschema/annotate.cpp:765 +#: eeschema/annotate.cpp:788 #, c-format msgid "Multiple item %s%s" msgstr "Multipleélément %s%s" -#: eeschema/annotate.cpp:777 -#: eeschema/annotate.cpp:800 +#: eeschema/annotate.cpp:770 +#: eeschema/annotate.cpp:793 #, c-format msgid " (unit %d)" msgstr " ( Unité %d)" -#: eeschema/annotate.cpp:817 +#: eeschema/annotate.cpp:810 #, c-format msgid "Diff values for %s%d%c (%s) and %s%d%c (%s)" msgstr "Valeurs différentes pour %s%d%c (%s) et %s%d%c (%s)" @@ -6877,6 +6877,90 @@ msgstr "Exporter le symbole" msgid "Save Symbol in [%s]" msgstr "Symbole sauvé en [%s]" +#: eeschema/annotate_dialog.cpp:158 +msgid "Scope" +msgstr "Sélection" + +#: eeschema/annotate_dialog.cpp:166 +msgid "Annotate the &entire schematic" +msgstr "Annot&er la schématique complète" + +#: eeschema/annotate_dialog.cpp:170 +msgid "Annotate the current &page only" +msgstr "Annoter la &feuille active uniquement" + +#: eeschema/annotate_dialog.cpp:174 +msgid "&Reset existing annotation" +msgstr "&Supprimer l'annotation existante" + +#: eeschema/annotate_dialog.cpp:179 +msgid "Order" +msgstr "Ordre" + +#: eeschema/annotate_dialog.cpp:187 +msgid "Sort Components by &Y Position" +msgstr "Trier les Composants par &Y Position" + +#: eeschema/annotate_dialog.cpp:191 +msgid "Sort Components by &Value" +msgstr "Trier les Composants par &Valeur" + +#: eeschema/annotate_dialog.cpp:202 +msgid "Clear Annotation" +msgstr "Suppression Annotation" + +#: eeschema/annotate_dialog.cpp:206 +msgid "Annotation" +msgstr "Annotation" + +#: eeschema/annotate_dialog.cpp:225 +msgid "Clear and annotate all of the components " +msgstr "Reinitialisation et réannotation de tous les composants " + +#: eeschema/annotate_dialog.cpp:227 +msgid "Annotate only the unannotated components " +msgstr "Annoter seulement les composants non déjà annotés " + +#: eeschema/annotate_dialog.cpp:229 +msgid "on the entire schematic?" +msgstr "pour la schematique complète?" + +#: eeschema/annotate_dialog.cpp:231 +msgid "on the current sheet?" +msgstr "pourr la feuille courante?" + +#: eeschema/annotate_dialog.cpp:233 +msgid "" +"\n" +"\n" +"This operation will change the current annotation and cannot be undone." +msgstr "" +"\n" +"\n" +"Cette opération changera l'annotation actuelle et ne pourra être annulée." + +#: eeschema/annotate_dialog.cpp:253 +msgid "Clear the existing annotation for " +msgstr "Supprimer l'annotation existante pour " + +#: eeschema/annotate_dialog.cpp:255 +msgid "the entire schematic?" +msgstr "la schématique entière?" + +#: eeschema/annotate_dialog.cpp:257 +msgid "the current sheet?" +msgstr "La feuille courante?" + +#: eeschema/annotate_dialog.cpp:259 +msgid "" +"\n" +"\n" +"This operation will clear the existing annotation and cannot be undone." +msgstr "" +"\n" +"\n" +"Cette opération supprimera l'annotation existante et ne peut être annulée." + #: eeschema/files-io.cpp:112 msgid "Clear Schematic Hierarchy (modified!)?" msgstr "Effacer la hiérarchie schématique (modifiée!)?" @@ -7019,90 +7103,6 @@ msgstr "Emetteur ouv." msgid "Electrical Type:" msgstr "Type électrique:" -#: eeschema/annotate_dialog.cpp:157 -msgid "Scope" -msgstr "Sélection" - -#: eeschema/annotate_dialog.cpp:163 -msgid "Annotate the &entire schematic" -msgstr "Annot&er la schématique complète" - -#: eeschema/annotate_dialog.cpp:167 -msgid "Annotate the current &page only" -msgstr "Annoter la &feuille active uniquement" - -#: eeschema/annotate_dialog.cpp:170 -msgid "&Reset existing annotation" -msgstr "&Supprimer l'annotation existante" - -#: eeschema/annotate_dialog.cpp:188 -msgid "Order" -msgstr "Ordre" - -#: eeschema/annotate_dialog.cpp:194 -msgid "Sort components by p&osition" -msgstr "Trier les composants par p&osition" - -#: eeschema/annotate_dialog.cpp:200 -msgid "Sort components by &value" -msgstr "Trier les Composants par &valeur" - -#: eeschema/annotate_dialog.cpp:215 -msgid "Clear Annotation" -msgstr "Suppression Annotation" - -#: eeschema/annotate_dialog.cpp:216 -msgid "Annotation" -msgstr "Annotation" - -#: eeschema/annotate_dialog.cpp:264 -msgid "Clear the existing annotation for " -msgstr "Supprimer l'annotation existante pour " - -#: eeschema/annotate_dialog.cpp:266 -msgid "the entire schematic?" -msgstr "la schématique entière?" - -#: eeschema/annotate_dialog.cpp:268 -msgid "the current sheet?" -msgstr "La feuille courante?" - -#: eeschema/annotate_dialog.cpp:270 -msgid "" -"\n" -"\n" -"This operation will clear the existing annotation and cannot be undone." -msgstr "" -"\n" -"\n" -"Cette opération supprimera l'annotation existante et ne peut être annulée." - -#: eeschema/annotate_dialog.cpp:286 -msgid "Clear and annotate all of the components " -msgstr "Reinitialisation et réannotation de tous les composants " - -#: eeschema/annotate_dialog.cpp:288 -msgid "Annotate only the unannotated components " -msgstr "Annoter seulement les composants non déjà annotés " - -#: eeschema/annotate_dialog.cpp:290 -msgid "on the entire schematic?" -msgstr "pour la schematique complète?" - -#: eeschema/annotate_dialog.cpp:292 -msgid "on the current sheet?" -msgstr "pourr la feuille courante?" - -#: eeschema/annotate_dialog.cpp:294 -msgid "" -"\n" -"\n" -"This operation will change the current annotation and cannot be undone." -msgstr "" -"\n" -"\n" -"Cette opération changera l'annotation actuelle et ne pourra être annulée." - #: eeschema/dialog_build_BOM.cpp:248 msgid "List items:" msgstr " Liste éléments: " @@ -9999,9 +9999,9 @@ msgstr "Liste du Matériel" msgid "Component properties" msgstr "Propriétés du composant" -#: eeschema/annotate_dialog.h:47 -msgid "Annotate" -msgstr "Annotation" +#: eeschema/annotate_dialog.h:49 +msgid "EESchema Annotation" +msgstr "Annotation des composants" #: eeschema/sheet.h:47 msgid "Sheet properties" @@ -10175,6 +10175,8 @@ msgstr "Créer Fichier SVG" msgid "Print" msgstr "Imprimer" +#~ msgid "Annotate" +#~ msgstr "Annotation" #~ msgid "Zoom Block (Midd butt drag)" #~ msgstr "Zoom Bloc (drag+bouton milieu)" #~ msgid "Win. Zoom (Midd butt drag mouse)"