Browse Source

Move WX_GRID_AUTOSIZER into WX_GRID and use in more places.

Also fixes some bugs around skipping of events.

Also fixes some bugs around hidden columns.
master
Jeff Young 3 weeks ago
parent
commit
730e5dab66
  1. 1
      common/CMakeLists.txt
  2. 8
      common/dialogs/dialog_configure_paths.cpp
  3. 6
      common/dialogs/dialog_configure_paths_base.cpp
  4. 58
      common/dialogs/dialog_configure_paths_base.fbp
  5. 3
      common/dialogs/dialog_configure_paths_base.h
  6. 19
      common/dialogs/dialog_design_block_properties.cpp
  7. 4
      common/dialogs/dialog_design_block_properties.h
  8. 6
      common/dialogs/dialog_design_block_properties_base.cpp
  9. 3
      common/dialogs/dialog_design_block_properties_base.fbp
  10. 1
      common/dialogs/dialog_design_block_properties_base.h
  11. 7
      common/dialogs/panel_embedded_files.cpp
  12. 4
      common/dialogs/panel_embedded_files.h
  13. 4
      common/dialogs/panel_embedded_files_base.cpp
  14. 6
      common/dialogs/panel_embedded_files_base.fbp
  15. 10
      common/dialogs/panel_text_variables.cpp
  16. 4
      common/dialogs/panel_text_variables_base.cpp
  17. 2
      common/dialogs/panel_text_variables_base.fbp
  18. 2
      common/grid_tricks.cpp
  19. 86
      common/widgets/wx_grid.cpp
  20. 120
      common/widgets/wx_grid_autosizer.cpp
  21. 34
      eeschema/dialogs/dialog_label_properties.cpp
  22. 10
      eeschema/dialogs/dialog_label_properties.h
  23. 2
      eeschema/dialogs/dialog_label_properties_base.cpp
  24. 1
      eeschema/dialogs/dialog_label_properties_base.fbp
  25. 1
      eeschema/dialogs/dialog_label_properties_base.h
  26. 36
      eeschema/dialogs/dialog_lib_symbol_properties.cpp
  27. 3
      eeschema/dialogs/dialog_lib_symbol_properties.h
  28. 2
      eeschema/dialogs/dialog_lib_symbol_properties_base.cpp
  29. 1
      eeschema/dialogs/dialog_lib_symbol_properties_base.fbp
  30. 1
      eeschema/dialogs/dialog_lib_symbol_properties_base.h
  31. 36
      eeschema/dialogs/dialog_sheet_properties.cpp
  32. 4
      eeschema/dialogs/dialog_sheet_properties.h
  33. 8
      eeschema/dialogs/dialog_sheet_properties_base.cpp
  34. 183
      eeschema/dialogs/dialog_sheet_properties_base.fbp
  35. 4
      eeschema/dialogs/dialog_sheet_properties_base.h
  36. 44
      eeschema/dialogs/dialog_symbol_properties.cpp
  37. 4
      eeschema/dialogs/dialog_symbol_properties.h
  38. 2
      eeschema/dialogs/dialog_symbol_properties_base.cpp
  39. 1
      eeschema/dialogs/dialog_symbol_properties_base.fbp
  40. 1
      eeschema/dialogs/dialog_symbol_properties_base.h
  41. 25
      eeschema/dialogs/panel_template_fieldnames.cpp
  42. 4
      eeschema/dialogs/panel_template_fieldnames.h
  43. 8
      eeschema/dialogs/panel_template_fieldnames_base.cpp
  44. 3
      eeschema/dialogs/panel_template_fieldnames_base.fbp
  45. 1
      eeschema/dialogs/panel_template_fieldnames_base.h
  46. 2
      eeschema/fields_grid_table.cpp
  47. 3
      include/dialogs/dialog_configure_paths.h
  48. 3
      include/panel_text_variables.h
  49. 28
      include/widgets/wx_grid.h
  50. 70
      include/widgets/wx_grid_autosizer.h
  51. 88
      kicad/dialogs/dialog_edit_cfg.cpp
  52. 7
      kicad/dialogs/dialog_edit_cfg.h
  53. 62
      pcbnew/dialogs/dialog_footprint_properties.cpp
  54. 5
      pcbnew/dialogs/dialog_footprint_properties.h
  55. 24
      pcbnew/dialogs/dialog_footprint_properties_base.cpp
  56. 3
      pcbnew/dialogs/dialog_footprint_properties_base.fbp
  57. 1
      pcbnew/dialogs/dialog_footprint_properties_base.h
  58. 77
      pcbnew/dialogs/dialog_footprint_properties_fp_editor.cpp
  59. 5
      pcbnew/dialogs/dialog_footprint_properties_fp_editor.h
  60. 30
      pcbnew/dialogs/dialog_footprint_properties_fp_editor_base.cpp
  61. 19
      pcbnew/dialogs/dialog_footprint_properties_fp_editor_base.fbp
  62. 1
      pcbnew/dialogs/dialog_footprint_properties_fp_editor_base.h
  63. 29
      pcbnew/dialogs/dialog_layer_selection_base.cpp
  64. 2
      pcbnew/dialogs/dialog_layer_selection_base.fbp
  65. 31
      pcbnew/dialogs/panel_fp_properties_3d_model.cpp
  66. 22
      pcbnew/dialogs/panel_fp_properties_3d_model.h
  67. 6
      pcbnew/dialogs/panel_fp_properties_3d_model_base.cpp
  68. 3
      pcbnew/dialogs/panel_fp_properties_3d_model_base.fbp
  69. 1
      pcbnew/dialogs/panel_fp_properties_3d_model_base.h
  70. 17
      pcbnew/sel_layer.cpp

1
common/CMakeLists.txt

@ -546,7 +546,6 @@ set( COMMON_WIDGET_SRCS
widgets/wx_dataviewctrl.cpp
widgets/wx_ellipsized_static_text.cpp
widgets/wx_grid.cpp
widgets/wx_grid_autosizer.cpp
widgets/wx_html_report_box.cpp
widgets/wx_listbox.cpp
widgets/wx_panel.cpp

8
common/dialogs/dialog_configure_paths.cpp

@ -40,7 +40,6 @@
#include <widgets/grid_text_helpers.h>
#include <widgets/std_bitmap_button.h>
#include <widgets/wx_grid.h>
#include <widgets/wx_grid_autosizer.h>
#include <wx/dirdlg.h>
@ -98,12 +97,7 @@ DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS( wxWindow* aParent ) :
wxGridEventHandler( DIALOG_CONFIGURE_PATHS::OnGridCellChanging ),
nullptr, this );
m_gridAutosizer = std::make_unique<WX_GRID_AUTOSIZER>( *m_EnvVars,
WX_GRID_AUTOSIZER::COL_MIN_WIDTHS{
{ TV_NAME_COL, 72 },
{ TV_VALUE_COL, 120 },
},
TV_VALUE_COL );
m_EnvVars->SetupColumnAutosizer( TV_VALUE_COL );
GetSizer()->SetSizeHints( this );
Centre();

6
common/dialogs/dialog_configure_paths_base.cpp

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.1.0-0-g733bf3d)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -32,8 +32,8 @@ DIALOG_CONFIGURE_PATHS_BASE::DIALOG_CONFIGURE_PATHS_BASE( wxWindow* parent, wxWi
m_EnvVars->SetMargins( 0, 0 );
// Columns
m_EnvVars->SetColSize( 0, 150 );
m_EnvVars->SetColSize( 1, 454 );
m_EnvVars->SetColSize( 0, 100 );
m_EnvVars->SetColSize( 1, 180 );
m_EnvVars->EnableDragColMove( false );
m_EnvVars->EnableDragColSize( true );
m_EnvVars->SetColLabelValue( 0, _("Name") );

58
common/dialogs/dialog_configure_paths_base.fbp

@ -1,34 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="17"/>
<FileVersion major="1" minor="18"/>
<object class="Project" expanded="true">
<property name="class_decoration"></property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="disconnect_mode">source_name</property>
<property name="disconnect_php_events">0</property>
<property name="disconnect_python_events">0</property>
<property name="cpp_class_decoration"></property>
<property name="cpp_disconnect_events">1</property>
<property name="cpp_event_generation">connect</property>
<property name="cpp_help_provider">none</property>
<property name="cpp_namespace"></property>
<property name="cpp_precompiled_header"></property>
<property name="cpp_use_array_enum">0</property>
<property name="cpp_use_enum">0</property>
<property name="embedded_files_path">res</property>
<property name="encoding">UTF-8</property>
<property name="event_generation">connect</property>
<property name="file">dialog_configure_paths_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="image_path_wrapper_function_name"></property>
<property name="indent_with_spaces"></property>
<property name="internationalize">1</property>
<property name="lua_skip_events">1</property>
<property name="lua_ui_table">UI</property>
<property name="name">DIALOG_CONFIGURE_PATHS_BASE</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="php_disconnect_events">0</property>
<property name="php_disconnect_mode">source_name</property>
<property name="php_skip_events">1</property>
<property name="python_disconnect_events">0</property>
<property name="python_disconnect_mode">source_name</property>
<property name="python_image_path_wrapper_function_name"></property>
<property name="python_indent_with_spaces"></property>
<property name="python_skip_events">1</property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_array_enum">0</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<property name="use_native_eol">0</property>
<object class="Dialog" expanded="true">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
@ -84,10 +86,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="autosize_cols">0</property>
<property name="autosize_rows">0</property>
<property name="best_size"></property>
@ -106,7 +108,7 @@
<property name="col_label_values">&quot;Name&quot; &quot;Path&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">2</property>
<property name="column_sizes">150,454</property>
<property name="column_sizes">100,180</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -182,10 +184,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
@ -267,10 +269,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>

3
common/dialogs/dialog_configure_paths_base.h

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.1.0-0-g733bf3d)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -31,7 +31,6 @@ class WX_GRID;
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_CONFIGURE_PATHS_BASE
///////////////////////////////////////////////////////////////////////////////

19
common/dialogs/dialog_design_block_properties.cpp

@ -56,6 +56,7 @@ DIALOG_DESIGN_BLOCK_PROPERTIES::DIALOG_DESIGN_BLOCK_PROPERTIES( wxWindow* aP
{
OnAddField( aEvent );
} ) );
m_fieldsGrid->SetupColumnAutosizer( 1 );
m_fieldsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
}
@ -215,21 +216,3 @@ bool DIALOG_DESIGN_BLOCK_PROPERTIES::TransferDataFromGrid()
}
void DIALOG_DESIGN_BLOCK_PROPERTIES::AdjustGridColumns( int aWidth )
{
if( aWidth <= 0 )
return;
// Account for scroll bars
aWidth -= ( m_fieldsGrid->GetSize().x - m_fieldsGrid->GetClientSize().x );
m_fieldsGrid->SetColSize( 1, aWidth - m_fieldsGrid->GetColSize( 0 ) );
}
void DIALOG_DESIGN_BLOCK_PROPERTIES::OnSizeGrid( wxSizeEvent& event )
{
AdjustGridColumns( event.GetSize().GetX() );
event.Skip();
}

4
common/dialogs/dialog_design_block_properties.h

@ -48,11 +48,7 @@ public:
void OnMoveFieldUp( wxCommandEvent& aEvent ) override;
void OnMoveFieldDown( wxCommandEvent& aEvent ) override;
void OnSizeGrid( wxSizeEvent& event ) override;
private:
void AdjustGridColumns( int aWidth );
DESIGN_BLOCK* m_designBlock;
nlohmann::ordered_map<wxString, wxString> m_fields;
};

6
common/dialogs/dialog_design_block_properties_base.cpp

@ -35,8 +35,8 @@ DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::DIALOG_DESIGN_BLOCK_PROPERTIES_BASE( wxWind
m_fieldsGrid->SetMargins( 0, 0 );
// Columns
m_fieldsGrid->SetColSize( 0, 150 );
m_fieldsGrid->SetColSize( 1, 300 );
m_fieldsGrid->SetColSize( 0, 84 );
m_fieldsGrid->SetColSize( 1, 120 );
m_fieldsGrid->EnableDragColMove( false );
m_fieldsGrid->EnableDragColSize( true );
m_fieldsGrid->SetColLabelValue( 0, _("Name") );
@ -135,7 +135,6 @@ DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::DIALOG_DESIGN_BLOCK_PROPERTIES_BASE( wxWind
this->Centre( wxBOTH );
// Connect Events
m_fieldsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnMoveFieldUp ), NULL, this );
m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnMoveFieldDown ), NULL, this );
@ -146,7 +145,6 @@ DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::DIALOG_DESIGN_BLOCK_PROPERTIES_BASE( wxWind
DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::~DIALOG_DESIGN_BLOCK_PROPERTIES_BASE()
{
// Disconnect Events
m_fieldsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnMoveFieldUp ), NULL, this );
m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_BLOCK_PROPERTIES_BASE::OnMoveFieldDown ), NULL, this );

