lmi
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]