コード例 #1
0
ファイル: UserInterface.cpp プロジェクト: corburn/ISIS
  /**
   * This interprets the "-" options for reserved parameters
   *
   * @param name "-OPTIONNAME"
   * @param value Value of the option, if supplied (-name=value)
   */
  void UserInterface::EvaluateOption(const QString name,
                                     const QString value) {
    Preference &p = Preference::Preferences();

    if(name == "-GUI") {
      p_interactive = true;
    }
    else if(name == "-NOGUI") {
      p_interactive = false;
    }
    else if(name == "-BATCHLIST") {
      LoadBatchList(value);
    }
    else if(name == "-LAST") {
      PvlGroup &grp = p.findGroup("UserInterface", Isis::Pvl::Traverse);
      QString histFile = grp["HistoryPath"][0] + "/" + FileName(
                           p_progName).name() + ".par";

      LoadHistory(histFile);
    }
    else if(name == "-RESTORE") {
      LoadHistory(value);
    }
    else if(name == "-WEBHELP") {
      Isis::PvlGroup &pref = Isis::Preference::Preferences().findGroup(
                               "UserInterface");
      QString command = pref["GuiHelpBrowser"];
      command += " $ISISROOT/doc/Application/presentation/Tabbed/";
      command += FileName(p_progName).name() + "/" + FileName(
                   p_progName).name() + ".html";
      ProgramLauncher::RunSystemCommand(command);
      exit(0);
    }
    else if(name == "-INFO") {
      p_info = true;

      // check for filename and set value
      if(value.size() != 0) {
        p_infoFileName = value;
      }
    }
    else if(name == "-HELP") {
      if(value.size() == 0) {
        Pvl params;
        params.setTerminator("");
        for(int k = 0; k < NumGroups(); k ++) {
          for(int j = 0; j < NumParams(k); j ++) {
            if(ParamListSize(k, j) == 0) {
              params += PvlKeyword(ParamName(k, j),
                                   ParamDefault(k, j));
            }
            else {
              PvlKeyword key(ParamName(k, j));
              QString def = ParamDefault(k, j);
              for(int l = 0; l < ParamListSize(k, j); l ++) {
                if(ParamListValue(k, j, l) == def)
                  key.addValue("*" + def);
                else
                  key.addValue(ParamListValue(k, j, l));
              }
              params += key;
            }
          }
        }
        cout << params;
      }
      else {
        Pvl param;
        param.setTerminator("");
        QString key = value;
        for(int k = 0; k < NumGroups(); k ++) {
          for(int j = 0; j < NumParams(k); j ++) {
            if(ParamName(k, j) == key) {
              param += PvlKeyword("ParameterName", key);
              param += PvlKeyword("Brief", ParamBrief(k, j));
              param += PvlKeyword("Type", ParamType(k, j));
              if(PixelType(k, j) != "") {
                param += PvlKeyword("PixelType", PixelType(k,
                                    j));
              }
              if(ParamInternalDefault(k, j) != "") {
                param += PvlKeyword("InternalDefault",
                                    ParamInternalDefault(k, j));
              }
              else
                param += PvlKeyword("Default", ParamDefault(
                                      k, j));
              if(ParamMinimum(k, j) != "") {
                if(ParamMinimumInclusive(k, j) == "YES") {
                  param += PvlKeyword("GreaterThanOrEqual",
                                      ParamMinimum(k, j));
                }
                else {
                  param += PvlKeyword("GreaterThan",
                                      ParamMinimum(k, j));
                }
              }
              if(ParamMaximum(k, j) != "") {
                if(ParamMaximumInclusive(k, j) == "YES") {
                  param += PvlKeyword("LessThanOrEqual",
                                      ParamMaximum(k, j));
                }
                else {
                  param += PvlKeyword("LessThan",
                                      ParamMaximum(k, j));
                }
              }
              if(ParamLessThanSize(k, j) > 0) {
                PvlKeyword key("LessThan");
                for(int l = 0; l < ParamLessThanSize(k, j); l ++) {
                  key.addValue(ParamLessThan(k, j, l));
                }
                param += key;
              }
              if(ParamLessThanOrEqualSize(k, j) > 0) {
                PvlKeyword key("LessThanOrEqual");
                for(int l = 0; l < ParamLessThanOrEqualSize(
                      k, j); l ++) {
                  key.addValue(
                    ParamLessThanOrEqual(k, j, l));
                }
                param += key;
              }
              if(ParamNotEqualSize(k, j) > 0) {
                PvlKeyword key("NotEqual");
                for(int l = 0; l < ParamNotEqualSize(k, j); l ++) {
                  key.addValue(ParamNotEqual(k, j, l));
                }
                param += key;
              }
              if(ParamGreaterThanSize(k, j) > 0) {
                PvlKeyword key("GreaterThan");
                for(int l = 0; l
                    < ParamGreaterThanSize(k, j); l ++) {
                  key.addValue(ParamGreaterThan(k, j, l));
                }
                param += key;
              }
              if(ParamGreaterThanOrEqualSize(k, j) > 0) {
                PvlKeyword key("GreaterThanOrEqual");
                for(int l = 0; l
                    < ParamGreaterThanOrEqualSize(k, j); l ++) {
                  key.addValue(ParamGreaterThanOrEqual(k,
                                                       j, l));
                }
                param += key;
              }
              if(ParamIncludeSize(k, j) > 0) {
                PvlKeyword key("Inclusions");
                for(int l = 0; l < ParamIncludeSize(k, j); l ++) {
                  key.addValue(ParamInclude(k, j, l));
                }
                param += key;
              }
              if(ParamExcludeSize(k, j) > 0) {
                PvlKeyword key("Exclusions");
                for(int l = 0; l < ParamExcludeSize(k, j); l ++) {
                  key.addValue(ParamExclude(k, j, l));
                }
                param += key;
              }
              if(ParamOdd(k, j) != "") {
                param += PvlKeyword("Odd", ParamOdd(k, j));
              }
              if(ParamListSize(k, j) != 0) {
                for(int l = 0; l < ParamListSize(k, j); l ++) {
                  PvlGroup grp(ParamListValue(k, j, l));
                  grp += PvlKeyword("Brief", ParamListBrief(
                                      k, j, l));
                  if(ParamListIncludeSize(k, j, l) != 0) {
                    PvlKeyword include("Inclusions");
                    for(int m = 0; m
                        < ParamListIncludeSize(k, j, l); m ++) {
                      include.addValue(ParamListInclude(
                                         k, j, l, m));
                    }
                    grp += include;
                  }
                  if(ParamListExcludeSize(k, j, l) != 0) {
                    PvlKeyword exclude("Exclusions");
                    for(int m = 0; m
                        < ParamListExcludeSize(k, j, l); m ++) {
                      exclude.addValue(ParamListExclude(
                                         k, j, l, m));
                    }
                    grp += exclude;
                  }
                  param.addGroup(grp);
                }
              }
              cout << param;
            }
          }
        }
      }
      exit(0);
    }
    else if(name == "-PID") {
      p_parentId = toInt(value);
    }
    else if(name == "-ERRLIST") {
      p_errList = value;

      if(value == "") {
        QString msg = "-ERRLIST expects a file name";
        throw IException(IException::User, msg, _FILEINFO_);
      }

      if(FileName(p_errList).fileExists()) {
        QFile::remove(p_errList);
      }
    }
    else if(name == "-ONERROR") {
      if(value.toUpper() == "CONTINUE") {
        p_abortOnError = false;
      }

      else if(value.toUpper() == "ABORT") {
        p_abortOnError = true;
      }

      else {
        QString
        msg =
          "[" + value
          + "] is an invalid value for -ONERROR, options are ABORT or CONTINUE";
        throw IException(IException::User, msg, _FILEINFO_);
      }
    }
    else if(name == "-SAVE") {
      if(value.size() == 0) {
        p_saveFile = ProgramName() + ".par";
      }
      else {
        p_saveFile = value;
      }
    }
    else if(name == "-PREFERENCE") {
      p.Load(value);
    }
    else if(name == "-LOG") {
      if(value.isEmpty()) {
        p.findGroup("SessionLog")["FileOutput"].setValue("On");
      }
      else {
        p.findGroup("SessionLog")["FileOutput"].setValue("On");
        p.findGroup("SessionLog")["FileName"].setValue(value);
      }
    }
    else if(name == "-VERBOSE") {
      p.findGroup("SessionLog")["TerminalOutput"].setValue("On");
    }

    // Can't have a parent id and the gui
    if(p_parentId > 0 && p_interactive) {
      QString msg = "-GUI and -PID are incompatible arguments";
      throw IException(IException::Unknown, msg, _FILEINFO_);
    }
  }