3
common/dialogs/dialog_design_block_properties_base.fbp

@ -116,7 +116,7 @@
<property name="col_label_values">&quot;Name&quot; &quot;Value&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">2</property>
<property name="column_sizes">150,300</property>
<property name="column_sizes">84,120</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -172,7 +172,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnSizeGrid</event>
</object>
</object>
<object class="sizeritem" expanded="true">

1
common/dialogs/dialog_design_block_properties_base.h

@ -57,7 +57,6 @@ class DIALOG_DESIGN_BLOCK_PROPERTIES_BASE : public DIALOG_SHIM
wxButton* m_stdButtonsCancel;
// Virtual event handlers, override them in your derived class
virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveFieldUp( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveFieldDown( wxCommandEvent& event ) { event.Skip(); }

7
common/dialogs/panel_embedded_files.cpp

@ -39,7 +39,6 @@
#include <wx/menu.h>
#include <wx/wfstream.h>
#include <wx/wupdlock.h>
#include <widgets/wx_grid_autosizer.h>
/* ---------- GRID_TRICKS for embedded files grid ---------- */
@ -124,11 +123,7 @@ PANEL_EMBEDDED_FILES::PANEL_EMBEDDED_FILES( wxWindow* aParent, EMBEDDED_FILES* a
m_files_grid->EnableAlternateRowColors();
m_files_grid->PushEventHandler( new EMBEDDED_FILES_GRID_TRICKS( m_files_grid ) );
m_autoSizer = std::make_unique<WX_GRID_AUTOSIZER>( *m_files_grid,
WX_GRID_AUTOSIZER::COL_MIN_WIDTHS{ { 0, 100 },
{ 1, 200 } },
1 );
m_files_grid->SetupColumnAutosizer( 1 );
m_localFiles->SetFileAddedCallback(
[this](EMBEDDED_FILES::EMBEDDED_FILE* file)

4
common/dialogs/panel_embedded_files.h

@ -28,8 +28,6 @@
#include "grid_tricks.h"
class WX_GRID_AUTOSIZER;
#define NO_MARGINS 0x0001
@ -80,6 +78,4 @@ protected:
private:
EMBEDDED_FILES* m_files;
EMBEDDED_FILES* m_localFiles;
std::unique_ptr<WX_GRID_AUTOSIZER> m_autoSizer;
};

4
common/dialogs/panel_embedded_files_base.cpp

@ -29,7 +29,7 @@ PANEL_EMBEDDED_FILES_BASE::PANEL_EMBEDDED_FILES_BASE( wxWindow* parent, wxWindow
m_files_grid->SetMargins( 0, 0 );
// Columns
m_files_grid->SetColSize( 0, 440 );
m_files_grid->SetColSize( 0, 100 );
m_files_grid->SetColSize( 1, 180 );
m_files_grid->EnableDragColMove( false );
m_files_grid->EnableDragColSize( true );
@ -74,7 +74,7 @@ PANEL_EMBEDDED_FILES_BASE::PANEL_EMBEDDED_FILES_BASE( wxWindow* parent, wxWindow
m_cbEmbedFonts = new wxCheckBox( this, wxID_ANY, _("Embed fonts"), wxDefaultPosition, wxDefaultSize, 0 );
m_cbEmbedFonts->SetToolTip( _("Store a copy of all fonts used") );
m_buttonsSizer->Add( m_cbEmbedFonts, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_buttonsSizer->Add( m_cbEmbedFonts, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 40 );
m_buttonsSizer->Add( 0, 0, 1, wxEXPAND, 5 );

6
common/dialogs/panel_embedded_files_base.fbp

@ -100,7 +100,7 @@
<property name="col_label_values">&quot;Filename&quot; &quot;Embedded Reference&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">2</property>
<property name="column_sizes">440,180</property>
<property name="column_sizes">100,180</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -341,8 +341,8 @@
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="border">40</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="true">
<property name="BottomDockable">1</property>

10
common/dialogs/panel_text_variables.cpp

@ -32,7 +32,6 @@
#include <grid_tricks.h>
#include <widgets/std_bitmap_button.h>
#include <widgets/grid_text_helpers.h>
#include <widgets/wx_grid_autosizer.h>
enum TEXT_VAR_GRID_COLUMNS
@ -84,12 +83,7 @@ PANEL_TEXT_VARIABLES::PANEL_TEXT_VARIABLES( wxWindow* aParent, PROJECT* aProject
}
} );
m_autoSizer = std::make_unique<WX_GRID_AUTOSIZER>( *m_TextVars,
WX_GRID_AUTOSIZER::COL_MIN_WIDTHS{
{ TV_NAME_COL, 100 },
{ TV_VALUE_COL, 120 },
},
TV_VALUE_COL );
m_TextVars->SetupColumnAutosizer( TV_VALUE_COL );
}
@ -246,6 +240,8 @@ void PANEL_TEXT_VARIABLES::OnUpdateUI( wxUpdateUIEvent& event )
m_TextVars->EnableCellEditControl( true );
m_TextVars->ShowCellEditControl();
}
event.Skip();
}

4
common/dialogs/panel_text_variables_base.cpp

@ -30,8 +30,8 @@ PANEL_TEXT_VARIABLES_BASE::PANEL_TEXT_VARIABLES_BASE( wxWindow* parent, wxWindow
m_TextVars->SetMargins( 0, 0 );
// Columns
m_TextVars->SetColSize( 0, 150 );
m_TextVars->SetColSize( 1, 454 );
m_TextVars->SetColSize( 0, 100 );
m_TextVars->SetColSize( 1, 180 );
m_TextVars->EnableDragColMove( false );
m_TextVars->EnableDragColSize( true );
m_TextVars->SetColLabelValue( 0, _("Variable Name") );

2
common/dialogs/panel_text_variables_base.fbp

@ -101,7 +101,7 @@
<property name="col_label_values">&quot;Variable Name&quot; &quot;Text Substitution&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">2</property>
<property name="column_sizes">150,454</property>
<property name="column_sizes">100,180</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>

2
common/grid_tricks.cpp

@ -912,4 +912,6 @@ void GRID_TRICKS::onUpdateUI( wxUpdateUIEvent& event )
if( !cursorInSelectedRow && cursorRow >= 0 )
m_grid->SelectRow( cursorRow );
}
event.Skip();
}

86
common/widgets/wx_grid.cpp

@ -979,3 +979,89 @@ std::pair<EDA_UNITS, EDA_DATA_TYPE> WX_GRID::getColumnUnits( const int aCol ) co
// Legacy - default always DISTANCE
return { getUnitsProvider( aCol )->GetUserUnits(), EDA_DATA_TYPE::DISTANCE };
}
void WX_GRID::SetupColumnAutosizer( int aFlexibleCol )
{
const int colCount = GetNumberCols();
for( int ii = 0; ii < GetNumberCols(); ++ii )
m_autosizedCols[ii] = GetColSize( ii );
m_flexibleCol = aFlexibleCol;
wxASSERT_MSG( m_flexibleCol < colCount, "Flexible column index does not exist in grid" );
Bind( wxEVT_UPDATE_UI,
[this]( wxUpdateUIEvent& aEvent )
{
recomputeGridWidths();
aEvent.Skip();
} );
Bind( wxEVT_SIZE,
[this]( wxSizeEvent& aEvent )
{
onSizeEvent( aEvent );
aEvent.Skip();
} );
// Handles the case when the user changes the cell content to be longer than the current column size
Bind( wxEVT_GRID_CELL_CHANGED,
[this]( wxGridEvent& aEvent )
{
m_gridWidthsDirty = true;
aEvent.Skip();
} );
}
void WX_GRID::recomputeGridWidths()
{
if( m_gridWidthsDirty )
{
const int width = GetSize().GetX() - wxSystemSettings::GetMetric( wxSYS_VSCROLL_X );
std::optional<int> flexibleMinWidth;
for( const auto& [colIndex, minWidth] : m_autosizedCols )
{
if( GetColSize( colIndex ) != 0 )
{
AutoSizeColumn( colIndex );
const int colSize = GetColSize( colIndex );
int minWidthScaled = FromDIP( minWidth );
SetColSize( colIndex, std::max( minWidthScaled, colSize ) );
if( colIndex == m_flexibleCol )
flexibleMinWidth = minWidthScaled;
}
}
// Gather all the widths except the flexi one
int nonFlexibleWidth = 0;
for( int i = 0; i < GetNumberCols(); ++i )
{
if( i != m_flexibleCol )
nonFlexibleWidth += GetColSize( i );
}
if( GetColSize( m_flexibleCol ) != 0 )
SetColSize( m_flexibleCol, std::max( flexibleMinWidth.value_or( 0 ), width - nonFlexibleWidth ) );
// Store the state for next time
m_gridWidth = GetSize().GetX();
m_gridWidthsDirty = false;
}
}
void WX_GRID::onSizeEvent( wxSizeEvent& aEvent )
{
const int width = aEvent.GetSize().GetX();
if( width != m_gridWidth )
m_gridWidthsDirty = true;
}

120
common/widgets/wx_grid_autosizer.cpp

@ -1,120 +0,0 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "widgets/wx_grid_autosizer.h"
#include <optional>
#include <wx/settings.h>
WX_GRID_AUTOSIZER::WX_GRID_AUTOSIZER( wxGrid& aGrid, COL_MIN_WIDTHS aAutosizedCols,
unsigned aFlexibleCol ) :
m_grid( aGrid ),
m_autosizedCols( std::move( aAutosizedCols ) ),
m_flexibleCol( aFlexibleCol )
{
const int colCount = m_grid.GetNumberCols();
for( const auto& [colIndex, width] : m_autosizedCols )
{
wxASSERT_MSG( colIndex < colCount, "Autosized column does not exist in grid" );
}
wxASSERT_MSG( m_flexibleCol < colCount, "Flexible column index does not exist in grid" );
m_grid.Bind( wxEVT_UPDATE_UI,
[this]( wxUpdateUIEvent& aEvent )
{
recomputeGridWidths();
aEvent.Skip();
} );
m_grid.Bind( wxEVT_SIZE,
[this]( wxSizeEvent& aEvent )
{
onSizeEvent( aEvent );
aEvent.Skip();
} );
// Handles the case when the user changes the cell content to be longer than the
// current column size
m_grid.Bind( wxEVT_GRID_CELL_CHANGED,
[this]( wxGridEvent& aEvent )
{
m_gridWidthsDirty = true;
aEvent.Skip();
} );
}
void WX_GRID_AUTOSIZER::recomputeGridWidths()
{
if( m_gridWidthsDirty )
{
const int width = m_grid.GetClientRect().GetWidth() - wxSystemSettings::GetMetric( wxSYS_VSCROLL_X );
std::optional<int> flexibleMinWidth;
for( const auto& [colIndex, minWidth] : m_autosizedCols )
{
m_grid.AutoSizeColumn( colIndex );
const int colSize = m_grid.GetColSize( colIndex );
int minWidthScaled = m_grid.FromDIP( minWidth );
m_grid.SetColSize( colIndex, std::max( minWidthScaled, colSize ) );
if( colIndex == m_flexibleCol )
{
flexibleMinWidth = minWidthScaled;
}
}
// Gather all the widths except the flexi one
int nonFlexibleWidth = 0;
for( int i = 0; i < m_grid.GetNumberCols(); ++i )
{
if( i != m_flexibleCol )
{
nonFlexibleWidth += m_grid.GetColSize( i );
}
}
m_grid.SetColSize( m_flexibleCol,
std::max( flexibleMinWidth.value_or( 0 ), width - nonFlexibleWidth ) );
// Store the state for next time
m_gridWidth = m_grid.GetSize().GetX();
m_gridWidthsDirty = false;
}
}
void WX_GRID_AUTOSIZER::onSizeEvent( wxSizeEvent& aEvent )
{
const int width = aEvent.GetSize().GetX();
if( width != m_gridWidth )
m_gridWidthsDirty = true;
}

34
eeschema/dialogs/dialog_label_properties.cpp

