[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [wacomtablet] src/kcmodule: Updated express button assignment UI.
From:       Alexander Maret-Huskinson <alex () maret ! de>
Date:       2013-02-28 21:10:44
Message-ID: 20130228211044.1224FA604F () git ! kde ! org
[Download RAW message or body]

Git commit 32cd4c04ef6be701ced02762d4ea069426e91d18 by Alexander Maret-Huskinson.
Committed on 28/02/2013 at 22:07.
Pushed by marethuskinson into branch 'master'.

Updated express button assignment UI.

* Replaced all drop down menus with the new button action selector widget.
* Stabilized UI layout, it now keeps stable even when widgets are hidden.
* Fixed a bug in the button action selection widget where number keys would be \
interpreted as mouse buttons.

M  +3    -1    src/kcmodule/buttonactionselectionwidget.cpp
M  +146  -273  src/kcmodule/padbuttonwidget.cpp
M  +6    -83   src/kcmodule/padbuttonwidget.h
M  +431  -823  src/kcmodule/padbuttonwidget.ui

http://commits.kde.org/wacomtablet/32cd4c04ef6be701ced02762d4ea069426e91d18

diff --git a/src/kcmodule/buttonactionselectionwidget.cpp \
b/src/kcmodule/buttonactionselectionwidget.cpp index b5052a6..7dcabe1 100644
--- a/src/kcmodule/buttonactionselectionwidget.cpp
+++ b/src/kcmodule/buttonactionselectionwidget.cpp
@@ -132,7 +132,9 @@ void ButtonActionSelectionWidget::onMouseSelectionChanged(int \
index)  
 void ButtonActionSelectionWidget::onShortcutChanged(QKeySequence sequence)
 {
-    setShortcut(ButtonShortcut(sequence.toString()));
+    // By adding the "key" modifier, we make sure that shortcuts
+    // like "1" do not get mistaken as a mouse button action.
+    setShortcut(ButtonShortcut(QString::fromLatin1("key \
%1").arg(sequence.toString())));  }
 
 
diff --git a/src/kcmodule/padbuttonwidget.cpp b/src/kcmodule/padbuttonwidget.cpp
index 0d727a4..25b637f 100644
--- a/src/kcmodule/padbuttonwidget.cpp
+++ b/src/kcmodule/padbuttonwidget.cpp
@@ -21,6 +21,7 @@
 #include "ui_padbuttonwidget.h"
 
 #include "buttonactionselectiondialog.h"
+#include "buttonactionselectorwidget.h"
 #include "profilemanagement.h"
 
 // common includes
@@ -53,18 +54,17 @@
 using namespace Wacom;
 
 /*
- * Static class members.
- */
-const char* PadButtonWidget::LABEL_PROPERTY_KEYSEQUENCE = "KeySequence";
-
-
-/*
  * D-Pointer class for private members.
  */
 namespace Wacom {
     class PadButtonWidgetPrivate {
         public:
-            std::auto_ptr<Ui::PadButtonWidget>  ui;
+            PadButtonWidgetPrivate() : ui(new Ui::PadButtonWidget) {}
+            ~PadButtonWidgetPrivate() {
+                delete ui;
+            }
+
+            Ui::PadButtonWidget* ui;
     };
 } // NAMESPACE
 
@@ -73,12 +73,8 @@ namespace Wacom {
 PadButtonWidget::PadButtonWidget(QWidget* parent)
         : QWidget(parent), d_ptr(new PadButtonWidgetPrivate)
 {
-    Q_D( PadButtonWidget );
-
-    d->ui = std::auto_ptr<Ui::PadButtonWidget>(new Ui::PadButtonWidget);
-    d->ui->setupUi( this );
-
-    init();
+    setupUi();
+    reloadWidget();
 }
 
 
@@ -88,109 +84,6 @@ PadButtonWidget::~PadButtonWidget()
 }
 
 
-void PadButtonWidget::init()
-{
-    Q_D( PadButtonWidget );
-
-    QDBusReply<QString> deviceModel  = \
                DBusTabletInterface::instance().getInformation(TabletInfo::TabletModel);
                
-    QDBusReply<QString> deviceId     = \
                DBusTabletInterface::instance().getInformation(TabletInfo::TabletId);
-
-    int padButtons = \
                DBusTabletInterface::instance().getInformationAsInt(TabletInfo::NumPadButtons);
                
-
-    QLabel    *buttonLabel;
-    QLabel    *actionLabel;
-    KComboBox *comboBox;
-
-    for (int i = 1;i < 11;i++) {
-        buttonLabel = d->ui->buttonGroupBox->findChild<QLabel \
                *>(QString::fromLatin1("button%1Label").arg(i));
-        actionLabel = d->ui->buttonGroupBox->findChild<QLabel \
                *>(QString::fromLatin1("button%1ActionLabel").arg(i));
-        comboBox    = d->ui->buttonGroupBox->findChild<KComboBox \
                *>(QString::fromLatin1("button%1ComboBox").arg(i));
-
-        if (!buttonLabel || !actionLabel || !comboBox) {
-            continue;
-        }
-
-        if (i <= padButtons) {
-            buttonLabel->setVisible(true);
-            actionLabel->setVisible(true);
-            fillComboBox(comboBox);
-            comboBox->setVisible(true);
-        } else {
-            buttonLabel->setVisible(false);
-            actionLabel->setVisible(false);
-            comboBox->setVisible(false);
-        }
-    }
-
-    QString padLayout = \
                DBusTabletInterface::instance().getInformationAsString(TabletInfo::ButtonLayout);
                
-    if (KStandardDirs::exists(KStandardDirs::locate("data", \
                QString::fromLatin1("wacomtablet/images/%1.png").arg(padLayout)))) {
-        d->ui->padImage->setPixmap(QPixmap(KStandardDirs::locate("data", \
                QString::fromLatin1("wacomtablet/images/%1.png").arg(padLayout))));
-    }
-
-    if (!DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasWheel)) \
                {
-        d->ui->wheelGroupBox->setVisible(false);
-    } else {
-        fillComboBox(d->ui->wheelUpComboBox);
-        fillComboBox(d->ui->wheelDnComboBox);
-        d->ui->wheelGroupBox->setVisible(true);
-    }
-
-    if (!DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasTouchRing)) \
                {
-        d->ui->tochRingGroupBox->setVisible(false);
-    } else {
-        fillComboBox(d->ui->ringUpComboBox);
-        fillComboBox(d->ui->ringDnComboBox);
-        d->ui->tochRingGroupBox->setVisible(true);
-    }
-
-    bool hasLeftTouchStrip = \
                DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasLeftTouchStrip);
                
