mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-19 18:51:40 +00:00
Search pane: add zoom to fit option in a settings menu button
Includes zoom to selection, and pan to selection (which centres the result but doesn't change the zoom). I'm not sure this is the perfect solution to search pane settings, but it's near to the action, but not taking up too much space, doesn't need to open a modal to mess with it, and has room for more options in future. I haven't made toggling these options into full-blown TOOL_ACTIONs, but they could be if a hotkey to toggle these is desirable - it's an ACTION_MENU, so it should just slot in.. Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16192
This commit is contained in:
parent
c6f7fa9b6e
commit
277b963fac
common
settings
widgets
eeschema/widgets
include
pcbnew/widgets
@ -39,6 +39,7 @@ APP_SETTINGS_BASE::APP_SETTINGS_BASE( const std::string& aFilename, int aSchemaV
|
||||
m_ColorPicker(),
|
||||
m_LibTree(),
|
||||
m_Printing(),
|
||||
m_SearchPane(),
|
||||
m_System(),
|
||||
m_Window(),
|
||||
m_appSettingsSchemaVersion( aSchemaVersion )
|
||||
@ -133,6 +134,10 @@ APP_SETTINGS_BASE::APP_SETTINGS_BASE( const std::string& aFilename, int aSchemaV
|
||||
m_params.emplace_back( new PARAM_LIST<int>( "printing.layers",
|
||||
&m_Printing.layers, {} ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<int>( "search_pane.selection_zoom",
|
||||
reinterpret_cast<int*>( &m_SearchPane.selection_zoom ),
|
||||
static_cast<int>( SEARCH_PANE::SELECTION_ZOOM::PAN ) ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "system.first_run_shown",
|
||||
&m_System.first_run_shown, false ) ); //@todo RFB remove? - not used
|
||||
|
||||
|
@ -17,10 +17,75 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <widgets/search_pane.h>
|
||||
#include <widgets/search_pane_tab.h>
|
||||
#include "widgets/search_pane.h"
|
||||
|
||||
|
||||
#include <tool/action_menu.h>
|
||||
#include <settings/app_settings.h>
|
||||
#include <eda_draw_frame.h>
|
||||
#include <bitmaps.h>
|
||||
#include <kiway.h>
|
||||
#include <widgets/search_pane_tab.h>
|
||||
|
||||
|
||||
#define ID_TOGGLE_ZOOM_TO_SELECTION 14000
|
||||
#define ID_TOGGLE_PAN_TO_SELECTION 14001
|
||||
|
||||
|
||||
class SEARCH_PANE_MENU : public ACTION_MENU
|
||||
{
|
||||
public:
|
||||
SEARCH_PANE_MENU( EDA_DRAW_FRAME& aFrame ) : ACTION_MENU( true, nullptr ), m_frame( aFrame )
|
||||
{
|
||||
Add( _( "Zoom to Selection" ), _( "Toggle zooming to selections in the search pane" ),
|
||||
ID_TOGGLE_ZOOM_TO_SELECTION, BITMAPS::zoom_fit_to_objects, true );
|
||||
Add( _( "Pan to Selection" ), _( "Toggle panning to selections in the search pane" ),
|
||||
ID_TOGGLE_PAN_TO_SELECTION, BITMAPS::zoom_center_on_screen, true );
|
||||
|
||||
updateZoomPanCheckboxes();
|
||||
}
|
||||
|
||||
|
||||
OPT_TOOL_EVENT eventHandler( const wxMenuEvent& aEvent ) override
|
||||
{
|
||||
APP_SETTINGS_BASE::SEARCH_PANE& settings = m_frame.config()->m_SearchPane;
|
||||
const int id = aEvent.GetId();
|
||||
const wxMenuItem* item = FindItem( id );
|
||||
|
||||
switch( id )
|
||||
{
|
||||
case ID_TOGGLE_ZOOM_TO_SELECTION:
|
||||
settings.selection_zoom =
|
||||
item->IsChecked() ? APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::ZOOM
|
||||
: APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::NONE;
|
||||
updateZoomPanCheckboxes();
|
||||
break;
|
||||
case ID_TOGGLE_PAN_TO_SELECTION:
|
||||
settings.selection_zoom =
|
||||
item->IsChecked() ? APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::PAN
|
||||
: APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::NONE;
|
||||
updateZoomPanCheckboxes();
|
||||
break;
|
||||
}
|
||||
return OPT_TOOL_EVENT();
|
||||
}
|
||||
|
||||
private:
|
||||
void updateZoomPanCheckboxes()
|
||||
{
|
||||
APP_SETTINGS_BASE::SEARCH_PANE& settings = m_frame.config()->m_SearchPane;
|
||||
|
||||
wxMenuItem* zoomCb = FindItem( ID_TOGGLE_ZOOM_TO_SELECTION );
|
||||
wxMenuItem* panCb = FindItem( ID_TOGGLE_PAN_TO_SELECTION );
|
||||
|
||||
zoomCb->Check( settings.selection_zoom
|
||||
== APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::ZOOM );
|
||||
panCb->Check( settings.selection_zoom
|
||||
== APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::PAN );
|
||||
}
|
||||
|
||||
EDA_DRAW_FRAME& m_frame;
|
||||
};
|
||||
|
||||
|
||||
SEARCH_PANE::SEARCH_PANE( EDA_DRAW_FRAME* aFrame ) :
|
||||
@ -28,12 +93,23 @@ SEARCH_PANE::SEARCH_PANE( EDA_DRAW_FRAME* aFrame ) :
|
||||
m_frame( aFrame )
|
||||
{
|
||||
m_frame->Bind( EDA_LANG_CHANGED, &SEARCH_PANE::OnLanguageChange, this );
|
||||
|
||||
m_menu = new SEARCH_PANE_MENU( *m_frame );
|
||||
|
||||
m_menuButton->SetBitmap( KiBitmapBundle( BITMAPS::config ) );
|
||||
m_menuButton->Bind( wxEVT_LEFT_DOWN,
|
||||
[&]( wxMouseEvent& event )
|
||||
{
|
||||
PopupMenu( m_menu );
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
SEARCH_PANE::~SEARCH_PANE()
|
||||
{
|
||||
m_frame->Unbind( EDA_LANG_CHANGED, &SEARCH_PANE::OnLanguageChange, this );
|
||||
|
||||
delete m_menu;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -13,12 +13,21 @@ SEARCH_PANE_BASE::SEARCH_PANE_BASE( wxWindow* parent, wxWindowID id, const wxPoi
|
||||
{
|
||||
m_sizerOuter = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxBoxSizer* bSizer2;
|
||||
bSizer2 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_menuButton = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
bSizer2->Add( m_menuButton, 0, wxALL, 5 );
|
||||
|
||||
m_searchCtrl1 = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
#ifndef __WXMAC__
|
||||
m_searchCtrl1->ShowSearchButton( true );
|
||||
#endif
|
||||
m_searchCtrl1->ShowCancelButton( false );
|
||||
m_sizerOuter->Add( m_searchCtrl1, 0, wxEXPAND, 5 );
|
||||
bSizer2->Add( m_searchCtrl1, 1, wxALL, 5 );
|
||||
|
||||
|
||||
m_sizerOuter->Add( bSizer2, 0, wxEXPAND, 5 );
|
||||
|
||||
m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
@ -27,7 +36,6 @@ SEARCH_PANE_BASE::SEARCH_PANE_BASE( wxWindow* parent, wxWindowID id, const wxPoi
|
||||
|
||||
this->SetSizer( m_sizerOuter );
|
||||
this->Layout();
|
||||
m_sizerOuter->Fit( this );
|
||||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_SET_FOCUS, wxFocusEventHandler( SEARCH_PANE_BASE::OnSetFocus ) );
|
||||
|
@ -1,192 +1,282 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<wxFormBuilder_Project>
|
||||
<FileVersion major="1" minor="16" />
|
||||
<object class="Project" expanded="1">
|
||||
<property name="class_decoration">; </property>
|
||||
<property name="code_generation">C++</property>
|
||||
<property name="disconnect_events">1</property>
|
||||
<property name="disconnect_mode">source_name</property>
|
||||
<property name="disconnect_php_events">0</property>
|
||||
<property name="disconnect_python_events">0</property>
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="event_generation">connect</property>
|
||||
<property name="file">search_pane_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="image_path_wrapper_function_name"></property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">SEARCH PANE</property>
|
||||
<property name="namespace"></property>
|
||||
<property name="path">.</property>
|
||||
<property name="precompiled_header"></property>
|
||||
<property name="relative_path">1</property>
|
||||
<property name="skip_lua_events">1</property>
|
||||
<property name="skip_php_events">1</property>
|
||||
<property name="skip_python_events">1</property>
|
||||
<property name="ui_table">UI</property>
|
||||
<property name="use_array_enum">0</property>
|
||||
<property name="use_enum">0</property>
|
||||
<property name="use_microsoft_bom">0</property>
|
||||
<object class="Panel" expanded="1">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
<FileVersion major="1" minor="18"/>
|
||||
<object class="Project" expanded="true">
|
||||
<property name="code_generation">C++</property>
|
||||
<property name="cpp_class_decoration">; </property>
|
||||
<property name="cpp_disconnect_events">1</property>
|
||||
<property name="cpp_event_generation">connect</property>
|
||||
<property name="cpp_help_provider">none</property>
|
||||
<property name="cpp_namespace"></property>
|
||||
<property name="cpp_precompiled_header"></property>
|
||||
<property name="cpp_use_array_enum">0</property>
|
||||
<property name="cpp_use_enum">0</property>
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="file">search_pane_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="lua_skip_events">1</property>
|
||||
<property name="lua_ui_table">UI</property>
|
||||
<property name="name">SEARCH PANE</property>
|
||||
<property name="path">.</property>
|
||||
<property name="php_disconnect_events">0</property>
|
||||
<property name="php_disconnect_mode">source_name</property>
|
||||
<property name="php_skip_events">1</property>
|
||||
<property name="python_disconnect_events">0</property>
|
||||
<property name="python_disconnect_mode">source_name</property>
|
||||
<property name="python_image_path_wrapper_function_name"></property>
|
||||
<property name="python_indent_with_spaces"></property>
|
||||
<property name="python_skip_events">1</property>
|
||||
<property name="relative_path">1</property>
|
||||
<property name="use_microsoft_bom">0</property>
|
||||
<property name="use_native_eol">0</property>
|
||||
<object class="Panel" expanded="true">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
<property name="bg"></property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="event_handler">impl_virtual</property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size">-1,-1</property>
|
||||
<property name="name">SEARCH_PANE_BASE</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">284,110</property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="two_step_creation">0</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||
<event name="OnSetFocus">OnSetFocus</event>
|
||||
<event name="OnSize">OnSize</event>
|
||||
<object class="wxBoxSizer" expanded="true">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">m_sizerOuter</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">protected</property>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxBoxSizer" expanded="true">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizer2</property>
|
||||
<property name="orient">wxHORIZONTAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxBitmapButton" 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="auth_needed">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="bitmap"></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="current"></property>
|
||||
<property name="default">0</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="disabled"></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="focus"></property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">MyButton</property>
|
||||
<property name="margins"></property>
|
||||
<property name="markup">0</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_menuButton</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="position"></property>
|
||||
<property name="pressed"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></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">wxALL</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxSearchCtrl" 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="cancel_button">0</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_searchCtrl1</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="search_button">1</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnText">OnSearchTextEntry</event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">4</property>
|
||||
<property name="flag">wxEXPAND|wxBOTTOM</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxNotebook" 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="bitmapsize"></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="event_handler">impl_virtual</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="minimum_size">-1,-1</property>
|
||||
<property name="name">SEARCH_PANE_BASE</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_notebook</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="size">-1,-1</property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="two_step_creation">0</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnNotebookPageChanged">OnNotebookPageChanged</event>
|
||||
<event name="OnSetFocus">OnSetFocus</event>
|
||||
<event name="OnSize">OnSize</event>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">m_sizerOuter</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">protected</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxSearchCtrl" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="cancel_button">0</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="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_searchCtrl1</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="search_button">1</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnText">OnSearchTextEntry</event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">4</property>
|
||||
<property name="flag">wxEXPAND|wxBOTTOM</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxNotebook" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="bitmapsize"></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="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_notebook</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"></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>
|
||||
<event name="OnNotebookPageChanged">OnNotebookPageChanged</event>
|
||||
<event name="OnSetFocus">OnSetFocus</event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</wxFormBuilder_Project>
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -10,19 +10,23 @@
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/srchctrl.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/srchctrl.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/panel.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class SEARCH_PANE_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -32,6 +36,7 @@ class SEARCH_PANE_BASE : public wxPanel
|
||||
|
||||
protected:
|
||||
wxBoxSizer* m_sizerOuter;
|
||||
wxBitmapButton* m_menuButton;
|
||||
wxSearchCtrl* m_searchCtrl1;
|
||||
wxNotebook* m_notebook;
|
||||
|
||||
@ -44,7 +49,7 @@ class SEARCH_PANE_BASE : public wxPanel
|
||||
|
||||
public:
|
||||
|
||||
SEARCH_PANE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||
SEARCH_PANE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 284,110 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||
|
||||
~SEARCH_PANE_BASE();
|
||||
|
||||
|
@ -124,6 +124,8 @@ void SCH_SEARCH_HANDLER::SelectItems( std::vector<long>& aItemRows )
|
||||
return r.sheetPath == selectedHits.front().sheetPath;
|
||||
} );
|
||||
|
||||
APP_SETTINGS_BASE::SEARCH_PANE& settings = m_frame->config()->m_SearchPane;
|
||||
|
||||
if( allHitsOnSamePage && !selectedHits.empty() )
|
||||
{
|
||||
if( m_frame->GetCurrentSheet() != *selectedHits.front().sheetPath )
|
||||
@ -135,6 +137,18 @@ void SCH_SEARCH_HANDLER::SelectItems( std::vector<long>& aItemRows )
|
||||
if( selectedItems.size() )
|
||||
m_frame->GetToolManager()->RunAction<EDA_ITEMS*>( EE_ACTIONS::addItemsToSel, &selectedItems );
|
||||
|
||||
switch( settings.selection_zoom )
|
||||
{
|
||||
case APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::PAN:
|
||||
m_frame->GetToolManager()->RunAction( ACTIONS::centerSelection );
|
||||
break;
|
||||
case APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::ZOOM:
|
||||
m_frame->GetToolManager()->RunAction( ACTIONS::zoomFitSelection );
|
||||
break;
|
||||
case APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::NONE:
|
||||
break;
|
||||
}
|
||||
|
||||
m_frame->GetCanvas()->Refresh( false );
|
||||
}
|
||||
}
|
||||
|
@ -104,6 +104,18 @@ public:
|
||||
int match_mode;
|
||||
};
|
||||
|
||||
struct SEARCH_PANE
|
||||
{
|
||||
enum class SELECTION_ZOOM
|
||||
{
|
||||
NONE,
|
||||
PAN,
|
||||
ZOOM,
|
||||
};
|
||||
|
||||
SELECTION_ZOOM selection_zoom;
|
||||
};
|
||||
|
||||
struct GRAPHICS
|
||||
{
|
||||
int canvas_type;
|
||||
@ -167,6 +179,8 @@ public:
|
||||
|
||||
PRINTING m_Printing;
|
||||
|
||||
SEARCH_PANE m_SearchPane;
|
||||
|
||||
SYSTEM m_System;
|
||||
|
||||
WINDOW_SETTINGS m_Window;
|
||||
@ -174,6 +188,7 @@ public:
|
||||
/// Active color theme name
|
||||
wxString m_ColorTheme;
|
||||
|
||||
|
||||
///! Local schema version for common app settings
|
||||
int m_appSettingsSchemaVersion;
|
||||
|
||||
|
@ -20,10 +20,14 @@
|
||||
#ifndef SEARCH_PANE_H
|
||||
#define SEARCH_PANE_H
|
||||
|
||||
#include <widgets/search_pane_base.h>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include <widgets/search_pane_base.h>
|
||||
#include <wx/listbase.h>
|
||||
|
||||
|
||||
class ACTION_MENU;
|
||||
class EDA_DRAW_FRAME;
|
||||
class SEARCH_PANE_TAB;
|
||||
|
||||
@ -53,6 +57,13 @@ protected:
|
||||
std::vector<std::tuple<wxString, int, wxListColumnFormat>> m_columns;
|
||||
};
|
||||
|
||||
|
||||
struct SEARCH_SETTINGS
|
||||
{
|
||||
bool m_ZoomToSelection = false;
|
||||
};
|
||||
|
||||
|
||||
class SEARCH_PANE : public SEARCH_PANE_BASE
|
||||
{
|
||||
public:
|
||||
@ -76,6 +87,7 @@ private:
|
||||
std::vector<SEARCH_PANE_TAB*> m_tabs;
|
||||
wxString m_lastQuery;
|
||||
EDA_DRAW_FRAME* m_frame;
|
||||
ACTION_MENU* m_menu;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <pcb_textbox.h>
|
||||
#include <pcb_text.h>
|
||||
#include <pcb_dimension.h>
|
||||
#include <pcbnew_settings.h>
|
||||
#include <ratsnest/ratsnest_data.h>
|
||||
#include <string_utils.h>
|
||||
#include <tool/tool_manager.h>
|
||||
@ -79,6 +80,7 @@ void PCB_SEARCH_HANDLER::Sort( int aCol, bool aAscending, std::vector<long>* aSe
|
||||
|
||||
void PCB_SEARCH_HANDLER::SelectItems( std::vector<long>& aItemRows )
|
||||
{
|
||||
APP_SETTINGS_BASE::SEARCH_PANE& settings = m_frame->config()->m_SearchPane;
|
||||
std::vector<EDA_ITEM*> selectedItems;
|
||||
|
||||
for( long row : aItemRows )
|
||||
@ -90,8 +92,22 @@ void PCB_SEARCH_HANDLER::SelectItems( std::vector<long>& aItemRows )
|
||||
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear );
|
||||
|
||||
if( selectedItems.size() )
|
||||
{
|
||||
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItems, &selectedItems );
|
||||
|
||||
switch( settings.selection_zoom )
|
||||
{
|
||||
case APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::PAN:
|
||||
m_frame->GetToolManager()->RunAction( ACTIONS::centerSelection );
|
||||
break;
|
||||
case APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::ZOOM:
|
||||
m_frame->GetToolManager()->RunAction( ACTIONS::zoomFitSelection );
|
||||
break;
|
||||
case APP_SETTINGS_BASE::SEARCH_PANE::SELECTION_ZOOM::NONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_frame->GetCanvas()->Refresh( false );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user