Search Panel hint in Find Dialogs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19722
This commit is contained in:
Jeff Young 2025-01-23 13:12:26 +00:00
parent 3b3fd95430
commit 97a0ec504b
15 changed files with 327 additions and 20 deletions

View File

@ -63,6 +63,12 @@ DIALOG_SCH_FIND::DIALOG_SCH_FIND( SCH_EDIT_FRAME* aParent, SCH_SEARCH_DATA* aDat
m_checkCurrentSheetOnly->Enable( !m_findReplaceData->searchSelectedOnly ); m_checkCurrentSheetOnly->Enable( !m_findReplaceData->searchSelectedOnly );
m_checkSelectedOnly->SetValue( m_findReplaceData->searchSelectedOnly ); m_checkSelectedOnly->SetValue( m_findReplaceData->searchSelectedOnly );
if( int hotkey = ACTIONS::showSearch.GetHotKey() )
{
wxString hotkeyHint = wxString::Format( wxT( " (%s)" ), KeyNameFromKeyCode( hotkey ) );
m_searchPanelLink->SetLabel( m_searchPanelLink->GetLabel() + hotkeyHint );
}
m_buttonFind->SetDefault(); m_buttonFind->SetDefault();
SetInitialFocus( m_comboFind ); SetInitialFocus( m_comboFind );
@ -83,14 +89,11 @@ DIALOG_SCH_FIND::DIALOG_SCH_FIND( SCH_EDIT_FRAME* aParent, SCH_SEARCH_DATA* aDat
SetSize( size ); SetSize( size );
GetSizer()->Fit( this ); // Needed on Ubuntu/Unity to display the dialog GetSizer()->Fit( this ); // Needed on Ubuntu/Unity to display the dialog
Connect( wxEVT_CHAR, wxKeyEventHandler( DIALOG_SCH_FIND::OnChar ), nullptr, this );
} }
DIALOG_SCH_FIND::~DIALOG_SCH_FIND() DIALOG_SCH_FIND::~DIALOG_SCH_FIND()
{ {
Disconnect( wxEVT_CHAR, wxKeyEventHandler( DIALOG_SCH_FIND::OnChar ), nullptr, this );
} }
@ -118,6 +121,26 @@ void DIALOG_SCH_FIND::OnCancel( wxCommandEvent& aEvent )
} }
void DIALOG_SCH_FIND::onShowSearchPanel( wxHyperlinkEvent& event )
{
if( m_frame->IsSearchPaneShown() )
{
EndModal( wxID_CANCEL );
CallAfter(
[]()
{
if( wxWindow* frame = wxWindow::FindWindowByName( SCH_EDIT_FRAME_NAME ) )
static_cast<SCH_EDIT_FRAME*>( frame )->FocusSearch();
} );
}
else
{
m_frame->GetToolManager()->RunAction( ACTIONS::showSearch );
}
}
void DIALOG_SCH_FIND::OnUpdateReplaceUI( wxUpdateUIEvent& aEvent ) void DIALOG_SCH_FIND::OnUpdateReplaceUI( wxUpdateUIEvent& aEvent )
{ {
aEvent.Enable( HasFlag( wxFR_REPLACEDIALOG ) && !m_comboFind->GetValue().empty() aEvent.Enable( HasFlag( wxFR_REPLACEDIALOG ) && !m_comboFind->GetValue().empty()
@ -131,16 +154,6 @@ void DIALOG_SCH_FIND::OnUpdateReplaceAllUI( wxUpdateUIEvent& aEvent )
} }
void DIALOG_SCH_FIND::OnChar( wxKeyEvent& aEvent )
{
if( aEvent.GetKeyCode() == WXK_RETURN || aEvent.GetKeyCode() == WXK_NUMPAD_ENTER )
{
wxCommandEvent dummyCommand;
OnFind( dummyCommand );
}
}
void DIALOG_SCH_FIND::OnSearchForText( wxCommandEvent& aEvent ) void DIALOG_SCH_FIND::OnSearchForText( wxCommandEvent& aEvent )
{ {
m_findReplaceData->findString = m_comboFind->GetValue(); m_findReplaceData->findString = m_comboFind->GetValue();

View File

@ -62,13 +62,14 @@ protected:
void OnUpdateReplaceUI( wxUpdateUIEvent& aEvent ) override; void OnUpdateReplaceUI( wxUpdateUIEvent& aEvent ) override;
void OnUpdateReplaceAllUI( wxUpdateUIEvent& aEvent ) override; void OnUpdateReplaceAllUI( wxUpdateUIEvent& aEvent ) override;
void OnIdle( wxIdleEvent& event ) override; void OnIdle( wxIdleEvent& event ) override;
void OnChar( wxKeyEvent& aEvent );
void OnFind( wxCommandEvent& aEvent ) override; void OnFind( wxCommandEvent& aEvent ) override;
void OnReplace( wxCommandEvent& aEvent ) override; void OnReplace( wxCommandEvent& aEvent ) override;
void onShowSearchPanel( wxHyperlinkEvent& event ) override;
// Rebuild the search flags from dialog settings // Rebuild the search flags from dialog settings
void updateFlags(); void updateFlags();
protected:
SCH_EDIT_FRAME* m_frame; SCH_EDIT_FRAME* m_frame;
SCH_FIND_REPLACE_TOOL* m_findReplaceTool; SCH_FIND_REPLACE_TOOL* m_findReplaceTool;
SCH_SEARCH_DATA* m_findReplaceData; SCH_SEARCH_DATA* m_findReplaceData;

View File

@ -140,6 +140,18 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
mainSizer->Add( topSizer, 1, wxEXPAND, 5 ); mainSizer->Add( topSizer, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxVERTICAL );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizer6->Add( m_staticline1, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
m_searchPanelLink = new wxHyperlinkCtrl( this, wxID_ANY, _("Show search panel"), wxT("http://www.wxformbuilder.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
bSizer6->Add( m_searchPanelLink, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_RIGHT, 5 );
mainSizer->Add( bSizer6, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
this->SetSizer( mainSizer ); this->SetSizer( mainSizer );
this->Layout(); this->Layout();
@ -171,6 +183,7 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
m_buttonReplaceAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnReplace ), NULL, this ); m_buttonReplaceAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnReplace ), NULL, this );
m_buttonReplaceAll->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SCH_FIND_BASE::OnUpdateReplaceAllUI ), NULL, this ); m_buttonReplaceAll->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SCH_FIND_BASE::OnUpdateReplaceAllUI ), NULL, this );
m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnCancel ), NULL, this ); m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnCancel ), NULL, this );
m_searchPanelLink->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_SCH_FIND_BASE::onShowSearchPanel ), NULL, this );
} }
DIALOG_SCH_FIND_BASE::~DIALOG_SCH_FIND_BASE() DIALOG_SCH_FIND_BASE::~DIALOG_SCH_FIND_BASE()
@ -199,5 +212,6 @@ DIALOG_SCH_FIND_BASE::~DIALOG_SCH_FIND_BASE()
m_buttonReplaceAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnReplace ), NULL, this ); m_buttonReplaceAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnReplace ), NULL, this );
m_buttonReplaceAll->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SCH_FIND_BASE::OnUpdateReplaceAllUI ), NULL, this ); m_buttonReplaceAll->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SCH_FIND_BASE::OnUpdateReplaceAllUI ), NULL, this );
m_buttonCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnCancel ), NULL, this ); m_buttonCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_FIND_BASE::OnCancel ), NULL, this );
m_searchPanelLink->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_SCH_FIND_BASE::onShowSearchPanel ), NULL, this );
} }