@ -63,7 +63,6 @@ DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_L
m_cbMultiLine->SetValue( multiLine );
m_fields = new FIELDS_GRID_TABLE( this, aParent, m_grid, m_currentLabel );
m_width = 100; // Will be later set to a better value
m_delayedFocusRow = -1;
m_delayedFocusColumn = FDC_VALUE;
@ -374,7 +373,6 @@ bool DIALOG_LABEL_PROPERTIES::TransferDataToWindow()
// notify the grid
wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, (int) m_fields->size() );
m_grid->ProcessTableMessage( msg );
AdjustGridColumns( m_grid->GetRect().GetWidth() );
if( m_shapeSizer->AreAnyItemsShown() )
{
@ -833,24 +831,6 @@ void DIALOG_LABEL_PROPERTIES::OnMoveDown( wxCommandEvent& event )
}
void DIALOG_LABEL_PROPERTIES::AdjustGridColumns( int aWidth )
{
m_width = aWidth;
// Account for scroll bars
aWidth -= ( m_grid->GetSize().x - m_grid->GetClientSize().x );
m_grid->AutoSizeColumn( 0 );
m_grid->SetColSize( 0, std::max( 72, m_grid->GetColSize( 0 ) ) );
int fixedColsWidth = m_grid->GetColSize( 0 );
for( int i = 2; i < m_grid->GetNumberCols(); i++ )
fixedColsWidth += m_grid->GetColSize( i );
m_grid->SetColSize( 1, std::max( 120, aWidth - fixedColsWidth ) );
}
void DIALOG_LABEL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
{
std::bitset<64> shownColumns = m_grid->GetShownColumns();
@ -860,7 +840,7 @@ void DIALOG_LABEL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
m_shownColumns = shownColumns;
if( !m_grid->IsCellEditControlShown() )
AdjustGridColumns( m_grid->GetRect().GetWidth() );
m_grid->SetGridWidthsDirty();
}
// Handle a delayed focus
@ -876,18 +856,6 @@ void DIALOG_LABEL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
}
void DIALOG_LABEL_PROPERTIES::OnSizeGrid( wxSizeEvent& event )
{
int new_size = event.GetSize().GetX();
if( m_width != new_size )
AdjustGridColumns( new_size );
// Always propagate for a grid repaint (needed if the height changes, as well as width)
event.Skip();
}
void DIALOG_LABEL_PROPERTIES::onMultiLabelCheck( wxCommandEvent& event )
{
if( m_currentLabel->Type() == SCH_GLOBAL_LABEL_T || m_currentLabel->Type() == SCH_LABEL_T )

10
eeschema/dialogs/dialog_label_properties.h

@ -21,8 +21,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef DIALOG_LABEL_PROPERTIES_H
#define DIALOG_LABEL_PROPERTIES_H
#pragma once
#include <fields_grid_table.h>
#include <widgets/unit_binder.h>
@ -64,17 +63,13 @@ private:
void OnMoveUp( wxCommandEvent& event ) override;
void OnMoveDown( wxCommandEvent& event ) override;
void onMultiLabelCheck( wxCommandEvent& aEvent ) override;
void OnSizeGrid( wxSizeEvent& event ) override;
void OnUpdateUI( wxUpdateUIEvent& event ) override;
void AdjustGridColumns( int aWidth );
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
private:
SCH_EDIT_FRAME* m_Parent;
int m_width;
int m_delayedFocusRow;
int m_delayedFocusColumn;
@ -94,6 +89,3 @@ private:
std::list<std::unique_ptr<SCH_LABEL_BASE>>* m_labelList;
};
#endif // DIALOG_LABEL_PROPERTIES_H

2
eeschema/dialogs/dialog_label_properties_base.cpp

@ -334,7 +334,6 @@ DIALOG_LABEL_PROPERTIES_BASE::DIALOG_LABEL_PROPERTIES_BASE( wxWindow* parent, wx
m_valueMultiLine->Connect( wxEVT_CHAR_HOOK, wxKeyEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnValueCharHook ), NULL, this );
m_cbMultiLine->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::onMultiLabelCheck ), NULL, this );
m_syntaxHelp->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnFormattingHelp ), NULL, this );
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnMoveDown ), NULL, this );
@ -352,7 +351,6 @@ DIALOG_LABEL_PROPERTIES_BASE::~DIALOG_LABEL_PROPERTIES_BASE()
m_valueMultiLine->Disconnect( wxEVT_CHAR_HOOK, wxKeyEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnValueCharHook ), NULL, this );
m_cbMultiLine->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::onMultiLabelCheck ), NULL, this );
m_syntaxHelp->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnFormattingHelp ), NULL, this );
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LABEL_PROPERTIES_BASE::OnMoveDown ), NULL, this );

1
eeschema/dialogs/dialog_label_properties_base.fbp

@ -731,7 +731,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnSizeGrid</event>
</object>
</object>
<object class="sizeritem" expanded="true">

1
eeschema/dialogs/dialog_label_properties_base.h

@ -112,7 +112,6 @@ class DIALOG_LABEL_PROPERTIES_BASE : public DIALOG_SHIM
virtual void OnCBValueCharHook( wxKeyEvent& event ) { event.Skip(); }
virtual void onMultiLabelCheck( wxCommandEvent& event ) { event.Skip(); }
virtual void OnFormattingHelp( wxHyperlinkEvent& event ) { event.Skip(); }
virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); }

36
eeschema/dialogs/dialog_lib_symbol_properties.cpp

@ -267,7 +267,6 @@ bool DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataToWindow()
// notify the grid
wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_fields->GetNumberRows() );
m_grid->ProcessTableMessage( msg );
adjustGridColumns();
m_SymbolNameCtrl->ChangeValue( UnescapeString( m_libEntry->GetName() ) );
@ -1070,23 +1069,6 @@ void DIALOG_LIB_SYMBOL_PROPERTIES::OnEditFootprintFilter( wxCommandEvent& event
}
void DIALOG_LIB_SYMBOL_PROPERTIES::adjustGridColumns()
{
// Account for scroll bars
int width = KIPLATFORM::UI::GetUnobscuredSize( m_grid ).x;
m_grid->AutoSizeColumn( FDC_NAME );
m_grid->SetColSize( FDC_NAME, std::max( 72, m_grid->GetColSize( FDC_NAME ) ) );
int fixedColsWidth = m_grid->GetColSize( FDC_NAME );
for( int i = 2; i < m_grid->GetNumberCols(); i++ )
fixedColsWidth += m_grid->GetColSize( i );
m_grid->SetColSize( FDC_VALUE, std::max( 120, width - fixedColsWidth ) );
}
void DIALOG_LIB_SYMBOL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
{
m_OptionPartsInterchangeable->Enable( m_unitSpinCtrl->GetValue() > 1 );
@ -1113,7 +1095,7 @@ void DIALOG_LIB_SYMBOL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
m_shownColumns = shownColumns;
if( !m_grid->IsCellEditControlShown() )
adjustGridColumns();
m_grid->SetGridWidthsDirty();
}
// Handle a delayed focus. The delay allows us to:
@ -1163,22 +1145,6 @@ void DIALOG_LIB_SYMBOL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
}
void DIALOG_LIB_SYMBOL_PROPERTIES::OnSizeGrid( wxSizeEvent& event )
{
auto new_size = event.GetSize();
if( new_size != m_size )
{
m_size = new_size;
adjustGridColumns();
}
// Always propagate a wxSizeEvent:
event.Skip();
}
void DIALOG_LIB_SYMBOL_PROPERTIES::syncControlStates( bool aIsAlias )
{
bSizerLowerBasicPanel->Show( !aIsAlias );

3
eeschema/dialogs/dialog_lib_symbol_properties.h

@ -73,7 +73,6 @@ private:
void OnSymbolNameText( wxCommandEvent& event ) override;
void OnAddFootprintFilter( wxCommandEvent& event ) override;
void OnEditFootprintFilter( wxCommandEvent& event ) override;
void OnSizeGrid( wxSizeEvent& event ) override;
void OnGridCellChanging( wxGridEvent& event );
void OnGridCellChanged( wxGridEvent& event );
void OnGridMotion( wxMouseEvent& event );
@ -88,7 +87,6 @@ private:
void OnAvailablePinsClick( wxCommandEvent& event ) override;
bool updateUnitCount();
void adjustGridColumns();
void syncControlStates( bool aIsAlias );
public:
@ -108,7 +106,6 @@ public:
wxString m_delayedErrorMessage;
std::bitset<64> m_shownColumns;
wxSize m_size;
PANEL_EMBEDDED_FILES* m_embeddedFiles;

2
eeschema/dialogs/dialog_lib_symbol_properties_base.cpp

@ -592,7 +592,6 @@ DIALOG_LIB_SYMBOL_PROPERTIES_BASE::DIALOG_LIB_SYMBOL_PROPERTIES_BASE( wxWindow*
// Connect Events
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnUpdateUI ) );
m_NoteBook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnPageChanging ), NULL, this );
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnMoveDown ), NULL, this );
@ -640,7 +639,6 @@ DIALOG_LIB_SYMBOL_PROPERTIES_BASE::~DIALOG_LIB_SYMBOL_PROPERTIES_BASE()
// Disconnect Events
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnUpdateUI ) );
m_NoteBook->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnPageChanging ), NULL, this );
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_SYMBOL_PROPERTIES_BASE::OnMoveDown ), NULL, this );

1
eeschema/dialogs/dialog_lib_symbol_properties_base.fbp

@ -293,7 +293,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnSizeGrid</event>
</object>
</object>
<object class="sizeritem" expanded="true">

1
eeschema/dialogs/dialog_lib_symbol_properties_base.h

@ -112,7 +112,6 @@ class DIALOG_LIB_SYMBOL_PROPERTIES_BASE : public DIALOG_SHIM
// Virtual event handlers, override them in your derived class
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnPageChanging( wxNotebookEvent& event ) { event.Skip(); }
virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); }

36
eeschema/dialogs/dialog_sheet_properties.cpp

@ -157,7 +157,6 @@ bool DIALOG_SHEET_PROPERTIES::TransferDataToWindow()
// notify the grid
wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_fields->size() );
m_grid->ProcessTableMessage( msg );
AdjustGridColumns();
// border width
m_borderWidth.SetValue( m_sheet->GetBorderWidth() );
@ -780,23 +779,6 @@ void DIALOG_SHEET_PROPERTIES::OnMoveDown( wxCommandEvent& event )
}
void DIALOG_SHEET_PROPERTIES::AdjustGridColumns()
{
// Account for scroll bars
int width = KIPLATFORM::UI::GetUnobscuredSize( m_grid ).x;
m_grid->AutoSizeColumn( FDC_NAME );
m_grid->SetColSize( FDC_NAME, std::max( 72, m_grid->GetColSize( FDC_NAME ) ) );
int fixedColsWidth = m_grid->GetColSize( FDC_NAME );
for( int i = 2; i < m_grid->GetNumberCols(); i++ )
fixedColsWidth += m_grid->GetColSize( i );
m_grid->SetColSize( 1, std::max( 120, width - fixedColsWidth ) );
}
void DIALOG_SHEET_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
{
std::bitset<64> shownColumns = m_grid->GetShownColumns();
@ -806,7 +788,7 @@ void DIALOG_SHEET_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
m_shownColumns = shownColumns;
if( !m_grid->IsCellEditControlShown() )
AdjustGridColumns();
m_grid->SetGridWidthsDirty();
}
// Propagate changes in sheetname to displayed hierarchical path
@ -856,19 +838,3 @@ void DIALOG_SHEET_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
m_delayedFocusColumn = -1;
}
}
void DIALOG_SHEET_PROPERTIES::OnSizeGrid( wxSizeEvent& event )
{
auto new_size = event.GetSize();
if( m_size != new_size )
{
m_size = new_size;
AdjustGridColumns();
}
// Always propagate for a grid repaint (needed if the height changes, as well as width)
event.Skip();
}

4
eeschema/dialogs/dialog_sheet_properties.h

@ -55,12 +55,9 @@ private:
void OnDeleteField( wxCommandEvent& event ) override;
void OnMoveUp( wxCommandEvent& event ) override;
void OnMoveDown( wxCommandEvent& event ) override;
void OnSizeGrid( wxSizeEvent& event ) override;
void OnGridCellChanging( wxGridEvent& event );
void OnUpdateUI( wxUpdateUIEvent& event ) override;
void AdjustGridColumns();
private:
SCH_EDIT_FRAME* m_frame;
SCH_SHEET* m_sheet;
@ -69,7 +66,6 @@ private:
bool* m_updateHierarchyNavigator;
wxString* m_sourceSheetFilename;
wxSize m_size;
int m_delayedFocusRow;
int m_delayedFocusColumn;
std::bitset<64> m_shownColumns;

