Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc	(revision 68235)
@@ -186,4 +186,5 @@
         <file alias="statusbar_settings_16px.png">images/statusbar_settings_16px.png</file>
         <file alias="statusbar_settings_disabled_16px.png">images/statusbar_settings_disabled_16px.png</file>
+        <file alias="tools_200px.png">images/tools_200px.png</file>
         <file alias="tools_global_32px.png">images/tools_global_32px.png</file>
         <file alias="tools_machine_32px.png">images/tools_machine_32px.png</file>
Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc	(revision 68235)
@@ -195,4 +195,5 @@
         <file alias="statusbar_settings_16px_hidpi.png">images/hidpi/statusbar_settings_16px_hidpi.png</file>
         <file alias="statusbar_settings_disabled_16px_hidpi.png">images/hidpi/statusbar_settings_disabled_16px_hidpi.png</file>
+        <file alias="tools_200px_hidpi.png">images/hidpi/tools_200px_hidpi.png</file>
         <file alias="tools_global_32px_hidpi.png">images/hidpi/tools_global_32px_hidpi.png</file>
         <file alias="tools_machine_32px_hidpi.png">images/hidpi/tools_machine_32px_hidpi.png</file>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIDesktopPane.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIDesktopPane.cpp	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIDesktopPane.cpp	(revision 68235)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2010-2016 Oracle Corporation
+ * Copyright (C) 2010-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -22,12 +22,19 @@
 /* Qt includes: */
 # include <QAction>
+# include <QGridLayout>
+# include <QHBoxLayout>
 # include <QLabel>
+# include <QPainter>
 # include <QStackedWidget>
+# include <QStyle>
 # include <QToolButton>
+# include <QUuid>
 # include <QVBoxLayout>
 
 /* GUI includes */
+# include "QILabel.h"
 # include "QIWithRetranslateUI.h"
 # include "UIDesktopPane.h"
+# include "UIIconPool.h"
 # include "VBoxUtils.h"
 
@@ -35,5 +42,80 @@
 # include <iprt/assert.h>
 
+/* Forward declarations: */
+class QEvent;
+class QGridLayout;
+class QHBoxLayout;
+class QIcon;
+class QLabel;
+class QPaintEvent;
+class QResizeEvent;
+class QString;
+class QUuid;
+class QVBoxLayout;
+class QWidget;
+
 #endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+/** Our own skinnable implementation of tool widget header for UIDesktopPane. */
+class UIToolWidgetHeader : public QLabel
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs tool widget header passing @a pParent to the base-class. */
+    UIToolWidgetHeader(QWidget *pParent = 0);
+
+protected:
+
+    /** Handles resuze @a pEvent. */
+    virtual void resizeEvent(QResizeEvent *pEvent) /* override */;
+
+    /** Handles paint @a pEvent. */
+    virtual void paintEvent(QPaintEvent *pEvent) /* override */;
+};
+
+
+/** Our own skinnable implementation of tool widget for UIDesktopPane. */
+class UIToolWidget : public QWidget
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs tool widget on the basis of passed @a pAction and @a strDescription. */
+    UIToolWidget(QAction *pAction, const QString &strDescription);
+
+protected:
+
+    /** Handles any Qt @a pEvent. */
+    virtual bool event(QEvent *pEvent) /* override */;
+
+    /** Handles paint @a pEvent. */
+    virtual void paintEvent(QPaintEvent *pEvent) /* override */;
+
+private:
+
+    /** Prepares all. */
+    void prepare();
+
+    /** Holds the action reference. */
+    QAction *m_pAction;
+    /** Holds the widget description. */
+    QString  m_strDescription;
+
+    /** Holds whether the widget is hovered. */
+    bool  m_fHovered;
+
+    /** Holds the main layout instance. */
+    QGridLayout *m_pLayout;
+    /** Holds the icon label instance. */
+    QLabel      *m_pLabelIcon;
+    /** Holds the name label instance. */
+    QLabel      *m_pLabelName;
+    /** Holds the description label instance. */
+    QILabel     *m_pLabelDescription;
+};
 
 
@@ -57,4 +139,13 @@
     void setError(const QString &strError);
 
