lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [5343] Use textctrls rather than spinctrls for doubles (VS


From: Greg Chicares
Subject: [lmi-commits] [5343] Use textctrls rather than spinctrls for doubles (VS)
Date: Wed, 04 Jan 2012 23:03:38 +0000

Revision: 5343
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5343
Author:   chicares
Date:     2012-01-04 23:03:37 +0000 (Wed, 04 Jan 2012)
Log Message:
-----------
Use textctrls rather than spinctrls for doubles (VS)

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/census_view.cpp

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2012-01-04 18:25:44 UTC (rev 5342)
+++ lmi/trunk/ChangeLog 2012-01-04 23:03:37 UTC (rev 5343)
@@ -29332,3 +29332,9 @@
   zero_test.cpp
 Update copyright notices.
 
+20120104T2303Z <address@hidden> [597]
+
+  census_view.cpp
+Use textctrls rather than spinctrls for doubles (VS). See:
+  http://lists.nongnu.org/archive/html/lmi/2011-12/msg00015.html
+

Modified: lmi/trunk/census_view.cpp
===================================================================
--- lmi/trunk/census_view.cpp   2012-01-04 18:25:44 UTC (rev 5342)
+++ lmi/trunk/census_view.cpp   2012-01-04 23:03:37 UTC (rev 5343)
@@ -53,8 +53,9 @@
 #include <wx/menu.h>
 #include <wx/msgdlg.h>
 #include <wx/spinctrl.h>
+#include <wx/valnum.h>
+#include <wx/wupdlock.h>
 #include <wx/xrc/xmlres.h>
-#include <wx/wupdlock.h>
 
 #include <algorithm>
 #include <cctype>
@@ -246,42 +247,50 @@
     return value_cast<std::string>(spin->GetValue());
 }
 
-// class DoubleSpinRenderer
+// class DoubleRangeRenderer
 
-class DoubleSpinRenderer
+class DoubleRangeRenderer
     :public RangeTypeRenderer
 {
   public:
-    DoubleSpinRenderer() : RangeTypeRenderer() {}
+    DoubleRangeRenderer() : RangeTypeRenderer() {}
 
   protected:
     virtual wxWindow* DoCreateEditor(wxWindow* parent, wxRect const& rect, 
tn_range_variant_data const& data);
     virtual std::string DoGetValueFromEditor(wxWindow* editor);
 };
 
-wxWindow* DoubleSpinRenderer::DoCreateEditor
+wxWindow* DoubleRangeRenderer::DoCreateEditor
     (wxWindow* parent
      ,wxRect const& rect
      ,tn_range_variant_data const& data)
 {
-    return new(wx) wxSpinCtrlDouble
+    wxFloatingPointValidator<double> val;
+    val.SetRange(data.min, data.max);
+
+    wxTextCtrl* ctrl = new(wx) wxTextCtrl
         (parent
         ,wxID_ANY
         ,data.value
         ,rect.GetTopLeft()
         ,rect.GetSize()
-        ,wxSP_ARROW_KEYS | wxTE_PROCESS_ENTER
-        ,data.min
-        ,data.max
-        ,value_cast<double>(data.value));
+        ,wxTE_PROCESS_ENTER
+        ,val);
+
+    // select the text in the control an place the cursor at the end
+    // (same as wxDataViewTextRenderer)
+    ctrl->SetInsertionPointEnd();
+    ctrl->SelectAll();
+
+    return ctrl;
 }
 
-std::string DoubleSpinRenderer::DoGetValueFromEditor(wxWindow* editor)
+std::string DoubleRangeRenderer::DoGetValueFromEditor(wxWindow* editor)
 {
-    wxSpinCtrlDouble* spin = dynamic_cast<wxSpinCtrlDouble*>(editor);
-    LMI_ASSERT(spin);
+    wxTextCtrl* ctrl = dynamic_cast<wxTextCtrl*>(editor);
+    LMI_ASSERT(ctrl);
 
-    return value_cast<std::string>(spin->GetValue());
+    return ctrl->GetValue().ToStdString();
 }
 
 // class DateRenderer
@@ -600,7 +609,7 @@
   public:
     virtual wxDataViewRenderer* create_renderer(any_member<Input> const&) const
     {
-        return new(wx) DoubleSpinRenderer();
+        return new(wx) DoubleRangeRenderer();
     }
 };
 




reply via email to

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