Esempio n. 1
0
void
ProgramOptions::validate() const
{
	SetString missing;
	 
	for (OptionGroupMap::const_iterator it = groups.begin();
		it != groups.end();
		++it){
			findMissingOptions(it->second, missing);
			 
	}
	Size sz = missing.size();
	if (sz  > 0 )
	{
		String buffer;
		std::stringstream ss(buffer);
		Size index = 0;
		for (SetString::const_iterator it = missing.begin(); it != missing.end(); ++it){
			ss << *it;
			if (index + 1 < sz)
				ss << ",";
			++index;
		}

		THROW_MSG(CoreText::instance().missingOption(ss.str()));
	}

}
Esempio n. 2
0
OptionsParser::OptionsParser(const QString& fileName, QObject *parent)
        : QObject(parent)
        , fileName_(fileName)
{
    QFile optionsFile(fileName_);
    QFile defaultsFile(":/cleanerplugin/default.xml");
    QDomDocument optionsDoc, defaultsDoc;
    optionsDoc.setContent(&optionsFile);
    defaultsDoc.setContent(&defaultsFile);
    QDomElement optionsElement = optionsDoc.documentElement();
    QDomElement defaultsElement = defaultsDoc.documentElement();
    defaultsElement_ = defaultsElement.firstChildElement("options");
    optionsElement_ = optionsElement.firstChildElement("options");

    QString root;
    findMissingOptions(optionsElement_, &root);
}
Esempio n. 3
0
void OptionsParser::findMissingOptions(const QDomElement& optElement, QString *root)
{
    QDomNode optionNode = optElement.firstChild();
    while(!optionNode.isNull()) {
        if(!findNode(optionNode.toElement())) {
            QString nodeString = *root + optElement.tagName() + "." + optionNode.toElement().tagName();
            missingNodes[nodeString] = optionNode;
        }

        QDomNode childNode = optionNode.firstChild();
        while(!childNode.isNull()) {
            QString childRoot = *root + optElement.tagName()+"." + optionNode.toElement().tagName() + ".";
            findMissingOptions(childNode.toElement(), &childRoot);
            childNode = childNode.nextSibling();
        }
        optionNode = optionNode.nextSibling();
    }
    *root += optElement.tagName()+".";
}
Esempio n. 4
0
void
ProgramOptions::findMissingOptions(const OptionGroup& group, SetString& missing) const
{
	 
	for (OptionMap::const_iterator it = group.getOptions().begin(); 
		it != group.getOptions().end();
		++it)
	{
		if (it->second.isMandatory() && !isOptionDefined (it->first)){
			missing.insert(it->second.getName());
		}
	}

	for (OptionGroupMap::const_iterator git = group.getGroups().begin();
		git != group.getGroups().end();
		++git)
	{
		findMissingOptions(git->second, missing);
	}
}