Since wxWidgets uses an activable editor for wxGridCellBoolEditor,
wxGridEditorCreatedEvent is no longer emitted for such a column.
See https://trac.wxwidgets.org/ticket/19071
Using wxEVT_GRID_CELL_CHANGED to clear all checkboxes in preferred
column, instead of relying on the created editor pointer which can no
longer be referenced.
Else, the last buffer will populate the popup grid.
Added LResultSetEvent::DataChanged, LResultSet::InformDataChanged,
JsonGridEditorRsEVH::DataChanged and XmlGridEditorRsEVH::DataChanged.
We do nothing in this override.
wxASSERT_MSG would fail in LGridJsonCellRenderer::ProcessJsonValue and
in XmlHelper::ValidateXmlValue called by
LGridXmlCellRenderer::ProcessXmlValue. This happens with postgresql
only, when the corresponding database value is empty. The cell value
is set to [Invalid], and next rendering leads to a crash in debug build
only.
Why does wxASSERT_MSG fail? Why with postgresql and not with sqlite?
popup containing a wxGrid object.
BasePicker : Abstract class adding a popup to wxPickerBase styled with
a wxTextCtrl.
BaseGridPicker : Abstract class adding a wxGrid in the popup.
JsonGridPickerCtrl : UI control storing the tabular data in a JSON
array.
LBoundJsonGridPicker : connect JsonGridPicker to database.
LGridJsonCellEditor : use LBoundJsonGridPicker in other wxGrid objects.
LGridJsonCellRenderer : render cell JSON data.
XmlGridPickerCtrl : UI control storing the tabular data in as XML
document.
LBoundXmlGridPicker : connect XmlGridPicker to database.
LGridXmlCellEditor : grid editor for LBoundXmlGridPicker.
LGridXmlCellRenderer : grid renderer for LBoundXmlGridPicker.
JsonHelper and XmlHelper : for applications to quickly get intent value
from database data..
The structure of managed tabular data :
Column 1 : Intent - this is what we want to store/edit. This can be
telephone numbers, email addresses, instant messaging addresses...
any single line piece of information that can exist many times for one
entity (person, company...).
Column 2 : Type - A short description of the intent : 'Home, Work,
Mobile, Fax, Other...'. It is displayed in a non editable wxComboBox.
Column 3 : Preferred - One line of data can be selected as the preferred
one. It is not mandatory, but it must be a single choice.
Column 4 : Notes - single line notes.
Adjust sql scripts and L7.dox.
Applied ANSI formatting style to all files.
Other changes :
Work around a nasty misbehavior.
Grid columns edited by a translated combobox expect full string
data as cell values. LResultSet::BEData() will report these mapped strings,
instead of database real data. LBoundComboBox::IsDirty() will always be
true even if the editor is unchanged once created.
Simplest workaround : disconnect m_BoundComboBox if unchanged.
LGridTextEditor::ProvideFormEditor() : set the form editor's value
explicitely.; wxTextCtrl does not interpret data it receives
LBoundControl::SetNull must be void.
LBoundGrid : Unbind:: instructions should limit to the widget's id, like Bind::
LConnection::GetReturnedKeys should return NULL.
LConnection::SetData should return void.
Notes : wxJSON must be configured with the same prefix as wxWidgets,
here /usr/local/{wxWidgets,wxWidgets-Release}.