← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH 6/7] Eeschema: Field editor closes on Esc+Shift.

 

This is why the development branch has a warning dialog to ask you if
you want to discard all changes so this issue is mitigated.  This will
be available in the stable 5.1 release.

On 1/16/2019 1:18 PM, Константин Барановский wrote:
> I agree that Shift+Esc isn't intuitive but in other way casual dialog
> closing on Esc (that often happens in my case) may be annoying,
> especially in large projects where you may need to fill a lot of fields.
> Exactly why I decide to use shortcut Shift+Esc.
> 
> ср, 16 янв. 2019 г. в 19:19, José Ignacio <jose.cyborg@xxxxxxxxx
> <mailto:jose.cyborg@xxxxxxxxx>>:
> 
>     Double escape can work if there is some sort of visual feedback.
>     Luckily now the dialog will ask before exiting with unsaved changes,
>     that didn't use to be the case, so exiting with escape is not that
>     huge a deal anymore.
> 
>     On Wed, Jan 16, 2019 at 10:12 AM Wayne Stambaugh
>     <stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>> wrote:
> 
>         We should get some more feedback on this change.  I'm not
>         convinced this
>         is the way to go.  It should not be surprising to anyone that
>         the escape
>         keep closes a dialog since AFAIK this is the default dialog
>         behavior for
>         all platforms.  My guess is that users will not intuitively know
>         that
>         shift+escape will close the dialog and there will be bug report
>         about
>         that immediately after we merge this change.  Maybe switching the
>         behavior between the escape and shift+escape would be more
>         natural for
>         users.  The other option is the go with a double escape schema
>         where if
>         the user is editing a grid cell, the first escape exits out of
>         the grid
>         editing and the second escape closes the dialog as expected.  If
>         no grid
>         is being edited, then a single escape closes the dialog.
> 
>         On 1/16/2019 9:54 AM, José Ignacio wrote:
>         > great change, the current behavior of exiting with esc has
>         bitten me in
>         > the ass too many times to count!
>         >
>         > On Wed, Jan 16, 2019, 7:41 AM Baranovskiy Konstantin
>         > <baranovskiykonstantin@xxxxxxxxx
>         <mailto:baranovskiykonstantin@xxxxxxxxx>
>         > <mailto:baranovskiykonstantin@xxxxxxxxx
>         <mailto:baranovskiykonstantin@xxxxxxxxx>> wrote:
>         >
>         >     CHANGED: By default dialog closes on Esc key immediately.
>         But in case
>         >     with Field editor there is no way to close a cell editor
>         with canceling
>         >     changes in a fields grid (it's done by pressing Esc key).
>         The fields
>         >     grid is the main control here and it must be the most
>         comfortable to
>         >     work with. So default behavior on Esc key pressing
>         disabled in Field
>         >     editor and for now it closes by Esc+Shift.
>         >     ---
>         >      .../dialogs/dialog_fields_editor_global.cpp   |  15 +-
>         >      .../dialogs/dialog_fields_editor_global.h     |   3 +-
>         >      .../dialog_fields_editor_global_base.cpp      |  90 +-
>         >      .../dialog_fields_editor_global_base.fbp      | 826
>         ++++++------------
>         >      .../dialog_fields_editor_global_base.h        |  23 +-
>         >      5 files changed, 347 insertions(+), 610 deletions(-)
>         >
>         >     diff --git a/eeschema/dialogs/dialog_fields_editor_global.cpp
>         >     b/eeschema/dialogs/dialog_fields_editor_global.cpp
>         >     index ec928e05b..868297350 100644
>         >     --- a/eeschema/dialogs/dialog_fields_editor_global.cpp
>         >     +++ b/eeschema/dialogs/dialog_fields_editor_global.cpp
>         >     @@ -646,6 +646,11 @@
>         >     DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(
>         >     SCH_EDIT_FRAME* parent
>         >      {
>         >          wxSize defaultDlgSize = ConvertDialogToPixels(
>         wxSize( 600, 300
>         >     ) );
>         >
>         >     +    // Disable dialog closing on Esc key.
>         >     +    // It is necessary for a grid that also must handle
>         this key event.
>         >     +    // Current dialog closes on Esc+Shift (see OnCharHook
>         handler).
>         >     +    SetEscapeId( wxID_NONE );
>         >     +
>         >          // Get all components from the list of schematic sheets
>         >          SCH_SHEET_LIST sheets( g_RootSheet );
>         >          sheets.GetComponents( m_componentRefs, false );
>         >     @@ -1025,19 +1030,25 @@ void
>         >     DIALOG_FIELDS_EDITOR_GLOBAL::OnSizeFieldList( wxSizeEvent&
>         event )
>         >      }
>         >
>         >
>         >     -void DIALOG_FIELDS_EDITOR_GLOBAL::OnSaveAndContinue(
>         >     wxCommandEvent& aEvent )
>         >     +void DIALOG_FIELDS_EDITOR_GLOBAL::OnSaveAndContinue(
>         >     wxCommandEvent& event )
>         >      {
>         >          if( TransferDataFromWindow() )
>         >              m_parent->SaveProject();
>         >      }
>         >
>         >     +void DIALOG_FIELDS_EDITOR_GLOBAL::OnCharHook( wxKeyEvent&
>         event )
>         >     +{
>         >     +    if( event.GetKeyCode() == WXK_ESCAPE &&
>         event.ShiftDown() )
>         >     +        Close();
>         >     +
>         >     +    event.Skip();
>         >     +}
>         >
>         >      void DIALOG_FIELDS_EDITOR_GLOBAL::OnCancel(
>         wxCommandEvent& event )
>         >      {
>         >          Close();
>         >      }
>         >
>         >     -
>         >      void DIALOG_FIELDS_EDITOR_GLOBAL::OnClose( wxCloseEvent&
>         event )
>         >      {
>         >          // This is a cancel, so commit quietly as we're going
>         to throw
>         >     the results away anyway.
>         >     diff --git a/eeschema/dialogs/dialog_fields_editor_global.h
>         >     b/eeschema/dialogs/dialog_fields_editor_global.h
>         >     index 4d8abfc65..a9c14818c 100644
>         >     --- a/eeschema/dialogs/dialog_fields_editor_global.h
>         >     +++ b/eeschema/dialogs/dialog_fields_editor_global.h
>         >     @@ -64,7 +64,8 @@ private:
>         >          void OnTableItemContextMenu( wxGridEvent& event )
>         override;
>         >          void OnSizeFieldList( wxSizeEvent& event ) override;
>         >          void OnAddField( wxCommandEvent& event ) override;
>         >     -    void OnSaveAndContinue( wxCommandEvent& aEvent )
>         override;
>         >     +    void OnSaveAndContinue( wxCommandEvent& event ) override;
>         >     +    void OnCharHook( wxKeyEvent& event ) override;
>         >          void OnCancel( wxCommandEvent& event ) override;
>         >          void OnClose( wxCloseEvent& event ) override;
>         >      };
>         >     diff --git
>         a/eeschema/dialogs/dialog_fields_editor_global_base.cpp
>         >     b/eeschema/dialogs/dialog_fields_editor_global_base.cpp
>         >     index c261b5bc8..ab2fcf2e3 100644
>         >     --- a/eeschema/dialogs/dialog_fields_editor_global_base.cpp
>         >     +++ b/eeschema/dialogs/dialog_fields_editor_global_base.cpp
>         >     @@ -1,5 +1,5 @@
>         >   
>           ///////////////////////////////////////////////////////////////////////////
>         >     -// C++ code generated with wxFormBuilder (version Dec 30
>         2017)
>         >     +// C++ code generated with wxFormBuilder (version Jan 12
>         2019)
>         >      // http://www.wxformbuilder.org/
>         >      //
>         >      // PLEASE DO *NOT* EDIT THIS FILE!
>         >     @@ -14,118 +14,119 @@
>         >   
>           DIALOG_FIELDS_EDITOR_GLOBAL_BASE::DIALOG_FIELDS_EDITOR_GLOBAL_BASE(
>         >     wxWindow* parent, wxWindowID id, const wxString& title, const
>         >     wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM(
>         >     parent, id, title, pos, size, style )
>         >      {
>         >             this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
>         >     -       
>         >     +
>         >             wxBoxSizer* bMainSizer;
>         >             bMainSizer = new wxBoxSizer( wxVERTICAL );
>         >     -       
>         >     +
>         >             m_splitter1 = new wxSplitterWindow( this, wxID_ANY,
>         >     wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE );
>         >             m_splitter1->SetMinimumPaneSize( 200 );
>         >     -       
>         >     +
>         >             m_leftPanel = new wxPanel( m_splitter1, wxID_ANY,
>         >     wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
>         >             wxBoxSizer* bLeftSizer;
>         >             bLeftSizer = new wxBoxSizer( wxVERTICAL );
>         >     -       
>         >     +
>         >             wxBoxSizer* bGroupSizer;
>         >             bGroupSizer = new wxBoxSizer( wxHORIZONTAL );
>         >     -       
>         >     +
>         >             m_groupComponentsBox = new wxCheckBox( m_leftPanel,
>         >     OPT_GROUP_COMPONENTS, _("Group symbols"), wxDefaultPosition,
>         >     wxDefaultSize, 0 );
>         >     -       m_groupComponentsBox->SetValue(true);
>         >     +       m_groupComponentsBox->SetValue(true);
>         >             m_groupComponentsBox->SetToolTip( _("Group components
>         >     together based on common properties") );
>         >     -       
>         >     +
>         >             bGroupSizer->Add( m_groupComponentsBox, 0,
>         wxALL|wxEXPAND, 5 );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             bGroupSizer->Add( 0, 0, 1,
>         wxEXPAND|wxRIGHT|wxLEFT, 10 );
>         >     -       
>         >     -       m_bRefresh = new wxBitmapButton( m_leftPanel,
>         wxID_ANY,
>         >     wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
>         >     +
>         >     +       m_bRefresh = new wxBitmapButton( m_leftPanel,
>         wxID_ANY,
>         >     wxNullBitmap, wxDefaultPosition, wxDefaultSize,
>         wxBU_AUTODRAW|0 );
>         >             m_bRefresh->SetMinSize( wxSize( 30,30 ) );
>         >     -       
>         >     +
>         >             bGroupSizer->Add( m_bRefresh, 0,
>         wxALIGN_CENTER_VERTICAL, 5 );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             bLeftSizer->Add( bGroupSizer, 0,
>         >     wxALL|wxBOTTOM|wxEXPAND|wxTOP, 2 );
>         >     -       
>         >     +
>         >             m_fieldsCtrl = new wxDataViewListCtrl( m_leftPanel,
>         >     wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
>         >             m_fieldsCtrl->SetMinSize( wxSize( -1,220 ) );
>         >     -       
>         >     +
>         >             bLeftSizer->Add( m_fieldsCtrl, 1, wxALL|wxEXPAND, 5 );
>         >     -       
>         >     +
>         >             m_addFieldButton = new wxButton( m_leftPanel,
>         wxID_ANY,
>         >     _("Add Field..."), wxDefaultPosition, wxDefaultSize, 0 );
>         >             bLeftSizer->Add( m_addFieldButton, 0,
>         wxALL|wxEXPAND, 5 );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             m_leftPanel->SetSizer( bLeftSizer );
>         >             m_leftPanel->Layout();
>         >             bLeftSizer->Fit( m_leftPanel );
>         >             m_panel4 = new wxPanel( m_splitter1, wxID_ANY,
>         >     wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
>         >             wxBoxSizer* bRightSizer;
>         >             bRightSizer = new wxBoxSizer( wxVERTICAL );
>         >     -       
>         >     +
>         >             m_grid = new WX_GRID( m_panel4, wxID_ANY,
>         wxDefaultPosition,
>         >     wxDefaultSize, 0 );
>         >     -       
>         >     +
>         >             // Grid
>         >             m_grid->CreateGrid( 5, 5 );
>         >             m_grid->EnableEditing( true );
>         >             m_grid->EnableGridLines( true );
>         >             m_grid->EnableDragGridSize( false );
>         >             m_grid->SetMargins( 0, 0 );
>         >     -       
>         >     +
>         >             // Columns
>         >             m_grid->EnableDragColMove( true );
>         >             m_grid->EnableDragColSize( true );
>         >             m_grid->SetColLabelSize( 20 );
>         >     -       m_grid->SetColLabelAlignment( wxALIGN_CENTRE,
>         wxALIGN_CENTRE );
>         >     -       
>         >     +       m_grid->SetColLabelAlignment( wxALIGN_CENTER,
>         wxALIGN_CENTER );
>         >     +
>         >             // Rows
>         >             m_grid->EnableDragRowSize( false );
>         >             m_grid->SetRowLabelSize( 0 );
>         >     -       m_grid->SetRowLabelAlignment( wxALIGN_CENTRE,
>         wxALIGN_CENTRE );
>         >     -       
>         >     +       m_grid->SetRowLabelAlignment( wxALIGN_CENTER,
>         wxALIGN_CENTER );
>         >     +
>         >             // Label Appearance
>         >     -       
>         >     +
>         >             // Cell Defaults
>         >             m_grid->SetDefaultCellAlignment( wxALIGN_LEFT,
>         wxALIGN_TOP );
>         >             m_grid->SetMinSize( wxSize( 400,240 ) );
>         >     -       
>         >     +
>         >             bRightSizer->Add( m_grid, 1, wxALL|wxEXPAND, 5 );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             m_panel4->SetSizer( bRightSizer );
>         >             m_panel4->Layout();
>         >             bRightSizer->Fit( m_panel4 );
>         >             m_splitter1->SplitVertically( m_leftPanel,
>         m_panel4, -1 );
>         >             bMainSizer->Add( m_splitter1, 1, wxALL|wxEXPAND, 5 );
>         >     -       
>         >     +
>         >             wxBoxSizer* bButtonsSizer;
>         >             bButtonsSizer = new wxBoxSizer( wxHORIZONTAL );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             bButtonsSizer->Add( 0, 0, 1, wxEXPAND, 5 );
>         >     -       
>         >     +
>         >             m_button1 = new wxButton( this, wxID_ANY,
>         _("Apply, Save
>         >     Schematic && Continue"), wxDefaultPosition, wxDefaultSize,
>         0 );
>         >             bButtonsSizer->Add( m_button1, 0,
>         >     wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
>         >     -       
>         >     +
>         >             m_sdbSizer1 = new wxStdDialogButtonSizer();
>         >             m_sdbSizer1OK = new wxButton( this, wxID_OK );
>         >             m_sdbSizer1->AddButton( m_sdbSizer1OK );
>         >             m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
>         >             m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
>         >             m_sdbSizer1->Realize();
>         >     -       
>         >     +
>         >             bButtonsSizer->Add( m_sdbSizer1, 0,
>         >     wxBOTTOM|wxEXPAND|wxLEFT, 5 );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             bMainSizer->Add( bButtonsSizer, 0, wxEXPAND, 5 );
>         >     -       
>         >     -       
>         >     +
>         >     +
>         >             this->SetSizer( bMainSizer );
>         >             this->Layout();
>         >             bMainSizer->Fit( this );
>         >     -       
>         >     +
>         >             this->Centre( wxBOTH );
>         >     -       
>         >     +
>         >             // Connect Events
>         >             this->Connect( wxEVT_CLOSE_WINDOW,
>         wxCloseEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnClose ) );
>         >     +       m_splitter1->Connect( wxEVT_CHAR_HOOK,
>         wxKeyEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnCharHook ), NULL, this );
>         >             m_groupComponentsBox->Connect(
>         >     wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnGroupComponentsToggled
>         ), NULL,
>         >     this );
>         >             m_bRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED,
>         >     wxCommandEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnRegroupComponents ),
>         NULL, this );
>         >             m_fieldsCtrl->Connect(
>         >     wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED,
>         wxDataViewEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnColumnItemToggled ),
>         NULL, this );
>         >     @@ -143,6 +144,7 @@
>         >   
>          DIALOG_FIELDS_EDITOR_GLOBAL_BASE::~DIALOG_FIELDS_EDITOR_GLOBAL_BASE()
>         >      {
>         >             // Disconnect Events
>         >             this->Disconnect( wxEVT_CLOSE_WINDOW,
>         wxCloseEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnClose ) );
>         >     +       m_splitter1->Disconnect( wxEVT_CHAR_HOOK,
>         wxKeyEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnCharHook ), NULL, this );
>         >             m_groupComponentsBox->Disconnect(
>         >     wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnGroupComponentsToggled
>         ), NULL,
>         >     this );
>         >             m_bRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED,
>         >     wxCommandEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnRegroupComponents ),
>         NULL, this );
>         >             m_fieldsCtrl->Disconnect(
>         >     wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED,
>         wxDataViewEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnColumnItemToggled ),
>         NULL, this );
>         >     @@ -154,5 +156,5 @@
>         >   
>          DIALOG_FIELDS_EDITOR_GLOBAL_BASE::~DIALOG_FIELDS_EDITOR_GLOBAL_BASE()
>         >             m_grid->Disconnect( wxEVT_GRID_CELL_RIGHT_CLICK,
>         >     wxGridEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnTableItemContextMenu
>         ), NULL,
>         >     this );
>         >             m_button1->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED,
>         >     wxCommandEventHandler(
>         >     DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnSaveAndContinue ),
>         NULL, this );
>         >             m_sdbSizer1Cancel->Disconnect(
>         wxEVT_COMMAND_BUTTON_CLICKED,
>         >     wxCommandEventHandler(
>         DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnCancel ),
>         >     NULL, this );
>         >     -       
>         >     +
>         >      }
>         >     diff --git
>         a/eeschema/dialogs/dialog_fields_editor_global_base.fbp
>         >     b/eeschema/dialogs/dialog_fields_editor_global_base.fbp
>         >     index 6e4c89459..fb04b14ff 100644
>         >     --- a/eeschema/dialogs/dialog_fields_editor_global_base.fbp
>         >     +++ b/eeschema/dialogs/dialog_fields_editor_global_base.fbp
>         >     @@ -2,7 +2,7 @@
>         >      <wxFormBuilder_Project>
>         >          <FileVersion major="1" minor="15" />
>         >          <object class="Project" expanded="1">
>         >     -        <property name="class_decoration" />
>         >     +        <property name="class_decoration"></property>
>         >              <property name="code_generation">C++</property>
>         >              <property name="disconnect_events">1</property>
>         >              <property
>         name="disconnect_mode">source_name</property>
>         >     @@ -14,11 +14,12 @@
>         >              <property
>         >     name="file">dialog_fields_editor_global_base</property>
>         >              <property name="first_id">1000</property>
>         >              <property name="help_provider">none</property>
>         >     +        <property name="indent_with_spaces"></property>
>         >              <property name="internationalize">1</property>
>         >              <property
>         >     name="name">dialog_fields_editor_global_base</property>
>         >     -        <property name="namespace" />
>         >     +        <property name="namespace"></property>
>         >              <property name="path">.</property>
>         >     -        <property name="precompiled_header" />
>         >     +        <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>
>         >     @@ -29,244 +30,160 @@
>         >              <object class="Dialog" expanded="1">
>         >                  <property name="aui_managed">0</property>
>         >                  <property
>         >     name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
>         >     -            <property name="bg" />
>         >     +            <property name="bg"></property>
>         >                  <property name="center">wxBOTH</property>
>         >     -            <property name="context_help" />
>         >     +            <property name="context_help"></property>
>         >                  <property name="context_menu">1</property>
>         >                  <property name="enabled">1</property>
>         >                  <property
>         name="event_handler">impl_virtual</property>
>         >     -            <property name="extra_style" />
>         >     -            <property name="fg" />
>         >     -            <property name="font" />
>         >     +            <property name="extra_style"></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 name="maximum_size"></property>
>         >                  <property name="minimum_size">-1,-1</property>
>         >                  <property
>         >     name="name">DIALOG_FIELDS_EDITOR_GLOBAL_BASE</property>
>         >     -            <property name="pos" />
>         >     +            <property name="pos"></property>
>         >                  <property name="size">-1,-1</property>
>         >                  <property
>         >   
>          name="style">wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER</property>
>         >                  <property name="subclass">DIALOG_SHIM;
>         >     dialog_shim.h</property>
>         >                  <property name="title">Symbol Fields</property>
>         >     -            <property name="tooltip" />
>         >     -            <property name="window_extra_style" />
>         >     -            <property name="window_name" />
>         >     -            <property name="window_style" />
>         >     -            <event name="OnActivate" />
>         >     -            <event name="OnActivateApp" />
>         >     -            <event name="OnAuiFindManager" />
>         >     -            <event name="OnAuiPaneButton" />
>         >     -            <event name="OnAuiPaneClose" />
>         >     -            <event name="OnAuiPaneMaximize" />
>         >     -            <event name="OnAuiPaneRestore" />
>         >     -            <event name="OnAuiRender" />
>         >     -            <event name="OnChar" />
>         >     +            <property name="tooltip"></property>
>         >     +            <property name="window_extra_style"></property>
>         >     +            <property name="window_name"></property>
>         >     +            <property name="window_style"></property>
>         >                  <event name="OnClose">OnClose</event>
>         >     -            <event name="OnEnterWindow" />
>         >     -            <event name="OnEraseBackground" />
>         >     -            <event name="OnHibernate" />
>         >     -            <event name="OnIconize" />
>         >     -            <event name="OnIdle" />
>         >     -            <event name="OnInitDialog" />
>         >     -            <event name="OnKeyDown" />
>         >     -            <event name="OnKeyUp" />
>         >     -            <event name="OnKillFocus" />
>         >     -            <event name="OnLeaveWindow" />
>         >     -            <event name="OnLeftDClick" />
>         >     -            <event name="OnLeftDown" />
>         >     -            <event name="OnLeftUp" />
>         >     -            <event name="OnMiddleDClick" />
>         >     -            <event name="OnMiddleDown" />
>         >     -            <event name="OnMiddleUp" />
>         >     -            <event name="OnMotion" />
>         >     -            <event name="OnMouseEvents" />
>         >     -            <event name="OnMouseWheel" />
>         >     -            <event name="OnPaint" />
>         >     -            <event name="OnRightDClick" />
>         >     -            <event name="OnRightDown" />
>         >     -            <event name="OnRightUp" />
>         >     -            <event name="OnSetFocus" />
>         >     -            <event name="OnSize" />
>         >     -            <event name="OnUpdateUI" />
>         >                  <object class="wxBoxSizer" expanded="1">
>         >                      <property
>         name="minimum_size">-1,-1</property>
>         >                      <property name="name">bMainSizer</property>
>         >                      <property name="orient">wxVERTICAL</property>
>         >                      <property name="permission">none</property>
>         >     -                <object class="sizeritem" expanded="1">
>         >     +                <object class="sizeritem" expanded="0">
>         >                          <property name="border">5</property>
>         >                          <property
>         name="flag">wxALL|wxEXPAND</property>
>         >                          <property name="proportion">1</property>
>         >     -                    <object class="wxSplitterWindow"
>         expanded="1">
>         >     +                    <object class="wxSplitterWindow"
>         expanded="0">
>         >                              <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 name="aui_name" />
>         >     -                        <property name="aui_position" />
>         >     -                        <property name="aui_row" />
>         >     -                        <property name="best_size" />
>         >     -                        <property name="bg" />
>         >     -                        <property name="caption" />
>         >     +                        <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="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
>         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 name="fg"></property>
>         >                              <property
>         name="floatable">1</property>
>         >     -                        <property name="font" />
>         >     +                        <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 name="max_size"></property>
>         >                              <property
>         name="maximize_button">0</property>
>         >     -                        <property name="maximum_size" />
>         >     +                        <property
>         name="maximum_size"></property>
>         >                              <property
>         name="min_pane_size">200</property>
>         >     -                        <property name="min_size" />
>         >     +                        <property name="min_size"></property>
>         >                              <property
>         name="minimize_button">0</property>
>         >                              <property
>         name="minimum_size">-1,-1</property>
>         >                              <property
>         name="moveable">1</property>
>         >                              <property
>         name="name">m_splitter1</property>
>         >                              <property
>         name="pane_border">1</property>
>         >     -                        <property name="pane_position" />
>         >     -                        <property name="pane_size" />
>         >     +                        <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 name="pos"></property>
>         >                              <property
>         name="resize">Resizable</property>
>         >                              <property
>         name="sashgravity">0.0</property>
>         >                              <property
>         name="sashpos">-1</property>
>         >                              <property
>         name="sashsize">-1</property>
>         >                              <property name="show">1</property>
>         >     -                        <property name="size" />
>         >     +                        <property name="size"></property>
>         >                              <property
>         >     name="splitmode">wxSPLIT_VERTICAL</property>
>         >                              <property
>         >     name="style">wxSP_LIVE_UPDATE</property>
>         >     -                        <property name="subclass" />
>         >     +                        <property name="subclass"></property>
>         >                              <property
>         name="toolbar_pane">0</property>
>         >     -                        <property name="tooltip" />
>         >     -                        <property
>         name="window_extra_style" />
>         >     -                        <property name="window_name" />
>         >     -                        <property name="window_style" />
>         >     -                        <event name="OnChar" />
>         >     -                        <event name="OnEnterWindow" />
>         >     -                        <event name="OnEraseBackground" />
>         >     -                        <event name="OnKeyDown" />
>         >     -                        <event name="OnKeyUp" />
>         >     -                        <event name="OnKillFocus" />
>         >     -                        <event name="OnLeaveWindow" />
>         >     -                        <event name="OnLeftDClick" />
>         >     -                        <event name="OnLeftDown" />
>         >     -                        <event name="OnLeftUp" />
>         >     -                        <event name="OnMiddleDClick" />
>         >     -                        <event name="OnMiddleDown" />
>         >     -                        <event name="OnMiddleUp" />
>         >     -                        <event name="OnMotion" />
>         >     -                        <event name="OnMouseEvents" />
>         >     -                        <event name="OnMouseWheel" />
>         >     -                        <event name="OnPaint" />
>         >     -                        <event name="OnRightDClick" />
>         >     -                        <event name="OnRightDown" />
>         >     -                        <event name="OnRightUp" />
>         >     -                        <event name="OnSetFocus" />
>         >     -                        <event name="OnSize" />
>         >     -                        <event name="OnSplitterDClick" />
>         >     -                        <event
>         name="OnSplitterSashPosChanged" />
>         >     -                        <event
>         name="OnSplitterSashPosChanging" />
>         >     -                        <event name="OnSplitterUnsplit" />
>         >     -                        <event name="OnUpdateUI" />
>         >     -                        <object class="splitteritem"
>         expanded="1">
>         >     -                            <object class="wxPanel"
>         expanded="1">
>         >     +                        <property name="tooltip"></property>
>         >     +                        <property
>         name="window_extra_style"></property>
>         >     +                        <property
>         name="window_name"></property>
>         >     +                        <property
>         name="window_style"></property>
>         >     +                        <event
>         name="OnCharHook">OnCharHook</event>
>         >     +                        <object class="splitteritem"
>         expanded="0">
>         >     +                            <object class="wxPanel"
>         expanded="0">
>         >                                      <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 name="aui_name" />
>         >     -                                <property
>         name="aui_position" />
>         >     -                                <property name="aui_row" />
>         >     -                                <property name="best_size" />
>         >     -                                <property name="bg" />
>         >     -                                <property name="caption" />
>         >     +                                <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="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
>         >     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
>         name="fg"></property>
>         >                                      <property
>         name="floatable">1</property>
>         >     -                                <property name="font" />
>         >     +                                <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
>         name="max_size"></property>
>         >                                      <property
>         >     name="maximize_button">0</property>
>         >     -                                <property
>         name="maximum_size" />
>         >     -                                <property name="min_size" />
>         >     +                                <property
>         >     name="maximum_size"></property>
>         >     +                                <property
>         name="min_size"></property>
>         >                                      <property
>         >     name="minimize_button">0</property>
>         >     -                                <property
>         name="minimum_size" />
>         >     +                                <property
>         >     name="minimum_size"></property>
>         >                                      <property
>         name="moveable">1</property>
>         >                                      <property
>         >     name="name">m_leftPanel</property>
>         >                                      <property
>         >     name="pane_border">1</property>
>         >     -                                <property
>         name="pane_position" />
>         >     -                                <property name="pane_size" />
>         >     +                                <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
>         name="pos"></property>
>         >                                      <property
>         >     name="resize">Resizable</property>
>         >                                      <property
>         name="show">1</property>
>         >     -                                <property name="size" />
>         >     -                                <property name="subclass" />
>         >     +                                <property
>         name="size"></property>
>         >     +                                <property
>         name="subclass"></property>
>         >                                      <property
>         >     name="toolbar_pane">0</property>
>         >     -                                <property name="tooltip" />
>         >     -                                <property
>         name="window_extra_style" />
>         >     -                                <property
>         name="window_name" />
>         >     +                                <property
>         name="tooltip"></property>
>         >     +                                <property
>         >     name="window_extra_style"></property>
>         >     +                                <property
>         >     name="window_name"></property>
>         >                                      <property
>         >     name="window_style">wxTAB_TRAVERSAL</property>
>         >     -                                <event name="OnChar" />
>         >     -                                <event
>         name="OnEnterWindow" />
>         >     -                                <event
>         name="OnEraseBackground" />
>         >     -                                <event name="OnKeyDown" />
>         >     -                                <event name="OnKeyUp" />
>         >     -                                <event name="OnKillFocus" />
>         >     -                                <event
>         name="OnLeaveWindow" />
>         >     -                                <event name="OnLeftDClick" />
>         >     -                                <event name="OnLeftDown" />
>         >     -                                <event name="OnLeftUp" />
>         >     -                                <event
>         name="OnMiddleDClick" />
>         >     -                                <event name="OnMiddleDown" />
>         >     -                                <event name="OnMiddleUp" />
>         >     -                                <event name="OnMotion" />
>         >     -                                <event
>         name="OnMouseEvents" />
>         >     -                                <event name="OnMouseWheel" />
>         >     -                                <event name="OnPaint" />
>         >     -                                <event
>         name="OnRightDClick" />
>         >     -                                <event name="OnRightDown" />
>         >     -                                <event name="OnRightUp" />
>         >     -                                <event name="OnSetFocus" />
>         >     -                                <event name="OnSize" />
>         >     -                                <event name="OnUpdateUI" />
>         >     -                                <object class="wxBoxSizer"
>         >     expanded="1">
>         >     -                                    <property
>         name="minimum_size" />
>         >     +                                <object class="wxBoxSizer"
>         >     expanded="0">
>         >     +                                    <property
>         >     name="minimum_size"></property>
>         >                                          <property
>         >     name="name">bLeftSizer</property>
>         >                                          <property
>         >     name="orient">wxVERTICAL</property>
>         >                                          <property
>         >     name="permission">none</property>
>         >     -                                    <object class="sizeritem"
>         >     expanded="1">
>         >     +                                    <object class="sizeritem"
>         >     expanded="0">
>         >                                              <property
>         >     name="border">2</property>
>         >                                              <property
>         >     name="flag">wxALL|wxBOTTOM|wxEXPAND|wxTOP</property>
>         >                                              <property
>         >     name="proportion">0</property>
>         >     -                                        <object
>         class="wxBoxSizer"
>         >     expanded="1">
>         >     -                                            <property
>         >     name="minimum_size" />
>         >     +                                        <object
>         class="wxBoxSizer"
>         >     expanded="0">
>         >     +                                            <property
>         >     name="minimum_size"></property>
>         >                                                  <property
>         >     name="name">bGroupSizer</property>
>         >                                                  <property
>         >     name="orient">wxHORIZONTAL</property>
>         >                                                  <property
>         >     name="permission">none</property>
>         >     @@ -279,83 +196,60 @@
>         >                                                          <property
>         >     name="LeftDockable">1</property>
>         >                                                          <property
>         >     name="RightDockable">1</property>
>         >                                                          <property
>         >     name="TopDockable">1</property>
>         >     -                                                    <property
>         >     name="aui_layer" />
>         >     -                                                    <property
>         >     name="aui_name" />
>         >     -                                                    <property
>         >     name="aui_position" />
>         >     -                                                    <property
>         >     name="aui_row" />
>         >     -                                                    <property
>         >     name="best_size" />
>         >     -                                                    <property
>         >     name="bg" />
>         >     -                                                    <property
>         >     name="caption" />
>         >     +                                                    <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="caption"></property>
>         >                                                          <property
>         >     name="caption_visible">1</property>
>         >                                                          <property
>         >     name="center_pane">0</property>
>         >                                                          <property
>         >     name="checked">1</property>
>         >                                                          <property
>         >     name="close_button">1</property>
>         >     -                                                    <property
>         >     name="context_help" />
>         >     +                                                    <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
>         >     name="fg"></property>
>         >                                                          <property
>         >     name="floatable">1</property>
>         >     -                                                    <property
>         >     name="font" />
>         >     +                                                    <property
>         >     name="font"></property>
>         >                                                          <property
>         >     name="gripper">0</property>
>         >                                                          <property
>         >     name="hidden">0</property>
>         >                                                          <property
>         >     name="id">OPT_GROUP_COMPONENTS</property>
>         >                                                          <property
>         >     name="label">Group symbols</property>
>         >     -                                                    <property
>         >     name="max_size" />
>         >     +                                                    <property
>         >     name="max_size"></property>
>         >                                                          <property
>         >     name="maximize_button">0</property>
>         >     -                                                    <property
>         >     name="maximum_size" />
>         >     -                                                    <property
>         >     name="min_size" />
>         >     +                                                    <property
>         >     name="maximum_size"></property>
>         >     +                                                    <property
>         >     name="min_size"></property>
>         >                                                          <property
>         >     name="minimize_button">0</property>
>         >     -                                                    <property
>         >     name="minimum_size" />
>         >     +                                                    <property
>         >     name="minimum_size"></property>
>         >                                                          <property
>         >     name="moveable">1</property>
>         >                                                          <property
>         >     name="name">m_groupComponentsBox</property>
>         >                                                          <property
>         >     name="pane_border">1</property>
>         >     -                                                    <property
>         >     name="pane_position" />
>         >     -                                                    <property
>         >     name="pane_size" />
>         >     +                                                    <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
>         >     name="pos"></property>
>         >                                                          <property
>         >     name="resize">Resizable</property>
>         >                                                          <property
>         >     name="show">1</property>
>         >     -                                                    <property
>         >     name="size" />
>         >     -                                                    <property
>         >     name="style" />
>         >     -                                                    <property
>         >     name="subclass" />
>         >     +                                                    <property
>         >     name="size"></property>
>         >     +                                                    <property
>         >     name="style"></property>
>         >     +                                                    <property
>         >     name="subclass"></property>
>         >                                                          <property
>         >     name="toolbar_pane">0</property>
>         >                                                          <property
>         >     name="tooltip">Group components together based on common
>         >     properties</property>
>         >     -                                                    <property
>         >     name="validator_data_type" />
>         >     +                                                    <property
>         >     name="validator_data_type"></property>
>         >                                                          <property
>         >     name="validator_style">wxFILTER_NONE</property>
>         >                                                          <property
>         >     name="validator_type">wxDefaultValidator</property>
>         >     -                                                    <property
>         >     name="validator_variable" />
>         >     -                                                    <property
>         >     name="window_extra_style" />
>         >     -                                                    <property
>         >     name="window_name" />
>         >     -                                                    <property
>         >     name="window_style" />
>         >     -                                                    <event
>         >     name="OnChar" />
>         >     +                                                    <property
>         >     name="validator_variable"></property>
>         >     +                                                    <property
>         >     name="window_extra_style"></property>
>         >     +                                                    <property
>         >     name="window_name"></property>
>         >     +                                                    <property
>         >     name="window_style"></property>
>         >                                                          <event
>         >     name="OnCheckBox">OnGroupComponentsToggled</event>
>         >     -                                                    <event
>         >     name="OnEnterWindow" />
>         >     -                                                    <event
>         >     name="OnEraseBackground" />
>         >     -                                                    <event
>         >     name="OnKeyDown" />
>         >     -                                                    <event
>         >     name="OnKeyUp" />
>         >     -                                                    <event
>         >     name="OnKillFocus" />
>         >     -                                                    <event
>         >     name="OnLeaveWindow" />
>         >     -                                                    <event
>         >     name="OnLeftDClick" />
>         >     -                                                    <event
>         >     name="OnLeftDown" />
>         >     -                                                    <event
>         >     name="OnLeftUp" />
>         >     -                                                    <event
>         >     name="OnMiddleDClick" />
>         >     -                                                    <event
>         >     name="OnMiddleDown" />
>         >     -                                                    <event
>         >     name="OnMiddleUp" />
>         >     -                                                    <event
>         >     name="OnMotion" />
>         >     -                                                    <event
>         >     name="OnMouseEvents" />
>         >     -                                                    <event
>         >     name="OnMouseWheel" />
>         >     -                                                    <event
>         >     name="OnPaint" />
>         >     -                                                    <event
>         >     name="OnRightDClick" />
>         >     -                                                    <event
>         >     name="OnRightDown" />
>         >     -                                                    <event
>         >     name="OnRightUp" />
>         >     -                                                    <event
>         >     name="OnSetFocus" />
>         >     -                                                    <event
>         >     name="OnSize" />
>         >     -                                                    <event
>         >     name="OnUpdateUI" />
>         >                                                      </object>
>         >                                                  </object>
>         >                                                  <object
>         >     class="sizeritem" expanded="0">
>         >     @@ -377,88 +271,68 @@
>         >                                                          <property
>         >     name="LeftDockable">1</property>
>         >                                                          <property
>         >     name="RightDockable">1</property>
>         >                                                          <property
>         >     name="TopDockable">1</property>
>         >     -                                                    <property
>         >     name="aui_layer" />
>         >     -                                                    <property
>         >     name="aui_name" />
>         >     -                                                    <property
>         >     name="aui_position" />
>         >     -                                                    <property
>         >     name="aui_row" />
>         >     -                                                    <property
>         >     name="best_size" />
>         >     -                                                    <property
>         >     name="bg" />
>         >     -                                                    <property
>         >     name="bitmap" />
>         >     -                                                    <property
>         >     name="caption" />
>         >     +                                                    <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="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
>         >     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
>         >     name="disabled"></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
>         >     name="fg"></property>
>         >                                                          <property
>         >     name="floatable">1</property>
>         >     -                                                    <property
>         >     name="focus" />
>         >     -                                                    <property
>         >     name="font" />
>         >     +                                                    <property
>         >     name="focus"></property>
>         >     +                                                    <property
>         >     name="font"></property>
>         >                                                          <property
>         >     name="gripper">0</property>
>         >                                                          <property
>         >     name="hidden">0</property>
>         >     -                                     
>         >
>         >
>         > _______________________________________________
>         > Mailing list: https://launchpad.net/~kicad-developers
>         > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>         <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>         > Unsubscribe : https://launchpad.net/~kicad-developers
>         > More help   : https://help.launchpad.net/ListHelp
>         >
> 
>         _______________________________________________
>         Mailing list: https://launchpad.net/~kicad-developers
>         Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>         <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>         Unsubscribe : https://launchpad.net/~kicad-developers
>         More help   : https://help.launchpad.net/ListHelp
> 
>     _______________________________________________
>     Mailing list: https://launchpad.net/~kicad-developers
>     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     Unsubscribe : https://launchpad.net/~kicad-developers
>     More help   : https://help.launchpad.net/ListHelp
> 


Follow ups

References