DummyLayerPresenter::DummyLayerPresenter( const LayerModel& model, DummyLayerView* view, QObject* parent): LayerPresenter{"DummyLayerPresenter", parent}, m_layer{model}, m_view{view} { putToFront(); }
explicit Presenter( const Process::ProcessModel& model, View* view, const Process::ProcessPresenterContext& ctx, QObject* parent) : LayerPresenter{ctx, parent} , m_layer{model} , m_view{view} , m_disp{m_context.context.commandStack} { putToFront(); auto& m = static_cast<const Step::Model&>(model); connect(view, &View::pressed, this, [&] { m_context.context.focusDispatcher.focus(this); }); connect(view, &View::change, this, [&](std::size_t num, float v) { auto vec = m.steps(); if (num > vec.size()) { vec.resize(num, 0.5f); } v = ossia::clamp(v, 0.f, 1.f); vec[num] = v; m_disp.submit(m, std::move(vec)); }); connect(view, &View::released, this, [&] { m_disp.commit(); }); connect( m_view, &View::askContextMenu, this, &Presenter::contextMenuRequested); con(m, &Step::Model::stepsChanged, this, [&] { m_view->update(); }); con(m, &Step::Model::stepCountChanged, this, [&] { m_view->update(); }); con(m, &Step::Model::stepDurationChanged, this, [&] { on_zoomRatioChanged(m_ratio); }); auto& audio_settings = context().context.app.settings<Audio::Settings::Model>(); con(audio_settings, &Audio::Settings::Model::RateChanged, this, [&] { on_zoomRatioChanged(m_ratio); }); view->m_model = &m; }