8
eeschema/dialogs/dialog_sheet_properties_base.cpp

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -43,7 +43,7 @@ DIALOG_SHEET_PROPERTIES_BASE::DIALOG_SHEET_PROPERTIES_BASE( wxWindow* parent, wx
// Columns
m_grid->SetColSize( 0, 72 );
m_grid->SetColSize( 1, 120 );
m_grid->SetColSize( 1, 72 );
m_grid->SetColSize( 2, 48 );
m_grid->SetColSize( 3, 72 );
m_grid->SetColSize( 4, 72 );
@ -53,7 +53,7 @@ DIALOG_SHEET_PROPERTIES_BASE::DIALOG_SHEET_PROPERTIES_BASE( wxWindow* parent, wx
m_grid->SetColSize( 8, 84 );
m_grid->SetColSize( 9, 84 );
m_grid->SetColSize( 10, 84 );
m_grid->SetColSize( 11, 140 );
m_grid->SetColSize( 11, 60 );
m_grid->SetColSize( 12, 48 );
m_grid->EnableDragColMove( false );
m_grid->EnableDragColSize( true );
@ -278,7 +278,6 @@ DIALOG_SHEET_PROPERTIES_BASE::DIALOG_SHEET_PROPERTIES_BASE( wxWindow* parent, wx
// Connect Events
this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnInitDlg ) );
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnUpdateUI ) );
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnMoveDown ), NULL, this );
@ -293,7 +292,6 @@ DIALOG_SHEET_PROPERTIES_BASE::~DIALOG_SHEET_PROPERTIES_BASE()
// Disconnect Events
this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnInitDlg ) );
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnUpdateUI ) );
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnSizeGrid ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SHEET_PROPERTIES_BASE::OnMoveDown ), NULL, this );

183
eeschema/dialogs/dialog_sheet_properties_base.fbp

@ -1,34 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="17"/>
<FileVersion major="1" minor="18"/>
<object class="Project" expanded="true">
<property name="class_decoration">; </property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="disconnect_mode">source_name</property>
<property name="disconnect_php_events">0</property>
<property name="disconnect_python_events">0</property>
<property name="cpp_class_decoration">; </property>
<property name="cpp_disconnect_events">1</property>
<property name="cpp_event_generation">connect</property>
<property name="cpp_help_provider">none</property>
<property name="cpp_namespace"></property>
<property name="cpp_precompiled_header"></property>
<property name="cpp_use_array_enum">0</property>
<property name="cpp_use_enum">0</property>
<property name="embedded_files_path">res</property>
<property name="encoding">ANSI</property>
<property name="event_generation">connect</property>
<property name="file">dialog_sheet_properties_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="image_path_wrapper_function_name"></property>
<property name="indent_with_spaces"></property>
<property name="internationalize">1</property>
<property name="lua_skip_events">1</property>
<property name="lua_ui_table">UI</property>
<property name="name">dialog_sheet_properties_base</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="php_disconnect_events">0</property>
<property name="php_disconnect_mode">source_name</property>
<property name="php_skip_events">1</property>
<property name="python_disconnect_events">0</property>
<property name="python_disconnect_mode">source_name</property>
<property name="python_image_path_wrapper_function_name"></property>
<property name="python_indent_with_spaces"></property>
<property name="python_skip_events">1</property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_array_enum">0</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<property name="use_native_eol">0</property>
<object class="Dialog" expanded="true">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
@ -73,10 +75,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -155,10 +157,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="autosize_cols">0</property>
<property name="autosize_rows">0</property>
<property name="best_size"></property>
@ -177,7 +179,7 @@
<property name="col_label_values">&quot;Name&quot; &quot;Value&quot; &quot;Show&quot; &quot;H Align&quot; &quot;V Align&quot; &quot;Italic&quot; &quot;Bold&quot; &quot;Text Size&quot; &quot;Orientation&quot; &quot;X Position&quot; &quot;Y Position&quot; &quot;Font&quot; &quot;Color&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">13</property>
<property name="column_sizes">72,120,48,72,72,48,48,84,84,84,84,140,48</property>
<property name="column_sizes">72,72,48,72,72,48,48,84,84,84,84,60,48</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -233,7 +235,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnSizeGrid</event>
</object>
</object>
<object class="sizeritem" expanded="true">
@ -254,10 +255,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
@ -329,10 +330,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
@ -404,10 +405,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
@ -489,10 +490,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
@ -608,10 +609,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -670,10 +671,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -697,7 +698,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="maxlength">0</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@ -747,10 +748,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -823,10 +824,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -889,10 +890,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -955,10 +956,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1052,10 +1053,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1123,10 +1124,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1185,10 +1186,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1212,7 +1213,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="maxlength">0</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@ -1250,10 +1251,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1322,10 +1323,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1384,10 +1385,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1460,10 +1461,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1531,10 +1532,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1593,10 +1594,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1677,10 +1678,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
@ -1739,10 +1740,10 @@
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>

4
eeschema/dialogs/dialog_sheet_properties_base.h

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -37,7 +37,6 @@ class WX_INFOBAR;
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_SHEET_PROPERTIES_BASE
///////////////////////////////////////////////////////////////////////////////
@ -78,7 +77,6 @@ class DIALOG_SHEET_PROPERTIES_BASE : public DIALOG_SHIM
// Virtual event handlers, override them in your derived class
virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); }

44
eeschema/dialogs/dialog_symbol_properties.cpp

@ -309,8 +309,6 @@ DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH
DIALOG_SYMBOL_PROPERTIES_BASE( aParent ),
m_symbol( nullptr ),
m_part( nullptr ),
m_fieldsSize( 0, 0 ),
m_lastRequestedFieldsSize( 0, 0 ),
m_lastRequestedPinsSize( 0, 0 ),
m_editorShown( false ),
m_fields( nullptr ),
@ -470,7 +468,6 @@ bool DIALOG_SYMBOL_PROPERTIES::TransferDataToWindow()
// notify the grid
wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_fields->GetNumberRows() );
m_fieldsGrid->ProcessTableMessage( msg );
AdjustFieldsGridColumns();
// If a multi-unit symbol, set up the unit selector and interchangeable checkbox.
if( m_symbol->IsMultiUnit() )
@ -991,25 +988,6 @@ void DIALOG_SYMBOL_PROPERTIES::OnPinTableColSort( wxGridEvent& aEvent )
}
void DIALOG_SYMBOL_PROPERTIES::AdjustFieldsGridColumns()
{
wxGridUpdateLocker deferRepaintsTillLeavingScope( m_fieldsGrid );
// Account for scroll bars
int fieldsWidth = KIPLATFORM::UI::GetUnobscuredSize( m_fieldsGrid ).x;
m_fieldsGrid->AutoSizeColumn( 0 );
m_fieldsGrid->SetColSize( 0, std::max( 72, m_fieldsGrid->GetColSize( 0 ) ) );
int fixedColsWidth = m_fieldsGrid->GetColSize( 0 );
for( int i = 2; i < m_fieldsGrid->GetNumberCols(); i++ )
fixedColsWidth += m_fieldsGrid->GetColSize( i );
m_fieldsGrid->SetColSize( 1, std::max( 120, fieldsWidth - fixedColsWidth ) );
}
void DIALOG_SYMBOL_PROPERTIES::AdjustPinsGridColumns()
{
wxGridUpdateLocker deferRepaintsTillLeavingScope( m_pinGrid );
@ -1041,7 +1019,7 @@ void DIALOG_SYMBOL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
m_shownColumns = shownColumns;
if( !m_fieldsGrid->IsCellEditControlShown() )
AdjustFieldsGridColumns();
m_fieldsGrid->SetGridWidthsDirty();
}
}
@ -1080,26 +1058,6 @@ void DIALOG_SYMBOL_PROPERTIES::HandleDelayedSelection( wxCommandEvent& event )
cellEditor->DecRef(); // we're done; must release
}
void DIALOG_SYMBOL_PROPERTIES::OnSizeFieldsGrid( wxSizeEvent& event )
{
wxSize new_size = event.GetSize();
if( ( !m_editorShown || m_lastRequestedFieldsSize != new_size ) && m_fieldsSize != new_size )
{
m_fieldsSize = new_size;
AdjustFieldsGridColumns();
}
// We store this value to check whether the dialog is changing size. This might indicate
// that the user is scaling the dialog with a grid-cell-editor shown. Some editors do not
// close (at least on GTK) when the user drags a dialog corner
m_lastRequestedFieldsSize = new_size;
// Always propagate for a grid repaint (needed if the height changes, as well as width)
event.Skip();
}
void DIALOG_SYMBOL_PROPERTIES::OnSizePinsGrid( wxSizeEvent& event )
{

4
eeschema/dialogs/dialog_symbol_properties.h

@ -74,7 +74,6 @@ private:
void OnEditSpiceModel( wxCommandEvent& event ) override;
void OnPinTableColSort( wxGridEvent& aEvent );
void OnPinTableCellEdited( wxGridEvent& event ) override;
void OnSizeFieldsGrid( wxSizeEvent& event ) override;
void OnSizePinsGrid( wxSizeEvent& event ) override;
void OnGridCellChanging( wxGridEvent& event );
void OnUpdateUI( wxUpdateUIEvent& event ) override;
@ -91,7 +90,6 @@ private:
void OnUpdateSymbol( wxCommandEvent& ) override;
void OnExchangeSymbol( wxCommandEvent& ) override;
void AdjustFieldsGridColumns();
void AdjustPinsGridColumns();
void HandleDelayedFocus( wxCommandEvent& event );
void HandleDelayedSelection( wxCommandEvent& event );
@ -103,8 +101,6 @@ private:
SCH_SYMBOL* m_symbol;
LIB_SYMBOL* m_part;
wxSize m_fieldsSize;
wxSize m_lastRequestedFieldsSize;
wxSize m_pinsSize;
wxSize m_lastRequestedPinsSize;
bool m_editorShown;

2
eeschema/dialogs/dialog_symbol_properties_base.cpp

@ -349,7 +349,6 @@ DIALOG_SYMBOL_PROPERTIES_BASE::DIALOG_SYMBOL_PROPERTIES_BASE( wxWindow* parent,
m_notebook1->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnPageChanging ), NULL, this );
m_fieldsGrid->Connect( wxEVT_GRID_EDITOR_HIDDEN, wxGridEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnGridEditorHidden ), NULL, this );
m_fieldsGrid->Connect( wxEVT_GRID_EDITOR_SHOWN, wxGridEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnGridEditorShown ), NULL, this );
m_fieldsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnSizeFieldsGrid ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveDown ), NULL, this );
@ -382,7 +381,6 @@ DIALOG_SYMBOL_PROPERTIES_BASE::~DIALOG_SYMBOL_PROPERTIES_BASE()
m_notebook1->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnPageChanging ), NULL, this );
m_fieldsGrid->Disconnect( wxEVT_GRID_EDITOR_HIDDEN, wxGridEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnGridEditorHidden ), NULL, this );
m_fieldsGrid->Disconnect( wxEVT_GRID_EDITOR_SHOWN, wxGridEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnGridEditorShown ), NULL, this );
m_fieldsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnSizeFieldsGrid ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveDown ), NULL, this );

1
eeschema/dialogs/dialog_symbol_properties_base.fbp

@ -287,7 +287,6 @@
<property name="window_style"></property>
<event name="OnGridEditorHidden">OnGridEditorHidden</event>
<event name="OnGridEditorShown">OnGridEditorShown</event>
<event name="OnSize">OnSizeFieldsGrid</event>
</object>
</object>
<object class="sizeritem" expanded="false">

1
eeschema/dialogs/dialog_symbol_properties_base.h

@ -86,7 +86,6 @@ class DIALOG_SYMBOL_PROPERTIES_BASE : public DIALOG_SHIM
virtual void OnPageChanging( wxNotebookEvent& event ) { event.Skip(); }
virtual void OnGridEditorHidden( wxGridEvent& event ) { event.Skip(); }
virtual void OnGridEditorShown( wxGridEvent& event ) { event.Skip(); }
virtual void OnSizeFieldsGrid( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); }

25
eeschema/dialogs/panel_template_fieldnames.cpp