+    /** Defines a tools pane welcome @a strText. */
+    void setToolsPaneText(const QString &strText);
+    /** Add a tool element.
+      * @param  pAction         Brings tool action reference.
+      * @param  strDescription  Brings the tool description. */
+    void addToolDescription(QAction *pAction, const QString &strDescription);
+    /** Removes all tool elements. */
+    void removeToolDescriptions();
+
 protected:
 
@@ -66,4 +157,7 @@
     /** Prepares error pane. */
     void prepareErrorPane();
+
+    /** Prepares tools pane. */
+    void prepareToolsPane();
 
 private:
@@ -82,5 +176,273 @@
     /** Holds the VM refresh action reference. */
     QAction *m_pRefreshAction;
+
+    /** Holds the tools pane instance. */
+    QWidget     *m_pToolsPane;
+    /** Holds the tools pane widget layout instance. */
+    QVBoxLayout *m_pLayoutWidget;
+    /** Holds the tools pane text label instance. */
+    QILabel     *m_pLabelToolsPaneText;
 };
+
+
+/*********************************************************************************************************************************
+*   Class UIToolWidgetHeader implementation.                                                                                     *
+*********************************************************************************************************************************/
+
+UIToolWidgetHeader::UIToolWidgetHeader(QWidget *pParent /* = 0 */)
+    : QLabel(pParent)
+{
+}
+
+void UIToolWidgetHeader::resizeEvent(QResizeEvent *pEvent)
+{
+    /* Call to base-class: */
+    QLabel::resizeEvent(pEvent);
+
+#if 0
+    /* Get basic palette: */
+    QPalette pal = qApp->palette();
+
+    /* Prepare new foreground: */
+    const QColor color0 = pal.color(QPalette::Active, QPalette::HighlightedText);
+    const QColor color1 = pal.color(QPalette::Active, QPalette::WindowText);
+    QLinearGradient grad(QPointF(0, 0), QPointF(width(), height()));
+    {
+        grad.setColorAt(0, color0);
+        grad.setColorAt(1, color1);
+    }
+
+    /* Apply palette changes: */
+    pal.setBrush(QPalette::Active, QPalette::WindowText, grad);
+    setPalette(pal);
+#endif
+}
+
+void UIToolWidgetHeader::paintEvent(QPaintEvent *pEvent)
+{
+    /* Prepare painter: */
+    QPainter painter(this);
+
+    /* Prepare palette colors: */
+    const QPalette pal = palette();
+    const QColor color0 = pal.color(QPalette::Highlight).lighter(130);
+    QColor color1 = color0;
+    color1.setAlpha(0);
+
+    /* Prepare background: */
+    QLinearGradient grad(QPointF(0, 0), QPointF(width(), height()));
+    {
+        grad.setColorAt(0,   color1);
+        grad.setColorAt(0.2, color0);
+        grad.setColorAt(1,   color1);
+    }
+
+    /* Paint background: */
+    painter.fillRect(QRect(0, 0, width(), height()), grad);
+
+    /* Call to base-class: */
+    QLabel::paintEvent(pEvent);
+}
+
+
+/*********************************************************************************************************************************
+*   Class UIToolWidget implementation.                                                                                           *
+*********************************************************************************************************************************/
+
+UIToolWidget::UIToolWidget(QAction *pAction, const QString &strDescription)
+    : m_pAction(pAction)
+    , m_strDescription(strDescription)
+    , m_fHovered(false)
+    , m_pLayout(0)
+    , m_pLabelIcon(0)
+    , m_pLabelName(0)
+    , m_pLabelDescription(0)
+{
+    /* Prepare: */
+    prepare();
+}
+
+bool UIToolWidget::event(QEvent *pEvent)
+{
+    /* Handle known event types: */
+    switch (pEvent->type())
+    {
+        /* Update the hovered state on/off: */
+        case QEvent::Enter:
+        {
+            m_fHovered = true;
+            update();
+            break;
+        }
+        case QEvent::Leave:
+        {
+            m_fHovered = false;
+            update();
+            break;
+        }
+
+        /* Notify listeners about the item was clicked: */
+        case QEvent::MouseButtonRelease:
+        {
+            m_pAction->trigger();
+            break;
+        }
+
+        default:
+            break;
+    }
+    /* Call to base-class: */
+    return QWidget::event(pEvent);
+}
+
+void UIToolWidget::paintEvent(QPaintEvent * /* pEvent */)
+{
+    /* Prepare painter: */
+    QPainter painter(this);
+
+    /* Prepare palette colors: */
+    const QPalette pal = palette();
+    const QColor color0 = m_fHovered
+                        ? pal.color(QPalette::Highlight).lighter(160)
+                        : pal.color(QPalette::Base);
+    const QColor color1 = color0.lighter(120);
+    QColor color2 = pal.color(QPalette::Window).lighter(110);
+    color2.setAlpha(0);
+    QColor color3 = pal.color(QPalette::Window).darker(200);
+
+    /* Invent pixel metric: */
+    const int iMetric = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 4;
+
+    /* Background gradient: */
+    QLinearGradient grad(QPointF(0, height()), QPointF(0, 0));
+    {
+        grad.setColorAt(0, color0);
+        grad.setColorAt(1, color1);
+    }
+
+    /* Top-left corner: */
+    QRadialGradient grad1(QPointF(iMetric, iMetric), iMetric);
+    {
+        grad1.setColorAt(0, color3);
+        grad1.setColorAt(1, color2);
+    }
+    /* Top-right corner: */
+    QRadialGradient grad2(QPointF(width() - iMetric, iMetric), iMetric);
+    {
+        grad2.setColorAt(0, color3);
+        grad2.setColorAt(1, color2);
+    }
+    /* Bottom-left corner: */
+    QRadialGradient grad3(QPointF(iMetric, height() - iMetric), iMetric);
+    {
+        grad3.setColorAt(0, color3);
+        grad3.setColorAt(1, color2);
+    }
+    /* Botom-right corner: */
+    QRadialGradient grad4(QPointF(width() - iMetric, height() - iMetric), iMetric);
+    {
+        grad4.setColorAt(0, color3);
+        grad4.setColorAt(1, color2);
+    }
+
+    /* Top line: */
+    QLinearGradient grad5(QPointF(iMetric, 0), QPointF(iMetric, iMetric));
+    {
+        grad5.setColorAt(0, color2);
+        grad5.setColorAt(1, color3);
+    }
+    /* Bottom line: */
+    QLinearGradient grad6(QPointF(iMetric, height()), QPointF(iMetric, height() - iMetric));
+    {
+        grad6.setColorAt(0, color2);
+        grad6.setColorAt(1, color3);
+    }
+    /* Left line: */
+    QLinearGradient grad7(QPointF(0, height() - iMetric), QPointF(iMetric, height() - iMetric));
+    {
+        grad7.setColorAt(0, color2);
+        grad7.setColorAt(1, color3);
+    }
+    /* Right line: */
+    QLinearGradient grad8(QPointF(width(), height() - iMetric), QPointF(width() - iMetric, height() - iMetric));
+    {
+        grad8.setColorAt(0, color2);
+        grad8.setColorAt(1, color3);
+    }
+
+    /* Paint shape/shadow: */
+    painter.fillRect(QRect(iMetric,           iMetric,            width() - iMetric * 2, height() - iMetric * 2), grad);
+    painter.fillRect(QRect(0,                 0,                  iMetric,               iMetric),                grad1);
+    painter.fillRect(QRect(width() - iMetric, 0,                  iMetric,               iMetric),                grad2);
+    painter.fillRect(QRect(0,                 height() - iMetric, iMetric,               iMetric),                grad3);
+    painter.fillRect(QRect(width() - iMetric, height() - iMetric, iMetric,               iMetric),                grad4);
+    painter.fillRect(QRect(iMetric,           0,                  width() - iMetric * 2, iMetric),                grad5);
+    painter.fillRect(QRect(iMetric,           height() - iMetric, width() - iMetric * 2, iMetric),                grad6);
+    painter.fillRect(QRect(0,                 iMetric,            iMetric,               height() - iMetric * 2), grad7);
+    painter.fillRect(QRect(width() - iMetric, iMetric,            iMetric,               height() - iMetric * 2), grad8);
+}
+
+void UIToolWidget::prepare()
+{
+    /* Configure self: */
+    setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+
+    /* Create main layout: */
+    m_pLayout = new QGridLayout(this);
+    AssertPtrReturnVoid(m_pLayout);
+    {
+        /* Invent pixel metric: */
+        const int iMetric = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) * 1.375;
+        const int iMargin = iMetric / 2;
+        const int iSpacing = iMargin / 2;
+
+        /* Configure layout: */
+        m_pLayout->setContentsMargins(iMargin + iSpacing, iMargin, iMargin, iMargin);
+        m_pLayout->setSpacing(iSpacing);
+
+        /* Create name label: */
+        m_pLabelName = new UIToolWidgetHeader;
+        AssertPtrReturnVoid(m_pLabelName);
+        {
+            /* Configure label: */
+            QFont fontLabel = m_pLabelName->font();
+            fontLabel.setBold(true);
+            m_pLabelName->setFont(fontLabel);
+            m_pLabelName->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+            m_pLabelName->setText(QString("%1     ").arg(m_pAction->text().remove('&')));
+
+            /* Add into layout: */
+            m_pLayout->addWidget(m_pLabelName, 0, 0);
+        }
+
+        /* Create description label: */
+        m_pLabelDescription = new QILabel;
+        AssertPtrReturnVoid(m_pLabelDescription);
+        {
+            /* Configure label: */
+            m_pLabelDescription->setAttribute(Qt::WA_TransparentForMouseEvents);
+            m_pLabelDescription->setWordWrap(true);
+            m_pLabelDescription->useSizeHintForWidth(400);
+            m_pLabelDescription->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+            m_pLabelDescription->setText(m_strDescription);
+
+            /* Add into layout: */
+            m_pLayout->addWidget(m_pLabelDescription, 1, 0);
+        }
+
+        /* Create icon label: */
+        m_pLabelIcon = new QLabel;
+        AssertPtrReturnVoid(m_pLabelIcon);
+        {
+            /* Configure label: */
+            m_pLabelIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+            m_pLabelIcon->setPixmap(m_pAction->icon().pixmap(iMetric));
+
+            /* Add into layout: */
+            m_pLayout->addWidget(m_pLabelIcon, 0, 1, 2, 1);
+            m_pLayout->setAlignment(m_pLabelIcon, Qt::AlignHCenter | Qt::AlignTop);
+        }
+    }
+}
 
 
@@ -94,4 +456,5 @@
     , m_pErrBox(0), m_pErrLabel(0), m_pErrText(0)
     , m_pRefreshButton(0), m_pRefreshAction(pRefreshAction)
