Move search status messages to Find/Replace dialog.

Fixes: lp:1777699
* https://bugs.launchpad.net/kicad/+bug/1777699

(cherry picked from commit 1ae8a2b)
This commit is contained in:
Jeff Young 2018-07-05 16:50:21 +01:00
parent d016238c82
commit 1bca706115
9 changed files with 1744 additions and 1512 deletions

View File

@ -34,13 +34,13 @@ DEFINE_EVENT_TYPE( EVT_COMMAND_FIND_DRC_MARKER )
DEFINE_EVENT_TYPE( EVT_COMMAND_FIND_COMPONENT_IN_LIB ) DEFINE_EVENT_TYPE( EVT_COMMAND_FIND_COMPONENT_IN_LIB )
DIALOG_SCH_FIND::DIALOG_SCH_FIND( wxWindow* aParent, wxFindReplaceData* aData, DIALOG_SCH_FIND::DIALOG_SCH_FIND( wxWindow* aParent, wxFindReplaceData* aData, wxString* aStatus,
const wxPoint& aPosition, const wxSize& aSize, int aStyle ) : const wxPoint& aPosition, const wxSize& aSize, int aStyle ) :
DIALOG_SCH_FIND_BASE( aParent, wxID_ANY, _( "Find" ), aPosition, aSize, DIALOG_SCH_FIND_BASE( aParent, wxID_ANY, _( "Find" ), aPosition, aSize,
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | aStyle ) wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | aStyle ),
m_findReplaceData( aData ),
m_status( aStatus )
{ {
SetData( aData );
wxASSERT_MSG( m_findReplaceData, wxT( "can't create find dialog without data" ) ); wxASSERT_MSG( m_findReplaceData, wxT( "can't create find dialog without data" ) );
if( aStyle & wxFR_REPLACEDIALOG ) if( aStyle & wxFR_REPLACEDIALOG )
@ -71,8 +71,10 @@ DIALOG_SCH_FIND::DIALOG_SCH_FIND( wxWindow* aParent, wxFindReplaceData* aData,
m_checkWrap->SetValue( flags & FR_SEARCH_WRAP ); m_checkWrap->SetValue( flags & FR_SEARCH_WRAP );
m_checkCurrentSheetOnly->SetValue( flags & FR_CURRENT_SHEET_ONLY ); m_checkCurrentSheetOnly->SetValue( flags & FR_CURRENT_SHEET_ONLY );
m_statusLine->SetLabel( wxEmptyString );
m_buttonFind->SetDefault(); m_buttonFind->SetDefault();
m_comboFind->SetFocus(); SetInitialFocus( m_comboFind );
SetPosition( aPosition ); SetPosition( aPosition );
// Adjust the height of the dialog to prevent controls from being hidden when // Adjust the height of the dialog to prevent controls from being hidden when
@ -263,6 +265,8 @@ void DIALOG_SCH_FIND::SendEvent( const wxEventType& aEventType )
if( event.GetFlags() != flags ) if( event.GetFlags() != flags )
m_findReplaceData->SetFlags( event.GetFlags() ); m_findReplaceData->SetFlags( event.GetFlags() );
m_statusLine->SetLabel( *m_status );
} }

View File

@ -168,18 +168,16 @@ protected:
void SendEvent( const wxEventType& aEventType ); void SendEvent( const wxEventType& aEventType );
wxFindReplaceData *m_findReplaceData; wxFindReplaceData* m_findReplaceData;
wxString* m_status;
DECLARE_NO_COPY_CLASS( DIALOG_SCH_FIND ) DECLARE_NO_COPY_CLASS( DIALOG_SCH_FIND )
public: public:
DIALOG_SCH_FIND( wxWindow* aParent, wxFindReplaceData* aData, DIALOG_SCH_FIND( wxWindow* aParent, wxFindReplaceData* aData, wxString* aStatus,
const wxPoint& aPosition = wxDefaultPosition, const wxPoint& aPosition = wxDefaultPosition,
const wxSize& aSize = wxDefaultSize, int aStyle = 0 ); const wxSize& aSize = wxDefaultSize, int aStyle = 0 );
const wxFindReplaceData *GetData() const { return m_findReplaceData; }
void SetData(wxFindReplaceData *aData) { m_findReplaceData = aData; }
void SetFindEntries( const wxArrayString& aEntries ); void SetFindEntries( const wxArrayString& aEntries );
wxArrayString GetFindEntries() const; wxArrayString GetFindEntries() const;

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 19 2018) // C++ code generated with wxFormBuilder (version Dec 30 2017)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -14,7 +14,10 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
this->SetSizeHints( wxDefaultSize, wxDefaultSize ); this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* mainSizer; wxBoxSizer* mainSizer;
mainSizer = new wxBoxSizer( wxHORIZONTAL ); mainSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* topSizer;
topSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* leftSizer; wxBoxSizer* leftSizer;
leftSizer = new wxBoxSizer( wxVERTICAL ); leftSizer = new wxBoxSizer( wxVERTICAL );
@ -27,24 +30,24 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
m_staticText1 = new wxStaticText( this, wxID_ANY, _("&Search for:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText1 = new wxStaticText( this, wxID_ANY, _("&Search for:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText1->Wrap( -1 ); m_staticText1->Wrap( -1 );
leftGridSizer->Add( m_staticText1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 6 ); leftGridSizer->Add( m_staticText1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 6 );
m_comboFind = new wxComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN|wxTE_PROCESS_ENTER ); m_comboFind = new wxComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN|wxTE_PROCESS_ENTER );
m_comboFind->SetToolTip( _("Text with optional wildcards") ); m_comboFind->SetToolTip( _("Text with optional wildcards") );
m_comboFind->SetMinSize( wxSize( 125,-1 ) ); m_comboFind->SetMinSize( wxSize( 200,-1 ) );
leftGridSizer->Add( m_comboFind, 1, wxEXPAND|wxLEFT|wxRIGHT, 6 ); leftGridSizer->Add( m_comboFind, 0, wxEXPAND, 6 );
m_staticReplace = new wxStaticText( this, wxID_ANY, _("Replace &with:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticReplace = new wxStaticText( this, wxID_ANY, _("Replace &with:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticReplace->Wrap( -1 ); m_staticReplace->Wrap( -1 );
m_staticReplace->Hide(); m_staticReplace->Hide();
leftGridSizer->Add( m_staticReplace, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); leftGridSizer->Add( m_staticReplace, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
m_comboReplace = new wxComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxTE_PROCESS_ENTER ); m_comboReplace = new wxComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxTE_PROCESS_ENTER );
m_comboReplace->Hide(); m_comboReplace->Hide();
leftGridSizer->Add( m_comboReplace, 0, wxALL|wxEXPAND, 5 ); leftGridSizer->Add( m_comboReplace, 0, wxEXPAND, 5 );
m_staticDirection = new wxStaticText( this, wxID_ANY, _("Direction:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticDirection = new wxStaticText( this, wxID_ANY, _("Direction:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticDirection->Wrap( -1 ); m_staticDirection->Wrap( -1 );
@ -69,41 +72,47 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
leftGridSizer->Add( directionSizer, 1, wxEXPAND, 5 ); leftGridSizer->Add( directionSizer, 1, wxEXPAND, 5 );
leftSizer->Add( leftGridSizer, 1, wxALL|wxEXPAND, 6 ); leftSizer->Add( leftGridSizer, 0, wxALL|wxEXPAND, 5 );
wxBoxSizer* checkBoxes;
checkBoxes = new wxBoxSizer( wxVERTICAL );
m_checkWholeWord = new wxCheckBox( this, wxID_ANY, _("Match whole wor&d"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkWholeWord = new wxCheckBox( this, wxID_ANY, _("Match whole wor&d"), wxDefaultPosition, wxDefaultSize, 0 );
m_checkWholeWord->SetValue(true); m_checkWholeWord->SetValue(true);
leftSizer->Add( m_checkWholeWord, 0, wxALL, 6 ); checkBoxes->Add( m_checkWholeWord, 0, wxALL, 3 );
m_checkMatchCase = new wxCheckBox( this, wxID_ANY, _("&Match case"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkMatchCase = new wxCheckBox( this, wxID_ANY, _("&Match case"), wxDefaultPosition, wxDefaultSize, 0 );
leftSizer->Add( m_checkMatchCase, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkMatchCase, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
m_checkWildcardMatch = new wxCheckBox( this, wxID_ANY, _("Search &using simple wildcard matching"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkWildcardMatch = new wxCheckBox( this, wxID_ANY, _("Search &using simple wildcard matching"), wxDefaultPosition, wxDefaultSize, 0 );
leftSizer->Add( m_checkWildcardMatch, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkWildcardMatch, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
m_checkWrap = new wxCheckBox( this, wxID_ANY, _("Wrap around &end of search list"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkWrap = new wxCheckBox( this, wxID_ANY, _("Wrap around &end of search list"), wxDefaultPosition, wxDefaultSize, 0 );
m_checkWrap->SetValue(true); m_checkWrap->SetValue(true);
leftSizer->Add( m_checkWrap, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkWrap, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
m_checkAllFields = new wxCheckBox( this, wxID_ANY, _("Search all com&ponent fields"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkAllFields = new wxCheckBox( this, wxID_ANY, _("Search all com&ponent fields"), wxDefaultPosition, wxDefaultSize, 0 );
leftSizer->Add( m_checkAllFields, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkAllFields, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
m_checkAllPins = new wxCheckBox( this, wxID_ANY, _("Search all pin &names and numbers"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkAllPins = new wxCheckBox( this, wxID_ANY, _("Search all pin &names and numbers"), wxDefaultPosition, wxDefaultSize, 0 );
leftSizer->Add( m_checkAllPins, 0, wxBOTTOM|wxRIGHT|wxLEFT, 6 ); checkBoxes->Add( m_checkAllPins, 0, wxBOTTOM|wxRIGHT|wxLEFT, 3 );
m_checkCurrentSheetOnly = new wxCheckBox( this, wxID_ANY, _("Search the current &sheet only"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkCurrentSheetOnly = new wxCheckBox( this, wxID_ANY, _("Search the current &sheet only"), wxDefaultPosition, wxDefaultSize, 0 );
leftSizer->Add( m_checkCurrentSheetOnly, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkCurrentSheetOnly, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
m_checkReplaceReferences = new wxCheckBox( this, wxID_ANY, _("Replace componen&t reference designators"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkReplaceReferences = new wxCheckBox( this, wxID_ANY, _("Replace componen&t reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
m_checkReplaceReferences->Hide(); m_checkReplaceReferences->Hide();
leftSizer->Add( m_checkReplaceReferences, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkReplaceReferences, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
m_checkNoWarpCursor = new wxCheckBox( this, wxID_ANY, _("D&o not warp cursor to found item"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkNoWarpCursor = new wxCheckBox( this, wxID_ANY, _("D&o not warp cursor to found item"), wxDefaultPosition, wxDefaultSize, 0 );
leftSizer->Add( m_checkNoWarpCursor, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 ); checkBoxes->Add( m_checkNoWarpCursor, 0, wxBOTTOM|wxLEFT|wxRIGHT, 3 );
mainSizer->Add( leftSizer, 1, wxALL|wxEXPAND, 6 ); leftSizer->Add( checkBoxes, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
topSizer->Add( leftSizer, 1, wxEXPAND|wxALL, 5 );
wxBoxSizer* rightSizer; wxBoxSizer* rightSizer;
rightSizer = new wxBoxSizer( wxVERTICAL ); rightSizer = new wxBoxSizer( wxVERTICAL );
@ -126,7 +135,25 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
rightSizer->Add( m_buttonCancel, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND, 6 ); rightSizer->Add( m_buttonCancel, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND, 6 );
mainSizer->Add( rightSizer, 0, wxALL|wxEXPAND, 6 ); topSizer->Add( rightSizer, 0, wxALL|wxEXPAND, 6 );
mainSizer->Add( topSizer, 1, wxEXPAND, 5 );
wxBoxSizer* statusSizer;
statusSizer = new wxBoxSizer( wxVERTICAL );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
statusSizer->Add( m_staticline1, 0, wxEXPAND|wxALL, 3 );
m_statusLine = new wxStaticText( this, wxID_ANY, _("Status..."), wxDefaultPosition, wxDefaultSize, 0 );
m_statusLine->Wrap( -1 );
m_statusLine->SetFont( wxFont( 10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
statusSizer->Add( m_statusLine, 0, wxBOTTOM|wxRIGHT|wxLEFT, 7 );
mainSizer->Add( statusSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
this->SetSizer( mainSizer ); this->SetSizer( mainSizer );

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 19 2018) // C++ code generated with wxFormBuilder (version Dec 30 2017)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -23,6 +23,7 @@
#include <wx/sizer.h> #include <wx/sizer.h>
#include <wx/checkbox.h> #include <wx/checkbox.h>
#include <wx/button.h> #include <wx/button.h>
#include <wx/statline.h>
#include <wx/dialog.h> #include <wx/dialog.h>
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -56,6 +57,8 @@ class DIALOG_SCH_FIND_BASE : public DIALOG_SHIM
wxButton* m_buttonReplace; wxButton* m_buttonReplace;
wxButton* m_buttonReplaceAll; wxButton* m_buttonReplaceAll;
wxButton* m_buttonCancel; wxButton* m_buttonCancel;
wxStaticLine* m_staticline1;
wxStaticText* m_statusLine;
// Virtual event handlers, overide them in your derived class // Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }

View File

@ -438,13 +438,8 @@ void SCH_EDIT_FRAME::updateFindReplaceView( wxFindDialogEvent& aEvent )
wxString msg; wxString msg;
SCH_SHEET_LIST schematic( g_RootSheet ); SCH_SHEET_LIST schematic( g_RootSheet );
SCH_FIND_COLLECTOR_DATA data; SCH_FIND_COLLECTOR_DATA data;
SCH_FIND_REPLACE_DATA searchCriteria;
bool warpCursor = !( aEvent.GetFlags() & FR_NO_WARP_CURSOR ); bool warpCursor = !( aEvent.GetFlags() & FR_NO_WARP_CURSOR );
searchCriteria.SetFlags( aEvent.GetFlags() );
searchCriteria.SetFindString( aEvent.GetFindString() );
searchCriteria.SetReplaceString( aEvent.GetReplaceString() );
if( m_foundItems.GetItem( data ) != NULL ) if( m_foundItems.GetItem( data ) != NULL )
{ {
wxLogTrace( traceFindReplace, wxT( "Found " ) + m_foundItems.GetText( MILLIMETRES ) ); wxLogTrace( traceFindReplace, wxT( "Found " ) + m_foundItems.GetText( MILLIMETRES ) );
@ -494,5 +489,6 @@ void SCH_EDIT_FRAME::updateFindReplaceView( wxFindDialogEvent& aEvent )
msg.Printf( _( "No item found matching %s." ), GetChars( aEvent.GetFindString() ) ); msg.Printf( _( "No item found matching %s." ), GetChars( aEvent.GetFindString() ) );
} }
*m_findReplaceStatus = msg;
SetStatusText( msg ); SetStatusText( msg );
} }

View File

@ -498,14 +498,18 @@ wxString SCH_FIND_COLLECTOR::GetText( EDA_UNITS_T aUnits )
if( data.GetParent() ) if( data.GetParent() )
{ {
return wxString::Format( _( "Child item %s of parent item %s found in sheet %s" ), return wxString::Format( _( "Match %i of %i: %s of %s in sheet %s" ),
m_foundIndex + 1,
GetCount(),
foundItem->GetSelectMenuText( aUnits ), foundItem->GetSelectMenuText( aUnits ),
data.GetParent()->GetSelectMenuText( aUnits ), data.GetParent()->GetSelectMenuText( aUnits ),
data.GetSheetPath() ); data.GetSheetPath() );
} }
else else
{ {
return wxString::Format( _( "Item %s found in sheet %s" ), return wxString::Format( _( "Match %i of %i: %s in sheet %s" ),
m_foundIndex + 1,
GetCount(),
foundItem->GetSelectMenuText( aUnits ), foundItem->GetSelectMenuText( aUnits ),
data.GetSheetPath() ); data.GetSheetPath() );
} }

View File

@ -369,6 +369,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ):
m_hotkeysDescrList = g_Schematic_Hokeys_Descr; m_hotkeysDescrList = g_Schematic_Hokeys_Descr;
m_dlgFindReplace = NULL; m_dlgFindReplace = NULL;
m_findReplaceData = new wxFindReplaceData( wxFR_DOWN ); m_findReplaceData = new wxFindReplaceData( wxFR_DOWN );
m_findReplaceStatus = new wxString( wxEmptyString );
m_undoItem = NULL; m_undoItem = NULL;
m_hasAutoSave = true; m_hasAutoSave = true;
@ -462,11 +463,13 @@ SCH_EDIT_FRAME::~SCH_EDIT_FRAME()
delete m_undoItem; delete m_undoItem;
delete g_RootSheet; delete g_RootSheet;
delete m_findReplaceData; delete m_findReplaceData;
delete m_findReplaceStatus;
m_CurrentSheet = NULL; m_CurrentSheet = NULL;
m_undoItem = NULL; m_undoItem = NULL;
g_RootSheet = NULL; g_RootSheet = NULL;
m_findReplaceData = NULL; m_findReplaceData = NULL;
m_findReplaceStatus = NULL;
} }
@ -974,8 +977,8 @@ void SCH_EDIT_FRAME::OnFindItems( wxCommandEvent& aEvent )
if( aEvent.GetId() == wxID_REPLACE ) if( aEvent.GetId() == wxID_REPLACE )
style = wxFR_REPLACEDIALOG; style = wxFR_REPLACEDIALOG;
m_dlgFindReplace = new DIALOG_SCH_FIND( this, m_findReplaceData, position, m_findDialogSize, m_dlgFindReplace = new DIALOG_SCH_FIND( this, m_findReplaceData, m_findReplaceStatus,
style ); position, m_findDialogSize, style );
m_dlgFindReplace->SetFindEntries( m_findStringHistoryList ); m_dlgFindReplace->SetFindEntries( m_findStringHistoryList );
m_dlgFindReplace->SetReplaceEntries( m_replaceStringHistoryList ); m_dlgFindReplace->SetReplaceEntries( m_replaceStringHistoryList );

View File

@ -124,6 +124,7 @@ private:
PARAM_CFG_ARRAY m_configSettings; PARAM_CFG_ARRAY m_configSettings;
wxPageSetupDialogData m_pageSetupData; wxPageSetupDialogData m_pageSetupData;
wxFindReplaceData* m_findReplaceData; wxFindReplaceData* m_findReplaceData;
wxString* m_findReplaceStatus;
wxPoint m_previewPosition; wxPoint m_previewPosition;
wxSize m_previewSize; wxSize m_previewSize;
wxPoint m_printDialogPosition; wxPoint m_printDialogPosition;