浏览代码

Implemented ctkCmdLineModuleInstance::setValue().

Sascha Zelzer 13 年之前
父节点
当前提交
5056be3ae1

+ 12 - 4
Libs/CommandLineModules/Core/ctkCmdLineModuleInstance.cpp

@@ -58,7 +58,7 @@ struct ctkCmdLineModuleInstancePrivate
     {
       if (reader.index() > -1)
       {
-        indexedArgs.insert(reader.index(), reader.value());
+        indexedArgs.insert(reader.index(), reader.value().toString());
       }
       else
       {
@@ -75,11 +75,11 @@ struct ctkCmdLineModuleInstancePrivate
         QStringList args;
         if (reader.isMultiple())
         {
-          args = reader.value().split(',', QString::SkipEmptyParts);
+          args = reader.value().toString().split(',', QString::SkipEmptyParts);
         }
         else
         {
-          args.push_back(reader.value());
+          args.push_back(reader.value().toString());
         }
 
         foreach(QString arg, args)
@@ -129,7 +129,15 @@ QVariant ctkCmdLineModuleInstance::value(const QString &parameter) const
 
 void ctkCmdLineModuleInstance::setValue(const QString &parameter, const QVariant &value)
 {
-  throw ctkException("not implemented yet");
+  ctkCmdLineModuleObjectHierarchyReader reader(parameterValueModel());
+  while(reader.readNextParameter())
+  {
+    if(reader.name() == parameter && reader.value() != value)
+    {
+      reader.setValue(value);
+      emit valueChanged(parameter, value);
+    }
+  }
 }
 
 ctkCmdLineModuleReference ctkCmdLineModuleInstance::moduleReference() const

+ 11 - 2
Libs/CommandLineModules/Core/ctkCmdLineModuleObjectHierarchyReader.cpp

@@ -151,10 +151,19 @@ QString ctkCmdLineModuleObjectHierarchyReader::label() const
   }
 }
 
-QString ctkCmdLineModuleObjectHierarchyReader::value() const
+QVariant ctkCmdLineModuleObjectHierarchyReader::value() const
 {
   QString valProp = property("valueProperty").toString();
-  return property(valProp).toString();
+  return property(valProp);
+}
+
+void ctkCmdLineModuleObjectHierarchyReader::setValue(const QVariant& value)
+{
+  QVariant valProp = property("valueProperty");
+  if (valProp.isValid())
+  {
+    d->currentObject->setProperty(qPrintable(valProp.toString()), value);
+  }
 }
 
 QString ctkCmdLineModuleObjectHierarchyReader::flag() const

+ 3 - 1
Libs/CommandLineModules/Core/ctkCmdLineModuleObjectHierarchyReader.h

@@ -57,7 +57,9 @@ public:
 
   QString name() const;
   QString label() const;
-  QString value() const;
+  QVariant value() const;
+
+  void setValue(const QVariant& value);
 
   QString flag() const;
   QString longFlag() const;