From c3aa421bc58cb3ebc1130ed9072b15ffd11e15a7 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Wed, 31 Aug 2022 10:28:08 +0200 Subject: [PATCH] Add option to split recording --- data/locale/en-US.ini | 4 ++- data/locale/es-ES.ini | 2 +- data/locale/ru-RU.ini | 2 +- data/locale/tr-TR.ini | 2 +- data/locale/zh-CN.ini | 2 +- src/macro-core/macro-action-recording.cpp | 34 +++++++++++++++-------- src/macro-core/macro-action-recording.hpp | 4 +++ 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 928a92e0..f2eb9319 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -364,8 +364,10 @@ AdvSceneSwitcher.action.recording.type.stop="Stop recording" AdvSceneSwitcher.action.recording.type.start="Start recording" AdvSceneSwitcher.action.recording.type.pause="Pause recording" AdvSceneSwitcher.action.recording.type.unpause="Unpause recording" +AdvSceneSwitcher.action.recording.type.split="Split recording file" AdvSceneSwitcher.action.recording.pause.hint="Note that depending on your recording settings you might not be able to pause recording" -AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}" +AdvSceneSwitcher.action.recording.split.hint="Make sure to enable automatic file splitting in the OBS settings first!" +AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}{{splitHint}}" AdvSceneSwitcher.action.replay="Replay buffer" AdvSceneSwitcher.action.replay.saveWarn="Warning: Saving too frequently might result in the replay buffer not actually being saved!" AdvSceneSwitcher.action.replay.type.stop="Stop replay buffer" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index b7eb567a..854f8a73 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -350,7 +350,7 @@ AdvSceneSwitcher.action.recording.type.start="Iniciar grabación" AdvSceneSwitcher.action.recording.type.pause="Pausar grabación" AdvSceneSwitcher.action.recording.type.unpause="Reanudar grabación" AdvSceneSwitcher.action.recording.pause.hint="Tenga en cuenta que, dependiendo de la configuración de grabación, es posible que no pueda pausar la grabación" -AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}" +AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}{{splitHint}}" AdvSceneSwitcher.action.replay="Búfer de reproducción" AdvSceneSwitcher.action.replay.saveWarn="Advertencia: ¡Guardar con demasiada frecuencia puede hacer que el búfer de reproducción no se guarde realmente!" AdvSceneSwitcher.action.replay.type.stop="Detener el búfer de reproducción" diff --git a/data/locale/ru-RU.ini b/data/locale/ru-RU.ini index 838273a0..02b0edcc 100644 --- a/data/locale/ru-RU.ini +++ b/data/locale/ru-RU.ini @@ -132,7 +132,7 @@ AdvSceneSwitcher.action.recording.type.start="Начать запись" AdvSceneSwitcher.action.recording.type.pause="Пауза записи" AdvSceneSwitcher.action.recording.type.unpause="Снять запись с паузы" AdvSceneSwitcher.action.recording.pause.hint="Обратите внимание, что в зависимости от настроек записи вы можете не иметь возможности приостановить запись" -AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}" +AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}{{splitHint}}" AdvSceneSwitcher.action.replay="Буфер воспроизведения" AdvSceneSwitcher.action.replay.type.stop="Остановить буфер воспроизведения" AdvSceneSwitcher.action.replay.type.start="Начать воспроизведение буфера" diff --git a/data/locale/tr-TR.ini b/data/locale/tr-TR.ini index 1a783f33..db64f8cf 100644 --- a/data/locale/tr-TR.ini +++ b/data/locale/tr-TR.ini @@ -280,7 +280,7 @@ AdvSceneSwitcher.action.recording.type.start="Kayıt Başlat" AdvSceneSwitcher.action.recording.type.pause="Kayıt Duraklat" AdvSceneSwitcher.action.recording.type.unpause="Kayıt Duraklatma" AdvSceneSwitcher.action.recording.pause.hint="Kayıt ayarlarınıza bağlı olarak kaydı duraklatamayabileceğinizi unutmayın." -AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}" +AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}{{splitHint}}" AdvSceneSwitcher.action.replay="Tekrar arabelleği" AdvSceneSwitcher.action.replay.type.stop="Tekrar arabelleğini durdur" AdvSceneSwitcher.action.replay.type.start="Tekrar arabelleğini başlat" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 863ecaab..3fc048ce 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -323,7 +323,7 @@ AdvSceneSwitcher.action.recording.type.start="开始录制" AdvSceneSwitcher.action.recording.type.pause="暂停录制" AdvSceneSwitcher.action.recording.type.unpause="取消录制暂停" AdvSceneSwitcher.action.recording.pause.hint="请注意,根据您的录制设置,您可能无法暂停录制" -AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}" +AdvSceneSwitcher.action.recording.entry="{{actions}}{{pauseHint}}{{splitHint}}" AdvSceneSwitcher.action.replay="回放缓冲区" AdvSceneSwitcher.action.replay.type.stop="停止回放缓冲区" AdvSceneSwitcher.action.replay.type.start="启动回放缓冲区" diff --git a/src/macro-core/macro-action-recording.cpp b/src/macro-core/macro-action-recording.cpp index 42c97f2f..b999650e 100644 --- a/src/macro-core/macro-action-recording.cpp +++ b/src/macro-core/macro-action-recording.cpp @@ -15,6 +15,7 @@ const static std::map actionTypes = { {RecordAction::PAUSE, "AdvSceneSwitcher.action.recording.type.pause"}, {RecordAction::UNPAUSE, "AdvSceneSwitcher.action.recording.type.unpause"}, + {RecordAction::SPLIT, "AdvSceneSwitcher.action.recording.type.split"}, }; bool MacroActionRecord::PerformAction() @@ -42,6 +43,9 @@ bool MacroActionRecord::PerformAction() obs_frontend_recording_pause(false); } break; + case RecordAction::SPLIT: + obs_frontend_recording_split_file(); + break; default: break; } @@ -82,12 +86,13 @@ static inline void populateActionSelection(QComboBox *list) MacroActionRecordEdit::MacroActionRecordEdit( QWidget *parent, std::shared_ptr entryData) - : QWidget(parent) + : QWidget(parent), + _actions(new QComboBox()), + _pauseHint(new QLabel(obs_module_text( + "AdvSceneSwitcher.action.recording.pause.hint"))), + _splitHint(new QLabel(obs_module_text( + "AdvSceneSwitcher.action.recording.split.hint"))) { - _actions = new QComboBox(); - _pauseHint = new QLabel(obs_module_text( - "AdvSceneSwitcher.action.recording.pause.hint")); - populateActionSelection(_actions); QWidget::connect(_actions, SIGNAL(currentIndexChanged(int)), this, @@ -97,6 +102,7 @@ MacroActionRecordEdit::MacroActionRecordEdit( std::unordered_map widgetPlaceholders = { {"{{actions}}", _actions}, {"{{pauseHint}}", _pauseHint}, + {"{{splitHint}}", _splitHint}, }; placeWidgets(obs_module_text("AdvSceneSwitcher.action.recording.entry"), mainLayout, widgetPlaceholders); @@ -107,18 +113,24 @@ MacroActionRecordEdit::MacroActionRecordEdit( _loading = false; } -bool isPauseAction(RecordAction a) -{ - return a == RecordAction::PAUSE || a == RecordAction::UNPAUSE; -} - void MacroActionRecordEdit::UpdateEntryData() { if (!_entryData) { return; } _actions->setCurrentIndex(static_cast(_entryData->_action)); + SetLabelVisibility(); +} + +bool isPauseAction(RecordAction a) +{ + return a == RecordAction::PAUSE || a == RecordAction::UNPAUSE; +} + +void MacroActionRecordEdit::SetLabelVisibility() +{ _pauseHint->setVisible(isPauseAction(_entryData->_action)); + _splitHint->setVisible(_entryData->_action == RecordAction::SPLIT); } void MacroActionRecordEdit::ActionChanged(int value) @@ -129,5 +141,5 @@ void MacroActionRecordEdit::ActionChanged(int value) std::lock_guard lock(switcher->m); _entryData->_action = static_cast(value); - _pauseHint->setVisible(isPauseAction(_entryData->_action)); + SetLabelVisibility(); } diff --git a/src/macro-core/macro-action-recording.hpp b/src/macro-core/macro-action-recording.hpp index b01ac871..b3e4772f 100644 --- a/src/macro-core/macro-action-recording.hpp +++ b/src/macro-core/macro-action-recording.hpp @@ -9,6 +9,7 @@ enum class RecordAction { START, PAUSE, UNPAUSE, + SPLIT, }; class MacroActionRecord : public MacroAction { @@ -53,9 +54,12 @@ private slots: protected: QComboBox *_actions; QLabel *_pauseHint; + QLabel *_splitHint; std::shared_ptr _entryData; private: + void SetLabelVisibility(); + QHBoxLayout *_mainLayout; bool _loading = true; };