@ -64,14 +64,13 @@ PANEL_TEMPLATE_FIELDNAMES::PANEL_TEMPLATE_FIELDNAMES( wxWindow* aWindow,
m_bpMoveUp->SetBitmap( KiBitmapBundle( BITMAPS::small_up ) );
m_bpMoveDown->SetBitmap( KiBitmapBundle( BITMAPS::small_down ) );
m_checkboxColWidth = m_grid->GetColSize( 1 );
m_grid->SetUseNativeColLabels();
m_grid->PushEventHandler( new GRID_TRICKS( m_grid, [this]( wxCommandEvent& aEvent )
{
OnAddButtonClick( aEvent );
} ) );
m_grid->SetupColumnAutosizer( 0 );
m_grid->SetSelectionMode( wxGrid::wxGridSelectRows );
}
@ -252,28 +251,6 @@ bool PANEL_TEMPLATE_FIELDNAMES::TransferDataFromWindow()
}
void PANEL_TEMPLATE_FIELDNAMES::AdjustGridColumns( int aWidth )
{
if( aWidth <= 0 )
return;
// Account for scroll bars
aWidth -= ( m_grid->GetSize().x - m_grid->GetClientSize().x );
m_grid->SetColSize( 0, std::max( 72, aWidth - 2 * m_checkboxColWidth ) );
m_grid->SetColSize( 1, m_checkboxColWidth );
m_grid->SetColSize( 2, m_checkboxColWidth );
}
void PANEL_TEMPLATE_FIELDNAMES::OnSizeGrid( wxSizeEvent& event )
{
AdjustGridColumns( event.GetSize().GetX() );
event.Skip();
}
void PANEL_TEMPLATE_FIELDNAMES::ImportSettingsFrom( TEMPLATES* templateMgr )
{
m_fields = templateMgr->GetTemplateFieldNames( m_global );

4
eeschema/dialogs/panel_template_fieldnames.h

@ -56,11 +56,8 @@ protected:
void OnDeleteButtonClick( wxCommandEvent& event ) override;
private:
void AdjustGridColumns( int aWidth );
void OnMoveUp( wxCommandEvent& event ) override;
void OnMoveDown( wxCommandEvent& event ) override;
void OnSizeGrid( wxSizeEvent& event ) override;
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
@ -73,7 +70,6 @@ protected:
std::vector<TEMPLATE_FIELDNAME> m_fields;
bool m_global; // Editing global (vs. project) fieldname templates
int m_checkboxColWidth;
TEMPLATES m_templateMgrInstance;
};

8
eeschema/dialogs/panel_template_fieldnames_base.cpp

@ -34,9 +34,9 @@ PANEL_TEMPLATE_FIELDNAMES_BASE::PANEL_TEMPLATE_FIELDNAMES_BASE( wxWindow* parent
m_grid->SetMargins( 0, 0 );
// Columns
m_grid->SetColSize( 0, 300 );
m_grid->SetColSize( 1, 60 );
m_grid->SetColSize( 2, 60 );
m_grid->SetColSize( 0, 180 );
m_grid->SetColSize( 1, 48 );
m_grid->SetColSize( 2, 48 );
m_grid->EnableDragColMove( false );
m_grid->EnableDragColSize( true );
m_grid->SetColLabelValue( 0, _("Name") );
@ -89,7 +89,6 @@ PANEL_TEMPLATE_FIELDNAMES_BASE::PANEL_TEMPLATE_FIELDNAMES_BASE( wxWindow* parent
bPanelSizer->Fit( this );
// Connect Events
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnSizeGrid ), NULL, this );
m_addFieldButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnAddButtonClick ), NULL, this );
m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnMoveDown ), NULL, this );
@ -99,7 +98,6 @@ PANEL_TEMPLATE_FIELDNAMES_BASE::PANEL_TEMPLATE_FIELDNAMES_BASE( wxWindow* parent
PANEL_TEMPLATE_FIELDNAMES_BASE::~PANEL_TEMPLATE_FIELDNAMES_BASE()
{
// Disconnect Events
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnSizeGrid ), NULL, this );
m_addFieldButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnAddButtonClick ), NULL, this );
m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnMoveUp ), NULL, this );
m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_TEMPLATE_FIELDNAMES_BASE::OnMoveDown ), NULL, this );

3
eeschema/dialogs/panel_template_fieldnames_base.fbp

@ -163,7 +163,7 @@
<property name="col_label_values">&quot;Name&quot; &quot;Visible&quot; &quot;URL&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">3</property>
<property name="column_sizes">300,60,60</property>
<property name="column_sizes">180,48,48</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -219,7 +219,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnSizeGrid</event>
</object>
</object>
<object class="sizeritem" expanded="true">

1
eeschema/dialogs/panel_template_fieldnames_base.h

@ -46,7 +46,6 @@ class PANEL_TEMPLATE_FIELDNAMES_BASE : public wxPanel
STD_BITMAP_BUTTON* m_deleteFieldButton;
// Virtual event handlers, override them in your derived class
virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); }

2
eeschema/fields_grid_table.cpp

@ -420,6 +420,8 @@ void FIELDS_GRID_TABLE::initGrid( WX_GRID* aGrid )
m_eval = std::make_unique<NUMERIC_EVALUATOR>( m_frame->GetUserUnits() );
aGrid->SetupColumnAutosizer( FDC_VALUE );
m_frame->Bind( EDA_EVT_UNITS_CHANGED, &FIELDS_GRID_TABLE::onUnitsChanged, this );
}

3
include/dialogs/dialog_configure_paths.h

@ -34,7 +34,6 @@
class HTML_WINDOW;
class WX_GRID_AUTOSIZER;
class DIALOG_CONFIGURE_PATHS: public DIALOG_CONFIGURE_PATHS_BASE
@ -66,8 +65,6 @@ private:
wxString m_curdir;
wxTextValidator m_aliasValidator;
std::unique_ptr<WX_GRID_AUTOSIZER> m_gridAutosizer;
HTML_WINDOW* m_helpBox;
int m_heightBeforeHelp;
};

3
include/panel_text_variables.h

@ -30,7 +30,6 @@
#include <memory>
class PROJECT;
class WX_GRID_AUTOSIZER;
class PANEL_TEXT_VARIABLES: public PANEL_TEXT_VARIABLES_BASE
@ -66,6 +65,4 @@ private:
int m_errorCol;
wxTextValidator m_nameValidator;
std::unique_ptr<WX_GRID_AUTOSIZER> m_autoSizer;
};

28
include/widgets/wx_grid.h

@ -21,8 +21,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef KICAD_WX_GRID_H
#define KICAD_WX_GRID_H
#pragma once
#include <bitset>
#include <memory>
@ -280,6 +279,14 @@ public:
return wxGrid::DoGetBestSize();
}
/**
* Set autosize behaviour using wxFormBuilder column widths as minimums, with a single specified
* growable column.
*/
void SetupColumnAutosizer( int aFlexibleCol );
void SetGridWidthsDirty() { m_gridWidthsDirty = true; }
protected:
/**
* A re-implementation of wxGrid::DrawColLabel which left-aligns the first column and draws
@ -317,8 +324,13 @@ protected:
*/
std::pair<EDA_UNITS, EDA_DATA_TYPE> getColumnUnits( int aCol ) const;
private:
void recomputeGridWidths();
void onSizeEvent( wxSizeEvent& aEvent );
protected:
bool m_weOwnTable;
bool m_weOwnTable;
std::map<int, UNITS_PROVIDER*> m_unitsProviders;
std::unique_ptr<NUMERIC_EVALUATOR> m_eval;
@ -326,7 +338,11 @@ protected:
std::unordered_map<int, std::pair<EDA_UNITS, EDA_DATA_TYPE>> m_autoEvalColsUnits;
std::map< std::pair<int, int>, std::pair<wxString, wxString> > m_evalBeforeAfter;
std::optional<wxSize> m_minSizeOverride;
};
std::optional<wxSize> m_minSizeOverride;
#endif //KICAD_WX_GRID_H
std::map<int, int> m_autosizedCols; // map of col : min_width
int m_flexibleCol;
bool m_gridWidthsDirty = true;
int m_gridWidth = 0;
};

70
include/widgets/wx_grid_autosizer.h

@ -1,70 +0,0 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef WX_GRID_AUTOSIZER_H
#define WX_GRID_AUTOSIZER_H
#include <map>
#include <wx/grid.h>
/**
* Class that manages autosizing of columns in a wxGrid.
*
* The class will automatically resize the columns in the grid to fit the content,
* with one column being flexible and taking up the remaining space.
*/
class WX_GRID_AUTOSIZER
{
public:
/**
* Map of column indices to minimum widths.
*
* Use 0 to indicate that a column should be autosized to fit content,
* but without a minimum width.
*/
using COL_MIN_WIDTHS = std::map<int, int>;
/**
* @param aGrid The grid to manage.
* @param aAutosizedCols A map of columns to autosize: these will sized to fit,
* but not smaller than the width specified.
* @param aFlexibleCol The column that will take up the remaining space,
* with a minimum width if given in the aAutosizedCols map.
*/
WX_GRID_AUTOSIZER( wxGrid& aGrid, COL_MIN_WIDTHS aAutosizedCols, unsigned aFlexibleCol );
private:
void recomputeGridWidths();
void onSizeEvent( wxSizeEvent& aEvent );
wxGrid& m_grid;
COL_MIN_WIDTHS m_autosizedCols;
int m_flexibleCol;
bool m_gridWidthsDirty = true;
int m_gridWidth = 0;
};
#endif // WX_GRID_AUTOSIZER_H

88
kicad/dialogs/dialog_edit_cfg.cpp

