Example #1
0
int helpMessage(const QApplication &app, QString text)
{
	QString title = QObject::tr("Help for ") + app.applicationName();
#ifdef WIN32
	QMessageBox msgBox(QMessageBox::NoIcon, title, text, QMessageBox::Ok);
	return msgBox.exec();
#else
	printf("\n%s\n", title.toStdString().c_str());
	printf("\n%s", text.toStdString().c_str());
	return 0;
#endif
}
int saisieAppuisInitQT_main(QApplication &app, int argc, char *argv[])
{
    app.setApplicationName("SaisieAppuisInitQT");
    app.setOrganizationName("Culture3D");

    QStringList cmdline_args = QCoreApplication::arguments();

    if (cmdline_args.back().contains("help"))
    {
        QString help = "Mandatory unnamed args :\n"
                 "* string :: {Full name (Dir+Pattern)}\n"
                 "* string :: {Orientation ; NONE if not used}\n"
                 "* string :: {Point name, or point file name}\n"
                 "* string :: {Output}\n\n"
                "Named args :\n"
                "* [Name=SzW] Pt2di :: {Sz of window}\n"
                "* [Name=NbF] Pt2di :: {Nb of sub window}\n"
                "* [Name=NameAuto] string :: {Prefix for automatic point creation}\n"
                //"* [Name=Pref2Add] string :: {Prefix to add during import (for bug correction ?)}\n"
                "* [Name=ForceGray] bool :: {Force gray image, def=false}\n"
                "* [Name=OriMode] string :: {Orientation type (GRID) (Def=Std)}\n"
                "* [Name=ZMoy] REAL :: {Average Z, Mandatory in PB}\n"
                "* [Name=ZInc] REAL :: {Incertitude on Z, Mandatory in PB}\n\n"

                "Example:\nmm3d " + app.applicationName() + " IMG_558{0-9}[1].tif RadialBasic 100 measures.xml\n\n"
                "NB: visual interface for argument edition available with command:\n\n mm3d v" + app.applicationName() + "\n\n";

        return helpMessage(app, help);
    }

    loadTranslation(app);

    QSettings settings(QApplication::organizationName(), QApplication::applicationName());

    if ((argc>0)&&(string(argv[0]).find("SaisieQT")!= string::npos))
    {
        argv++;
        argc--;
    }

    Pt2di aSzWin(800,800);
    Pt2di aNbFen(-1,-1);

    string aFullName, aDir, aName, aNamePt, aNameOut;   //mandatory arguments
    string aNameOri, aModeOri, aNameAuto, aPrefix2Add;  //named args
    aPrefix2Add = "";
    bool aForceGray = false;

    settings.beginGroup("Misc");
    aNameAuto = settings.value("defPtName", QString("100")).toString().toStdString();
    settings.endGroup();

    settings.beginGroup("Drawing settings");
    aForceGray = settings.value("forceGray", false       ).toBool();
    settings.endGroup();

    double aZInc, aZMoy;

    if (argv[0][0] == 'v')
    {
        MMVisualMode = true;
        argv[0] = (char*) "SaisieAppuisInitQT";
    }
    
    std::string aInputSec;

    SaisieAppuisInit(argc, argv, aSzWin, aNbFen, aFullName, aDir, aName, aNamePt, aNameOri, aModeOri, aNameOut, aNameAuto, aPrefix2Add, aForceGray, aZMoy, aZInc,aInputSec);

    if (!MMVisualMode)
    {
        if (!checkNamePt( QString (aNamePt.c_str()))) return -1;

        QStringList filenames = getFilenames(aDir, aName);

        int aNbW = aNbFen.x * aNbFen.y;
        if (filenames.size() < aNbW)
        {
             aNbW = filenames.size();

             cVirtualInterface::ComputeNbFen(aNbFen, aNbW);
        }

        updateSettings(settings, aSzWin,aNbFen, aForceGray);

        settings.beginGroup("Misc");
        settings.setValue("defPtName", QString(aNameAuto.c_str()));
        settings.endGroup();

        QStringList input;
        input   << QString(MMDir().c_str()) + QString("bin/SaisiePts")
                << QString(MMDir().c_str()) + QString("include/XML_MicMac/SaisieInitiale.xml")
                << QString("DirectoryChantier=") + QString(aDir.c_str())
                << QString("+Image=") +  QString(aName.c_str())
                << QString("+Ori=") + QString(aNameOri.c_str())
                << QString("+NamePt=") + QString(aNamePt.c_str())
                << QString("+NameAuto=") + QString(aNameAuto.c_str())
                << QString("+Sauv=") + QString(aNameOut.c_str())
                << QString("+SzWx=") + QString::number(aSzWin.x)
                << QString("+SzWy=") + QString::number(aSzWin.y)
                << QString("+NbFx=") + QString::number(aNbFen.x)
                << QString("+NbFy=") + QString::number(aNbFen.y);

        if (aModeOri == "GRID")
        {
            input << QString("+ModeOriIm=eGeomImageGrille")
                  << QString("+Conik=false")
                  << QString("+ZIncIsProp=false")
                    //<< QString(+PostFixOri=GRIBin")
                  << QString("+Px1Inc=") + QString::number(aZInc)
                  << QString("+Px1Moy=") + QString::number(aZMoy);

            //<< QString("+Geom=eGeomMNTFaisceauIm1ZTerrain_Px1D");
        }

        if (EAMIsInit(&aForceGray))
           input << QString("+ForceGray=") + QString(((string)(ToString(aForceGray))).c_str());

        if (EAMIsInit(&aPrefix2Add))
           input << QString("+Pref2Add=") + QString(aPrefix2Add.c_str());


        char **output;

        // Copy input to output
        output = new char*[input.size() + 1];
        for (int i = 0; i < input.size(); i++) {
            output[i] = new char[strlen(input.at(i).toStdString().c_str())+1];
            memcpy(output[i], input.at(i).toStdString().c_str(), strlen(input.at(i).toStdString().c_str())+1);
        }
        output[input.size()] = ((char*)NULL);


        cResultSubstAndStdGetFile<cParamSaisiePts> aP2(
                input.size()-2,output+2,
                output[1],
                StdGetFileXMLSpec("ParamSaisiePts.xml"),
                "ParamSaisiePts",
                "ParamSaisiePts",
                "DirectoryChantier",
                "FileChantierNameDescripteur" );

        cAppli_SaisiePts   anAppli (aP2,false);

        SaisieQtWindow w(POINT2D_INIT);

        new cQT_Interface(anAppli,&w);

        w.show();

        w.addFiles(filenames, false);

        return app.exec();
    }
    else
        return EXIT_SUCCESS;
}
Example #3
0
BaseWindow::BaseWindow(QWidget *parent)
    : QWidget(parent), ui(new Ui::BaseWindow)
{
    this->setAttribute(Qt::WA_QuitOnClose, false);
    serverCounter = 1;
    ui->setupUi(this);

    QApplication *app = (QApplication*)QApplication::instance();
    this->setWindowTitle(QString("%1 %2 (v%3)").arg(app->organizationName(), app->applicationName(), app->applicationVersion()));

    // Icon
    QIcon ico(":resources/RKnock.ico");
    this->setWindowIcon(ico);

    // Find the config file, does it exist?
#ifdef Q_WS_WIN
    QString fSection;
    QString mSection;
    QString lSection = "Settings.xml";

    if (QSysInfo::windowsVersion() < QSysInfo::WV_2000)
    {
        // All Versions before win2000
        fSection = QDir::currentPath(); // Where we are :)
        mSection = "";
    }
    else if (QSysInfo::windowsVersion() < QSysInfo::WV_VISTA)
    {
        fSection = QDir::homePath();
        mSection = QString("Application Data/%1/%2").arg(app->organizationName(), app->applicationName());
    }
    else
    {
        fSection = QDir::homePath();
        mSection = QString("AppData/Roaming/%1/%2").arg(app->organizationName(), app->applicationName());
    }

    if (mSection.size() == 0)
        this->cfgFileLocation = QString("%1/%2").arg(fSection, lSection);
    else
        this->cfgFileLocation = QString("%1/%2/%3").arg(fSection, mSection, lSection);

    //this->cfgFileLocation = QtDir::homePath().append("\\").append("
#else
    QString path = QString("%1/.%2/%3").arg(QDir::homePath(), app->organizationName(), app->applicationName());
    QString file = QString("%1/Settings.xml").arg(path);

    this->cfgFileLocation = file;
#endif

    if (QFile(this->cfgFileLocation).exists())
        this->loadSettings();

    this->tray = new QSystemTrayIcon(this);
    this->trayMenu = new QMenu(this);
    this->trayServersMenu = new QMenu("Servers", this->trayMenu);

    this->tray->setContextMenu(this->trayMenu);
    this->tray->setIcon(ico);
    this->tray->setVisible(true);

    QAction *subaction = 0;
    QMenu *submenu = 0;

    // Open Dialog
    subaction = this->trayMenu->addAction("Open Configuration Dialog...");
    connect(subaction, SIGNAL(triggered()), this, SLOT(show()));

    subaction = this->trayMenu->addAction("About RKnock...");
    connect(subaction, SIGNAL(triggered()), this, SLOT(showAbout()));

    this->trayMenu->addMenu(trayServersMenu);

    this->trayMenu->addSeparator();
    subaction = this->trayMenu->addAction("Exit...");
    connect(subaction, SIGNAL(triggered()), app, SLOT(quit()));

    connect(tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(activateMenu(QSystemTrayIcon::ActivationReason)));

    this->rebuildActions();
}