TimeLineRulerMenu: only show drop or non-drop timecode depending

on timebase
This commit is contained in:
Thomas Wilshaw
2021-04-08 12:56:42 +01:00
parent f560beef60
commit 2cea45268f
6 changed files with 37 additions and 8 deletions
+5
View File
@@ -34,6 +34,11 @@ rational TimeBasedPanel::GetTime()
return widget_->GetTime();
}
rational TimeBasedPanel::timebase()
{
return widget_->timebase();
}
void TimeBasedPanel::GoToStart()
{
widget_->GoToStart();
+2
View File
@@ -41,6 +41,8 @@ public:
rational GetTime();
rational timebase();
ViewerOutput *GetConnectedViewer() const
{
return widget_->GetConnectedNode();
+18 -3
View File
@@ -21,6 +21,7 @@
#include "menushared.h"
#include "core.h"
#include "common/timecodefunctions.h"
#include "panel/panelmanager.h"
#include "panel/timeline/timeline.h"
@@ -159,10 +160,24 @@ void MenuShared::AddItemsForClipEditMenu(Menu *m)
m->addAction(clip_nest_item_);
}
void MenuShared::AddItemsForTimeRulerMenu(Menu *m)
void MenuShared::AddItemsForTimeRulerMenu(Menu *m, const rational& timebase)
{
m->addAction(view_timecode_view_dropframe_item_);
m->addAction(view_timecode_view_nondropframe_item_);
// If menu is already created (such as the view menu) we need to remove the instance
// of dropfram or non-dropframe timecode that is already there to avoid double displays
if (m->actions().contains(view_timecode_view_dropframe_item_)) {
m->removeAction(view_timecode_view_dropframe_item_);
}
if (m->actions().contains(view_timecode_view_nondropframe_item_)) {
m->removeAction(view_timecode_view_nondropframe_item_);
}
if (Timecode::TimebaseIsDropFrame(timebase)) {
m->addAction(view_timecode_view_dropframe_item_);
} else {
m->addAction(view_timecode_view_nondropframe_item_);
}
m->addAction(view_timecode_view_seconds_item_);
m->addAction(view_timecode_view_frames_item_);
m->addAction(view_timecode_view_milliseconds_item_);
+2 -1
View File
@@ -21,6 +21,7 @@
#ifndef MENUSHARED_H
#define MENUSHARED_H
#include "common/rational.h"
#include "widget/colorlabelmenu/colorlabelmenu.h"
#include "widget/menu/menu.h"
@@ -45,7 +46,7 @@ public:
void AddItemsForInOutMenu(Menu* m);
void AddColorCodingMenu(Menu* m);
void AddItemsForClipEditMenu(Menu* m);
void AddItemsForTimeRulerMenu(Menu* m);
void AddItemsForTimeRulerMenu(Menu* m, const rational& timebase);
void AboutToShowTimeRulerActions();
+1 -1
View File
@@ -306,7 +306,7 @@ void TimeRuler::ShowContextMenu()
{
Menu m(this);
MenuShared::instance()->AddItemsForTimeRulerMenu(&m);
MenuShared::instance()->AddItemsForTimeRulerMenu(&m, timebase());
MenuShared::instance()->AboutToShowTimeRulerActions();
m.exec(QCursor::pos());
+9 -3
View File
@@ -112,9 +112,6 @@ MainMenu::MainMenu(MainWindow *parent) :
view_decrease_track_height_item_ = view_menu_->AddItem("vzoomout", this, &MainMenu::DecreaseTrackHeightTriggered, "Ctrl+-");
view_show_all_item_ = view_menu_->AddItem("showall", this, &MainMenu::ToggleShowAllTriggered, "\\");
view_show_all_item_->setCheckable(true);
view_menu_->addSeparator();
MenuShared::instance()->AddItemsForTimeRulerMenu(view_menu_);
view_menu_->addSeparator();
@@ -308,6 +305,15 @@ void MainMenu::ViewMenuAboutToShow()
// Ensure checked timecode display mode is correct
MenuShared::instance()->AboutToShowTimeRulerActions();
TimeBasedPanel* p = PanelManager::instance()->MostRecentlyFocused<TimeBasedPanel>();
if (p) {
if (p->timebase().denominator() != 0) {
view_menu_->addSeparator();
MenuShared::instance()->AddItemsForTimeRulerMenu(view_menu_, p->timebase());
}
}
}
void MainMenu::ToolsMenuAboutToShow()