change: change code style to Linux style except indent.

This commit is contained in:
Mike Solar
2025-08-03 03:09:40 +08:00
parent 65ab76edc8
commit 74f73ab3be
789 changed files with 77113 additions and 68888 deletions
+43 -41
View File
@@ -22,90 +22,92 @@
#include "ui/style/style.h"
namespace olive {
namespace olive
{
Menu::Menu(QMenuBar *bar)
{
bar->addMenu(this);
bar->addMenu(this);
Init();
Init();
}
Menu::Menu(Menu *menu)
{
menu->addMenu(this);
menu->addMenu(this);
Init();
Init();
}
Menu::Menu(QWidget *parent) :
QMenu(parent)
Menu::Menu(QWidget *parent)
: QMenu(parent)
{
Init();
Init();
}
Menu::Menu(const QString &s, QWidget *parent) :
QMenu(s, parent)
Menu::Menu(const QString &s, QWidget *parent)
: QMenu(s, parent)
{
Init();
Init();
}
QAction *Menu::AddActionWithData(const QString &text, const QVariant &d, const QVariant &compare)
QAction *Menu::AddActionWithData(const QString &text, const QVariant &d,
const QVariant &compare)
{
QAction* a = addAction(text);
QAction *a = addAction(text);
a->setData(d);
a->setCheckable(true);
a->setChecked(d == compare);
a->setData(d);
a->setCheckable(true);
a->setChecked(d == compare);
return a;
return a;
}
QAction* Menu::InsertAlphabetically(const QString &s)
QAction *Menu::InsertAlphabetically(const QString &s)
{
QAction* action = new QAction(s, this);
InsertAlphabetically(action);
return action;
QAction *action = new QAction(s, this);
InsertAlphabetically(action);
return action;
}
void Menu::InsertAlphabetically(QAction *entry)
{
QList<QAction*> actions = this->actions();
QList<QAction *> actions = this->actions();
foreach (QAction* action, actions) {
if (action->text() > entry->text()) {
insertAction(action, entry);
return;
}
}
foreach (QAction *action, actions) {
if (action->text() > entry->text()) {
insertAction(action, entry);
return;
}
}
addAction(entry);
addAction(entry);
}
void Menu::InsertAlphabetically(Menu *menu)
{
InsertAlphabetically(menu->menuAction());
InsertAlphabetically(menu->menuAction());
}
void Menu::ConformItem(QAction *a, const QString &id, const QKeySequence &key)
{
a->setProperty("id", id);
a->setProperty("id", id);
if (!key.isEmpty()) {
a->setShortcut(key);
a->setProperty("keydefault", key);
if (!key.isEmpty()) {
a->setShortcut(key);
a->setProperty("keydefault", key);
// Set to application context so that ViewerWindows still trigger shortcuts
a->setShortcutContext(Qt::ApplicationShortcut);
}
// Set to application context so that ViewerWindows still trigger shortcuts
a->setShortcutContext(Qt::ApplicationShortcut);
}
}
void Menu::Init()
{
// HACK: Disables embossing on disabled text for a slightly nicer UI
QPalette p = palette();
p.setColor(QPalette::Disabled, QPalette::Light, QColor(0, 0, 0, 0));
setPalette(p);
// HACK: Disables embossing on disabled text for a slightly nicer UI
QPalette p = palette();
p.setColor(QPalette::Disabled, QPalette::Light, QColor(0, 0, 0, 0));
setPalette(p);
}
}
+76 -83
View File
@@ -27,7 +27,8 @@
#include "common/define.h"
namespace olive {
namespace olive
{
/**
* @brief A menu widget for context menus and menu bars
@@ -44,59 +45,58 @@ namespace olive {
*
* It is always recommended to use this over QMenu in any situation.
*/
class Menu : public QMenu
{
class Menu : public QMenu {
public:
Menu(QMenuBar* bar);
Menu(QMenuBar *bar);
template <typename Func>
/**
template <typename Func>
/**
* @brief Construct a Menu and add it to a QMenuBar
*
* This Menu can be connected to a slot that's triggered when the Menu is "about to show". Use `receiver` and
* `member` to connect this (same syntax as QObject::connect) or leave as nullptr to not.
*/
Menu(QMenuBar* bar,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member)
{
bar->addMenu(this);
Menu(QMenuBar *bar,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member)
{
bar->addMenu(this);
Init();
ConnectAboutToShow(receiver, member);
}
Init();
ConnectAboutToShow(receiver, member);
}
Menu(Menu* menu);
Menu(Menu *menu);
template <typename Func>
/**
template <typename Func>
/**
* @brief Construct a Menu and add it as a submenu to another Menu
*
* This Menu can be connected to a slot that's triggered when the Menu is "about to show". Use `receiver` and
* `member` to connect this (same syntax as QObject::connect) or leave as nullptr to not.
*/
Menu(Menu* menu,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member)
{
menu->addMenu(this);
Menu(Menu *menu,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member)
{
menu->addMenu(this);
Init();
ConnectAboutToShow(receiver, member);
}
Init();
ConnectAboutToShow(receiver, member);
}
/**
/**
* @brief Construct a popup menu
*/
Menu(QWidget* parent = nullptr);
Menu(QWidget *parent = nullptr);
/**
/**
* @brief Construct a popup menu
*/
Menu(const QString& s, QWidget* parent = nullptr);
Menu(const QString &s, QWidget *parent = nullptr);
template <typename Func>
/**
template <typename Func>
/**
* @brief Create a menu item and add it to this menu
*
* @param id
@@ -119,28 +119,27 @@ public:
*
* The QAction that was created and added to this Menu
*/
QAction* AddItem(const QString& id,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member,
const QKeySequence &key = QKeySequence())
{
QAction* a = CreateItem(this, id, receiver, member, key);
QAction *
AddItem(const QString &id,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member, const QKeySequence &key = QKeySequence())
{
QAction *a = CreateItem(this, id, receiver, member, key);
addAction(a);
addAction(a);
return a;
}
return a;
}
QAction* AddActionWithData(const QString& text,
const QVariant& d,
const QVariant& compare);
QAction *AddActionWithData(const QString &text, const QVariant &d,
const QVariant &compare);
QAction *InsertAlphabetically(const QString& s);
void InsertAlphabetically(QAction* entry);
void InsertAlphabetically(Menu* menu);
QAction *InsertAlphabetically(const QString &s);
void InsertAlphabetically(QAction *entry);
void InsertAlphabetically(Menu *menu);
template <typename Func>
/**
template <typename Func>
/**
* @brief Create a menu item
*
* @param parent
@@ -167,25 +166,20 @@ public:
*
* The QAction that was created and added to this Menu
*/
static QAction* CreateItem(QObject* parent,
const QString& id,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member,
const QKeySequence &key = QKeySequence())
{
QAction* a = new QAction(parent);
static QAction *CreateItem(
QObject *parent, const QString &id,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member, const QKeySequence &key = QKeySequence())
{
QAction *a = new QAction(parent);
ConformItem(a,
id,
receiver,
member,
key);
ConformItem(a, id, receiver, member, key);
return a;
}
return a;
}
template <typename Func>
/**
template <typename Func>
/**
* @brief Conform a QAction to Olive's ID/keydefault system
*
* If a QAction was created elsewhere (e.g. through QUndoStack::createUndoAction()), this function will give it
@@ -211,30 +205,29 @@ public:
*
* Default keyboard sequence
*/
static void ConformItem(QAction *a,
const QString& id,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member,
const QKeySequence &key = QKeySequence())
{
ConformItem(a, id, key);
static void ConformItem(
QAction *a, const QString &id,
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member, const QKeySequence &key = QKeySequence())
{
ConformItem(a, id, key);
connect(a, &QAction::triggered, receiver, member);
}
connect(a, &QAction::triggered, receiver, member);
}
static void ConformItem(QAction *a,
const QString& id,
const QKeySequence &key = QKeySequence());
static void ConformItem(QAction *a, const QString &id,
const QKeySequence &key = QKeySequence());
private:
void Init();
template <typename Func>
void ConnectAboutToShow(const typename QtPrivate::FunctionPointer<Func>::Object *receiver, Func member)
{
connect(this, &Menu::aboutToShow, receiver, member);
}
void Init();
template <typename Func>
void ConnectAboutToShow(
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
Func member)
{
connect(this, &Menu::aboutToShow, receiver, member);
}
};
}
+248 -195
View File
@@ -27,373 +27,426 @@
#include "panel/timeline/timeline.h"
#include "window/mainwindow/mainwindow.h"
namespace olive {
namespace olive
{
MenuShared* MenuShared::instance_ = nullptr;
MenuShared *MenuShared::instance_ = nullptr;
MenuShared::MenuShared()
{
// "New" menu shared items
new_project_item_ = Menu::CreateItem(this, "newproj", Core::instance(), &Core::CreateNewProject, tr("Ctrl+N"));
new_sequence_item_ = Menu::CreateItem(this, "newseq", Core::instance(), &Core::CreateNewSequence, tr("Ctrl+Shift+N"));
new_folder_item_ = Menu::CreateItem(this, "newfolder", Core::instance(), &Core::CreateNewFolder);
// "New" menu shared items
new_project_item_ = Menu::CreateItem(this, "newproj", Core::instance(),
&Core::CreateNewProject, tr("Ctrl+N"));
new_sequence_item_ = Menu::CreateItem(this, "newseq", Core::instance(),
&Core::CreateNewSequence,
tr("Ctrl+Shift+N"));
new_folder_item_ = Menu::CreateItem(this, "newfolder", Core::instance(),
&Core::CreateNewFolder);
// "Edit" menu shared items
edit_cut_item_ = Menu::CreateItem(this, "cut", this, &MenuShared::CutTriggered, tr("Ctrl+X"));
edit_copy_item_ = Menu::CreateItem(this, "copy", this, &MenuShared::CopyTriggered, tr("Ctrl+C"));
edit_paste_item_ = Menu::CreateItem(this, "paste", this, &MenuShared::PasteTriggered, tr("Ctrl+V"));
edit_paste_insert_item_ = Menu::CreateItem(this, "pasteinsert", this, &MenuShared::PasteInsertTriggered, tr("Ctrl+Shift+V"));
edit_duplicate_item_ = Menu::CreateItem(this, "duplicate", this, &MenuShared::DuplicateTriggered, tr("Ctrl+D"));
edit_rename_item_ = Menu::CreateItem(this, "rename", this, &MenuShared::RenameSelectedTriggered, tr("F2"));
edit_delete_item_ = Menu::CreateItem(this, "delete", this, &MenuShared::DeleteSelectedTriggered, tr("Del"));
edit_ripple_delete_item_ = Menu::CreateItem(this, "rippledelete", this, &MenuShared::RippleDeleteTriggered, tr("Shift+Del"));
edit_split_item_ = Menu::CreateItem(this, "split", this, &MenuShared::SplitAtPlayheadTriggered, tr("Ctrl+K"));
edit_speedduration_item_ = Menu::CreateItem(this, "speeddur", this, &MenuShared::SpeedDurationTriggered, tr("Ctrl+R"));
// "Edit" menu shared items
edit_cut_item_ = Menu::CreateItem(this, "cut", this,
&MenuShared::CutTriggered, tr("Ctrl+X"));
edit_copy_item_ = Menu::CreateItem(
this, "copy", this, &MenuShared::CopyTriggered, tr("Ctrl+C"));
edit_paste_item_ = Menu::CreateItem(
this, "paste", this, &MenuShared::PasteTriggered, tr("Ctrl+V"));
edit_paste_insert_item_ =
Menu::CreateItem(this, "pasteinsert", this,
&MenuShared::PasteInsertTriggered, tr("Ctrl+Shift+V"));
edit_duplicate_item_ = Menu::CreateItem(
this, "duplicate", this, &MenuShared::DuplicateTriggered, tr("Ctrl+D"));
edit_rename_item_ = Menu::CreateItem(
this, "rename", this, &MenuShared::RenameSelectedTriggered, tr("F2"));
edit_delete_item_ = Menu::CreateItem(
this, "delete", this, &MenuShared::DeleteSelectedTriggered, tr("Del"));
edit_ripple_delete_item_ =
Menu::CreateItem(this, "rippledelete", this,
&MenuShared::RippleDeleteTriggered, tr("Shift+Del"));
edit_split_item_ = Menu::CreateItem(this, "split", this,
&MenuShared::SplitAtPlayheadTriggered,
tr("Ctrl+K"));
edit_speedduration_item_ =
Menu::CreateItem(this, "speeddur", this,
&MenuShared::SpeedDurationTriggered, tr("Ctrl+R"));
// List of addable items
for (int i=0;i<Tool::kAddableCount;i++) {
Tool::AddableObject t = static_cast<Tool::AddableObject>(i);
QAction *a = Menu::CreateItem(this, QStringLiteral("add:%1").arg(Tool::GetAddableObjectID(t)), this, &MenuShared::AddableItemTriggered);
a->setData(t);
addable_items_.append(a);
}
// List of addable items
for (int i = 0; i < Tool::kAddableCount; i++) {
Tool::AddableObject t = static_cast<Tool::AddableObject>(i);
QAction *a = Menu::CreateItem(
this, QStringLiteral("add:%1").arg(Tool::GetAddableObjectID(t)),
this, &MenuShared::AddableItemTriggered);
a->setData(t);
addable_items_.append(a);
}
// "In/Out" menu shared items
inout_set_in_item_ = Menu::CreateItem(this, "setinpoint", this, &MenuShared::SetInTriggered, tr("I"));
inout_set_out_item_ = Menu::CreateItem(this, "setoutpoint", this, &MenuShared::SetOutTriggered, tr("O"));
inout_reset_in_item_ = Menu::CreateItem(this, "resetin", this, &MenuShared::ResetInTriggered);
inout_reset_out_item_ = Menu::CreateItem(this, "resetout", this, &MenuShared::ResetOutTriggered);
inout_clear_inout_item_ = Menu::CreateItem(this, "clearinout", this, &MenuShared::ClearInOutTriggered, tr("G"));
// "In/Out" menu shared items
inout_set_in_item_ = Menu::CreateItem(this, "setinpoint", this,
&MenuShared::SetInTriggered, tr("I"));
inout_set_out_item_ = Menu::CreateItem(
this, "setoutpoint", this, &MenuShared::SetOutTriggered, tr("O"));
inout_reset_in_item_ =
Menu::CreateItem(this, "resetin", this, &MenuShared::ResetInTriggered);
inout_reset_out_item_ = Menu::CreateItem(this, "resetout", this,
&MenuShared::ResetOutTriggered);
inout_clear_inout_item_ = Menu::CreateItem(
this, "clearinout", this, &MenuShared::ClearInOutTriggered, tr("G"));
// "Clip Edit" menu shared items
clip_add_default_transition_item_ = Menu::CreateItem(this, "deftransition", this, &MenuShared::DefaultTransitionTriggered, tr("Ctrl+Shift+D"));
clip_link_unlink_item_ = Menu::CreateItem(this, "linkunlink", this, &MenuShared::ToggleLinksTriggered, tr("Ctrl+L"));
clip_enable_disable_item_ = Menu::CreateItem(this, "enabledisable", this, &MenuShared::EnableDisableTriggered, tr("Shift+E"));
clip_nest_item_ = Menu::CreateItem(this, "nest", this, &MenuShared::NestTriggered);
// "Clip Edit" menu shared items
clip_add_default_transition_item_ = Menu::CreateItem(
this, "deftransition", this, &MenuShared::DefaultTransitionTriggered,
tr("Ctrl+Shift+D"));
clip_link_unlink_item_ = Menu::CreateItem(this, "linkunlink", this,
&MenuShared::ToggleLinksTriggered,
tr("Ctrl+L"));
clip_enable_disable_item_ =
Menu::CreateItem(this, "enabledisable", this,
&MenuShared::EnableDisableTriggered, tr("Shift+E"));
clip_nest_item_ =
Menu::CreateItem(this, "nest", this, &MenuShared::NestTriggered);
// TimeRuler menu shared items
frame_view_mode_group_ = new QActionGroup(this);
// TimeRuler menu shared items
frame_view_mode_group_ = new QActionGroup(this);
view_timecode_view_dropframe_item_ = Menu::CreateItem(this, "modedropframe", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_dropframe_item_->setData(Timecode::kTimecodeDropFrame);
view_timecode_view_dropframe_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_dropframe_item_);
view_timecode_view_dropframe_item_ = Menu::CreateItem(
this, "modedropframe", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_dropframe_item_->setData(Timecode::kTimecodeDropFrame);
view_timecode_view_dropframe_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_dropframe_item_);
view_timecode_view_nondropframe_item_ = Menu::CreateItem(this, "modenondropframe", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_nondropframe_item_->setData(Timecode::kTimecodeNonDropFrame);
view_timecode_view_nondropframe_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_nondropframe_item_);
view_timecode_view_nondropframe_item_ = Menu::CreateItem(
this, "modenondropframe", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_nondropframe_item_->setData(
Timecode::kTimecodeNonDropFrame);
view_timecode_view_nondropframe_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_nondropframe_item_);
view_timecode_view_seconds_item_ = Menu::CreateItem(this, "modeseconds", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_seconds_item_->setData(Timecode::kTimecodeSeconds);
view_timecode_view_seconds_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_seconds_item_);
view_timecode_view_seconds_item_ = Menu::CreateItem(
this, "modeseconds", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_seconds_item_->setData(Timecode::kTimecodeSeconds);
view_timecode_view_seconds_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_seconds_item_);
view_timecode_view_frames_item_ = Menu::CreateItem(this, "modeframes", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_frames_item_->setData(Timecode::kFrames);
view_timecode_view_frames_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_frames_item_);
view_timecode_view_frames_item_ = Menu::CreateItem(
this, "modeframes", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_frames_item_->setData(Timecode::kFrames);
view_timecode_view_frames_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_frames_item_);
view_timecode_view_milliseconds_item_ = Menu::CreateItem(this, "milliseconds", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_milliseconds_item_->setData(Timecode::kMilliseconds);
view_timecode_view_milliseconds_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_milliseconds_item_);
view_timecode_view_milliseconds_item_ = Menu::CreateItem(
this, "milliseconds", this, &MenuShared::TimecodeDisplayTriggered);
view_timecode_view_milliseconds_item_->setData(Timecode::kMilliseconds);
view_timecode_view_milliseconds_item_->setCheckable(true);
frame_view_mode_group_->addAction(view_timecode_view_milliseconds_item_);
// Color coding menu items
color_coding_menu_ = new ColorLabelMenu();
connect(color_coding_menu_, &ColorLabelMenu::ColorSelected, this, &MenuShared::ColorLabelTriggered);
// Color coding menu items
color_coding_menu_ = new ColorLabelMenu();
connect(color_coding_menu_, &ColorLabelMenu::ColorSelected, this,
&MenuShared::ColorLabelTriggered);
Retranslate();
Retranslate();
}
MenuShared::~MenuShared()
{
delete color_coding_menu_;
delete color_coding_menu_;
}
void MenuShared::CreateInstance()
{
instance_ = new MenuShared();
instance_ = new MenuShared();
}
void MenuShared::DestroyInstance()
{
delete instance_;
delete instance_;
}
void MenuShared::AddItemsForNewMenu(Menu *m)
{
m->addAction(new_project_item_);
m->addSeparator();
m->addAction(new_sequence_item_);
m->addAction(new_folder_item_);
m->addAction(new_project_item_);
m->addSeparator();
m->addAction(new_sequence_item_);
m->addAction(new_folder_item_);
}
void MenuShared::AddItemsForEditMenu(Menu *m, bool for_clips)
{
m->addAction(Core::instance()->undo_stack()->GetUndoAction());
m->addAction(Core::instance()->undo_stack()->GetRedoAction());
m->addAction(Core::instance()->undo_stack()->GetUndoAction());
m->addAction(Core::instance()->undo_stack()->GetRedoAction());
m->addSeparator();
m->addSeparator();
m->addAction(edit_cut_item_);
m->addAction(edit_copy_item_);
m->addAction(edit_paste_item_);
m->addAction(edit_paste_insert_item_);
m->addAction(edit_duplicate_item_);
m->addAction(edit_rename_item_);
m->addAction(edit_delete_item_);
m->addAction(edit_cut_item_);
m->addAction(edit_copy_item_);
m->addAction(edit_paste_item_);
m->addAction(edit_paste_insert_item_);
m->addAction(edit_duplicate_item_);
m->addAction(edit_rename_item_);
m->addAction(edit_delete_item_);
if (for_clips) {
m->addAction(edit_ripple_delete_item_);
m->addAction(edit_split_item_);
m->addAction(edit_speedduration_item_);
if (for_clips) {
m->addAction(edit_ripple_delete_item_);
m->addAction(edit_split_item_);
m->addAction(edit_speedduration_item_);
m->addSeparator();
m->addSeparator();
m->addAction(clip_add_default_transition_item_);
m->addAction(clip_link_unlink_item_);
m->addAction(clip_enable_disable_item_);
m->addAction(clip_nest_item_);
}
m->addAction(clip_add_default_transition_item_);
m->addAction(clip_link_unlink_item_);
m->addAction(clip_enable_disable_item_);
m->addAction(clip_nest_item_);
}
}
void MenuShared::AddItemsForAddableObjectsMenu(Menu *m)
{
for (QAction *a : qAsConst(addable_items_)) {
a->setChecked((a->data().toInt() == Core::instance()->GetSelectedAddableObject()));
m->addAction(a);
}
for (QAction *a : qAsConst(addable_items_)) {
a->setChecked((a->data().toInt() ==
Core::instance()->GetSelectedAddableObject()));
m->addAction(a);
}
}
void MenuShared::AddItemsForInOutMenu(Menu *m)
{
m->addAction(inout_set_in_item_);
m->addAction(inout_set_out_item_);
m->addSeparator();
m->addAction(inout_reset_in_item_);
m->addAction(inout_reset_out_item_);
m->addAction(inout_clear_inout_item_);
m->addAction(inout_set_in_item_);
m->addAction(inout_set_out_item_);
m->addSeparator();
m->addAction(inout_reset_in_item_);
m->addAction(inout_reset_out_item_);
m->addAction(inout_clear_inout_item_);
}
void MenuShared::AddColorCodingMenu(Menu *m)
{
m->addMenu(color_coding_menu_);
m->addMenu(color_coding_menu_);
}
void MenuShared::AddItemsForClipEditMenu(Menu *m)
{
m->addAction(clip_add_default_transition_item_);
m->addAction(clip_link_unlink_item_);
m->addAction(clip_enable_disable_item_);
m->addAction(clip_nest_item_);
m->addAction(clip_add_default_transition_item_);
m->addAction(clip_link_unlink_item_);
m->addAction(clip_enable_disable_item_);
m->addAction(clip_nest_item_);
}
void MenuShared::AddItemsForTimeRulerMenu(Menu *m)
{
m->addAction(view_timecode_view_dropframe_item_);
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_);
m->addAction(view_timecode_view_dropframe_item_);
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_);
}
void MenuShared::AboutToShowTimeRulerActions(const rational& timebase)
void MenuShared::AboutToShowTimeRulerActions(const rational &timebase)
{
QList<QAction*> timecode_display_actions = frame_view_mode_group_->actions();
Timecode::Display current_timecode_display = Core::instance()->GetTimecodeDisplay();
QList<QAction *> timecode_display_actions =
frame_view_mode_group_->actions();
Timecode::Display current_timecode_display =
Core::instance()->GetTimecodeDisplay();
// Only show the drop-frame option if the timebase is drop-frame
view_timecode_view_dropframe_item_->setVisible(!timebase.isNull() && Timecode::timebase_is_drop_frame(timebase));
// Only show the drop-frame option if the timebase is drop-frame
view_timecode_view_dropframe_item_->setVisible(
!timebase.isNull() && Timecode::timebase_is_drop_frame(timebase));
if (!view_timecode_view_dropframe_item_->isVisible() && current_timecode_display == Timecode::kTimecodeDropFrame) {
// If the current setting is drop-frame, correct to non-drop frame
current_timecode_display = Timecode::kTimecodeNonDropFrame;
}
if (!view_timecode_view_dropframe_item_->isVisible() &&
current_timecode_display == Timecode::kTimecodeDropFrame) {
// If the current setting is drop-frame, correct to non-drop frame
current_timecode_display = Timecode::kTimecodeNonDropFrame;
}
foreach (QAction* a, timecode_display_actions) {
if (a->data() == current_timecode_display) {
a->setChecked(true);
break;
}
}
foreach (QAction *a, timecode_display_actions) {
if (a->data() == current_timecode_display) {
a->setChecked(true);
break;
}
}
}
MenuShared *MenuShared::instance()
{
return instance_;
return instance_;
}
void MenuShared::SplitAtPlayheadTriggered()
{
TimelinePanel* timeline = PanelManager::instance()->MostRecentlyFocused<TimelinePanel>();
TimelinePanel *timeline =
PanelManager::instance()->MostRecentlyFocused<TimelinePanel>();
if (timeline != nullptr) {
timeline->SplitAtPlayhead();
}
if (timeline != nullptr) {
timeline->SplitAtPlayhead();
}
}
void MenuShared::DeleteSelectedTriggered()
{
PanelManager::instance()->CurrentlyFocused()->DeleteSelected();
PanelManager::instance()->CurrentlyFocused()->DeleteSelected();
}
void MenuShared::RippleDeleteTriggered()
{
PanelManager::instance()->CurrentlyFocused()->RippleDelete();
PanelManager::instance()->CurrentlyFocused()->RippleDelete();
}
void MenuShared::SetInTriggered()
{
PanelManager::instance()->CurrentlyFocused()->SetIn();
PanelManager::instance()->CurrentlyFocused()->SetIn();
}
void MenuShared::SetOutTriggered()
{
PanelManager::instance()->CurrentlyFocused()->SetOut();
PanelManager::instance()->CurrentlyFocused()->SetOut();
}
void MenuShared::ResetInTriggered()
{
PanelManager::instance()->CurrentlyFocused()->ResetIn();
PanelManager::instance()->CurrentlyFocused()->ResetIn();
}
void MenuShared::ResetOutTriggered()
{
PanelManager::instance()->CurrentlyFocused()->ResetOut();
PanelManager::instance()->CurrentlyFocused()->ResetOut();
}
void MenuShared::ClearInOutTriggered()
{
PanelManager::instance()->CurrentlyFocused()->ClearInOut();
PanelManager::instance()->CurrentlyFocused()->ClearInOut();
}
void MenuShared::ToggleLinksTriggered()
{
PanelManager::instance()->CurrentlyFocused()->ToggleLinks();
PanelManager::instance()->CurrentlyFocused()->ToggleLinks();
}
void MenuShared::CutTriggered()
{
PanelManager::instance()->CurrentlyFocused()->CutSelected();
PanelManager::instance()->CurrentlyFocused()->CutSelected();
}
void MenuShared::CopyTriggered()
{
PanelManager::instance()->CurrentlyFocused()->CopySelected();
PanelManager::instance()->CurrentlyFocused()->CopySelected();
}
void MenuShared::PasteTriggered()
{
PanelManager::instance()->CurrentlyFocused()->Paste();
PanelManager::instance()->CurrentlyFocused()->Paste();
}
void MenuShared::PasteInsertTriggered()
{
PanelManager::instance()->CurrentlyFocused()->PasteInsert();
PanelManager::instance()->CurrentlyFocused()->PasteInsert();
}
void MenuShared::DuplicateTriggered()
{
PanelManager::instance()->CurrentlyFocused()->Duplicate();
PanelManager::instance()->CurrentlyFocused()->Duplicate();
}
void MenuShared::RenameSelectedTriggered()
{
PanelManager::instance()->CurrentlyFocused()->RenameSelected();
PanelManager::instance()->CurrentlyFocused()->RenameSelected();
}
void MenuShared::EnableDisableTriggered()
{
PanelManager::instance()->CurrentlyFocused()->ToggleSelectedEnabled();
PanelManager::instance()->CurrentlyFocused()->ToggleSelectedEnabled();
}
void MenuShared::NestTriggered()
{
PanelManager::instance()->MostRecentlyFocused<TimelinePanel>()->NestSelectedClips();
PanelManager::instance()
->MostRecentlyFocused<TimelinePanel>()
->NestSelectedClips();
}
void MenuShared::DefaultTransitionTriggered()
{
PanelManager::instance()->MostRecentlyFocused<TimelinePanel>()->AddDefaultTransitionsToSelected();
PanelManager::instance()
->MostRecentlyFocused<TimelinePanel>()
->AddDefaultTransitionsToSelected();
}
void MenuShared::TimecodeDisplayTriggered()
{
// Assume the sender is a QAction
QAction* action = static_cast<QAction*>(sender());
// Assume the sender is a QAction
QAction *action = static_cast<QAction *>(sender());
// Assume its data() is a member of Timecode::Display
Timecode::Display display = static_cast<Timecode::Display>(action->data().toInt());
// Assume its data() is a member of Timecode::Display
Timecode::Display display =
static_cast<Timecode::Display>(action->data().toInt());
// Set the current display mode
Core::instance()->SetTimecodeDisplay(display);
// Set the current display mode
Core::instance()->SetTimecodeDisplay(display);
}
void MenuShared::ColorLabelTriggered(int color_index)
{
PanelManager::instance()->CurrentlyFocused()->SetColorLabel(color_index);
PanelManager::instance()->CurrentlyFocused()->SetColorLabel(color_index);
}
void MenuShared::SpeedDurationTriggered()
{
TimelinePanel* timeline = PanelManager::instance()->MostRecentlyFocused<TimelinePanel>();
TimelinePanel *timeline =
PanelManager::instance()->MostRecentlyFocused<TimelinePanel>();
if (timeline) {
timeline->ShowSpeedDurationDialogForSelectedClips();
}
if (timeline) {
timeline->ShowSpeedDurationDialogForSelectedClips();
}
}
void MenuShared::AddableItemTriggered()
{
QAction *a = static_cast<QAction*>(sender());
Tool::AddableObject i = static_cast<Tool::AddableObject>(a->data().toInt());
Core::instance()->SetTool(Tool::kAdd);
Core::instance()->SetSelectedAddableObject(i);
QAction *a = static_cast<QAction *>(sender());
Tool::AddableObject i = static_cast<Tool::AddableObject>(a->data().toInt());
Core::instance()->SetTool(Tool::kAdd);
Core::instance()->SetSelectedAddableObject(i);
}
void MenuShared::Retranslate()
{
// "New" menu shared items
new_project_item_->setText(tr("&Project"));
new_sequence_item_->setText(tr("&Sequence"));
new_folder_item_->setText(tr("&Folder"));
// "New" menu shared items
new_project_item_->setText(tr("&Project"));
new_sequence_item_->setText(tr("&Sequence"));
new_folder_item_->setText(tr("&Folder"));
// "Edit" menu shared items
edit_cut_item_->setText(tr("Cu&t"));
edit_copy_item_->setText(tr("Cop&y"));
edit_paste_item_->setText(tr("&Paste"));
edit_paste_insert_item_->setText(tr("Paste Insert"));
edit_duplicate_item_->setText(tr("Duplicate"));
edit_rename_item_->setText(tr("Rename"));
edit_delete_item_->setText(tr("Delete"));
edit_ripple_delete_item_->setText(tr("Ripple Delete"));
edit_split_item_->setText(tr("Split"));
edit_speedduration_item_->setText(tr("Speed/Duration"));
// "Edit" menu shared items
edit_cut_item_->setText(tr("Cu&t"));
edit_copy_item_->setText(tr("Cop&y"));
edit_paste_item_->setText(tr("&Paste"));
edit_paste_insert_item_->setText(tr("Paste Insert"));
edit_duplicate_item_->setText(tr("Duplicate"));
edit_rename_item_->setText(tr("Rename"));
edit_delete_item_->setText(tr("Delete"));
edit_ripple_delete_item_->setText(tr("Ripple Delete"));
edit_split_item_->setText(tr("Split"));
edit_speedduration_item_->setText(tr("Speed/Duration"));
for (QAction *a : qAsConst(addable_items_)) {
a->setText(Tool::GetAddableObjectName(static_cast<Tool::AddableObject>(a->data().toInt())));
}
for (QAction *a : qAsConst(addable_items_)) {
a->setText(Tool::GetAddableObjectName(
static_cast<Tool::AddableObject>(a->data().toInt())));
}
// "In/Out" menu shared items
inout_set_in_item_->setText(tr("Set In Point"));
inout_set_out_item_->setText(tr("Set Out Point"));
inout_reset_in_item_->setText(tr("Reset In Point"));
inout_reset_out_item_->setText(tr("Reset Out Point"));
inout_clear_inout_item_->setText(tr("Clear In/Out Point"));
// "In/Out" menu shared items
inout_set_in_item_->setText(tr("Set In Point"));
inout_set_out_item_->setText(tr("Set Out Point"));
inout_reset_in_item_->setText(tr("Reset In Point"));
inout_reset_out_item_->setText(tr("Reset Out Point"));
inout_clear_inout_item_->setText(tr("Clear In/Out Point"));
// "Clip Edit" menu shared items
clip_add_default_transition_item_->setText(tr("Add Default Transition"));
clip_link_unlink_item_->setText(tr("Link/Unlink"));
clip_enable_disable_item_->setText(tr("Enable/Disable"));
clip_nest_item_->setText(tr("Nest"));
// "Clip Edit" menu shared items
clip_add_default_transition_item_->setText(tr("Add Default Transition"));
clip_link_unlink_item_->setText(tr("Link/Unlink"));
clip_enable_disable_item_->setText(tr("Enable/Disable"));
clip_nest_item_->setText(tr("Nest"));
// TimeRuler menu shared items
view_timecode_view_frames_item_->setText(tr("Frames"));
view_timecode_view_dropframe_item_->setText(tr("Drop Frame"));
view_timecode_view_nondropframe_item_->setText(tr("Non-Drop Frame"));
view_timecode_view_milliseconds_item_->setText(tr("Milliseconds"));
view_timecode_view_seconds_item_->setText(tr("Seconds"));
// TimeRuler menu shared items
view_timecode_view_frames_item_->setText(tr("Frames"));
view_timecode_view_dropframe_item_->setText(tr("Drop Frame"));
view_timecode_view_nondropframe_item_->setText(tr("Non-Drop Frame"));
view_timecode_view_milliseconds_item_->setText(tr("Milliseconds"));
view_timecode_view_seconds_item_->setText(tr("Seconds"));
}
}
+83 -84
View File
@@ -25,141 +25,140 @@
#include "widget/colorlabelmenu/colorlabelmenu.h"
#include "widget/menu/menu.h"
namespace olive {
namespace olive
{
using namespace core;
/**
* @brief A static object that provides various "stock" menus for use throughout the application
*/
class MenuShared : public QObject
{
Q_OBJECT
class MenuShared : public QObject {
Q_OBJECT
public:
MenuShared();
virtual ~MenuShared() override;
MenuShared();
virtual ~MenuShared() override;
static void CreateInstance();
static void DestroyInstance();
static void CreateInstance();
static void DestroyInstance();
void Retranslate();
void Retranslate();
void AddItemsForNewMenu(Menu* m);
void AddItemsForEditMenu(Menu* m, bool for_clips);
void AddItemsForAddableObjectsMenu(Menu* m);
void AddItemsForInOutMenu(Menu* m);
void AddColorCodingMenu(Menu* m);
void AddItemsForClipEditMenu(Menu* m);
void AddItemsForTimeRulerMenu(Menu* m);
void AddItemsForNewMenu(Menu *m);
void AddItemsForEditMenu(Menu *m, bool for_clips);
void AddItemsForAddableObjectsMenu(Menu *m);
void AddItemsForInOutMenu(Menu *m);
void AddColorCodingMenu(Menu *m);
void AddItemsForClipEditMenu(Menu *m);
void AddItemsForTimeRulerMenu(Menu *m);
void AboutToShowTimeRulerActions(const rational& timebase);
void AboutToShowTimeRulerActions(const rational &timebase);
static MenuShared* instance();
static MenuShared *instance();
QAction* edit_delete_item()
{
return edit_delete_item_;
}
QAction *edit_delete_item()
{
return edit_delete_item_;
}
public slots:
void DeleteSelectedTriggered();
void DeleteSelectedTriggered();
private:
// "New" menu shared items
QAction* new_project_item_;
QAction* new_sequence_item_;
QAction* new_folder_item_;
// "New" menu shared items
QAction *new_project_item_;
QAction *new_sequence_item_;
QAction *new_folder_item_;
// "Edit" menu shared items
QAction* edit_cut_item_;
QAction* edit_copy_item_;
QAction* edit_paste_item_;
QAction* edit_paste_insert_item_;
QAction* edit_duplicate_item_;
QAction* edit_rename_item_;
QAction* edit_delete_item_;
QAction* edit_ripple_delete_item_;
QAction* edit_split_item_;
QAction* edit_speedduration_item_;
// "Edit" menu shared items
QAction *edit_cut_item_;
QAction *edit_copy_item_;
QAction *edit_paste_item_;
QAction *edit_paste_insert_item_;
QAction *edit_duplicate_item_;
QAction *edit_rename_item_;
QAction *edit_delete_item_;
QAction *edit_ripple_delete_item_;
QAction *edit_split_item_;
QAction *edit_speedduration_item_;
// List of addable items
QVector<QAction*> addable_items_;
// List of addable items
QVector<QAction *> addable_items_;
// "In/Out" menu shared items
QAction* inout_set_in_item_;
QAction* inout_set_out_item_;
QAction* inout_reset_in_item_;
QAction* inout_reset_out_item_;
QAction* inout_clear_inout_item_;
// "In/Out" menu shared items
QAction *inout_set_in_item_;
QAction *inout_set_out_item_;
QAction *inout_reset_in_item_;
QAction *inout_reset_out_item_;
QAction *inout_clear_inout_item_;
// "Clip Edit" menu shared items
QAction* clip_add_default_transition_item_;
QAction* clip_link_unlink_item_;
QAction* clip_enable_disable_item_;
QAction* clip_nest_item_;
// "Clip Edit" menu shared items
QAction *clip_add_default_transition_item_;
QAction *clip_link_unlink_item_;
QAction *clip_enable_disable_item_;
QAction *clip_nest_item_;
// TimeRuler menu shared items
QActionGroup* frame_view_mode_group_;
QAction* view_timecode_view_dropframe_item_;
QAction* view_timecode_view_nondropframe_item_;
QAction* view_timecode_view_seconds_item_;
QAction* view_timecode_view_frames_item_;
QAction* view_timecode_view_milliseconds_item_;
// TimeRuler menu shared items
QActionGroup *frame_view_mode_group_;
QAction *view_timecode_view_dropframe_item_;
QAction *view_timecode_view_nondropframe_item_;
QAction *view_timecode_view_seconds_item_;
QAction *view_timecode_view_frames_item_;
QAction *view_timecode_view_milliseconds_item_;
// Color coding menu items
ColorLabelMenu* color_coding_menu_;
// Color coding menu items
ColorLabelMenu *color_coding_menu_;
static MenuShared* instance_;
static MenuShared *instance_;
private slots:
void SplitAtPlayheadTriggered();
void SplitAtPlayheadTriggered();
void RippleDeleteTriggered();
void RippleDeleteTriggered();
void SetInTriggered();
void SetInTriggered();
void SetOutTriggered();
void SetOutTriggered();
void ResetInTriggered();
void ResetInTriggered();
void ResetOutTriggered();
void ResetOutTriggered();
void ClearInOutTriggered();
void ClearInOutTriggered();
void ToggleLinksTriggered();
void ToggleLinksTriggered();
void CutTriggered();
void CutTriggered();
void CopyTriggered();
void CopyTriggered();
void PasteTriggered();
void PasteTriggered();
void PasteInsertTriggered();
void PasteInsertTriggered();
void DuplicateTriggered();
void DuplicateTriggered();
void RenameSelectedTriggered();
void RenameSelectedTriggered();
void EnableDisableTriggered();
void EnableDisableTriggered();
void NestTriggered();
void NestTriggered();
void DefaultTransitionTriggered();
void DefaultTransitionTriggered();
/**
/**
* @brief A slot for the timecode display menu items
*
* Assumes a QAction* sender() and its data() is a member of enum Timecode::Display. Uses the data() to signal a
* timecode change throughout the rest of the application.
*/
void TimecodeDisplayTriggered();
void TimecodeDisplayTriggered();
void ColorLabelTriggered(int color_index);
void ColorLabelTriggered(int color_index);
void SpeedDurationTriggered();
void AddableItemTriggered();
void SpeedDurationTriggered();
void AddableItemTriggered();
};
}