9#include <xercesc/util/PlatformUtils.hpp>
10#include <xercesc/util/TransService.hpp>
11#include <xercesc/sax2/XMLReaderFactory.hpp>
13#include <nlohmann/json.hpp>
14using json = nlohmann::json;
17#include "IException.h"
19#include "IsisXMLChTrans.h"
21#include "Preference.h"
24#include "PvlKeyword.h"
33namespace XERCES = XERCES_CPP_NAMESPACE;
69 const QString &value) {
73 if(param->values.size() > 0) {
74 QString message =
"A value for this parameter [" + paramName +
"] has "
75 "already been entered.";
79 param->values.clear();
80 param->values.push_back(value);
97 const vector<QString> &value) {
101 if(param->values.size() > 0) {
102 QString message =
"A value for this parameter [" + paramName +
"] has "
103 "already been entered.";
107 param->values.resize(value.size());
108 param->values = value;
135 if(param->type !=
"string" && param->type !=
"combo") {
136 QString message =
"Parameter [" + paramName +
"] is not a string.";
140 if(param->values.size() > 0) {
141 QString message =
"A value for this parameter [" + paramName +
"] has "
142 "already been saved (possibly by IsisGui). If you need to "
143 "change the value use \"Clear\" before the Put.";
147 param->values.clear();
148 param->values.push_back(value);
164 const vector<QString> &value) {
168 if(param->type !=
"string" && param->type !=
"combo") {
169 QString message =
"Parameter [" + paramName +
"] is not a string.";
173 if(param->values.size() > 0) {
174 QString message =
"A value for this parameter [" + paramName +
"] has "
175 "already been saved (possibly by IsisGui). If you need to "
176 "change the value use \"Clear\" before the Put.";
180 param->values.resize(value.size());
181 param->values = value;
199 const QString &value) {
203 if((param->type !=
"filename") && (param->type !=
"cube")) {
204 QString message =
"Parameter [" + paramName +
"] is not a filename.";
208 if(param->values.size() > 0) {
209 QString message =
"A value for this parameter [" + paramName +
"] has "
210 "already been saved (possibly by IsisGui). If you need to "
211 "change the value use \"Clear\" before the Put.";
215 param->values.clear();
216 param->values.push_back(value);
241 const vector<QString> &value) {
245 if((param->type !=
"filename") && (param->type !=
"cube")) {
246 QString message =
"Parameter [" + paramName +
"] is not a filename.";
250 if(param->values.size() > 0) {
251 QString message =
"A value for this parameter [" + paramName +
"] has "
252 "already been saved (possibly by IsisGui). If you need to "
253 "change the value use \"Clear\" before the Put.";
257 param->values.resize(value.size());
258 param->values = value;
274 const QString &value) {
278 if(param->type !=
"cube") {
279 QString message =
"Parameter [" + paramName +
"] is not a cubename.";
283 if(param->values.size() > 0) {
284 QString message =
"A value for this parameter [" + paramName +
"] has "
285 "already been saved (possibly by IsisGui). If you need to "
286 "change the value use \"Clear\" before the Put.";
290 param->values.clear();
291 param->values.push_back(value);
316 if(param->type !=
"integer") {
317 QString message =
"Parameter [" + paramName +
"] is not an integer.";
321 if(param->values.size() > 0) {
322 QString message =
"A value for this parameter [" + paramName +
"] has "
323 "already been saved (possibly by IsisGui). If you need to "
324 "change the value use \"Clear\" before the Put.";
328 param->values.clear();
353 const vector<int> &value) {
357 if(param->type !=
"integer") {
358 QString message =
"Parameter [" + paramName +
"] is not an integer.";
362 if(param->values.size() > 0) {
363 QString message =
"A value for this parameter [" + paramName +
"] has "
364 "already been saved (possibly by IsisGui). If you need to "
365 "change the value use \"Clear\" before the Put.";
369 param->values.resize(value.size());
370 for(
unsigned int i = 0; i < value.size(); i++) {
396 const double &value) {
400 if(param->type !=
"double") {
401 QString message =
"Parameter [" + paramName +
"] is not a double.";
405 if(param->values.size() > 0) {
406 QString message =
"A value for this parameter [" + paramName +
"] has "
407 "already been saved (possibly by IsisGui). If you need to "
408 "change the value use \"Clear\" before the Put.";
412 param->values.clear();
437 const vector<double> &value) {
441 if(param->type !=
"double") {
442 QString message =
"Parameter [" + paramName +
"] is not a double.";
446 if(param->values.size() > 0) {
447 QString message =
"A value for this parameter [" + paramName +
"] has "
448 "already been saved (possibly by IsisGui). If you need to "
449 "change the value use \"Clear\" before the Put.";
453 param->values.resize(value.size());
454 for(
unsigned int i = 0; i < value.size(); i++) {
484 if(param->type !=
"boolean") {
485 QString message =
"Parameter [" + paramName +
"] is not a boolean.";
489 if(param->values.size() > 0) {
490 QString message =
"A value for this parameter [" + paramName +
"] has "
491 "already been saved (possibly by IsisGui). If you need to "
492 "change the value use \"Clear\" before the Put.";
496 param->values.clear();
498 param->values.push_back(
"YES");
501 param->values.push_back(
"NO");
526 const vector<bool> &value) {
530 if(param->type !=
"boolean") {
531 QString message =
"Parameter [" + paramName +
"] is not a boolean.";
535 if(param->values.size() > 0) {
536 QString message =
"A value for this parameter [" + paramName +
"] has "
537 "already been saved (possibly by IsisGui). If you need to "
538 "change the value use \"Clear\" before the Put.";
542 param->values.resize(value.size());
543 for(
unsigned int i = 0; i < value.size(); i++) {
545 param->values.push_back(
"YES");
548 param->values.push_back(
"NO");
574 if(param->values.size() == 0) {
575 if(param->defaultValues.size() == 0) {
576 QString message =
"Parameter [" + paramName +
"] has no value.";
580 value = param->defaultValues[0];
584 value = param->values[0];
604 vector<QString> &values)
const {
610 if(param->values.size() == 0) {
611 if(param->defaultValues.size() == 0) {
612 QString message =
"Parameter [" + paramName +
"] has no value.";
616 for(
unsigned int i = 0; i < param->defaultValues.size(); i++)
617 values.push_back(param->defaultValues[i]);
621 for(
unsigned int i = 0; i < param->values.size(); i++)
622 values.push_back(param->values[i]);
644 if(param->type !=
"filename") {
645 QString message =
"Parameter [" + paramName +
"] is not a filename.";
650 if(param->values.size() == 0) {
651 if(param->defaultValues.size() == 0) {
652 QString message =
"Parameter [" + paramName +
"] has no value.";
656 value = param->defaultValues[0];
660 value = param->values[0];
664 if(extension !=
"") name = name.
addExtension(extension);
681 vector<QString> &values)
const {
685 if(param->type !=
"filename") {
686 QString message =
"Parameter [" + paramName +
"] is not a filename.";
691 if(param->values.size() == 0) {
692 if(param->defaultValues.size() == 0) {
693 QString message =
"Parameter [" + paramName +
"] has no value.";
697 for(
unsigned int i = 0; i < param->defaultValues.size(); i++) {
699 values.push_back(name.expanded());
704 for(
unsigned int i = 0; i < param->values.size(); i++) {
706 values.push_back(name.expanded());
728 if (param->type !=
"cube") {
729 QString message =
"Parameter [" + paramName +
"] is not a cubename.";
734 if (param->values.size() == 0) {
735 if (param->defaultValues.size() == 0) {
736 QString message =
"Parameter [" + paramName +
"] has no value.";
740 value = param->defaultValues[0];
744 value = param->values[0];
748 if (extension !=
"") name = name.
addExtension(extension);
774 if(param->type !=
"string" && param->type !=
"combo") {
775 QString message =
"Parameter [" + paramName +
"] is not a string.";
779 if(param->values.size() == 0) {
780 if(param->defaultValues.size() == 0) {
781 QString message =
"Parameter [" + paramName +
"] has no value.";
785 value = param->defaultValues[0];
789 value = param->values[0];
792 if(param->listOptions.size() > 0) {
793 value = value.toUpper();
796 for(
unsigned int p = 0; p < param->listOptions.size(); p++) {
797 QString option = param->listOptions[p].value;
798 option = option.toUpper();
799 if(value == option) {
802 else if(value.startsWith(option) || option.startsWith(value)) {
804 foundcount = foundcount + 1;
807 if(foundcount == 0) {
808 QString message =
"Value [" + value +
"] for parameter [" +
809 paramName +
"] is not a valid value.";
813 QString message =
"Value [" + value +
"] for parameter [" +
814 paramName +
"] is not unique.";
817 return param->listOptions[found].value;
822 value = param->values[0];
842 vector<QString> &values)
const {
846 if(param->type !=
"string" && param->type !=
"combo") {
847 QString message =
"Parameter [" + paramName +
"] is not a string.";
853 if(param->values.size() == 0) {
854 if(param->defaultValues.size() == 0) {
855 QString message =
"Parameter [" + paramName +
"] has no value.";
859 for(
unsigned int i = 0; i < param->defaultValues.size(); i++)
860 values.push_back(param->defaultValues[i]);
864 for(
unsigned int i = 0; i < param->values.size(); i++)
865 values.push_back(param->values[i]);
887 if(param->type !=
"integer") {
888 QString message =
"Parameter [" + paramName +
"] is not an integer.";
893 if(param->values.size() == 0) {
894 if(param->defaultValues.size() == 0) {
895 QString message =
"Parameter [" + paramName +
"] has no value.";
899 value = param->defaultValues[0];
903 value = param->values[0];
923 vector<int> &values)
const {
927 if(param->type !=
"integer") {
928 QString message =
"Parameter [" + paramName +
"] is not an integer.";
934 if(param->values.size() == 0) {
935 if(param->defaultValues.size() == 0) {
936 QString message =
"Parameter [" + paramName +
"] has no value.";
940 for(
unsigned int i = 0; i < param->defaultValues.size(); i++)
941 value = param->defaultValues[i];
946 for(
unsigned int i = 0; i < param->values.size(); i++)
947 value = param->values[i];
970 if(param->type !=
"double") {
971 QString message =
"Parameter [" + paramName +
"] is not a double.";
976 if(param->values.size() == 0) {
977 if(param->defaultValues.size() == 0) {
978 QString message =
"Parameter [" + paramName +
"] has no value.";
982 value = param->defaultValues[0];
986 value = param->values[0];
1006 vector<double> &values)
const {
1010 if(param->type !=
"double") {
1011 QString message =
"Parameter [" + paramName +
"] is not a double.";
1017 if(param->values.size() == 0) {
1018 if(param->defaultValues.size() == 0) {
1019 QString message =
"Parameter [" + paramName +
"] has no value.";
1023 for(
unsigned int i = 0; i < param->defaultValues.size(); i++)
1024 value = param->defaultValues[i];
1025 values.push_back(value.
ToDouble());
1029 for(
unsigned int i = 0; i < param->values.size(); i++)
1030 value = param->values[i];
1031 values.push_back(value.
ToDouble());
1053 if(param->type !=
"boolean") {
1054 QString message =
"Parameter [" + paramName +
"] is not a boolean.";
1059 if(param->values.size() == 0) {
1060 if(param->defaultValues.size() == 0) {
1061 QString message =
"Parameter [" + paramName +
"] has no value.";
1065 value = param->defaultValues[0];
1069 value = param->values[0];
1090 vector<bool> &values)
const {
1094 if(param->type !=
"boolean") {
1095 QString message =
"Parameter [" + paramName +
"] is not a boolean.";
1100 vector <QString> value;
1102 if(param->values.size() == 0) {
1103 if(param->defaultValues.size() == 0) {
1104 QString message =
"Parameter [" + paramName +
"] has no value.";
1108 for(
unsigned int i = 0; i < param->defaultValues.size(); i++) {
1109 tmp = param->defaultValues[i].toUpper();
1110 value.push_back(tmp);
1115 for(
unsigned int i = 0; i < param->values.size(); i++) {
1116 tmp = param->values[i].toUpper();
1117 value.push_back(tmp);
1121 for(
unsigned int i = 0; i < value.size(); i++) {
1165 return groups.size();
1177 QString s = groups[index].name;
1192 for(
int i=0; i<(int)groups.size(); i++) {
1210 for(
unsigned int g = 0; g < groups.size(); g++) {
1211 for(
unsigned int p = 0; p < groups[g].parameters.size(); p++) {
1214 if(param->values.size() > 0) {
1215 std::vector<std::string> values(param->values.size());
1217 for(
unsigned int value = 0; value < param->values.size(); value++) {
1218 values[value] = param->values[value].toStdString();
1221 if (values.size() == 0) {
1222 ret[param->name.toStdString()] =
"NULL";
1224 if (values.size() > 1) {
1225 ret[param->name.toStdString()] = values;
1228 ret[param->name.toStdString()] = values.at(0);
1234 else if(param->defaultValues.size() > 0) {
1235 std::vector<std::string> values(param->defaultValues.size());
1237 for(
unsigned int value = 0;
1238 value < param->defaultValues.size();
1240 values[value] = param->defaultValues[value].toStdString();
1243 if (values.size() == 0) {
1244 ret[param->name.toStdString()] =
"NULL";
1246 else if (values.size() > 1) {
1247 ret[param->name.toStdString()] = values;
1250 ret[param->name.toStdString()] = values.at(0);
1276 if (pvlObjName !=
"") {
1283 if (pvlGrpName ==
"" || grpIndex == -1 ) {
1284 QString errMsg =
"Must provide Group Name\n";
1289 for(
int i=0; i<
NumParams(grpIndex); i++) {
1290 QString paramName =
ParamName(grpIndex, i);
1294 if(paramType ==
"double") {
1297 if(paramType ==
"integer") {
1300 if(paramType ==
"boolean") {
1303 if(paramType ==
"string" || paramType ==
"filename" || paramType ==
"combo") {
1309 if(pvlObj != NULL) {
1333 for(
int i=0; i<(int)include.size(); i++) {
1350 return groups[group].parameters.size();
1363 QString s = groups[group].parameters[param].name;
1377 QString s = groups[group].parameters[param].brief;
1391 QString s = groups[group].parameters[param].description;
1405 QString s = groups[group].parameters[param].minimum;
1419 QString s = groups[group].parameters[param].maximum;
1433 QString s = groups[group].parameters[param].minimum_inclusive;
1447 QString s = groups[group].parameters[param].maximum_inclusive;
1462 QString s = groups[group].parameters[param].odd;
1476 return groups[group].parameters[param].greaterThan.size();
1489 const int ¶m)
const {
1490 return groups[group].parameters[param].greaterThanOrEqual.size();
1503 return groups[group].parameters[param].lessThan.size();
1516 const int ¶m)
const {
1517 return groups[group].parameters[param].lessThanOrEqual.size();
1530 return groups[group].parameters[param].notEqual.size();
1544 const int &great)
const {
1545 QString s = groups[group].parameters[param].greaterThan[great];
1560 const int &great)
const {
1561 QString s = groups[group].parameters[param].greaterThanOrEqual[great];
1576 const int &les)
const {
1577 QString s = groups[group].parameters[param].lessThan[les];
1592 const int &les)
const {
1593 QString s = groups[group].parameters[param].lessThanOrEqual[les];
1608 const int ¬Eq)
const {
1609 QString s = groups[group].parameters[param].notEqual[notEq];
1624 const int &exclude)
const {
1625 QString s = groups[group].parameters[param].exclude[exclude];
1640 const int &include)
const {
1641 QString s = groups[group].parameters[param].include[include];
1655 QString s = groups[group].parameters[param].type;
1670 if(groups[group].parameters[param].defaultValues.size() == 0) {
1674 s = groups[group].parameters[param].defaultValues[0];
1690 if(groups[group].parameters[param].internalDefault.size() == 0) {
1694 s = groups[group].parameters[param].internalDefault;
1710 if(groups[group].parameters[param].filter.size() == 0) {
1714 s = groups[group].parameters[param].filter;
1730 if(groups[group].parameters[param].path.size() == 0) {
1734 s = groups[group].parameters[param].path;
1750 if(groups[group].parameters[param].fileMode.size() == 0) {
1754 s = groups[group].parameters[param].fileMode;
1770 return groups[group].parameters[param].listOptions.size();
1784 const int &option)
const {
1785 QString s = groups[group].parameters[param].listOptions[option].value;
1800 const int &option)
const {
1801 QString s = groups[group].parameters[param].listOptions[option].brief;
1816 const int &option)
const {
1817 QString s = groups[group].parameters[param].listOptions[option].description;
1832 const int &option)
const {
1833 return groups[group].parameters[param].listOptions[option].exclude.size();
1848 const int &option,
const int &exclude)
const {
1849 QString s = groups[group].parameters[param].listOptions[option].exclude[exclude];
1864 const int &option)
const {
1865 return groups[group].parameters[param].listOptions[option].include.size();
1880 const int &option,
const int &include)
const {
1881 QString s = groups[group].parameters[param].listOptions[option].include[include];
1895 return groups[group].parameters[param].exclude.size();
1908 return groups[group].parameters[param].include.size();
1921 return groups[group].parameters[param].pixelType;
1934 return groups[group].parameters[param].helpers.size();
1948 const int &helper)
const {
1949 return groups[group].parameters[param].helpers[helper].name;
1963 const int &helper)
const {
1964 return groups[group].parameters[param].helpers[helper].function;
1978 const int &helper)
const {
1979 return groups[group].parameters[param].helpers[helper].brief;
1993 const int &helper)
const {
1994 return groups[group].parameters[param].helpers[helper].description;
2008 const int &helper)
const {
2009 return groups[group].parameters[param].helpers[helper].icon;
2024 if(param->values.size() == 0) {
2040 param->values.clear();
2042 param->outCubeAtt.setAttributes(
"+" + param->pixelType);
2043 param->inCubeAtt.setAttributes(
"");
2063 if(param->type !=
"cube") {
2064 QString message =
"Unable to get input cube attributes. Parameter ["
2065 + paramName +
"] is not a cube. Parameter type = [" + param->type +
"].";
2070 if(param->values.size() == 0) {
2071 if(param->defaultValues.size() == 0) {
2077 value = param->defaultValues[0];
2081 value = param->values[0];
2083 if(param->fileMode ==
"input") {
2084 param->inCubeAtt.setAttributes(value);
2087 QString message =
"Unable to get input cube attributes. Parameter ["
2088 + paramName +
"] is not an input. Parameter fileMode = [" + param->fileMode +
"].";
2091 return param->inCubeAtt;
2109 if(param->type !=
"cube") {
2110 QString message =
"Unable to get output cube attributes. Parameter ["
2111 + paramName +
"] is not a cube. Parameter type = [" + param->type +
"].";
2116 if(param->values.size() == 0) {
2117 if(param->defaultValues.size() == 0) {
2123 value = param->defaultValues[0];
2127 value = param->values[0];
2129 if(param->fileMode ==
"output") {
2130 param->outCubeAtt.setAttributes(
"+" + param->pixelType);
2134 QString message =
"Unable to get output cube attributes. Parameter ["
2135 + paramName +
"] is not an output. Parameter fileMode = [" + param->fileMode +
"].";
2138 return param->outCubeAtt;
2160 for(
unsigned int g = 0; g < groups.size(); g++) {
2161 for(
unsigned int p = 0; p < groups[g].parameters.size(); p++) {
2162 cur_pn = groups[g].parameters[p].name;
2164 if(cur_pn.find(pn) == 0) {
2167 QString message =
"Parameter [" + paramName +
"] is not unique.";
2173 param = &(groups[g].parameters[p]);
2178 param = &(groups[g].parameters[p]);
2184 QString message =
"Unknown parameter [" + paramName +
"].";
2187 else if((found > 1) && (!exact)) {
2188 QString message =
"Parameter [" + paramName +
"] is not unique.";
2208 for(
unsigned int i = 0; i < param->values.size(); i++) {
2209 if(param->type ==
"integer") {
2215 QString message =
"Unable to convert [" + param->values[i] +
"] to an integer,"
2216 " parameter [" + param->name +
"].";
2220 else if(param->type ==
"double") {
2226 QString message =
"Unable to convert [" + param->values[i] +
"] to a double,"
2227 " parameter [" + param->name +
"].";
2231 else if(param->type ==
"boolean") {
2232 QString v = param->values[i].toUpper();
2238 QString message =
"Illegal value for [" + param->name +
"], [" + param->values[i] +
"].";
2242 else if(param->type ==
"filename") {
2245 QString value(param->values[i]);
2248 if(name.
fileExists() && param->fileMode ==
"output") {
2269 if(param->values.size() == 0) {
2270 for(
unsigned int i = 0; i < param->defaultValues.size(); i++) {
2273 if(param->type ==
"integer") {
2279 QString message =
"Unable to convert default [" + param->defaultValues[i] +
2280 "] to an integer, parameter [" + param->name +
"].";
2284 else if(param->type ==
"double") {
2290 QString message =
"Unable to convert default [" + param->defaultValues[i] +
2291 "] to a double, parameter [" + param->name +
"].";
2295 else if(param->type ==
"boolean") {
2296 QString v = param->defaultValues[i].toUpper();
2302 QString message =
"Illegal default value for [" + param->name +
"], ["
2303 + param->defaultValues[i] +
"].";
2307 else if(param->type ==
"filename") {
2309 QString value(param->defaultValues[i]);
2312 if(name.
fileExists() && param->fileMode ==
"output") {
2320 if(param->listOptions.size() > 0) {
2321 for(
unsigned int i = 0; i < param->values.size(); i++) {
2326 for(
unsigned int p = 0; p < param->listOptions.size(); p++) {
2328 option = option.
UpCase();
2330 if(value == option) {
2333 QString message =
"Duplicate list options [" +
2334 param->listOptions[p].value +
2335 "] in parameter [" + param->name +
"].";
2343 else if(option.compare(0, min(value.size(), option.size()),
2344 value, 0, min(value.size(), option.size())) == 0) {
2348 if(!exact && partial == 0) {
2349 QString message =
"Value of [" + param->name +
"] must be one of [" +
2350 param->listOptions[0].value;
2351 for(
unsigned int p = 1; p < param->listOptions.size(); p++) {
2352 message +=
", " + param->listOptions[p].value;
2357 else if(!exact && partial > 1) {
2358 QString msg =
"Value of [" + param->name +
2359 "] does not match a list option uniquely.";
2366 if(param->minimum.length() > 0) {
2367 QString incl = param->minimum_inclusive;
2368 for(
unsigned int i = 0; i < param->values.size(); i++) {
2369 if(param->type ==
"integer") {
2370 QString value(param->values[i]);
2372 value = param->minimum;
2375 QString message =
"Parameter [" + param->name +
2376 "] must be greater than or equal to [" + param->minimum +
"].";
2380 QString message =
"Parameter [" + param->name +
2381 "] must be greater than [" + param->minimum +
"].";
2385 else if(param->type ==
"double") {
2388 value = param->minimum;
2391 QString message =
"Parameter [" + param->name +
2392 "] must be greater than or equal to [" + param->minimum +
"].";
2396 QString message =
"Parameter [" + param->name +
2397 "] must be greater than [" + param->minimum +
"].";
2402 if(param->values.size() == 0) {
2403 for(
unsigned int i = 0; i < param->defaultValues.size(); i++) {
2404 if(param->type ==
"integer") {
2407 value = param->minimum;
2410 QString message =
"Parameter [" + param->name +
2411 "] must be greater than or equal to [" + param->minimum +
"].";
2415 QString message =
"Parameter [" + param->name +
2416 "] must be greater than [" + param->minimum +
"].";
2420 else if(param->type ==
"double") {
2423 value = param->minimum;
2426 QString message =
"Parameter [" + param->name +
2427 "] must be greater than or equal to [" + param->minimum +
"].";
2431 QString message =
"Parameter [" + param->name +
2432 "] must be greater than [" + param->minimum +
"].";
2441 if(param->maximum.length() > 0) {
2442 QString incl = param->maximum_inclusive.toLower();
2443 for(
unsigned int i = 0; i < param->values.size(); i++) {
2444 if(param->type ==
"integer") {
2445 QString value(param->values[i]);
2447 value = param->maximum;
2450 QString message =
"Parameter [" + param->name +
2451 "] must be less than or equal to [" + param->maximum +
"].";
2455 QString message =
"Parameter [" + param->name +
2456 "] must be less than [" + param->maximum +
"].";
2460 else if(param->type ==
"double") {
2463 value = param->maximum;
2466 QString message =
"Parameter [" + param->name +
2467 "] must be less than or equal to [" + param->maximum +
"].";
2471 QString message =
"Parameter [" + param->name +
2472 "] must be less than [" + param->maximum +
"].";
2477 if(param->values.size() == 0) {
2478 for(
unsigned int i = 0; i < param->defaultValues.size(); i++) {
2479 if(param->type ==
"integer") {
2482 value = param->maximum;
2485 QString message =
"Parameter [" + param->name +
2486 "] must be less than or equal to [" + param->maximum +
"].";
2490 QString message =
"Parameter [" + param->name +
2491 "] must be less than [" + param->maximum +
"].";
2495 else if(param->type ==
"double") {
2498 value = param->maximum;
2501 QString message =
"Parameter [" + param->name +
2502 "] must be less than or equal to [" + param->maximum +
"].";
2506 QString message =
"Parameter [" + param->name +
2507 "] must be less than [" + param->maximum +
"].";
2516 QString odd = param->odd.toLower();
2519 if(param->type !=
"integer") {
2520 QString message =
"Parameter [" + param->name +
2521 "] must be of type integer to have an [odd] test.";
2525 for(
unsigned int i = 0; i < param->values.size(); i++) {
2528 QString message =
"Value for [" + param->name +
"] must be odd.";
2556 Isis::PvlGroup fileCustomization = Isis::Preference::Preferences().findGroup(
"FileCustomization");
2557 QString overwritePreference = fileCustomization.findKeyword(
"Overwrite")[0].simplified().trimmed();
2558 QString temp = overwritePreference;
2559 if(overwritePreference.toUpper() ==
"ERROR") {
2560 QString message =
"Invalid output filename for [" + paramname +
"]. The file [" + filename +
"] already exists. " +
2561 "The user preference file customization group is set to disallow file overwrites.";
2564 else if(overwritePreference.toUpper() !=
"ALLOW") {
2565 QString message =
"Invalid entry in user preference file FileCustomization group.";
2566 message +=
" Overwrite = [" + temp +
"]. Valid values: [Allow] or [Error].";
2576 for(
unsigned int g = 0; g < groups.size(); g++) {
2577 for(
unsigned int p = 0; p < groups[g].parameters.size(); p++) {
2583 for(
unsigned int item = 0; item < param->include.size(); item++) {
2586 if(param->type ==
"boolean") {
2587 if(((param->values.size() > 0) &&
StringToBool(param->values[0])) ||
2588 ((param->values.size() == 0) && (param->defaultValues.size() > 0)
2592 if((param2->values.size()) == 0 &&
2593 (param2->defaultValues.size() == 0) &&
2594 (param2->internalDefault.size() == 0)) {
2595 QString message =
"Parameter [" + param2->name +
2596 "] must be used if parameter [" +
2597 param->name +
"] equates to true.";
2607 if(param2->type ==
"boolean") {
2608 if(((param2->values.size() > 0) &&
StringToBool(param2->values[0])) ||
2609 ((param2->values.size() == 0) && (param2->defaultValues.size() > 0) &&
2611 if((param->values.size()) == 0 &&
2612 (param->defaultValues.size() == 0) &&
2613 (param->internalDefault.size() == 0)) {
2614 QString message =
"Parameter [" + param2->name +
2615 "] must be used if parameter [" +
2616 param->name +
"] is used.";
2624 if(param->values.size() > 0 &&
2625 param2->values.size() == 0 &&
2626 param2->defaultValues.size() == 0 &&
2627 param2->internalDefault.size() == 0) {
2628 QString message =
"Parameter [" + param2->name +
2629 "] must be used if parameter [" +
2630 param->name +
"] is used.";
2637 for(
unsigned int item = 0; item < param->exclude.size(); item++) {
2640 if(param->type ==
"boolean") {
2641 if(((param->values.size() > 0) &&
StringToBool(param->values[0])) ||
2642 ((param->values.size() == 0) && (param->defaultValues.size() > 0) &&
2646 if(param2->values.size() > 0) {
2647 QString message =
"Parameter [" + param2->name +
2648 "] must NOT be used if parameter [" +
2649 param->name +
"] equates to true.";
2657 if(param2->type ==
"boolean") {
2658 if(((param2->values.size() > 0) &&
StringToBool(param2->values[0])) ||
2659 ((param2->values.size() == 0) && (param2->defaultValues.size() > 0) &&
2661 if(param->values.size() > 0) {
2662 QString message =
"Parameter [" + param2->name +
2663 "] must be used if parameter [" +
2664 param->name +
"] is used.";
2671 if(param->values.size() > 0 && param2->values.size() > 0) {
2672 QString message =
"Parameter [" + param2->name +
2673 "] must NOT be used if parameter [" +
2674 param->name +
"] is used.";
2682 if(param->values.size() > 0) {
2683 for(
unsigned int item = 0; item < param->greaterThan.size(); item++) {
2685 if(param2->values.size() != 0) {
2686 double double1, double2;
2687 if(param->type ==
"integer") {
2690 else if(param->type ==
"double") {
2694 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2699 if(param2->type ==
"integer") {
2702 else if(param2->type ==
"double") {
2706 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2711 if(double2 >= double1) {
2712 QString message =
"Parameter [" + param->name +
2713 "] must be greater than parameter [" +
2714 param2->name +
"].";
2722 if(param->values.size() > 0) {
2723 for(
unsigned int item = 0; item < param->greaterThanOrEqual.size(); item++) {
2726 if(param2->values.size() != 0) {
2727 double double1, double2;
2728 if(param->type ==
"integer") {
2731 else if(param->type ==
"double") {
2735 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2740 if(param2->type ==
"integer") {
2743 else if(param2->type ==
"double") {
2747 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2752 if(double2 > double1) {
2753 QString message =
"Parameter [" + param->name +
2754 "] must be greater than or equal to parameter [" +
2755 param2->name +
"].";
2762 if(param->values.size() > 0) {
2763 for(
unsigned int item = 0; item < param->lessThan.size(); item++) {
2765 if(param2->values.size() != 0) {
2766 double double1, double2;
2767 if(param->type ==
"integer") {
2770 else if(param->type ==
"double") {
2774 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2779 if(param2->type ==
"integer") {
2782 else if(param2->type ==
"double") {
2786 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2791 if(double2 <= double1) {
2792 QString message =
"Parameter [" + param->name +
2793 "] must be less than parameter [" +
2794 param2->name +
"].";
2802 if(param->values.size() > 0) {
2803 for(
unsigned int item = 0; item < param->lessThanOrEqual.size(); item++) {
2806 if(param2->values.size() != 0) {
2807 double double1, double2;
2808 if(param->type ==
"integer") {
2811 else if(param->type ==
"double") {
2815 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2820 if(param2->type ==
"integer") {
2823 else if(param2->type ==
"double") {
2827 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2832 if(double2 < double1) {
2833 QString message =
"Parameter [" + param->name +
2834 "] must be less than or equal to parameter [" +
2835 param2->name +
"].";
2843 if(param->values.size() > 0) {
2844 for(
unsigned int item = 0; item < param->notEqual.size(); item++) {
2846 if(param2->values.size() != 0) {
2847 double double1, double2;
2848 if(param->type ==
"integer") {
2851 else if(param->type ==
"double") {
2855 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2860 if(param2->type ==
"integer") {
2863 else if(param2->type ==
"double") {
2867 QString msg =
"Parameter is not INTEGER or DOUBLE type [" +
2872 if(double2 == double1) {
2873 QString message =
"Parameter [" + param->name +
2874 "] must NOT be equal to parameter [" +
2875 param2->name +
"].";
2884 if(((param->values.size() > 0) || (param->defaultValues.size())) > 0) {
2885 for(
unsigned int o2 = 0; o2 < param->listOptions.size(); o2++) {
2886 QString value, option;
2887 if(param->type ==
"string" || param->type ==
"combo") {
2889 value = value.toUpper();
2890 option = param->listOptions[o2].value;
2891 option = option.toUpper();
2893 else if(param->type ==
"integer") {
2895 value = value.trimmed();
2896 option = param->listOptions[o2].value;
2897 option = option.trimmed();
2899 if(value == option) {
2900 for(
unsigned int e2 = 0; e2 < param->listOptions[o2].exclude.size(); e2++) {
2903 if(param2->values.size() > 0) {
2904 QString message =
"Parameter [" + param2->name +
2905 "] can not be entered if parameter [" +
2906 param->name +
"] is equal to [" +
2917 if(((param->values.size() > 0) || (param->defaultValues.size())) > 0) {
2918 for(
unsigned int o2 = 0; o2 < param->listOptions.size(); o2++) {
2919 QString value, option;
2920 if(param->type ==
"string" || param->type ==
"combo") {
2922 value = value.toUpper();
2923 option = param->listOptions[o2].value;
2924 option = option.toUpper();
2926 else if(param->type ==
"integer") {
2928 value = value.trimmed();
2929 option = param->listOptions[o2].value;
2930 option = option.trimmed();
2932 if(value == option) {
2933 for(
unsigned int e2 = 0; e2 < param->listOptions[o2].include.size(); e2++) {
2936 if((param2->values.size() == 0) &&
2937 (param2->defaultValues.size() == 0)) {
2938 QString message =
"Parameter [" + param2->name +
2939 "] must be entered if parameter [" +
2940 param->name +
"] is equal to [" +
2954 if((param->values.size() == 0) && (param->defaultValues.size() == 0) &&
2955 (param->internalDefault.size() == 0)) {
2956 bool excluded =
false;
2958 for(
unsigned int g2 = 0; g2 < groups.size(); g2++) {
2959 for(
unsigned int p2 = 0; p2 < groups[g2].parameters.size(); p2++) {
2960 for(
unsigned int o2 = 0;
2961 o2 < groups[g2].parameters[p2].listOptions.size(); o2++) {
2962 for(
unsigned int e2 = 0;
2963 e2 < groups[g2].parameters[p2].listOptions[o2].exclude.size();
2966 this->groups[g2].parameters[p2].listOptions[o2].exclude[e2];
2967 if(excl == param->name) {
2974 if(groups[g2].parameters[p2].type ==
"boolean") {
2976 if(((param2->values.size() > 0) && !
StringToBool(param2->values[0])) ||
2977 ((param2->values.size() == 0) && (param2->defaultValues.size() > 0) &&
2979 for(
unsigned int e2 = 0; e2 < groups[g2].parameters[p2].include.size();
2982 this->groups[g2].parameters[p2].include[e2];
2983 if(incl == param->name) {
2988 else if(((param2->values.size() > 0) &&
StringToBool(param2->values[0])) ||
2989 ((param2->values.size() == 0) && (param2->defaultValues.size() > 0) &&
2991 for(
unsigned int e2 = 0; e2 < groups[g2].parameters[p2].exclude.size();
2994 this->groups[g2].parameters[p2].exclude[e2];
2995 if(excl == param->name) {
3006 for(
unsigned int item = 0; item < param->exclude.size(); item++) {
3008 if((param2->values.size() != 0) ||
3009 (param2->defaultValues.size() != 0) ||
3010 (param2->internalDefault.size() != 0)) {
3011 if(param2->type !=
"boolean") {
3015 if(((param2->values.size() > 0) && !
StringToBool(param2->values[0])) ||
3016 ((param2->values.size() == 0) && (param2->defaultValues.size() > 0) &&
3026 for(
unsigned int item = 0; item < param->include.size(); item++) {
3028 if(param2->type ==
"boolean") {
3029 if(((param2->values.size() > 0) && !
StringToBool(param2->values[0])) ||
3030 ((param2->values.size() == 0) && (param2->defaultValues.size() > 0) &&
3038 QString message =
"Parameter [" + param->name +
"] must be entered.";
3058 value = value.toUpper();
3062 else if(!value.compare(
"NO")) {
3065 else if(!value.compare(
"FALSE")) {
3068 else if(!value.compare(
"F")) {
3071 else if(!value.compare(
"N")) {
3074 else if(!value.compare(
"YES")) {
3077 else if(!value.compare(
"TRUE")) {
3080 else if(!value.compare(
"Y")) {
3083 else if(!value.compare(
"T")) {
3087 QString message =
"Invalid boolean value [" + value +
"].";
3103 for(
unsigned int g = 0; g < groups.size(); g++) {
3104 for(
unsigned int p = 0; p < groups[g].parameters.size(); p++) {
3107 if(param->values.size() > 0) {
3110 for(
unsigned int value = 0; value < param->values.size(); value++) {
3111 paramKeyword.addValue(param->values[value]);
3114 group += paramKeyword;
3118 else if(param->defaultValues.size() > 0) {
3121 for(
unsigned int value = 0;
3122 value < param->defaultValues.size();
3124 paramKeyword.addValue(param->defaultValues[value]);
3127 group += paramKeyword;
3132 for(
unsigned int g = 0; g < groups.size(); g++) {
3133 for(
unsigned int p = 0; p < groups[g].parameters.size(); p++) {
3136 if(((param->values.size() > 0) || (param->defaultValues.size())) > 0) {
3137 for(
unsigned int o2 = 0; o2 < param->listOptions.size(); o2++) {
3139 if(param->type ==
"string" || param->type ==
"combo") {
3142 option = param->listOptions[o2].value;
3143 option = option.
UpCase();
3145 else if(param->type ==
"integer") {
3147 value = value.
Trim(
"\n\r\t\f\v\b");
3148 option = param->listOptions[o2].value;
3149 option = option.
Trim(
"\n\r\t\f\v\b");
3151 if(value == option) {
3152 for(
unsigned int e2 = 0; e2 < param->listOptions[o2].exclude.size(); e2++) {
3166 cont.addGroup(group);
3177 QString st =
"000-00-00";
3178 for(
unsigned int i = 0; i < changes.size(); i++) {
3179 if(changes[i].date > st) st = changes[i].date;
3196 XERCES::XMLPlatformUtils::Initialize();
3199 catch(
const XERCES::XMLException &toCatch) {
3201 QString message =
"Error during XML parser initialization" +
3202 (QString)XERCES::XMLString::transcode(toCatch.getMessage());
3210 parser = XERCES::XMLReaderFactory::createXMLReader();
3213 XERCES::SAX2XMLReader::ValSchemes valScheme = XERCES::SAX2XMLReader::Val_Never;
3214 if(valScheme == XERCES::SAX2XMLReader::Val_Auto) {
3215 parser->setFeature(XERCES::XMLString::transcode(
"http://xml.org/sax/features/validation"),
true);
3216 parser->setFeature(XERCES::XMLString::transcode(
"http://apache.org/xml/features/validation/dynamic"),
true);
3218 else if(valScheme == XERCES::SAX2XMLReader::Val_Never) {
3219 parser->setFeature(XERCES::XMLString::transcode(
"http://xml.org/sax/features/validation"),
false);
3222 else if(valScheme == XERCES::SAX2XMLReader::Val_Always) {
3223 parser->setFeature(XERCES::XMLString::transcode(
"http://xml.org/sax/features/validation"),
true);
3224 parser->setFeature(XERCES::XMLString::transcode(
"http://apache.org/xml/features/validation/dynamic"),
false);
3228 bool doSchema =
false;
3229 parser->setFeature(XERCES::XMLString::transcode(
"http://apache.org/xml/features/validation/schema"), doSchema);
3231 bool schemaFullChecking =
false;
3232 parser->setFeature(XERCES::XMLString::transcode(
"http://apache.org/xml/features/validation/schema-full-checking"), schemaFullChecking);
3236 char *encodingName =
const_cast<char *
>(
"LATIN1");
3237 bool expandNamespaces = false ;
3244 catch (
const XERCES::XMLException &toCatch) {
3245 QString message =
"Error in application XML file: " +
3246 (QString)XERCES::XMLString::transcode(toCatch.getMessage());
3248 XERCES::XMLPlatformUtils::Terminate();
3254 QString filePath = (QString) xmlfile;
3255 QString previousErrorMessage = (QString) e.toString();
3256 QString additionalErrorMessage =
"Error while parsing application XML file [" + filePath +
"]";
3259 XERCES::XMLPlatformUtils::Terminate();
3265 XERCES::XMLPlatformUtils::Terminate();
Manipulate and parse attributes of output cube filenames.
File name manipulation and expansion.
bool fileExists() const
Returns true if the file exists; false otherwise.
QString expanded() const
Returns a QString of the full file name including the file path, excluding the attributes.
QString attributes() const
Returns a QString of the attributes in a filename, attributes are expected to be of type CubeAttribut...
FileName addExtension(const QString &extension) const
Adds a new extension to the file name.
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
@ Programmer
This error is for when a programmer made an API call that was illegal.
Adds specific functionality to C++ strings.
int ToInteger() const
Returns the object string as an integer.
IString Trim(const std::string &chars)
Removes characters from the beginning and end of the IString.
IString UpCase()
Converst any lower case characters in the object IString with uppercase characters.
IString DownCase()
Converts all upper case letters in the object IString into lower case characters.
double ToDouble() const
Returns the floating point value the IString represents.
bool hasKeyword(const QString &name) const
Check to see if a keyword exists.
void deleteKeyword(const QString &name)
Remove a specified keyword.
Contains multiple PvlContainers.
Container for cube-like labels.
A single keyword-value pair.
Contains Pvl Groups and Pvl Objects.
double GetDouble(const QString ¶mName) const
Allows the retrieval of a value for a parameter of type "double".
IsisXMLApplication * appHandler
The application handler.
void CommandLine(Isis::Pvl &lab) const
Creates a QString which could be used as a command line.
QString ParamOdd(const int &group, const int ¶m) const
Returns whether the selected parameter has a restriction on odd values or not.
int ParamExcludeSize(const int &group, const int ¶m) const
Returns the number of parameters excluded in this parameter's exclusions.
Isis::CubeAttributeInput & GetInputAttribute(const QString ¶mName)
Gets the attributes for an input cube.
int GetInteger(const QString ¶mName) const
Allows the retrieval of a value for a parameter of type "integer".
QString ParamLessThan(const int &group, const int ¶m, const int &great) const
Returns the name of the specified lessThan parameter.
QString ParamLessThanOrEqual(const int &group, const int ¶m, const int &les) const
Returns the name of the specified lessThanOrEqual parameter.
QString ParamBrief(const int &group, const int ¶m) const
Returns the brief description of a parameter in a specified group.
QString ParamListInclude(const int &group, const int ¶m, const int &option, const int &include) const
Returns the parameter name to be included if this option is selected.
QString ParamDescription(const int &group, const int ¶m) const
Returns the long description of a parameter in a specified group.
bool StringToBool(QString value) const
Returns a boolean value based on the QString contents.
void PutCubeName(const QString ¶mName, const QString &value)
Allows the insertion of a value for a parameter of type "cubename".
int ParamListIncludeSize(const int &group, const int ¶m, const int &option) const
Returns the number of items in a parameters list include section.
void PutBoolean(const QString ¶mName, const bool &value)
Allows the insertion of a value for a parameter of type "boolean".
QString GetFileName(const QString ¶mName, QString extension="") const
Allows the retrieval of a value for a parameter of type "filename".
bool WasEntered(const QString ¶mName) const
Returns a true if the parameter has a value, and false if it does not.
QString ParamListValue(const int &group, const int ¶m, const int &option) const
Returns the option value for a specific option to a parameter.
int NumGroups() const
Returns the number of groups found in the XML.
int ParamListExcludeSize(const int &group, const int ¶m, const int &option) const
Returns the number of items in a parameters list exclude section.
QString PixelType(const int &group, const int ¶m) const
Returns the default pixel type from the XML.
QString GetString(const QString ¶mName) const
Allows the retrieval of a value for a parameter of type "string".
bool GetBoolean(const QString ¶mName) const
Allows the retrieval of a value for a parameter of type "boolean".
nlohmann::json GetParams()
Creates a json object which could be used as a command line.
int ParamGreaterThanSize(const int &group, const int ¶m) const
Returns the number of values in the parameters greater than list.
QString ParamNotEqual(const int &group, const int ¶m, const int ¬Eq) const
Returns the name of the specified notEqual parameter.
void PutInteger(const QString ¶mName, const int &value)
Allows the insertion of a value for a parameter of type "integer".
int HelpersSize(const int &group, const int ¶m) const
Returns the number of helpers the parameter has.
QString ParamGreaterThanOrEqual(const int &group, const int ¶m, const int &great) const
Returns the name of the specified greaterThanOrEqual parameter.
void CreatePVL(Isis::Pvl &pvlDef, QString guiGrpName, QString pvlObjName, QString pvlGrpName, std::vector< QString > &exclude)
Create Pvl with the parameters in a user defined group given the Pvl object and group name.
QString GetCubeName(const QString ¶mName, QString extension="") const
Retrieves of a value for a parameter of type "cubename".
QString ParamMaximumInclusive(const int &group, const int ¶m) const
Returns whether the maximum value is inclusive or not.
QString Description() const
Returns the full description of the program.
QString ParamType(const int &group, const int ¶m) const
Returns the parameter type of a parameter in a specified group.
int ParamListSize(const int &group, const int ¶m) const
Returns the number of options in the specified parameter's list.
int NumParams(const int &) const
Returns the number of parameters in a group.
QString Version() const
Returns the application version date.
QString GroupName(const int &group) const
Returns the group name of group[index].
QString ParamExclude(const int &group, const int ¶m, const int &exclude) const
Returns the name of the specified excluded parameter.
QString HelperFunction(const int &group, const int ¶m, const int &helper) const
Returns the name of the helper function.
QString HelperButtonName(const int &group, const int ¶m, const int &helper) const
Returns the name of the helper button.
QString Brief() const
Returns the brief description of the program.
const IsisParameterData * ReturnParam(const QString ¶mName) const
Returns a pointer to a parameter whose name starts with paramName.
IsisAml(const QString &xmlfile)
Constructs an IsisAml object and internalizes the XML data in the given file name.
QString ParamFilter(const int &group, const int ¶m) const
Returns the parameter filter for a parameter in a specified group.
QString ParamListExclude(const int &group, const int ¶m, const int &option, const int &exclude) const
Returns the parameter name to be excluded if this option is selected.
int ParamLessThanOrEqualSize(const int &group, const int ¶m) const
Returns the number of values in the parameters less than or equal list.
QString ParamListBrief(const int &group, const int ¶m, const int &option) const
Returns the brief description for a specific option to a parameter.
QString ParamListDescription(const int &group, const int ¶m, const int &option) const
Returns the full description for a specific option to a parameter.
QString ParamDefault(const int &group, const int ¶m) const
Returns the default for a parameter in a specified group.
int ParamLessThanSize(const int &group, const int ¶m) const
Returns the number of values in the parameters less than list.
QString HelperBrief(const int &group, const int ¶m, const int &helper) const
Returns the brief description of the helper button.
QString ParamInclude(const int &group, const int ¶m, const int &include) const
Returns the name of the specified included parameter.
QString GetAsString(const QString ¶mName) const
Allows the retrieval of a value for a parameter of any type.
int GroupIndex(const QString &grpName) const
Given the group name get its index in group array.
void PutDouble(const QString ¶mName, const double &value)
Allows the insertion of a value for a parameter of type "double".
int ParamGreaterThanOrEqualSize(const int &group, const int ¶m) const
Returns the number of values in the parameters greater than or equal list.
QString ParamInternalDefault(const int &group, const int ¶m) const
Returns the internal default for a parameter in a specified group.
int ParamNotEqualSize(const int &group, const int ¶m) const
Returns the number of values in the not equal list.
QString ProgramName() const
Returns the Program name.
int ParamIncludeSize(const int &group, const int ¶m) const
Returns the number of parameters included in this parameter's inclusions.
QString ParamMinimumInclusive(const int &group, const int ¶m) const
Returns whether the minimum value is inclusive or not.
void PutString(const QString ¶mName, const QString &value)
Allows the insertion of a value for any parameter.
QString ParamGreaterThan(const int &group, const int ¶m, const int &great) const
Returns the name of the specified greaterThan parameter.
QString ParamMinimum(const int &group, const int ¶m) const
Returns the minimum value of a parameter in a specified group.
QString ParamFileMode(const int &group, const int ¶m) const
Returns the file mode for a parameter in a specified group.
XERCES::SAX2XMLReader * parser
The XML file parser.
Isis::CubeAttributeOutput & GetOutputAttribute(const QString ¶mName)
Gets the attributes for an output cube.
void CheckFileNamePreference(QString filename, QString paramname)
This method checks whether the user preferences are set to allow overwrites of existing files.
void Clear(const QString ¶mName)
Clears the value(s) in the named parameter.
void Verify(const IsisParameterData *param)
Throws an Isis::iExceptionXxxxxxxx if the parameter value(s) is invalid.
QString ParamPath(const int &group, const int ¶m) const
Returns the default path for a filename/cube parameter.
QString HelperDescription(const int &group, const int ¶m, const int &helper) const
Returns the long description of the helper button.
void StartParser(const char *xmlfile)
Starts parsing an application xml file.
void VerifyAll()
Verify all parameters.
QString ParamName(const int &group, const int ¶m) const
Returns the parameter name.
QString HelperIcon(const int &group, const int ¶m, const int &helper) const
Returns the name of the icon for the helper button.
bool IsParamInPvlInclude(QString ¶mName, std::vector< QString > &exclude)
Verify whether Parameter name is in the Include list Used in creation of DefFile.
void PutAsString(const QString ¶mName, const QString &value)
Allows the insertion of a value for any parameter.
~IsisAml()
Destructs an IsisAml object.
void PutFileName(const QString ¶mName, const QString &value)
Allows the insertion of a value for a parameter of type "filename".
QString ParamMaximum(const int &group, const int ¶m) const
Returns the maximum value of a parameter in a specified group.
This is free and unencumbered software released into the public domain.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
int toInt(const QString &string)
Global function to convert from a string to an integer.
bool toBool(const QString &string)
Global function to convert from a string to a boolean.
Namespace for the standard library.