+    , m_pToolsPane(0), m_pLayoutWidget(0), m_pLabelToolsPaneText(0)
 {
     /* Translate finally: */
@@ -121,4 +484,41 @@
     /* Raise corresponding widget: */
     setCurrentIndex(indexOf(m_pErrBox));
+}
+
+void UIDesktopPanePrivate::setToolsPaneText(const QString &strText)
+{
+    /* Prepare tools pane if necessary: */
+    prepareToolsPane();
+
+    /* Assign corresponding text: */
+    m_pLabelToolsPaneText->setText(strText);
+
+    /* Raise corresponding widget: */
+    setCurrentWidget(m_pToolsPane);
+}
+
+void UIDesktopPanePrivate::addToolDescription(QAction *pAction, const QString &strDescription)
+{
+    /* Prepare tools pane if necessary: */
+    prepareToolsPane();
+
+    /* Add tool widget on the basis of passed description: */
+    UIToolWidget *pWidget = new UIToolWidget(pAction, strDescription);
+    AssertPtrReturnVoid(pWidget);
+    {
+        /* Add into layout: */
+        m_pLayoutWidget->addWidget(pWidget);
+    }
+
+    /* Raise corresponding widget: */
+    setCurrentWidget(m_pToolsPane);
+}
+
+void UIDesktopPanePrivate::removeToolDescriptions()
+{
+    /* Clear the layout: */
+    QLayoutItem *pChild = 0;
+    while ((pChild = m_pLayoutWidget->takeAt(0)) != 0)
+        delete pChild;
 }
 
