コード例 #1
0
ファイル: settingswindow.cpp プロジェクト: ChunHungLiu/openmw
    void SettingsWindow::onSliderChangePosition(MyGUI::ScrollBar* scroller, size_t pos)
    {
        if (getSettingType(scroller) == "Slider")
        {
            std::string valueStr;
            if (getSettingValueType(scroller) == "Float")
            {
                float value = pos / float(scroller->getScrollRange()-1);

                float min,max;
                getSettingMinMax(scroller, min, max);
                value = min + (max-min) * value;
                Settings::Manager::setFloat(getSettingName(scroller), getSettingCategory(scroller), value);
                valueStr = MyGUI::utility::toString(int(value));
            }
            else
            {
                Settings::Manager::setInt(getSettingName(scroller), getSettingCategory(scroller), pos);
                valueStr = MyGUI::utility::toString(pos);
            }
            updateSliderLabel(scroller, valueStr);

            apply();
        }
    }
コード例 #2
0
ファイル: settingswindow.cpp プロジェクト: ChunHungLiu/openmw
    void SettingsWindow::configureWidgets(MyGUI::Widget* widget)
    {
        MyGUI::EnumeratorWidgetPtr widgets = widget->getEnumerator();
        while (widgets.next())
        {
            MyGUI::Widget* current = widgets.current();

            std::string type = getSettingType(current);
            if (type == checkButtonType)
            {
                std::string initialValue = Settings::Manager::getBool(getSettingName(current),
                                                                      getSettingCategory(current))
                        ? "#{sOn}" : "#{sOff}";
                current->castType<MyGUI::Button>()->setCaptionWithReplacing(initialValue);
                current->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
            }
            if (type == sliderType)
            {
                MyGUI::ScrollBar* scroll = current->castType<MyGUI::ScrollBar>();
                std::string valueStr;
                if (getSettingValueType(current) == "Float")
                {
                    // TODO: ScrollBar isn't meant for this. should probably use a dedicated FloatSlider widget
                    float min,max;
                    getSettingMinMax(scroll, min, max);
                    float value = Settings::Manager::getFloat(getSettingName(current), getSettingCategory(current));
                    valueStr = MyGUI::utility::toString((int)value);
                    value = std::max(min, std::min(value, max));
                    value = (value-min)/(max-min);

                    scroll->setScrollPosition(static_cast<size_t>(value * (scroll->getScrollRange() - 1)));
                }
                else
                {
                    int value = Settings::Manager::getInt(getSettingName(current), getSettingCategory(current));
                    valueStr = MyGUI::utility::toString(value);
                    scroll->setScrollPosition(value);
                }
                scroll->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
                updateSliderLabel(scroll, valueStr);
            }

            configureWidgets(current);
        }
    }
コード例 #3
0
ファイル: jointitem.cpp プロジェクト: iron76/yarp
bool JointItem::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
        QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
        int key = keyEvent->key();
        if(key == Qt::Key_Left || key == Qt::Key_Right  || key == Qt::Key_Up ||
                key == Qt::Key_Down || key == Qt::Key_PageUp || key == Qt::Key_PageDown) {

            QSlider *slider;
            QLabel *label;

            if(obj == ui->sliderPositionPosition) {
                motionDone = false;
                slider = ui->sliderPositionPosition;
                label = ui->labelPositionPosition;
                if(keyEvent->type() == QEvent::KeyPress) {
                    onSliderPositionPressed();
                }
                if(keyEvent->type() == QEvent::KeyRelease) {
                    onSliderPositionReleased();
                }
            }
            if(obj == ui->sliderPositionVelocity) {
                motionDone = false;
                slider = ui->sliderPositionVelocity;
                label = ui->labelPositionVelocity;
            }
            if(obj == ui->sliderPositionDirect) {
                motionDone = false;
                slider = ui->sliderPositionDirect;
                label = ui->labelPositionDirectPosition;
                if(keyEvent->type() == QEvent::KeyPress) {
                    onSliderPositionPressed();
                }
                if(keyEvent->type() == QEvent::KeyRelease) {
                    onSliderPositionReleased();
                }
            }
            if(obj == ui->sliderMixedPosition) {
                motionDone = false;
                slider = ui->sliderMixedPosition;
                label = ui->labelMixedPosition;
                if(keyEvent->type() == QEvent::KeyPress) {
                    onSliderPositionPressed();
                }
                if(keyEvent->type() == QEvent::KeyRelease) {
                    onSliderPositionReleased();
                }
            }
            if(obj == ui->sliderMixedVelocity) {
                slider = ui->sliderMixedVelocity;
                label = ui->labelMixedVelocity;
            }
            if(obj == ui->sliderTorqueTorque) {
                slider = ui->sliderTorqueTorque;
                label = ui->labelTorqueTorque;
                if(keyEvent->type() == QEvent::KeyPress) {
                    onSliderTorquePressed();
                }
                if(keyEvent->type() == QEvent::KeyRelease) {
                    onSliderTorqueReleased();
                }
            }
            if(obj == ui->sliderOpenloopOutput) {
                slider = ui->sliderOpenloopOutput;
                label = ui->labelOpenLoopOutput;
                if(keyEvent->type() == QEvent::KeyPress) {
                    onSliderOpenloopPressed();
                }
                if(keyEvent->type() == QEvent::KeyRelease) {
                    onSliderOpenloopReleased();
                }
            }
            if(obj == ui->sliderVelocityVelocity) {
                slider = ui->sliderVelocityVelocity;
                label = ui->labelVelocityVelocity;
                if(keyEvent->type() == QEvent::KeyPress) {
                    onSliderVelocityPressed();
                }
                if(keyEvent->type() == QEvent::KeyRelease) {
                    onSliderVelocityReleased();
                }
            }



            if(keyEvent->type() == QEvent::KeyPress) {
                if(key == Qt::Key_Left || key == Qt::Key_Down) {
                    slider->setValue(slider->value() - 1);
                }
                if(key == Qt::Key_Right || key == Qt::Key_Up) {
                    slider->setValue(slider->value() + 1);
                }
                if(key == Qt::Key_PageUp) {
                    slider->setValue(slider->value() + 10);
                }
                if(key == Qt::Key_PageDown) {
                    slider->setValue(slider->value() - 10);
                }
                if(obj == ui->sliderTorqueTorque) {
                    updateSliderTorqueLabel(slider,label,slider->value());
                } else {
                    updateSliderLabel(slider,label,slider->value());
                }
            }


            return true;
        }
        return QObject::eventFilter(obj, event);

    } else {
        // standard event processing
        return QObject::eventFilter(obj, event);
    }
}