Files
l7/LGridCheckRenderer.cpp
2022-11-19 16:05:44 +01:00

82 lines
2.0 KiB
C++

/*
* File: LGridCheckRenderer.cpp
* Author: Saleem Edah-Tally - nmset@yandex.com
* License : LGPL version 2.1
* Copyright Saleem Edah-Tally, M. D. - © 2014
*
* Created on 9 juin 2014, 21:33
*/
#include "LGridCheckRenderer.h"
LGridCheckRenderer::LGridCheckRenderer(bool isDualState, const wxString& newNullLabel)
: wxGridCellStringRenderer()
{
m_triState = !isDualState;
if (newNullLabel.IsEmpty())
{
m_nullLabel = _T("?");
}
else
{
m_nullLabel = newNullLabel;
}
}
LGridCheckRenderer::~LGridCheckRenderer()
{
}
void LGridCheckRenderer::Draw(wxGrid & grid,
wxGridCellAttr & attr,
wxDC & dc,
const wxRect & rect,
int row,
int col,
bool isSelected)
{
/* The interpretation of literal non/oui is not documented
* as it's for internal use.
*/
wxString val = grid.GetCellValue(row, col);
if (m_triState)
{
if (val.IsEmpty()
|| val == m_nullLabel)
{
grid.GetTable()->SetValue(row, col, m_nullLabel);
wxGridCellStringRenderer::Draw(grid, attr, dc, rect, row, col, isSelected);
return;
}
if (val == _T("0")
|| val.Lower() == _("no"))
{
grid.GetTable()->SetValue(row, col, _T("No"));
}
else
{
grid.GetTable()->SetValue(row, col, _T("Yes"));
}
}
else
{
if (val == _T("0")
|| val.IsEmpty()
|| val.Lower() == _("no"))
{
grid.GetTable()->SetValue(row, col, _T("No"));
}
else
{
grid.GetTable()->SetValue(row, col, _T("Yes"));
}
}
wxGridCellStringRenderer::Draw(grid, attr, dc, rect, row, col, isSelected);
}
wxGridCellRenderer* LGridCheckRenderer::Clone() const
{
return new LGridCheckRenderer(!m_triState, m_nullLabel);
}