@@ -219,4 +619,78 @@
 }
 
+void UIDesktopPanePrivate::prepareToolsPane()
+{
+    /* Do nothing if already exists: */
+    if (m_pToolsPane)
+        return;
+
+    /* Create tool pane: */
+    m_pToolsPane = new QWidget;
+    AssertPtrReturnVoid(m_pToolsPane);
+    {
+        /* Create main layout: */
+        QVBoxLayout *pMainLayout = new QVBoxLayout(m_pToolsPane);
+        AssertPtrReturnVoid(pMainLayout);
+        {
+            /* Create welcome layout: */
+            QHBoxLayout *pLayoutWelcome = new QHBoxLayout;
+            AssertPtrReturnVoid(pLayoutWelcome);
+            {
+                /* Invent pixel metric: */
+                const int iMetric = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 4;
+
+                /* Configure layout: */
+                pLayoutWelcome->setContentsMargins(iMetric, 0, 0, 0);
+                pLayoutWelcome->setSpacing(10);
+
+                /* Create welcome text label: */
+                m_pLabelToolsPaneText = new QILabel;
+                AssertPtrReturnVoid(m_pLabelToolsPaneText);
+                {
+                    /* Configure label: */
+                    m_pLabelToolsPaneText->setWordWrap(true);
+                    m_pLabelToolsPaneText->useSizeHintForWidth(200);
+                    m_pLabelToolsPaneText->setAlignment(Qt::AlignLeading | Qt::AlignTop);
+                    m_pLabelToolsPaneText->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+
+                    /* Add into layout: */
+                    pLayoutWelcome->addWidget(m_pLabelToolsPaneText);
+                }
+
+                /* Create picture label: */
+                QLabel *pLabelPicture = new QLabel;
+                AssertPtrReturnVoid(pLabelPicture);
+                {
+                    /* Configure label: */
+                    const QIcon icon = UIIconPool::iconSet(":/tools_200px.png");
+                    pLabelPicture->setPixmap(icon.pixmap(QSize(200, 200)));
+                    pLabelPicture->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+
+                    /* Add into layout: */
+                    pLayoutWelcome->addWidget(pLabelPicture);
+                    pLayoutWelcome->setAlignment(pLabelPicture, Qt::AlignHCenter | Qt::AlignTop);
+                }
+
+                /* Add into layout: */
+                pMainLayout->addLayout(pLayoutWelcome);
+            }
+
+            /* Create widget layout: */
+            m_pLayoutWidget = new QVBoxLayout(m_pToolsPane);
+            AssertPtrReturnVoid(m_pLayoutWidget);
+            {
+                /* Add into layout: */
+                pMainLayout->addLayout(m_pLayoutWidget);
+            }
+
+            /* Add stretch: */
+            pMainLayout->addStretch();
+        }
+
+        /* Add into the stack: */
+        addWidget(m_pToolsPane);
+    }
+}
+
 
 /*********************************************************************************************************************************
@@ -248,4 +722,19 @@
 }
 
+void UIDesktopPane::setToolsPaneText(const QString &strText)
+{
+    m_pDesktopPrivate->setToolsPaneText(strText);
+}
+
+void UIDesktopPane::addToolDescription(QAction *pAction, const QString &strDescription)
+{
+    m_pDesktopPrivate->addToolDescription(pAction, strDescription);
+}
+
+void UIDesktopPane::removeToolDescriptions()
+{
+    m_pDesktopPrivate->removeToolDescriptions();
+}
+
 #include "UIDesktopPane.moc"
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIDesktopPane.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIDesktopPane.h	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIDesktopPane.h	(revision 68235)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2010-2016 Oracle Corporation
+ * Copyright (C) 2010-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -23,4 +23,5 @@
 
 /* Forward declarations: */
