KiCad PCB EDA Suite
WX_GRID Class Reference

#include <wx_grid.h>

Inheritance diagram for WX_GRID:

Public Member Functions

 WX_GRID (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxWANTS_CHARS, const wxString &name=wxGridNameStr)
 
 ~WX_GRID () override
 
void SetColLabelSize (int aHeight)
 Hide wxGrid's SetColLabelSize() method with one which makes sure the size is tall enough for the system GUI font. More...
 
void SetLabelFont (const wxFont &aFont)
 Hide wxGrid's SetLabelFont() because for some reason on MSW it's a one-shot and subsequent calls to it have no effect. More...
 
wxString GetShownColumns ()
 Get a tokenized string containing the shown column indexes. More...
 
void ShowHideColumns (const wxString &shownColumns)
 Show/hide the grid columns based on a tokenized string of shown column indexes. More...
 
void SetTable (wxGridTableBase *table, bool aTakeOwnership=false)
 Hide wxGrid's SetTable() method with one which doesn't mess up the grid column widths when setting the table. More...
 
void DestroyTable (wxGridTableBase *aTable)
 Work-around for a bug in wxGrid which crashes when deleting the table if the cell edit control was not closed. More...
 
bool CommitPendingChanges (bool aQuietMode=false)
 Close any open cell edit controls. More...
 
void SetUnitsProvider (UNITS_PROVIDER *aProvider, int aCol=0)
 Set a UNITS_PROVIDER to enable use of unit- and eval-based Getters. More...
 
void SetAutoEvalCols (const std::vector< int > &aCols)
 
int GetUnitValue (int aRow, int aCol)
 Apply standard KiCad unit and eval services to a numeric cell. More...
 
void SetUnitValue (int aRow, int aCol, int aValue)
 Set a unitized cell's value. More...
 
int GetVisibleWidth (int aCol, bool aHeader=true, bool aContents=true, bool aKeep=false)
 Calculates the specified column based on the actual size of the text on screen. More...
 
void EnsureColLabelsVisible ()
 Ensure the height of the row displaying the column labels is enough, even if labels are multiline texts. More...
 
void ShowEditorOnMouseUp ()
 WxWidgets has a bunch of bugs in its handling of wxGrid mouse events which close cell editors right after opening them. More...
 
void ClearRows ()
 wxWidgets recently added an ASSERT which fires if the position is greater than or equal to the number of rows (even if the delete count is 0). More...
 

Protected Member Functions

void DrawColLabel (wxDC &dc, int col) override
 A re-implementation of wxGrid::DrawColLabel which left-aligns the first column and draws flat borders. More...
 
void DrawRowLabel (wxDC &dc, int row) override
 A re-implementation of wxGrid::DrawRowLabel which draws flat borders. More...
 
void DrawCornerLabel (wxDC &dc) override
 A re-implementation of wxGrid::DrawCornerLabel which draws flat borders. More...
 
void onGridColMove (wxGridEvent &aEvent)
 
void onGridCellSelect (wxGridEvent &aEvent)
 
void onCellEditorShown (wxGridEvent &aEvent)
 
void onCellEditorHidden (wxGridEvent &aEvent)
 

Protected Attributes

bool m_weOwnTable
 
std::map< int, UNITS_PROVIDER * > m_unitsProviders
 
std::unique_ptr< NUMERIC_EVALUATORm_eval
 
std::vector< int > m_autoEvalCols
 
std::map< std::pair< int, int >, std::pair< wxString, wxString > > m_evalBeforeAfter
 

Detailed Description

Definition at line 37 of file wx_grid.h.

Constructor & Destructor Documentation

◆ WX_GRID()

WX_GRID::WX_GRID ( wxWindow *  parent,
wxWindowID  id,
const wxPoint &  pos = wxDefaultPosition,
const wxSize &  size = wxDefaultSize,
long  style = wxWANTS_CHARS,
const wxString &  name = wxGridNameStr 
)

Definition at line 97 of file wx_grid.cpp.

98 :
99 wxGrid( parent, id, pos, size, style, name ),
100 m_weOwnTable( false )
101{
102 SetDefaultCellOverflow( false );
103
104 // Make sure the GUI font scales properly
105 SetDefaultCellFont( KIUI::GetControlFont( this ) );
107
108 if( GetColLabelSize() > 0 )
109 SetColLabelSize( GetColLabelSize() + 4 );
110
111#if wxCHECK_VERSION( 3, 1, 3 )
112 Connect( wxEVT_DPI_CHANGED, wxDPIChangedEventHandler( WX_GRID::onDPIChanged ), nullptr, this );
113#endif
114
115 Connect( wxEVT_GRID_EDITOR_SHOWN, wxGridEventHandler( WX_GRID::onCellEditorShown ), nullptr, this );
116 Connect( wxEVT_GRID_EDITOR_HIDDEN, wxGridEventHandler( WX_GRID::onCellEditorHidden ), nullptr, this );
117}
const char * name
Definition: DXF_plotter.cpp:56
void SetLabelFont(const wxFont &aFont)
Hide wxGrid's SetLabelFont() because for some reason on MSW it's a one-shot and subsequent calls to i...
Definition: wx_grid.cpp:158
bool m_weOwnTable
Definition: wx_grid.h:173
void SetColLabelSize(int aHeight)
Hide wxGrid's SetColLabelSize() method with one which makes sure the size is tall enough for the syst...
Definition: wx_grid.cpp:144
void onCellEditorHidden(wxGridEvent &aEvent)
Definition: wx_grid.cpp:225
void onCellEditorShown(wxGridEvent &aEvent)
Definition: wx_grid.cpp:210
wxFont GetControlFont(wxWindow *aWindow)
Definition: ui_common.cpp:162

