TimeLineRulerMenu: only show drop or non-drop timecode depending
on timebase
This commit is contained in:
@@ -34,6 +34,11 @@ rational TimeBasedPanel::GetTime()
|
||||
return widget_->GetTime();
|
||||
}
|
||||
|
||||
rational TimeBasedPanel::timebase()
|
||||
{
|
||||
return widget_->timebase();
|
||||
}
|
||||
|
||||
void TimeBasedPanel::GoToStart()
|
||||
{
|
||||
widget_->GoToStart();
|
||||
|
||||
@@ -41,6 +41,8 @@ public:
|
||||
|
||||
rational GetTime();
|
||||
|
||||
rational timebase();
|
||||
|
||||
ViewerOutput *GetConnectedViewer() const
|
||||
{
|
||||
return widget_->GetConnectedNode();
|
||||
|
||||
@@ -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_);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user