lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5678] Fix defect noted 20130414T1341Z


From: Greg Chicares
Subject: [lmi-commits] [5678] Fix defect noted 20130414T1341Z
Date: Sun, 14 Apr 2013 18:47:19 +0000

Revision: 5678
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5678
Author:   chicares
Date:     2013-04-14 18:47:19 +0000 (Sun, 14 Apr 2013)
Log Message:
-----------
Fix defect noted 20130414T1341Z

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/preferences_model.cpp
    lmi/trunk/preferences_model.hpp

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2013-04-14 15:06:19 UTC (rev 5677)
+++ lmi/trunk/ChangeLog 2013-04-14 18:47:19 UTC (rev 5678)
@@ -31944,3 +31944,35 @@
   version.hpp
 Designate release candidate.
 
+20130414T1227Z <address@hidden> [543]
+
+  ihs_acctval.cpp
+  ihs_avmly.cpp
+  mec_server.cpp
+Improve documentation.
+
+20130414T1341Z <address@hidden> [543]
+
+  preferences_model.cpp
+Document a defect.
+
+20130414T1400Z <address@hidden> [543]
+
+  configurable_settings.cpp
+  configurable_settings.hpp
+  ledger_text_formats.cpp
+Improve a misleading function name.
+
+20130414T1506Z <address@hidden> [543]
+
+  Makefile.am
+  configurable_settings.cpp
+  objects.make
+Diagnose the defect noted 20130414T1341Z.
+
+20130414T1847Z <address@hidden> [543]
+
+  preferences_model.cpp
+  preferences_model.hpp
+Fix defect noted 20130414T1341Z.
+

Modified: lmi/trunk/preferences_model.cpp
===================================================================
--- lmi/trunk/preferences_model.cpp     2013-04-14 15:06:19 UTC (rev 5677)
+++ lmi/trunk/preferences_model.cpp     2013-04-14 18:47:19 UTC (rev 5678)
@@ -31,9 +31,7 @@
 #include "alert.hpp"
 #include "configurable_settings.hpp"
 
-#include <cstddef> // std::size_t
-#include <iterator>
-#include <stdexcept>
+#include <cstddef>                      // std::size_t
 #include <sstream>
 #include <vector>
 
@@ -181,11 +179,24 @@
 bool PreferencesModel::IsModified() const
 {
     PreferencesModel unchanged;
-    unchanged.Load();
+// CALCULATION_SUMMARY Apparently unneeded: ctor calls Load().
+//    unchanged.Load();
+// Unfortunately, construction of 'unchanged' therefore causes any
+// parsed_calculation_summary_columns() diagnostics to be repeated.
+// It would seem better to permit copying, and then use a copy.
     if(unchanged.UseBuiltinCalculationSummary != UseBuiltinCalculationSummary)
         {
         return true;
         }
+    configurable_settings const& z = configurable_settings::instance();
+    if(string_of_column_names() != z.calculation_summary_columns())
+        {
+        return true;
+        }
+    // This test duplicates the preceding one. This one may be what
+    // is ultimately wanted, but for now at least it doesn't detect
+    // parsed_calculation_summary_columns()'s removal of invalid
+    // substrings.
     std::vector<std::string>::const_iterator i;
     for(i = member_names().begin(); i != member_names().end(); ++i)
         {
@@ -197,24 +208,11 @@
     return false;
 }
 
-// Defect: if any column field contains an invalid name, e.g.:
-//   <calculation_summary_columns>invalid</calculation_summary_columns>
-// then this assignment:
-//   operator[](name) = columns[i];
-// throws an exception; in that case, running an illustration appears
-// to fail, and the preferences GUI cannot fix the problem.
-
 void PreferencesModel::Load()
 {
+    std::vector<std::string> columns(parsed_calculation_summary_columns());
+
     configurable_settings const& z = configurable_settings::instance();
-    std::istringstream iss(z.calculation_summary_columns());
-    std::vector<std::string> columns;
-    std::copy
-        (std::istream_iterator<std::string>(iss)
-        ,std::istream_iterator<std::string>()
-        ,std::back_inserter(columns)
-        );
-
     bool b = z.use_builtin_calculation_summary();
     UseBuiltinCalculationSummary = b ? "Yes" : "No";
 
@@ -234,7 +232,7 @@
         }
 }
 
-void PreferencesModel::Save() const
+std::string PreferencesModel::string_of_column_names() const
 {
     std::ostringstream oss;
     std::vector<std::string>::const_iterator i;
@@ -251,7 +249,13 @@
             oss << column << " ";
             }
         }
-    if(oss.str().empty() && "Yes" != UseBuiltinCalculationSummary)
+    return oss.str();
+}
+
+void PreferencesModel::Save() const
+{
+    std::string s(string_of_column_names());
+    if(s.empty() && "Yes" != UseBuiltinCalculationSummary)
         {
         warning()
             << "Calculation summary will be empty: no columns chosen."
@@ -259,7 +263,7 @@
             ;
         }
     configurable_settings& z = configurable_settings::instance();
-    z.calculation_summary_columns(oss.str());
+    z.calculation_summary_columns(s);
     z.use_builtin_calculation_summary("Yes" == UseBuiltinCalculationSummary);
 }
 

Modified: lmi/trunk/preferences_model.hpp
===================================================================
--- lmi/trunk/preferences_model.hpp     2013-04-14 15:06:19 UTC (rev 5677)
+++ lmi/trunk/preferences_model.hpp     2013-04-14 18:47:19 UTC (rev 5678)
@@ -52,6 +52,8 @@
   private:
     void AscribeMembers();
 
+    std::string string_of_column_names() const;
+
     // MvcModel required implementation.
     virtual void DoAdaptExternalities();
     virtual datum_base const* DoBaseDatumPointer(std::string const&) const;




reply via email to

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