@ -24,14 +24,13 @@
#include <paths.h>
#include <wx/button.h>
#include <wx/display.h>
#include <wx/fileconf.h>
#include <wx/log.h>
#include <wx/menu.h>
#include <wx/sizer.h>
#include <wx/settings.h>
#include <widgets/wx_grid.h>
#include <functional>
#include <memory>
#include <set>
static wxString paramValueString( const PARAM_CFG& aParam )
@ -42,11 +41,15 @@ static wxString paramValueString( const PARAM_CFG& aParam )
{
switch( aParam.m_Type )
{
case paramcfg_id::PARAM_INT: s << *static_cast<const PARAM_CFG_INT&>( aParam ).m_Pt_param; break;
case paramcfg_id::PARAM_INT:
s << *static_cast<const PARAM_CFG_INT&>( aParam ).m_Pt_param;
break;
case paramcfg_id::PARAM_DOUBLE:
s = wxString::FromCDouble( *static_cast<const PARAM_CFG_DOUBLE&>( aParam ).m_Pt_param );
break;
case paramcfg_id::PARAM_WXSTRING: s = *static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_Pt_param; break;
case paramcfg_id::PARAM_WXSTRING:
s = *static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_Pt_param;
break;
case paramcfg_id::PARAM_BOOL:
s << ( *static_cast<const PARAM_CFG_BOOL&>( aParam ).m_Pt_param ? wxS( "true" ) : wxS( "false" ) );
break;
@ -61,6 +64,7 @@ static wxString paramValueString( const PARAM_CFG& aParam )
return s;
}
static wxString paramDefaultString( const PARAM_CFG& aParam )
{
wxString s;
@ -69,15 +73,20 @@ static wxString paramDefaultString( const PARAM_CFG& aParam )
{
switch( aParam.m_Type )
{
case paramcfg_id::PARAM_INT: s << static_cast<const PARAM_CFG_INT&>( aParam ).m_Default; break;
case paramcfg_id::PARAM_INT:
s << static_cast<const PARAM_CFG_INT&>( aParam ).m_Default;
break;
case paramcfg_id::PARAM_DOUBLE:
s = wxString::FromCDouble( static_cast<const PARAM_CFG_DOUBLE&>( aParam ).m_Default );
break;
case paramcfg_id::PARAM_WXSTRING: s << static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_default; break;
case paramcfg_id::PARAM_WXSTRING:
s << static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_default;
break;
case paramcfg_id::PARAM_BOOL:
s << ( static_cast<const PARAM_CFG_BOOL&>( aParam ).m_Default ? wxS( "true" ) : wxS( "false" ) );
break;
default: break;
default:
break;
}
}
catch( ... )
@ -88,6 +97,7 @@ static wxString paramDefaultString( const PARAM_CFG& aParam )
return s;
}
static void writeParam( PARAM_CFG& aParam, const wxString& aValue )
{
switch( aParam.m_Type )
@ -126,8 +136,8 @@ static void writeParam( PARAM_CFG& aParam, const wxString& aValue )
break;
}
default:
wxASSERT_MSG( false,
wxS( "Unsupported PARAM_CFG variant: " ) + wxString::Format( wxS( "%d" ), aParam.m_Type ) );
wxASSERT_MSG( false, wxS( "Unsupported PARAM_CFG variant: " )
+ wxString::Format( wxS( "%d" ), aParam.m_Type ) );
}
}
@ -137,13 +147,16 @@ DIALOG_EDIT_CFG::DIALOG_EDIT_CFG( wxWindow* aParent ) :
{
m_cfgFile = wxFileName( PATHS::GetUserSettingsPath(), wxS( "kicad_advanced" ) );
m_grid = new wxGrid( this, wxID_ANY );
m_grid = new WX_GRID( this, wxID_ANY );
m_grid->CreateGrid( 0, 3 );
m_grid->SetColSize( 0, 100 ); // SetColumnAutosizer() will use these for minimum size
m_grid->SetColSize( 1, 80 );
m_grid->SetColLabelValue( 0, _( "Key" ) );
m_grid->SetColLabelValue( 1, _( "Value" ) );
m_grid->SetColLabelValue( 2, _( "Extant" ) );
m_grid->HideCol( 2 );
m_grid->SetRowLabelSize( 0 );
m_grid->SetupColumnAutosizer( 1 );
loadSettings();
@ -173,58 +186,8 @@ DIALOG_EDIT_CFG::DIALOG_EDIT_CFG( wxWindow* aParent ) :
Layout();
Centre();
// CallAfter ensures layout is complete before column adjustment
CallAfter(
[this]()
{
adjustColumnWidths();
} );
}
void DIALOG_EDIT_CFG::adjustColumnWidths()
{
if( !m_grid || m_grid->GetNumberRows() == 0 )
return;
m_grid->Layout();
wxSize clientSize = m_grid->GetClientSize();
int availableWidth = clientSize.GetWidth();
// Reserve space for vertical scrollbar when we have many rows
availableWidth -= wxSystemSettings::GetMetric( wxSYS_VSCROLL_X );
if( availableWidth < 200 )
availableWidth = 200;
int keyWidth = ( availableWidth * 6 ) / 10;
int valueWidth = availableWidth - keyWidth;
keyWidth = std::max( keyWidth, 100 );
valueWidth = std::max( valueWidth, 80 );
m_grid->SetColSize( 0, keyWidth );
m_grid->SetColSize( 1, valueWidth );
// Prevent wxWidgets auto-sizing from interfering
m_grid->SetColMinimalAcceptableWidth( 50 );
}
void DIALOG_EDIT_CFG::OnSize( wxSizeEvent& aEvent )
{
aEvent.Skip();
if( m_grid && m_grid->GetNumberRows() > 0 )
{
// Defer column adjustment until resize is complete
CallAfter(
[this]()
{
adjustColumnWidths();
} );
}
}
void DIALOG_EDIT_CFG::loadSettings()
{
@ -245,6 +208,7 @@ void DIALOG_EDIT_CFG::loadSettings()
}
}
void DIALOG_EDIT_CFG::saveSettings()
{
int rows = m_grid->GetNumberRows();
@ -273,6 +237,7 @@ void DIALOG_EDIT_CFG::saveSettings()
adv.Save();
}
void DIALOG_EDIT_CFG::OnCellChange( wxGridEvent& aEvent )
{
int row = aEvent.GetRow();
@ -298,6 +263,7 @@ void DIALOG_EDIT_CFG::OnCellChange( wxGridEvent& aEvent )
aEvent.Skip();
}
void DIALOG_EDIT_CFG::OnCellRightClick( wxGridEvent& aEvent )
{
m_contextRow = aEvent.GetRow();
@ -308,6 +274,7 @@ void DIALOG_EDIT_CFG::OnCellRightClick( wxGridEvent& aEvent )
menu.Unbind( wxEVT_MENU, &DIALOG_EDIT_CFG::OnResetDefault, this );
}
void DIALOG_EDIT_CFG::OnResetDefault( wxCommandEvent& aEvent )
{
if( m_contextRow < 0 )
@ -334,6 +301,7 @@ void DIALOG_EDIT_CFG::OnResetDefault( wxCommandEvent& aEvent )
saveSettings();
}
void DIALOG_EDIT_CFG::updateRowAppearance( int aRow )
{
bool ext = m_grid->GetCellValue( aRow, 2 ) == wxS( "1" );

7
kicad/dialogs/dialog_edit_cfg.h

@ -23,14 +23,14 @@
#include <wx/grid.h>
#include <wx/filename.h>
class WX_GRID;
class DIALOG_EDIT_CFG : public wxDialog
{
public:
DIALOG_EDIT_CFG( wxWindow* aParent );
private:
void adjustColumnWidths();
void OnSize( wxSizeEvent& aEvent );
void loadSettings();
void saveSettings();
void OnCellChange( wxGridEvent& aEvent );
@ -38,7 +38,8 @@ private:
void OnResetDefault( wxCommandEvent& aEvent );
void updateRowAppearance( int aRow );
wxGrid* m_grid;
private:
WX_GRID* m_grid;
wxFileName m_cfgFile;
int m_contextRow;
};

62
pcbnew/dialogs/dialog_footprint_properties.cpp

@ -65,9 +65,7 @@ DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParen
m_solderPaste( aParent, m_SolderPasteMarginLabel, m_SolderPasteMarginCtrl, m_SolderPasteMarginUnits ),
m_solderPasteRatio( aParent, m_PasteMarginRatioLabel, m_PasteMarginRatioCtrl, m_PasteMarginRatioUnits ),
m_returnValue( FP_PROPS_CANCEL ),
m_initialized( false ),
m_gridSize( 0, 0 ),
m_lastRequestedSize( 0, 0 )
m_initialized( false )
{
// Create the extra panels. Embedded files is referenced by the 3D model panel.
m_embeddedFiles = new PANEL_EMBEDDED_FILES( m_NoteBook, m_footprint );
@ -99,6 +97,7 @@ DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParen
m_itemsGrid->SetTable( m_fields );
m_itemsGrid->PushEventHandler( new GRID_TRICKS( m_itemsGrid ) );
m_itemsGrid->SetupColumnAutosizer( PFC_VALUE );
// Show/hide text item columns according to the user's preference
if( PCBNEW_SETTINGS* cfg = m_frame->GetPcbNewSettings() )
@ -390,7 +389,6 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow()
m_itemsGrid->SetRowLabelSize( 0 );
Layout();
adjustGridColumns();
m_initialized = true;
return true;
@ -729,28 +727,6 @@ void DIALOG_FOOTPRINT_PROPERTIES::OnDeleteField( wxCommandEvent& )
}
void DIALOG_FOOTPRINT_PROPERTIES::adjustGridColumns()
{
// Account for scroll bars
int itemsWidth = KIPLATFORM::UI::GetUnobscuredSize( m_itemsGrid ).x;
itemsWidth -= m_itemsGrid->GetRowLabelSize();
for( int i = 0; i < m_itemsGrid->GetNumberCols(); i++ )
{
if( i == 1 )
continue;
itemsWidth -= m_itemsGrid->GetColSize( i );
}
m_itemsGrid->SetColSize( 1, std::max( itemsWidth, m_itemsGrid->GetVisibleWidth( 0, true, false ) ) );
// Update the width of the 3D panel
m_3dPanel->AdjustGridColumnWidths();
}
void DIALOG_FOOTPRINT_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& )
{
if( !m_initialized )
@ -810,40 +786,6 @@ void DIALOG_FOOTPRINT_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& )
}
void DIALOG_FOOTPRINT_PROPERTIES::OnGridSize( wxSizeEvent& aEvent )
{
wxSize new_size = aEvent.GetSize();
if( ( !m_itemsGrid->IsCellEditControlShown() || m_lastRequestedSize != new_size )
&& m_gridSize != new_size )
{
m_gridSize = new_size;
// A trick to fix a cosmetic issue: when, in m_itemsGrid, a layer selector widget has
// the focus (is activated in column 6) when resizing the grid, the widget is not moved.
// So just change the widget having the focus in this case
if( m_NoteBook->GetSelection() == 0 && !m_itemsGrid->HasFocus() )
{
int col = m_itemsGrid->GetGridCursorCol();
if( col == 6 ) // a layer selector widget can be activated
m_itemsGrid->SetFocus();
}
adjustGridColumns();
}
// We store this value to check whether the dialog is changing size. This might indicate
// that the user is scaling the dialog with an editor shown. Some editors do not close
// (at least on GTK) when the user drags a dialog corner
m_lastRequestedSize = new_size;
// Always propagate for a grid repaint (needed if the height changes, as well as width)
aEvent.Skip();
}
void DIALOG_FOOTPRINT_PROPERTIES::OnPageChanging( wxNotebookEvent& aEvent )
{
if( !m_itemsGrid->CommitPendingChanges() )

5
pcbnew/dialogs/dialog_footprint_properties.h

@ -69,7 +69,6 @@ private:
void EditLibraryFootprint( wxCommandEvent& ) override;
void UpdateFootprint( wxCommandEvent& ) override;
void ChangeFootprint( wxCommandEvent& ) override;
void OnGridSize( wxSizeEvent& aEvent ) override;
void OnAddField( wxCommandEvent& ) override;
void OnDeleteField( wxCommandEvent& ) override;
void OnUpdateUI( wxUpdateUIEvent& ) override;
@ -79,8 +78,6 @@ private:
void OnChoice( wxCommandEvent& event ) override;
void OnCheckBox( wxCommandEvent& event ) override;
void adjustGridColumns();
private:
PCB_EDIT_FRAME* m_frame;
FOOTPRINT* m_footprint;
@ -109,8 +106,6 @@ private:
bool m_initialized;
wxSize m_gridSize;
wxSize m_lastRequestedSize;
PANEL_EMBEDDED_FILES* m_embeddedFiles;
};

24
pcbnew/dialogs/dialog_footprint_properties_base.cpp

@ -36,17 +36,17 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::DIALOG_FOOTPRINT_PROPERTIES_BASE( wxWindow* pa
m_itemsGrid->SetMargins( 0, 0 );
// Columns
m_itemsGrid->SetColSize( 0, 124 );
m_itemsGrid->SetColSize( 1, 60 );
m_itemsGrid->SetColSize( 2, 110 );
m_itemsGrid->SetColSize( 3, 110 );
m_itemsGrid->SetColSize( 4, 110 );
m_itemsGrid->SetColSize( 5, 60 );
m_itemsGrid->SetColSize( 6, 140 );
m_itemsGrid->SetColSize( 7, 110 );
m_itemsGrid->SetColSize( 8, 110 );
m_itemsGrid->SetColSize( 9, 110 );
m_itemsGrid->SetColSize( 10, 110 );
m_itemsGrid->SetColSize( 0, 84 );
m_itemsGrid->SetColSize( 1, 48 );
m_itemsGrid->SetColSize( 2, 84 );
m_itemsGrid->SetColSize( 3, 84 );
m_itemsGrid->SetColSize( 4, 84 );
m_itemsGrid->SetColSize( 5, 48 );
m_itemsGrid->SetColSize( 6, 84 );
m_itemsGrid->SetColSize( 7, 84 );
m_itemsGrid->SetColSize( 8, 48 );
m_itemsGrid->SetColSize( 9, 84 );
m_itemsGrid->SetColSize( 10, 84 );
m_itemsGrid->EnableDragColMove( false );
m_itemsGrid->EnableDragColSize( true );
m_itemsGrid->SetColLabelValue( 0, _("Text Items") );
@ -425,7 +425,6 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::DIALOG_FOOTPRINT_PROPERTIES_BASE( wxWindow* pa
this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnInitDlg ) );
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnUpdateUI ) );
m_NoteBook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnPageChanging ), NULL, this );
m_itemsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnGridSize ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnDeleteField ), NULL, this );
m_ModPositionX->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnText ), NULL, this );
@ -457,7 +456,6 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::~DIALOG_FOOTPRINT_PROPERTIES_BASE()
this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnInitDlg ) );
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnUpdateUI ) );
m_NoteBook->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnPageChanging ), NULL, this );
m_itemsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnGridSize ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnAddField ), NULL, this );
m_bpDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnDeleteField ), NULL, this );
m_ModPositionX->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnText ), NULL, this );

3
pcbnew/dialogs/dialog_footprint_properties_base.fbp

@ -229,7 +229,7 @@
<property name="col_label_values">&quot;Text Items&quot; &quot;Show&quot; &quot;Width&quot; &quot;Height&quot; &quot;Thickness&quot; &quot;Italic&quot; &quot;Layer&quot; &quot;Orientation&quot; &quot;Keep Upright&quot; &quot;X Offset&quot; &quot;Y Offset&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">11</property>
<property name="column_sizes">124,60,110,110,110,60,140,110,110,110,110</property>
<property name="column_sizes">84,48,84,84,84,48,84,84,48,84,84</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -285,7 +285,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnGridSize</event>
</object>
</object>
<object class="sizeritem" expanded="true">

1
pcbnew/dialogs/dialog_footprint_properties_base.h