-
-    if (!hasLeftTouchStrip) {
-        d->ui->stripLUpLabel->setVisible(false);
-        d->ui->stripLUpComboBox->setVisible(false);
-        d->ui->stripLUpActionLabel->setVisible(false);
-        d->ui->stripLDnLabel->setVisible(false);
-        d->ui->stripLDnComboBox->setVisible(false);
-        d->ui->stripLDnActionLabel->setVisible(false);
-    } else {
-        d->ui->stripLUpLabel->setVisible(true);
-        fillComboBox(d->ui->stripLUpComboBox);
-        d->ui->stripLUpComboBox->setVisible(true);
-        d->ui->stripLUpActionLabel->setVisible(true);
-        d->ui->stripLDnLabel->setVisible(true);
-        fillComboBox(d->ui->stripLDnComboBox);
-        d->ui->stripLDnComboBox->setVisible(true);
-        d->ui->stripLDnActionLabel->setVisible(true);
-    }
-
-    bool hasRightTouchStrip = \
                DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasRightTouchStrip);
                
-
-    if (!hasRightTouchStrip) {
-        d->ui->stripRUpLabel->setVisible(false);
-        d->ui->stripRUpComboBox->setVisible(false);
-        d->ui->stripRUpActionLabel->setVisible(false);
-        d->ui->stripRDnLabel->setVisible(false);
-        d->ui->stripRDnComboBox->setVisible(false);
-        d->ui->stripRDnActionLabel->setVisible(false);
-    } else {
-        d->ui->stripRUpLabel->setVisible(true);
-        fillComboBox(d->ui->stripRUpComboBox);
-        d->ui->stripRUpComboBox->setVisible(true);
-        d->ui->stripRUpActionLabel->setVisible(true);
-        d->ui->stripRDnLabel->setVisible(true);
-        fillComboBox(d->ui->stripRDnComboBox);
-        d->ui->stripRDnComboBox->setVisible(true);
-        d->ui->stripRDnActionLabel->setVisible(true);
-    }
-
-    if (hasLeftTouchStrip || hasRightTouchStrip) {
-        d->ui->tochStripGroupBox->setVisible(true);
-    } else {
-        d->ui->tochStripGroupBox->setVisible(false);
-    }
-}
-
-
 void PadButtonWidget::saveToProfile()
 {
     Q_D( PadButtonWidget );
@@ -199,28 +92,48 @@ void PadButtonWidget::saveToProfile()
     DeviceProfile      padProfile        = \
profileManagement->loadDeviceProfile(DeviceType::Pad);  
     // save button shortcuts
-    QLabel *buttonActionLabel;
+    ButtonActionSelectorWidget* buttonSelector;
 
     for (int i = 1 ; i < 11 ; ++i) {
-        buttonActionLabel = d->ui->buttonGroupBox->findChild<QLabel \
                *>(QString::fromLatin1("button%1ActionLabel").arg(i));
-        padProfile.setButton(i, getButtonActionShortcut(buttonActionLabel));
+        buttonSelector = \
this->findChild<ButtonActionSelectorWidget*>(QString::fromLatin1("button%1ActionSelector").arg(i));
 +
+        if (buttonSelector && buttonSelector->isVisible()) {
+            padProfile.setButton(i, buttonSelector->getShortcut().toString());
+        }
     }
 
     // save strip shortcuts
-    padProfile.setProperty(Property::StripLeftUp, \
                getButtonActionShortcut(d->ui->stripLUpActionLabel));
-    padProfile.setProperty(Property::StripLeftDown, \
                getButtonActionShortcut(d->ui->stripLDnActionLabel));
-    padProfile.setProperty(Property::StripRightUp, \
                getButtonActionShortcut(d->ui->stripRUpActionLabel));
-    padProfile.setProperty(Property::StripRightDown, \
getButtonActionShortcut(d->ui->stripRDnActionLabel)); +    if \
(d->ui->touchStripGroupBox->isVisible()) { +        if \
(d->ui->leftStripWidget->isVisible()) { +            \
padProfile.setProperty(Property::StripLeftUp,    \
d->ui->leftStripUpSelector->getShortcut().toString()); +            \
padProfile.setProperty(Property::StripLeftDown,  \
d->ui->leftStripDownSelector->getShortcut().toString()); +        }
 
-    // save wheel and ring shortcuts
-    if (d->ui->ringUpComboBox->isVisible()) {
-        padProfile.setProperty(Property::AbsWheelUp, \
                getButtonActionShortcut(d->ui->ringUpActionLabel));
-        padProfile.setProperty(Property::AbsWheelDown, \
getButtonActionShortcut(d->ui->ringDnActionLabel)); +        if \
(d->ui->rightStripWidget->isVisible()) { +            \
padProfile.setProperty(Property::StripRightUp,   \
d->ui->rightStripUpSelector->getShortcut().toString()); +            \
padProfile.setProperty(Property::StripRightDown, \
d->ui->rightStripDownSelector->getShortcut().toString()); +        }
     }
 
-    if (d->ui->wheelUpComboBox->isVisible()) {
-        padProfile.setProperty(Property::AbsWheelUp, \
                getButtonActionShortcut(d->ui->wheelUpActionLabel));
-        padProfile.setProperty(Property::AbsWheelDown, \
getButtonActionShortcut(d->ui->wheelDnActionLabel)); +    // save wheel and ring \
shortcuts +    if (d->ui->touchRingGroupBox->isVisible() || \
d->ui->wheelGroupBox->isVisible()) { +        // ring and wheel shortcuts are treated \
the same but only one value may be written, +        // as the other one could be \
empty. Use whichever value we can get our hands on first. +        if \
(d->ui->ringUpSelector->getShortcut().isSet()) { +            \
padProfile.setProperty(Property::AbsWheelUp,   \
d->ui->ringUpSelector->getShortcut().toString()); +            \
padProfile.setProperty(Property::AbsWheelUp,   \
d->ui->ringUpSelector->getShortcut().toString()); +        } else {
+            padProfile.setProperty(Property::AbsWheelUp,   \
d->ui->wheelUpSelector->getShortcut().toString()); +            \
padProfile.setProperty(Property::AbsWheelUp,   \
d->ui->wheelUpSelector->getShortcut().toString()); +        }
+
+        if (d->ui->ringDownSelector->getShortcut().isSet()) {
+            padProfile.setProperty(Property::AbsWheelDown, \
d->ui->ringDownSelector->getShortcut().toString()); +            \
padProfile.setProperty(Property::AbsWheelDown, \
d->ui->ringDownSelector->getShortcut().toString()); +        } else {
+            padProfile.setProperty(Property::AbsWheelDown, \
d->ui->wheelDownSelector->getShortcut().toString()); +            \
padProfile.setProperty(Property::AbsWheelDown, \
d->ui->wheelDownSelector->getShortcut().toString()); +        }
     }
 
     profileManagement->saveDeviceProfile(padProfile);
@@ -236,197 +149,157 @@ void PadButtonWidget::loadFromProfile()
     QString            propertyValue;
 
     // set button shortcuts
-    KComboBox *buttonComboBox;
-    QLabel    *buttonActionLabel;
+    ButtonActionSelectorWidget* buttonSelector;
 
     for (int i = 1;i < 11 ;i++) {
-        buttonActionLabel = d->ui->buttonGroupBox->findChild<QLabel \
                *>(QString::fromLatin1("button%1ActionLabel").arg(i));
-        buttonComboBox    = d->ui->buttonGroupBox->findChild<KComboBox \
                *>(QString::fromLatin1("button%1ComboBox").arg(i));
-        propertyValue     = padProfile.getButton(i);
+        buttonSelector = \
this->findChild<ButtonActionSelectorWidget*>(QString::fromLatin1("button%1ActionSelector").arg(i));
 +        propertyValue  = padProfile.getButton(i);
 
-        setButtonActionShortcut(buttonComboBox, buttonActionLabel, propertyValue);
+        if (buttonSelector) {
+            buttonSelector->setShortcut(ButtonShortcut(propertyValue));
+        }
     }
 
     // set wheel and ring shortcuts
     propertyValue = padProfile.getProperty(Property::AbsWheelUp);
-    setButtonActionShortcut(d->ui->wheelUpComboBox, d->ui->wheelUpActionLabel, \
                propertyValue);
-    setButtonActionShortcut(d->ui->ringUpComboBox, d->ui->ringUpActionLabel, \
propertyValue); +    \
d->ui->wheelUpSelector->setShortcut(ButtonShortcut(propertyValue)); +    \
d->ui->ringUpSelector->setShortcut(ButtonShortcut(propertyValue));  
     propertyValue = padProfile.getProperty(Property::AbsWheelDown);
-    setButtonActionShortcut(d->ui->wheelDnComboBox, d->ui->wheelDnActionLabel, \
                propertyValue);
-    setButtonActionShortcut(d->ui->ringDnComboBox, d->ui->ringDnActionLabel, \
propertyValue); +    \
d->ui->wheelDownSelector->setShortcut(ButtonShortcut(propertyValue)); +    \
d->ui->ringDownSelector->setShortcut(ButtonShortcut(propertyValue));  
     // set strip shortcuts
-    propertyValue = padProfile.getProperty(Property::StripLeftDown);
-    setButtonActionShortcut(d->ui->stripLDnComboBox, d->ui->stripLDnActionLabel, \
                propertyValue);
-
     propertyValue = padProfile.getProperty(Property::StripLeftUp);
-    setButtonActionShortcut(d->ui->stripLUpComboBox, d->ui->stripLUpActionLabel, \
propertyValue); +    \
d->ui->leftStripUpSelector->setShortcut(ButtonShortcut(propertyValue));  
-    propertyValue = padProfile.getProperty(Property::StripRightDown);
-    setButtonActionShortcut(d->ui->stripRDnComboBox, d->ui->stripRDnActionLabel, \
propertyValue); +    propertyValue = padProfile.getProperty(Property::StripLeftDown);
+    d->ui->leftStripDownSelector->setShortcut(ButtonShortcut(propertyValue));
 
     propertyValue = padProfile.getProperty(Property::StripRightUp);
-    setButtonActionShortcut(d->ui->stripRUpComboBox, d->ui->stripRUpActionLabel, \
                propertyValue);
-}
+    d->ui->rightStripUpSelector->setShortcut(ButtonShortcut(propertyValue));
 
-void PadButtonWidget::reloadWidget()
-{
-    init();
+    propertyValue = padProfile.getProperty(Property::StripRightDown);
+    d->ui->rightStripDownSelector->setShortcut(ButtonShortcut(propertyValue));
 }
 
 
-
-void PadButtonWidget::selectKeyFunction(int selection)
+void PadButtonWidget::reloadWidget()
 {
     Q_D( PadButtonWidget );
 
-    QObject* sender = const_cast<QObject*>(QObject::sender());
-
-    if (!sender) {
-        kWarning() << QLatin1String("PadButtonWidget::selectKeyFunction() was called \
                manually but it should only be called by Qt's signal-slot \
                mechanism!");
-        return;
-    }
-
-    QString buttonActionComboBoxName = sender->objectName();
-    QString buttonActionLabelName = buttonActionComboBoxName;
-    buttonActionLabelName.replace( QLatin1String( "ComboBox" ), QLatin1String( \
"ActionLabel" ) ); +    QDBusReply<QString> deviceModel  = \
DBusTabletInterface::instance().getInformation(TabletInfo::TabletModel); +    \
QDBusReply<QString> deviceId     = \
DBusTabletInterface::instance().getInformation(TabletInfo::TabletId);  
-    KComboBox* buttonActionComboBox = d->ui->buttonGroupBox->findChild<KComboBox \
                *>(buttonActionComboBoxName);
-    QLabel*    buttonActionLabel    = d->ui->buttonGroupBox->findChild<QLabel \
*>(buttonActionLabelName); +    int padButtons = \
DBusTabletInterface::instance().getInformationAsInt(TabletInfo::NumPadButtons);  
-    if (!buttonActionLabel || !buttonActionComboBox) {
-        buttonActionComboBox = d->ui->tochStripGroupBox->findChild<KComboBox \
                *>(buttonActionComboBoxName);
-        buttonActionLabel    = d->ui->tochStripGroupBox->findChild<QLabel \
*>(buttonActionLabelName); +    QLabel*                     buttonLabel;
+    ButtonActionSelectorWidget* buttonSelector;
 
-        if (!buttonActionLabel || !buttonActionComboBox) {
-            buttonActionComboBox = d->ui->tochRingGroupBox->findChild<KComboBox \
                *>(buttonActionComboBoxName);
-            buttonActionLabel    = d->ui->tochRingGroupBox->findChild<QLabel \
*>(buttonActionLabelName); +    for (int i = 1;i < 11;i++) {
+        buttonSelector = \
this->findChild<ButtonActionSelectorWidget*>(QString::fromLatin1("button%1ActionSelector").arg(i));
 +        buttonLabel    = this->findChild<QLabel \
*>(QString::fromLatin1("button%1Label").arg(i));  
-            if (!buttonActionLabel || !buttonActionComboBox) {
-                buttonActionComboBox = d->ui->wheelGroupBox->findChild<KComboBox \
                *>(buttonActionComboBoxName);
-                buttonActionLabel    = d->ui->wheelGroupBox->findChild<QLabel \
*>(buttonActionLabelName); +        if (!buttonSelector || !buttonLabel) {
+            continue;
+        }
 
-                if (!buttonActionLabel || !buttonActionComboBox) {
-                    kError() << "Internal Error: No ActionLabel/ActionComboBox pair \
                found!";
-                    return;
-                }
-            }
+        if (i <= padButtons) {
+            buttonLabel->setVisible(true);
+            buttonSelector->setVisible(true);
+        } else {
+            buttonLabel->setVisible(false);
+            buttonSelector->setVisible(false);
         }
     }
 
-    onButtonActionSelectionChanged(selection, *buttonActionComboBox, \
                *buttonActionLabel);
-}
-
-
-
-void PadButtonWidget::fillComboBox(KComboBox *comboBox)
-{
-    comboBox->clear();
-    comboBox->blockSignals(true);
-    comboBox->addItem(i18nc("Disable button function",       "Disabled"),  \
                PadButtonWidget::ActionDisabled);
-    comboBox->addItem(i18nc("Indicates an assigned action.", "Action..."), \
                PadButtonWidget::ActionSelected);
-    comboBox->blockSignals(false);
-}
-
-
-PadButtonWidget::PadButtonAction PadButtonWidget::getButtonAction(const \
                ButtonShortcut& shortcut) const
-{
-    return (shortcut.isSet() ? PadButtonWidget::ActionSelected : \
                PadButtonWidget::ActionDisabled);
-}
-
-
-const QString PadButtonWidget::getButtonActionShortcut(QLabel* label) const
-{
-    if (!label || !label->isVisible()) {
-        return QString();
+    QString padLayout = \
DBusTabletInterface::instance().getInformationAsString(TabletInfo::ButtonLayout); +   \
if (KStandardDirs::exists(KStandardDirs::locate("data", \
QString::fromLatin1("wacomtablet/images/%1.png").arg(padLayout)))) { +        \
d->ui->padImage->setPixmap(QPixmap(KStandardDirs::locate("data", \
QString::fromLatin1("wacomtablet/images/%1.png").arg(padLayout))));  }
 
-    return ButtonShortcut(label->property(LABEL_PROPERTY_KEYSEQUENCE).toString()).toString();
                
-}
-
+    bool hasLeftTouchStrip  = \
DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasLeftTouchStrip); \
+    bool hasRightTouchStrip = \
DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasRightTouchStrip); \
                
-const QString PadButtonWidget::getShortcutDisplayName(const ButtonShortcut& \
                shortcut) const
-{
-    QString displayName;
+    if (!hasLeftTouchStrip && !hasRightTouchStrip) {
+        d->ui->touchStripGroupBox->setVisible(false);
 
-    // lookup keystrokes from the global list of shortcuts
-    if (shortcut.isKeystroke()) {
-        QList< KGlobalShortcutInfo > globalShortcutList = \
KGlobalAccel::getGlobalShortcutsByKey(QKeySequence(shortcut.toQKeySequenceString())); \
+    } else { +        d->ui->touchStripGroupBox->setVisible(true);
+
+        // Hide the strip input widgets directly instead of
+        // their parent widget, to keep the layout stable.
+        // Hiding the parent widget will mess up the layout!
+        if (!hasLeftTouchStrip) {
+            d->ui->leftStripUpLabel->setVisible(false);
+            d->ui->leftStripUpSelector->setVisible(false);
+            d->ui->leftStripDownLabel->setVisible(false);
+            d->ui->leftStripDownSelector->setVisible(false);
+        } else {
+            d->ui->leftStripUpLabel->setVisible(true);
+            d->ui->leftStripUpSelector->setVisible(true);
+            d->ui->leftStripDownLabel->setVisible(true);
+            d->ui->leftStripDownSelector->setVisible(true);
+        }
 
-        if(!globalShortcutList.isEmpty()) {
-            displayName = globalShortcutList.at(0).uniqueName();
+        if (!hasRightTouchStrip) {
+            d->ui->rightStripUpLabel->setVisible(false);
+            d->ui->rightStripUpSelector->setVisible(false);
+            d->ui->rightStripDownLabel->setVisible(false);
+            d->ui->rightStripDownSelector->setVisible(false);
+        } else {
+            d->ui->rightStripUpLabel->setVisible(true);
+            d->ui->rightStripUpSelector->setVisible(true);
+            d->ui->rightStripDownLabel->setVisible(true);
+            d->ui->rightStripDownSelector->setVisible(true);
         }
     }
 
-    // use the standard display string if a name could not be determined by now
-    if (displayName.isEmpty()) {
-        displayName = shortcut.toDisplayString();
+    if (!DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasTouchRing)) \
{ +        d->ui->touchRingGroupBox->setVisible(false);
+    } else {
+        d->ui->touchRingGroupBox->setVisible(true);
     }
 
-    return displayName;
+    if (!DBusTabletInterface::instance().getInformationAsBool(TabletInfo::HasWheel)) \
{ +        d->ui->wheelGroupBox->setVisible(false);
+    } else {
+        d->ui->wheelGroupBox->setVisible(true);
+    }
 }
 
 
-void PadButtonWidget::onButtonActionSelectionChanged(int selection, KComboBox& \
combo, QLabel& label) +void PadButtonWidget::onButtonActionChanged()
 {
-    QPointer <ButtonActionSelectionDialog> selectionDialog = new \
                ButtonActionSelectionDialog(this);
-
-    // get the action associated with this selection
-    PadButtonAction action = (PadButtonAction)(combo.itemData(selection).toInt());
-
-    // determine new shortcut
-    ButtonShortcut previousShortcut(getButtonActionShortcut(&label));
-    ButtonShortcut shortcut(previousShortcut);
-
-    switch (action) {
-        case PadButtonWidget::ActionDisabled:
-            shortcut.clear();
-            break;
-
-        case PadButtonWidget::ActionSelected:
-            selectionDialog->setShortcut(previousShortcut);
-            selectionDialog->exec();
-            shortcut = selectionDialog->getShortcut();
-            break;
-    }
-
-    delete selectionDialog;
-
-    // update ui elements
-    setButtonActionShortcut(&combo, &label, shortcut.toString());
-
-    // signal change event if user changed something
-    if (shortcut != previousShortcut) {
-        emit changed();
-    }
+    emit changed();
 }
 
 
-
-bool PadButtonWidget::setButtonActionShortcut(KComboBox* combo, QLabel* label, const \
QString& shortcutSequence) const +void PadButtonWidget::setupUi()
 {
-    if (!combo || !label) {
-        return false;
-    }
-
-    ButtonShortcut shortcut(shortcutSequence);
-
-    // find combo box entry
-    int comboItemData = getButtonAction(shortcut);
-    int comboIndex    = combo->findData(comboItemData);
+    Q_D (PadButtonWidget);
 
-    if (comboIndex == -1) {
-        return false;
-    }
-
-    // update combo box and label
-    combo->blockSignals(true);
-    combo->setCurrentIndex(comboItemData);
-    combo->blockSignals(false);
-
-    label->setText(getShortcutDisplayName(shortcut));
-    label->setProperty(LABEL_PROPERTY_KEYSEQUENCE, shortcut.toString());
+    d->ui->setupUi( this );
 
-    return true;
+    connect ( d->ui->button1ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button2ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button3ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button4ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button5ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button6ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button7ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button8ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button9ActionSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->button10ActionSelector, SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +
+    connect ( d->ui->leftStripUpSelector,    SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->leftStripDownSelector,  SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->rightStripUpSelector,   SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->rightStripDownSelector, SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +
+    connect ( d->ui->ringUpSelector,         SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->ringDownSelector,       SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +
+    connect ( d->ui->wheelUpSelector,        SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) ); +    \
connect ( d->ui->wheelDownSelector,      SIGNAL \
(buttonActionChanged(ButtonShortcut)), this, SLOT (onButtonActionChanged()) );  }
diff --git a/src/kcmodule/padbuttonwidget.h b/src/kcmodule/padbuttonwidget.h
index 82a5a64..6c0fc95 100644
--- a/src/kcmodule/padbuttonwidget.h
+++ b/src/kcmodule/padbuttonwidget.h
@@ -49,14 +49,6 @@ class PadButtonWidget : public QWidget
 
 public:
     /**
-     * Enumeration for all available tablet pad button actions
-     */
-    enum PadButtonAction {
-        ActionDisabled,
-        ActionSelected
-    };
-
-    /**
       * default constructor
       *
       * @param profileManager Handles the connection to the config files
@@ -70,13 +62,6 @@ public:
     ~PadButtonWidget();
 
     /**
-      * Initialize and setup the widget.
-      *
-      * gets its information for the detected device from the "wacom_devicelist" \
                file
-      */
-    void init();
-
-    /**
       * Saves all values to the current profile
       */
     void saveToProfile();
@@ -95,88 +80,26 @@ public slots:
       */
     void loadFromProfile();
 
-    /**
-      * Opens a new dialogue for the buttons to select the button function.
-      * Fires the changed() signal afterwards to inform the main widget that unsaved \
                changes are available
-      *
-      * @param selection button index
-      * @see WacomInterface::PenButton Enumaration
-      */
-    void selectKeyFunction(int selection);
-
 signals:
     /**
       * Used to inform the main widget that unsaved changes in the current profile \
                are available
       */
     void changed();
 
-private:
-    /**
-     * The property name which is used to store a shortcut in a label.
-     */
-    static const char* LABEL_PROPERTY_KEYSEQUENCE;
+private slots:
 
     /**
-      * Fills the button selection combobox with all available values
-      * Used in this way to get no redundant strings in the ui file for
-      * any given translator. Thus reduce the strings necessary to translate.
-      *
-      * @param comboBox the combobox where the values are added to
-      */
-    void fillComboBox(KComboBox *comboBox);
-
-    /**
-     * Determines the button action the given shortcut represents.
-     *
-     * @param shortcut The shortcut to analyze.
-     *
-     * @return The associated button action.
+     * Called when a button action changed.
      */
-    PadButtonAction getButtonAction(const ButtonShortcut& shortcut) const;
+    void onButtonActionChanged();
 
-    /**
-     * Gets the shortcut sequence from the given action label in a format
-     * that can be stored in the device profile.
-     *
-     * @param label The label to get the shortcut sequence from.
-     *
-     * @return The shortcut as string.
-     */
-    const QString getButtonActionShortcut (QLabel* label) const;
 
-    /**
-     * Determines the display name of a shortcut. This is either the name
-     * of the global shortcut associated with this key sequence or the
-     * display string returned by \a ButtonShortcut.
-     *
-     * @param shortcut The shortcut to get the display name from.
-     *
-     * @return The shortcut's display name or an empty string if the shortcut is not \
                set.
-     */
-    const QString getShortcutDisplayName(const ButtonShortcut& shortcut) const;
-
-    /**
-     * This is called when the user selects a different entry from the
-     * pen button actions dropdown menu.
-     *
-     * @param selection The item number which was selected from the combo box.
-     * @param combo The action combo box which was changed.
-     * @param label The action label which belongs to this combo box.
-     */
-    void onButtonActionSelectionChanged(int selection, KComboBox& combo, QLabel& \
label); +private:
 
     /**
-     * Sets a shortcut on the given action label and updates the selection
-     * of the given combo box.
-     *
-     * @param combo The combo box to update.
-     * @param label The action label to set the shortcut on.
-     * @param shortcutSequence The shortcut to set.
-     *
-     * @return True if the shortcut was set and the combo box updated, else false.
+     * Sets up the UI. Should only be called once by the constructor.
      */
-    bool setButtonActionShortcut(KComboBox* combo, QLabel* label, const QString& \
                shortcutSequence) const;
-
+    void setupUi();
 
     Q_DECLARE_PRIVATE( PadButtonWidget )
     PadButtonWidgetPrivate *const d_ptr; //!< The D-Pointer of this class.
diff --git a/src/kcmodule/padbuttonwidget.ui b/src/kcmodule/padbuttonwidget.ui
index 7256934..cf8af09 100644
--- a/src/kcmodule/padbuttonwidget.ui
+++ b/src/kcmodule/padbuttonwidget.ui
@@ -6,10 +6,16 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>536</width>
-    <height>721</height>
+    <width>539</width>
+    <height>430</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <property name="windowTitle">
    <string>Pad Buttons</string>
   </property>
@@ -24,291 +30,315 @@
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout">
       <item>
-       <layout class="QFormLayout" name="formLayout">
+       <layout class="QFormLayout" name="leftButtonLayout">
         <item row="0" column="0">
          <widget class="QLabel" name="button1Label">
-          <property name="text">
-           <string>Button 1:</string>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="buddy">
-           <cstring>button1ComboBox</cstring>
+          <property name="text">
+           <string>Button 1</string>
           </property>
          </widget>
         </item>
-        <item row="0" column="1">
-         <widget class="KComboBox" name="button1ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 1</string>
-          </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+        <item row="1" column="0">
+         <widget class="QLabel" name="button2Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="QLabel" name="button1ActionLabel">
           <property name="text">
-           <string/>
+           <string>Button 2</string>
           </property>
          </widget>
         </item>
         <item row="2" column="0">
-         <widget class="QLabel" name="button2Label">
-          <property name="text">
-           <string>Button 2:</string>
+         <widget class="QLabel" name="button3Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="buddy">
-           <cstring>button2ComboBox</cstring>
+          <property name="text">
+           <string>Button 3</string>
           </property>
          </widget>
         </item>
-        <item row="2" column="1">
-         <widget class="KComboBox" name="button2ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 2</string>
-          </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+        <item row="3" column="0">
+         <widget class="QLabel" name="button4Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-         </widget>
-        </item>
-        <item row="3" column="1">
-         <widget class="QLabel" name="button2ActionLabel">
           <property name="text">
-           <string/>
+           <string>Button 4</string>
           </property>
          </widget>
         </item>
         <item row="4" column="0">
-         <widget class="QLabel" name="button3Label">
-          <property name="text">
-           <string>Button 3:</string>
+         <widget class="QLabel" name="button5Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="buddy">
-           <cstring>button3ComboBox</cstring>
+          <property name="text">
+           <string>Button 5</string>
           </property>
          </widget>
         </item>
-        <item row="4" column="1">
-         <widget class="KComboBox" name="button3ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 3</string>
+        <item row="5" column="1">
+         <spacer name="leftButtonHSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
           </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+          <property name="sizeType">
+           <enum>QSizePolicy::MinimumExpanding</enum>
           </property>
-         </widget>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>100</width>
+            <height>1</height>
+           </size>
+          </property>
+         </spacer>
         </item>
-        <item row="5" column="1">
-         <widget class="QLabel" name="button3ActionLabel">
-          <property name="text">
-           <string/>
+        <item row="0" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button1ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="6" column="0">
-         <widget class="QLabel" name="button4Label">
-          <property name="text">
-           <string>Button 4:</string>
-          </property>
-          <property name="buddy">
-           <cstring>button4ComboBox</cstring>
+        <item row="1" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button2ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="6" column="1">
-         <widget class="KComboBox" name="button4ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 4</string>
+        <item row="2" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button3ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button4ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="7" column="1">
-         <widget class="QLabel" name="button4ActionLabel">
-          <property name="text">
-           <string/>
+        <item row="4" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button5ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="8" column="0">
-         <widget class="QLabel" name="button5Label">
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="padImageLayout">
+        <property name="sizeConstraint">
+         <enum>QLayout::SetFixedSize</enum>
+        </property>
+        <item>
+         <widget class="QLabel" name="padImage">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>200</width>
+            <height>200</height>
+           </size>
+          </property>
           <property name="text">
-           <string>Button 5:</string>
+           <string/>
           </property>
-          <property name="buddy">
-           <cstring>button5ComboBox</cstring>
+          <property name="alignment">
+           <set>Qt::AlignCenter</set>
           </property>
          </widget>
         </item>
-        <item row="8" column="1">
-         <widget class="KComboBox" name="button5ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 5</string>
+        <item>
+         <spacer name="padImageVSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
           </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+          <property name="sizeType">
+           <enum>QSizePolicy::MinimumExpanding</enum>
           </property>
-         </widget>
-        </item>
-        <item row="9" column="1">
-         <widget class="QLabel" name="button5ActionLabel">
-          <property name="text">
-           <string/>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>0</width>
+            <height>0</height>
+           </size>
           </property>
-         </widget>
+         </spacer>
         </item>
        </layout>
       </item>
       <item>
-       <widget class="QLabel" name="padImage">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QFormLayout" name="formLayout_2">
+       <layout class="QFormLayout" name="rightButtonLayout">
         <item row="0" column="0">
          <widget class="QLabel" name="button6Label">
-          <property name="text">
-           <string>Button 6:</string>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="buddy">
-           <cstring>button6ComboBox</cstring>
+          <property name="text">
+           <string>Button 6</string>
           </property>
          </widget>
         </item>
-        <item row="0" column="1">
-         <widget class="KComboBox" name="button6ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 6</string>
-          </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+        <item row="1" column="0">
+         <widget class="QLabel" name="button7Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="QLabel" name="button6ActionLabel">
           <property name="text">
-           <string/>
+           <string>Button 7</string>
           </property>
          </widget>
         </item>
         <item row="2" column="0">
-         <widget class="QLabel" name="button7Label">
-          <property name="text">
-           <string>Button 7:</string>
+         <widget class="QLabel" name="button8Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="buddy">
-           <cstring>button7ComboBox</cstring>
+          <property name="text">
+           <string>Button 8</string>
           </property>
          </widget>
         </item>
-        <item row="2" column="1">
-         <widget class="KComboBox" name="button7ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 7</string>
-          </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+        <item row="3" column="0">
+         <widget class="QLabel" name="button9Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-         </widget>
-        </item>
-        <item row="3" column="1">
-         <widget class="QLabel" name="button7ActionLabel">
           <property name="text">
-           <string/>
+           <string>Button 9</string>
           </property>
          </widget>
         </item>
         <item row="4" column="0">
-         <widget class="QLabel" name="button8Label">
-          <property name="text">
-           <string>Button 8:</string>
-          </property>
-          <property name="buddy">
-           <cstring>button8ComboBox</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="1">
-         <widget class="KComboBox" name="button8ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 8</string>
+         <widget class="QLabel" name="button10Label">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+          <property name="text">
+           <string>Button 10</string>
           </property>
          </widget>
         </item>
         <item row="5" column="1">
-         <widget class="QLabel" name="button8ActionLabel">
-          <property name="text">
-           <string/>
+         <spacer name="rightButtonHSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
           </property>
-         </widget>
-        </item>
-        <item row="6" column="0">
-         <widget class="QLabel" name="button9Label">
-          <property name="text">
-           <string>Button 9:</string>
+          <property name="sizeType">
+           <enum>QSizePolicy::MinimumExpanding</enum>
           </property>
-          <property name="buddy">
-           <cstring>button9ComboBox</cstring>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>100</width>
+            <height>1</height>
+           </size>
           </property>
-         </widget>
+         </spacer>
         </item>
-        <item row="6" column="1">
-         <widget class="KComboBox" name="button9ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 9</string>
-          </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+        <item row="0" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button6ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="7" column="1">
-         <widget class="QLabel" name="button9ActionLabel">
-          <property name="text">
-           <string/>
+        <item row="1" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button7ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="8" column="0">
-         <widget class="QLabel" name="button10Label">
-          <property name="text">
-           <string>Button 10:</string>
-          </property>
-          <property name="buddy">
-           <cstring>button10ComboBox</cstring>
+        <item row="2" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button8ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="8" column="1">
-         <widget class="KComboBox" name="button10ComboBox">
-          <property name="toolTip">
-           <string>Set the action for Button 10</string>
-          </property>
-          <property name="maxVisibleItems">
-           <number>20</number>
+        <item row="3" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button9ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
-        <item row="9" column="1">
-         <widget class="QLabel" name="button10ActionLabel">
-          <property name="text">
-           <string/>
+        <item row="4" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" \
name="button10ActionSelector" native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
          </widget>
         </item>
@@ -318,269 +348,197 @@
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="tochStripGroupBox">
+    <widget class="QGroupBox" name="touchStripGroupBox">
      <property name="title">
       <string>Touch Strip</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_2">
-      <property name="leftMargin">
-       <number>10</number>
-      </property>
-      <property name="rightMargin">
-       <number>10</number>
-      </property>
-      <property name="horizontalSpacing">
-       <number>10</number>
-      </property>
-      <property name="verticalSpacing">
-       <number>5</number>
-      </property>
-      <item row="0" column="0">
-       <widget class="QLabel" name="stripLUpLabel">
-        <property name="text">
-         <string>Strip Left Up:</string>
-        </property>
-        <property name="buddy">
-         <cstring>stripLUpComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="1" colspan="2">
-       <widget class="KComboBox" name="stripLUpComboBox">
-        <property name="toolTip">
-         <string>Set the up action for the left strip</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QWidget" name="leftStripWidget" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
         </property>
+        <layout class="QFormLayout" name="formLayout">
+         <property name="margin">
+          <number>0</number>
+         </property>
+         <item row="0" column="0">
+          <widget class="QLabel" name="leftStripUpLabel">
+           <property name="text">
+            <string>Left Strip Up</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="Wacom::ButtonActionSelectorWidget" \
name="leftStripUpSelector" native="true"> +           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="leftStripDownLabel">
+           <property name="text">
+            <string>Left Strip Down</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="Wacom::ButtonActionSelectorWidget" \
name="leftStripDownSelector" native="true"> +           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
-      <item row="0" column="3">
-       <spacer name="horizontalSpacer">
+      <item>
+       <spacer name="stripHSpacer">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
         <property name="sizeHint" stdset="0">
          <size>
-          <width>296</width>
-          <height>20</height>
+          <width>200</width>
+          <height>1</height>
          </size>
         </property>
        </spacer>
       </item>
-      <item row="0" column="4">
-       <widget class="QLabel" name="stripRUpLabel">
-        <property name="text">
-         <string>Strip Right Up:</string>
-        </property>
-        <property name="buddy">
-         <cstring>stripRUpComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="5" colspan="2">
-       <widget class="KComboBox" name="stripRUpComboBox">
-        <property name="toolTip">
-         <string>Set the up action for the right strip</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1" colspan="2">
-       <widget class="QLabel" name="stripLUpActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-        <property name="buddy">
-         <cstring>stripLUpComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="5" colspan="2">
-       <widget class="QLabel" name="stripRUpActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-        <property name="buddy">
-         <cstring>stripRUpComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="0" colspan="2">
-       <widget class="QLabel" name="stripLDnLabel">
-        <property name="text">
-         <string>Strip Left Down:</string>
-        </property>
-        <property name="buddy">
-         <cstring>stripLDnComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="4" colspan="2">
-       <widget class="QLabel" name="stripRDnLabel">
-        <property name="text">
-         <string>Strip Right Down:</string>
-        </property>
-        <property name="buddy">
-         <cstring>stripRDnComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="6">
-       <widget class="KComboBox" name="stripRDnComboBox">
-        <property name="toolTip">
-         <string>Set the down action for the right strip</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="2">
-       <widget class="QLabel" name="stripLDnActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-        <property name="buddy">
-         <cstring>stripLDnComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="6">
-       <widget class="QLabel" name="stripRDnActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-        <property name="buddy">
-         <cstring>stripRDnComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="2">
-       <widget class="KComboBox" name="stripLDnComboBox">
-        <property name="toolTip">
-         <string>Set the down action for the left strip</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
+      <item>
+       <widget class="QWidget" name="rightStripWidget" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
         </property>
+        <layout class="QFormLayout" name="formLayout_2">
+         <property name="margin">
+          <number>0</number>
+         </property>
+         <item row="0" column="0">
+          <widget class="QLabel" name="rightStripUpLabel">
+           <property name="text">
+            <string>Right Strip Up</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="Wacom::ButtonActionSelectorWidget" \
name="rightStripUpSelector" native="true"> +           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="rightStripDownLabel">
+           <property name="text">
+            <string>Right Strip Down</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="Wacom::ButtonActionSelectorWidget" \
name="rightStripDownSelector" native="true"> +           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
      </layout>
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="tochRingGroupBox">
+    <widget class="QGroupBox" name="touchRingGroupBox">
      <property name="title">
       <string>Touch Ring</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_3">
-      <property name="leftMargin">
-       <number>10</number>
-      </property>
-      <property name="rightMargin">
-       <number>10</number>
-      </property>
-      <property name="horizontalSpacing">
-       <number>10</number>
-      </property>
-      <property name="verticalSpacing">
-       <number>5</number>
-      </property>
-      <item row="0" column="0">
-       <spacer name="horizontalSpacer_2">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>40</width>
-          <height>20</height>
-         </size>
+     <layout class="QHBoxLayout" name="horizontalLayout_3">
+      <item>
+       <layout class="QFormLayout" name="leftRingLayout">
+        <property name="fieldGrowthPolicy">
+         <enum>QFormLayout::ExpandingFieldsGrow</enum>
         </property>
-       </spacer>
+        <item row="0" column="0">
+         <widget class="QLabel" name="ringUpLabel">
+          <property name="text">
+           <string>Ring Up</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" name="ringUpSelector" \
native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
-      <item row="0" column="4">
-       <spacer name="horizontalSpacer_4">
+      <item>
+       <spacer name="ringHSpacer">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>124</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="0" column="8">
-       <spacer name="horizontalSpacer_3">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
         </property>
         <property name="sizeHint" stdset="0">
          <size>
-          <width>40</width>
-          <height>20</height>
+          <width>200</width>
+          <height>1</height>
          </size>
         </property>
        </spacer>
       </item>
-      <item row="0" column="7">
-       <widget class="KComboBox" name="ringDnComboBox">
-        <property name="toolTip">
-         <string>Set the down action for the touch ring</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="3">
-       <widget class="KComboBox" name="ringUpComboBox">
-        <property name="toolTip">
-         <string>Set the up action for the touch ring</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="2">
-       <widget class="QLabel" name="ringUpLabeL">
-        <property name="text">
-         <string>Ring Up:</string>
-        </property>
-        <property name="buddy">
-         <cstring>ringUpComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="5">
-       <widget class="QLabel" name="ringDnLabel">
-        <property name="text">
-         <string>Ring Down:</string>
-        </property>
-        <property name="buddy">
-         <cstring>ringDnComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="7">
-       <widget class="QLabel" name="ringDnActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="3">
-       <widget class="QLabel" name="ringUpActionLabel">
-        <property name="text">
-         <string/>
+      <item>
+       <layout class="QFormLayout" name="rightRingLayout">
+        <property name="fieldGrowthPolicy">
+         <enum>QFormLayout::ExpandingFieldsGrow</enum>
         </property>
-       </widget>
+        <item row="0" column="0">
+         <widget class="QLabel" name="ringDownLabel">
+          <property name="text">
+           <string>Ring Down</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" name="ringDownSelector" \
native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
      </layout>
     </widget>
@@ -590,124 +548,80 @@
      <property name="title">
       <string>Wheel</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_4">
-      <property name="leftMargin">
-       <number>10</number>
-      </property>
-      <property name="rightMargin">
-       <number>10</number>
-      </property>
-      <property name="horizontalSpacing">
-       <number>10</number>
-      </property>
-      <property name="verticalSpacing">
-       <number>5</number>
-      </property>
-      <item row="0" column="0">
-       <spacer name="horizontalSpacer_5">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>40</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
+     <layout class="QHBoxLayout" name="horizontalLayout_4">
+      <item>
+       <layout class="QFormLayout" name="leftWheelLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="wheelUpLabel">
+          <property name="text">
+           <string>Wheel Up</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" name="wheelUpSelector" \
native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
-      <item row="0" column="4">
-       <spacer name="horizontalSpacer_6">
+      <item>
+       <spacer name="wheelHSpacer">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>124</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="0" column="8">
-       <spacer name="horizontalSpacer_7">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
         </property>
         <property name="sizeHint" stdset="0">
          <size>
-          <width>40</width>
-          <height>20</height>
+          <width>200</width>
+          <height>1</height>
          </size>
         </property>
        </spacer>
       </item>
-      <item row="0" column="7">
-       <widget class="KComboBox" name="wheelDnComboBox">
-        <property name="toolTip">
-         <string>Set the down action for the wheel</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="3">
-       <widget class="KComboBox" name="wheelUpComboBox">
-        <property name="toolTip">
-         <string>Set the up action for the wheel</string>
-        </property>
-        <property name="maxVisibleItems">
-         <number>20</number>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="2">
-       <widget class="QLabel" name="wheelUpLabeL">
-        <property name="text">
-         <string comment="Action when the Wheel is used upwards">Up:</string>
-        </property>
-        <property name="buddy">
-         <cstring>wheelUpComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="5">
-       <widget class="QLabel" name="wheelDnLabel">
-        <property name="text">
-         <string comment="Action when the Wheel is used downwards">Down:</string>
-        </property>
-        <property name="buddy">
-         <cstring>wheelDnComboBox</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="7">
-       <widget class="QLabel" name="wheelDnActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="3">
-       <widget class="QLabel" name="wheelUpActionLabel">
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
+      <item>
+       <layout class="QFormLayout" name="rightWheelLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="wheelDownLabel">
+          <property name="text">
+           <string>Wheel Down</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="Wacom::ButtonActionSelectorWidget" name="wheelDownSelector" \
native="true"> +          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
      </layout>
     </widget>
    </item>
    <item>
-    <spacer name="verticalSpacer">
+    <spacer name="freeSpaceVSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>20</width>
-       <height>40</height>
+       <width>0</width>
+       <height>0</height>
       </size>
      </property>
     </spacer>
@@ -716,320 +630,14 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>KComboBox</class>
-   <extends>QComboBox</extends>
-   <header>kcombobox.h</header>
+   <class>Wacom::ButtonActionSelectorWidget</class>
+   <extends>QWidget</extends>
+   <header>buttonactionselectorwidget.h</header>
+   <container>1</container>
   </customwidget>
  </customwidgets>
- <tabstops>
-  <tabstop>button1ComboBox</tabstop>
-  <tabstop>button2ComboBox</tabstop>
-  <tabstop>button3ComboBox</tabstop>
-  <tabstop>button4ComboBox</tabstop>
-  <tabstop>button5ComboBox</tabstop>
-  <tabstop>button6ComboBox</tabstop>
-  <tabstop>button7ComboBox</tabstop>
-  <tabstop>button8ComboBox</tabstop>
-  <tabstop>button9ComboBox</tabstop>
-  <tabstop>button10ComboBox</tabstop>
-  <tabstop>stripLUpComboBox</tabstop>
-  <tabstop>stripLDnComboBox</tabstop>
-  <tabstop>stripRUpComboBox</tabstop>
-  <tabstop>stripRDnComboBox</tabstop>
-  <tabstop>ringUpComboBox</tabstop>
-  <tabstop>ringDnComboBox</tabstop>
- </tabstops>
  <resources/>
- <connections>
-  <connection>
-   <sender>stripLUpComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>214</x>
-     <y>364</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>331</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>stripLDnComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>214</x>
-     <y>418</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>387</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>stripRUpComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>516</x>
-     <y>364</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>632</x>
-     <y>337</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>stripRDnComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>516</x>
-     <y>418</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>631</x>
-     <y>385</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>ringDnComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>486</x>
-     <y>514</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>633</x>
-     <y>479</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>ringUpComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>194</x>
-     <y>514</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>2</x>
-     <y>476</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button6ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>511</x>
-     <y>65</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>631</x>
-     <y>57</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button7ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>511</x>
-     <y>116</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>632</x>
-     <y>116</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button8ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>511</x>
-     <y>167</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>631</x>
-     <y>177</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button9ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>511</x>
-     <y>218</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>634</x>
-     <y>230</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button10ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>511</x>
-     <y>269</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>632</x>
-     <y>288</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button5ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>159</x>
-     <y>269</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>290</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button4ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>159</x>
-     <y>218</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>2</x>
-     <y>232</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button3ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>159</x>
-     <y>167</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>178</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button2ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>100</x>
-     <y>114</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>3</x>
-     <y>114</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button1ComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>117</x>
-     <y>58</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>55</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>wheelUpComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>185</x>
-     <y>609</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>665</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>wheelDnComboBox</sender>
-   <signal>activated(int)</signal>
-   <receiver>PadButtonWidget</receiver>
-   <slot>selectKeyFunction(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>461</x>
-     <y>609</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>539</x>
-     <y>667</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
+ <connections/>
  <slots>
   <slot>selectKeyFunction(int)</slot>
  </slots>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic