diff --git a/app/config/config.cpp b/app/config/config.cpp index a0b0abc8b..fc2384c14 100644 --- a/app/config/config.cpp +++ b/app/config/config.cpp @@ -75,6 +75,7 @@ void Config::SetDefaults() config_map_["Autoscroll"] = AutoScroll::kPage; config_map_["DefaultViewerDivider"] = 2; config_map_["AutoSelectDivider"] = false; + config_map_["DropWithoutSequenceBehavior"] = TimelineWidget::kDWSAsk; config_map_["DiskCachePath"] = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation); config_map_["DiskCacheSize"] = 20.0; diff --git a/app/widget/timelinewidget/timelinewidget.h b/app/widget/timelinewidget/timelinewidget.h index 0bda11925..5db5dfca1 100644 --- a/app/widget/timelinewidget/timelinewidget.h +++ b/app/widget/timelinewidget/timelinewidget.h @@ -20,6 +20,13 @@ class TimelineWidget : public TimeBasedWidget { Q_OBJECT public: + enum DropWithoutSequenceBehavior { + kDWSAsk, + kDWSAuto, + kDWSManual, + kDWSDisable + }; + TimelineWidget(QWidget* parent = nullptr); virtual ~TimelineWidget() override; diff --git a/app/widget/timelinewidget/tool/import.cpp b/app/widget/timelinewidget/tool/import.cpp index 6d70db197..c2ac49c3d 100644 --- a/app/widget/timelinewidget/tool/import.cpp +++ b/app/widget/timelinewidget/tool/import.cpp @@ -20,6 +20,7 @@ #include "widget/timelinewidget/timelinewidget.h" +#include #include #include #include @@ -190,18 +191,37 @@ void TimelineWidget::ImportTool::DragDrop(TimelineViewMouseEvent *event) } else { // There's no active timeline here, ask the user what to do - QMessageBox mbox(parent()); + DropWithoutSequenceBehavior behavior = static_cast(Config::Current()["DropWithoutSequenceBehavior"].toInt()); - mbox.setWindowTitle(tr("No Active Sequence")); - mbox.setText(tr("No sequence is currently open. Would you like to create one and how should it be created?")); + if (behavior == kDWSAsk) { + QCheckBox* dont_ask_again_box = new QCheckBox(tr("Don't ask me again")); - QPushButton* auto_params_btn = mbox.addButton(tr("Automatically Detect Parameters From Footage"), QMessageBox::YesRole); - /*QPushButton* manual_params_btn = */mbox.addButton(tr("Manually Set Parameters"), QMessageBox::NoRole); - QPushButton* cancel_btn = mbox.addButton(QMessageBox::Cancel); + QMessageBox mbox(parent()); - mbox.exec(); + mbox.setWindowTitle(tr("No Active Sequence")); + mbox.setText(tr("No sequence is currently open. Would you like to create one?")); + mbox.setCheckBox(dont_ask_again_box); - if (mbox.clickedButton() != cancel_btn) { + QPushButton* auto_params_btn = mbox.addButton(tr("Automatically Detect Parameters From Footage"), QMessageBox::YesRole); + QPushButton* manual_params_btn = mbox.addButton(tr("Set Parameters Manually"), QMessageBox::NoRole); + mbox.addButton(QMessageBox::Cancel); + + mbox.exec(); + + if (mbox.clickedButton() == auto_params_btn) { + behavior = kDWSAuto; + } else if (mbox.clickedButton() == manual_params_btn) { + behavior = kDWSManual; + } else { + behavior = kDWSDisable; + } + + if (behavior != kDWSDisable && dont_ask_again_box->isChecked()) { + Config::Current()["DropWithoutSequenceBehavior"] = behavior; + } + } + + if (behavior != kDWSDisable) { Project* active_project = Core::instance()->GetActiveProject(); if (active_project) { @@ -211,7 +231,7 @@ void TimelineWidget::ImportTool::DragDrop(TimelineViewMouseEvent *event) bool sequence_is_valid = true; - if (mbox.clickedButton() == auto_params_btn) { + if (behavior == kDWSAuto) { bool found_video_params = false; bool found_audio_params = false;