@ -106,7 +106,6 @@ class DIALOG_FOOTPRINT_PROPERTIES_BASE : public DIALOG_SHIM
virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnPageChanging( wxNotebookEvent& event ) { event.Skip(); }
virtual void OnGridSize( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnDeleteField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnText( wxCommandEvent& event ) { event.Skip(); }

77
pcbnew/dialogs/dialog_footprint_properties_fp_editor.cpp

@ -161,9 +161,7 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR( FO
m_netClearance( aParent, m_NetClearanceLabel, m_NetClearanceCtrl, m_NetClearanceUnits ),
m_solderMask( aParent, m_SolderMaskMarginLabel, m_SolderMaskMarginCtrl, m_SolderMaskMarginUnits ),
m_solderPaste( aParent, m_SolderPasteMarginLabel, m_SolderPasteMarginCtrl, m_SolderPasteMarginUnits ),
m_solderPasteRatio( aParent, m_PasteMarginRatioLabel, m_PasteMarginRatioCtrl, m_PasteMarginRatioUnits ),
m_gridSize( 0, 0 ),
m_lastRequestedSize( 0, 0 )
m_solderPasteRatio( aParent, m_PasteMarginRatioLabel, m_PasteMarginRatioCtrl, m_PasteMarginRatioUnits )
{
SetEvtHandlerEnabled( false );
@ -227,6 +225,12 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR( FO
OnAddCustomLayer( aEvent );
} ) );
m_itemsGrid->SetupColumnAutosizer( PFC_VALUE );
m_privateLayersGrid->SetupColumnAutosizer( 0 );
m_nettieGroupsGrid->SetupColumnAutosizer( 0 );
m_jumperGroupsGrid->SetupColumnAutosizer( 0 );
m_customUserLayersGrid->SetupColumnAutosizer( 0 );
m_itemsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
m_privateLayersGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
m_nettieGroupsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
@ -479,7 +483,6 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow()
m_itemsGrid->SetRowLabelSize( 0 );
Layout();
adjustGridColumns();
m_initialized = true;
return true;
@ -1075,39 +1078,6 @@ void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::onRemoveGroup( WX_GRID* aGrid )
}
void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::adjustGridColumns()
{
// Account for scroll bars
int itemsWidth = KIPLATFORM::UI::GetUnobscuredSize( m_itemsGrid ).x;
itemsWidth -= m_itemsGrid->GetRowLabelSize();
for( int i = 0; i < m_itemsGrid->GetNumberCols(); i++ )
{
if( i == 1 )
continue;
itemsWidth -= m_itemsGrid->GetColSize( i );
}
m_itemsGrid->SetColSize( 1, std::max( itemsWidth, m_itemsGrid->GetVisibleWidth( 0, true, false ) ) );
auto updateSingleColumnGrid =
[]( WX_GRID* aGrid )
{
aGrid->SetColSize( 0, std::max( aGrid->GetClientSize().x, aGrid->GetVisibleWidth( 0 ) ) );
};
updateSingleColumnGrid( m_privateLayersGrid );
updateSingleColumnGrid( m_nettieGroupsGrid );
updateSingleColumnGrid( m_jumperGroupsGrid );
updateSingleColumnGrid( m_customUserLayersGrid );
// Update the width of the 3D panel
m_3dPanel->AdjustGridColumnWidths();
}
void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnUpdateUI( wxUpdateUIEvent& event )
{
// Handle a delayed focus. The delay allows us to:
@ -1161,39 +1131,6 @@ void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnUpdateUI( wxUpdateUIEvent& event )
}
void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnGridSize( wxSizeEvent& aEvent )
{
wxSize new_size = aEvent.GetSize();
if( ( !m_itemsGrid->IsCellEditControlShown() || m_lastRequestedSize != new_size )
&& m_gridSize != new_size )
{
m_gridSize = new_size;
// A trick to fix a cosmetic issue: when, in m_itemsGrid, a layer selector widget has
// the focus (is activated in column 6) when resizing the grid, the widget is not moved.
// So just change the widget having the focus in this case
if( m_NoteBook->GetSelection() == 0 && !m_itemsGrid->HasFocus() )
{
int col = m_itemsGrid->GetGridCursorCol();
if( col == 6 ) // a layer selector widget can be activated
m_itemsGrid->SetFocus();
}
adjustGridColumns();
}
// We store this value to check whether the dialog is changing size. This might indicate
// that the user is scaling the dialog with an editor shown. Some editors do not close
// (at least on GTK) when the user drags a dialog corner
m_lastRequestedSize = new_size;
// Always propagate for a grid repaint (needed if the height changes, as well as width)
aEvent.Skip();
}
void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::setCustomLayerCtrlEnablement()
{
bool enableCustomCtrls = m_cbCustomLayers->GetValue();

5
pcbnew/dialogs/dialog_footprint_properties_fp_editor.h

@ -60,7 +60,6 @@ public:
private:
// virtual event functions
void OnGridSize( wxSizeEvent& event ) override;
void OnAddField( wxCommandEvent& event ) override;
void OnDeleteField( wxCommandEvent& event ) override;
void OnAddPrivateLayer( wxCommandEvent& event ) override;
@ -84,8 +83,6 @@ private:
void onAddGroup( WX_GRID* aGrid );
void onRemoveGroup( WX_GRID* aGrid );
void adjustGridColumns();
// Layer grid helper callbacks
void onLayerGridRowDelete( WX_GRID& aGrid, LAYERS_GRID_TABLE& aLayerTable, int aRow );
std::pair<int, int> onLayerGridRowAddUserLayer( WX_GRID& aGrid, LAYERS_GRID_TABLE& aLayerTable );
@ -121,8 +118,6 @@ private:
PANEL_FP_PROPERTIES_3D_MODEL* m_3dPanel;
wxSize m_gridSize;
wxSize m_lastRequestedSize;
PANEL_EMBEDDED_FILES* m_embeddedFiles;
};

30
pcbnew/dialogs/dialog_footprint_properties_fp_editor_base.cpp

@ -36,17 +36,17 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITO
m_itemsGrid->SetMargins( 0, 0 );
// Columns
m_itemsGrid->SetColSize( 0, 124 );
m_itemsGrid->SetColSize( 1, 60 );
m_itemsGrid->SetColSize( 2, 110 );
m_itemsGrid->SetColSize( 3, 110 );
m_itemsGrid->SetColSize( 4, 110 );
m_itemsGrid->SetColSize( 0, 84 );
m_itemsGrid->SetColSize( 1, 48 );
m_itemsGrid->SetColSize( 2, 84 );
m_itemsGrid->SetColSize( 3, 84 );
m_itemsGrid->SetColSize( 4, 84 );
m_itemsGrid->SetColSize( 5, 60 );
m_itemsGrid->SetColSize( 6, 110 );
m_itemsGrid->SetColSize( 7, 110 );
m_itemsGrid->SetColSize( 8, 110 );
m_itemsGrid->SetColSize( 9, 110 );
m_itemsGrid->SetColSize( 10, 110 );
m_itemsGrid->SetColSize( 6, 84 );
m_itemsGrid->SetColSize( 7, 84 );
m_itemsGrid->SetColSize( 8, 48 );
m_itemsGrid->SetColSize( 9, 84 );
m_itemsGrid->SetColSize( 10, 84 );
m_itemsGrid->EnableDragColMove( false );
m_itemsGrid->EnableDragColSize( true );
m_itemsGrid->SetColLabelValue( 0, _("Text Items") );
@ -598,7 +598,6 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITO
this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnInitDlg ) );
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnUpdateUI ) );
m_NoteBook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnPageChanging ), NULL, this );
m_itemsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddField ), NULL, this );
m_bpDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnDeleteField ), NULL, this );
m_FootprintNameCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnText ), NULL, this );
@ -610,17 +609,13 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITO
m_excludeFromBOM->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnCheckBox ), NULL, this );
m_cbDNP->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnCheckBox ), NULL, this );
m_cbCustomLayers->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnUseCustomLayers ), NULL, this );
m_customUserLayersGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddCustomLayer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddCustomLayer ), NULL, this );
m_bpDeleteCustomLayer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnDeleteCustomLayer ), NULL, this );
m_privateLayersGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddPrivateLayer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddPrivateLayer ), NULL, this );
m_bpDeletePrivateLayer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnDeletePrivateLayer ), NULL, this );
m_noCourtyards->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnCheckBox ), NULL, this );
m_nettieGroupsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddNettieGroup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddNettieGroup ), NULL, this );
m_bpRemoveNettieGroup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnRemoveNettieGroup ), NULL, this );
m_jumperGroupsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddJumperGroup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddJumperGroup ), NULL, this );
m_bpRemoveJumperGroup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnRemoveJumperGroup ), NULL, this );
}
@ -631,7 +626,6 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::~DIALOG_FOOTPRINT_PROPERTIES_FP_EDIT
this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnInitDlg ) );
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnUpdateUI ) );
m_NoteBook->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnPageChanging ), NULL, this );
m_itemsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddField ), NULL, this );
m_bpDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnDeleteField ), NULL, this );
m_FootprintNameCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnText ), NULL, this );
@ -643,17 +637,13 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::~DIALOG_FOOTPRINT_PROPERTIES_FP_EDIT
m_excludeFromBOM->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnCheckBox ), NULL, this );
m_cbDNP->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnCheckBox ), NULL, this );
m_cbCustomLayers->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnUseCustomLayers ), NULL, this );
m_customUserLayersGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddCustomLayer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddCustomLayer ), NULL, this );
m_bpDeleteCustomLayer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnDeleteCustomLayer ), NULL, this );
m_privateLayersGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddPrivateLayer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddPrivateLayer ), NULL, this );
m_bpDeletePrivateLayer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnDeletePrivateLayer ), NULL, this );
m_noCourtyards->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnCheckBox ), NULL, this );
m_nettieGroupsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddNettieGroup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddNettieGroup ), NULL, this );
m_bpRemoveNettieGroup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnRemoveNettieGroup ), NULL, this );
m_jumperGroupsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnGridSize ), NULL, this );
m_bpAddJumperGroup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnAddJumperGroup ), NULL, this );
m_bpRemoveJumperGroup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::OnRemoveJumperGroup ), NULL, this );

19
pcbnew/dialogs/dialog_footprint_properties_fp_editor_base.fbp

@ -229,7 +229,7 @@
<property name="col_label_values">&quot;Text Items&quot; &quot;Show&quot; &quot;Width&quot; &quot;Height&quot; &quot;Thickness&quot; &quot;Italic&quot; &quot;Layer&quot; &quot;Orientation&quot; &quot;Unconstrained&quot; &quot;X Offset&quot; &quot;Y Offset&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">11</property>
<property name="column_sizes">124,60,110,110,110,60,110,110,110,110,110</property>
<property name="column_sizes">84,48,84,84,84,60,84,84,48,84,84</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
@ -285,7 +285,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnGridSize</event>
</object>
</object>
<object class="sizeritem" expanded="true">
@ -1584,14 +1583,14 @@
<property name="window_style"></property>
</object>
</object>
<object class="gbsizeritem" expanded="false">
<object class="gbsizeritem" expanded="true">
<property name="border">5</property>
<property name="colspan">2</property>
<property name="column">0</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="row">2</property>
<property name="rowspan">1</property>
<object class="wxStaticBoxSizer" expanded="false">
<object class="wxStaticBoxSizer" expanded="true">
<property name="id">wxID_ANY</property>
<property name="label">User Layers</property>
<property name="minimum_size"></property>
@ -1686,14 +1685,13 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnGridSize</event>
</object>
</object>
<object class="sizeritem" expanded="false">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="false">
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bButtonSize11</property>
<property name="orient">wxHORIZONTAL</property>
@ -1866,11 +1864,11 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="false">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxLEFT|wxTOP</property>
<property name="proportion">1</property>
<object class="wxStaticBoxSizer" expanded="false">
<object class="wxStaticBoxSizer" expanded="true">
<property name="id">wxID_ANY</property>
<property name="label">Private Layers</property>
<property name="minimum_size"></property>
@ -1965,7 +1963,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnGridSize</event>
</object>
</object>
<object class="sizeritem" expanded="false">
@ -3766,7 +3763,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnGridSize</event>
</object>
</object>
<object class="sizeritem" expanded="true">
@ -4188,7 +4184,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnSize">OnGridSize</event>
</object>
</object>
<object class="sizeritem" expanded="true">

1
pcbnew/dialogs/dialog_footprint_properties_fp_editor_base.h

@ -112,7 +112,6 @@ class DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE : public DIALOG_SHIM
virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnPageChanging( wxNotebookEvent& event ) { event.Skip(); }
virtual void OnGridSize( wxSizeEvent& event ) { event.Skip(); }
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnDeleteField( wxCommandEvent& event ) { event.Skip(); }
virtual void OnText( wxCommandEvent& event ) { event.Skip(); }

29
pcbnew/dialogs/dialog_layer_selection_base.cpp