+class QAction;
 class UIDesktopPanePrivate;
 
@@ -45,4 +46,13 @@
     void updateDetailsError(const QString &strError);
 
+    /** Defines a tools pane welcome @a strText. */
+    void setToolsPaneText(const QString &strText);
+    /** Add a tool element.
+      * @param  pAction         Brings tool action reference.
+      * @param  strDescription  Brings the tool description. */
+    void addToolDescription(QAction *pAction, const QString &strDescription);
+    /** Removes all tool elements. */
+    void removeToolDescriptions();
+
 private:
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 68235)
@@ -1159,36 +1159,4 @@
     setWindowTitle(strTitle);
 
-    /* Translate Machine Tools welcome screen: */
-    m_pPaneToolsMachine->setDetailsText(
-        tr("<h3>Welcome to VirtualBox!</h3>"
-           "<p>The left part of this window is a list of all virtual machines "
-           "and virtual machine groups on your computer. "
-           "<img src=:/welcome.png align=right/></p>"
-           "<p>The right part of this window represents a set of tools "
-           "you have opened for the currently chosen machine. "
-           "For more tools check the corresponding menu at the right side "
-           "of the main tool bar located at the top of the window.</p>"
-           "<p>You can press the <b>%1</b> key to get instant help, "
-           "or visit "
-           "<a href=https://www.virtualbox.org>www.virtualbox.org</a> "
-           "for the latest information and news.</p>")
-           .arg(QKeySequence(QKeySequence::HelpContents).toString(QKeySequence::NativeText)));
-
-    /* Translate Global Tools welcome screen: */
-    m_pPaneToolsGlobal->setDetailsText(
-        tr("<h3>Welcome to VirtualBox!</h3>"
-           "<p>This window represents a set of global tools "
-           "you have opened. They are not related to any particular machine "
-           "but to whole VirtualBox instead. This list will be extended with "
-           "new tools in the future releases. "
-           "<img src=:/welcome.png align=right/></p>"
-           "For more tools check the corresponding menu at the right side "
-           "of the main tool bar located at the top of the window.</p>"
-           "<p>You can press the <b>%1</b> key to get instant help, "
-           "or visit "
-           "<a href=https://www.virtualbox.org>www.virtualbox.org</a> "
-           "for the latest information and news.</p>")
-           .arg(QKeySequence(QKeySequence::HelpContents).toString(QKeySequence::NativeText)));
-
     /* Make sure details and snapshot panes are updated: */
     sltHandleChooserPaneIndexChange(false /* update details? */, false /* update snapshots? */);
