diff --git a/app/panel/timeline/timeline.cpp b/app/panel/timeline/timeline.cpp index ebb8875a7..3b348f723 100644 --- a/app/panel/timeline/timeline.cpp +++ b/app/panel/timeline/timeline.cpp @@ -88,6 +88,16 @@ void TimelinePanel::ZoomOut() SetScale(scale_ * 0.5); } +void TimelinePanel::SelectAll() +{ + view_->SelectAll(); +} + +void TimelinePanel::DeselectAll() +{ + view_->DeselectAll(); +} + void TimelinePanel::changeEvent(QEvent *e) { if (e->type() == QEvent::LanguageChange) { diff --git a/app/panel/timeline/timeline.h b/app/panel/timeline/timeline.h index 8182762b8..a2a0bb1a4 100644 --- a/app/panel/timeline/timeline.h +++ b/app/panel/timeline/timeline.h @@ -43,6 +43,10 @@ public: virtual void ZoomOut() override; + virtual void SelectAll() override; + + virtual void DeselectAll() override; + public slots: void SetTimebase(const rational& timebase); diff --git a/app/widget/panel/panel.cpp b/app/widget/panel/panel.cpp index f98f14b5e..5998f2313 100644 --- a/app/widget/panel/panel.cpp +++ b/app/widget/panel/panel.cpp @@ -67,6 +67,14 @@ void PanelWidget::GoToEnd() { } +void PanelWidget::SelectAll() +{ +} + +void PanelWidget::DeselectAll() +{ +} + void PanelWidget::SetTitle(const QString &t) { title_ = t; diff --git a/app/widget/panel/panel.h b/app/widget/panel/panel.h index c696546ce..62b5d706e 100644 --- a/app/widget/panel/panel.h +++ b/app/widget/panel/panel.h @@ -79,6 +79,10 @@ public: virtual void GoToEnd(); + virtual void SelectAll(); + + virtual void DeselectAll(); + protected: /** * @brief Set panel's title diff --git a/app/widget/timelineview/timelineview.cpp b/app/widget/timelineview/timelineview.cpp index 3a82a23e9..bb8a96d9e 100644 --- a/app/widget/timelineview/timelineview.cpp +++ b/app/widget/timelineview/timelineview.cpp @@ -199,6 +199,24 @@ void TimelineView::DisconnectTimelineNode() ConnectTimelineNode(nullptr); } +void TimelineView::SelectAll() +{ + QList all_items = items(); + + foreach (QGraphicsItem* i, all_items) { + i->setSelected(true); + } +} + +void TimelineView::DeselectAll() +{ + QList all_items = items(); + + foreach (QGraphicsItem* i, all_items) { + i->setSelected(false); + } +} + void TimelineView::SetTime(const int64_t time) { playhead_ = time; diff --git a/app/widget/timelineview/timelineview.h b/app/widget/timelineview/timelineview.h index 080ead65f..08190f47d 100644 --- a/app/widget/timelineview/timelineview.h +++ b/app/widget/timelineview/timelineview.h @@ -52,6 +52,10 @@ public: void DisconnectTimelineNode(); + void SelectAll(); + + void DeselectAll(); + public slots: void SetTimebase(const rational& timebase); diff --git a/app/window/mainwindow/mainmenu.cpp b/app/window/mainwindow/mainmenu.cpp index 41258f2fa..9ff456bc0 100644 --- a/app/window/mainwindow/mainmenu.cpp +++ b/app/window/mainwindow/mainmenu.cpp @@ -65,8 +65,8 @@ MainMenu::MainMenu(QWidget *parent) : edit_menu_->addSeparator(); olive::menu_shared.AddItemsForEditMenu(edit_menu_); edit_menu_->addSeparator(); - edit_select_all_item_ = edit_menu_->AddItem("selectall", nullptr, nullptr, "Ctrl+A"); - edit_deselect_all_item_ = edit_menu_->AddItem("deselectall", nullptr, nullptr, "Ctrl+Shift+A"); + edit_select_all_item_ = edit_menu_->AddItem("selectall", this, SLOT(SelectAllTriggered()), "Ctrl+A"); + edit_deselect_all_item_ = edit_menu_->AddItem("deselectall", this, SLOT(DeselectAllTriggered()), "Ctrl+Shift+A"); edit_menu_->addSeparator(); olive::menu_shared.AddItemsForClipEditMenu(edit_menu_); edit_menu_->addSeparator(); @@ -374,6 +374,16 @@ void MainMenu::GoToEndTriggered() olive::panel_focus_manager->CurrentlyFocused()->GoToEnd(); } +void MainMenu::SelectAllTriggered() +{ + olive::panel_focus_manager->CurrentlyFocused()->SelectAll(); +} + +void MainMenu::DeselectAllTriggered() +{ + olive::panel_focus_manager->CurrentlyFocused()->DeselectAll(); +} + void MainMenu::Retranslate() { // MenuShared is not a QWidget and therefore does not receive a LanguageEvent, we use MainMenu's to update it diff --git a/app/window/mainwindow/mainmenu.h b/app/window/mainwindow/mainmenu.h index 5ecd95b0f..9b19d8f65 100644 --- a/app/window/mainwindow/mainmenu.h +++ b/app/window/mainwindow/mainmenu.h @@ -87,6 +87,9 @@ private slots: void NextFrameTriggered(); void GoToEndTriggered(); + void SelectAllTriggered(); + void DeselectAllTriggered(); + private: /** * @brief Set strings based on the current application language.