void AddBuild::okClick(){
    QString buildDirectory = ui->lineEditDirectory->text();
    //Check to see if directory actually exist...
    if(!QDir(buildDirectory).exists()){
        showError("Invalid directory path","error");
        return;
    }
    //continue if it does exist
    QString BuildID = ui->lineEditBuildID->text();
    QString buildName = ui->lineEditName->text();
    QString buildDescription = ui->lineEditDescription->text();

    if(buildName.size() > NAME_SIZE_LIMIT || !buildName.compare("")){
        showError("Build name not within valid range(1-25)","error");
    }

    //Exit if a field is empty
    if(BuildID.compare("") == 0|| buildName.compare("") == 0){
        showError("All fields are required","error");
        return;
    }

    //Exit if the BuildID is in use
    if(!checkBuildID(BuildID)){
        showError("The Build ID cannot contain a duplicate entry","error");
        return;
    }
    if(!checkBuildName(buildName)){
        showError("There already exist a build with that name","error");
        return;
    }

    //If all is fine, continue
    int buildID = BuildID.toInt();
    Build * newBuild = new Build(buildID,buildName,buildDescription,buildDirectory);
    //qDebug()<<"about to emit";
    addToXML(buildID,buildName,buildDescription,buildDirectory);

    //clean up for next add
    ui->lineEditBuildID->setText("");
    ui->lineEditName->setText("");
    ui->lineEditDescription->setText("");
    ui->lineEditDirectory->setText("");
    ui->lineEditDirectory->setFocus();

    //Use show error to confirm the build is added
    showError("Build added successfully","info");

    emit initiateAddBuild(newBuild);
    this->close();
}
Beispiel #2
0
int main(int argc, char *argv[])
{
    QString title;
    title = title + "****************************************************************** \n";
    title = title + " * DictToXML 1.0                                                  * \n";
    title = title + " * This tool generates an XML structure of a CSPro dictionary     * \n";
    title = title + " * file. The XML has the same data as the DCF file but using      * \n";
    title = title + " * XML tags. The purpose of an XML structure is to easily read    * \n";
    title = title + " * dictionary information or to quickly alter value lists.        * \n";
    title = title + " * The XMLToDict do the oposite.                                  * \n";
    title = title + " * This tool is part of CSPro Tools (c) ILRI, 2012                * \n";
    title = title + " ****************************************************************** \n";

    TCLAP::CmdLine cmd(title.toLatin1().constData(), ' ', "1.0 (Beta 1)");
    //Required arguments
    TCLAP::ValueArg<std::string> inputArg("i","input","Input CSPro DCF File",true,"","string");
    TCLAP::ValueArg<std::string> outputArg("o","output","Output XML file. Default ./output.xml",false,"./output.xml","string");

    cmd.add(inputArg);
    cmd.add(outputArg);
    //Parsing the command lines
    cmd.parse( argc, argv );

    //Getting the variables from the command

    QString input = QString::fromUtf8(inputArg.getValue().c_str());
    QString output = QString::fromUtf8(outputArg.getValue().c_str());

    QFile file(input);

    if (!file.exists())
    {
        printLog("The input DCF file does not exits");
        return 1;
    }

    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        printLog("Cannot open DCF file");
        return 1;
    }

    doc = QDomDocument("CSProXMLFile");

    root = doc.createElement("CSProXML");
    root.setAttribute("version", "1.0");
    doc.appendChild(root);

    QTextStream in(&file);
    int pos;
    pos = 1;
    while (!in.atEnd())
    {
        QString line = in.readLine();
        if (!line.isEmpty())
            addToXML(line); //Parse the line
        pos++;
    }

    if (createXML(output) != 0)
    {
        printLog("Error saving XML file");
        return 1;
    }

    printLog("Done");
    return 0;
}