Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 78176)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 78177)
@@ -53,4 +53,6 @@
 
 /* COM includes: */
+#include "CBooleanFormValue.h"
+#include "CChoiceFormValue.h"
 #include "CCloudClient.h"
 #include "CCloudProfile.h"
@@ -64,4 +66,5 @@
 #include "CSnapshot.h"
 #include "CStorageController.h"
+#include "CStringFormValue.h"
 #include "CConsole.h"
 #include "CMachine.h"
@@ -1689,4 +1692,32 @@
 }
 
+void UIMessageCenter::cannotAssignFormValue(const CBooleanFormValue &comValue, QWidget *pParent /* = 0 */) const
+{
+    error(pParent, MessageType_Error,
+          tr("Failed to assign form value."),
+          UIErrorString::formatErrorInfo(comValue));
+}
+
+void UIMessageCenter::cannotAssignFormValue(const CStringFormValue &comValue, QWidget *pParent /* = 0 */) const
+{
+    error(pParent, MessageType_Error,
+          tr("Failed to assign form value."),
+          UIErrorString::formatErrorInfo(comValue));
+}
+
+void UIMessageCenter::cannotAssignFormValue(const CChoiceFormValue &comValue, QWidget *pParent /* = 0 */) const
+{
+    error(pParent, MessageType_Error,
+          tr("Failed to assign form value."),
+          UIErrorString::formatErrorInfo(comValue));
+}
+
+void UIMessageCenter::cannotAssignFormValue(const CProgress &comProgress, QWidget *pParent /* = 0 */) const
+{
+    error(pParent, MessageType_Error,
+          tr("Failed to assign form value."),
+          UIErrorString::formatErrorInfo(comProgress));
+}
+
 bool UIMessageCenter::confirmHardDisklessMachine(QWidget *pParent /* = 0*/) const
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 78176)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 78177)
@@ -376,4 +376,8 @@
     bool confirmCloudProfileRemoval(const QString &strName, QWidget *pParent = 0) const;
     bool confirmCloudProfilesImport(QWidget *pParent = 0) const;
+    void cannotAssignFormValue(const CBooleanFormValue &comValue, QWidget *pParent = 0) const;
+    void cannotAssignFormValue(const CStringFormValue &comValue, QWidget *pParent = 0) const;
+    void cannotAssignFormValue(const CChoiceFormValue &comValue, QWidget *pParent = 0) const;
+    void cannotAssignFormValue(const CProgress &comProgress, QWidget *pParent = 0) const;
 
     /* API: Wizards warnings: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIFormEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIFormEditorWidget.cpp	(revision 78176)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIFormEditorWidget.cpp	(revision 78177)
@@ -152,10 +152,16 @@
     /** Returns value cast to bool. */
     bool toBool() const;
+    /** Defines @a fBool value. */
+    void setBool(bool fBool);
 
     /** Returns value cast to string. */
     QString toString() const;
+    /** Defines @a strString value. */
+    void setString(const QString &strString);
 
     /** Returns value cast to choice. */
     ChoiceData toChoice() const;
+    /** Defines @a choice value. */
+    void setChoice(ChoiceData choice);
 
 protected:
@@ -298,4 +304,27 @@
 }
 
+void UIFormEditorRow::setBool(bool fBool)
+{
+    AssertReturnVoid(valueType() == KFormValueType_Boolean);
+    CBooleanFormValue comValue(m_comValue);
+    CProgress comProgress = comValue.SetSelected(fBool);
+
+    /* Show error message if necessary: */
+    if (!comValue.isOk())
+        msgCenter().cannotAssignFormValue(comValue);
+    else
+    {
+        /* Show "Acquire export form" progress: */
+        msgCenter().showModalProgressDialog(comProgress, UIFormEditorWidget::tr("Assign value..."),
+                                            ":/progress_reading_appliance_90px.png");
+
+        /* Show error message if necessary: */
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            msgCenter().cannotAssignFormValue(comProgress);
+        else
+            updateValueCells();
+    }
+}
+
 QString UIFormEditorRow::toString() const
 {
@@ -305,4 +334,27 @@
 }
 