@@ -1940,5 +1908,5 @@
 #endif
 
-                    /* Prepare Chooser-pane: */
+                    /* Create Chooser-pane: */
                     m_pPaneChooser = new UIGChooser(this);
                     AssertPtrReturnVoid(m_pPaneChooser);
@@ -1948,5 +1916,5 @@
                     }
 
-                    /* Prepare Machine Tools-pane: */
+                    /* Create Machine Tools-pane: */
                     m_pPaneToolsMachine = new UIToolsPaneMachine(actionPool());
                     AssertPtrReturnVoid(m_pPaneToolsMachine);
@@ -1964,5 +1932,5 @@
                 }
 
-                /* Prepare Global Tools-pane: */
+                /* Create Global Tools-pane: */
                 m_pPaneToolsGlobal = new UIToolsPaneGlobal(actionPool());
                 AssertPtrReturnVoid(m_pPaneToolsGlobal);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.cpp	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.cpp	(revision 68235)
@@ -22,4 +22,5 @@
 /* Qt includes: */
 # include <QStackedLayout>
+# include <QUuid>
 
 /* GUI includes */
@@ -37,5 +38,5 @@
 
 UIToolsPaneGlobal::UIToolsPaneGlobal(UIActionPool *pActionPool, QWidget *pParent /* = 0 */)
