ToolMenuActions::ToolMenuActions( iscore::ToplevelMenuElement menuElt, ScenarioControl* parent) : ScenarioActions{menuElt, parent} { m_scenarioToolActionGroup = new QActionGroup{this}; m_scenarioToolActionGroup->setDisabled(true); // NOTE : if a scenario isn't focused, they shouldn't event be clickable. // SELECT AND MOVE m_selecttool = makeToolbarAction( tr("Select and Move"), m_scenarioToolActionGroup, Scenario::Tool::Select, tr("Alt+x")); m_selecttool->setObjectName("Select"); m_selecttool->setChecked(true); connect(m_selecttool, &QAction::toggled, this, [=](bool b) { if (b) m_parent->editionSettings().setTool(Scenario::Tool::Select); }); // CREATE m_createtool = makeToolbarAction( tr("Create"), m_scenarioToolActionGroup, Scenario::Tool::Create, tr("Ctrl")); connect(m_createtool, &QAction::toggled, this, [=](bool b) { if(b) m_parent->editionSettings().setTool(Scenario::Tool::Create); }); // MOVEDECK auto slotmovetool = makeToolbarAction( tr("Move Slot"), m_scenarioToolActionGroup, Scenario::Tool::MoveSlot, tr("Alt+b")); connect(slotmovetool, &QAction::triggered, this, [=]() { m_parent->editionSettings().setTool(Scenario::Tool::MoveSlot); }); // SHIFT m_shiftAction = makeToolbarAction( tr("Sequence"), this, ExpandMode::Fixed, tr("Shift")); connect(m_shiftAction, &QAction::toggled, this, [=] (bool val) { m_parent->editionSettings().setSequence(val); }); // SCALEMODE m_scenarioScaleModeActionGroup = new QActionGroup{this}; auto scale = makeToolbarAction( tr("Scale"), m_scenarioScaleModeActionGroup, ExpandMode::Scale, tr("Alt+S")); scale->setChecked(true); connect(scale, &QAction::triggered, this, [=]() { m_parent->editionSettings().setExpandMode(ExpandMode::Scale); }); auto grow = makeToolbarAction( tr("Grow/Shrink"), m_scenarioScaleModeActionGroup, ExpandMode::Grow, tr("Alt+D")); connect(grow, &QAction::triggered, this, [=]() { m_parent->editionSettings().setExpandMode(ExpandMode::Grow); }); auto fixed = makeToolbarAction( tr("Keep Duration"), m_scenarioScaleModeActionGroup, ExpandMode::Fixed, tr("Alt+F")); connect(fixed, &QAction::triggered, this, [=]() { m_parent->editionSettings().setExpandMode(ExpandMode::Fixed); }); connect(parent, &ScenarioControl::keyPressed, this, &ToolMenuActions::keyPressed); connect(parent, &ScenarioControl::keyReleased, this, &ToolMenuActions::keyReleased); }
ToolMenuActions::ToolMenuActions( iscore::ToplevelMenuElement menuElt, ScenarioApplicationPlugin* parent) : ScenarioActions{menuElt, parent} { m_scenarioToolActionGroup = new QActionGroup{this}; m_scenarioToolActionGroup->setDisabled(true); // NOTE : if a scenario isn't focused, they shouldn't event be clickable. // SELECT AND MOVE m_selecttool = makeToolbarAction( tr("Select and Move"), m_scenarioToolActionGroup, Scenario::Tool::Select, tr("S")); m_selecttool->setShortcuts({Qt::Key_S, Qt::Key_M}); m_selecttool->setToolTip({"Select and Move (S, M)"}); m_selecttool->setObjectName("Select"); m_selecttool->setChecked(true); connect(m_selecttool, &QAction::toggled, this, [=](bool b) { if (b) m_parent->editionSettings().setTool(Scenario::Tool::Select); }); // CREATE m_createtool = makeToolbarAction( tr("Create"), m_scenarioToolActionGroup, Scenario::Tool::Create, tr("C")); connect(m_createtool, &QAction::triggered, this, [=](bool b) { if(b) m_parent->editionSettings().setTool(Scenario::Tool::Create); }); // PLAY m_playtool = makeToolbarAction( tr("Play"), m_scenarioToolActionGroup, Scenario::Tool::Play, tr("P")); connect(m_playtool, &QAction::triggered, this, [=] (bool b) { if(b) m_parent->editionSettings().setTool(Scenario::Tool::Play); }); // MOVESLOT auto slotmovetool = makeToolbarAction( tr("Move Slot"), m_scenarioToolActionGroup, Scenario::Tool::MoveSlot, tr("Alt+b")); connect(slotmovetool, &QAction::triggered, this, [=]() { m_parent->editionSettings().setTool(Scenario::Tool::MoveSlot); }); // SHIFT m_shiftAction = makeToolbarAction( tr("Sequence"), this, ExpandMode::Fixed, tr("Shift")); connect(m_shiftAction, &QAction::toggled, this, [=] (bool val) { m_parent->editionSettings().setSequence(val); }); // SCALEMODE m_scenarioScaleModeActionGroup = new QActionGroup{this}; auto scale = makeToolbarAction( tr("Scale"), m_scenarioScaleModeActionGroup, ExpandMode::Scale, tr("Alt+S")); scale->setChecked(true); connect(scale, &QAction::triggered, this, [=]() { m_parent->editionSettings().setExpandMode(ExpandMode::Scale); }); auto grow = makeToolbarAction( tr("Grow/Shrink"), m_scenarioScaleModeActionGroup, ExpandMode::GrowShrink, tr("Alt+D")); connect(grow, &QAction::triggered, this, [=]() { m_parent->editionSettings().setExpandMode(ExpandMode::GrowShrink); }); /* auto fixed = makeToolbarAction( tr("Keep Duration"), m_scenarioScaleModeActionGroup, ExpandMode::Fixed, tr("Alt+F")); connect(fixed, &QAction::triggered, this, [=]() { m_parent->editionSettings().setExpandMode(ExpandMode::Fixed); }); */ connect(parent, &ScenarioApplicationPlugin::keyPressed, this, &ToolMenuActions::keyPressed); connect(parent, &ScenarioApplicationPlugin::keyReleased, this, &ToolMenuActions::keyReleased); con(parent->editionSettings(), &Scenario::EditionSettings::toolChanged, this, [=] (Scenario::Tool t) { switch(t) { case Scenario::Tool::Create: if(!m_createtool->isChecked()) m_createtool->setChecked(true); break; case Scenario::Tool::Play: if(!m_playtool->isChecked()) m_playtool->setChecked(true); break; case Scenario::Tool::MoveSlot: if(!slotmovetool->isChecked()) slotmovetool->setChecked(true); break; case Scenario::Tool::Disabled: break; case Scenario::Tool::Playing: m_createtool->setChecked(false); m_playtool->setChecked(false); slotmovetool->setChecked(false); m_selecttool->setChecked(false); break; case Scenario::Tool::Select: if(!m_selecttool->isChecked()) m_selecttool->setChecked(true); break; default: break; } }); con(parent->editionSettings(), &Scenario::EditionSettings::sequenceChanged, this, [=] (bool sequence) { if(sequence) { if(!m_shiftAction->isChecked()) m_shiftAction->setChecked(true); } else { if(m_shiftAction->isChecked()) m_shiftAction->setChecked(false); } }); con(parent->editionSettings(), &Scenario::EditionSettings::expandModeChanged, this, [=] (ExpandMode mode) { switch(mode) { case ExpandMode::Scale: if(!scale->isChecked()) scale->setChecked(true); break; case ExpandMode::GrowShrink: case ExpandMode::ForceGrow: if(!grow->isChecked()) grow->setChecked(true); break; /* case ExpandMode::Fixed: if(!fixed->isChecked()) fixed->setChecked(true); break; */ } }); }