Example #1
0
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QStringList args = a.arguments();

    if(args.size() < 5)
    {
        std::cout << ">>> KESM Composer Controller ver " << kComposerControllerVersion << " <<<" << std::endl;
        std::cout << "Control composers." << std::endl;

        QFileInfo pathInfo(args[0]);
        QString fileName(pathInfo.completeBaseName());
        std::cout << qPrintable(fileName )<< " dataPathName startIndex endIndex numberOfImagesToCompose" << std::endl;
        return kKESM_ERROR;
    }

    ProcessInfo processInfo;
    processInfo.init(args[1], args[2].toInt(), args[3].toInt(), args[4].toInt());

    QString logTag;
    if(args.size() > 5)
        logTag = args[5];

    std::cout << ">>> KESM Composer Controller ver " << kComposerControllerVersion << " <<<" << std::endl;
    std::cout << "Control composers." << std::endl;

    std::cout << "dataPathName:    " << qPrintable(processInfo.dataPathName) << std::endl;
    std::cout << "startIndex:      " << processInfo.startIndex << std::endl;
    std::cout << "endIndex:        " << processInfo.endIndex << std::endl;
    std::cout << "numberOfImages:  " << processInfo.numberOfImages << std::endl;

    ////////////////////////////////////////////
    // Controller
    KESM::ComposerController controller;

    for (int i = processInfo.startIndex; i < processInfo.endIndex; i+=kComposerUnitDepth) { //(processInfo.numberOfImages)/2) {
        processInfo.prepareArgs(i);

        QStringList argList;
        QString numberOfImages = QString("%1").arg(processInfo.args.numberOfImages);

        if(args.size() > 5)
            argList << processInfo.args.baseFilePathName << processInfo.args.outputPath << numberOfImages << logTag;
        else
            argList << processInfo.args.baseFilePathName << processInfo.args.outputPath << numberOfImages;

        std::cout << "Processing... " << i << ": " << qPrintable(processInfo.args.baseFilePathName) << std::endl;

        controller.process.startDetached(processInfo.processName, argList);
        //controller.process.start(processInfo.processName, argList);
        // default max wait time is 30 sec.
        // if more than 30 sec needed, we got to wait more...

        controller.process.waitForFinished();//kMaxProcessWaitTime);


        if(controller.isProcessError)
            break;
    }

    return kKESM_OK; //a.exec();

}