-    : QWidget(pParent)
+    : QIWithRetranslateUI<QWidget>(pParent)
     , m_pActionPool(pActionPool)
     , m_pLayout(0)
@@ -169,5 +170,5 @@
     /* Update desktop pane: */
     AssertPtrReturnVoid(m_pPaneDesktop);
-    m_pPaneDesktop->updateDetailsText(strText);
+    m_pPaneDesktop->setToolsPaneText(strText);
 }
 
@@ -179,4 +180,44 @@
 }
 
+void UIToolsPaneGlobal::retranslateUi()
+{
+    /* Translate Global Tools welcome screen: */
+    setDetailsText(
+        tr("<h3>Welcome to VirtualBox!</h3>"
+           "<p>This window represents a set of global tools "
+           "which are currently opened (or can be opened). "
+           "They are not related to any particular machine but "
+           "to whole VirtualBox instead. For list of currently "
+           "available tools check the corresponding menu at the right "
+           "side of the main tool bar located at the top of the window. "
+           "This list will be extended with new tools in the future releases.</p>"
+           "<p>You can press the <b>%1</b> key to get instant help, or visit "
+           "<a href=https://www.virtualbox.org>www.virtualbox.org</a> "
+           "for the latest information and news.</p>")
+           .arg(QKeySequence(QKeySequence::HelpContents).toString(QKeySequence::NativeText)));
+
+    /* Wipe out the tool descriptions: */
+    m_pPaneDesktop->removeToolDescriptions();
+
+    /* Add tool descriptions: */
+    QAction *pAction1 = m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_VirtualMediaManager);
+    m_pPaneDesktop->addToolDescription(pAction1,
+                                       tr("Tool to observe virtual storage media. "
+                                          "Reflects all the chains of <u>virtual disks</u> you have registered "
+                                          "(per each storage type) within your virtual machines and allows for media "
+                                          "manipulations like possibility to <u>copy</u>, <u>remove</u>, <u>release</u> "
+                                          "(detach from VMs it currently attached to) and observe their properties. "
+                                          "Allows to <u>edit</u> medium attributes like <u>type</u>, "
+                                          "<u>location/name</u>, <u>description</u> and <u>size</u> (for dynamical storages "
+                                          "only)."));
+    QAction *pAction2 = m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_HostNetworkManager);
+    m_pPaneDesktop->addToolDescription(pAction2,
+                                       tr("Tool to control host-only network interfaces. "
+                                          "Reflects <u>host-only networks</u>, their DHCP servers and allows "
+                                          "for network manipulations like possibility to <u>create</u>, <u>remove</u> "
+                                          "and observe their properties. Allows to <u>edit</u> various "
+                                          "<u>attributes</u> for host-only interface and corresponding DHCP server."));
+}
+
 void UIToolsPaneGlobal::prepare()
 {
@@ -192,4 +233,7 @@
     /* Create desktop pane: */
     openTool(ToolTypeGlobal_Desktop);
+
+    /* Apply language settings: */
+    retranslateUi();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.h	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.h	(revision 68235)
@@ -21,4 +21,7 @@
 /* Qt includes: */
 #include <QWidget>
+
+/* GUI includes: */
+#include "QIWithRetranslateUI.h"
 
 /* Forward declarations: */
@@ -48,5 +51,5 @@
 
 /** QWidget subclass representing container for tool panes. */
-class UIToolsPaneGlobal : public QWidget
+class UIToolsPaneGlobal : public QIWithRetranslateUI<QWidget>
 {
     Q_OBJECT;
@@ -72,4 +75,9 @@
     /** Defines @a strError and switches to error details pane. */
     void setDetailsError(const QString &strError);
+
+protected:
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */;
 
 private:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneMachine.cpp	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneMachine.cpp	(revision 68235)
@@ -22,4 +22,5 @@
 /* Qt includes: */
 # include <QStackedLayout>
+# include <QUuid>
 
 /* GUI includes */
@@ -37,5 +38,5 @@
 
 UIToolsPaneMachine::UIToolsPaneMachine(UIActionPool *pActionPool, QWidget *pParent /* = 0 */)
-    : QWidget(pParent)
+    : QIWithRetranslateUI<QWidget>(pParent)
     , m_pActionPool(pActionPool)
     , m_pLayout(0)
@@ -173,5 +174,5 @@
     /* Update desktop pane: */
     AssertPtrReturnVoid(m_pPaneDesktop);
-    m_pPaneDesktop->updateDetailsText(strText);
+    m_pPaneDesktop->setToolsPaneText(strText);
 }
 
@@ -197,4 +198,40 @@
 }
 
