diff --git a/ApplicationCode/ProjectDataModel/RimCommandObject.cpp b/ApplicationCode/ProjectDataModel/RimCommandObject.cpp index 82f54d0445..23874c31ba 100644 --- a/ApplicationCode/ProjectDataModel/RimCommandObject.cpp +++ b/ApplicationCode/ProjectDataModel/RimCommandObject.cpp @@ -21,6 +21,7 @@ #include "RimCalcScript.h" #include "cafPdmUiTextEditor.h" +#include "cafPdmUiPushButtonEditor.h" #include "cafPdmDocument.h" #include @@ -49,9 +50,19 @@ RimCommandObject::~RimCommandObject() //-------------------------------------------------------------------------------------------------- RimCommandExecuteScript::RimCommandExecuteScript() { + CAF_PDM_InitFieldNoDefault(&name, "Name", "Name", "", "", ""); + CAF_PDM_InitField(&scriptText, "ScriptText", QString(), "ScriptText", "", "" ,""); scriptText.setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName()); + CAF_PDM_InitField(&isEnabled, "IsEnabled", true, "Enabled ", "", "", ""); + + + CAF_PDM_InitField(&execute, "Execute", true, "Execute", "", "", ""); + execute.setIOWritable(false); + execute.setIOReadable(false); + execute.setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName()); + execute.setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN); } //-------------------------------------------------------------------------------------------------- @@ -67,6 +78,8 @@ RimCommandExecuteScript::~RimCommandExecuteScript() //-------------------------------------------------------------------------------------------------- void RimCommandExecuteScript::redo() { + if (!isEnabled) return; + RiaApplication* app = RiaApplication::instance(); QString octavePath = app->octavePath(); if (!octavePath.isEmpty()) @@ -106,6 +119,27 @@ void RimCommandExecuteScript::defineEditorAttribute(const caf::PdmFieldHandle* f } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmFieldHandle* RimCommandExecuteScript::userDescriptionField() +{ + return &name; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimCommandExecuteScript::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) +{ + if (&execute == changedField) + { + RiaApplication* app = RiaApplication::instance(); + app->addCommandObject(this); + app->executeCommandObjects(); + } +} + diff --git a/ApplicationCode/ProjectDataModel/RimCommandObject.h b/ApplicationCode/ProjectDataModel/RimCommandObject.h index bd8ed9c244..8ac122a61f 100644 --- a/ApplicationCode/ProjectDataModel/RimCommandObject.h +++ b/ApplicationCode/ProjectDataModel/RimCommandObject.h @@ -51,12 +51,19 @@ public: RimCommandExecuteScript(); virtual ~RimCommandExecuteScript(); - caf::PdmField scriptText; + caf::PdmField name; + caf::PdmField isEnabled; + caf::PdmField execute; + caf::PdmField scriptText; virtual void redo(); virtual void undo(); virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute); + + virtual caf::PdmFieldHandle* userDescriptionField(); + + virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ); };