View File

@ -1454,6 +1454,141 @@
</object> </object>
</object> </object>
</object> </object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizer6</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP|wxBOTTOM</property>
<property name="proportion">0</property>
<object class="wxStaticLine" expanded="true">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticline1</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxLI_HORIZONTAL</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_RIGHT</property>
<property name="proportion">0</property>
<object class="wxHyperlinkCtrl" expanded="true">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="hover_color"></property>
<property name="id">wxID_ANY</property>
<property name="label">Show search panel</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_searchPanelLink</property>
<property name="normal_color"></property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxHL_DEFAULT_STYLE</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="url">http://www.wxformbuilder.org</property>
<property name="visited_color"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnHyperlink">onShowSearchPanel</event>
</object>
</object>
</object>
</object>
</object> </object>
</object> </object>
</object> </object>

View File

@ -26,6 +26,8 @@
#include <wx/bitmap.h> #include <wx/bitmap.h>
#include <wx/image.h> #include <wx/image.h>
#include <wx/icon.h> #include <wx/icon.h>
#include <wx/statline.h>
#include <wx/hyperlink.h>
#include <wx/dialog.h> #include <wx/dialog.h>
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -57,6 +59,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;
wxHyperlinkCtrl* m_searchPanelLink;
// Virtual event handlers, override them in your derived class // Virtual event handlers, override them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
@ -74,6 +78,7 @@ class DIALOG_SCH_FIND_BASE : public DIALOG_SHIM
virtual void OnUpdateReplaceUI( wxUpdateUIEvent& event ) { event.Skip(); } virtual void OnUpdateReplaceUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnUpdateReplaceAllUI( wxUpdateUIEvent& event ) { event.Skip(); } virtual void OnUpdateReplaceAllUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); }
virtual void onShowSearchPanel( wxHyperlinkEvent& event ) { event.Skip(); }
public: public:

View File

@ -1164,6 +1164,12 @@ void SCH_EDIT_FRAME::doCloseWindow()
} }
void SCH_EDIT_FRAME::FocusSearch()
{
m_searchPane->FocusSearch();
}
SEVERITY SCH_EDIT_FRAME::GetSeverity( int aErrorCode ) const SEVERITY SCH_EDIT_FRAME::GetSeverity( int aErrorCode ) const
{ {
return Schematic().ErcSettings().GetSeverity( aErrorCode ); return Schematic().ErcSettings().GetSeverity( aErrorCode );

View File

@ -930,6 +930,10 @@ public:
*/ */
static const wxString SearchPaneName() { return wxT( "Search" ); } static const wxString SearchPaneName() { return wxT( "Search" ); }
bool IsSearchPaneShown() { return m_auimgr.GetPane( SearchPaneName() ).IsShown(); }
void FocusSearch();
/** /**
* Add \a aListener to post #EDA_EVT_SCHEMATIC_CHANGED command events to. * Add \a aListener to post #EDA_EVT_SCHEMATIC_CHANGED command events to.
* *

View File

@ -31,6 +31,7 @@
#include <zone.h> #include <zone.h>
#include <dialog_find.h> #include <dialog_find.h>
#include <string_utils.h> #include <string_utils.h>
#include <hotkeys_basic.h>
#include <string> #include <string>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tools/pcb_actions.h> #include <tools/pcb_actions.h>
@ -51,10 +52,10 @@ bool FindIncludeMarkers = true;
bool FindIncludeNets = true; bool FindIncludeNets = true;
DIALOG_FIND::DIALOG_FIND( PCB_BASE_FRAME *aFrame ) : DIALOG_FIND::DIALOG_FIND( PCB_EDIT_FRAME *aFrame ) :
DIALOG_FIND_BASE( aFrame, wxID_ANY, _( "Find" ) ) DIALOG_FIND_BASE( aFrame, wxID_ANY, _( "Find" ) ),
m_frame( aFrame )
{ {
m_frame = aFrame;
GetSizer()->SetSizeHints( this ); GetSizer()->SetSizeHints( this );
m_searchCombo->Append( m_frame->GetFindHistoryList() ); m_searchCombo->Append( m_frame->GetFindHistoryList() );
@ -88,6 +89,12 @@ DIALOG_FIND::DIALOG_FIND( PCB_BASE_FRAME *aFrame ) :
m_hitList.clear(); m_hitList.clear();
m_it = m_hitList.begin(); m_it = m_hitList.begin();
if( int hotkey = ACTIONS::showSearch.GetHotKey() )
{
wxString hotkeyHint = wxString::Format( wxT( " (%s)" ), KeyNameFromKeyCode( hotkey ) );
m_searchPanelLink->SetLabel( m_searchPanelLink->GetLabel() + hotkeyHint );
}
m_findNext->SetDefault(); m_findNext->SetDefault();
SetInitialFocus( m_searchCombo ); SetInitialFocus( m_searchCombo );
@ -130,6 +137,26 @@ void DIALOG_FIND::onSearchAgainClick( wxCommandEvent& aEvent )
} }
void DIALOG_FIND::onShowSearchPanel( wxHyperlinkEvent& event )
{
if( m_frame->IsSearchPaneShown() )
{
EndModal( wxID_CANCEL );
CallAfter(
[]()
{
if( wxWindow* frame = wxWindow::FindWindowByName( PCB_EDIT_FRAME_NAME ) )
static_cast<PCB_EDIT_FRAME*>( frame )->FocusSearch();
} );
}
else
{
m_frame->GetToolManager()->RunAction( ACTIONS::showSearch );
}
}
void DIALOG_FIND::search( bool aDirection ) void DIALOG_FIND::search( bool aDirection )
{ {
PCB_SCREEN* screen = m_frame->GetScreen(); PCB_SCREEN* screen = m_frame->GetScreen();

View File

@ -40,7 +40,7 @@ using namespace std;
class DIALOG_FIND : public DIALOG_FIND_BASE class DIALOG_FIND : public DIALOG_FIND_BASE
{ {
public: public:
DIALOG_FIND( PCB_BASE_FRAME* aParent ); DIALOG_FIND( PCB_EDIT_FRAME* aParent );
void Preload( const wxString& aFindString ); void Preload( const wxString& aFindString );
@ -87,9 +87,12 @@ private:
void onFindNextClick( wxCommandEvent& event ) override; void onFindNextClick( wxCommandEvent& event ) override;
void onFindPreviousClick( wxCommandEvent& event ) override; void onFindPreviousClick( wxCommandEvent& event ) override;
void onSearchAgainClick( wxCommandEvent& event ) override; void onSearchAgainClick( wxCommandEvent& event ) override;
void onShowSearchPanel( wxHyperlinkEvent& event ) override;
void search( bool direction ); void search( bool direction );
PCB_BASE_FRAME* m_frame; private:
PCB_EDIT_FRAME* m_frame;
std::deque<BOARD_ITEM*> m_hitList; std::deque<BOARD_ITEM*> m_hitList;
std::deque<BOARD_ITEM*>::iterator m_it; std::deque<BOARD_ITEM*>::iterator m_it;
bool m_upToDate; bool m_upToDate;

View File

@ -120,6 +120,12 @@ DIALOG_FIND_BASE::DIALOG_FIND_BASE( wxWindow* parent, wxWindowID id, const wxStr
sizerStatus->Add( m_status, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); sizerStatus->Add( m_status, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
sizerStatus->Add( 0, 0, 1, wxEXPAND, 5 );
m_searchPanelLink = new wxHyperlinkCtrl( this, wxID_ANY, _("Show search panel"), wxT("http://www.wxformbuilder.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
sizerStatus->Add( m_searchPanelLink, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizer10->Add( sizerStatus, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); bSizer10->Add( sizerStatus, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
@ -136,6 +142,7 @@ DIALOG_FIND_BASE::DIALOG_FIND_BASE( wxWindow* parent, wxWindowID id, const wxStr
m_findPrevious->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onFindPreviousClick ), NULL, this ); m_findPrevious->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onFindPreviousClick ), NULL, this );
m_searchAgain->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onSearchAgainClick ), NULL, this ); m_searchAgain->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onSearchAgainClick ), NULL, this );
m_closeButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::OnCloseButtonClick ), NULL, this ); m_closeButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::OnCloseButtonClick ), NULL, this );
m_searchPanelLink->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_FIND_BASE::onShowSearchPanel ), NULL, this );
} }
DIALOG_FIND_BASE::~DIALOG_FIND_BASE() DIALOG_FIND_BASE::~DIALOG_FIND_BASE()
@ -147,5 +154,6 @@ DIALOG_FIND_BASE::~DIALOG_FIND_BASE()
m_findPrevious->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onFindPreviousClick ), NULL, this ); m_findPrevious->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onFindPreviousClick ), NULL, this );
m_searchAgain->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onSearchAgainClick ), NULL, this ); m_searchAgain->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::onSearchAgainClick ), NULL, this );
m_closeButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::OnCloseButtonClick ), NULL, this ); m_closeButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIND_BASE::OnCloseButtonClick ), NULL, this );
m_searchPanelLink->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_FIND_BASE::onShowSearchPanel ), NULL, this );
} }

View File

@ -1275,6 +1275,81 @@
<property name="wrap">-1</property> <property name="wrap">-1</property>
</object> </object>
</object> </object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="true">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxHyperlinkCtrl" expanded="true">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="hover_color"></property>
<property name="id">wxID_ANY</property>
<property name="label">Show search panel</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_searchPanelLink</property>
<property name="normal_color"></property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxHL_DEFAULT_STYLE</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="url">http://www.wxformbuilder.org</property>
<property name="visited_color"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnHyperlink">onShowSearchPanel</event>
</object>
</object>
</object> </object>
</object> </object>
</object> </object>

View File

@ -25,6 +25,7 @@
#include <wx/image.h> #include <wx/image.h>
#include <wx/icon.h> #include <wx/icon.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/hyperlink.h>
#include <wx/dialog.h> #include <wx/dialog.h>
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -53,6 +54,7 @@ class DIALOG_FIND_BASE : public DIALOG_SHIM
wxButton* m_searchAgain; wxButton* m_searchAgain;
wxButton* m_closeButton; wxButton* m_closeButton;
wxStaticText* m_status; wxStaticText* m_status;
wxHyperlinkCtrl* m_searchPanelLink;
// Virtual event handlers, override them in your derived class // Virtual event handlers, override them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
@ -61,6 +63,7 @@ class DIALOG_FIND_BASE : public DIALOG_SHIM
virtual void onFindPreviousClick( wxCommandEvent& event ) { event.Skip(); } virtual void onFindPreviousClick( wxCommandEvent& event ) { event.Skip(); }
virtual void onSearchAgainClick( wxCommandEvent& event ) { event.Skip(); } virtual void onSearchAgainClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnCloseButtonClick( wxCommandEvent& event ) { event.Skip(); } virtual void OnCloseButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void onShowSearchPanel( wxHyperlinkEvent& event ) { event.Skip(); }
public: public:

View File

@ -1419,6 +1419,12 @@ void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage )
} }
void PCB_EDIT_FRAME::FocusSearch()
{
m_searchPane->FocusSearch();
}
void PCB_EDIT_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg ) void PCB_EDIT_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{ {
PCB_BASE_FRAME::LoadSettings( aCfg ); PCB_BASE_FRAME::LoadSettings( aCfg );

View File

@ -314,6 +314,9 @@ public:
void ToggleSearch(); void ToggleSearch();
bool IsSearchPaneShown() { return m_auimgr.GetPane( SearchPaneName() ).IsShown(); }
void FocusSearch();
/** /**
* Create an ASCII footprint position file. * Create an ASCII footprint position file.
* *

View File

@ -42,7 +42,7 @@
FP_LIB_TABLE GFootprintTable; FP_LIB_TABLE GFootprintTable;
DIALOG_FIND::DIALOG_FIND( PCB_BASE_FRAME* aParent ) : DIALOG_FIND::DIALOG_FIND( PCB_EDIT_FRAME* aParent ) :
DIALOG_FIND_BASE( aParent ) DIALOG_FIND_BASE( aParent )
{ {
// these members are initialized to avoid warnings about non initialized vars // these members are initialized to avoid warnings about non initialized vars
@ -68,6 +68,10 @@ void DIALOG_FIND::onTextEnter( wxCommandEvent& event )
{ {
} }
void DIALOG_FIND::onShowSearchPanel( wxHyperlinkEvent& event )
{
}
void DIALOG_FIND::OnCloseButtonClick( wxCommandEvent& aEvent ) void DIALOG_FIND::OnCloseButtonClick( wxCommandEvent& aEvent )
{ {
} }