+void UIToolsPaneMachine::retranslateUi()
+{
+    /* Translate Machine Tools welcome screen: */
+    setDetailsText(
+        tr("<h3>Welcome to VirtualBox!</h3>"
+           "<p>The left part of this window is a list of all virtual "
+           "machines and virtual machine groups on your computer.</p>"
+           "<p>The right part of this window represents a set of "
+           "tools which are currently opened (or can be opened) for "
+           "the currently chosen machine. For list of currently "
+           "available tools check the corresponding menu at the right "
+           "side of the main tool bar located at the top of the window. "
+           "This list will be extended with new tools in the future releases.</p>"
+           "<p>You can press the <b>%1</b> key to get instant help, or visit "
+           "<a href=https://www.virtualbox.org>www.virtualbox.org</a> "
+           "for the latest information and news.</p>")
+           .arg(QKeySequence(QKeySequence::HelpContents).toString(QKeySequence::NativeText)));
+
+    /* Wipe out the tool descriptions: */
+    m_pPaneDesktop->removeToolDescriptions();
+
+    /* Add tool descriptions: */
+    QAction *pAction1 = m_pActionPool->action(UIActionIndexST_M_Tools_M_Machine_Details);
+    m_pPaneDesktop->addToolDescription(pAction1,
+                                       tr("Tool to observe virtual machine (VM) details. "
+                                          "Reflects groups of <u>properties</u> for the currently chosen VM and allows "
+                                          "for basic manipulations on few of them (like the machine storage devices)."));
+    QAction *pAction2 = m_pActionPool->action(UIActionIndexST_M_Tools_M_Machine_Snapshots);
+    m_pPaneDesktop->addToolDescription(pAction2,
+                                       tr("Tool to control virtual machine (VM) snapshots. "
+                                          "Reflects <u>snapshots</u> created for the currently chosen VM and allows "
+                                          "for snapshot manipulations like possibility to <u>create</u>, <u>remove</u>, "
+                                          "<u>restore</u> (make current) and observe their properties. Allows to "
+                                          "<u>edit</u> snapshot attributes like <u>name</u> and <u>description</u>."));
+}
+
 void UIToolsPaneMachine::prepare()
 {
@@ -210,4 +247,7 @@
     /* Create desktop pane: */
     openTool(ToolTypeMachine_Desktop);
+
+    /* Apply language settings: */
+    retranslateUi();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneMachine.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneMachine.h	(revision 68234)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneMachine.h	(revision 68235)
@@ -21,4 +21,7 @@
 /* Qt includes: */
 #include <QWidget>
+
+/* GUI includes: */
+#include "QIWithRetranslateUI.h"
 
 /* Forward declarations: */
@@ -48,5 +51,5 @@
 
 /** QWidget subclass representing container for tool panes. */
-class UIToolsPaneMachine : public QWidget
+class UIToolsPaneMachine : public QIWithRetranslateUI<QWidget>
 {
     Q_OBJECT;
@@ -90,4 +93,9 @@
     void setMachine(const CMachine &comMachine);
 
+protected:
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */;
+
 private:
 
