diff options
Diffstat (limited to 'Source/CursesDialog/cmCursesMainForm.cxx')
-rw-r--r-- | Source/CursesDialog/cmCursesMainForm.cxx | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index ae89e07..aa81203 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -784,9 +784,7 @@ void cmCursesMainForm::RemoveEntry(const char* value) // copy from the list box to the cache manager void cmCursesMainForm::FillCacheManagerFromUI() -{ - std::string tmpString; - +{ int size = m_Entries->size(); for(int i=0; i < size; i++) { @@ -795,17 +793,40 @@ void cmCursesMainForm::FillCacheManagerFromUI() (*m_Entries)[i]->m_Key.c_str()); if (!it.IsAtEnd()) { - tmpString = (*m_Entries)[i]->m_Entry->GetValue(); - - // Remove trailing spaces, convert path to unix slashes - std::string tmpSubString = - tmpString.substr(0,tmpString.find_last_not_of(" ")+1); - if ( it.GetType() == cmCacheManager::PATH || - it.GetType() == cmCacheManager::FILEPATH ) + std::string oldValue = it.GetValue(); + std::string newValue = (*m_Entries)[i]->m_Entry->GetValue(); + std::string fixedOldValue; + std::string fixedNewValue; + this->FixValue(it.GetType(), oldValue, fixedOldValue); + this->FixValue(it.GetType(), newValue, fixedNewValue); + + if(!(fixedOldValue == fixedNewValue)) { - cmSystemTools::ConvertToUnixSlashes(tmpSubString); + // The user has changed the value. Mark it as modified. + it.SetProperty("MODIFIED", true); } - it.SetValue(tmpSubString.c_str()); + it.SetValue(fixedNewValue.c_str()); + } + } +} + +void cmCursesMainForm::FixValue(cmCacheManager::CacheEntryType type, + const std::string& in, std::string& out) const +{ + out = in.substr(0,in.find_last_not_of(" ")+1); + if(type == cmCacheManager::PATH || type == cmCacheManager::FILEPATH) + { + cmSystemTools::ConvertToUnixSlashes(out); + } + if(type == cmCacheManager::BOOL) + { + if(cmSystemTools::IsOff(out.c_str())) + { + out = "OFF"; + } + else + { + out = "ON"; } } } |