Use wxDatePickerCtrl in wxDataViewDateRenderer.

Inline editor is more in line with the behavior of other editors,
requiring double click to edit values was unexpected.

Also merge the two almost-but-not-quite identical implementations in
generic and GTK+ versions.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2011-10-19 16:20:06 +00:00
parent 31af22fa2d
commit 1d3a930e82
6 changed files with 90 additions and 270 deletions

View File

@@ -26,6 +26,7 @@
#include "wx/crt.h"
#endif
#include "wx/datectrl.h"
#include "wx/spinctrl.h"
#include "wx/choice.h"
#include "wx/imaglist.h"
@@ -1609,6 +1610,64 @@ bool wxDataViewChoiceByIndexRenderer::GetValue( wxVariant &value ) const
#endif
// ---------------------------------------------------------
// wxDataViewDateRenderer
// ---------------------------------------------------------
#if (defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXGTK__)) && wxUSE_DATEPICKCTRL
wxDataViewDateRenderer::wxDataViewDateRenderer(const wxString& varianttype,
wxDataViewCellMode mode, int align)
: wxDataViewCustomRenderer(varianttype, mode, align)
{
}
wxWindow *
wxDataViewDateRenderer::CreateEditorCtrl(wxWindow *parent, wxRect labelRect, const wxVariant& value)
{
return new wxDatePickerCtrl
(
parent,
wxID_ANY,
value.GetDateTime(),
labelRect.GetTopLeft(),
labelRect.GetSize()
);
}
bool wxDataViewDateRenderer::GetValueFromEditorCtrl(wxWindow *editor, wxVariant& value)
{
wxDatePickerCtrl *ctrl = static_cast<wxDatePickerCtrl*>(editor);
value = ctrl->GetValue();
return true;
}
bool wxDataViewDateRenderer::SetValue(const wxVariant& value)
{
m_date = value.GetDateTime();
return true;
}
bool wxDataViewDateRenderer::GetValue(wxVariant& value) const
{
value = m_date;
return true;
}
bool wxDataViewDateRenderer::Render(wxRect cell, wxDC* dc, int state)
{
wxString tmp = m_date.FormatDate();
RenderText( tmp, 0, cell, dc, state );
return true;
}
wxSize wxDataViewDateRenderer::GetSize() const
{
return GetTextExtent(m_date.FormatDate());
}
#endif // (defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXGTK__)) && wxUSE_DATEPICKCTRL
//-----------------------------------------------------------------------------
// wxDataViewListStore
//-----------------------------------------------------------------------------