overrode menus

This commit is contained in:
itsmattkc
2019-03-16 22:27:57 +11:00
parent d5c488867f
commit 791bc0c9b8
24 changed files with 172 additions and 86 deletions
+14 -1
View File
@@ -54,7 +54,6 @@
KeySequenceEditor::KeySequenceEditor(QWidget* parent, QAction* a)
: QKeySequenceEdit(parent), action(a) {
setKeySequence(action->shortcut());
//connect(this, SIGNAL(editingFinished()), this, SLOT(set_action_shortcut()));
}
void KeySequenceEditor::set_action_shortcut() {
@@ -195,6 +194,9 @@ void PreferencesDialog::save() {
if (olive::CurrentConfig.use_software_fallback != use_software_fallbacks_checkbox->isChecked()
|| olive::CurrentConfig.thumbnail_resolution != thumbnail_res_spinbox->value()
|| olive::CurrentConfig.waveform_resolution != waveform_res_spinbox->value()
#ifdef Q_OS_WIN32
|| olive::CurrentConfig.use_native_menu_styling != native_menus->isChecked()
#endif
|| olive::CurrentConfig.style != static_cast<olive::styling::Style>(ui_style->currentData().toInt())) {
// any changes to these settings will require a restart - ask the user if we should do one now or later
@@ -258,6 +260,7 @@ void PreferencesDialog::save() {
olive::CurrentConfig.language_file = language_combobox->currentData().toString();
olive::CurrentConfig.style = static_cast<olive::styling::Style>(ui_style->currentData().toInt());
olive::CurrentConfig.use_native_menu_styling = native_menus->isChecked();
// Check if the thumbnail or waveform icon
if (olive::CurrentConfig.thumbnail_resolution != thumbnail_res_spinbox->value()
@@ -583,6 +586,16 @@ void PreferencesDialog::setup_ui() {
row++;
#ifdef Q_OS_WIN
// Native menu styling is only available on Windows. Environments like Ubuntu and Mac use the native menu system by
// default
native_menus = new QCheckBox(tr("Use Native Menu Styling"));
native_menus->setChecked(olive::CurrentConfig.use_native_menu_styling);
appearance_layout->addWidget(native_menus, row, 0, 1, 3);
row++;
#endif
// Appearance -> Custom CSS
appearance_layout->addWidget(new QLabel(tr("Custom CSS:"), this), row, 0);
+3
View File
@@ -104,6 +104,9 @@ private:
QCheckBox* add_default_effects_to_clips;
QComboBox* ui_style;
Sequence sequence_settings;
#ifdef Q_OS_WIN
QCheckBox* native_menus;
#endif
QVector<QAction*> key_shortcut_actions;
QVector<QTreeWidgetItem*> key_shortcut_items;
+6 -1
View File
@@ -72,7 +72,8 @@ Config::Config()
thumbnail_resolution(120),
add_default_effects_to_clips(true),
invert_timeline_scroll_axes(true),
style(olive::styling::kOliveDefaultDark)
style(olive::styling::kOliveDefaultDark),
use_native_menu_styling(true)
{}
void Config::load(QString path) {
@@ -215,6 +216,9 @@ void Config::load(QString path) {
} else if (stream.name() == "Style") {
stream.readNext();
style = static_cast<olive::styling::Style>(stream.text().toInt());
} else if (stream.name() == "NativeMenuStyling") {
stream.readNext();
use_native_menu_styling = (stream.text() == "1");
}
}
}
@@ -283,6 +287,7 @@ void Config::save(QString path) {
stream.writeTextElement("WaveformResolution", QString::number(waveform_resolution));
stream.writeTextElement("AddDefaultEffectsToClips", QString::number(add_default_effects_to_clips));
stream.writeTextElement("Style", QString::number(style));
stream.writeTextElement("NativeMenuStyling", QString::number(use_native_menu_styling));
stream.writeEndElement(); // configuration
stream.writeEndDocument(); // doc
+7
View File
@@ -526,6 +526,13 @@ struct Config {
*/
olive::styling::Style style;
/**
* @brief Use native menu styling
*
* Use native styling on menus rather than cross-platform Fusion.
*/
bool use_native_menu_styling;
/**
* @brief Load config from file
*
+10
View File
@@ -24,6 +24,7 @@
#include <QFileDialog>
#include <QAction>
#include <QApplication>
#include <QStyleFactory>
#include <QDebug>
#include "panels/panels.h"
@@ -141,6 +142,15 @@ void OliveGlobal::load_translation_from_config() {
}
}
void OliveGlobal::SetNativeStyling(QWidget *w)
{
#ifdef Q_OS_WIN
w->setStyleSheet("");
w->setPalette(w->style()->standardPalette());
w->setStyle(QStyleFactory::create("windowsvista"));
#endif
}
void OliveGlobal::new_project() {
if (can_close_project()) {
// clear graph editor
+9
View File
@@ -115,6 +115,15 @@ public:
*/
void load_translation_from_config();
/**
* @brief Set native UI styling on a given widget
*
* @param w
*
* The widget to set styling on.
*/
static void SetNativeStyling(QWidget* w);
public slots:
/**
* @brief Undo user's last action
+4 -2
View File
@@ -174,7 +174,8 @@ SOURCES += \
ui/styling.cpp \
undo/undostack.cpp \
effects/internal/richtexteffect.cpp \
ui/blur.cpp
ui/blur.cpp \
ui/menu.cpp
HEADERS += \
ui/mainwindow.h \
@@ -302,7 +303,8 @@ HEADERS += \
ui/styling.h \
undo/undostack.h \
effects/internal/richtexteffect.h \
ui/blur.h
ui/blur.h \
ui/menu.h
FORMS +=
+4 -4
View File
@@ -20,7 +20,6 @@
#include "effectcontrols.h"
#include <QMenu>
#include <QVBoxLayout>
#include <QResizeEvent>
#include <QScrollBar>
@@ -52,6 +51,7 @@
#include "ui/keyframeview.h"
#include "ui/resizablescrollbar.h"
#include "global/debug.h"
#include "ui/menu.h"
EffectControls::EffectControls(QWidget *parent) :
Panel(parent),
@@ -198,7 +198,7 @@ void EffectControls::show_effect_menu(int type, int subtype) {
effects_loaded.lock();
QMenu effects_menu(this);
Menu effects_menu(this);
effects_menu.setToolTipsVisible(true);
for (int i=0;i<effects.size();i++) {
@@ -226,7 +226,7 @@ void EffectControls::show_effect_menu(int type, int subtype) {
}
}
if (!found) {
parent = new QMenu(&effects_menu);
parent = new Menu(&effects_menu);
parent->setToolTipsVisible(true);
parent->setTitle(em.category);
@@ -536,7 +536,7 @@ void EffectControls::queue_post_update() {
}
void EffectControls::effects_area_context_menu() {
QMenu menu(this);
Menu menu(this);
olive::MenuHelper.create_effect_paste_action(&menu);
+22 -22
View File
@@ -20,6 +20,26 @@
#include "project.h"
extern "C" {
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
}
#include <QApplication>
#include <QFileDialog>
#include <QString>
#include <QVariant>
#include <QCharRef>
#include <QMessageBox>
#include <QDropEvent>
#include <QMimeData>
#include <QPushButton>
#include <QInputDialog>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QSizePolicy>
#include <QVBoxLayout>
#include "global/global.h"
#include "panels.h"
#include "rendering/renderfunctions.h"
@@ -43,27 +63,7 @@
#include "project/sourcescommon.h"
#include "project/projectfilter.h"
#include "global/debug.h"
#include <QApplication>
#include <QFileDialog>
#include <QString>
#include <QVariant>
#include <QCharRef>
#include <QMessageBox>
#include <QDropEvent>
#include <QMimeData>
#include <QPushButton>
#include <QInputDialog>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QSizePolicy>
#include <QVBoxLayout>
#include <QMenu>
extern "C" {
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
}
#include "ui/menu.h"
// TODO make these configurable
const int kDefaultSequenceWidth = 1920;
@@ -1374,7 +1374,7 @@ void Project::go_up_dir() {
}
void Project::make_new_menu() {
QMenu new_menu(this);
Menu new_menu(this);
olive::MenuHelper.make_new_menu(&new_menu);
new_menu.exec(QCursor::pos());
}
+17 -17
View File
@@ -20,6 +20,20 @@
#include "timeline.h"
#include <QTime>
#include <QScrollBar>
#include <QtMath>
#include <QGuiApplication>
#include <QScreen>
#include <QPainter>
#include <QInputDialog>
#include <QMessageBox>
#include <QCheckBox>
#include <QPushButton>
#include <QHBoxLayout>
#include <QSplitter>
#include <QStatusBar>
#include "global/global.h"
#include "panels/panels.h"
#include "project/projectelements.h"
@@ -39,21 +53,7 @@
#include "ui/mainwindow.h"
#include "undo/undostack.h"
#include "global/debug.h"
#include <QTime>
#include <QScrollBar>
#include <QtMath>
#include <QGuiApplication>
#include <QScreen>
#include <QPainter>
#include <QMenu>
#include <QInputDialog>
#include <QMessageBox>
#include <QCheckBox>
#include <QPushButton>
#include <QHBoxLayout>
#include <QSplitter>
#include <QStatusBar>
#include "ui/menu.h"
int olive::timeline::kTrackDefaultHeight = 40;
int olive::timeline::kTrackMinHeight = 30;
@@ -1730,7 +1730,7 @@ int Timeline::getTimelineScreenPointFromFrame(long frame) {
}
void Timeline::add_btn_click() {
QMenu add_menu(this);
Menu add_menu(this);
QAction* titleMenuItem = new QAction(&add_menu);
titleMenuItem->setText(tr("Title..."));
@@ -1793,7 +1793,7 @@ void Timeline::record_btn_click() {
void Timeline::transition_tool_click() {
creating = false;
QMenu transition_menu(this);
Menu transition_menu(this);
for (int i=0;i<effects.size();i++) {
const EffectMeta& em = effects.at(i);
+8 -5
View File
@@ -21,7 +21,6 @@
#include "sourcescommon.h"
#include <QProcess>
#include <QMenu>
#include <QAbstractItemView>
#include <QMimeData>
#include <QMessageBox>
@@ -44,6 +43,7 @@
#include "ui/viewerwidget.h"
#include "project/proxygenerator.h"
#include "ui/mainwindow.h"
#include "ui/menu.h"
#include "undo/undostack.h"
SourcesCommon::SourcesCommon(Project* parent) :
@@ -74,17 +74,19 @@ void SourcesCommon::create_seq_from_selected() {
}
void SourcesCommon::show_context_menu(QWidget* parent, const QModelIndexList& items) {
QMenu menu(parent);
Menu menu(parent);
selected_items = items;
QAction* import_action = menu.addAction(tr("Import..."));
QObject::connect(import_action, SIGNAL(triggered(bool)), project_parent, SLOT(import_dialog()));
QMenu* new_menu = menu.addMenu(tr("New"));
Menu* new_menu = new Menu(tr("New"));
menu.addMenu(new_menu);
olive::MenuHelper.make_new_menu(new_menu);
QMenu* view_menu = menu.addMenu(tr("View"));
Menu* view_menu = new Menu(tr("View"));
menu.addMenu(view_menu);
QAction* tree_view_action = view_menu->addAction(tr("Tree View"));
connect(tree_view_action, SIGNAL(triggered(bool)), project_parent, SLOT(set_tree_view()));
@@ -160,7 +162,8 @@ void SourcesCommon::show_context_menu(QWidget* parent, const QModelIndexList& it
QAction* delete_footage_from_sequences = menu.addAction(tr("Delete All Clips Using This Media"));
QObject::connect(delete_footage_from_sequences, SIGNAL(triggered(bool)), project_parent, SLOT(delete_clips_using_selected_media()));
QMenu* proxies = menu.addMenu(tr("Proxy"));
Menu* proxies = new Menu(tr("Proxy"));
menu.addMenu(proxies);
// special case if one footage item is selected and its proxy is currently being generated
if (cached_selected_footage.size() == 1
+2 -2
View File
@@ -1,12 +1,12 @@
#include "effectui.h"
#include <QPoint>
#include <QMenu>
#include "timeline/clip.h"
#include "ui/menuhelper.h"
#include "ui/keyframenavigator.h"
#include "ui/clickablelabel.h"
#include "ui/menu.h"
#include "panels/panels.h"
EffectUI::EffectUI(Effect* e) :
@@ -273,7 +273,7 @@ void EffectUI::AttachKeyframeNavigationToRow(EffectRow *row, KeyframeNavigator *
void EffectUI::show_context_menu(const QPoint& pos) {
if (effect_->meta->type == EFFECT_TYPE_EFFECT) {
QMenu menu;
Menu menu;
Clip* c = effect_->parent_clip;
+2 -2
View File
@@ -23,7 +23,6 @@
#include <QPainter>
#include <QMouseEvent>
#include <QtMath>
#include <QMenu>
#include <cfloat>
#include "global/config.h"
@@ -37,6 +36,7 @@
#include "effects/effect.h"
#include "timeline/clip.h"
#include "ui/rectangleselect.h"
#include "ui/menu.h"
#include "global/debug.h"
const double kGraphZoomSpeed = 0.05;
@@ -75,7 +75,7 @@ GraphView::GraphView(QWidget* parent) : QWidget(parent) {
}
void GraphView::show_context_menu(const QPoint& pos) {
QMenu menu(this);
Menu menu(this);
QAction* zoom_to_selection = menu.addAction(tr("Zoom to Selection"));
if (selected_keys.size() == 0 || row == nullptr) {
+2 -2
View File
@@ -22,7 +22,6 @@
#include <QMouseEvent>
#include <QtMath>
#include <QMenu>
#include "effects/effect.h"
#include "ui/collapsiblewidget.h"
@@ -42,6 +41,7 @@
#include "ui/rectangleselect.h"
#include "effects/keyframe.h"
#include "ui/graphview.h"
#include "ui/menu.h"
KeyframeView::KeyframeView(QWidget *parent) :
QWidget(parent),
@@ -69,7 +69,7 @@ void KeyframeView::SetEffects(const QVector<EffectUI *> &open_effects)
void KeyframeView::show_context_menu(const QPoint& pos) {
if (selected_fields.size() > 0) {
QMenu menu(this);
Menu menu(this);
QAction* linear = menu.addAction(tr("Linear"));
linear->setData(EFFECT_KEYFRAME_LINEAR);
+7 -6
View File
@@ -20,17 +20,18 @@
#include "labelslider.h"
#include <QMouseEvent>
#include <QInputDialog>
#include <QApplication>
#include <QMenu>
#include "undo/undo.h"
#include "panels/viewer.h"
#include "global/config.h"
#include "global/math.h"
#include "global/debug.h"
#include "ui/styling.h"
#include <QMouseEvent>
#include <QInputDialog>
#include <QApplication>
#include <QMenu>
#include "ui/menu.h"
LabelSlider::LabelSlider(QWidget* parent) : QLabel(parent) {
// set a default frame rate - fallback, shouldn't ever really be used
@@ -265,7 +266,7 @@ void LabelSlider::SetActiveCursor() {
void LabelSlider::ShowContextMenu(const QPoint &pos)
{
QMenu menu(this);
Menu menu(this);
menu.addAction(tr("&Edit"), this, SLOT(ShowDialog()));
+3 -5
View File
@@ -438,11 +438,9 @@ void MainWindow::editMenu_About_To_Be_Shown() {
void MainWindow::setup_menus() {
QMenuBar* menuBar = new QMenuBar(this);
/*
menuBar->setStyle(QStyleFactory::create("windowsvista"));
menuBar->setPalette(menuBar->style()->standardPalette());
menuBar->setStyleSheet("");
*/
if (olive::CurrentConfig.use_native_menu_styling) {
OliveGlobal::SetNativeStyling(menuBar);
}
setMenuBar(menuBar);
+20
View File
@@ -0,0 +1,20 @@
#include "menu.h"
#include "global/global.h"
#include "global/config.h"
Menu::Menu(QWidget *parent) :
QMenu(parent)
{
if (olive::CurrentConfig.use_native_menu_styling) {
OliveGlobal::SetNativeStyling(this);
}
}
Menu::Menu(const QString &title, QWidget *parent) :
QMenu(title, parent)
{
if (olive::CurrentConfig.use_native_menu_styling) {
OliveGlobal::SetNativeStyling(this);
}
}
+13
View File
@@ -0,0 +1,13 @@
#ifndef MENU_H
#define MENU_H
#include <QMenu>
class Menu : public QMenu
{
public:
Menu(QWidget* parent = nullptr);
Menu(const QString &title, QWidget *parent = nullptr);
};
#endif // MENU_H
+4 -4
View File
@@ -271,10 +271,10 @@ void MenuHelper::create_effect_paste_action(QMenu *menu)
paste_action->setEnabled(clipboard.size() > 0 && clipboard_type == CLIPBOARD_TYPE_EFFECT);
}
QMenu* MenuHelper::create_submenu(QMenuBar* parent,
Menu* MenuHelper::create_submenu(QMenuBar* parent,
const QObject *receiver,
const char *member) {
QMenu* menu = new QMenu(parent);
Menu* menu = new Menu(parent);
/*
menu->setStyle(QStyleFactory::create("windowsvista"));
@@ -291,8 +291,8 @@ QMenu* MenuHelper::create_submenu(QMenuBar* parent,
return menu;
}
QMenu* MenuHelper::create_submenu(QMenu* parent) {
QMenu* menu = new QMenu(parent);
Menu* MenuHelper::create_submenu(QMenu* parent) {
Menu* menu = new Menu(parent);
/*
menu->setStyle(QStyleFactory::create("windowsvista"));
+4 -3
View File
@@ -22,9 +22,10 @@
#define MENUHELPER_H
#include <QObject>
#include <QMenu>
#include <QMenuBar>
#include "ui/menu.h"
class MenuHelper : public QObject {
Q_OBJECT
public:
@@ -126,10 +127,10 @@ public:
void Retranslate();
static QMenu* create_submenu(QMenuBar* parent,
static Menu *create_submenu(QMenuBar* parent,
const QObject *receiver = nullptr,
const char *member = nullptr);
static QMenu* create_submenu(QMenu* parent);
static Menu* create_submenu(QMenu* parent);
static QAction* create_menu_action(QWidget *parent,
const char* id,
const QObject *receiver = nullptr,
+2 -2
View File
@@ -21,9 +21,9 @@
#include "texteditex.h"
#include <QDebug>
#include <QMenu>
#include "dialogs/texteditdialog.h"
#include "ui/menu.h"
#include "mainwindow.h"
TextEditEx::TextEditEx(QWidget *parent, bool enable_rich_text) :
@@ -37,7 +37,7 @@ TextEditEx::TextEditEx(QWidget *parent, bool enable_rich_text) :
}
void TextEditEx::text_edit_menu() {
QMenu menu;
Menu menu;
menu.addAction(tr("&Edit Text"), this, SLOT(open_text_edit()));
+2 -2
View File
@@ -24,7 +24,6 @@
#include <QMouseEvent>
#include <QScrollBar>
#include <QtMath>
#include <QMenu>
#include <QAction>
#include "mainwindow.h"
@@ -36,6 +35,7 @@
#include "panels/viewer.h"
#include "global/config.h"
#include "global/global.h"
#include "ui/menu.h"
#include "ui/menuhelper.h"
#include "global/debug.h"
#include "undo/undostack.h"
@@ -457,7 +457,7 @@ void TimelineHeader::paintEvent(QPaintEvent*) {
}
void TimelineHeader::show_context_menu(const QPoint &pos) {
QMenu menu(this);
Menu menu(this);
// Add items for setting the in/out points of a QMenu
olive::MenuHelper.make_inout_menu(&menu);
+2 -2
View File
@@ -26,7 +26,6 @@
#include <QObject>
#include <QVariant>
#include <QPoint>
#include <QMenu>
#include <QMessageBox>
#include <QtMath>
#include <QScrollBar>
@@ -52,6 +51,7 @@
#include "rendering/renderfunctions.h"
#include "ui/cursors.h"
#include "ui/menuhelper.h"
#include "ui/menu.h"
#include "ui/focusfilter.h"
#include "dialogs/clippropertiesdialog.h"
#include "global/debug.h"
@@ -86,7 +86,7 @@ void TimelineWidget::show_context_menu(const QPoint& pos) {
panel_timeline->rect_select_init = false;
panel_timeline->rect_select_proc = false;
QMenu menu(this);
Menu menu(this);
QAction* undoAction = menu.addAction(tr("&Undo"));
QAction* redoAction = menu.addAction(tr("&Redo"));
+5 -4
View File
@@ -32,7 +32,6 @@ extern "C" {
#include <QMouseEvent>
#include <QMimeData>
#include <QDrag>
#include <QMenu>
#include <QOffscreenSurface>
#include <QFileDialog>
#include <QPolygon>
@@ -58,6 +57,7 @@ extern "C" {
#include "rendering/renderfunctions.h"
#include "rendering/renderthread.h"
#include "ui/viewerwindow.h"
#include "ui/menu.h"
#include "mainwindow.h"
ViewerWidget::ViewerWidget(QWidget *parent) :
@@ -112,12 +112,13 @@ void ViewerWidget::set_fullscreen(int screen) {
}
void ViewerWidget::show_context_menu() {
QMenu menu(this);
Menu menu(this);
QAction* save_frame_as_image = menu.addAction(tr("Save Frame as Image..."));
connect(save_frame_as_image, SIGNAL(triggered(bool)), this, SLOT(save_frame()));
QMenu* fullscreen_menu = menu.addMenu(tr("Show Fullscreen"));
Menu* fullscreen_menu = new Menu(tr("Show Fullscreen"));
menu.addMenu(fullscreen_menu);
QList<QScreen*> screens = QGuiApplication::screens();
if (window->isVisible()) {
fullscreen_menu->addAction(tr("Disable"));
@@ -131,7 +132,7 @@ void ViewerWidget::show_context_menu() {
}
connect(fullscreen_menu, SIGNAL(triggered(QAction*)), this, SLOT(fullscreen_menu_action(QAction*)));
QMenu zoom_menu(tr("Zoom"));
Menu zoom_menu(tr("Zoom"));
QAction* fit_zoom = zoom_menu.addAction(tr("Fit"));
connect(fit_zoom, SIGNAL(triggered(bool)), this, SLOT(set_fit_zoom()));
zoom_menu.addAction("10%")->setData(0.1);