From dd7b48c9c386ffd7fa184284403988df85a38279 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 12 Mar 2009 10:52:40 -0400 Subject: ENH: Define STRINGS cache entry property This property defines a list of values for a cache entry of type STRING. A CMake GUI may optionally use a drop-down selection widget for the entry instead of a generic text entry field. We do not enforce that the value of the entry match one of the strings listed. --- Source/cmCacheManager.cxx | 11 +++++++++++ Source/cmSetPropertyCommand.cxx | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index f65c80d..bc3830f 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -357,6 +357,7 @@ const char* cmCacheManager::PersistentProperties[] = { "ADVANCED", "MODIFIED", + "STRINGS", 0 }; @@ -988,6 +989,16 @@ void cmCacheManager::DefineProperties(cmake *cm) ); cm->DefineProperty + ("STRINGS", cmProperty::CACHE, + "Enumerate possible STRING entry values for GUI selection.", + "For cache entries with type STRING, this enumerates a set of values. " + "CMake GUIs may use this to provide a selection widget instead of a " + "generic string entry field. " + "This is for convenience only. " + "CMake does not enforce that the value matches one of those listed." + ); + + cm->DefineProperty ("VALUE", cmProperty::CACHE, "Value of a cache entry.", "This property maps to the actual value of a cache entry. " diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index fbe877b..caed6dc 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -419,12 +419,13 @@ bool cmSetPropertyCommand::HandleCacheMode() } } else if(this->PropertyName != "HELPSTRING" && + this->PropertyName != "STRINGS" && this->PropertyName != "VALUE") { cmOStringStream e; e << "given invalid CACHE property " << this->PropertyName << ". " << "Settable CACHE properties are: " - << "ADVANCED, HELPSTRING, TYPE, and VALUE."; + << "ADVANCED, HELPSTRING, STRINGS, TYPE, and VALUE."; this->SetError(e.str().c_str()); return false; } -- cgit v0.12