diff --git a/app/core.cpp b/app/core.cpp index 56d505c01..ed6017a4b 100644 --- a/app/core.cpp +++ b/app/core.cpp @@ -32,6 +32,7 @@ #include "audio/audiomanager.h" #include "config/config.h" #include "dialog/about/about.h" +#include "dialog/export/export.h" #include "dialog/sequence/sequence.h" #include "dialog/preferences/preferences.h" #include "dialog/projectproperties/projectproperties.h" @@ -230,6 +231,12 @@ void Core::DialogProjectPropertiesShow() ppd.exec(); } +void Core::DialogExportShow() +{ + ExportDialog ed(main_window_); + ed.exec(); +} + void Core::CreateNewFolder() { // Locate the most recently focused Project panel (assume that's the panel the user wants to import into) diff --git a/app/core.h b/app/core.h index e096752d4..54f3fe843 100644 --- a/app/core.h +++ b/app/core.h @@ -160,6 +160,11 @@ public slots: */ void DialogProjectPropertiesShow(); + /** + * @brief Show Export dialog + */ + void DialogExportShow(); + /** * @brief Create a new folder in the currently active project */ diff --git a/app/dialog/CMakeLists.txt b/app/dialog/CMakeLists.txt index 0e8af7660..f1101d230 100644 --- a/app/dialog/CMakeLists.txt +++ b/app/dialog/CMakeLists.txt @@ -16,6 +16,7 @@ add_subdirectory(about) add_subdirectory(actionsearch) +add_subdirectory(export) add_subdirectory(footageproperties) add_subdirectory(preferences) add_subdirectory(projectproperties) diff --git a/app/dialog/export/CMakeLists.txt b/app/dialog/export/CMakeLists.txt new file mode 100644 index 000000000..0908dc68f --- /dev/null +++ b/app/dialog/export/CMakeLists.txt @@ -0,0 +1,22 @@ +# Olive - Non-Linear Video Editor +# Copyright (C) 2019 Olive Team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set(OLIVE_SOURCES + ${OLIVE_SOURCES} + dialog/export/export.h + dialog/export/export.cpp + PARENT_SCOPE +) diff --git a/app/dialog/export/export.cpp b/app/dialog/export/export.cpp new file mode 100644 index 000000000..66d58a562 --- /dev/null +++ b/app/dialog/export/export.cpp @@ -0,0 +1,38 @@ +#include "export.h" + +#include +#include +#include +#include +#include +#include +#include + +ExportDialog::ExportDialog(QWidget *parent) : + QDialog(parent) +{ + QHBoxLayout* layout = new QHBoxLayout(this); + + QSplitter* splitter = new QSplitter(Qt::Horizontal); + layout->addWidget(splitter); + + QWidget* preferences_area = new QWidget(); + QGridLayout* preferences_layout = new QGridLayout(preferences_area); + preferences_layout->addWidget(new QLabel(tr("Filename:")), 0, 0); + preferences_layout->addWidget(new QLineEdit(), 0, 1); + preferences_layout->addWidget(new QLabel(tr("Preset:")), 1, 0); + preferences_layout->addWidget(new QComboBox(), 1, 1); + QTabWidget* preferences_tabs = new QTabWidget(); + preferences_tabs->addTab(new QWidget(), tr("Video")); + preferences_tabs->addTab(new QWidget(), tr("Audio")); + preferences_layout->addWidget(preferences_tabs, 2, 0, 1, 2); + preferences_layout->addWidget(new QPushButton(tr("Export")), 3, 0); + preferences_layout->addWidget(new QPushButton(tr("Cancel")), 3, 1); + splitter->addWidget(preferences_area); + + QWidget* preview_area = new QWidget(); + QVBoxLayout* preview_layout = new QVBoxLayout(preview_area); + preview_layout->addWidget(new QLabel(tr("Preview"))); + preview_layout->addWidget(new QOpenGLWidget()); + splitter->addWidget(preview_area); +} diff --git a/app/dialog/export/export.h b/app/dialog/export/export.h new file mode 100644 index 000000000..57d5efba4 --- /dev/null +++ b/app/dialog/export/export.h @@ -0,0 +1,12 @@ +#ifndef EXPORTDIALOG_H +#define EXPORTDIALOG_H + +#include + +class ExportDialog : public QDialog +{ +public: + ExportDialog(QWidget* parent = nullptr); +}; + +#endif // EXPORTDIALOG_H diff --git a/app/window/mainwindow/mainmenu.cpp b/app/window/mainwindow/mainmenu.cpp index 3a2b59cdc..aa09e0e15 100644 --- a/app/window/mainwindow/mainmenu.cpp +++ b/app/window/mainwindow/mainmenu.cpp @@ -47,7 +47,7 @@ MainMenu::MainMenu(QMainWindow *parent) : file_menu_->addSeparator(); file_import_item_ = file_menu_->AddItem("import", &olive::core, SLOT(DialogImportShow()), "Ctrl+I"); file_menu_->addSeparator(); - file_export_item_ = file_menu_->AddItem("export", nullptr, nullptr, "Ctrl+M"); + file_export_item_ = file_menu_->AddItem("export", &olive::core, SLOT(DialogExportShow()), "Ctrl+M"); file_menu_->addSeparator(); file_project_properties_item_ = file_menu_->AddItem("projectproperties", &olive::core, SLOT(DialogProjectPropertiesShow())); file_menu_->addSeparator(); @@ -476,7 +476,7 @@ void MainMenu::GoToNextCutTriggered() } void MainMenu::Retranslate() -{ +{ // MenuShared is not a QWidget and therefore does not receive a LanguageEvent, we use MainMenu's to update it olive::menu_shared.Retranslate();