References KIUI::GetControlFont(), onCellEditorHidden(), onCellEditorShown(), SetColLabelSize(), and SetLabelFont().

◆ ~WX_GRID()

WX_GRID::~WX_GRID ( )
override

Definition at line 120 of file wx_grid.cpp.

121{
122 if( m_weOwnTable )
123 DestroyTable( GetTable() );
124
125#if wxCHECK_VERSION( 3, 1, 3 )
126 Disconnect( wxEVT_DPI_CHANGED, wxDPIChangedEventHandler( WX_GRID::onDPIChanged ), nullptr, this );
127#endif
128
129}
void DestroyTable(wxGridTableBase *aTable)
Work-around for a bug in wxGrid which crashes when deleting the table if the cell edit control was no...
Definition: wx_grid.cpp:262

References DestroyTable(), and m_weOwnTable.

Member Function Documentation

◆ ClearRows()

◆ CommitPendingChanges()

bool WX_GRID::CommitPendingChanges ( bool  aQuietMode = false)

Close any open cell edit controls.

Parameters
aQuietModeif true don't send events (ie: for row/col delete operations)
Returns
false if validation failed

Definition at line 423 of file wx_grid.cpp.

424{
425 if( !IsCellEditControlEnabled() )
426 return true;
427
428 if( !aQuietMode && SendEvent( wxEVT_GRID_EDITOR_HIDDEN ) == -1 )
429 return false;
430
431 HideCellEditControl();
432
433 // do it after HideCellEditControl()
434 m_cellEditCtrlEnabled = false;
435
436 int row = m_currentCellCoords.GetRow();
437 int col = m_currentCellCoords.GetCol();
438
439 wxString oldval = GetCellValue( row, col );
440 wxString newval;
441
442 wxGridCellAttr* attr = GetCellAttr( row, col );
443 wxGridCellEditor* editor = attr->GetEditor( this, row, col );
444
445 bool changed = editor->EndEdit( row, col, this, oldval, &newval );
446
447 editor->DecRef();
448 attr->DecRef();
449
450 if( changed )
451 {
452 if( !aQuietMode && SendEvent( wxEVT_GRID_CELL_CHANGING, newval ) == -1 )
453 return false;
454
455 editor->ApplyEdit( row, col, this );
456
457 // for compatibility reasons dating back to wx 2.8 when this event
458 // was called wxEVT_GRID_CELL_CHANGE and wxEVT_GRID_CELL_CHANGING
459 // didn't exist we allow vetoing this one too
460 if( !aQuietMode && SendEvent( wxEVT_GRID_CELL_CHANGED, oldval ) == -1 )
461 {
462 // Event has been vetoed, set the data back.
463 SetCellValue( row, col, oldval );
464 return false;
465 }
466 }
467
468 return true;
469}

References editor.

