Octave interface: Added the path to ResInsight binary as search path for oct files in octave.

p4#: 22256
This commit is contained in:
Jacob Støren 2013-08-30 15:35:28 +02:00
parent 336eb56e3f
commit e0f5b15499
8 changed files with 87 additions and 500 deletions

View File

@ -545,6 +545,8 @@ void RimUiTreeView::slotExecuteScript()
QStringList arguments;
arguments.append("--path");
arguments << octaveFunctionSearchPath;
arguments.append("--path");
arguments << QApplication::applicationDirPath();
arguments.append("-q");
arguments << calcScript->absolutePath();
@ -597,6 +599,8 @@ void RimUiTreeView::slotExecuteScriptForSelectedCases()
QStringList arguments;
arguments.append("--path");
arguments << octaveFunctionSearchPath;
arguments.append("--path");
arguments << QApplication::applicationDirPath();
arguments.append("-q");
arguments << calcScript->absolutePath();

View File

@ -10,15 +10,25 @@ set( QOBJECT_HEADERS
qt4_wrap_cpp( MOC_FILES_CPP ${QOBJECT_HEADERS} )
add_library( ${PROJECT_NAME}
cafEffectCache.cpp
cafEffectGenerator.cpp
cafLog.cpp
cafMessagePanel.cpp
cafMouseState.cpp
cafUtils.cpp
cvfStructGrid.cpp
cvfStructGridGeometryGenerator.cpp
cafEffectCache.cpp
cafEffectCache.h
cafEffectGenerator.cpp
cafEffectGenerator.h
cafLog.cpp
cafLog.h
cafMessagePanel.cpp
cafMessagePanel.h
cafMouseState.cpp
cafMouseState.h
cafUtils.cpp
cafUtils.h
cvfStructGrid.cpp
cvfStructGrid.h
cvfStructGridCutPlane.h
cvfStructGridGeometryGenerator.cpp
cvfStructGridGeometryGenerator.h
cvfStructGridScalarDataAccess.h
${MOC_FILES_CPP}
)

View File

@ -9,6 +9,8 @@ include_directories(
add_library( ${PROJECT_NAME}
cafPdmFieldCvfColor.cpp
cafPdmFieldCvfColor.cpp
cafPdmFieldCvfColor.h
cafPdmFieldCvfMat4d.cpp
cafPdmFieldCvfMat4d.h
)

View File

@ -3,13 +3,29 @@ cmake_minimum_required (VERSION 2.8)
project (cafProjectDataModel)
add_library( ${PROJECT_NAME}
cafPdmObject.cpp
cafPdmDocument.cpp
cafPdmField.cpp
cafAppEnum.h
cafFactory.h
cafFixedArray.h
cafOmpMutex.h
cafPdmDocument.cpp
cafPdmDocument.h
cafPdmField.cpp
cafPdmField.h
cafPdmField.inl
cafPdmFieldImpl.h
cafPdmObject.cpp
cafPdmObject.h
cafPdmObjectFactory.h
cafPdmPointer.cpp
cafPdmUiItem.cpp
cafPdmUiOrdering.cpp
cafPdmPointer.h
cafPdmUiEditorHandle.cpp
cafPdmUiEditorHandle.h
cafPdmUiFieldEditorHandle.cpp
cafPdmUiFieldEditorHandle.h
cafPdmUiItem.cpp
cafPdmUiItem.h
cafPdmUiObjectEditorHandle.cpp
cafPdmUiObjectEditorHandle.h
cafPdmUiOrdering.cpp
cafPdmUiOrdering.h
)

View File

@ -33,23 +33,39 @@ endif()
add_library( ${PROJECT_NAME}
cafBasicAboutDialog.cpp
cafUiTreeModelPdm.cpp
cafUiProcess.cpp
cafPdmUiDefaultObjectEditor.cpp
cafBasicAboutDialog.cpp
cafBasicAboutDialog.h
cafPdmUiCheckBoxEditor.cpp
cafPdmUiCheckBoxEditor.h
cafPdmUiColorEditor.cpp
cafPdmUiColorEditor.h
cafPdmUiComboBoxEditor.cpp
cafPdmUiComboBoxEditor.h
cafPdmUiDefaultObjectEditor.cpp
cafPdmUiDefaultObjectEditor.h
cafPdmUiDoubleSliderEditor.cpp
cafPdmUiDoubleSliderEditor.h
cafPdmUiFilePathEditor.cpp
cafPdmUiFilePathEditor.h
cafPdmUiLineEditor.cpp
cafPdmUiLineEditor.h
cafPdmUiListEditor.cpp
cafPdmUiListEditor.h
cafPdmUiPropertyView.cpp
cafPdmUiPropertyView.h
cafPdmUiPushButtonEditor.cpp
cafPdmUiPushButtonEditor.h
cafPdmUiSliderEditor.cpp
cafPdmUiSliderEditor.h
cafPdmUiTextEditor.cpp
cafPdmUiTextEditor.h
cafProgressInfo.cpp
cafProgressInfo.h
cafUiProcess.cpp
cafUiProcess.h
cafUiTreeItem.h
cafUiTreeModelPdm.cpp
cafUiTreeModelPdm.h
cafPdmUiLineEditor.cpp
cafPdmUiCheckBoxEditor.cpp
cafPdmUiComboBoxEditor.cpp
cafPdmUiPushButtonEditor.cpp
cafPdmUiFilePathEditor.cpp
cafPdmUiListEditor.cpp
cafPdmUiSliderEditor.cpp
cafPdmUiDoubleSliderEditor.cpp
cafPdmUiColorEditor.cpp
cafPdmUiTextEditor.cpp
cafPdmUiPropertyView.cpp
${MOC_FILES_CPP}
)

View File

@ -1,374 +0,0 @@
//##################################################################################################
//
// Custom Visualization Core library
// Copyright (C) 2011-2012 Ceetron AS
//
// This library is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
// for more details.
//
//##################################################################################################
#include "cafUiPropertyCreatorPdm.h"
#include <QDockWidget>
#include <QLabel>
#include <QVBoxLayout>
#include <QItemSelectionModel>
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafUiTreeModelPdm.h"
#include "qtvariantproperty.h"
#include "qtpropertymanager.h"
#include "qteditorfactory.h"
#include <QTimer>
namespace caf
{
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
UiPropertyCreatorPdm::UiPropertyCreatorPdm(QObject * parent)
: QObject(parent),
m_treeModel(NULL),
m_selectionModel(NULL),
m_propertyBrowser(NULL)
{
m_variantPropertyManager = new QtVariantPropertyManager();
m_variantEditorFactory = new QtVariantEditorFactory();
m_doublePropertyManager = new QtStringPropertyManager();
m_doubleEditorFactory = new QtLineEditFactory();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
UiPropertyCreatorPdm::~UiPropertyCreatorPdm()
{
delete m_variantPropertyManager;
delete m_variantEditorFactory;
delete m_doublePropertyManager;
delete m_doubleEditorFactory;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::setPropertyBrowser(QtAbstractPropertyBrowser* propertyBrowser)
{
m_propertyBrowser = propertyBrowser;
if (m_propertyBrowser)
{
m_propertyBrowser->setFactoryForManager(m_variantPropertyManager, m_variantEditorFactory);
m_propertyBrowser->setFactoryForManager(m_doublePropertyManager, m_doubleEditorFactory);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::setModel(UiTreeModelPdm* treeModel, QItemSelectionModel* selectionModel)
{
clearWidgetsAndProperties();
m_treeModel = treeModel;
if (m_treeModel)
{
connect(m_treeModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), SLOT(slotDataChanged(const QModelIndex &, const QModelIndex &)));
}
m_selectionModel = selectionModel;
if (m_selectionModel)
{
connect(m_selectionModel, SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), SLOT(slotCurrentChanged(const QModelIndex&, const QModelIndex&)));
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::createAndShowPropertiesForIndex(const QModelIndex& index)
{
if (index.isValid())
{
caf::PdmUiTreeItem* treeItem = caf::UiTreeModelPdm::getTreeItemFromIndex(index);
assert(treeItem);
caf::PdmObject* pdmObj = treeItem->dataObject();
if (m_propertyBrowser)
{
createAndShowPropertiesForObject(pdmObj);
}
emit selectedObjectChanged(pdmObj);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::createAndShowPropertiesForObject(caf::PdmObject* object)
{
assert(m_propertyBrowser);
if (!object) return;
// Disconnect listening on property manager during building of property browser content
m_variantPropertyManager->disconnect(this);
m_doublePropertyManager->disconnect(this);
{
std::vector<caf::PdmFieldHandle*> fields;
uiFields(object, fields);
size_t i;
for (i = 0; i < fields.size(); i++)
{
caf::PdmFieldHandle* field = fields[i];
assert(field);
QString uiName = field->uiName();
QtProperty* qtProperty = NULL;
bool fromMenuOnly = false;
QList<PdmOptionItemInfo> enumNames = field->valueOptions(&fromMenuOnly);
// Check if we have an option menu to only show
if (!enumNames.isEmpty() && fromMenuOnly == true)
{
QtVariantProperty* variantProperty = m_variantPropertyManager->addProperty(QtVariantPropertyManager::enumTypeId(), uiName);
if (variantProperty)
{
variantProperty->setAttribute("enumNames", PdmOptionItemInfo::extractUiTexts(enumNames));
}
else
{
assert(false);
}
qtProperty = variantProperty;
}
else if (!enumNames.isEmpty() )
{
assert(false); // This is not yet supprted
}
else
{
QVariant uiValue = field->uiValue();
if (uiValue.type() == QVariant::Double)
{
qtProperty = m_doublePropertyManager->addProperty(uiName);
}
else
{
qtProperty = m_variantPropertyManager->addProperty(uiValue.type(), uiName);
if (uiValue.type() == QVariant::Color)
{
QList<QtProperty *> subProperties = qtProperty->subProperties();
int i;
for (i = 0; i < subProperties.size(); i++)
{
qtProperty->removeSubProperty(subProperties[i]);
}
}
}
}
if (qtProperty)
{
qtProperty->setToolTip(field->uiToolTip());
qtProperty->setWhatsThis(field->uiWhatsThis());
m_properties[qtProperty] = field;
if (!field->isUiHidden())
{
m_propertyBrowser->addProperty(qtProperty);
}
}
else
{
// Error
}
}
setAllPropertyValuesFromDataSource();
}
// Establish listening on property manager when all properties are updated from data source
connect(m_variantPropertyManager, SIGNAL(valueChanged(QtProperty*, const QVariant&)), SLOT(slotWriteValueToDataSource(QtProperty*, const QVariant&)));
connect(m_doublePropertyManager, SIGNAL(valueChanged(QtProperty*, const QString&)), SLOT(slotWriteDoubleValueToDataSource(QtProperty*, const QString&)));
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::clearWidgetsAndProperties()
{
if (m_propertyBrowser)
{
m_propertyBrowser->clear();
}
m_properties.clear();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::setAllPropertyValuesFromDataSource()
{
std::map<QtProperty*, caf::PdmFieldHandle*>::iterator it;
for (it = m_properties.begin(); it != m_properties.end(); it++)
{
#if 1
if (it->second->isUiHidden())
{
QtProperty* prop = it->first;
#if 0
it++;
m_properties.erase(prop);
delete prop;
#endif
m_propertyBrowser->removeProperty(prop);
}
else
#endif
{
m_propertyBrowser->addProperty(it->first);
QVariant uiValue = it->second->uiValue();
if (uiValue.type() == QVariant::Double)
{
QString text = uiValue.toString();
m_doublePropertyManager->setValue(it->first, text);
}
else
{
m_variantPropertyManager->setValue(it->first, uiValue);
}
QString uiName = it->second->uiName();
it->first->setPropertyName(uiName);
bool fromMenuOnly = false;
QList<PdmOptionItemInfo> enumNames = it->second->valueOptions(&fromMenuOnly);
if (!enumNames.isEmpty() && fromMenuOnly == true)
{
QtVariantProperty* variantProperty = dynamic_cast<QtVariantProperty*>(it->first);
if (variantProperty)
{
variantProperty->setAttribute("enumNames", PdmOptionItemInfo::extractUiTexts(enumNames));
}
}
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::slotWriteValueToDataSource(QtProperty* uiProperty, const QVariant& newValue)
{
assert(uiProperty);
caf::PdmFieldHandle* field = NULL;
std::map<QtProperty*, caf::PdmFieldHandle*>::iterator it;
for (it = m_properties.begin(); it != m_properties.end(); it++)
{
if (it->first == uiProperty)
{
field = it->second;
}
}
if (!field) return;
// Make sure we return a QVariant of unsigned int to tell pdm that we are using an option
// index, and not an int value.
QtVariantProperty* variantProperty = dynamic_cast<QtVariantProperty*> (uiProperty);
if (variantProperty && variantProperty->propertyType() == QtVariantPropertyManager::enumTypeId())
{
QVariant uintValue(newValue.toUInt());
field->setValueFromUi(uintValue);
}
else
{
field->setValueFromUi(newValue);
}
if (m_selectionModel)
{
m_treeModel->emitDataChanged(m_selectionModel->currentIndex());
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::slotWriteDoubleValueToDataSource(QtProperty* uiProperty, const QString& newValue)
{
double doubleValue = newValue.toDouble();
slotWriteValueToDataSource(uiProperty, doubleValue);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::slotDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
{
if (m_selectionModel)
{
if (topLeft == m_selectionModel->currentIndex())
{
// We must delay update of widgets to after the signal has returned
QTimer::singleShot(0, this, SLOT(slotUpdateProperties()));
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::slotCurrentChanged(const QModelIndex& current, const QModelIndex& previous)
{
clearWidgetsAndProperties();
createAndShowPropertiesForIndex(current);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void UiPropertyCreatorPdm::slotUpdateProperties()
{
setAllPropertyValuesFromDataSource();
}
void UiPropertyCreatorPdm::uiFields(const caf::PdmObject* object, std::vector<caf::PdmFieldHandle*>& fields) const
{
assert(object);
object->fields(fields);
}
} // end namespace caf

View File

@ -1,93 +0,0 @@
//##################################################################################################
//
// Custom Visualization Core library
// Copyright (C) 2011-2012 Ceetron AS
//
// This library is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
// for more details.
//
//##################################################################################################
#pragma once
#include <QWidget>
#include <map>
#include <QAbstractItemModel>
class QDockWidget;
class QLabel;
class QtAbstractPropertyBrowser;
class QItemSelectionModel;
// Property browser
class QtVariantEditorFactory;
class QtVariantPropertyManager;
class QtProperty;
class QtStringPropertyManager;
class QtLineEditFactory;
namespace caf {
class PdmObject;
class PdmFieldHandle;
class UiTreeModelPdm;
class UiPropertyCreatorPdm : public QObject
{
Q_OBJECT
public:
UiPropertyCreatorPdm(QObject* parent);
~UiPropertyCreatorPdm();
void setPropertyBrowser(QtAbstractPropertyBrowser* propertyBrowser);
void setModel(UiTreeModelPdm* treeModel, QItemSelectionModel* selectionModel);
virtual void uiFields(const caf::PdmObject* object, std::vector<caf::PdmFieldHandle*>& fields) const;
void createAndShowPropertiesForObject(caf::PdmObject* dataSource);
signals:
void selectedObjectChanged(caf::PdmObject* object);
private:
void createAndShowPropertiesForIndex(const QModelIndex& index);
void setAllPropertyValuesFromDataSource();
void clearWidgetsAndProperties();
private slots:
void slotWriteValueToDataSource(QtProperty* uiProperty, const QVariant& newValue);
void slotWriteDoubleValueToDataSource(QtProperty* uiProperty, const QString& newValue);
void slotDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight);
void slotCurrentChanged(const QModelIndex& current, const QModelIndex& previous);
void slotUpdateProperties();
private:
UiTreeModelPdm* m_treeModel;
QItemSelectionModel* m_selectionModel;
QtAbstractPropertyBrowser* m_propertyBrowser;
QtVariantPropertyManager* m_variantPropertyManager;
QtVariantEditorFactory* m_variantEditorFactory;
QtStringPropertyManager* m_doublePropertyManager;
QtLineEditFactory* m_doubleEditorFactory;
std::map<QtProperty*, caf::PdmFieldHandle*> m_properties;
};
} // end namespace caf

View File

@ -17,10 +17,16 @@ endif()
add_library( ${PROJECT_NAME}
cafViewer.cpp
cafNavigationPolicy.cpp
cafCadNavigation.cpp
cafCadNavigation.h
cafCeetronNavigation.cpp
cafCeetronNavigation.h
cafNavigationPolicy.cpp
cafNavigationPolicy.h
cafOpenGLWidget.cpp
cafOpenGLWidget.h
cafViewer.cpp
cafViewer.h
${MOC_FILES_CPP}
)