@ -133,12 +133,12 @@ DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE::DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE
m_leftGridLayers->EnableEditing( false );
m_leftGridLayers->EnableGridLines( false );
m_leftGridLayers->EnableDragGridSize( false );
m_leftGridLayers->SetMargins( FromDIP( 3 ), FromDIP( 3 ) );
m_leftGridLayers->SetMargins( 3, 3 );
// Columns
m_leftGridLayers->SetColSize( 0, FromDIP( 24 ) );
m_leftGridLayers->SetColSize( 1, FromDIP( 20 ) );
m_leftGridLayers->SetColSize( 2, FromDIP( 72 ) );
m_leftGridLayers->SetColSize( 0, 24 );
m_leftGridLayers->SetColSize( 1, 20 );
m_leftGridLayers->SetColSize( 2, 72 );
m_leftGridLayers->EnableDragColMove( false );
m_leftGridLayers->EnableDragColSize( false );
m_leftGridLayers->SetColLabelSize( 0 );
@ -172,12 +172,12 @@ DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE::DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE
m_rightGridLayers->EnableEditing( false );
m_rightGridLayers->EnableGridLines( false );
m_rightGridLayers->EnableDragGridSize( false );
m_rightGridLayers->SetMargins( FromDIP( 3 ), FromDIP( 3 ) );
m_rightGridLayers->SetMargins( 3, 3 );
// Columns
m_rightGridLayers->SetColSize( 0, FromDIP( 24 ) );
m_rightGridLayers->SetColSize( 1, FromDIP( 20 ) );
m_rightGridLayers->SetColSize( 2, FromDIP( 72 ) );
m_rightGridLayers->SetColSize( 0, 24 );
m_rightGridLayers->SetColSize( 1, 20 );
m_rightGridLayers->SetColSize( 2, 72 );
m_rightGridLayers->EnableDragColMove( false );
m_rightGridLayers->EnableDragColSize( false );
m_rightGridLayers->SetColLabelSize( 0 );
@ -215,15 +215,14 @@ DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE::DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE
m_presetsGrid->CreateGrid( 0, 4 );
m_presetsGrid->EnableEditing( true );
m_presetsGrid->EnableGridLines( true );
m_presetsGrid->EnableDragGridSize( false );
m_presetsGrid->SetMinSize( wxSize( -1, FromDIP( 100 ) ) );
m_presetsGrid->SetMargins( FromDIP( 5 ), FromDIP( 3 ) );
m_presetsGrid->EnableDragGridSize( false );
m_presetsGrid->SetMargins( 5, 3 );
// Columns
m_presetsGrid->SetColSize( 0, FromDIP( 60 ) );
m_presetsGrid->SetColSize( 1, FromDIP( 24 ) );
m_presetsGrid->SetColSize( 2, FromDIP( 100 ) );
m_presetsGrid->SetColSize( 3, FromDIP( 200 ) );
m_presetsGrid->SetColSize( 0, 48 );
m_presetsGrid->SetColSize( 1, 24 );
m_presetsGrid->SetColSize( 2, 80 );
m_presetsGrid->SetColSize( 3, 120 );
m_presetsGrid->EnableDragColMove( false );
m_presetsGrid->EnableDragColSize( false );
m_presetsGrid->SetColLabelValue( 0, _("Enabled") );

2
pcbnew/dialogs/dialog_layer_selection_base.fbp

@ -754,7 +754,7 @@
<property name="col_label_values">&quot;Enabled&quot; &quot;&quot; &quot;Layers&quot; &quot;Label&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">4</property>
<property name="column_sizes">60,24,100,200</property>
<property name="column_sizes">48,24,80,120</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>

31
pcbnew/dialogs/panel_fp_properties_3d_model.cpp

@ -65,11 +65,8 @@ PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME*
FOOTPRINT* aFootprint,
DIALOG_SHIM* aDialogParent,
PANEL_EMBEDDED_FILES* aFilesPanel,
wxWindow* aParent, wxWindowID aId,
const wxPoint& aPos,
const wxSize& aSize, long aStyle,
const wxString& aName ) :
PANEL_FP_PROPERTIES_3D_MODEL_BASE( aParent, aId, aPos, aSize, aStyle, aName ),
wxWindow* aParent ) :
PANEL_FP_PROPERTIES_3D_MODEL_BASE( aParent ),
m_parentDialog( aDialogParent ),
m_frame( aFrame ),
m_footprint( aFootprint ),
@ -84,8 +81,8 @@ PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME*
OnAdd3DRow( aEvent );
} );
trick->SetTooltipEnable( COL_PROBLEM );
m_modelsGrid->PushEventHandler( trick );
m_modelsGrid->SetupColumnAutosizer( COL_FILENAME );
// Get the last 3D directory
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
@ -215,7 +212,7 @@ void PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint()
select3DModel( 0 );
m_previewPane->UpdateDummyFootprint();
m_modelsGrid->SetColSize( COL_SHOWN, m_modelsGrid->GetVisibleWidth( COL_SHOWN, true, false ) );
m_modelsGrid->SetGridWidthsDirty();
Layout();
}
@ -567,26 +564,6 @@ void PANEL_FP_PROPERTIES_3D_MODEL::Cfg3DPath( wxCommandEvent& event )
}
void PANEL_FP_PROPERTIES_3D_MODEL::AdjustGridColumnWidths()
{
// Account for scroll bars
int modelsWidth = KIPLATFORM::UI::GetUnobscuredSize( m_modelsGrid ).x;
int width = modelsWidth - m_modelsGrid->GetColSize( COL_SHOWN ) - m_modelsGrid->GetColSize( COL_PROBLEM );
if( width > 0 )
m_modelsGrid->SetColSize( COL_FILENAME, width );
}
void PANEL_FP_PROPERTIES_3D_MODEL::OnGridSize( wxSizeEvent& event )
{
AdjustGridColumnWidths();
event.Skip();
}
void PANEL_FP_PROPERTIES_3D_MODEL::OnUpdateUI( wxUpdateUIEvent& event )
{
m_button3DShapeRemove->Enable( m_modelsGrid->GetNumberRows() > 0 );

22
pcbnew/dialogs/panel_fp_properties_3d_model.h

@ -22,8 +22,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef PANEL_FP_PROPERTIES_3D_MODEL_H_
#define PANEL_FP_PROPERTIES_3D_MODEL_H_
#pragma once
#include <footprint.h>
#include <panel_fp_properties_3d_model_base.h>
@ -48,13 +47,8 @@ class PANEL_FP_PROPERTIES_3D_MODEL : public PANEL_FP_PROPERTIES_3D_MODEL_BASE
public:
PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME* aFrame, FOOTPRINT* aFootprint,
DIALOG_SHIM* aDialogParent,
PANEL_EMBEDDED_FILES* aFilesPanel,
wxWindow* aParent, wxWindowID aId = wxID_ANY,
const wxPoint& aPos = wxDefaultPosition,
const wxSize& aSize = wxDefaultSize,
long aStyle = wxTAB_TRAVERSAL,
const wxString& aName = wxEmptyString );
DIALOG_SHIM* aDialogParent, PANEL_EMBEDDED_FILES* aFilesPanel,
wxWindow* aParent );
~PANEL_FP_PROPERTIES_3D_MODEL() override;
@ -63,12 +57,7 @@ public:
void ReloadModelsFromFootprint();
void AdjustGridColumnWidths();
std::vector<FP_3DMODEL>& GetModelList()
{
return m_shapes3D_list;
}
std::vector<FP_3DMODEL>& GetModelList() { return m_shapes3D_list; }
private:
// virtual event functions
@ -79,7 +68,6 @@ private:
void OnAdd3DRow( wxCommandEvent& event ) override;
void Cfg3DPath( wxCommandEvent& event ) override;
void OnGridSize( wxSizeEvent& event ) override;
void OnUpdateUI( wxUpdateUIEvent& event ) override;
void updateValidateStatus( int aRow );
@ -107,5 +95,3 @@ private:
bool m_inSelect;
};
#endif // PANEL_FP_PROPERTIES_3D_MODEL_H_

6
pcbnew/dialogs/panel_fp_properties_3d_model_base.cpp

@ -36,8 +36,8 @@ PANEL_FP_PROPERTIES_3D_MODEL_BASE::PANEL_FP_PROPERTIES_3D_MODEL_BASE( wxWindow*
// Columns
m_modelsGrid->SetColSize( 0, 20 );
m_modelsGrid->SetColSize( 1, 650 );
m_modelsGrid->SetColSize( 2, 65 );
m_modelsGrid->SetColSize( 1, 120 );
m_modelsGrid->SetColSize( 2, 48 );
m_modelsGrid->EnableDragColMove( false );
m_modelsGrid->EnableDragColSize( false );
m_modelsGrid->SetColLabelValue( 0, wxEmptyString );
@ -100,7 +100,6 @@ PANEL_FP_PROPERTIES_3D_MODEL_BASE::PANEL_FP_PROPERTIES_3D_MODEL_BASE( wxWindow*
this->Layout();
// Connect Events
this->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::OnGridSize ) );
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::OnUpdateUI ) );
m_modelsGrid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::On3DModelCellChanged ), NULL, this );
m_modelsGrid->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::On3DModelSelected ), NULL, this );
@ -113,7 +112,6 @@ PANEL_FP_PROPERTIES_3D_MODEL_BASE::PANEL_FP_PROPERTIES_3D_MODEL_BASE( wxWindow*
PANEL_FP_PROPERTIES_3D_MODEL_BASE::~PANEL_FP_PROPERTIES_3D_MODEL_BASE()
{
// Disconnect Events
this->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::OnGridSize ) );
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::OnUpdateUI ) );
m_modelsGrid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::On3DModelCellChanged ), NULL, this );
m_modelsGrid->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( PANEL_FP_PROPERTIES_3D_MODEL_BASE::On3DModelSelected ), NULL, this );

3
pcbnew/dialogs/panel_fp_properties_3d_model_base.fbp

@ -55,7 +55,6 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnSize">OnGridSize</event>
<event name="OnUpdateUI">OnUpdateUI</event>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
@ -213,7 +212,7 @@
<property name="col_label_values">&quot;&quot; &quot;3D Model(s)&quot; &quot;Show&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">3</property>
<property name="column_sizes">20,650,65</property>
<property name="column_sizes">20,120,48</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>

1
pcbnew/dialogs/panel_fp_properties_3d_model_base.h

@ -50,7 +50,6 @@ class PANEL_FP_PROPERTIES_3D_MODEL_BASE : public wxPanel
wxBoxSizer* m_LowerSizer3D;
// Virtual event handlers, override them in your derived class
virtual void OnGridSize( wxSizeEvent& event ) { event.Skip(); }
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void On3DModelCellChanged( wxGridEvent& event ) { event.Skip(); }
virtual void On3DModelSelected( wxGridEvent& event ) { event.Skip(); }

17
pcbnew/sel_layer.cpp

@ -44,7 +44,6 @@
#include <widgets/grid_text_helpers.h>
#include <widgets/layer_box_selector.h>
#include <widgets/wx_grid.h>
#include <widgets/wx_grid_autosizer.h>
#include <widgets/std_bitmap_button.h>
@ -336,7 +335,8 @@ class COPPER_LAYERS_PAIR_PRESETS_UI
public:
COPPER_LAYERS_PAIR_PRESETS_UI( WX_GRID& aGrid, PCB_LAYER_PRESENTATION& aPresentation,
LAYER_PAIR_SETTINGS& aLayerPairSettings ) :
m_layerPresentation( aPresentation ), m_grid( aGrid ),
m_layerPresentation( aPresentation ),
m_grid( aGrid ),
m_layerPairSettings( aLayerPairSettings )
{
wxASSERT_MSG( m_grid.GetNumberRows() == 0, "Grid should be empty at controller start" );
@ -370,14 +370,6 @@ public:
onPairActivated( row );
}
} );
m_autosizer =
std::make_unique<WX_GRID_AUTOSIZER>( m_grid,
WX_GRID_AUTOSIZER::COL_MIN_WIDTHS{
{ (int) COLNUMS::LAYERNAMES, 72 },
{ (int) COLNUMS::USERNAME, 72 },
},
(int) COLNUMS::USERNAME );
}
void OnLayerPairAdded( const LAYER_PAIR& aLayerPair )
@ -412,10 +404,9 @@ private:
m_grid.SetCellHighlightPenWidth( 0 );
m_grid.SetColFormatBool( (int) COLNUMS::ENABLED );
m_grid.SetupColumnAutosizer( (int) COLNUMS::USERNAME );
m_grid.SetSelectionMode( wxGrid::wxGridSelectionModes::wxGridSelectRows );
m_grid.AutoSizeColumn( (int) COLNUMS::USERNAME );
}
void fillGridFromStore()
@ -489,8 +480,6 @@ private:
// Lifetime managment of the swatches
std::vector<std::unique_ptr<wxBitmap>> m_swatches;
std::unique_ptr<WX_GRID_AUTOSIZER> m_autosizer;
};

Loading…
Cancel
Save