bool ListViewEditor::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0: applyClicked(); break;
    case 1: columnClickable((bool)static_QUType_bool.get(_o+1)); break;
    case 2: columnDownClicked(); break;
    case 3: columnPixmapChosen(); break;
    case 4: columnPixmapDeleted(); break;
    case 5: columnResizable((bool)static_QUType_bool.get(_o+1)); break;
    case 6: columnTextChanged((const QString&)static_QUType_QString.get(_o+1)); break;
    case 7: columnUpClicked(); break;
    case 8: currentColumnChanged((QListBoxItem*)static_QUType_ptr.get(_o+1)); break;
    case 9: currentItemChanged((QListViewItem*)static_QUType_ptr.get(_o+1)); break;
    case 10: deleteColumnClicked(); break;
    case 11: itemColChanged((int)static_QUType_int.get(_o+1)); break;
    case 12: itemDeleteClicked(); break;
    case 13: itemDownClicked(); break;
    case 14: itemNewClicked(); break;
    case 15: itemNewSubClicked(); break;
    case 16: itemPixmapChoosen(); break;
    case 17: itemPixmapDeleted(); break;
    case 18: itemTextChanged((const QString&)static_QUType_QString.get(_o+1)); break;
    case 19: itemUpClicked(); break;
    case 20: itemLeftClicked(); break;
    case 21: itemRightClicked(); break;
    case 22: newColumnClicked(); break;
    case 23: okClicked(); break;
    case 24: initTabPage((const QString&)static_QUType_QString.get(_o+1)); break;
    case 25: emitItemRenamed((QListViewItem*)static_QUType_ptr.get(_o+1),(int)static_QUType_int.get(_o+2),(const QString&)static_QUType_QString.get(_o+3)); break;
    default:
	return ListViewEditorBase::qt_invoke( _id, _o );
    }
    return TRUE;
}
Exemplo n.º 2
0
void
TableView::mouseReleaseEvent(QMouseEvent* e)
{
    QModelIndex index = indexAt( e->pos() );
    TableItem* item = itemAt( e->pos() );

    if ( triggerButtonIsRight(e) && index.isValid() ) {
        Q_EMIT itemRightClicked(item);
    } else {
        QTreeView::mouseReleaseEvent(e);
    }
}
Exemplo n.º 3
0
ProgressPanel::ProgressPanel(const std::string& scriptName, Gui* gui)
    : QWidget(gui)
    , PanelWidget(scriptName, this, gui)
    , _imp( new ProgressPanelPrivate() )
{
    _imp->mainLayout = new QVBoxLayout(this);
    _imp->mainLayout->setContentsMargins(0, 0, 0, 0);
    _imp->mainLayout->setSpacing(0);
    _imp->headerContainer = new QWidget(this);
    _imp->headerLayout = new QHBoxLayout(_imp->headerContainer);
    _imp->headerLayout->setSpacing(0);
    // _imp->headerLayout->setContentsMargins(0, 0, 0, 0);
    _imp->mainLayout->addWidget(_imp->headerContainer);


    _imp->queueTasksCheckbox = new QCheckBox(tr("Queue Renders"), _imp->headerContainer);
    _imp->queueTasksCheckbox->setToolTip( NATRON_NAMESPACE::convertFromPlainText(tr("When checked, renders will be queued in the Progress Panel and will start only when all other prior renders are done. This does not apply to other tasks such as Tracking or analysis."), NATRON_NAMESPACE::WhiteSpaceNormal) );
    _imp->queueTasksCheckbox->setChecked( appPTR->getCurrentSettings()->isRenderQueuingEnabled() );
    QObject::connect( _imp->queueTasksCheckbox, SIGNAL(stateChanged(int)), this, SLOT(onQueueRendersCheckboxChecked()) );
    _imp->headerLayout->addWidget(_imp->queueTasksCheckbox);

    _imp->headerLayout->addSpacing( TO_DPIX(20) );

    _imp->removeTasksAfterFinishCheckbox = new QCheckBox(tr("Remove Finished Tasks"), _imp->headerContainer);
    _imp->removeTasksAfterFinishCheckbox->setToolTip( NATRON_NAMESPACE::convertFromPlainText(tr("When checked, finished tasks that can be paused"  " will be automatically removed from the task list when they are finished. When unchecked, the tasks may be restarted."), NATRON_NAMESPACE::WhiteSpaceNormal) );
    _imp->removeTasksAfterFinishCheckbox->setChecked(false);
    _imp->headerLayout->addWidget(_imp->removeTasksAfterFinishCheckbox);


    _imp->headerLayout->addStretch();

    std::vector<std::pair<QString, QIcon> > headerData;
    headerData.push_back(std::make_pair(tr("Node"), QIcon()));
    headerData.push_back(std::make_pair(tr("Progress"), QIcon()));
    headerData.push_back(std::make_pair(tr("Status"), QIcon()));
    headerData.push_back(std::make_pair(tr("Controls"), QIcon()));
    headerData.push_back(std::make_pair(tr("Time remaining"), QIcon()));
    headerData.push_back(std::make_pair(tr("Frame Range"), QIcon()));
    headerData.push_back(std::make_pair(tr("Task"), QIcon()));


    _imp->view = new TableView(getGui(), this);
    _imp->view->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
    _imp->model = TableModel::create(headerData.size(), TableModel::eTableModelTypeTable);
    _imp->view->setSortingEnabled(false);
    _imp->view->setTableModel(_imp->model);

    _imp->mainLayout->addWidget(_imp->view);

    QObject::connect( _imp->view, SIGNAL(itemRightClicked(QPoint, TableItemPtr)), this, SLOT(onItemRightClicked(QPoint, TableItemPtr)) );
   

    _imp->model->setHorizontalHeaderData(headerData);
    //_imp->view->header()->setResizeMode(QHeaderView::Fixed);
    _imp->view->header()->setStretchLastSection(true);
    _imp->view->header()->resizeSection( COL_TIME_REMAINING, TO_DPIX(150) );

    QItemSelectionModel* selModel = _imp->view->selectionModel();
    QObject::connect( selModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(onSelectionChanged(QItemSelection,QItemSelection)) );
    QObject::connect( this, SIGNAL(s_doProgressStartOnMainThread(NodePtr,QString,QString,bool)), this, SLOT(doProgressStartOnMainThread(NodePtr,QString,QString,bool)) );
    QObject::connect( this, SIGNAL(s_doProgressUpdateOnMainThread(ProgressTaskInfoPtr,double)), this, SLOT(doProgressOnMainThread(ProgressTaskInfoPtr,double)) );
    QObject::connect( this, SIGNAL(s_doProgressEndOnMainThread(NodePtr)), this, SLOT(doProgressEndOnMainThread(NodePtr)) );
}
Exemplo n.º 4
0
bool KrTreeWidget::event(QEvent * event)
{
    switch (event->type()) {
        // HACK: QT 4 Context menu key isn't handled properly
    case QEvent::ContextMenu: {
        QContextMenuEvent* ce = (QContextMenuEvent*) event;

        if (ce->reason() == QContextMenuEvent::Mouse) {
            QPoint pos = viewport()->mapFromGlobal(ce->globalPos());

            QTreeWidgetItem * item = itemAt(pos);
            int column = columnAt(pos.x());

            emit itemRightClicked(item, ce->globalPos(), column);
            return true;
        } else {
            if (currentItem()) {
                QRect r = visualItemRect(currentItem());
                QPoint p = viewport()->mapToGlobal(QPoint(r.x() + 5, r.y() + 5));

                emit itemRightClicked(currentItem(), p, currentColumn());
                return true;
            }
        }
    }
    break;
    case QEvent::KeyPress: {
        // HACK: QT 4 Ctrl+A bug fix: Ctrl+A doesn't work if QTreeWidget contains parent / child items
        //       Insert doesn't change the selections for multi selection modes
        QKeyEvent* ke = (QKeyEvent*) event;
        switch (ke->key()) {
        case Qt::Key_Insert: {
            if (ke->modifiers() != 0)
                break;

            QAbstractItemView::SelectionMode mode = selectionMode();

            if (mode != QAbstractItemView::ContiguousSelection && mode != QAbstractItemView::ExtendedSelection &&
                    mode != QAbstractItemView::MultiSelection)
                break;

            ke->accept();

            if (currentItem() == 0)
                return true;

            currentItem()->setSelected(!currentItem()->isSelected());
            return true;
        }
        case Qt::Key_A:
            if (ke->modifiers() == Qt::ControlModifier) {
                QAbstractItemView::SelectionMode mode = selectionMode();

                if (mode == QAbstractItemView::ContiguousSelection || mode == QAbstractItemView::ExtendedSelection ||
                        mode == QAbstractItemView::MultiSelection) {
                    selectAll();
                    ke->accept();
                    return true;
                }
            }
            break;
        default:
            break;
        }
    }
    break;
    case QEvent::Resize: {
        QResizeEvent * re = (QResizeEvent *)event;
        if (!_inResize && re->oldSize() != re->size()) {
            if (_stretchingColumn != -1 && columnCount()) {
                QList< int > columnsSizes;
                int oldSize = 0;

                for (int i = 0; i != header()->count(); i++) {
                    columnsSizes.append(header()->sectionSize(i));
                    oldSize += header()->sectionSize(i);
                }

                bool res = QTreeWidget::event(event);

                int newSize = viewport()->width();
                int delta = newSize - oldSize;

                if (delta) {
                    _inResize = true;

                    for (int i = 0; i != header()->count(); i++) {
                        if (i == _stretchingColumn) {
                            int newNs = columnsSizes[ i ] + delta;
                            if (newNs < 8)
                                newNs = 8;
                            header()->resizeSection(i, newNs);
                        } else if (header()->sectionSize(i) != columnsSizes[ i ]) {
                            header()->resizeSection(i, columnsSizes[ i ]);
                        }
                    }
                    _inResize = false;
                }
                return res;
            }
        }
        break;
    }
    case QEvent::ToolTip: {
        QHelpEvent *he = static_cast<QHelpEvent*>(event);

        if (viewport()) {
            QPoint pos = viewport()->mapFromGlobal(he->globalPos());

            QTreeWidgetItem * item = itemAt(pos);

            int column = columnAt(pos.x());

            if (item) {
                if (!item->toolTip(column).isEmpty())
                    break;

                QString tip = item->text(column);

                int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
                int requiredWidth = QFontMetrics(font()).width(tip) + 2 * textMargin;

                if (column == 0 && indentation()) {
                    int level = 0;

                    QTreeWidgetItem *parent = item;

                    while ((parent = parent->parent()))
                        level++;

                    if (rootIsDecorated())
                        level++;

                    requiredWidth += level * indentation();
                }

                QIcon icon = item->icon(column);
                if (!icon.isNull()) {
                    QStyleOptionViewItem opts = viewOptions();
                    QSize iconSize = icon.actualSize(opts.decorationSize);
                    requiredWidth += iconSize.width();

                    int pixmapMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, this) + 1;
                    requiredWidth += 2 * pixmapMargin;
                }

                if (!tip.isEmpty() && (columnWidth(column) < requiredWidth))
                    QToolTip::showText(he->globalPos(), tip, this);
                return true;
            }
        }
    }
    break;
    default:
        break;
    }
    return QTreeWidget::event(event);
}
/*
 *  Constructs a ListViewEditorBase as a child of 'parent', with the
 *  name 'name' and widget flags set to 'f'.
 *
 *  The dialog will by default be modeless, unless you set 'modal' to
 *  TRUE to construct a modal dialog.
 */
