← Back to team overview

kicad-developers team mailing list archive

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

 

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 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>
> -

Follow ups

References