diff --git a/eeschema/sch_field.cpp b/eeschema/sch_field.cpp index 3cf24b4c58..b90684ede1 100644 --- a/eeschema/sch_field.cpp +++ b/eeschema/sch_field.cpp @@ -36,6 +36,19 @@ * They can be renamed and can appear in reports */ +/* set USE_TEXT_JUSTIFY_INITIAL_BEHAVIOR to 0 to use + * a justification relative to the text itself + * i.e. justification relative to an horizontal text + * or to 1 to keep the initial Eeschema behavior + * The initial behavior is: + * For vertical texts, exchange the horizontal and the vertical justification + * The idea is to keep the justification always left or top for instance, + * no matter the text orientation + * This is a bit tricky when you want to change a text field justification + * when the fiels and the component are both rotated 90.0 degrees + */ +#define USE_TEXT_JUSTIFY_INITIAL_BEHAVIOR 0 + #include "fctsys.h" #include "class_drawpanel.h" #include "base_struct.h" @@ -265,7 +278,29 @@ EDA_RECT SCH_FIELD::GetBoundingBox() const linewidth = Clamp_Text_PenSize( linewidth, m_Size, m_Bold ); // Calculate the text bounding box: - EDA_RECT rect = GetTextBox( -1, linewidth ); + EDA_RECT rect; + + // set USE_TEXT_JUSTIFY_INITIAL_BEHAVIOR to 0 to use + // a justification relative to the text itself + // i.e. justification relative to an horizontal text + // or to 1 to keep the initial behavior +#if (USE_TEXT_JUSTIFY_INITIAL_BEHAVIOR == 1 ) + if( m_Orient == TEXT_ORIENT_VERT ) + { + // For vertical texts, exchange the horizontal and the vertical justification + // The idea is to keep the justification always left or top for instance, + // no matter the text orientation + SCH_FIELD text( *this ); // Make a local copy to swap justifications + // because GetBoundingBox() is const + int tmp = (int)text.m_VJustify; + NEGATE( tmp ); + text.m_VJustify = (EDA_TEXT_VJUSTIFY_T)text.m_HJustify; + text.m_HJustify = (EDA_TEXT_HJUSTIFY_T)tmp; + rect = text.GetTextBox( -1, linewidth ); + } + else +#endif + rect = GetTextBox( -1, linewidth ); // Calculate the bounding box position relative to the component: wxPoint origin = parentComponent->GetPosition(); diff --git a/include/wxBasePcbFrame.h b/include/wxBasePcbFrame.h index 9045cd6f02..8848bd1654 100644 --- a/include/wxBasePcbFrame.h +++ b/include/wxBasePcbFrame.h @@ -233,14 +233,6 @@ public: bool aOverwrite, bool aDisplayDialog ); - /** - * Function Archive_Modules - * Save in the library: - * All new modules (ie modules not found in this lib) (if NewModulesOnly == true) - * all modules (if NewModulesOnly == false) - */ - void Archive_Modules( const wxString& LibName, bool NewModulesOnly ); - MODULE* GetModuleByName(); /** diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index fe54718b26..bbcdd77896 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -784,6 +784,16 @@ public: */ void RecreateCmpFileFromBoard( wxCommandEvent& aEvent ); + /** + * Function ArchiveModulesOnBoard + * Save modules in a library: + * @param aLibName: the full filename of the library to create or modify + * @param aNewModulesOnly: + * true : save modules not already existing in this lib + * false: save all modules + */ + void ArchiveModulesOnBoard( const wxString& aLibName, bool aNewModulesOnly ); + /** * Function RecreateBOMFileFromBoard * Creates a BOM file from the current loaded board diff --git a/pcb_calculator/transline/c_microstrip.cpp b/pcb_calculator/transline/c_microstrip.cpp index 14722b6aa0..d293b8b036 100644 --- a/pcb_calculator/transline/c_microstrip.cpp +++ b/pcb_calculator/transline/c_microstrip.cpp @@ -123,12 +123,6 @@ void C_MICROSTRIP::delta_u_thickness() */ void C_MICROSTRIP::compute_single_line() { - double w_h, ht_h; - double Z0_single, er_eff_single; - - ht_h = ht / h; - w_h = w / h; - if( aux_ms == NULL ) aux_ms = new MICROSTRIP(); @@ -144,9 +138,6 @@ void C_MICROSTRIP::compute_single_line() aux_ms->murC = murC; aux_ms->microstrip_Z0(); aux_ms->dispersion(); - - er_eff_single = aux_ms->er_eff_0; - Z0_single = aux_ms->Z0_0; } diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index 93c1af13b6..18631e7dc4 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -1076,11 +1076,11 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) break; case ID_MENU_ARCHIVE_NEW_MODULES: - Archive_Modules( wxEmptyString, true ); + ArchiveModulesOnBoard( wxEmptyString, true ); break; case ID_MENU_ARCHIVE_ALL_MODULES: - Archive_Modules( wxEmptyString, false ); + ArchiveModulesOnBoard( wxEmptyString, false ); break; default: diff --git a/pcbnew/librairi.cpp b/pcbnew/librairi.cpp index 9f3caf55da..c2ae23b934 100644 --- a/pcbnew/librairi.cpp +++ b/pcbnew/librairi.cpp @@ -348,11 +348,15 @@ void FOOTPRINT_EDIT_FRAME::Delete_Module_In_Library( const wxString& aLibname ) } -void PCB_BASE_FRAME::Archive_Modules( const wxString& LibName, bool NewModulesOnly ) +/* Save modules in a library: + * param aNewModulesOnly: + * true : save modules not already existing in this lib + * false: save all modules + */ +void PCB_EDIT_FRAME::ArchiveModulesOnBoard( const wxString& aLibName, bool aNewModulesOnly ) { - int ii, NbModules = 0; - MODULE* Module; - wxString fileName = LibName, path; + wxString fileName = aLibName; + wxString path; if( GetBoard()->m_Modules == NULL ) { @@ -362,7 +366,7 @@ void PCB_BASE_FRAME::Archive_Modules( const wxString& LibName, bool NewModulesOn path = wxGetApp().ReturnLastVisitedLibraryPath(); - if( LibName.IsEmpty() ) + if( aLibName.IsEmpty() ) { wxFileDialog dlg( this, _( "Library" ), path, wxEmptyString, ModuleFileWildcard, @@ -378,7 +382,7 @@ void PCB_BASE_FRAME::Archive_Modules( const wxString& LibName, bool NewModulesOn wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() ); bool file_exists = wxFileExists( fileName ); - if( !NewModulesOnly && file_exists ) + if( !aNewModulesOnly && file_exists ) { wxString msg; msg.Printf( _( "File %s exists, OK to replace ?" ), GetChars( fileName ) ); @@ -390,7 +394,7 @@ void PCB_BASE_FRAME::Archive_Modules( const wxString& LibName, bool NewModulesOn m_canvas->SetAbortRequest( false ); // Create a new, empty library if no old lib, or if archive all modules - if( !NewModulesOnly || !file_exists ) + if( !aNewModulesOnly || !file_exists ) { FILE* lib_module; @@ -409,26 +413,14 @@ void PCB_BASE_FRAME::Archive_Modules( const wxString& LibName, bool NewModulesOn fclose( lib_module ); } - /* Calculate the number of modules. */ - Module = (MODULE*) GetBoard()->m_Modules; - - for( ; Module != NULL; Module = (MODULE*) Module->Next() ) - NbModules++; - - double step = 100.0 / NbModules; - DisplayActivity( 0, wxEmptyString ); - - Module = (MODULE*) GetBoard()->m_Modules; - - for( ii = 1; Module != NULL; ii++, Module = (MODULE*) Module->Next() ) + MODULE* Module = (MODULE*) GetBoard()->m_Modules; + for( int ii = 1; Module != NULL; ii++, Module = Module->Next() ) { if( Save_Module_In_Library( fileName, Module, - NewModulesOnly ? false : true, + aNewModulesOnly ? false : true, false ) == 0 ) break; - DisplayActivity( (int) ( ii * step ), wxEmptyString ); - /* Check for request to stop backup (ESCAPE key actuated) */ if( m_canvas->GetAbortRequest() ) break; @@ -604,7 +596,8 @@ bool PCB_BASE_FRAME::Save_Module_In_Library( const wxString& aLibName, } /* Write the new footprint ( append it to the list of footprint ) */ - tmp = aModule->GetTimeStamp(); aModule->SetTimeStamp( 0 ); + tmp = aModule->GetTimeStamp(); + aModule->SetTimeStamp( 0 ); aModule->Save( dest ); aModule->SetTimeStamp( tmp );