+void UIFormEditorRow::setString(const QString &strString)
+{
+    AssertReturnVoid(valueType() == KFormValueType_String);
+    CStringFormValue comValue(m_comValue);
+    CProgress comProgress = comValue.SetString(strString);
+
+    /* Show error message if necessary: */
+    if (!comValue.isOk())
+        msgCenter().cannotAssignFormValue(comValue);
+    else
+    {
+        /* Show "Acquire export form" progress: */
+        msgCenter().showModalProgressDialog(comProgress, UIFormEditorWidget::tr("Assign value..."),
+                                            ":/progress_reading_appliance_90px.png");
+
+        /* Show error message if necessary: */
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            msgCenter().cannotAssignFormValue(comProgress);
+        else
+            updateValueCells();
+    }
+}
+
 ChoiceData UIFormEditorRow::toChoice() const
 {
@@ -310,4 +362,27 @@
     CChoiceFormValue comValue(m_comValue);
     return ChoiceData(comValue.GetValues(), comValue.GetSelectedIndex());
+}
+
+void UIFormEditorRow::setChoice(ChoiceData choice)
+{
+    AssertReturnVoid(valueType() == KFormValueType_Choice);
+    CChoiceFormValue comValue(m_comValue);
+    CProgress comProgress = comValue.SetSelectedIndex(choice.selectedChoice());
+
+    /* Show error message if necessary: */
+    if (!comValue.isOk())
+        msgCenter().cannotAssignFormValue(comValue);
+    else
+    {
+        /* Show "Acquire export form" progress: */
+        msgCenter().showModalProgressDialog(comProgress, UIFormEditorWidget::tr("Assign value..."),
+                                            ":/progress_reading_appliance_90px.png");
+
+        /* Show error message if necessary: */
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            msgCenter().cannotAssignFormValue(comProgress);
+        else
+            updateValueCells();
+    }
 }
 
@@ -472,11 +547,61 @@
 bool UIFormEditorModel::setData(const QModelIndex &index, const QVariant &value, int iRole /* = Qt::EditRole */)
 {
-    Q_UNUSED(value);
-
     /* Check index validness: */
-    if (!index.isValid() || iRole != Qt::EditRole)
+    if (!index.isValid())
         return false;
-    /* Return wrong value: */
-    return false;
+    /* Switch for different roles: */
+    switch (iRole)
+    {
+        /* Checkstate role: */
+        case Qt::CheckStateRole:
+        {
+            /* Switch for different columns: */
+            switch (index.column())
+            {
+                case UIFormEditorDataType_Value:
+                {
+                    if (m_dataList[index.row()]->valueType() == KFormValueType_Boolean)
+                    {
+                        const Qt::CheckState enmCheckState = static_cast<Qt::CheckState>(value.toInt());
+                        m_dataList[index.row()]->setBool(enmCheckState == Qt::Checked);
+                        emit dataChanged(index, index);
+                        return true;
+                    }
+                    else
+                        return false;
+                }
+                default:
+                    return false;
+            }
+        }
+        /* Edit role: */
+        case Qt::EditRole:
+        {
+            /* Switch for different columns: */
+            switch (index.column())
+            {
+                case UIFormEditorDataType_Value:
+                {
+                    switch (m_dataList[index.row()]->valueType())
+                    {
+                        case KFormValueType_String:
+                            m_dataList[index.row()]->setString(value.toString());
+                            emit dataChanged(index, index);
+                            return true;
+                        case KFormValueType_Choice:
+                            m_dataList[index.row()]->setChoice(value.value<ChoiceData>());
+                            emit dataChanged(index, index);
+                            return true;
+                        default:
+                            return false;
+                    }
+                }
+                default:
+                    return false;
+            }
+        }
+        default:
+            return false;
+    }
 }
 