Referenced by PANEL_SYM_LIB_TABLE::appendRowHandler(), PANEL_FP_LIB_TABLE::appendRowHandler(), PANEL_FP_LIB_TABLE::browseLibrariesHandler(), PANEL_SYM_LIB_TABLE::deleteRowHandler(), PANEL_FP_LIB_TABLE::deleteRowHandler(), DestroyTable(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::doValidate(), PANEL_SETUP_TEXT_AND_GRAPHICS::ImportSettingsFrom(), PANEL_SETUP_TRACKS_AND_VIAS::ImportSettingsFrom(), PANEL_SYM_LIB_TABLE::moveDownHandler(), PANEL_FP_LIB_TABLE::moveDownHandler(), PANEL_SYM_LIB_TABLE::moveUpHandler(), PANEL_FP_LIB_TABLE::moveUpHandler(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DModel(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DRow(), PANEL_SETUP_BUSES::OnAddAlias(), DIALOG_PIN_PROPERTIES::OnAddAlternate(), PANEL_SETUP_NETCLASSES::OnAddAssignmentClick(), PANEL_TEMPLATE_FIELDNAMES::OnAddButtonClick(), PANEL_SETUP_TRACKS_AND_VIAS::OnAddDiffPairsClick(), DIALOG_CONFIGURE_PATHS::OnAddEnvVar(), DIALOG_FOOTPRINT_PROPERTIES::OnAddField(), DIALOG_LABEL_PROPERTIES::OnAddField(), DIALOG_LIB_SYMBOL_PROPERTIES::OnAddField(), DIALOG_SHEET_PROPERTIES::OnAddField(), DIALOG_SYMBOL_PROPERTIES::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAddLayer(), PANEL_SETUP_BUSES::OnAddMember(), PANEL_SETUP_NETCLASSES::OnAddNetclassClick(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAddPadGroup(), DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow(), PANEL_FP_EDITOR_DEFAULTS::OnAddTextItem(), PANEL_TEXT_VARIABLES::OnAddTextVar(), PANEL_SETUP_TRACKS_AND_VIAS::OnAddTrackWidthsClick(), PANEL_SETUP_TRACKS_AND_VIAS::OnAddViaSizesClick(), DIALOG_FP_PLUGIN_OPTIONS::onAppendOption(), DIALOG_FP_PLUGIN_OPTIONS::onAppendRow(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::OnButtonAdd(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::OnButtonDelete(), GRID_TRICKS::onCharHook(), DIALOG_SYMBOL_FIELDS_TABLE::OnClose(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), PANEL_SYM_LIB_TABLE::onConvertLegacyLibraries(), PANEL_SETUP_BUSES::OnDeleteAlias(), DIALOG_PIN_PROPERTIES::OnDeleteAlternate(), PANEL_TEMPLATE_FIELDNAMES::OnDeleteButtonClick(), DIALOG_FOOTPRINT_PROPERTIES::OnDeleteField(), DIALOG_LABEL_PROPERTIES::OnDeleteField(), DIALOG_LIB_SYMBOL_PROPERTIES::OnDeleteField(), DIALOG_SHEET_PROPERTIES::OnDeleteField(), DIALOG_SYMBOL_PROPERTIES::OnDeleteField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnDeleteField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnDeleteLayer(), DIALOG_FP_PLUGIN_OPTIONS::onDeleteRow(), DIALOG_LIB_EDIT_PIN_TABLE::OnDeleteRow(), PANEL_FP_EDITOR_DEFAULTS::OnDeleteTextItem(), DIALOG_LIB_SYMBOL_PROPERTIES::OnEditSpiceModel(), DIALOG_SYMBOL_PROPERTIES::OnEditSpiceModel(), onGridColMove(), GRID_TRICKS::onGridLabelLeftClick(), DIALOG_LABEL_PROPERTIES::OnMoveDown(), DIALOG_LIB_SYMBOL_PROPERTIES::OnMoveDown(), DIALOG_SHEET_PROPERTIES::OnMoveDown(), DIALOG_SYMBOL_PROPERTIES::OnMoveDown(), DIALOG_LABEL_PROPERTIES::OnMoveUp(), DIALOG_LIB_SYMBOL_PROPERTIES::OnMoveUp(), DIALOG_SHEET_PROPERTIES::OnMoveUp(), DIALOG_SYMBOL_PROPERTIES::OnMoveUp(), DIALOG_LIB_EDIT_PIN_TABLE::OnRebuildRows(), PANEL_FP_PROPERTIES_3D_MODEL::OnRemove3DModel(), PANEL_SETUP_NETCLASSES::OnRemoveAssignmentClick(), PANEL_SETUP_TRACKS_AND_VIAS::OnRemoveDiffPairsClick(), DIALOG_CONFIGURE_PATHS::OnRemoveEnvVar(), PANEL_SETUP_BUSES::OnRemoveMember(), PANEL_SETUP_NETCLASSES::OnRemoveNetclassClick(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnRemovePadGroup(), PANEL_TEXT_VARIABLES::OnRemoveTextVar(), PANEL_SETUP_TRACKS_AND_VIAS::OnRemoveTrackWidthsClick(), PANEL_SETUP_TRACKS_AND_VIAS::OnRemoveViaSizesClick(), PANEL_SETUP_NETCLASSES::rebuildNetclassDropdowns(), PANEL_TEMPLATE_FIELDNAMES::TransferDataFromGrid(), DIALOG_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_EDIT_PIN_TABLE::TransferDataFromWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PIN_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_FIELDS_TABLE::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), PANEL_SETUP_BUSES::TransferDataFromWindow(), PANEL_SYM_LIB_TABLE::TransferDataFromWindow(), DIALOG_CONFIGURE_PATHS::TransferDataFromWindow(), PANEL_TEXT_VARIABLES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow(), DIALOG_FP_PLUGIN_OPTIONS::TransferDataFromWindow(), DIALOG_SWAP_LAYERS::TransferDataFromWindow(), PANEL_FP_LIB_TABLE::TransferDataFromWindow(), PANEL_FP_PROPERTIES_3D_MODEL::TransferDataFromWindow(), PANEL_SETUP_TEXT_AND_GRAPHICS::TransferDataFromWindow(), PANEL_SETUP_TRACKS_AND_VIAS::TransferDataFromWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::Validate(), DIALOG_SHEET_PROPERTIES::Validate(), DIALOG_SYMBOL_PROPERTIES::Validate(), PANEL_SETUP_NETCLASSES::Validate(), DIALOG_FOOTPRINT_PROPERTIES::Validate(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::Validate(), PANEL_SETUP_TRACKS_AND_VIAS::Validate(), PANEL_FP_EDITOR_DEFAULTS::validateData(), and DIALOG_EDIT_SYMBOLS_LIBID::validateLibIds().

◆ DestroyTable()

void WX_GRID::DestroyTable ( wxGridTableBase *  aTable)

Work-around for a bug in wxGrid which crashes when deleting the table if the cell edit control was not closed.

Definition at line 262 of file wx_grid.cpp.

263{
264 // wxGrid's destructor will crash trying to look up the cell attr if the edit control
265 // is left open. Normally it's closed in Validate(), but not if the user hit Cancel.
266 CommitPendingChanges( true /* quiet mode */ );
267
268 Disconnect( wxEVT_GRID_COL_MOVE, wxGridEventHandler( WX_GRID::onGridColMove ), nullptr, this );
269 Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( WX_GRID::onGridCellSelect ), nullptr, this );
270
271 wxGrid::SetTable( nullptr );
272 delete aTable;
273}
void onGridCellSelect(wxGridEvent &aEvent)
Definition: wx_grid.cpp:197
void onGridColMove(wxGridEvent &aEvent)
Definition: wx_grid.cpp:513
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:423

References CommitPendingChanges(), onGridCellSelect(), and onGridColMove().

Referenced by DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::~DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_LABEL_PROPERTIES::~DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::~DIALOG_LIB_EDIT_PIN_TABLE(), DIALOG_LIB_SYMBOL_PROPERTIES::~DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_PIN_PROPERTIES::~DIALOG_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::~DIALOG_SHEET_PROPERTIES(), DIALOG_SWAP_LAYERS::~DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_PROPERTIES::~DIALOG_SYMBOL_PROPERTIES(), and ~WX_GRID().

◆ DrawColLabel()

void WX_GRID::DrawColLabel ( wxDC &  dc,
int  col 
)
overrideprotected

A re-implementation of wxGrid::DrawColLabel which left-aligns the first column and draws flat borders.

Definition at line 340 of file wx_grid.cpp.

341{
342 if( m_nativeColumnLabels )
343 wxGrid::DrawColLabel( dc, col );
344
345 if( GetColWidth( col ) <= 0 || m_colLabelHeight <= 0 )
346 return;
347
348 wxRect rect( GetColLeft( col ), 0, GetColWidth( col ), m_colLabelHeight );
349
351
352 // It is reported that we need to erase the background to avoid display
353 // artifacts, see #12055.
354 {
355 // wxWidgets renamed this variable between 3.1.2 and 3.1.3 ...
356#if wxCHECK_VERSION( 3, 1, 3 )
357 wxDCBrushChanger setBrush( dc, m_colLabelWin->GetBackgroundColour() );
358 wxDCPenChanger setPen( dc, m_colLabelWin->GetBackgroundColour() );
359#else
360 wxDCBrushChanger setBrush( dc, m_colWindow->GetBackgroundColour() );
361 wxDCPenChanger setPen( dc, m_colWindow->GetBackgroundColour() );
362#endif
363 dc.DrawRectangle( rect.Inflate( 1 ) );
364 }
365
366 rend.DrawBorder( *this, dc, rect );
367
368 // Make sure fonts get scaled correctly on GTK HiDPI monitors
369 dc.SetFont( GetLabelFont() );
370
371 int hAlign, vAlign;
372 GetColLabelAlignment( &hAlign, &vAlign );
373 const int orient = GetColLabelTextOrientation();
374
375 if( col == 0 )
376 hAlign = wxALIGN_LEFT;
377
378 if( hAlign == wxALIGN_LEFT )
379 rect.SetLeft( rect.GetLeft() + MIN_GRIDCELL_MARGIN );
380
381 rend.DrawLabel( *this, dc, GetColLabelValue( col ), rect, hAlign, vAlign, orient );
382}
void DrawBorder(const wxGrid &grid, wxDC &dc, wxRect &rect) const override
Definition: wx_grid.cpp:66
#define MIN_GRIDCELL_MARGIN
Definition: wx_grid.cpp:34

References WX_GRID_COLUMN_HEADER_RENDERER::DrawBorder(), and MIN_GRIDCELL_MARGIN.

◆ DrawCornerLabel()

void WX_GRID::DrawCornerLabel ( wxDC &  dc)
overrideprotected

A re-implementation of wxGrid::DrawCornerLabel which draws flat borders.

Definition at line 313 of file wx_grid.cpp.

314{
315 if( m_nativeColumnLabels )
316 wxGrid::DrawCornerLabel( dc );
317
318 wxRect rect( wxSize( m_rowLabelWidth, m_colLabelHeight ) );
319
321
322 // It is reported that we need to erase the background to avoid display
323 // artifacts, see #12055.
324 {
325 // wxWidgets renamed this variable between 3.1.2 and 3.1.3 ...
326#if wxCHECK_VERSION( 3, 1, 3 )
327 wxDCBrushChanger setBrush( dc, m_colLabelWin->GetBackgroundColour() );
328 wxDCPenChanger setPen( dc, m_colLabelWin->GetBackgroundColour() );
329#else
330 wxDCBrushChanger setBrush( dc, m_colWindow->GetBackgroundColour() );
331 wxDCPenChanger setPen( dc, m_colWindow->GetBackgroundColour() );
332#endif
333 dc.DrawRectangle( rect.Inflate( 1 ) );
334 }
335
336 rend.DrawBorder( *this, dc, rect );
337}
void DrawBorder(const wxGrid &grid, wxDC &dc, wxRect &rect) const override
Definition: wx_grid.cpp:49

References WX_GRID_CORNER_HEADER_RENDERER::DrawBorder().

◆ DrawRowLabel()

void WX_GRID::DrawRowLabel ( wxDC &  dc,
int  row 
)
overrideprotected

A re-implementation of wxGrid::DrawRowLabel which draws flat borders.

Definition at line 385 of file wx_grid.cpp.

386{
387 if ( GetRowHeight( row ) <= 0 || m_rowLabelWidth <= 0 )
388 return;
389
390 wxRect rect( 0, GetRowTop( row ), m_rowLabelWidth, GetRowHeight( row ) );
391
392 static WX_GRID_ROW_HEADER_RENDERER rend;
393
394 // It is reported that we need to erase the background to avoid display
395 // artifacts, see #12055.
396 {
397 // wxWidgets renamed this variable between 3.1.2 and 3.1.3 ...
398#if wxCHECK_VERSION( 3, 1, 3 )
399 wxDCBrushChanger setBrush( dc, m_colLabelWin->GetBackgroundColour() );
400 wxDCPenChanger setPen( dc, m_colLabelWin->GetBackgroundColour() );
401#else
402 wxDCBrushChanger setBrush( dc, m_colWindow->GetBackgroundColour() );
403 wxDCPenChanger setPen( dc, m_colWindow->GetBackgroundColour() );
404#endif
405 dc.DrawRectangle( rect.Inflate( 1 ) );
406 }
407
408 rend.DrawBorder( *this, dc, rect );
409
410 // Make sure fonts get scaled correctly on GTK HiDPI monitors
411 dc.SetFont( GetLabelFont() );
412
413 int hAlign, vAlign;
414 GetRowLabelAlignment(&hAlign, &vAlign);
415
416 if( hAlign == wxALIGN_LEFT )
417 rect.SetLeft( rect.GetLeft() + MIN_GRIDCELL_MARGIN );
418
419 rend.DrawLabel( *this, dc, GetRowLabelValue( row ), rect, hAlign, vAlign, wxHORIZONTAL );
420}
void DrawBorder(const wxGrid &grid, wxDC &dc, wxRect &rect) const override
Definition: wx_grid.cpp:83

References WX_GRID_ROW_HEADER_RENDERER::DrawBorder(), and MIN_GRIDCELL_MARGIN.

◆ EnsureColLabelsVisible()

void WX_GRID::EnsureColLabelsVisible ( )

Ensure the height of the row displaying the column labels is enough, even if labels are multiline texts.

Definition at line 560 of file wx_grid.cpp.

561{
562 int line_height = int( GetTextExtent( "Mj" ).y ) + 3;
563 int row_height = GetColLabelSize();
564 int initial_row_height = row_height;
565
566 // Headers can be multiline. Fix the Column Label Height to show the full header
567 // However GetTextExtent does not work on multiline strings,
568 // and do not return the full text height (only the height of one line)
569 for( int col = 0; col < GetNumberCols(); col++ )
570 {
571 int nl_count = GetColLabelValue( col ).Freq( '\n' );
572
573 if( nl_count )
574 {
575 // Col Label height must be able to show nl_count+1 lines
576 if( row_height < line_height * ( nl_count+1 ) )
577 row_height += line_height * nl_count;
578 }
579 }
580
581 // Update the column label size, but only if needed, to avoid generating useless
582 // and perhaps annoying UI events when the size does not change
583 if( initial_row_height != row_height )
584 SetColLabelSize( row_height );
585}

References SetColLabelSize().

Referenced by DIALOG_BOARD_STATISTICS::adjustDrillGridColumns(), GetVisibleWidth(), and PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES().

◆ GetShownColumns()

wxString WX_GRID::GetShownColumns ( )

Get a tokenized string containing the shown column indexes.

Tokens are separated by spaces.

Definition at line 276 of file wx_grid.cpp.

277{
278 wxString shownColumns;
279
280 for( int i = 0; i < GetNumberCols(); ++i )
281 {
282 if( IsColShown( i ) )
283 {
284 if( shownColumns.Length() )
285 shownColumns << wxT( " " );
286
287 shownColumns << i;
288 }
289 }
290
291 return shownColumns;
292}

Referenced by DIALOG_LABEL_PROPERTIES::OnUpdateUI(), DIALOG_LIB_EDIT_PIN_TABLE::OnUpdateUI(), DIALOG_LIB_SYMBOL_PROPERTIES::OnUpdateUI(), DIALOG_SHEET_PROPERTIES::OnUpdateUI(), DIALOG_SYMBOL_PROPERTIES::OnUpdateUI(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::~DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_LABEL_PROPERTIES::~DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::~DIALOG_LIB_EDIT_PIN_TABLE(), DIALOG_LIB_SYMBOL_PROPERTIES::~DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_SHEET_PROPERTIES::~DIALOG_SHEET_PROPERTIES(), and DIALOG_SYMBOL_PROPERTIES::~DIALOG_SYMBOL_PROPERTIES().

◆ GetUnitValue()

int WX_GRID::GetUnitValue ( int  aRow,
int  aCol 
)

Apply standard KiCad unit and eval services to a numeric cell.

Returns
the value held by the cell in internal units

Definition at line 481 of file wx_grid.cpp.

482{
483 UNITS_PROVIDER* unitsProvider = m_unitsProviders[ aCol ];
484
485 if( !unitsProvider )
486 unitsProvider = m_unitsProviders.begin()->second;
487
488 wxString stringValue = GetCellValue( aRow, aCol );
489
490 if( alg::contains( m_autoEvalCols, aCol ) )
491 {
492 m_eval->SetDefaultUnits( unitsProvider->GetUserUnits() );
493
494 if( m_eval->Process( stringValue ) )
495 stringValue = m_eval->Result();
496 }
497
498 return unitsProvider->ValueFromString( stringValue );
499}
int ValueFromString(const wxString &aTextValue, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
Converts aTextValue in aUnits to internal units used by the frame.
EDA_UNITS GetUserUnits() const
std::map< int, UNITS_PROVIDER * > m_unitsProviders
Definition: wx_grid.h:175
std::vector< int > m_autoEvalCols
Definition: wx_grid.h:177
std::unique_ptr< NUMERIC_EVALUATOR > m_eval
Definition: wx_grid.h:176
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99

References alg::contains(), UNITS_PROVIDER::GetUserUnits(), m_autoEvalCols, m_eval, m_unitsProviders, and UNITS_PROVIDER::ValueFromString().

Referenced by DIALOG_PAD_PRIMITIVE_POLY_PROPS::onCellChanging(), PANEL_SETUP_NETCLASSES::TransferDataFromWindow(), PANEL_FP_EDITOR_DEFAULTS::TransferDataFromWindow(), PANEL_SETUP_TEXT_AND_GRAPHICS::TransferDataFromWindow(), PANEL_SETUP_TRACKS_AND_VIAS::TransferDataFromWindow(), and PANEL_FP_EDITOR_DEFAULTS::validateData().

◆ GetVisibleWidth()

int WX_GRID::GetVisibleWidth ( int  aCol,
bool  aHeader = true,
bool  aContents = true,
bool  aKeep = false 
)

Calculates the specified column based on the actual size of the text on screen.

Will return the maximum value of all calculated widths.

Parameters
aCol- Integer value of the column to resize. Specify -1 for the row labels.
aHeader- Include the header in the width calculation
aContents- Include the full contents of the column
aKeep- Use the current size as a minimum value
Returns
The new size of the column

Definition at line 520 of file wx_grid.cpp.

521{
522 int size = 0;
523
524 if( aCol < 0 )
525 {
526 if( aKeep )
527 size = GetRowLabelSize();
528
529 for( int row = 0; aContents && row < GetNumberRows(); row++ )
530 size = std::max( size, int( GetTextExtent( GetRowLabelValue( row ) + wxS( "M" ) ).x ) );
531 }
532 else
533 {
534 if( aKeep )
535 size = GetColSize( aCol );
536
537 // 'M' is generally the widest character, so we buffer the column width by default to
538 // ensure we don't write a continuous line of text at the column header
539 if( aHeader )
540 {
542
543 size = std::max( size, int( GetTextExtent( GetColLabelValue( aCol ) + wxS( "M" ) ).x ) );
544 }
545
546 for( int row = 0; aContents && row < GetNumberRows(); row++ )
547 {
548 // If we have text, get the size. Otherwise, use a placeholder for the checkbox
549 if( GetTable()->CanGetValueAs( row, aCol, wxGRID_VALUE_STRING ) )
550 size = std::max( size, GetTextExtent( GetCellValue( row, aCol ) + wxS( "M" ) ).x );
551 else
552 size = std::max( size, GetTextExtent( "MM" ).x );
553 }
554 }
555
556 return size;
557}
void EnsureColLabelsVisible()
Ensure the height of the row displaying the column labels is enough, even if labels are multiline tex...
Definition: wx_grid.cpp:560

References EnsureColLabelsVisible().

Referenced by DIALOG_FOOTPRINT_PROPERTIES::adjustGridColumns(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::adjustGridColumns(), PANEL_FP_EDITOR_DEFAULTS::loadFPSettings(), PANEL_PACKAGES_VIEW::PANEL_PACKAGES_VIEW(), PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES(), PANEL_SETUP_TEXT_AND_GRAPHICS::PANEL_SETUP_TEXT_AND_GRAPHICS(), PANEL_SETUP_TRACKS_AND_VIAS::PANEL_SETUP_TRACKS_AND_VIAS(), PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint(), DIALOG_MANAGE_REPOSITORIES::setColumnWidths(), PANEL_PACKAGES_VIEW::setPackageDetails(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), PANEL_PCBNEW_ACTION_PLUGINS::TransferDataToWindow(), PANEL_SETUP_TEXT_AND_GRAPHICS::TransferDataToWindow(), and DIALOG_PCM::updatePendingActionsTab().

◆ onCellEditorHidden()

void WX_GRID::onCellEditorHidden ( wxGridEvent &  aEvent)
protected

Definition at line 225 of file wx_grid.cpp.

226{
227 if( alg::contains( m_autoEvalCols, aEvent.GetCol() ) )
228 {
229 UNITS_PROVIDER* unitsProvider = m_unitsProviders[ aEvent.GetCol() ];
230
231 if( !unitsProvider )
232 unitsProvider = m_unitsProviders.begin()->second;
233
234 m_eval->SetDefaultUnits( unitsProvider->GetUserUnits() );
235
236 int row = aEvent.GetRow();
237 int col = aEvent.GetCol();
238
239 CallAfter(
240 [this, row, col, unitsProvider]()
241 {
242 wxString stringValue = GetCellValue( row, col );
243
244 if( m_eval->Process( stringValue ) )
245 {
246 int val = unitsProvider->ValueFromString( m_eval->Result() );
247 wxString evalValue = unitsProvider->StringFromValue( val, true );
248
249 if( stringValue != evalValue )
250 {
251 SetCellValue( row, col, evalValue );
252 m_evalBeforeAfter[ { row, col } ] = { stringValue, evalValue };
253 }
254 }
255 } );
256 }
257
258 aEvent.Skip();
259}
wxString StringFromValue(double aValue, bool aAddUnitLabel=false, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
Converts aValue in internal units into a united string.
std::map< std::pair< int, int >, std::pair< wxString, wxString > > m_evalBeforeAfter
Definition: wx_grid.h:179

References alg::contains(), UNITS_PROVIDER::GetUserUnits(), m_autoEvalCols, m_eval, m_evalBeforeAfter, m_unitsProviders, UNITS_PROVIDER::StringFromValue(), and UNITS_PROVIDER::ValueFromString().

Referenced by WX_GRID().

◆ onCellEditorShown()

void WX_GRID::onCellEditorShown ( wxGridEvent &  aEvent)
protected

Definition at line 210 of file wx_grid.cpp.

211{
212 if( alg::contains( m_autoEvalCols, aEvent.GetCol() ) )
213 {
214 int row = aEvent.GetRow();
215 int col = aEvent.GetCol();
216
217 const std::pair<wxString, wxString>& beforeAfter = m_evalBeforeAfter[ { row, col } ];
218
219 if( GetCellValue( row, col ) == beforeAfter.second )
220 SetCellValue( row, col, beforeAfter.first );
221 }
222}

References alg::contains(), m_autoEvalCols, and m_evalBeforeAfter.

Referenced by WX_GRID().

◆ onGridCellSelect()

void WX_GRID::onGridCellSelect ( wxGridEvent &  aEvent)
protected

Definition at line 197 of file wx_grid.cpp.

198{
199 // Highlight the selected cell.
200 // Calling SelectBlock() allows a visual effect when cells are selected by tab or arrow keys.
201 // Otherwise, one cannot really know what actual cell is selected.
202 int row = aEvent.GetRow();
203 int col = aEvent.GetCol();
204
205 if( row >= 0 && col >= 0 )
206 SelectBlock( row, col, row, col, false );
207}

Referenced by DestroyTable(), and SetTable().

◆ onGridColMove()

void WX_GRID::onGridColMove ( wxGridEvent &  aEvent)
protected

Definition at line 513 of file wx_grid.cpp.

514{
515 // wxWidgets won't move an open editor, so better just to close it
516 CommitPendingChanges( true );
517}

References CommitPendingChanges().

Referenced by DestroyTable(), and SetTable().

◆ SetAutoEvalCols()

◆ SetColLabelSize()

void WX_GRID::SetColLabelSize ( int  aHeight)

Hide wxGrid's SetColLabelSize() method with one which makes sure the size is tall enough for the system GUI font.

Parameters
height

Definition at line 144 of file wx_grid.cpp.

145{
146 if( aHeight == 0 )
147 {
148 wxGrid::SetColLabelSize( 0 );
149 return;
150 }
151
152 // Correct wxFormBuilder height for large fonts
153 int minHeight = GetLabelFont().GetPixelSize().y + 2 * MIN_GRIDCELL_MARGIN;
154 wxGrid::SetColLabelSize( std::max( aHeight, minHeight ) );
155}

References MIN_GRIDCELL_MARGIN.

Referenced by APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), APPEARANCE_CONTROLS_BASE::APPEARANCE_CONTROLS_BASE(), DIALOG_BOARD_STATISTICS_BASE::DIALOG_BOARD_STATISTICS_BASE(), DIALOG_CONFIGURE_PATHS_BASE::DIALOG_CONFIGURE_PATHS_BASE(), DIALOG_EDIT_SYMBOLS_LIBID_BASE::DIALOG_EDIT_SYMBOLS_LIBID_BASE(), DIALOG_FOOTPRINT_PROPERTIES_BASE::DIALOG_FOOTPRINT_PROPERTIES_BASE(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE(), DIALOG_FP_PLUGIN_OPTIONS_BASE::DIALOG_FP_PLUGIN_OPTIONS_BASE(), DIALOG_LABEL_PROPERTIES_BASE::DIALOG_LABEL_PROPERTIES_BASE(), DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE(), DIALOG_LIB_SYMBOL_PROPERTIES_BASE::DIALOG_LIB_SYMBOL_PROPERTIES_BASE(), DIALOG_MANAGE_REPOSITORIES_BASE::DIALOG_MANAGE_REPOSITORIES_BASE(), DIALOG_PAD_PRIMITIVE_POLY_PROPS_BASE::DIALOG_PAD_PRIMITIVE_POLY_PROPS_BASE(), DIALOG_PCM_BASE::DIALOG_PCM_BASE(), DIALOG_PIN_PROPERTIES_BASE::DIALOG_PIN_PROPERTIES_BASE(), DIALOG_SHEET_PROPERTIES_BASE::DIALOG_SHEET_PROPERTIES_BASE(), DIALOG_SIM_MODEL_BASE::DIALOG_SIM_MODEL_BASE(), DIALOG_SWAP_LAYERS_BASE::DIALOG_SWAP_LAYERS_BASE(), DIALOG_SYMBOL_FIELDS_TABLE_BASE::DIALOG_SYMBOL_FIELDS_TABLE_BASE(), DIALOG_SYMBOL_PROPERTIES_BASE::DIALOG_SYMBOL_PROPERTIES_BASE(), EnsureColLabelsVisible(), FOOTPRINT_WIZARD_FRAME::initParameterGrid(), PANEL_FP_EDITOR_DEFAULTS_BASE::PANEL_FP_EDITOR_DEFAULTS_BASE(), PANEL_FP_LIB_TABLE_BASE::PANEL_FP_LIB_TABLE_BASE(), PANEL_FP_PROPERTIES_3D_MODEL_BASE::PANEL_FP_PROPERTIES_3D_MODEL_BASE(), PANEL_PACKAGES_VIEW_BASE::PANEL_PACKAGES_VIEW_BASE(), PANEL_PCBNEW_ACTION_PLUGINS_BASE::PANEL_PCBNEW_ACTION_PLUGINS_BASE(), PANEL_SETUP_BUSES_BASE::PANEL_SETUP_BUSES_BASE(), PANEL_SETUP_NETCLASSES_BASE::PANEL_SETUP_NETCLASSES_BASE(), PANEL_SETUP_TEXT_AND_GRAPHICS_BASE::PANEL_SETUP_TEXT_AND_GRAPHICS_BASE(), PANEL_SETUP_TRACKS_AND_VIAS_BASE::PANEL_SETUP_TRACKS_AND_VIAS_BASE(), PANEL_SYM_LIB_TABLE_BASE::PANEL_SYM_LIB_TABLE_BASE(), PANEL_TEMPLATE_FIELDNAMES_BASE::PANEL_TEMPLATE_FIELDNAMES_BASE(), PANEL_TEXT_VARIABLES_BASE::PANEL_TEXT_VARIABLES_BASE(), and WX_GRID().

◆ SetLabelFont()

void WX_GRID::SetLabelFont ( const wxFont &  aFont)

Hide wxGrid's SetLabelFont() because for some reason on MSW it's a one-shot and subsequent calls to it have no effect.

Definition at line 158 of file wx_grid.cpp.

159{
160 wxGrid::SetLabelFont( KIUI::GetControlFont( this ) );
161}

References KIUI::GetControlFont().

Referenced by WX_GRID().

◆ SetTable()

void WX_GRID::SetTable ( wxGridTableBase *  table,
bool  aTakeOwnership = false 
)

Hide wxGrid's SetTable() method with one which doesn't mess up the grid column widths when setting the table.

Definition at line 164 of file wx_grid.cpp.

165{
166 // wxGrid::SetTable() messes up the column widths from wxFormBuilder so we have to save
167 // and restore them.
168 int numberCols = GetNumberCols();
169 int* formBuilderColWidths = new int[numberCols];
170
171 for( int i = 0; i < numberCols; ++i )
172 formBuilderColWidths[ i ] = GetColSize( i );
173
174 wxGrid::SetTable( aTable );
175
176 // wxGrid::SetTable() may change the number of columns, so prevent out-of-bounds access
177 // to formBuilderColWidths
178 numberCols = std::min( numberCols, GetNumberCols() );
179
180 for( int i = 0; i < numberCols; ++i )
181 {
182 // correct wxFormBuilder width for large fonts and/or long translations
183 int headingWidth = GetTextExtent( GetColLabelValue( i ) ).x + 2 * MIN_GRIDCELL_MARGIN;
184
185 SetColSize( i, std::max( formBuilderColWidths[ i ], headingWidth ) );
186 }
187
188 delete[] formBuilderColWidths;
189
190 Connect( wxEVT_GRID_COL_MOVE, wxGridEventHandler( WX_GRID::onGridColMove ), nullptr, this );
191 Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( WX_GRID::onGridCellSelect ), nullptr, this );
192
193 m_weOwnTable = aTakeOwnership;
194}

References m_weOwnTable, MIN_GRIDCELL_MARGIN, onGridCellSelect(), and onGridColMove().

Referenced by APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), PANEL_FP_EDITOR_DEFAULTS::PANEL_FP_EDITOR_DEFAULTS(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), and PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE().

◆ SetUnitsProvider()

void WX_GRID::SetUnitsProvider ( UNITS_PROVIDER aProvider,
int  aCol = 0 
)

◆ SetUnitValue()

void WX_GRID::SetUnitValue ( int  aRow,
int  aCol,
int  aValue 
)

Set a unitized cell's value.

Definition at line 502 of file wx_grid.cpp.

503{
504 UNITS_PROVIDER* unitsProvider = m_unitsProviders[ aCol ];
505
506 if( !unitsProvider )
507 unitsProvider = m_unitsProviders.begin()->second;
508
509 SetCellValue( aRow, aCol, unitsProvider->StringFromValue( aValue, true ) );
510}

References m_unitsProviders, and UNITS_PROVIDER::StringFromValue().

Referenced by PANEL_SETUP_TRACKS_AND_VIAS::AppendDiffPairs(), PANEL_SETUP_TRACKS_AND_VIAS::AppendTrackWidth(), PANEL_SETUP_TRACKS_AND_VIAS::AppendViaSize(), PANEL_FP_EDITOR_DEFAULTS::loadFPSettings(), PANEL_SETUP_NETCLASSES::TransferDataToWindow(), and DIALOG_PAD_PRIMITIVE_POLY_PROPS::TransferDataToWindow().

◆ ShowEditorOnMouseUp()

void WX_GRID::ShowEditorOnMouseUp ( )
inline

WxWidgets has a bunch of bugs in its handling of wxGrid mouse events which close cell editors right after opening them.

Helpfully, it already has a bunch of work-arounds in place (such as the SetInSetFocus() hack), including one to make slow clicks work. We re-purpose this hack to work-around the bugs when we want to open an editor.

Definition at line 132 of file wx_grid.h.

132{ m_waitForSlowClick = true; }

Referenced by GRID_TRICKS::showEditor().

◆ ShowHideColumns()

void WX_GRID::ShowHideColumns ( const wxString &  shownColumns)

Show/hide the grid columns based on a tokenized string of shown column indexes.

Definition at line 295 of file wx_grid.cpp.

296{
297 for( int i = 0; i < GetNumberCols(); ++i )
298 HideCol( i );
299
300 wxStringTokenizer shownTokens( shownColumns );
301
302 while( shownTokens.HasMoreTokens() )
303 {
304 long colNumber;
305 shownTokens.GetNextToken().ToLong( &colNumber );
306
307 if( colNumber >= 0 && colNumber < GetNumberCols() )
308 ShowCol( (int) colNumber );
309 }
310}

Referenced by DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), and DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES().

Member Data Documentation

◆ m_autoEvalCols

std::vector<int> WX_GRID::m_autoEvalCols
protected

Definition at line 177 of file wx_grid.h.

Referenced by GetUnitValue(), onCellEditorHidden(), onCellEditorShown(), and SetAutoEvalCols().

◆ m_eval

std::unique_ptr<NUMERIC_EVALUATOR> WX_GRID::m_eval
protected

Definition at line 176 of file wx_grid.h.

Referenced by GetUnitValue(), onCellEditorHidden(), and SetUnitsProvider().

◆ m_evalBeforeAfter

std::map< std::pair<int, int>, std::pair<wxString, wxString> > WX_GRID::m_evalBeforeAfter
protected

Definition at line 179 of file wx_grid.h.

Referenced by onCellEditorHidden(), and onCellEditorShown().

◆ m_unitsProviders

std::map<int, UNITS_PROVIDER*> WX_GRID::m_unitsProviders
protected

Definition at line 175 of file wx_grid.h.

Referenced by GetUnitValue(), onCellEditorHidden(), SetUnitsProvider(), and SetUnitValue().

◆ m_weOwnTable

bool WX_GRID::m_weOwnTable
protected

Definition at line 173 of file wx_grid.h.

Referenced by SetTable(), and ~WX_GRID().


The documentation for this class was generated from the following files: