mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:07:45 +00:00
LibGUI: Add HorizontalSlider and VerticalSlider convenience classes
This commit is contained in:
parent
6a71ba1deb
commit
dccf335d5b
5 changed files with 39 additions and 15 deletions
|
@ -74,7 +74,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
|
||||
// FIXME: Implement vertical flipping in GSlider, not here.
|
||||
|
||||
m_octave_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_octave_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_octave_knob->set_tooltip("Z: octave down, X: octave up");
|
||||
m_octave_knob->set_range(octave_min - 1, octave_max - 1);
|
||||
m_octave_knob->set_value((octave_max - 1) - (m_audio_engine.octave() - 1));
|
||||
|
@ -86,7 +86,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
m_octave_value->set_text(String::number(new_octave));
|
||||
};
|
||||
|
||||
m_wave_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_wave_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_wave_knob->set_tooltip("C: cycle through waveforms");
|
||||
m_wave_knob->set_range(0, last_wave);
|
||||
m_wave_knob->set_value(last_wave - m_audio_engine.wave());
|
||||
|
@ -98,7 +98,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
};
|
||||
|
||||
constexpr int max_attack = 1000;
|
||||
m_attack_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_attack_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_attack_knob->set_range(0, max_attack);
|
||||
m_attack_knob->set_value(max_attack - m_audio_engine.attack());
|
||||
m_attack_knob->on_value_changed = [this](int value) {
|
||||
|
@ -109,7 +109,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
};
|
||||
|
||||
constexpr int max_decay = 1000;
|
||||
m_decay_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_decay_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_decay_knob->set_range(0, max_decay);
|
||||
m_decay_knob->set_value(max_decay - m_audio_engine.decay());
|
||||
m_decay_knob->on_value_changed = [this](int value) {
|
||||
|
@ -120,7 +120,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
};
|
||||
|
||||
constexpr int max_sustain = 1000;
|
||||
m_sustain_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_sustain_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_sustain_knob->set_range(0, max_sustain);
|
||||
m_sustain_knob->set_value(max_sustain - m_audio_engine.sustain());
|
||||
m_sustain_knob->on_value_changed = [this](int value) {
|
||||
|
@ -131,7 +131,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
};
|
||||
|
||||
constexpr int max_release = 1000;
|
||||
m_release_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_release_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_release_knob->set_range(0, max_release);
|
||||
m_release_knob->set_value(max_release - m_audio_engine.release());
|
||||
m_release_knob->on_value_changed = [this](int value) {
|
||||
|
@ -142,7 +142,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
};
|
||||
|
||||
constexpr int max_delay = 8;
|
||||
m_delay_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_delay_knob = GUI::VerticalSlider::construct(m_knobs_container);
|
||||
m_delay_knob->set_range(0, max_delay);
|
||||
m_delay_knob->set_value(max_delay - (m_audio_engine.delay() / m_audio_engine.tick()));
|
||||
m_delay_knob->on_value_changed = [this](int value) {
|
||||
|
|
|
@ -156,7 +156,7 @@ RefPtr<GUI::Window> create_settings_window(TerminalWidget& terminal)
|
|||
slider_container->layout()->set_margins({ 6, 16, 6, 6 });
|
||||
slider_container->set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed);
|
||||
slider_container->set_preferred_size(100, 50);
|
||||
auto slider = GUI::Slider::construct(Orientation::Horizontal, slider_container);
|
||||
auto slider = GUI::HorizontalSlider::construct(slider_container);
|
||||
|
||||
slider->on_value_changed = [&terminal](int value) {
|
||||
terminal.set_opacity(value);
|
||||
|
|
|
@ -96,19 +96,19 @@ int main(int argc, char** argv)
|
|||
vertical_slider_container->set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed);
|
||||
vertical_slider_container->set_preferred_size(0, 100);
|
||||
vertical_slider_container->set_layout(make<GUI::HBoxLayout>());
|
||||
auto vslider1 = GUI::Slider::construct(Orientation::Vertical, vertical_slider_container);
|
||||
auto vslider1 = GUI::VerticalSlider::construct(vertical_slider_container);
|
||||
(void)vslider1;
|
||||
auto vslider2 = GUI::Slider::construct(Orientation::Vertical, vertical_slider_container);
|
||||
auto vslider2 = GUI::VerticalSlider::construct(vertical_slider_container);
|
||||
vslider2->set_enabled(false);
|
||||
auto vslider3 = GUI::Slider::construct(Orientation::Vertical, vertical_slider_container);
|
||||
auto vslider3 = GUI::VerticalSlider::construct(vertical_slider_container);
|
||||
vslider3->set_max(5);
|
||||
vslider3->set_knob_size_mode(GUI::Slider::KnobSizeMode::Proportional);
|
||||
|
||||
auto slider1 = GUI::Slider::construct(Orientation::Horizontal, main_widget);
|
||||
auto slider1 = GUI::HorizontalSlider::construct(main_widget);
|
||||
(void)slider1;
|
||||
auto slider2 = GUI::Slider::construct(Orientation::Horizontal, main_widget);
|
||||
auto slider2 = GUI::HorizontalSlider::construct(main_widget);
|
||||
slider2->set_enabled(false);
|
||||
auto slider3 = GUI::Slider::construct(Orientation::Horizontal, main_widget);
|
||||
auto slider3 = GUI::HorizontalSlider::construct(main_widget);
|
||||
slider3->set_max(5);
|
||||
slider3->set_knob_size_mode(GUI::Slider::KnobSizeMode::Proportional);
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ static RefPtr<GUI::Widget> build_gwidget(VBWidgetType type, GUI::Widget* parent)
|
|||
return bar;
|
||||
}
|
||||
case VBWidgetType::GSlider: {
|
||||
auto slider = GUI::Slider::construct(Orientation::Horizontal, parent);
|
||||
auto slider = GUI::HorizontalSlider::construct(parent);
|
||||
slider->set_range(0, 100);
|
||||
slider->set_value(50);
|
||||
return slider;
|
||||
|
|
|
@ -96,4 +96,28 @@ private:
|
|||
Orientation m_orientation { Orientation::Horizontal };
|
||||
};
|
||||
|
||||
class VerticalSlider final : public Slider {
|
||||
C_OBJECT(VerticalSlider)
|
||||
public:
|
||||
virtual ~VerticalSlider() override {}
|
||||
|
||||
private:
|
||||
explicit VerticalSlider(Widget* parent)
|
||||
: Slider(Orientation::Vertical, parent)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class HorizontalSlider final : public Slider {
|
||||
C_OBJECT(HorizontalSlider)
|
||||
public:
|
||||
virtual ~HorizontalSlider() override {}
|
||||
|
||||
private:
|
||||
explicit HorizontalSlider(Widget* parent)
|
||||
: Slider(Orientation::Horizontal, parent)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue