[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [lmi] [PATCH] Filter out disallowed mc_enum values in CensusView
From: |
Vaclav Slavik |
Subject: |
Re: [lmi] [PATCH] Filter out disallowed mc_enum values in CensusView |
Date: |
Mon, 27 Feb 2012 16:10:54 +0100 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 |
On 2012-02-27 16:08, Vaclav Slavik wrote:
> the patch below implements ConditionallyEnableItems()-like behavior in
> CensusView's grid.
And this one, to be applied on top of the previous one, makes type
handling a bit nicer (and more importantly, harder to make a mistake in)
by adding a helper function to get type's name for use in wxVariant and
wxDataViewRenderer.
Vaclav
---
census_view.cpp | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/census_view.cpp b/census_view.cpp
index 5e70ce3..a840d67 100644
--- a/census_view.cpp
+++ b/census_view.cpp
@@ -87,6 +87,13 @@ std::string insert_spaces_between_words(std::string const& s)
return r;
}
+template<typename T>
+inline char const* variant_and_dvc_type_name()
+{
+ return typeid(T).name();
+}
+
+
/// Data needed to create UI for tn_range<> types.
struct tn_range_variant_data
@@ -110,7 +117,7 @@ struct tn_range_variant_data
return value == d->value && min == d->min && max == d->max;
}
- virtual wxString GetType() const { return
typeid(tn_range_variant_data).name(); }
+ virtual wxString GetType() const { return
variant_and_dvc_type_name<tn_range_variant_data>(); }
virtual wxVariantData* Clone() const
{
@@ -148,7 +155,7 @@ class RangeTypeRenderer
RangeTypeRenderer::RangeTypeRenderer()
:wxDataViewCustomRenderer
- (typeid(tn_range_variant_data).name()
+ (variant_and_dvc_type_name<tn_range_variant_data>()
,wxDATAVIEW_CELL_EDITABLE
,wxDVR_DEFAULT_ALIGNMENT)
{
@@ -365,7 +372,7 @@ struct input_sequence_variant_data
return value == d->value;
}
- virtual wxString GetType() const { return
typeid(input_sequence_variant_data).name(); }
+ virtual wxString GetType() const { return
variant_and_dvc_type_name<input_sequence_variant_data>(); }
virtual wxVariantData* Clone() const
{
@@ -396,7 +403,11 @@ class DatumSequenceRenderer
};
DatumSequenceRenderer::DatumSequenceRenderer()
- :wxDataViewCustomRenderer(typeid(input_sequence_variant_data).name(),
wxDATAVIEW_CELL_EDITABLE, wxDVR_DEFAULT_ALIGNMENT)
+ :wxDataViewCustomRenderer
+ (variant_and_dvc_type_name<input_sequence_variant_data>()
+ ,wxDATAVIEW_CELL_EDITABLE
+ ,wxDVR_DEFAULT_ALIGNMENT
+ )
,m_input(0)
{
}
@@ -486,7 +497,7 @@ struct mc_enum_variant_data
return value == d->value;
}
- virtual wxString GetType() const { return
typeid(mc_enum_variant_data).name(); }
+ virtual wxString GetType() const { return
variant_and_dvc_type_name<mc_enum_variant_data>(); }
virtual wxVariantData* Clone() const
{
@@ -523,7 +534,11 @@ class EnumRenderer
};
EnumRenderer::EnumRenderer()
- :wxDataViewCustomRenderer(typeid(mc_enum_variant_data).name(),
wxDATAVIEW_CELL_EDITABLE, wxDVR_DEFAULT_ALIGNMENT)
+ :wxDataViewCustomRenderer
+ (variant_and_dvc_type_name<mc_enum_variant_data>()
+ ,wxDATAVIEW_CELL_EDITABLE
+ ,wxDVR_DEFAULT_ALIGNMENT
+ )
,m_datum(0)
{
}
@@ -674,7 +689,7 @@ class renderer_enum_convertor : public
renderer_type_convertor
virtual char const* variant_type() const
{
- return typeid(mc_enum_variant_data).name();
+ return variant_and_dvc_type_name<mc_enum_variant_data>();
}
virtual wxDataViewRenderer* create_renderer(any_member<Input> const&
representative_value) const
@@ -702,7 +717,7 @@ class renderer_sequence_convertor : public
renderer_type_convertor
virtual char const* variant_type() const
{
- return typeid(input_sequence_variant_data).name();
+ return variant_and_dvc_type_name<input_sequence_variant_data>();
}
virtual wxDataViewRenderer* create_renderer(any_member<Input> const&) const
@@ -732,7 +747,7 @@ class renderer_range_convertor : public
renderer_type_convertor
virtual char const* variant_type() const
{
- return typeid(tn_range_variant_data).name();
+ return variant_and_dvc_type_name<tn_range_variant_data>();
}
};
--
1.7.9.2