From 9461f16281167048e8daf2040dfe2ac2a0e48755 Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Fri, 9 Dec 2011 11:37:11 -0500 Subject: [PATCH] Encapsulate SCH_EDIT_FRAME and LIB_EDIT_FRAME classes. --- eeschema/dialogs/dialog_eeschema_config.cpp | 61 ++++++--- eeschema/eelibs_read_libraryfiles.cpp | 6 +- eeschema/eeschema_config.cpp | 28 ++--- eeschema/lib_export.cpp | 6 +- eeschema/lib_pin.cpp | 5 +- eeschema/libeditframe.cpp | 52 ++++---- eeschema/libeditframe.h | 133 ++++++++++---------- eeschema/netlist_control.cpp | 26 ++-- eeschema/schframe.cpp | 10 +- eeschema/tool_lib.cpp | 30 ++--- eeschema/tool_sch.cpp | 2 +- eeschema/viewlib_frame.cpp | 6 +- eeschema/viewlib_frame.h | 2 +- include/wxEeschemaStruct.h | 40 ++++-- 14 files changed, 227 insertions(+), 180 deletions(-) diff --git a/eeschema/dialogs/dialog_eeschema_config.cpp b/eeschema/dialogs/dialog_eeschema_config.cpp index e6d6226157..9cd0ea7dd2 100644 --- a/eeschema/dialogs/dialog_eeschema_config.cpp +++ b/eeschema/dialogs/dialog_eeschema_config.cpp @@ -1,11 +1,30 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog_eeschema_config.cpp -// Purpose: -// Author: jean-pierre Charras -// Created: 17/02/2006 21:14:46 -// Copyright: KiCad Team -// Licence: GPL -///////////////////////////////////////////////////////////////////////////// +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2006 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com + * Copyright (C) 2006-2011 KiCad Developers, see change_log.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/** + * @file dialog_eeschema_config.cpp + */ #include "fctsys.h" #include "appl_wxstruct.h" @@ -50,9 +69,9 @@ void DIALOG_EESCHEMA_CONFIG::Init() m_LibListChanged = false; m_LibPathChanged = false; - m_UserLibDirBufferImg = m_Parent->m_UserLibraryPath; + m_UserLibDirBufferImg = m_Parent->GetUserLibraryPath(); - m_ListLibr->InsertItems( m_Parent->m_ComponentLibFiles, 0 ); + m_ListLibr->InsertItems( m_Parent->GetComponentLibraries(), 0 ); // Load user libs paths: wxStringTokenizer Token( m_UserLibDirBufferImg, wxT( ";\n\r" ) ); @@ -154,7 +173,8 @@ void DIALOG_EESCHEMA_CONFIG::OnCancelClick( wxCommandEvent& event ) { for ( unsigned ii = 0; ii < m_ListLibr->GetCount(); ii++ ) wxGetApp().RemoveLibraryPath( m_listUserPaths->GetString(ii) ); - wxGetApp().InsertLibraryPath( m_Parent->m_UserLibraryPath, 1); + + wxGetApp().InsertLibraryPath( m_Parent->GetUserLibraryPath(), 1); } EndModal( wxID_CANCEL ); @@ -166,15 +186,17 @@ void DIALOG_EESCHEMA_CONFIG::OnOkClick( wxCommandEvent& event ) // Recreate the user lib path if ( m_LibPathChanged ) { - m_Parent->m_UserLibraryPath.Empty(); + wxString path; for ( unsigned ii = 0; ii < m_listUserPaths->GetCount(); ii++ ) { if ( ii > 0 ) - m_Parent->m_UserLibraryPath << wxT( ";" ); + path << wxT( ";" ); - m_Parent->m_UserLibraryPath << m_listUserPaths->GetString( ii ); + path << m_listUserPaths->GetString( ii ); } + + m_Parent->SetUserLibraryPath( path ); } /* Set new active library list if the lib list of if default path list @@ -182,11 +204,13 @@ void DIALOG_EESCHEMA_CONFIG::OnOkClick( wxCommandEvent& event ) */ if( m_LibListChanged || m_LibPathChanged ) { - // Recreate lib list - m_Parent->m_ComponentLibFiles.Clear(); + wxArrayString list; for ( unsigned ii = 0; ii < m_ListLibr->GetCount(); ii ++ ) - m_Parent->m_ComponentLibFiles.Add(m_ListLibr->GetString( ii ) ); + list.Add( m_ListLibr->GetString( ii ) ); + + // Recreate lib list + m_Parent->SetComponentLibraries( list ); // take new list in account m_Parent->LoadLibraries(); @@ -298,6 +322,7 @@ void DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick( wxCommandEvent& event ) if( m_ListLibr->FindString( libfilename, fn.IsCaseSensitive() ) == wxNOT_FOUND ) { m_LibListChanged = TRUE; + if( event.GetId() == ID_ADD_LIB ) m_ListLibr->Append( libfilename ); else @@ -306,7 +331,7 @@ void DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick( wxCommandEvent& event ) else { wxString msg = wxT( "<" ) + libfilename + wxT( "> : " ) + - _( "Library already in use" ); + _( "Library already in use" ); DisplayError( this, msg ); } } diff --git a/eeschema/eelibs_read_libraryfiles.cpp b/eeschema/eelibs_read_libraryfiles.cpp index 5f4bbe0ad8..67362f3255 100644 --- a/eeschema/eelibs_read_libraryfiles.cpp +++ b/eeschema/eelibs_read_libraryfiles.cpp @@ -34,17 +34,17 @@ void SCH_EDIT_FRAME::LoadLibraries( void ) continue; } - if( m_ComponentLibFiles.Index( i->GetName(), false ) == wxNOT_FOUND ) + if( m_componentLibFiles.Index( i->GetName(), false ) == wxNOT_FOUND ) i = CMP_LIBRARY::GetLibraryList().erase( i ); else i++; } /* Load missing libraries. */ - for( ii = 0; ii < m_ComponentLibFiles.GetCount(); ii++ ) + for( ii = 0; ii < m_componentLibFiles.GetCount(); ii++ ) { fn.Clear(); - fn.SetName( m_ComponentLibFiles[ii] ); + fn.SetName( m_componentLibFiles[ii] ); fn.SetExt( CompLibFileExtension ); /* Skip if the file name is not valid.. */ diff --git a/eeschema/eeschema_config.cpp b/eeschema/eeschema_config.cpp index 228c3a250e..492ab900e7 100644 --- a/eeschema/eeschema_config.cpp +++ b/eeschema/eeschema_config.cpp @@ -191,7 +191,7 @@ void SCH_EDIT_FRAME::OnSetOptions( wxCommandEvent& event ) dlg.SetRepeatLabel( g_RepeatDeltaLabel ); dlg.SetAutoSaveInterval( GetAutoSaveInterval() / 60 ); dlg.SetShowGrid( IsGridVisible() ); - dlg.SetShowHiddenPins( m_ShowAllPins ); + dlg.SetShowHiddenPins( m_showAllPins ); dlg.SetEnableAutoPan( DrawPanel->m_AutoPAN_Enable ); dlg.SetEnableHVBusOrientation( g_HVLines ); dlg.SetShowPageLimits( g_ShowPageLimits ); @@ -222,7 +222,7 @@ void SCH_EDIT_FRAME::OnSetOptions( wxCommandEvent& event ) g_RepeatDeltaLabel = dlg.GetRepeatLabel(); SetAutoSaveInterval( dlg.GetAutoSaveInterval() * 60 ); SetGridVisibility( dlg.GetShowGrid() ); - m_ShowAllPins = dlg.GetShowHiddenPins(); + m_showAllPins = dlg.GetShowHiddenPins(); DrawPanel->m_AutoPAN_Enable = dlg.GetEnableAutoPan(); g_HVLines = dlg.GetEnableHVBusOrientation(); g_ShowPageLimits = dlg.GetShowPageLimits(); @@ -258,12 +258,12 @@ PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetProjectFileParameters() return m_projectFileParams; m_projectFileParams.push_back( new PARAM_CFG_FILENAME( wxT( "LibDir" ), - &m_UserLibraryPath ) ); + &m_userLibraryPath ) ); m_projectFileParams.push_back( new PARAM_CFG_LIBNAME_LIST( wxT( "LibName" ), - &m_ComponentLibFiles, + &m_componentLibFiles, GROUPLIB ) ); m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "NetFmt" ), - &m_NetlistFormat, + &m_netListFormat, NET_TYPE_PCBNEW, NET_TYPE_PCBNEW, NET_TYPE_CUSTOM_MAX ) ); @@ -340,37 +340,37 @@ bool SCH_EDIT_FRAME::LoadProjectFile( const wxString& aFileName, bool aForceRere { wxFileName fn; bool IsRead = true; - wxArrayString liblist_tmp = m_ComponentLibFiles; + wxArrayString liblist_tmp = m_componentLibFiles; if( aFileName.IsEmpty() ) fn = g_RootSheet->GetScreen()->GetFileName(); else fn = aFileName; - m_ComponentLibFiles.Clear(); + m_componentLibFiles.Clear(); /* Change the schematic file extension (.sch) to the project file * extension (.pro). */ fn.SetExt( ProjectFileExtension ); - wxGetApp().RemoveLibraryPath( m_UserLibraryPath ); + wxGetApp().RemoveLibraryPath( m_userLibraryPath ); if( !wxGetApp().ReadProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters(), !aForceReread ) ) { - m_ComponentLibFiles = liblist_tmp; + m_componentLibFiles = liblist_tmp; IsRead = false; } /* User library path takes precedent over default library search paths. */ - wxGetApp().InsertLibraryPath( m_UserLibraryPath, 1 ); + wxGetApp().InsertLibraryPath( m_userLibraryPath, 1 ); /* If the list is void, force loading the library "power.lib" that is * the "standard" library for power symbols. */ - if( m_ComponentLibFiles.GetCount() == 0 ) - m_ComponentLibFiles.Add( wxT( "power" ) ); + if( m_componentLibFiles.GetCount() == 0 ) + m_componentLibFiles.Add( wxT( "power" ) ); LoadLibraries(); GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId ); @@ -526,7 +526,7 @@ void SCH_EDIT_FRAME::LoadSettings() m_GridColor = g_LayerDescr.LayerColor[LAYER_GRID]; g_DrawDefaultLineThickness = cfg->Read( DefaultDrawLineWidthEntry,(long) 6 ); - cfg->Read( ShowHiddenPinsEntry, &m_ShowAllPins, false ); + cfg->Read( ShowHiddenPinsEntry, &m_showAllPins, false ); cfg->Read( HorzVertLinesOnlyEntry, &g_HVLines, true ); /* Load print preview window session settings. */ @@ -617,7 +617,7 @@ void SCH_EDIT_FRAME::SaveSettings() wxGetApp().SaveCurrentSetupValues( GetConfigurationSettings() ); cfg->Write( DefaultDrawLineWidthEntry, (long) g_DrawDefaultLineThickness ); - cfg->Write( ShowHiddenPinsEntry, m_ShowAllPins ); + cfg->Write( ShowHiddenPinsEntry, m_showAllPins ); cfg->Write( HorzVertLinesOnlyEntry, g_HVLines ); /* Save print preview window session settings. */ diff --git a/eeschema/lib_export.cpp b/eeschema/lib_export.cpp index 17ecc148ec..5d67356d2a 100644 --- a/eeschema/lib_export.cpp +++ b/eeschema/lib_export.cpp @@ -58,7 +58,7 @@ void LIB_EDIT_FRAME::OnImportPart( wxCommandEvent& event ) m_lastDrawItem = NULL; - wxFileDialog dlg( this, _( "Import Component" ), m_LastLibImportPath, + wxFileDialog dlg( this, _( "Import Component" ), m_lastLibImportPath, wxEmptyString, CompLibFileWildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST ); @@ -86,7 +86,7 @@ void LIB_EDIT_FRAME::OnImportPart( wxCommandEvent& event ) if( LoadOneLibraryPartAux( LibEntry, LibTmp ) ) { fn = dlg.GetPath(); - m_LastLibImportPath = fn.GetPath(); + m_lastLibImportPath = fn.GetPath(); DisplayLibInfos(); GetScreen()->ClearUndoRedoList(); DrawPanel->Refresh(); @@ -143,7 +143,7 @@ void LIB_EDIT_FRAME::OnExportPart( wxCommandEvent& event ) bool success = m_library->Save( formatter ); if( success ) - m_LastLibExportPath = fn.GetPath(); + m_lastLibExportPath = fn.GetPath(); delete m_library; m_library = CurLibTmp; diff --git a/eeschema/lib_pin.cpp b/eeschema/lib_pin.cpp index 1756cd7e15..41be9db0b0 100644 --- a/eeschema/lib_pin.cpp +++ b/eeschema/lib_pin.cpp @@ -812,16 +812,17 @@ void LIB_PIN::drawGraphic( EDA_DRAW_PANEL* aPanel, { // Invisible pins are only drawn on request. // They are drawn in g_InvisibleItemColor. - // in schematic, they are drawn only if m_ShowAllPins is true. + // in schematic, they are drawn only if m_showAllPins is true. // In other windows, they are always drawn because we must see them. if( ! IsVisible() ) { EDA_DRAW_FRAME* frame = NULL; + if( aPanel && aPanel->GetParent() ) frame = (EDA_DRAW_FRAME*)aPanel->GetParent(); if( frame && frame->IsType( SCHEMATIC_FRAME ) && - ! ((SCH_EDIT_FRAME*)frame)->m_ShowAllPins ) + ! ((SCH_EDIT_FRAME*)frame)->GetShowAllPins() ) return; aColor = g_InvisibleItemColor; diff --git a/eeschema/libeditframe.cpp b/eeschema/libeditframe.cpp index ba78c44fa1..ed6e306862 100644 --- a/eeschema/libeditframe.cpp +++ b/eeschema/libeditframe.cpp @@ -195,7 +195,7 @@ LIB_EDIT_FRAME::LIB_EDIT_FRAME( SCH_EDIT_FRAME* aParent, m_FrameName = wxT( "LibeditFrame" ); m_Draw_Axis = true; // true to draw axis - m_ConfigPath = wxT( "LibraryEditor" ); + m_configPath = wxT( "LibraryEditor" ); SetShowDeMorgan( false ); m_drawSpecificConvert = true; m_drawSpecificUnit = false; @@ -291,11 +291,11 @@ void LIB_EDIT_FRAME::LoadSettings() EDA_DRAW_FRAME::LoadSettings(); - wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_ConfigPath ); + wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_configPath ); cfg = wxGetApp().m_EDA_Config; - m_LastLibExportPath = cfg->Read( lastLibExportPathEntry, ::wxGetCwd() ); - m_LastLibImportPath = cfg->Read( lastLibImportPathEntry, ::wxGetCwd() ); + m_lastLibExportPath = cfg->Read( lastLibExportPathEntry, ::wxGetCwd() ); + m_lastLibImportPath = cfg->Read( lastLibImportPathEntry, ::wxGetCwd() ); } @@ -312,11 +312,11 @@ void LIB_EDIT_FRAME::SaveSettings() EDA_DRAW_FRAME::SaveSettings(); - wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_ConfigPath ); + wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_configPath ); cfg = wxGetApp().m_EDA_Config; - cfg->Write( lastLibExportPathEntry, m_LastLibExportPath ); - cfg->Write( lastLibImportPathEntry, m_LastLibImportPath ); + cfg->Write( lastLibExportPathEntry, m_lastLibExportPath ); + cfg->Write( lastLibImportPathEntry, m_lastLibImportPath ); } @@ -402,35 +402,35 @@ double LIB_EDIT_FRAME::BestZoom() void LIB_EDIT_FRAME::UpdateAliasSelectList() { - if( m_SelAliasBox == NULL ) + if( m_aliasSelectBox == NULL ) return; - m_SelAliasBox->Clear(); + m_aliasSelectBox->Clear(); if( m_component == NULL ) return; - m_SelAliasBox->Append( m_component->GetAliasNames() ); - m_SelAliasBox->SetSelection( 0 ); + m_aliasSelectBox->Append( m_component->GetAliasNames() ); + m_aliasSelectBox->SetSelection( 0 ); - int index = m_SelAliasBox->FindString( m_aliasName ); + int index = m_aliasSelectBox->FindString( m_aliasName ); if( index != wxNOT_FOUND ) - m_SelAliasBox->SetSelection( index ); + m_aliasSelectBox->SetSelection( index ); } void LIB_EDIT_FRAME::UpdatePartSelectList() { - if( m_SelpartBox == NULL ) + if( m_partSelectBox == NULL ) return; - if( m_SelpartBox->GetCount() != 0 ) - m_SelpartBox->Clear(); + if( m_partSelectBox->GetCount() != 0 ) + m_partSelectBox->Clear(); if( m_component == NULL || m_component->GetPartCount() <= 1 ) { - m_SelpartBox->Append( wxEmptyString ); + m_partSelectBox->Append( wxEmptyString ); } else { @@ -438,11 +438,11 @@ void LIB_EDIT_FRAME::UpdatePartSelectList() { wxString msg; msg.Printf( _( "Part %c" ), 'A' + i ); - m_SelpartBox->Append( msg ); + m_partSelectBox->Append( msg ); } } - m_SelpartBox->SetSelection( ( m_unit > 0 ) ? m_unit - 1 : 0 ); + m_partSelectBox->SetSelection( ( m_unit > 0 ) ? m_unit - 1 : 0 ); } @@ -510,13 +510,13 @@ void LIB_EDIT_FRAME::OnUpdatePinByPin( wxUpdateUIEvent& event ) void LIB_EDIT_FRAME::OnUpdatePartNumber( wxUpdateUIEvent& event ) { - if( m_SelpartBox == NULL ) + if( m_partSelectBox == NULL ) return; /* Using the typical event.Enable() call doesn't seem to work with wxGTK * so use the pointer to alias combobox to directly enable or disable. */ - m_SelpartBox->Enable( m_component && m_component->GetPartCount() > 1 ); + m_partSelectBox->Enable( m_component && m_component->GetPartCount() > 1 ); } @@ -542,24 +542,24 @@ void LIB_EDIT_FRAME::OnUpdateDeMorganConvert( wxUpdateUIEvent& event ) void LIB_EDIT_FRAME::OnUpdateSelectAlias( wxUpdateUIEvent& event ) { - if( m_SelAliasBox == NULL ) + if( m_aliasSelectBox == NULL ) return; /* Using the typical event.Enable() call doesn't seem to work with wxGTK * so use the pointer to alias combobox to directly enable or disable. */ - m_SelAliasBox->Enable( m_component != NULL && m_component->GetAliasCount() > 1 ); + m_aliasSelectBox->Enable( m_component != NULL && m_component->GetAliasCount() > 1 ); } void LIB_EDIT_FRAME::OnSelectAlias( wxCommandEvent& event ) { - if( m_SelAliasBox == NULL - || ( m_SelAliasBox->GetStringSelection().CmpNoCase( m_aliasName ) == 0) ) + if( m_aliasSelectBox == NULL + || ( m_aliasSelectBox->GetStringSelection().CmpNoCase( m_aliasName ) == 0) ) return; m_lastDrawItem = NULL; - m_aliasName = m_SelAliasBox->GetStringSelection(); + m_aliasName = m_aliasSelectBox->GetStringSelection(); DisplayCmpDoc(); DrawPanel->Refresh(); diff --git a/eeschema/libeditframe.h b/eeschema/libeditframe.h index b7b35c654e..b1336874db 100644 --- a/eeschema/libeditframe.h +++ b/eeschema/libeditframe.h @@ -53,13 +53,74 @@ class LIB_EDIT_FRAME : public EDA_DRAW_FRAME { LIB_COMPONENT* m_tempCopyComponent; ///< Temporary copy of current component during edit. LIB_COLLECTOR m_collectedItems; // Used for hit testing. + wxComboBox* m_partSelectBox; // a Box to select a part to edit (if any) + wxComboBox* m_aliasSelectBox; // a box to select the alias to edit (if any) + + wxString m_configPath; + wxString m_lastLibImportPath; + wxString m_lastLibExportPath; + + /** Convert of the item currently being drawn. */ + bool m_drawSpecificConvert; + + /** + * Specify which component parts the current draw item applies to. + * + * If true, the item being drawn or edited applies only to the selected + * part. Otherwise it applies to all parts in the component. + */ + bool m_drawSpecificUnit; + + /** + * Set to true to not synchronize pins at the same position when editing + * components with multiple parts or multiple body styles. Setting this + * to false allows editing each pin per part or body style individually. + * This requires the user to open each part or body style to make changes + * to the pin at the same location. + */ + bool m_editPinsPerPartOrConvert; + + /** The current draw or edit graphic item fill style. */ + static FILL_T m_drawFillStyle; + + /** Default line width for drawing or editing graphic items. */ + static int m_drawLineWidth; + + /** The current active library. NULL if no active library is selected. */ + static CMP_LIBRARY* m_library; + /** The current component being edited. NULL if no component is selected. */ + static LIB_COMPONENT* m_component; + + static LIB_ITEM* m_lastDrawItem; + static LIB_ITEM* m_drawItem; + static wxString m_aliasName; + + // The unit number to edit and show + static int m_unit; + + // Show the normal shape ( m_convert <= 1 ) or the converted shape + // ( m_convert > 1 ) + static int m_convert; + + // true to force DeMorgan/normal tools selection enabled. + // They are enabled when the loaded component has + // Graphic items for converted shape + // But under some circumstances (New component created) + // these tools must left enable + static bool m_showDeMorgan; + + /// The current text size setting. + static int m_textSize; + + /// Current text orientation setting. + static int m_textOrientation; + + static wxSize m_clientSize; + + friend class DIALOG_LIB_EDIT_TEXT; LIB_ITEM* locateItem( const wxPoint& aPosition, const KICAD_T aFilterList[] ); -public: - wxComboBox* m_SelpartBox; // a Box to select a part to edit (if any) - wxComboBox* m_SelAliasBox; // a box to select the alias to edit (if any) - public: LIB_EDIT_FRAME( SCH_EDIT_FRAME* aParent, const wxString& title, const wxPoint& pos, const wxSize& size, @@ -498,70 +559,6 @@ public: // Automatic placement of pins void RepeatPinItem( wxDC* DC, LIB_PIN* Pin ); -protected: - wxString m_ConfigPath; - wxString m_LastLibImportPath; - wxString m_LastLibExportPath; - - /** Convert of the item currently being drawn. */ - bool m_drawSpecificConvert; - - /** - * Specify which component parts the current draw item applies to. - * - * If true, the item being drawn or edited applies only to the selected - * part. Otherwise it applies to all parts in the component. - */ - bool m_drawSpecificUnit; - - /** - * Set to true to not synchronize pins at the same position when editing - * components with multiple parts or multiple body styles. Setting this - * to false allows editing each pin per part or body style individually. - * This requires the user to open each part or body style to make changes - * to the pin at the same location. - */ - bool m_editPinsPerPartOrConvert; - - /** The current draw or edit graphic item fill style. */ - static FILL_T m_drawFillStyle; - - /** Default line width for drawing or editing graphic items. */ - static int m_drawLineWidth; - - /** The current active library. NULL if no active library is selected. */ - static CMP_LIBRARY* m_library; - /** The current component being edited. NULL if no component is selected. */ - static LIB_COMPONENT* m_component; - - static LIB_ITEM* m_lastDrawItem; - static LIB_ITEM* m_drawItem; - static wxString m_aliasName; - - // The unit number to edit and show - static int m_unit; - - // Show the normal shape ( m_convert <= 1 ) or the converted shape - // ( m_convert > 1 ) - static int m_convert; - - // true to force DeMorgan/normal tools selection enabled. - // They are enabled when the loaded component has - // Graphic items for converted shape - // But under some circumstances (New component created) - // these tools must left enable - static bool m_showDeMorgan; - - /// The current text size setting. - static int m_textSize; - - /// Current text orientation setting. - static int m_textOrientation; - - static wxSize m_clientSize; - - friend class DIALOG_LIB_EDIT_TEXT; - /** * Function CreatePNGorJPEGFile * creates an image (screenshot) of the current component in PNG or JPEG format. diff --git a/eeschema/netlist_control.cpp b/eeschema/netlist_control.cpp index ba26a3ec3b..7516c3f64b 100644 --- a/eeschema/netlist_control.cpp +++ b/eeschema/netlist_control.cpp @@ -193,7 +193,7 @@ NETLIST_DIALOG::NETLIST_DIALOG( SCH_EDIT_FRAME* parent ) : NET_TYPE_PCBNEW, ID_CURRENT_FORMAT_IS_DEFAULT, ID_CREATE_NETLIST, - m_Parent->m_NetlistFormat == NET_TYPE_PCBNEW ); + m_Parent->GetNetListFormat() == NET_TYPE_PCBNEW ); // Add Panel FORMAT ORCADPCB2 m_PanelNetType[PANELORCADPCB2] = @@ -202,7 +202,7 @@ NETLIST_DIALOG::NETLIST_DIALOG( SCH_EDIT_FRAME* parent ) : NET_TYPE_ORCADPCB2, ID_CURRENT_FORMAT_IS_DEFAULT, ID_CREATE_NETLIST, - m_Parent->m_NetlistFormat == NET_TYPE_ORCADPCB2 ); + m_Parent->GetNetListFormat() == NET_TYPE_ORCADPCB2 ); // Add Panel FORMAT CADSTAR m_PanelNetType[PANELCADSTAR] = @@ -211,7 +211,7 @@ NETLIST_DIALOG::NETLIST_DIALOG( SCH_EDIT_FRAME* parent ) : NET_TYPE_CADSTAR, ID_CURRENT_FORMAT_IS_DEFAULT, ID_CREATE_NETLIST, - m_Parent->m_NetlistFormat == NET_TYPE_CADSTAR ); + m_Parent->GetNetListFormat() == NET_TYPE_CADSTAR ); // Add Panel spice InstallPageSpice(); @@ -236,16 +236,16 @@ void NETLIST_DIALOG::InstallPageSpice() wxT( "Spice" ), NET_TYPE_SPICE, 0, 0, - m_Parent->m_NetlistFormat == NET_TYPE_SPICE ); + m_Parent->GetNetListFormat() == NET_TYPE_SPICE ); page->m_IsCurrentFormat = new wxCheckBox( page, ID_CURRENT_FORMAT_IS_DEFAULT, _( "Default format" ) ); - page->m_IsCurrentFormat->SetValue( m_Parent->m_NetlistFormat == NET_TYPE_SPICE ); + page->m_IsCurrentFormat->SetValue( m_Parent->GetNetListFormat() == NET_TYPE_SPICE ); page->m_LeftBoxSizer->Add( page->m_IsCurrentFormat, 1, wxGROW | wxALL, 5 ); page->m_AddSubPrefix = new wxCheckBox( page, ID_ADD_SUBCIRCUIT_PREFIX, _( "Prefix references 'U' and 'IC' with 'X'" ) ); - page->m_AddSubPrefix->SetValue( m_Parent->m_AddSubPrefix ); + page->m_AddSubPrefix->SetValue( m_Parent->GetAddReferencePrefix() ); page->m_LeftBoxSizer->Add( page->m_AddSubPrefix, 0, wxGROW | wxALL, 5 ); @@ -304,12 +304,13 @@ void NETLIST_DIALOG::InstallCustomPages() if( title.IsEmpty() && previoustitle.IsEmpty() ) break; // No more panel to install - selected = m_Parent->m_NetlistFormat == ( NET_TYPE_CUSTOM1 + ii ); + selected = m_Parent->GetNetListFormat() == ( NET_TYPE_CUSTOM1 + ii ); /* Install the panel "Add Plugin" after * the last initialized panel */ previoustitle = title; + if( title.IsEmpty() ) CurrPage = m_PanelNetType[PANELCUSTOMBASE + ii] = @@ -430,7 +431,7 @@ void NETLIST_DIALOG::SelectNetlistType( wxCommandEvent& event ) if( CurrPage == NULL ) return; - m_Parent->m_NetlistFormat = CurrPage->m_IdNetType; + m_Parent->SetNetListFormat( CurrPage->m_IdNetType ); CurrPage->m_IsCurrentFormat->SetValue( true ); } @@ -449,10 +450,7 @@ void NETLIST_DIALOG::EnableSubcircuitPrefix( wxCommandEvent& event ) if( CurrPage == NULL || CurrPage->m_AddSubPrefix == NULL ) return; - if( CurrPage->m_AddSubPrefix->IsChecked() ) - m_Parent->m_AddSubPrefix = true; - else - m_Parent->m_AddSubPrefix = false; + m_Parent->SetAddReferencePrefix( CurrPage->m_AddSubPrefix->IsChecked() ); } void NETLIST_DIALOG::NetlistUpdateOpt() @@ -460,7 +458,7 @@ void NETLIST_DIALOG::NetlistUpdateOpt() int ii; m_Parent->SetSimulatorCommand( m_PanelNetType[PANELSPICE]->m_CommandStringCtrl->GetValue() ); - m_Parent->m_NetlistFormat = NET_TYPE_PCBNEW; + m_Parent->SetNetListFormat( NET_TYPE_PCBNEW ); for( ii = 0; ii < PANELCUSTOMBASE + CUSTOMPANEL_COUNTMAX; ii++ ) { @@ -468,7 +466,7 @@ void NETLIST_DIALOG::NetlistUpdateOpt() break; if( m_PanelNetType[ii]->m_IsCurrentFormat->GetValue() == true ) - m_Parent->m_NetlistFormat = m_PanelNetType[ii]->m_IdNetType; + m_Parent->SetNetListFormat( m_PanelNetType[ii]->m_IdNetType ); } g_OptNetListUseNames = true; // Used for pspice, gnucap diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index acc1ecad25..4b360f1683 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -194,7 +194,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( wxWindow* father, m_ViewlibFrame = NULL; // Frame for browsing component libraries m_DefaultSchematicFileName = NAMELESS_PROJECT; m_DefaultSchematicFileName += wxT( ".sch" ); - m_ShowAllPins = false; + m_showAllPins = false; m_previewPosition = wxDefaultPosition; m_previewSize = wxDefaultSize; m_printMonochrome = true; @@ -592,10 +592,10 @@ void SCH_EDIT_FRAME::OnUpdateBusOrientation( wxUpdateUIEvent& aEvent ) void SCH_EDIT_FRAME::OnUpdateHiddenPins( wxUpdateUIEvent& aEvent ) { - wxString tool_tip = m_ShowAllPins ? _( "Do not show hidden pins" ) : + wxString tool_tip = m_showAllPins ? _( "Do not show hidden pins" ) : _( "Show hidden pins" ); - aEvent.Check( m_ShowAllPins ); + aEvent.Check( m_showAllPins ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_HIDDEN_PINS, tool_tip ); } @@ -622,8 +622,8 @@ void SCH_EDIT_FRAME::OnCreateNetlist( wxCommandEvent& event ) { int i; - if( m_NetlistFormat < NET_TYPE_PCBNEW ) - m_NetlistFormat = NET_TYPE_PCBNEW; + if( m_netListFormat < NET_TYPE_PCBNEW ) + m_netListFormat = NET_TYPE_PCBNEW; do { diff --git a/eeschema/tool_lib.cpp b/eeschema/tool_lib.cpp index 8b75b8b60f..9c1831325e 100644 --- a/eeschema/tool_lib.cpp +++ b/eeschema/tool_lib.cpp @@ -121,7 +121,7 @@ void LIB_EDIT_FRAME::ReCreateHToolbar() m_HToolBar->AddTool( ID_LIBEDIT_SELECT_PART, wxEmptyString, KiBitmap( import_cmp_from_lib_xpm ), - _( "Load component to edit from the current lib" ) ); + _( "Load component to edit from the current library" ) ); m_HToolBar->AddTool( ID_LIBEDIT_NEW_PART_FROM_EXISTING, wxEmptyString, KiBitmap( copycomponent_xpm ), @@ -181,21 +181,21 @@ void LIB_EDIT_FRAME::ReCreateHToolbar() _( "Edit document file" ) ); m_HToolBar->AddSeparator(); - m_SelpartBox = new wxComboBox( m_HToolBar, - ID_LIBEDIT_SELECT_PART_NUMBER, - wxEmptyString, - wxDefaultPosition, - wxSize( LISTBOX_WIDTH, -1 ), - 0, NULL, wxCB_READONLY ); - m_HToolBar->AddControl( m_SelpartBox ); + m_partSelectBox = new wxComboBox( m_HToolBar, + ID_LIBEDIT_SELECT_PART_NUMBER, + wxEmptyString, + wxDefaultPosition, + wxSize( LISTBOX_WIDTH, -1 ), + 0, NULL, wxCB_READONLY ); + m_HToolBar->AddControl( m_partSelectBox ); - m_SelAliasBox = new wxComboBox( m_HToolBar, - ID_LIBEDIT_SELECT_ALIAS, - wxEmptyString, - wxDefaultPosition, - wxSize( LISTBOX_WIDTH, -1 ), - 0, NULL, wxCB_READONLY ); - m_HToolBar->AddControl( m_SelAliasBox ); + m_aliasSelectBox = new wxComboBox( m_HToolBar, + ID_LIBEDIT_SELECT_ALIAS, + wxEmptyString, + wxDefaultPosition, + wxSize( LISTBOX_WIDTH, -1 ), + 0, NULL, wxCB_READONLY ); + m_HToolBar->AddControl( m_aliasSelectBox ); m_HToolBar->AddSeparator(); msg = _( "Edit pins per part or body style (Use carefully!)" ); diff --git a/eeschema/tool_sch.cpp b/eeschema/tool_sch.cpp index 7f3d2b0017..52fe06a97d 100644 --- a/eeschema/tool_sch.cpp +++ b/eeschema/tool_sch.cpp @@ -290,7 +290,7 @@ void SCH_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event ) switch( id ) { case ID_TB_OPTIONS_HIDDEN_PINS: - m_ShowAllPins = m_OptionsToolBar->GetToolState( id ); + m_showAllPins = m_OptionsToolBar->GetToolState( id ); DrawPanel->Refresh( ); break; diff --git a/eeschema/viewlib_frame.cpp b/eeschema/viewlib_frame.cpp index 8ff6b7ab6a..f87753a71d 100644 --- a/eeschema/viewlib_frame.cpp +++ b/eeschema/viewlib_frame.cpp @@ -106,7 +106,7 @@ LIB_VIEW_FRAME::LIB_VIEW_FRAME( wxWindow* father, CMP_LIBRARY* Library, wxSemaph wxAcceleratorTable table( ACCEL_TABLE_CNT, accels ); m_FrameName = wxT( "ViewlibFrame" ); - m_ConfigPath = wxT( "LibraryViewer" ); + m_configPath = wxT( "LibraryViewer" ); // Give an icon wxIcon icon; @@ -513,7 +513,7 @@ void LIB_VIEW_FRAME::LoadSettings( ) EDA_DRAW_FRAME::LoadSettings(); - wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_ConfigPath ); + wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_configPath ); cfg = wxGetApp().m_EDA_Config; m_LibListSize.x = 150; // default width of libs list @@ -537,7 +537,7 @@ void LIB_VIEW_FRAME::SaveSettings() EDA_DRAW_FRAME::SaveSettings(); - wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_ConfigPath ); + wxConfigPathChanger cpc( wxGetApp().m_EDA_Config, m_configPath ); cfg = wxGetApp().m_EDA_Config; if ( m_LibListSize.x ) diff --git a/eeschema/viewlib_frame.h b/eeschema/viewlib_frame.h index 4520df1952..1956e2b12e 100644 --- a/eeschema/viewlib_frame.h +++ b/eeschema/viewlib_frame.h @@ -63,7 +63,7 @@ private: // Flags wxSemaphore* m_Semaphore; // != NULL if the frame must emulate a modal dialog - wxString m_ConfigPath; // subpath for configuration + wxString m_configPath; // subpath for configuration protected: static wxString m_libraryName; diff --git a/include/wxEeschemaStruct.h b/include/wxEeschemaStruct.h index feaade0789..4f5144bea9 100644 --- a/include/wxEeschemaStruct.h +++ b/include/wxEeschemaStruct.h @@ -112,13 +112,6 @@ enum SCH_SEARCH_T { */ class SCH_EDIT_FRAME : public EDA_DRAW_FRAME { -public: - int m_NetlistFormat; - int m_AddSubPrefix; - bool m_ShowAllPins; - wxString m_UserLibraryPath; - wxArrayString m_ComponentLibFiles; - private: SCH_SHEET_PATH* m_CurrentSheet; ///< which sheet we are presently working on. LIB_VIEW_FRAME* m_ViewlibFrame; @@ -154,6 +147,19 @@ private: /// An index to the last find item in the found items list #m_foundItems. int m_foundItemIndex; + /// Flag to indicate show hidden pins. + bool m_showAllPins; + + /// The format to use when generating a net list. + int m_netListFormat; + + /// Add X prefix to componen referencess when generating spice net lists. + bool m_addReferencPrefix; + + wxString m_userLibraryPath; + + wxArrayString m_componentLibFiles; + static int m_lastSheetPinType; ///< Last sheet pin type. static wxSize m_lastSheetPinTextSize; ///< Last sheet pin text size. static wxPoint m_lastSheetPinPosition; ///< Last sheet pin position. @@ -190,6 +196,26 @@ public: void SetLibraryViewerWindow( LIB_VIEW_FRAME* aFrame ) { m_ViewlibFrame = aFrame; } + bool GetShowAllPins() const { return m_showAllPins; } + + void SetShowAllPins( bool aEnable ) { m_showAllPins = aEnable; } + + int GetNetListFormat() const { return m_netListFormat; } + + void SetNetListFormat( int aFormat ) { m_netListFormat = aFormat; } + + bool GetAddReferencePrefix() const { return m_addReferencPrefix; } + + void SetAddReferencePrefix( bool aEnable ) { m_addReferencPrefix = aEnable; } + + wxString GetUserLibraryPath() const { return m_userLibraryPath; } + + void SetUserLibraryPath( const wxString& aPath ) { m_userLibraryPath = aPath; } + + const wxArrayString& GetComponentLibraries() const { return m_componentLibFiles; } + + void SetComponentLibraries( const wxArrayString& aList ) { m_componentLibFiles = aList; } + void Process_Special_Functions( wxCommandEvent& event ); void OnColorConfig( wxCommandEvent& aEvent ); void Process_Config( wxCommandEvent& event );