Ejemplo n.º 1
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RicExecuteScriptFeature::onActionTriggered(bool isChecked)
{
    std::vector<RimCalcScript*> selection = RicScriptFeatureImpl::selectedScripts();
    CVF_ASSERT(selection.size() > 0);

    RiuMainWindow* mainWindow = RiuMainWindow::instance();
    mainWindow->showProcessMonitorDockPanel();

    RimCalcScript* calcScript = selection[0];

    RiaApplication* app = RiaApplication::instance();
    QString octavePath = app->octavePath();
    if (!octavePath.isEmpty())
    {
        // TODO: Must rename RimCalcScript::absolutePath to absoluteFileName, as the code below is confusing
        // absolutePath() is a function in QFileInfo
        QFileInfo fi(calcScript->absolutePath());
        QString octaveFunctionSearchPath = fi.absolutePath();

        QStringList arguments = app->octaveArguments();
        arguments.append("--path");
        arguments << octaveFunctionSearchPath;
        arguments << calcScript->absolutePath();

        RiaApplication::instance()->launchProcess(octavePath, arguments);
    }
}
Ejemplo n.º 2
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RicExecuteScriptFeature::onActionTriggered(bool isChecked)
{
    std::vector<RimCalcScript*> selection = RicScriptFeatureImpl::selectedScripts();
    CVF_ASSERT(selection.size() > 0);

    RiuMainWindow* mainWindow = RiuMainWindow::instance();
    mainWindow->showProcessMonitorDockPanel();

    RimCalcScript* calcScript = selection[0];

    RiaApplication* app = RiaApplication::instance();
    QString octavePath = app->octavePath();
    if (!octavePath.isEmpty())
    {
        QStringList arguments = RimCalcScript::createCommandLineArguments(calcScript->absoluteFileName());

        RiaApplication::instance()->launchProcess(octavePath, arguments);
    }
}
Ejemplo n.º 3
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimScriptCollection::readContentFromDisc()
{
    calcScripts.deleteAllChildObjects();

    if (directory().isEmpty())
    {
        for (size_t i = 0; i < subDirectories.size(); ++i)
        {
            if (subDirectories[i]) subDirectories[i]->readContentFromDisc();
        }
        return;
    }

    QDir myDir(this->directory());
    if (!myDir.isReadable())
    {
        return;
    }

    // Build a list of all scripts in the specified directory
    {
        QString filter = "*.m";
        QStringList fileList = caf::Utils::getFilesInDirectory(directory, filter, true);

        int i;
        for (i = 0; i < fileList.size(); i++)
        {
            QString fileName = fileList.at(i);

            QFileInfo fi(fileName);
            if (fi.exists())
            {
                RimCalcScript* calcScript = new RimCalcScript;
                calcScript->absolutePath = fileName;
                calcScript->setUiName(fi.baseName());

                calcScripts.push_back(calcScript);
            }
        }
    }

    // Add subfolders
    {
        QDir dir(directory);
        QFileInfoList fileInfoList = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Readable);
        subDirectories.deleteAllChildObjects();

        QStringList retFileNames;

        QListIterator<QFileInfo> it(fileInfoList);
        while (it.hasNext())
        {
            QFileInfo fi = it.next();

            RimScriptCollection* scriptLocation = new RimScriptCollection;
            scriptLocation->directory = fi.absoluteFilePath();
            scriptLocation->setUiName(fi.baseName());
            scriptLocation->readContentFromDisc();
        
            subDirectories.push_back(scriptLocation);
        }
    }
}
Ejemplo n.º 4
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RicNewScriptFeature::onActionTriggered(bool isChecked)
{
    std::vector<RimCalcScript*> calcScripts = RicScriptFeatureImpl::selectedScripts();
    std::vector<RimScriptCollection*> calcScriptCollections = RicScriptFeatureImpl::selectedScriptCollections();

    RimCalcScript* calcScript = calcScripts.size() > 0 ? calcScripts[0] : NULL;
    RimScriptCollection* scriptColl = calcScriptCollections.size() > 0 ? calcScriptCollections[0] : NULL;

    QString fullPathNewScript;

    if (calcScript)
    {
        QFileInfo existingScriptFileInfo(calcScript->absolutePath());
        fullPathNewScript = existingScriptFileInfo.absolutePath();
    }
    else if (scriptColl)
    {
        fullPathNewScript = scriptColl->directory();
    }
    else
    {
        return;
    }

    QString fullPathFilenameNewScript;

    fullPathFilenameNewScript = fullPathNewScript + "/untitled.m";
    int num= 1;
    while (caf::Utils::fileExists(fullPathFilenameNewScript))
    {
        fullPathFilenameNewScript = fullPathNewScript + "/untitled" + QString::number(num) + ".m";
        num++;
    }

    bool ok;
    fullPathFilenameNewScript = QInputDialog::getText(nullptr,
                                                      "Specify new script file", 
                                                      "File name", 
                                                      QLineEdit::Normal, 
                                                      fullPathFilenameNewScript, 
                                                      &ok,
                                                      RiuTools::defaultDialogFlags());

    if (ok && !fullPathFilenameNewScript.isEmpty())
    {
        QFile file(fullPathFilenameNewScript);
        if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
        {
            QMessageBox::warning(Riu3DMainWindowTools::mainWindowWidget(), "Script editor", "Failed to create file\n" + fullPathFilenameNewScript);

            return;
        }
        
        RicRefreshScriptsFeature::refreshScriptFolders();

        if (calcScript)
        {
            Riu3DMainWindowTools::selectAsCurrentItem(calcScript);
        }

        RiaApplication* app = RiaApplication::instance();
        QString scriptEditor = app->scriptEditorPath();
        if (!scriptEditor.isEmpty())
        {
            QStringList arguments;
            arguments << fullPathFilenameNewScript;

            QProcess* myProcess = new QProcess(this);
            myProcess->start(scriptEditor, arguments);

            if (!myProcess->waitForStarted(1000))
            {
                QMessageBox::warning(Riu3DMainWindowTools::mainWindowWidget(), "Script editor", "Failed to start script editor executable\n" + scriptEditor);
            }
        }
    }
}