diff options
author | saurabhb17 | 2020-02-26 16:14:17 +0530 |
---|---|---|
committer | GitHub | 2020-02-26 16:14:17 +0530 |
commit | 003d02608917e7a69d1a98438837e94ccf68352a (patch) | |
tree | 1392c90227aeea231c1d86371131e04c40382918 /common/dialogs/dialog_get_component.cpp | |
parent | 886d9cb772e81d2e5262284bc3082664f084337f (diff) | |
parent | e255d0622297488c1c52755be670733418c994cf (diff) | |
download | KiCad-eSim-003d02608917e7a69d1a98438837e94ccf68352a.tar.gz KiCad-eSim-003d02608917e7a69d1a98438837e94ccf68352a.tar.bz2 KiCad-eSim-003d02608917e7a69d1a98438837e94ccf68352a.zip |
Merge pull request #3 from saurabhb17/master
secondary files
Diffstat (limited to 'common/dialogs/dialog_get_component.cpp')
-rw-r--r-- | common/dialogs/dialog_get_component.cpp | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/common/dialogs/dialog_get_component.cpp b/common/dialogs/dialog_get_component.cpp new file mode 100644 index 0000000..c0516bb --- /dev/null +++ b/common/dialogs/dialog_get_component.cpp @@ -0,0 +1,144 @@ +/*********************************/ +/* dialog_get_component.cpp */ +/*********************************/ + +#include <fctsys.h> +#include <common.h> +#include <macros.h> +#include <draw_frame.h> +#include <dialog_get_component.h> + + +/****************************************************************************/ +/* Show a dialog frame to choose a name from an history list, or a new name */ +/* to select a component or a module */ +/****************************************************************************/ + +static unsigned s_HistoryMaxCount = 8; // Max number of items displayed in history list + + +/* + * Dialog frame to choose a component or a footprint + * This dialog shows an history of last selected items + */ +DIALOG_GET_COMPONENT::DIALOG_GET_COMPONENT( EDA_DRAW_FRAME* parent, + wxArrayString& HistoryList, + const wxString& Title, + bool show_extra_tool ) : + DIALOG_GET_COMPONENT_BASE( parent, -1, Title ) +{ + +#ifdef __WXMAC__ + m_auxToolSelector = false; +#else + m_auxToolSelector = show_extra_tool; +#endif + initDialog( HistoryList ); + + m_textCmpNameCtrl->SetFocus(); + GetSizer()->Fit( this ); + GetSizer()->SetSizeHints( this ); +} + +void DIALOG_GET_COMPONENT::initDialog( wxArrayString& aHistoryList ) +{ + SetFocus(); + m_GetExtraFunction = false; + m_selectionIsKeyword = false; + m_historyList->Append( aHistoryList ); + if( !m_auxToolSelector ) + { + m_buttonBrowse->Show( false ); + m_buttonBrowse->Enable( false ); + } +} + + +void DIALOG_GET_COMPONENT::OnCancel( wxCommandEvent& event ) +{ + m_Text = wxEmptyString; + EndModal( wxID_CANCEL ); +} + +void DIALOG_GET_COMPONENT::Accept( wxCommandEvent& event ) +{ + m_selectionIsKeyword = false; + switch( event.GetId() ) + { + case ID_SEL_BY_LISTBOX: + m_Text = m_historyList->GetStringSelection(); + break; + + case wxID_OK: + m_Text = m_textCmpNameCtrl->GetValue(); + break; + + case ID_ACCEPT_KEYWORD: + m_selectionIsKeyword = true; + m_Text = m_textCmpNameCtrl->GetValue(); + break; + + case ID_LIST_ALL: + m_Text = wxT( "*" ); + break; + } + + m_Text.Trim( false ); // Remove blanks at beginning + m_Text.Trim( true ); // Remove blanks at end + + EndModal( wxID_OK ); +} + + +/* Get the component name by the extra function */ +void DIALOG_GET_COMPONENT::GetExtraSelection( wxCommandEvent& event ) +{ + m_GetExtraFunction = true; + EndModal( wxID_OK ); +} + + +// Return the component name selected by the dialog +wxString DIALOG_GET_COMPONENT::GetComponentName( void ) +{ + return m_Text; +} + + +/* Initialize the default component name default choice +*/ +void DIALOG_GET_COMPONENT::SetComponentName( const wxString& name ) +{ + if( m_textCmpNameCtrl ) + { + m_textCmpNameCtrl->SetValue( name ); + m_textCmpNameCtrl->SetSelection(-1, -1); + } +} + + +/* + * Add the string "aName" to the history list aHistoryList + */ +void AddHistoryComponentName( wxArrayString& aHistoryList, const wxString& aName ) +{ + if( ( aHistoryList.GetCount() > 0 ) && ( aName == aHistoryList[0] ) ) + return; + + /* remove an old identical name if exists */ + for( unsigned ii = 1; ii < aHistoryList.GetCount(); ii++ ) + { + if( aName == aHistoryList[ii] ) + { + aHistoryList.RemoveAt( ii ); + ii--; + } + } + + // Add the new name at the beginning of the history list + aHistoryList.Insert(aName, 0); + + // Remove extra names + while( aHistoryList.GetCount() >= s_HistoryMaxCount ) + aHistoryList.RemoveAt( aHistoryList.GetCount()-1 ); +} |