mainmenu/menushared: rewrote convenience functions to use new qt signal/slot syntax
Code improvement
This commit is contained in:
+10
-48
@@ -24,28 +24,18 @@
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
Menu::Menu(QMenuBar *bar, const QObject* receiver, const char* member) :
|
||||
QMenu(bar)
|
||||
Menu::Menu(QMenuBar *bar)
|
||||
{
|
||||
StyleManager::UseNativeWindowsStyling(this);
|
||||
|
||||
bar->addMenu(this);
|
||||
|
||||
if (receiver != nullptr) {
|
||||
connect(this, SIGNAL(aboutToShow()), receiver, member);
|
||||
}
|
||||
Init();
|
||||
}
|
||||
|
||||
Menu::Menu(Menu *menu, const QObject *receiver, const char *member) :
|
||||
QMenu(menu)
|
||||
Menu::Menu(Menu *menu)
|
||||
{
|
||||
StyleManager::UseNativeWindowsStyling(this);
|
||||
|
||||
menu->addMenu(this);
|
||||
|
||||
if (receiver != nullptr) {
|
||||
connect(this, SIGNAL(aboutToShow()), receiver, member);
|
||||
}
|
||||
Init();
|
||||
}
|
||||
|
||||
Menu::Menu(QWidget *parent) :
|
||||
@@ -60,18 +50,6 @@ Menu::Menu(const QString &s, QWidget *parent) :
|
||||
StyleManager::UseNativeWindowsStyling(this);
|
||||
}
|
||||
|
||||
QAction *Menu::AddItem(const QString &id,
|
||||
const QObject *receiver,
|
||||
const char *member,
|
||||
const QString &key)
|
||||
{
|
||||
QAction* a = CreateItem(this, id, receiver, member, key);
|
||||
|
||||
addAction(a);
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
QAction* Menu::InsertAlphabetically(const QString &s)
|
||||
{
|
||||
QAction* action = new QAction(s);
|
||||
@@ -100,24 +78,7 @@ void Menu::InsertAlphabetically(Menu *menu)
|
||||
InsertAlphabetically(action);
|
||||
}
|
||||
|
||||
QAction *Menu::CreateItem(QObject* parent,
|
||||
const QString &id,
|
||||
const QObject *receiver,
|
||||
const char *member,
|
||||
const QString &key)
|
||||
{
|
||||
QAction* a = new QAction(parent);
|
||||
|
||||
ConformItem(a,
|
||||
id,
|
||||
receiver,
|
||||
member,
|
||||
key);
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
void Menu::ConformItem(QAction* a, const QString &id, const QObject *receiver, const char *member, const QString &key)
|
||||
void Menu::ConformItem(QAction *a, const QString &id, const QString &key)
|
||||
{
|
||||
a->setProperty("id", id);
|
||||
|
||||
@@ -128,10 +89,6 @@ void Menu::ConformItem(QAction* a, const QString &id, const QObject *receiver, c
|
||||
// Set to application context so that ViewerWindows still trigger shortcuts
|
||||
a->setShortcutContext(Qt::ApplicationShortcut);
|
||||
}
|
||||
|
||||
if (receiver != nullptr) {
|
||||
connect(a, SIGNAL(triggered(bool)), receiver, member);
|
||||
}
|
||||
}
|
||||
|
||||
void Menu::SetBooleanAction(QAction *a, bool* boolean)
|
||||
@@ -142,4 +99,9 @@ void Menu::SetBooleanAction(QAction *a, bool* boolean)
|
||||
a->setProperty("boolptr", reinterpret_cast<quintptr>(boolean));
|
||||
}
|
||||
|
||||
void Menu::Init()
|
||||
{
|
||||
StyleManager::UseNativeWindowsStyling(this);
|
||||
}
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
+70
-10
@@ -23,6 +23,7 @@
|
||||
|
||||
#include <QMenuBar>
|
||||
#include <QMenu>
|
||||
#include <QMetaMethod>
|
||||
|
||||
#include "common/define.h"
|
||||
|
||||
@@ -46,21 +47,43 @@ OLIVE_NAMESPACE_ENTER
|
||||
class Menu : public QMenu
|
||||
{
|
||||
public:
|
||||
Menu(QMenuBar* bar);
|
||||
|
||||
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 QObject* receiver = nullptr, const char* member = nullptr);
|
||||
Menu(QMenuBar* bar,
|
||||
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
|
||||
Func member)
|
||||
{
|
||||
bar->addMenu(this);
|
||||
|
||||
Init();
|
||||
ConnectAboutToShow(receiver, member);
|
||||
}
|
||||
|
||||
Menu(Menu* menu);
|
||||
|
||||
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* bar, const QObject* receiver = nullptr, const char* member = nullptr);
|
||||
Menu(Menu* menu,
|
||||
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
|
||||
Func member)
|
||||
{
|
||||
menu->addMenu(this);
|
||||
|
||||
Init();
|
||||
ConnectAboutToShow(receiver, member);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Construct a popup menu
|
||||
@@ -72,6 +95,7 @@ public:
|
||||
*/
|
||||
Menu(const QString& s, QWidget* parent = nullptr);
|
||||
|
||||
template <typename Func>
|
||||
/**
|
||||
* @brief Create a menu item and add it to this menu
|
||||
*
|
||||
@@ -96,14 +120,22 @@ public:
|
||||
* The QAction that was created and added to this Menu
|
||||
*/
|
||||
QAction* AddItem(const QString& id,
|
||||
const QObject* receiver,
|
||||
const char* member,
|
||||
const QString &key = QString());
|
||||
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
|
||||
Func member,
|
||||
const QString &key = QString())
|
||||
{
|
||||
QAction* a = CreateItem(this, id, receiver, member, key);
|
||||
|
||||
addAction(a);
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
QAction *InsertAlphabetically(const QString& s);
|
||||
void InsertAlphabetically(QAction* entry);
|
||||
void InsertAlphabetically(Menu* menu);
|
||||
|
||||
template <typename Func>
|
||||
/**
|
||||
* @brief Create a menu item
|
||||
*
|
||||
@@ -133,10 +165,22 @@ public:
|
||||
*/
|
||||
static QAction* CreateItem(QObject* parent,
|
||||
const QString& id,
|
||||
const QObject* receiver,
|
||||
const char* member,
|
||||
const QString& key = QString());
|
||||
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
|
||||
Func member,
|
||||
const QString& key = QString())
|
||||
{
|
||||
QAction* a = new QAction(parent);
|
||||
|
||||
ConformItem(a,
|
||||
id,
|
||||
receiver,
|
||||
member,
|
||||
key);
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
template <typename Func>
|
||||
/**
|
||||
* @brief Conform a QAction to Olive's ID/keydefault system
|
||||
*
|
||||
@@ -165,13 +209,29 @@ public:
|
||||
*/
|
||||
static void ConformItem(QAction *a,
|
||||
const QString& id,
|
||||
const QObject* receiver,
|
||||
const char* member,
|
||||
const typename QtPrivate::FunctionPointer<Func>::Object *receiver,
|
||||
Func member,
|
||||
const QString& key = QString())
|
||||
{
|
||||
ConformItem(a, id, key);
|
||||
|
||||
connect(a, &QAction::triggered, receiver, member);
|
||||
}
|
||||
|
||||
static void ConformItem(QAction *a,
|
||||
const QString& id,
|
||||
const QString& key = QString());
|
||||
|
||||
static void SetBooleanAction(QAction* a, bool *boolean);
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
template <typename Func>
|
||||
void ConnectAboutToShow(const typename QtPrivate::FunctionPointer<Func>::Object *receiver, Func member)
|
||||
{
|
||||
connect(this, &Menu::aboutToShow, receiver, member);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -31,32 +31,32 @@ MenuShared* MenuShared::instance_ = nullptr;
|
||||
MenuShared::MenuShared()
|
||||
{
|
||||
// "New" menu shared items
|
||||
new_project_item_ = Menu::CreateItem(this, "newproj", nullptr, nullptr, "Ctrl+N");
|
||||
new_sequence_item_ = Menu::CreateItem(this, "newseq", Core::instance(), SLOT(CreateNewSequence()), "Ctrl+Shift+N");
|
||||
new_folder_item_ = Menu::CreateItem(this, "newfolder", Core::instance(), SLOT(CreateNewFolder()));
|
||||
new_project_item_ = Menu::CreateItem(this, "newproj", this, &MenuShared::NewProjectTriggered, "Ctrl+N");
|
||||
new_sequence_item_ = Menu::CreateItem(this, "newseq", Core::instance(), &Core::CreateNewSequence, "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, SLOT(CutTriggered()), "Ctrl+X");
|
||||
edit_copy_item_ = Menu::CreateItem(this, "copy", this, SLOT(CopyTriggered()), "Ctrl+C");
|
||||
edit_paste_item_ = Menu::CreateItem(this, "paste", this, SLOT(PasteTriggered()), "Ctrl+V");
|
||||
edit_paste_insert_item_ = Menu::CreateItem(this, "pasteinsert", this, SLOT(PasteInsertTriggered()), "Ctrl+Shift+V");
|
||||
edit_duplicate_item_ = Menu::CreateItem(this, "duplicate", nullptr, nullptr, "Ctrl+D");
|
||||
edit_delete_item_ = Menu::CreateItem(this, "delete", this, SLOT(DeleteSelectedTriggered()), "Del");
|
||||
edit_ripple_delete_item_ = Menu::CreateItem(this, "rippledelete", this, SLOT(RippleDeleteTriggered()), "Shift+Del");
|
||||
edit_split_item_ = Menu::CreateItem(this, "split", this, SLOT(SplitAtPlayheadTriggered()), "Ctrl+K");
|
||||
edit_cut_item_ = Menu::CreateItem(this, "cut", this, &MenuShared::CutTriggered, "Ctrl+X");
|
||||
edit_copy_item_ = Menu::CreateItem(this, "copy", this, &MenuShared::CopyTriggered, "Ctrl+C");
|
||||
edit_paste_item_ = Menu::CreateItem(this, "paste", this, &MenuShared::PasteTriggered, "Ctrl+V");
|
||||
edit_paste_insert_item_ = Menu::CreateItem(this, "pasteinsert", this, &MenuShared::PasteInsertTriggered, "Ctrl+Shift+V");
|
||||
edit_duplicate_item_ = Menu::CreateItem(this, "duplicate", this, &MenuShared::DuplicateTriggered, "Ctrl+D");
|
||||
edit_delete_item_ = Menu::CreateItem(this, "delete", this, &MenuShared::DeleteSelectedTriggered, "Del");
|
||||
edit_ripple_delete_item_ = Menu::CreateItem(this, "rippledelete", this, &MenuShared::RippleDeleteTriggered, "Shift+Del");
|
||||
edit_split_item_ = Menu::CreateItem(this, "split", this, &MenuShared::SplitAtPlayheadTriggered, "Ctrl+K");
|
||||
|
||||
// "In/Out" menu shared items
|
||||
inout_set_in_item_ = Menu::CreateItem(this, "setinpoint", this, SLOT(SetInTriggered()), "I");
|
||||
inout_set_out_item_ = Menu::CreateItem(this, "setoutpoint", this, SLOT(SetOutTriggered()), "O");
|
||||
inout_reset_in_item_ = Menu::CreateItem(this, "resetin", this, SLOT(ResetInTriggered()));
|
||||
inout_reset_out_item_ = Menu::CreateItem(this, "resetout", this, SLOT(ResetOutTriggered()));
|
||||
inout_clear_inout_item_ = Menu::CreateItem(this, "clearinout", this, SLOT(ClearInOutTriggered()), "G");
|
||||
inout_set_in_item_ = Menu::CreateItem(this, "setinpoint", this, &MenuShared::SetInTriggered, "I");
|
||||
inout_set_out_item_ = Menu::CreateItem(this, "setoutpoint", this, &MenuShared::SetOutTriggered, "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, "G");
|
||||
|
||||
// "Clip Edit" menu shared items
|
||||
clip_add_default_transition_item_ = Menu::CreateItem(this, "deftransition", nullptr, nullptr, "Ctrl+Shift+D");
|
||||
clip_link_unlink_item_ = Menu::CreateItem(this, "linkunlink", this, SLOT(ToggleLinksTriggered()), "Ctrl+L");
|
||||
clip_enable_disable_item_ = Menu::CreateItem(this, "enabledisable", nullptr, nullptr, "Shift+E");
|
||||
clip_nest_item_ = Menu::CreateItem(this, "nest", nullptr, nullptr);
|
||||
clip_add_default_transition_item_ = Menu::CreateItem(this, "deftransition", this, &MenuShared::DefaultTransitionTriggered, "Ctrl+Shift+D");
|
||||
clip_link_unlink_item_ = Menu::CreateItem(this, "linkunlink", this, &MenuShared::ToggleLinksTriggered, "Ctrl+L");
|
||||
clip_enable_disable_item_ = Menu::CreateItem(this, "enabledisable", this, &MenuShared::EnableDisableTriggered, "Shift+E");
|
||||
clip_nest_item_ = Menu::CreateItem(this, "nest", this, &MenuShared::NestTriggered);
|
||||
|
||||
Retranslate();
|
||||
}
|
||||
@@ -114,6 +114,11 @@ MenuShared *MenuShared::instance()
|
||||
return instance_;
|
||||
}
|
||||
|
||||
void MenuShared::NewProjectTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MenuShared::SplitAtPlayheadTriggered()
|
||||
{
|
||||
TimelinePanel* timeline = PanelManager::instance()->MostRecentlyFocused<TimelinePanel>();
|
||||
@@ -183,6 +188,26 @@ void MenuShared::PasteInsertTriggered()
|
||||
PanelManager::instance()->CurrentlyFocused()->PasteInsert();
|
||||
}
|
||||
|
||||
void MenuShared::DuplicateTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MenuShared::EnableDisableTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MenuShared::NestTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MenuShared::DefaultTransitionTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MenuShared::Retranslate()
|
||||
{
|
||||
// "New" menu shared items
|
||||
|
||||
@@ -77,6 +77,8 @@ private:
|
||||
static MenuShared* instance_;
|
||||
|
||||
private slots:
|
||||
void NewProjectTriggered();
|
||||
|
||||
void SplitAtPlayheadTriggered();
|
||||
|
||||
void DeleteSelectedTriggered();
|
||||
@@ -103,6 +105,14 @@ private slots:
|
||||
|
||||
void PasteInsertTriggered();
|
||||
|
||||
void DuplicateTriggered();
|
||||
|
||||
void EnableDisableTriggered();
|
||||
|
||||
void NestTriggered();
|
||||
|
||||
void DefaultTransitionTriggered();
|
||||
|
||||
};
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
+111
-116
@@ -35,7 +35,7 @@
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
MainMenu::MainMenu(QMainWindow *parent) :
|
||||
MainMenu::MainMenu(MainWindow *parent) :
|
||||
QMenuBar(parent)
|
||||
{
|
||||
StyleManager::UseNativeWindowsStyling(this);
|
||||
@@ -43,22 +43,22 @@ MainMenu::MainMenu(QMainWindow *parent) :
|
||||
//
|
||||
// FILE MENU
|
||||
//
|
||||
file_menu_ = new Menu(this, this, SLOT(FileMenuAboutToShow()));
|
||||
file_menu_ = new Menu(this, this, &MainMenu::FileMenuAboutToShow);
|
||||
file_new_menu_ = new Menu(file_menu_);
|
||||
MenuShared::instance()->AddItemsForNewMenu(file_new_menu_);
|
||||
file_open_item_ = file_menu_->AddItem("openproj", Core::instance(), SLOT(OpenProject()), "Ctrl+O");
|
||||
file_open_item_ = file_menu_->AddItem("openproj", Core::instance(), &Core::OpenProject, "Ctrl+O");
|
||||
file_open_recent_menu_ = new Menu(file_menu_);
|
||||
file_open_recent_clear_item_ = file_open_recent_menu_->AddItem("clearopenrecent", nullptr, nullptr);
|
||||
file_save_item_ = file_menu_->AddItem("saveproj", Core::instance(), SLOT(SaveActiveProject()), "Ctrl+S");
|
||||
file_save_as_item_ = file_menu_->AddItem("saveprojas", Core::instance(), SLOT(SaveActiveProjectAs()), "Ctrl+Shift+S");
|
||||
file_open_recent_clear_item_ = file_open_recent_menu_->AddItem("clearopenrecent", this, &MainMenu::ClearOpenRecentTriggered);
|
||||
file_save_item_ = file_menu_->AddItem("saveproj", Core::instance(), &Core::SaveActiveProject, "Ctrl+S");
|
||||
file_save_as_item_ = file_menu_->AddItem("saveprojas", Core::instance(), &Core::SaveActiveProjectAs, "Ctrl+Shift+S");
|
||||
file_menu_->addSeparator();
|
||||
file_import_item_ = file_menu_->AddItem("import", Core::instance(), SLOT(DialogImportShow()), "Ctrl+I");
|
||||
file_import_item_ = file_menu_->AddItem("import", Core::instance(), &Core::DialogImportShow, "Ctrl+I");
|
||||
file_menu_->addSeparator();
|
||||
file_export_item_ = file_menu_->AddItem("export", Core::instance(), SLOT(DialogExportShow()), "Ctrl+M");
|
||||
file_export_item_ = file_menu_->AddItem("export", Core::instance(), &Core::DialogExportShow, "Ctrl+M");
|
||||
file_menu_->addSeparator();
|
||||
file_project_properties_item_ = file_menu_->AddItem("projectproperties", Core::instance(), SLOT(DialogProjectPropertiesShow()));
|
||||
file_project_properties_item_ = file_menu_->AddItem("projectproperties", Core::instance(), &Core::DialogProjectPropertiesShow);
|
||||
file_menu_->addSeparator();
|
||||
file_exit_item_ = file_menu_->AddItem("exit", parent, SLOT(close()), "Ctrl+Q");
|
||||
file_exit_item_ = file_menu_->AddItem("exit", parent, &MainWindow::close, "Ctrl+Q");
|
||||
|
||||
//
|
||||
// EDIT MENU
|
||||
@@ -66,236 +66,200 @@ MainMenu::MainMenu(QMainWindow *parent) :
|
||||
edit_menu_ = new Menu(this);
|
||||
|
||||
edit_undo_item_ = Core::instance()->undo_stack()->createUndoAction(this);
|
||||
Menu::ConformItem(edit_undo_item_, "undo", nullptr, nullptr, "Ctrl+Z");
|
||||
Menu::ConformItem(edit_undo_item_, "undo", "Ctrl+Z");
|
||||
edit_menu_->addAction(edit_undo_item_);
|
||||
edit_redo_item_ = Core::instance()->undo_stack()->createRedoAction(this);
|
||||
Menu::ConformItem(edit_redo_item_, "redo", nullptr, nullptr, "Ctrl+Shift+Z");
|
||||
Menu::ConformItem(edit_redo_item_, "redo", "Ctrl+Shift+Z");
|
||||
edit_menu_->addAction(edit_redo_item_);
|
||||
|
||||
edit_menu_->addSeparator();
|
||||
MenuShared::instance()->AddItemsForEditMenu(edit_menu_);
|
||||
edit_menu_->addSeparator();
|
||||
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_select_all_item_ = edit_menu_->AddItem("selectall", this, &MainMenu::SelectAllTriggered, "Ctrl+A");
|
||||
edit_deselect_all_item_ = edit_menu_->AddItem("deselectall", this, &MainMenu::DeselectAllTriggered, "Ctrl+Shift+A");
|
||||
edit_menu_->addSeparator();
|
||||
MenuShared::instance()->AddItemsForClipEditMenu(edit_menu_);
|
||||
edit_menu_->addSeparator();
|
||||
edit_insert_item_ = edit_menu_->AddItem("insert", this, SLOT(InsertTriggered()), ",");
|
||||
edit_overwrite_item_ = edit_menu_->AddItem("overwrite", this, SLOT(OverwriteTriggered()), ".");
|
||||
edit_insert_item_ = edit_menu_->AddItem("insert", this, &MainMenu::InsertTriggered, ",");
|
||||
edit_overwrite_item_ = edit_menu_->AddItem("overwrite", this, &MainMenu::OverwriteTriggered, ".");
|
||||
edit_menu_->addSeparator();
|
||||
edit_ripple_to_in_item_ = edit_menu_->AddItem("rippletoin", this, SLOT(RippleToInTriggered()), "Q");
|
||||
edit_ripple_to_out_item_ = edit_menu_->AddItem("rippletoout", this, SLOT(RippleToOutTriggered()), "W");
|
||||
edit_edit_to_in_item_ = edit_menu_->AddItem("edittoin", this, SLOT(EditToInTriggered()), "Ctrl+Alt+Q");
|
||||
edit_edit_to_out_item_ = edit_menu_->AddItem("edittoout", this, SLOT(EditToOutTriggered()), "Ctrl+Alt+W");
|
||||
edit_ripple_to_in_item_ = edit_menu_->AddItem("rippletoin", this, &MainMenu::RippleToInTriggered, "Q");
|
||||
edit_ripple_to_out_item_ = edit_menu_->AddItem("rippletoout", this, &MainMenu::RippleToOutTriggered, "W");
|
||||
edit_edit_to_in_item_ = edit_menu_->AddItem("edittoin", this, &MainMenu::EditToInTriggered, "Ctrl+Alt+Q");
|
||||
edit_edit_to_out_item_ = edit_menu_->AddItem("edittoout", this, &MainMenu::EditToOutTriggered, "Ctrl+Alt+W");
|
||||
edit_menu_->addSeparator();
|
||||
MenuShared::instance()->AddItemsForInOutMenu(edit_menu_);
|
||||
edit_delete_inout_item_ = edit_menu_->AddItem("deleteinout", nullptr, nullptr, ";");
|
||||
edit_ripple_delete_inout_item_ = edit_menu_->AddItem("rippledeleteinout", nullptr, nullptr, "'");
|
||||
edit_delete_inout_item_ = edit_menu_->AddItem("deleteinout", this, &MainMenu::DeleteInOutTriggered, ";");
|
||||
edit_ripple_delete_inout_item_ = edit_menu_->AddItem("rippledeleteinout", this, &MainMenu::RippleDeleteInOutTriggered, "'");
|
||||
edit_menu_->addSeparator();
|
||||
edit_set_marker_item_ = edit_menu_->AddItem("marker", this, SLOT(SetMarkerTriggered()), "M");
|
||||
edit_set_marker_item_ = edit_menu_->AddItem("marker", this, &MainMenu::SetMarkerTriggered, "M");
|
||||
|
||||
//
|
||||
// VIEW MENU
|
||||
//
|
||||
view_menu_ = new Menu(this, this, SLOT(ViewMenuAboutToShow()));
|
||||
view_zoom_in_item_ = view_menu_->AddItem("zoomin", this, SLOT(ZoomInTriggered()), "=");
|
||||
view_zoom_out_item_ = view_menu_->AddItem("zoomout", this, SLOT(ZoomOutTriggered()), "-");
|
||||
view_increase_track_height_item_ = view_menu_->AddItem("vzoomin", this, SLOT(IncreaseTrackHeightTriggered()), "Ctrl+=");
|
||||
view_decrease_track_height_item_ = view_menu_->AddItem("vzoomout", this, SLOT(DecreaseTrackHeightTriggered()), "Ctrl+-");
|
||||
view_show_all_item_ = view_menu_->AddItem("showall", this, SLOT(ToggleShowAllTriggered()), "\\");
|
||||
view_menu_ = new Menu(this, this, &MainMenu::ViewMenuAboutToShow);
|
||||
view_zoom_in_item_ = view_menu_->AddItem("zoomin", this, &MainMenu::ZoomInTriggered, "=");
|
||||
view_zoom_out_item_ = view_menu_->AddItem("zoomout", this, &MainMenu::ZoomOutTriggered, "-");
|
||||
view_increase_track_height_item_ = view_menu_->AddItem("vzoomin", this, &MainMenu::IncreaseTrackHeightTriggered, "Ctrl+=");
|
||||
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();
|
||||
|
||||
frame_view_mode_group_ = new QActionGroup(this);
|
||||
|
||||
view_timecode_view_dropframe_item_ = view_menu_->AddItem("modedropframe", this, SLOT(TimecodeDisplayTriggered()));
|
||||
view_timecode_view_dropframe_item_ = view_menu_->AddItem("modedropframe", this, &MainMenu::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_ = view_menu_->AddItem("modenondropframe", this, SLOT(TimecodeDisplayTriggered()));
|
||||
view_timecode_view_nondropframe_item_ = view_menu_->AddItem("modenondropframe", this, &MainMenu::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_ = view_menu_->AddItem("modeseconds", this, SLOT(TimecodeDisplayTriggered()));
|
||||
view_timecode_view_seconds_item_ = view_menu_->AddItem("modeseconds", this, &MainMenu::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_ = view_menu_->AddItem("modeframes", this, SLOT(TimecodeDisplayTriggered()));
|
||||
view_timecode_view_frames_item_ = view_menu_->AddItem("modeframes", this, &MainMenu::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_ = view_menu_->AddItem("milliseconds", this, SLOT(TimecodeDisplayTriggered()));
|
||||
view_timecode_view_milliseconds_item_ = view_menu_->AddItem("milliseconds", this, &MainMenu::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_menu_->addSeparator();
|
||||
|
||||
view_title_safe_area_menu_ = new Menu(view_menu_);
|
||||
|
||||
QActionGroup* title_safe_group = new QActionGroup(this);
|
||||
|
||||
title_safe_off_item_ = view_title_safe_area_menu_->AddItem("titlesafeoff", nullptr, nullptr);
|
||||
title_safe_off_item_->setCheckable(true);
|
||||
title_safe_off_item_->setData(qSNaN());
|
||||
title_safe_group->addAction(title_safe_off_item_);
|
||||
|
||||
title_safe_default_item_ = view_title_safe_area_menu_->AddItem("titlesafedefault", nullptr, nullptr);
|
||||
title_safe_default_item_->setCheckable(true);
|
||||
title_safe_default_item_->setData(0.0);
|
||||
title_safe_group->addAction(title_safe_default_item_);
|
||||
|
||||
title_safe_43_item_ = view_title_safe_area_menu_->AddItem("titlesafe43", nullptr, nullptr);
|
||||
title_safe_43_item_->setCheckable(true);
|
||||
title_safe_43_item_->setData(4.0/3.0);
|
||||
title_safe_group->addAction(title_safe_43_item_);
|
||||
|
||||
title_safe_169_item_ = view_title_safe_area_menu_->AddItem("titlesafe169", nullptr, nullptr);
|
||||
title_safe_169_item_->setCheckable(true);
|
||||
title_safe_169_item_->setData(16.0/9.0);
|
||||
title_safe_group->addAction(title_safe_169_item_);
|
||||
|
||||
title_safe_custom_item_ = view_title_safe_area_menu_->AddItem("titlesafecustom", nullptr, nullptr);
|
||||
title_safe_custom_item_->setCheckable(true);
|
||||
title_safe_custom_item_->setData(-1.0);
|
||||
title_safe_group->addAction(title_safe_custom_item_);
|
||||
|
||||
view_menu_->addSeparator();
|
||||
|
||||
view_full_screen_item_ = view_menu_->AddItem("fullscreen", parent, SLOT(SetFullscreen(bool)), "F11");
|
||||
view_full_screen_item_ = view_menu_->AddItem("fullscreen", parent, &MainWindow::SetFullscreen, "F11");
|
||||
view_full_screen_item_->setCheckable(true);
|
||||
|
||||
view_full_screen_viewer_item_ = view_menu_->AddItem("fullscreenviewer", this, SLOT(FullScreenViewerTriggered()));
|
||||
view_full_screen_viewer_item_ = view_menu_->AddItem("fullscreenviewer", this, &MainMenu::FullScreenViewerTriggered);
|
||||
|
||||
//
|
||||
// PLAYBACK MENU
|
||||
//
|
||||
playback_menu_ = new Menu(this);
|
||||
playback_gotostart_item_ = playback_menu_->AddItem("gotostart", this, SLOT(GoToStartTriggered()), "Home");
|
||||
playback_prevframe_item_ = playback_menu_->AddItem("prevframe", this, SLOT(PrevFrameTriggered()), "Left");
|
||||
playback_playpause_item_ = playback_menu_->AddItem("playpause", this, SLOT(PlayPauseTriggered()), "Space");
|
||||
playback_playinout_item_ = playback_menu_->AddItem("playintoout", nullptr, nullptr, "Shift+Space");
|
||||
playback_nextframe_item_ = playback_menu_->AddItem("nextframe", this, SLOT(NextFrameTriggered()), "Right");
|
||||
playback_gotoend_item_ = playback_menu_->AddItem("gotoend", this, SLOT(GoToEndTriggered()), "End");
|
||||
playback_gotostart_item_ = playback_menu_->AddItem("gotostart", this, &MainMenu::GoToStartTriggered, "Home");
|
||||
playback_prevframe_item_ = playback_menu_->AddItem("prevframe", this, &MainMenu::PrevFrameTriggered, "Left");
|
||||
playback_playpause_item_ = playback_menu_->AddItem("playpause", this, &MainMenu::PlayPauseTriggered, "Space");
|
||||
playback_playinout_item_ = playback_menu_->AddItem("playintoout", this, &MainMenu::PlayInToOutTriggered, "Shift+Space");
|
||||
playback_nextframe_item_ = playback_menu_->AddItem("nextframe", this, &MainMenu::NextFrameTriggered, "Right");
|
||||
playback_gotoend_item_ = playback_menu_->AddItem("gotoend", this, &MainMenu::GoToEndTriggered, "End");
|
||||
|
||||
playback_menu_->addSeparator();
|
||||
|
||||
playback_prevcut_item_ = playback_menu_->AddItem("prevcut", this, SLOT(GoToPrevCutTriggered()), "Up");
|
||||
playback_nextcut_item_ = playback_menu_->AddItem("nextcut", this, SLOT(GoToNextCutTriggered()), "Down");
|
||||
playback_prevcut_item_ = playback_menu_->AddItem("prevcut", this, &MainMenu::GoToPrevCutTriggered, "Up");
|
||||
playback_nextcut_item_ = playback_menu_->AddItem("nextcut", this, &MainMenu::GoToNextCutTriggered, "Down");
|
||||
|
||||
playback_menu_->addSeparator();
|
||||
|
||||
playback_gotoin_item_ = playback_menu_->AddItem("gotoin", nullptr, nullptr, "Shift+I");
|
||||
playback_gotoout_item_ = playback_menu_->AddItem("gotoout", nullptr, nullptr, "Shift+O");
|
||||
playback_gotoin_item_ = playback_menu_->AddItem("gotoin", this, &MainMenu::GoToInTriggered, "Shift+I");
|
||||
playback_gotoout_item_ = playback_menu_->AddItem("gotoout", this, &MainMenu::GoToOutTriggered, "Shift+O");
|
||||
|
||||
playback_menu_->addSeparator();
|
||||
|
||||
playback_shuttleleft_item_ = playback_menu_->AddItem("decspeed", this, SLOT(ShuttleLeftTriggered()), "J");
|
||||
playback_shuttlestop_item_ = playback_menu_->AddItem("pause", this, SLOT(ShuttleStopTriggered()), "K");
|
||||
playback_shuttleright_item_ = playback_menu_->AddItem("incspeed", this, SLOT(ShuttleRightTriggered()), "L");
|
||||
playback_shuttleleft_item_ = playback_menu_->AddItem("decspeed", this, &MainMenu::ShuttleLeftTriggered, "J");
|
||||
playback_shuttlestop_item_ = playback_menu_->AddItem("pause", this, &MainMenu::ShuttleStopTriggered, "K");
|
||||
playback_shuttleright_item_ = playback_menu_->AddItem("incspeed", this, &MainMenu::ShuttleRightTriggered, "L");
|
||||
|
||||
playback_menu_->addSeparator();
|
||||
|
||||
playback_loop_item_ = playback_menu_->AddItem("loop", nullptr, nullptr);
|
||||
playback_loop_item_ = playback_menu_->AddItem("loop", this, &MainMenu::LoopTriggered);
|
||||
//Menu::SetBooleanAction(playback_loop_item_, &olive::config.loop);
|
||||
|
||||
//
|
||||
// WINDOW MENU
|
||||
//
|
||||
window_menu_ = new Menu(this, this, SLOT(WindowMenuAboutToShow()));
|
||||
connect(window_menu_, SIGNAL(aboutToHide()), this, SLOT(WindowMenuAboutToHide()));
|
||||
window_menu_ = new Menu(this, this, &MainMenu::WindowMenuAboutToShow);
|
||||
connect(window_menu_, &Menu::aboutToHide, this, &MainMenu::WindowMenuAboutToHide);
|
||||
window_menu_separator_ = window_menu_->addSeparator();
|
||||
window_maximize_panel_item_ = window_menu_->AddItem("maximizepanel", parent, SLOT(ToggleMaximizedPanel()), "`");
|
||||
window_lock_layout_item_ = window_menu_->AddItem("lockpanels", PanelManager::instance(), SLOT(SetPanelsLocked(bool)));
|
||||
window_maximize_panel_item_ = window_menu_->AddItem("maximizepanel", parent, &MainWindow::ToggleMaximizedPanel, "`");
|
||||
window_lock_layout_item_ = window_menu_->AddItem("lockpanels", PanelManager::instance(), &PanelManager::SetPanelsLocked);
|
||||
window_lock_layout_item_->setCheckable(true);
|
||||
window_menu_->addSeparator();
|
||||
window_reset_layout_item_ = window_menu_->AddItem("resetdefaultlayout", Core::instance()->main_window(), SLOT(SetDefaultLayout()));
|
||||
window_reset_layout_item_ = window_menu_->AddItem("resetdefaultlayout", parent, &MainWindow::SetDefaultLayout);
|
||||
|
||||
//
|
||||
// TOOLS MENU
|
||||
//
|
||||
tools_menu_ = new Menu(this, this, SLOT(ToolsMenuAboutToShow()));
|
||||
tools_menu_ = new Menu(this, this, &MainMenu::ToolsMenuAboutToShow);
|
||||
tools_menu_->setToolTipsVisible(true);
|
||||
|
||||
tools_group_ = new QActionGroup(this);
|
||||
|
||||
tools_pointer_item_ = tools_menu_->AddItem("pointertool", this, SLOT(ToolItemTriggered()), "V");
|
||||
tools_pointer_item_ = tools_menu_->AddItem("pointertool", this, &MainMenu::ToolItemTriggered, "V");
|
||||
tools_pointer_item_->setCheckable(true);
|
||||
tools_pointer_item_->setData(Tool::kPointer);
|
||||
tools_group_->addAction(tools_pointer_item_);
|
||||
|
||||
tools_edit_item_ = tools_menu_->AddItem("edittool", this, SLOT(ToolItemTriggered()), "X");
|
||||
tools_edit_item_ = tools_menu_->AddItem("edittool", this, &MainMenu::ToolItemTriggered, "X");
|
||||
tools_edit_item_->setCheckable(true);
|
||||
tools_edit_item_->setData(Tool::kEdit);
|
||||
tools_group_->addAction(tools_edit_item_);
|
||||
|
||||
tools_ripple_item_ = tools_menu_->AddItem("rippletool", this, SLOT(ToolItemTriggered()), "B");
|
||||
tools_ripple_item_ = tools_menu_->AddItem("rippletool", this, &MainMenu::ToolItemTriggered, "B");
|
||||
tools_ripple_item_->setCheckable(true);
|
||||
tools_ripple_item_->setData(Tool::kRipple);
|
||||
tools_group_->addAction(tools_ripple_item_);
|
||||
|
||||
tools_rolling_item_ = tools_menu_->AddItem("rollingtool", this, SLOT(ToolItemTriggered()), "N");
|
||||
tools_rolling_item_ = tools_menu_->AddItem("rollingtool", this, &MainMenu::ToolItemTriggered, "N");
|
||||
tools_rolling_item_->setCheckable(true);
|
||||
tools_rolling_item_->setData(Tool::kRolling);
|
||||
tools_group_->addAction(tools_rolling_item_);
|
||||
|
||||
tools_razor_item_ = tools_menu_->AddItem("razortool", this, SLOT(ToolItemTriggered()), "C");
|
||||
tools_razor_item_ = tools_menu_->AddItem("razortool", this, &MainMenu::ToolItemTriggered, "C");
|
||||
tools_razor_item_->setCheckable(true);
|
||||
tools_razor_item_->setData(Tool::kRazor);
|
||||
tools_group_->addAction(tools_razor_item_);
|
||||
|
||||
tools_slip_item_ = tools_menu_->AddItem("sliptool", this, SLOT(ToolItemTriggered()), "Y");
|
||||
tools_slip_item_ = tools_menu_->AddItem("sliptool", this, &MainMenu::ToolItemTriggered, "Y");
|
||||
tools_slip_item_->setCheckable(true);
|
||||
tools_slip_item_->setData(Tool::kSlip);
|
||||
tools_group_->addAction(tools_slip_item_);
|
||||
|
||||
tools_slide_item_ = tools_menu_->AddItem("slidetool", this, SLOT(ToolItemTriggered()), "U");
|
||||
tools_slide_item_ = tools_menu_->AddItem("slidetool", this, &MainMenu::ToolItemTriggered, "U");
|
||||
tools_slide_item_->setCheckable(true);
|
||||
tools_slide_item_->setData(Tool::kSlide);
|
||||
tools_group_->addAction(tools_slide_item_);
|
||||
|
||||
tools_hand_item_ = tools_menu_->AddItem("handtool", this, SLOT(ToolItemTriggered()), "H");
|
||||
tools_hand_item_ = tools_menu_->AddItem("handtool", this, &MainMenu::ToolItemTriggered, "H");
|
||||
tools_hand_item_->setCheckable(true);
|
||||
tools_hand_item_->setData(Tool::kHand);
|
||||
tools_group_->addAction(tools_hand_item_);
|
||||
|
||||
tools_zoom_item_ = tools_menu_->AddItem("zoomtool", this, SLOT(ToolItemTriggered()), "Z");
|
||||
tools_zoom_item_ = tools_menu_->AddItem("zoomtool", this, &MainMenu::ToolItemTriggered, "Z");
|
||||
tools_zoom_item_->setCheckable(true);
|
||||
tools_zoom_item_->setData(Tool::kZoom);
|
||||
tools_group_->addAction(tools_zoom_item_);
|
||||
|
||||
tools_transition_item_ = tools_menu_->AddItem("transitiontool", this, SLOT(ToolItemTriggered()), "T");
|
||||
tools_transition_item_ = tools_menu_->AddItem("transitiontool", this, &MainMenu::ToolItemTriggered, "T");
|
||||
tools_transition_item_->setCheckable(true);
|
||||
tools_transition_item_->setData(Tool::kTransition);
|
||||
tools_group_->addAction(tools_transition_item_);
|
||||
|
||||
tools_menu_->addSeparator();
|
||||
|
||||
tools_snapping_item_ = tools_menu_->AddItem("snapping", nullptr, nullptr, "S");
|
||||
tools_snapping_item_ = tools_menu_->AddItem("snapping", Core::instance(), &Core::SetSnapping, "S");
|
||||
tools_snapping_item_->setCheckable(true);
|
||||
connect(tools_snapping_item_, SIGNAL(triggered(bool)), Core::instance(), SLOT(SetSnapping(bool)));
|
||||
|
||||
tools_menu_->addSeparator();
|
||||
|
||||
tools_autocut_silence_item_ = tools_menu_->AddItem("autocutsilence", nullptr, nullptr);
|
||||
|
||||
tools_menu_->addSeparator();
|
||||
|
||||
tools_preferences_item_ = tools_menu_->AddItem("prefs", Core::instance(), SLOT(DialogPreferencesShow()), "Ctrl+,");
|
||||
tools_preferences_item_ = tools_menu_->AddItem("prefs", Core::instance(), &Core::DialogPreferencesShow, "Ctrl+,");
|
||||
|
||||
//
|
||||
// HELP MENU
|
||||
//
|
||||
help_menu_ = new Menu(this);
|
||||
help_action_search_item_ = help_menu_->AddItem("actionsearch", this, SLOT(ActionSearchTriggered()), "/");
|
||||
help_action_search_item_ = help_menu_->AddItem("actionsearch", this, &MainMenu::ActionSearchTriggered, "/");
|
||||
help_menu_->addSeparator();
|
||||
help_debug_log_item_ = help_menu_->AddItem("debuglog", nullptr, nullptr);
|
||||
help_debug_log_item_ = help_menu_->AddItem("debuglog", this, &MainMenu::DebugLogTriggered);
|
||||
help_menu_->addSeparator();
|
||||
help_about_item_ = help_menu_->AddItem("about", Core::instance(), SLOT(DialogAboutShow()));
|
||||
help_about_item_ = help_menu_->AddItem("about", Core::instance(), &Core::DialogAboutShow);
|
||||
|
||||
Retranslate();
|
||||
}
|
||||
@@ -427,6 +391,16 @@ void MainMenu::PlayPauseTriggered()
|
||||
PanelManager::instance()->CurrentlyFocused()->PlayPause();
|
||||
}
|
||||
|
||||
void MainMenu::PlayInToOutTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MainMenu::LoopTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MainMenu::NextFrameTriggered()
|
||||
{
|
||||
PanelManager::instance()->CurrentlyFocused()->NextFrame();
|
||||
@@ -524,6 +498,36 @@ void MainMenu::ToggleShowAllTriggered()
|
||||
PanelManager::instance()->CurrentlyFocused()->ToggleShowAll();
|
||||
}
|
||||
|
||||
void MainMenu::ClearOpenRecentTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MainMenu::DeleteInOutTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MainMenu::RippleDeleteInOutTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MainMenu::GoToInTriggered()
|
||||
{
|
||||
PanelManager::instance()->CurrentlyFocused()->GoToIn();
|
||||
}
|
||||
|
||||
void MainMenu::GoToOutTriggered()
|
||||
{
|
||||
PanelManager::instance()->CurrentlyFocused()->GoToOut();
|
||||
}
|
||||
|
||||
void MainMenu::DebugLogTriggered()
|
||||
{
|
||||
qDebug() << "FIXME: Stub";
|
||||
}
|
||||
|
||||
void MainMenu::Retranslate()
|
||||
{
|
||||
// MenuShared is not a QWidget and therefore does not receive a LanguageEvent, we use MainMenu's to update it
|
||||
@@ -571,14 +575,6 @@ void MainMenu::Retranslate()
|
||||
view_timecode_view_milliseconds_item_->setText(tr("Milliseconds"));
|
||||
view_timecode_view_seconds_item_->setText(tr("Seconds"));
|
||||
|
||||
// View->Title/Action Safe Area Menu
|
||||
view_title_safe_area_menu_->setTitle(tr("Title/Action Safe Area"));
|
||||
title_safe_off_item_->setText(tr("Off"));
|
||||
title_safe_default_item_->setText(tr("Default"));
|
||||
title_safe_43_item_->setText(tr("4:3"));
|
||||
title_safe_169_item_->setText(tr("16:9"));
|
||||
title_safe_custom_item_->setText(tr("Custom"));
|
||||
|
||||
// View menu (cont'd)
|
||||
view_full_screen_item_->setText(tr("Full Screen"));
|
||||
view_full_screen_viewer_item_->setText(tr("Full Screen Viewer"));
|
||||
@@ -619,7 +615,6 @@ void MainMenu::Retranslate()
|
||||
tools_zoom_item_->setText(tr("Zoom Tool"));
|
||||
tools_transition_item_->setText(tr("Transition Tool"));
|
||||
tools_snapping_item_->setText(tr("Enable Snapping"));
|
||||
tools_autocut_silence_item_->setText(tr("Auto-Cut Silence"));
|
||||
tools_preferences_item_->setText(tr("Preferences"));
|
||||
|
||||
// Help menu
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
class MainWindow;
|
||||
|
||||
/**
|
||||
* @brief Olive's main menubar attached to its main window.
|
||||
*
|
||||
@@ -38,7 +40,7 @@ class MainMenu : public QMenuBar
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainMenu(QMainWindow* parent);
|
||||
MainMenu(MainWindow *parent);
|
||||
|
||||
protected:
|
||||
/**
|
||||
@@ -119,6 +121,10 @@ private slots:
|
||||
*/
|
||||
void PlayPauseTriggered();
|
||||
|
||||
void PlayInToOutTriggered();
|
||||
|
||||
void LoopTriggered();
|
||||
|
||||
void NextFrameTriggered();
|
||||
void GoToEndTriggered();
|
||||
|
||||
@@ -148,6 +154,16 @@ private slots:
|
||||
|
||||
void ToggleShowAllTriggered();
|
||||
|
||||
void ClearOpenRecentTriggered();
|
||||
|
||||
void DeleteInOutTriggered();
|
||||
void RippleDeleteInOutTriggered();
|
||||
|
||||
void GoToInTriggered();
|
||||
void GoToOutTriggered();
|
||||
|
||||
void DebugLogTriggered();
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief Set strings based on the current application language.
|
||||
@@ -193,12 +209,6 @@ private:
|
||||
QAction* view_timecode_view_seconds_item_;
|
||||
QAction* view_timecode_view_frames_item_;
|
||||
QAction* view_timecode_view_milliseconds_item_;
|
||||
Menu* view_title_safe_area_menu_;
|
||||
QAction* title_safe_off_item_;
|
||||
QAction* title_safe_default_item_;
|
||||
QAction* title_safe_43_item_;
|
||||
QAction* title_safe_169_item_;
|
||||
QAction* title_safe_custom_item_;
|
||||
QAction* view_full_screen_item_;
|
||||
QAction* view_full_screen_viewer_item_;
|
||||
|
||||
@@ -237,7 +247,6 @@ private:
|
||||
QAction* tools_zoom_item_;
|
||||
QAction* tools_transition_item_;
|
||||
QAction* tools_snapping_item_;
|
||||
QAction* tools_autocut_silence_item_;
|
||||
QAction* tools_preferences_item_;
|
||||
|
||||
Menu* help_menu_;
|
||||
|
||||
@@ -66,27 +66,16 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
|
||||
// Create standard panels
|
||||
node_panel_ = PanelManager::instance()->CreatePanel<NodePanel>(this);
|
||||
addDockWidget(Qt::TopDockWidgetArea, node_panel_);
|
||||
footage_viewer_panel_ = PanelManager::instance()->CreatePanel<FootageViewerPanel>(this);
|
||||
addDockWidget(Qt::TopDockWidgetArea, footage_viewer_panel_);
|
||||
param_panel_ = PanelManager::instance()->CreatePanel<ParamPanel>(this);
|
||||
tabifyDockWidget(footage_viewer_panel_, param_panel_);
|
||||
footage_viewer_panel_->raise();
|
||||
sequence_viewer_panel_ = PanelManager::instance()->CreatePanel<SequenceViewerPanel>(this);
|
||||
addDockWidget(Qt::TopDockWidgetArea, sequence_viewer_panel_);
|
||||
pixel_sampler_panel_ = PanelManager::instance()->CreatePanel<PixelSamplerPanel>(this);
|
||||
addDockWidget(Qt::TopDockWidgetArea, pixel_sampler_panel_);
|
||||
project_panel_ = PanelManager::instance()->CreatePanel<ProjectPanel>(this);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, project_panel_);
|
||||
tool_panel_ = PanelManager::instance()->CreatePanel<ToolPanel>(this);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, tool_panel_);
|
||||
task_man_panel_ = PanelManager::instance()->CreatePanel<TaskManagerPanel>(this);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, task_man_panel_);
|
||||
curve_panel_ = PanelManager::instance()->CreatePanel<CurvePanel>(this);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, curve_panel_);
|
||||
AppendTimelinePanel();
|
||||
audio_monitor_panel_ = PanelManager::instance()->CreatePanel<AudioMonitorPanel>(this);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, audio_monitor_panel_);
|
||||
|
||||
// Make connections to sequence viewer
|
||||
connect(node_panel_, &NodePanel::SelectionChanged, param_panel_, &ParamPanel::SetNodes);
|
||||
@@ -321,9 +310,7 @@ TimelinePanel* MainWindow::AppendTimelinePanel()
|
||||
{
|
||||
TimelinePanel* panel = PanelManager::instance()->CreatePanel<TimelinePanel>(this);;
|
||||
|
||||
if (timeline_panels_.isEmpty()) {
|
||||
addDockWidget(Qt::BottomDockWidgetArea, panel);
|
||||
} else {
|
||||
if (!timeline_panels_.isEmpty()) {
|
||||
tabifyDockWidget(timeline_panels_.last(), panel);
|
||||
|
||||
// For some reason raise() on its own doesn't do anything, we need both
|
||||
@@ -390,12 +377,42 @@ void MainWindow::FocusedPanelChanged(PanelWidget *panel)
|
||||
|
||||
void MainWindow::SetDefaultLayout()
|
||||
{
|
||||
task_man_panel_->close();
|
||||
task_man_panel_->setFloating(true);
|
||||
curve_panel_->close();
|
||||
curve_panel_->setFloating(true);
|
||||
pixel_sampler_panel_->close();
|
||||
node_panel_->show();
|
||||
addDockWidget(Qt::TopDockWidgetArea, node_panel_);
|
||||
|
||||
footage_viewer_panel_->show();
|
||||
addDockWidget(Qt::TopDockWidgetArea, footage_viewer_panel_);
|
||||
|
||||
param_panel_->show();
|
||||
tabifyDockWidget(footage_viewer_panel_, param_panel_);
|
||||
footage_viewer_panel_->raise();
|
||||
|
||||
sequence_viewer_panel_->show();
|
||||
addDockWidget(Qt::TopDockWidgetArea, sequence_viewer_panel_);
|
||||
|
||||
pixel_sampler_panel_->hide();
|
||||
pixel_sampler_panel_->setFloating(true);
|
||||
addDockWidget(Qt::TopDockWidgetArea, pixel_sampler_panel_);
|
||||
|
||||
project_panel_->show();
|
||||
addDockWidget(Qt::BottomDockWidgetArea, project_panel_);
|
||||
|
||||
tool_panel_->show();
|
||||
addDockWidget(Qt::BottomDockWidgetArea, tool_panel_);
|
||||
|
||||
timeline_panels_.first()->show();
|
||||
addDockWidget(Qt::BottomDockWidgetArea, timeline_panels_.first());
|
||||
|
||||
curve_panel_->hide();
|
||||
curve_panel_->setFloating(true);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, curve_panel_);
|
||||
|
||||
task_man_panel_->hide();
|
||||
task_man_panel_->setFloating(true);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, task_man_panel_);
|
||||
|
||||
audio_monitor_panel_->show();
|
||||
addDockWidget(Qt::BottomDockWidgetArea, audio_monitor_panel_);
|
||||
|
||||
resizeDocks({node_panel_, param_panel_, sequence_viewer_panel_},
|
||||
{width()/3, width()/3, width()/3},
|
||||
|
||||
Reference in New Issue
Block a user