ListViewEditorBase::ListViewEditorBase( QWidget* parent, const char* name, bool modal, WFlags fl )
    : QDialog( parent, name, modal, fl )
{
    if ( !name )
	setName( "ListViewEditorBase" );
    setSizeGripEnabled( TRUE );
    ListViewEditorBaseLayout = new QVBoxLayout( this, 11, 6, "ListViewEditorBaseLayout"); 

    tabWidget = new QTabWidget( this, "tabWidget" );

    Widget10 = new QWidget( tabWidget, "Widget10" );
    Widget10Layout = new QGridLayout( Widget10, 1, 1, 11, 6, "Widget10Layout"); 

    itemDelete = new QPushButton( Widget10, "itemDelete" );

    Widget10Layout->addWidget( itemDelete, 2, 1 );

    GroupBox1 = new QGroupBox( Widget10, "GroupBox1" );
    GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)5, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) );
    GroupBox1->setColumnLayout(0, Qt::Vertical );
    GroupBox1->layout()->setSpacing( 6 );
    GroupBox1->layout()->setMargin( 11 );
    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
    GroupBox1Layout->setAlignment( Qt::AlignTop );

    Label2 = new QLabel( GroupBox1, "Label2" );

    GroupBox1Layout->addWidget( Label2, 2, 0 );

    Label1 = new QLabel( GroupBox1, "Label1" );

    GroupBox1Layout->addWidget( Label1, 1, 0 );

    itemText = new QLineEdit( GroupBox1, "itemText" );
    itemText->setMinimumSize( QSize( 0, 0 ) );

    GroupBox1Layout->addWidget( itemText, 1, 1 );

    itemColumn = new QSpinBox( GroupBox1, "itemColumn" );

    GroupBox1Layout->addWidget( itemColumn, 0, 1 );

    Label4 = new QLabel( GroupBox1, "Label4" );

    GroupBox1Layout->addWidget( Label4, 0, 0 );

    Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2"); 

    itemPixmap = new QLabel( GroupBox1, "itemPixmap" );
    Layout2->addWidget( itemPixmap );

    itemDeletePixmap = new QPushButton( GroupBox1, "itemDeletePixmap" );
    itemDeletePixmap->setMaximumSize( QSize( 30, 22 ) );
    itemDeletePixmap->setPixmap( QPixmap::fromMimeSource( "designer_s_editcut.png" ) );
    Layout2->addWidget( itemDeletePixmap );

    itemChoosePixmap = new QPushButton( GroupBox1, "itemChoosePixmap" );
    itemChoosePixmap->setMaximumSize( QSize( 30, 22 ) );
    Layout2->addWidget( itemChoosePixmap );

    GroupBox1Layout->addLayout( Layout2, 2, 1 );

    Widget10Layout->addMultiCellWidget( GroupBox1, 0, 7, 2, 2 );

    itemNew = new QPushButton( Widget10, "itemNew" );

    Widget10Layout->addWidget( itemNew, 0, 1 );

    itemsPreview = new QListView( Widget10, "itemsPreview" );

    Widget10Layout->addMultiCellWidget( itemsPreview, 0, 7, 0, 0 );

    itemNewSub = new QPushButton( Widget10, "itemNewSub" );

    Widget10Layout->addWidget( itemNewSub, 1, 1 );
    Vertical_Spacing1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
    Widget10Layout->addItem( Vertical_Spacing1, 3, 1 );

    itemUp = new QPushButton( Widget10, "itemUp" );
    itemUp->setPixmap( QPixmap::fromMimeSource( "designer_s_up.png" ) );

    Widget10Layout->addWidget( itemUp, 4, 1 );

    itemDown = new QPushButton( Widget10, "itemDown" );
    itemDown->setPixmap( QPixmap::fromMimeSource( "designer_s_down.png" ) );

    Widget10Layout->addWidget( itemDown, 5, 1 );

    itemLeft = new QPushButton( Widget10, "itemLeft" );
    itemLeft->setPixmap( QPixmap::fromMimeSource( "designer_s_left.png" ) );

    Widget10Layout->addWidget( itemLeft, 6, 1 );

    itemRight = new QPushButton( Widget10, "itemRight" );
    itemRight->setPixmap( QPixmap::fromMimeSource( "designer_s_right.png" ) );

    Widget10Layout->addWidget( itemRight, 7, 1 );
    tabWidget->insertTab( Widget10, QString("") );

    Widget11 = new QWidget( tabWidget, "Widget11" );
    Widget11Layout = new QGridLayout( Widget11, 1, 1, 11, 6, "Widget11Layout"); 

    GroupBox1_2 = new QGroupBox( Widget11, "GroupBox1_2" );
    GroupBox1_2->setColumnLayout(0, Qt::Vertical );
    GroupBox1_2->layout()->setSpacing( 6 );
    GroupBox1_2->layout()->setMargin( 11 );
    GroupBox1Layout_2 = new QGridLayout( GroupBox1_2->layout() );
    GroupBox1Layout_2->setAlignment( Qt::AlignTop );

    Label2_2 = new QLabel( GroupBox1_2, "Label2_2" );

    GroupBox1Layout_2->addWidget( Label2_2, 1, 0 );

    colPixmap = new QLabel( GroupBox1_2, "colPixmap" );

    GroupBox1Layout_2->addWidget( colPixmap, 1, 1 );

    colDeletePixmap = new QPushButton( GroupBox1_2, "colDeletePixmap" );
    colDeletePixmap->setMaximumSize( QSize( 30, 22 ) );
    colDeletePixmap->setPixmap( QPixmap::fromMimeSource( "designer_s_editcut.png" ) );

    GroupBox1Layout_2->addWidget( colDeletePixmap, 1, 2 );

    colChoosePixmap = new QPushButton( GroupBox1_2, "colChoosePixmap" );
    colChoosePixmap->setMaximumSize( QSize( 30, 22 ) );

    GroupBox1Layout_2->addWidget( colChoosePixmap, 1, 3 );

    Label1_2 = new QLabel( GroupBox1_2, "Label1_2" );

    GroupBox1Layout_2->addWidget( Label1_2, 0, 0 );

    colText = new QLineEdit( GroupBox1_2, "colText" );
    colText->setMinimumSize( QSize( 0, 0 ) );

    GroupBox1Layout_2->addMultiCellWidget( colText, 0, 0, 1, 3 );

    colClickable = new QCheckBox( GroupBox1_2, "colClickable" );

    GroupBox1Layout_2->addMultiCellWidget( colClickable, 2, 2, 0, 1 );

    colResizable = new QCheckBox( GroupBox1_2, "colResizable" );

    GroupBox1Layout_2->addMultiCellWidget( colResizable, 3, 3, 0, 1 );

    Widget11Layout->addMultiCellWidget( GroupBox1_2, 0, 4, 2, 2 );

    colDelete = new QPushButton( Widget11, "colDelete" );

    Widget11Layout->addWidget( colDelete, 1, 1 );

    colDown = new QPushButton( Widget11, "colDown" );
    colDown->setPixmap( QPixmap::fromMimeSource( "designer_s_down.png" ) );

    Widget11Layout->addWidget( colDown, 4, 1 );

    colNew = new QPushButton( Widget11, "colNew" );

    Widget11Layout->addWidget( colNew, 0, 1 );

    colUp = new QPushButton( Widget11, "colUp" );
    colUp->setPixmap( QPixmap::fromMimeSource( "designer_s_up.png" ) );

    Widget11Layout->addWidget( colUp, 3, 1 );

    colPreview = new QListBox( Widget11, "colPreview" );

    Widget11Layout->addMultiCellWidget( colPreview, 0, 4, 0, 0 );
    Vertical_Spacing2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
    Widget11Layout->addItem( Vertical_Spacing2, 2, 1 );
    tabWidget->insertTab( Widget11, QString("") );
    ListViewEditorBaseLayout->addWidget( tabWidget );

    Layout1 = new QHBoxLayout( 0, 0, 6, "Layout1"); 

    helpButton = new QPushButton( this, "helpButton" );
    helpButton->setAutoDefault( TRUE );
    Layout1->addWidget( helpButton );
    Horizontal_Spacing2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
    Layout1->addItem( Horizontal_Spacing2 );

    applyButton = new QPushButton( this, "applyButton" );
    applyButton->setAutoDefault( TRUE );
    Layout1->addWidget( applyButton );

    okButton = new QPushButton( this, "okButton" );
    okButton->setAutoDefault( TRUE );
    okButton->setDefault( TRUE );
    Layout1->addWidget( okButton );

    cancelButton = new QPushButton( this, "cancelButton" );
    cancelButton->setAutoDefault( TRUE );
    Layout1->addWidget( cancelButton );
    ListViewEditorBaseLayout->addLayout( Layout1 );
    languageChange();
    resize( QSize(567, 398).expandedTo(minimumSizeHint()) );
    clearWState( WState_Polished );

    // signals and slots connections
    connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
    connect( itemNew, SIGNAL( clicked() ), this, SLOT( itemNewClicked() ) );
    connect( itemDelete, SIGNAL( clicked() ), this, SLOT( itemDeleteClicked() ) );
    connect( itemUp, SIGNAL( clicked() ), this, SLOT( itemUpClicked() ) );
    connect( itemDown, SIGNAL( clicked() ), this, SLOT( itemDownClicked() ) );
    connect( itemColumn, SIGNAL( valueChanged(int) ), this, SLOT( itemColChanged(int) ) );
    connect( itemText, SIGNAL( textChanged(const QString&) ), this, SLOT( itemTextChanged(const QString&) ) );
    connect( itemDeletePixmap, SIGNAL( clicked() ), this, SLOT( itemPixmapDeleted() ) );
    connect( itemChoosePixmap, SIGNAL( clicked() ), this, SLOT( itemPixmapChoosen() ) );
    connect( colNew, SIGNAL( clicked() ), this, SLOT( newColumnClicked() ) );
    connect( colDelete, SIGNAL( clicked() ), this, SLOT( deleteColumnClicked() ) );
    connect( colUp, SIGNAL( clicked() ), this, SLOT( columnUpClicked() ) );
    connect( colDown, SIGNAL( clicked() ), this, SLOT( columnDownClicked() ) );
    connect( colText, SIGNAL( textChanged(const QString&) ), this, SLOT( columnTextChanged(const QString&) ) );
    connect( colDeletePixmap, SIGNAL( clicked() ), this, SLOT( columnPixmapDeleted() ) );
    connect( colChoosePixmap, SIGNAL( clicked() ), this, SLOT( columnPixmapChosen() ) );
    connect( colResizable, SIGNAL( toggled(bool) ), this, SLOT( columnResizable(bool) ) );
    connect( colClickable, SIGNAL( toggled(bool) ), this, SLOT( columnClickable(bool) ) );
    connect( tabWidget, SIGNAL( selected(const QString&) ), this, SLOT( initTabPage(const QString&) ) );
    connect( okButton, SIGNAL( clicked() ), this, SLOT( okClicked() ) );
    connect( applyButton, SIGNAL( clicked() ), this, SLOT( applyClicked() ) );
    connect( colPreview, SIGNAL( currentChanged(QListBoxItem*) ), this, SLOT( currentColumnChanged(QListBoxItem*) ) );
    connect( colPreview, SIGNAL( selectionChanged(QListBoxItem*) ), this, SLOT( currentColumnChanged(QListBoxItem*) ) );
    connect( itemsPreview, SIGNAL( currentChanged(QListViewItem*) ), this, SLOT( currentItemChanged(QListViewItem*) ) );
    connect( itemsPreview, SIGNAL( selectionChanged(QListViewItem*) ), this, SLOT( currentItemChanged(QListViewItem*) ) );
    connect( itemNewSub, SIGNAL( clicked() ), this, SLOT( itemNewSubClicked() ) );
    connect( itemLeft, SIGNAL( clicked() ), this, SLOT( itemLeftClicked() ) );
    connect( itemRight, SIGNAL( clicked() ), this, SLOT( itemRightClicked() ) );

    // tab order
    setTabOrder( okButton, cancelButton );
    setTabOrder( cancelButton, tabWidget );
    setTabOrder( tabWidget, itemsPreview );
    setTabOrder( itemsPreview, itemNew );
    setTabOrder( itemNew, itemNewSub );
    setTabOrder( itemNewSub, itemDelete );
    setTabOrder( itemDelete, itemUp );
    setTabOrder( itemUp, itemDown );
    setTabOrder( itemDown, itemLeft );
    setTabOrder( itemLeft, itemRight );
    setTabOrder( itemRight, itemColumn );
    setTabOrder( itemColumn, itemText );
    setTabOrder( itemText, itemDeletePixmap );
    setTabOrder( itemDeletePixmap, itemChoosePixmap );
    setTabOrder( itemChoosePixmap, helpButton );
    setTabOrder( helpButton, applyButton );
    setTabOrder( applyButton, colPreview );
    setTabOrder( colPreview, colNew );
    setTabOrder( colNew, colDelete );
    setTabOrder( colDelete, colUp );
    setTabOrder( colUp, colDown );
    setTabOrder( colDown, colText );
    setTabOrder( colText, colDeletePixmap );
    setTabOrder( colDeletePixmap, colChoosePixmap );
    setTabOrder( colChoosePixmap, colClickable );
    setTabOrder( colClickable, colResizable );

    // buddies
    Label2->setBuddy( itemChoosePixmap );
    Label1->setBuddy( itemText );
    Label4->setBuddy( itemColumn );
    Label2_2->setBuddy( colChoosePixmap );
    Label1_2->setBuddy( colText );
    init();
}