Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h	(revision 23733)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h	(revision 23734)
@@ -53,4 +53,5 @@
 class QLabel;
 class QSpacerItem;
+class QIWidgetValidator;
 
 /* Local forwards */
@@ -394,4 +395,7 @@
     virtual void accept();
 
+    void revalidate (QIWidgetValidator *aValidator);
+    void enableOk (const QIWidgetValidator *aValidator);
+
 protected:
 
@@ -401,4 +405,5 @@
 
     VBoxSettingsPage *mSettings;
+    QIDialogButtonBox *mButtonBox;
     CSession &mSession;
 };
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp	(revision 23733)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp	(revision 23734)
@@ -43,4 +43,5 @@
 #include "QIStateIndicator.h"
 #include "QIStatusBar.h"
+#include "QIWidgetValidator.h"
 #include "VBoxConsoleWnd.h"
 #include "VBoxConsoleView.h"
@@ -3413,4 +3414,5 @@
     : QIWithRetranslateUI <QDialog> (aParent)
     , mSettings (0)
+    , mButtonBox (0)
     , mSession (aSession)
 {
@@ -3431,11 +3433,19 @@
     mSettings->getFrom (aSession.GetMachine());
 
+    /* Setup validation */
+    QIWidgetValidator *validator = new QIWidgetValidator (mSettings, this);
+    mSettings->setValidator (validator);
+
     /* Setup button's layout */
-    QIDialogButtonBox *buttonBox = new QIDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help);
-
-    connect (buttonBox, SIGNAL (helpRequested()), &vboxProblem(), SLOT (showHelpHelpDialog()));
-    connect (buttonBox, SIGNAL (accepted()), this, SLOT (accept()));
-    connect (buttonBox, SIGNAL (rejected()), this, SLOT (reject()));
-    mainLayout->addWidget (buttonBox);
+    mButtonBox = new QIDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help);
+    mainLayout->addWidget (mButtonBox);
+
+    connect (mButtonBox, SIGNAL (helpRequested()), &vboxProblem(), SLOT (showHelpHelpDialog()));
+    connect (mButtonBox, SIGNAL (accepted()), this, SLOT (accept()));
+    connect (mButtonBox, SIGNAL (rejected()), this, SLOT (reject()));
+    connect (validator, SIGNAL (isValidRequested (QIWidgetValidator*)),
+             this, SLOT (revalidate (QIWidgetValidator*)));
+    connect (validator, SIGNAL (validityChanged (const QIWidgetValidator*)),
+             this, SLOT (enableOk (const QIWidgetValidator*)));
 
     retranslateUi();
@@ -3455,4 +3465,16 @@
         vboxProblem().cannotSaveMachineSettings (machine);
     QDialog::accept();
+}
+
+void VBoxStorageDialog::revalidate (QIWidgetValidator *aValidator)
+{
+    QString warning, title;
+    bool valid = mSettings->revalidate (warning, title);
+    aValidator->setOtherValid (valid);
+}
+
+void VBoxStorageDialog::enableOk (const QIWidgetValidator *aValidator)
+{
+    mButtonBox->button (QDialogButtonBox::Ok)->setEnabled (aValidator->isValid());
 }
 
