mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-06-12 20:01:50 -05:00
Add option to set individual transform settings
This commit is contained in:
parent
2160da59f3
commit
bfc51b2df5
|
|
@ -321,8 +321,8 @@ AdvSceneSwitcher.condition.date.entry.nextMatchDate="Nächster Treffer bei: %1"
|
|||
AdvSceneSwitcher.condition.date.entry.updateOnRepeat="{{updateOnRepeat}} Bei Wiederholung ausgewähltes Datum auf Wiederholungsdatum aktualisieren"
|
||||
AdvSceneSwitcher.condition.sceneTransform="Szenenelement transformieren"
|
||||
AdvSceneSwitcher.condition.sceneTransform.getTransform="Transformation erhalten"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="entspricht Transformation"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.changed="hat sich geändert"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.match="entspricht Transformation"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.changed="hat sich geändert"
|
||||
AdvSceneSwitcher.condition.transition="Übergang"
|
||||
AdvSceneSwitcher.condition.transition.type.current="Aktueller Übergangstyp ist"
|
||||
AdvSceneSwitcher.condition.transition.type.duration="Aktuelle Übergangsdauer beträgt"
|
||||
|
|
@ -495,7 +495,7 @@ AdvSceneSwitcher.action.sceneOrder.type.movePosition="An Position verschieben"
|
|||
AdvSceneSwitcher.action.sceneOrder.entry="Auf{{scenes}}{{actions}}{{sources}}{{position}}"
|
||||
AdvSceneSwitcher.action.sceneTransform="Szenenelement transformieren"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="Transformation erhalten"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="Auf{{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="Auf{{scenes}}{{action}}{{rotation}}{{sources}}{{settingSelection}}{{singleSettingValue}}"
|
||||
AdvSceneSwitcher.action.file="Datei"
|
||||
AdvSceneSwitcher.action.file.type.write="Schreiben"
|
||||
AdvSceneSwitcher.action.file.type.append="Anhängen"
|
||||
|
|
|
|||
|
|
@ -910,7 +910,8 @@ AdvSceneSwitcher.action.sceneOrder.type.moveBottom="Move to bottom"
|
|||
AdvSceneSwitcher.action.sceneOrder.type.movePosition="Move to position"
|
||||
AdvSceneSwitcher.action.sceneOrder.entry="On{{scenes}}{{actions}}{{sources}}{{position}}"
|
||||
AdvSceneSwitcher.action.sceneTransform="Scene item transform"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.manual="Transform"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.manual="Set transform string"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.setSingleSetting="Set transform setting"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.reset="Reset transform"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.rotate="Rotate by"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.flipHorizontal="Flip horizontally"
|
||||
|
|
@ -921,7 +922,8 @@ AdvSceneSwitcher.action.sceneTransform.type.centerToScreen="Center to screen"
|
|||
AdvSceneSwitcher.action.sceneTransform.type.centerVertically="Center vertically"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.centerHorizontally="Center horizontally"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="Get transform"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="On{{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.sceneTransform.getCurrentValue="Get current value"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="On{{scenes}}{{action}}{{rotation}}{{sources}}{{settingSelection}}{{singleSettingValue}}"
|
||||
AdvSceneSwitcher.action.file="File"
|
||||
AdvSceneSwitcher.action.file.type.write="Write"
|
||||
AdvSceneSwitcher.action.file.type.append="Append"
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ AdvSceneSwitcher.condition.date.entry.nextMatchDate="Próxima coincidencia en: %
|
|||
AdvSceneSwitcher.condition.date.entry.updateOnRepeat="{{updateOnRepeat}} Al repetir actualizar la fecha seleccionada para repetir la fecha"
|
||||
AdvSceneSwitcher.condition.sceneTransform="Transformar elemento de escena"
|
||||
AdvSceneSwitcher.condition.sceneTransform.getTransform="Obtener transformación"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="coincide con la transformación"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.match="coincide con la transformación"
|
||||
AdvSceneSwitcher.condition.transition="Transición"
|
||||
AdvSceneSwitcher.condition.transition.type.current="El tipo de transición actual es"
|
||||
AdvSceneSwitcher.condition.transition.type.duration="La duración de la transición actual es"
|
||||
|
|
@ -412,7 +412,7 @@ AdvSceneSwitcher.action.sceneOrder.type.movePosition="Mover a la posición"
|
|||
AdvSceneSwitcher.action.sceneOrder.entry="En{{scenes}}{{actions}}{{sources}}{{position}}"
|
||||
AdvSceneSwitcher.action.sceneTransform="Transformar elemento de escena"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="Obtener transformación"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="En{{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="En{{scenes}}{{action}}{{rotation}}{{sources}}{{settingSelection}}{{singleSettingValue}}"
|
||||
AdvSceneSwitcher.action.file="Archivo"
|
||||
AdvSceneSwitcher.action.file.type.write="Escribir"
|
||||
AdvSceneSwitcher.action.file.type.append="Agregar"
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ AdvSceneSwitcher.condition.date.entry.nextMatchDate="Prochaine correspondance à
|
|||
AdvSceneSwitcher.condition.date.entry.updateOnRepeat="{{updateOnRepeat}}À la répétition, mettre à jour la date sélectionnée pour la date de répétition"
|
||||
AdvSceneSwitcher.condition.sceneTransform="Transformation de l'élément de la scène"
|
||||
AdvSceneSwitcher.condition.sceneTransform.getTransform="Obtenir la transformation"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="correspond à la transformation"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.match="correspond à la transformation"
|
||||
AdvSceneSwitcher.condition.transition="Transition"
|
||||
AdvSceneSwitcher.condition.transition.type.current="Le type de transition actuel est"
|
||||
AdvSceneSwitcher.condition.transition.type.duration="La durée de la transition actuelle est"
|
||||
|
|
@ -610,7 +610,7 @@ AdvSceneSwitcher.action.sceneTransform.type.centerToScreen="Centrer à l'écran"
|
|||
AdvSceneSwitcher.action.sceneTransform.type.centerVertically="Centrer verticalement"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.centerHorizontally="Centrer horizontalement"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="Obtenir la transformation"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="Sur{{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="Sur{{scenes}}{{action}}{{rotation}}{{sources}}{{settingSelection}}{{singleSettingValue}}"
|
||||
AdvSceneSwitcher.action.file="Fichier"
|
||||
AdvSceneSwitcher.action.file.type.write="Écrire"
|
||||
AdvSceneSwitcher.action.file.type.append="Ajouter"
|
||||
|
|
|
|||
|
|
@ -531,8 +531,8 @@ AdvSceneSwitcher.condition.date.entry.pattern="現在の日付「{{currentDate}}
|
|||
AdvSceneSwitcher.condition.date.entry.updateOnRepeat="{{updateOnRepeat}}繰り返しの場合、選択した日付を繰り返しの日付に更新します"
|
||||
; AdvSceneSwitcher.condition.sceneTransform="Scene item transform"
|
||||
; AdvSceneSwitcher.condition.sceneTransform.getTransform="Get transform"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="マッチトランスフォーム"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.changed="変わりました"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.match="マッチトランスフォーム"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.changed="変わりました"
|
||||
; AdvSceneSwitcher.condition.transition="Transition"
|
||||
; AdvSceneSwitcher.condition.transition.type.current="Current transition type is"
|
||||
AdvSceneSwitcher.condition.transition.type.duration="Current transition duration is"
|
||||
|
|
@ -900,7 +900,6 @@ AdvSceneSwitcher.action.sceneTransform.type.centerToScreen="画面中央から"
|
|||
AdvSceneSwitcher.action.sceneTransform.type.centerVertically="縦方向中央に配置"
|
||||
AdvSceneSwitcher.action.sceneTransform.type.centerHorizontally="水平方向に中央揃え"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="変形を取得"
|
||||
; AdvSceneSwitcher.action.sceneTransform.entry="On{{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.file="ファイル"
|
||||
; AdvSceneSwitcher.action.file.type.write="Write"
|
||||
; AdvSceneSwitcher.action.file.type.append="Append"
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ AdvSceneSwitcher.condition.date.state.before="Önce"
|
|||
AdvSceneSwitcher.condition.date.state.between="Arasında"
|
||||
AdvSceneSwitcher.condition.sceneTransform="Sahne öğesi dönüşümü"
|
||||
AdvSceneSwitcher.condition.sceneTransform.getTransform="Dönüşümü al"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="dönüşümle eşleşir"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.match="dönüşümle eşleşir"
|
||||
AdvSceneSwitcher.condition.transition="Geçiş"
|
||||
AdvSceneSwitcher.condition.transition.type.current="Geçerli geçiş türü"
|
||||
AdvSceneSwitcher.condition.transition.type.duration="Mevcut geçiş süresi"
|
||||
|
|
@ -341,7 +341,7 @@ AdvSceneSwitcher.action.sceneOrder.type.movePosition="Konuma taşı"
|
|||
AdvSceneSwitcher.action.sceneOrder.entry="Açık{{scenes}}{{actions}}{{sources}}{{position}}"
|
||||
AdvSceneSwitcher.action.sceneTransform="Sahne öğesi dönüşümü"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="Dönüşümü al"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="Açık{{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="Açık{{scenes}}{{action}}{{rotation}}{{sources}}{{settingSelection}}{{singleSettingValue}}"
|
||||
AdvSceneSwitcher.action.file="Dosya"
|
||||
AdvSceneSwitcher.action.file.type.write="Yaz"
|
||||
AdvSceneSwitcher.action.file.type.append="Ekle"
|
||||
|
|
|
|||
|
|
@ -365,7 +365,7 @@ AdvSceneSwitcher.condition.date.entry.nextMatchDate="下一次匹配 在: %1"
|
|||
AdvSceneSwitcher.condition.date.entry.updateOnRepeat="{{updateOnRepeat}} 重复时,将选定的日期更新为重复日期"
|
||||
AdvSceneSwitcher.condition.sceneTransform="场景项目被改变"
|
||||
AdvSceneSwitcher.condition.sceneTransform.getTransform="内容或者设置被改变了"
|
||||
AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="匹配变换"
|
||||
AdvSceneSwitcher.condition.sceneTransform.condition.match="匹配变换"
|
||||
AdvSceneSwitcher.condition.transition="转场"
|
||||
AdvSceneSwitcher.condition.transition.type.current="当前转场特效类型为"
|
||||
AdvSceneSwitcher.condition.transition.type.duration="当前转场特效持续时间为"
|
||||
|
|
@ -552,7 +552,7 @@ AdvSceneSwitcher.action.sceneOrder.type.movePosition="移动到数值位置"
|
|||
AdvSceneSwitcher.action.sceneOrder.entry="在 {{scenes}} {{actions}} {{sources}} {{position}}"
|
||||
AdvSceneSwitcher.action.sceneTransform="场景项目转换"
|
||||
AdvSceneSwitcher.action.sceneTransform.getTransform="获得转换"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="在 {{scenes}}{{action}}{{rotation}}{{sources}}"
|
||||
AdvSceneSwitcher.action.sceneTransform.entry="在{{scenes}}{{action}}{{rotation}}{{sources}}{{settingSelection}}{{singleSettingValue}}"
|
||||
AdvSceneSwitcher.action.file="文件"
|
||||
AdvSceneSwitcher.action.file.type.write="写入"
|
||||
AdvSceneSwitcher.action.file.type.append="追加写入"
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ bool MacroActionSceneTransform::_registered = MacroActionFactory::Register(
|
|||
const static std::map<MacroActionSceneTransform::Action, std::string> actions = {
|
||||
{MacroActionSceneTransform::Action::MANUAL_TRANSFORM,
|
||||
"AdvSceneSwitcher.action.sceneTransform.type.manual"},
|
||||
{MacroActionSceneTransform::Action::SINGLE_TRANSFORM_SETTING,
|
||||
"AdvSceneSwitcher.action.sceneTransform.type.setSingleSetting"},
|
||||
{MacroActionSceneTransform::Action::RESET,
|
||||
"AdvSceneSwitcher.action.sceneTransform.type.reset"},
|
||||
{MacroActionSceneTransform::Action::ROTATE,
|
||||
|
|
@ -200,49 +202,52 @@ void MacroActionSceneTransform::Transform(obs_scene_item *item)
|
|||
}
|
||||
|
||||
switch (_action) {
|
||||
case MacroActionSceneTransform::Action::RESET:
|
||||
case Action::RESET:
|
||||
obs_sceneitem_defer_update_begin(item);
|
||||
reset(item);
|
||||
obs_sceneitem_defer_update_end(item);
|
||||
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::ROTATE:
|
||||
case Action::ROTATE:
|
||||
rotate(item, _rotation);
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::FLIP_HORIZONTAL: {
|
||||
case Action::FLIP_HORIZONTAL: {
|
||||
vec2 scale;
|
||||
vec2_set(&scale, -1.0f, 1.0f);
|
||||
flip(item, scale);
|
||||
break;
|
||||
}
|
||||
case MacroActionSceneTransform::Action::FLIP_VERTICAL: {
|
||||
case Action::FLIP_VERTICAL: {
|
||||
vec2 scale;
|
||||
vec2_set(&scale, 1.0f, -1.0f);
|
||||
flip(item, scale);
|
||||
break;
|
||||
}
|
||||
case MacroActionSceneTransform::Action::FIT_TO_SCREEN:
|
||||
case Action::FIT_TO_SCREEN:
|
||||
centerAlign(item, OBS_BOUNDS_SCALE_INNER);
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::STRETCH_TO_SCREEN:
|
||||
case Action::STRETCH_TO_SCREEN:
|
||||
centerAlign(item, OBS_BOUNDS_STRETCH);
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::CENTER_TO_SCREEN:
|
||||
case Action::CENTER_TO_SCREEN:
|
||||
center(item, CenterType::SCREEN);
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::CENTER_VERTICALLY:
|
||||
case Action::CENTER_VERTICALLY:
|
||||
center(item, CenterType::VERTICAL);
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::CENTER_HORIZONTALLY:
|
||||
case Action::CENTER_HORIZONTALLY:
|
||||
center(item, CenterType::HORIZONTAL);
|
||||
break;
|
||||
case MacroActionSceneTransform::Action::MANUAL_TRANSFORM:
|
||||
ApplySettings(_settings); // Resolves variables
|
||||
case Action::MANUAL_TRANSFORM:
|
||||
ApplySettings(_transformString); // Resolves variables
|
||||
obs_sceneitem_defer_update_begin(item);
|
||||
obs_sceneitem_set_info(item, &_info);
|
||||
obs_sceneitem_set_crop(item, &_crop);
|
||||
obs_sceneitem_defer_update_end(item);
|
||||
break;
|
||||
case Action::SINGLE_TRANSFORM_SETTING:
|
||||
SetTransformSetting(item, _settingSelection,
|
||||
_singleSettingsValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -270,7 +275,9 @@ bool MacroActionSceneTransform::Save(obs_data_t *obj) const
|
|||
_scene.Save(obj);
|
||||
_source.Save(obj);
|
||||
_rotation.Save(obj, "rotation");
|
||||
_settings.Save(obj, "settings");
|
||||
_transformString.Save(obj, "settings");
|
||||
_singleSettingsValue.Save(obj, "singleSettingsValue");
|
||||
_settingSelection.Save(obj);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -293,13 +300,15 @@ bool MacroActionSceneTransform::Load(obs_data_t *obj)
|
|||
_scene.Load(obj);
|
||||
_source.Load(obj);
|
||||
_rotation.Load(obj, "rotation");
|
||||
_settings.Load(obj, "settings");
|
||||
_transformString.Load(obj, "settings");
|
||||
_singleSettingsValue.Load(obj, "singleSettingsValue");
|
||||
_settingSelection.Load(obj);
|
||||
|
||||
// Convert old data format
|
||||
// TODO: Remove in future version
|
||||
if (!obs_data_has_user_value(obj, "settings")) {
|
||||
LoadTransformState(obj, _info, _crop);
|
||||
_settings = ConvertSettings();
|
||||
_transformString = ConvertSettings();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -326,8 +335,9 @@ void MacroActionSceneTransform::ResolveVariablesToFixedValues()
|
|||
{
|
||||
_scene.ResolveVariables();
|
||||
_source.ResolveVariables();
|
||||
_settings.ResolveVariables();
|
||||
_transformString.ResolveVariables();
|
||||
_rotation.ResolveVariables();
|
||||
_singleSettingsValue.ResolveVariables();
|
||||
}
|
||||
|
||||
std::string MacroActionSceneTransform::ConvertSettings()
|
||||
|
|
@ -381,9 +391,13 @@ MacroActionSceneTransformEdit::MacroActionSceneTransformEdit(
|
|||
_sources(new SceneItemSelectionWidget(parent)),
|
||||
_action(new QComboBox()),
|
||||
_rotation(new VariableDoubleSpinBox()),
|
||||
_getSettings(new QPushButton(obs_module_text(
|
||||
_getTransform(new QPushButton(obs_module_text(
|
||||
"AdvSceneSwitcher.action.sceneTransform.getTransform"))),
|
||||
_settings(new VariableTextEdit(this)),
|
||||
_getCurrentValue(new QPushButton(obs_module_text(
|
||||
"AdvSceneSwitcher.action.sceneTransform.getCurrentValue"))),
|
||||
_transformString(new VariableTextEdit(this)),
|
||||
_settingSelection(new TransformSettingSelection(this)),
|
||||
_singleSettingValue(new VariableLineEdit(this)),
|
||||
_buttonLayout(new QHBoxLayout())
|
||||
{
|
||||
_rotation->setMinimum(-360);
|
||||
|
|
@ -405,28 +419,40 @@ MacroActionSceneTransformEdit::MacroActionSceneTransformEdit(
|
|||
_rotation,
|
||||
SIGNAL(NumberVariableChanged(const NumberVariable<double> &)),
|
||||
this, SLOT(RotationChanged(const NumberVariable<double> &)));
|
||||
QWidget::connect(_getSettings, SIGNAL(clicked()), this,
|
||||
QWidget::connect(_getTransform, SIGNAL(clicked()), this,
|
||||
SLOT(GetSettingsClicked()));
|
||||
QWidget::connect(_settings, SIGNAL(textChanged()), this,
|
||||
SLOT(SettingsChanged()));
|
||||
QWidget::connect(_getCurrentValue, SIGNAL(clicked()), this,
|
||||
SLOT(GetCurrentValueClicked()));
|
||||
QWidget::connect(_transformString, SIGNAL(textChanged()), this,
|
||||
SLOT(TransformStringChanged()));
|
||||
QWidget::connect(_singleSettingValue, SIGNAL(editingFinished()), this,
|
||||
SLOT(SettingValueChanged()));
|
||||
QWidget::connect(
|
||||
_settingSelection,
|
||||
SIGNAL(SelectionChanged(const TransformSetting &)), this,
|
||||
SLOT(SettingSelectionChanged(const TransformSetting &)));
|
||||
|
||||
QHBoxLayout *entryLayout = new QHBoxLayout;
|
||||
|
||||
std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
|
||||
{"{{scenes}}", _scenes}, {"{{rotation}}", _rotation},
|
||||
{"{{sources}}", _sources}, {"{{action}}", _action},
|
||||
{"{{settings}}", _settings}, {"{{getSettings}}", _getSettings},
|
||||
{"{{scenes}}", _scenes},
|
||||
{"{{rotation}}", _rotation},
|
||||
{"{{sources}}", _sources},
|
||||
{"{{action}}", _action},
|
||||
{"{{settingSelection}}", _settingSelection},
|
||||
{"{{singleSettingValue}}", _singleSettingValue},
|
||||
};
|
||||
PlaceWidgets(
|
||||
obs_module_text("AdvSceneSwitcher.action.sceneTransform.entry"),
|
||||
entryLayout, widgetPlaceholders);
|
||||
|
||||
_buttonLayout->addWidget(_getSettings);
|
||||
_buttonLayout->addWidget(_getTransform);
|
||||
_buttonLayout->addWidget(_getCurrentValue);
|
||||
_buttonLayout->addStretch();
|
||||
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout;
|
||||
auto mainLayout = new QVBoxLayout;
|
||||
mainLayout->addLayout(entryLayout);
|
||||
mainLayout->addWidget(_settings);
|
||||
mainLayout->addWidget(_transformString);
|
||||
mainLayout->addLayout(_buttonLayout);
|
||||
setLayout(mainLayout);
|
||||
|
||||
|
|
@ -446,28 +472,31 @@ void MacroActionSceneTransformEdit::UpdateEntryData()
|
|||
_action->setCurrentIndex(
|
||||
_action->findData(static_cast<int>(_entryData->_action)));
|
||||
_rotation->SetValue(_entryData->_rotation);
|
||||
_settings->setPlainText(_entryData->_settings);
|
||||
_transformString->setPlainText(_entryData->_transformString);
|
||||
UpdateSettingSelection();
|
||||
_settingSelection->SetSetting(_entryData->_settingSelection);
|
||||
_singleSettingValue->setText(_entryData->_singleSettingsValue);
|
||||
SetWidgetVisibility();
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::SceneChanged(const SceneSelection &s)
|
||||
{
|
||||
if (_loading || !_entryData) {
|
||||
return;
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_scene = s;
|
||||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
_entryData->_scene = s;
|
||||
UpdateSettingSelection();
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::SourceChanged(const SceneItemSelection &item)
|
||||
{
|
||||
if (_loading || !_entryData) {
|
||||
return;
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_source = item;
|
||||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
_entryData->_source = item;
|
||||
UpdateSettingSelection();
|
||||
emit HeaderInfoChanged(
|
||||
QString::fromStdString(_entryData->GetShortDesc()));
|
||||
adjustSize();
|
||||
|
|
@ -476,11 +505,7 @@ void MacroActionSceneTransformEdit::SourceChanged(const SceneItemSelection &item
|
|||
|
||||
void MacroActionSceneTransformEdit::ActionChanged(int idx)
|
||||
{
|
||||
if (_loading || !_entryData) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_action = static_cast<MacroActionSceneTransform::Action>(
|
||||
_action->itemData(idx).toInt());
|
||||
SetWidgetVisibility();
|
||||
|
|
@ -488,11 +513,7 @@ void MacroActionSceneTransformEdit::ActionChanged(int idx)
|
|||
|
||||
void MacroActionSceneTransformEdit::RotationChanged(const DoubleVariable &value)
|
||||
{
|
||||
if (_loading || !_entryData) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_rotation = value;
|
||||
}
|
||||
|
||||
|
|
@ -508,17 +529,52 @@ void MacroActionSceneTransformEdit::GetSettingsClicked()
|
|||
}
|
||||
|
||||
auto settings = GetSceneItemTransform(items[0]);
|
||||
_settings->setPlainText(FormatJsonString(settings));
|
||||
_transformString->setPlainText(FormatJsonString(settings));
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::SettingsChanged()
|
||||
void MacroActionSceneTransformEdit::GetCurrentValueClicked()
|
||||
{
|
||||
if (_loading || !_entryData) {
|
||||
if (_loading || !_entryData || !_entryData->_scene.GetScene(false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
_entryData->_settings = _settings->toPlainText().toStdString();
|
||||
auto items = _entryData->_source.GetSceneItems(_entryData->_scene);
|
||||
if (items.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto value = GetTransformSettingValue(items.at(0),
|
||||
_entryData->_settingSelection);
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
||||
_singleSettingValue->setText(QString::fromStdString(*value));
|
||||
SettingValueChanged();
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::TransformStringChanged()
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_transformString =
|
||||
_transformString->toPlainText().toStdString();
|
||||
|
||||
adjustSize();
|
||||
updateGeometry();
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::SettingSelectionChanged(
|
||||
const TransformSetting &setting)
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_settingSelection = setting;
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::SettingValueChanged()
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_singleSettingsValue =
|
||||
_singleSettingValue->text().toStdString();
|
||||
|
||||
adjustSize();
|
||||
updateGeometry();
|
||||
|
|
@ -530,13 +586,39 @@ void MacroActionSceneTransformEdit::SetWidgetVisibility()
|
|||
_buttonLayout,
|
||||
_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::MANUAL_TRANSFORM);
|
||||
_settings->setVisible(
|
||||
_transformString->setVisible(
|
||||
_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::MANUAL_TRANSFORM);
|
||||
_rotation->setVisible(_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::ROTATE);
|
||||
_getTransform->setVisible(
|
||||
_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::MANUAL_TRANSFORM);
|
||||
_getCurrentValue->setVisible(
|
||||
_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::SINGLE_TRANSFORM_SETTING);
|
||||
_settingSelection->setVisible(
|
||||
_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::SINGLE_TRANSFORM_SETTING);
|
||||
_singleSettingValue->setVisible(
|
||||
_entryData->_action ==
|
||||
MacroActionSceneTransform::Action::SINGLE_TRANSFORM_SETTING);
|
||||
adjustSize();
|
||||
updateGeometry();
|
||||
}
|
||||
|
||||
void MacroActionSceneTransformEdit::UpdateSettingSelection() const
|
||||
{
|
||||
if (!_entryData) {
|
||||
_settingSelection->SetSource(nullptr);
|
||||
return;
|
||||
}
|
||||
auto items = _entryData->_source.GetSceneItems(_entryData->_scene);
|
||||
if (items.empty()) {
|
||||
_settingSelection->SetSource(nullptr);
|
||||
return;
|
||||
}
|
||||
_settingSelection->SetSource(items.at(0));
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "macro-action-edit.hpp"
|
||||
#include "scene-selection.hpp"
|
||||
#include "scene-item-selection.hpp"
|
||||
#include "transform-setting.hpp"
|
||||
#include "variable-text-edit.hpp"
|
||||
#include "variable-spinbox.hpp"
|
||||
|
||||
|
|
@ -33,13 +34,16 @@ public:
|
|||
CENTER_VERTICALLY,
|
||||
CENTER_HORIZONTALLY,
|
||||
MANUAL_TRANSFORM = 100,
|
||||
SINGLE_TRANSFORM_SETTING,
|
||||
};
|
||||
|
||||
Action _action = Action::RESET;
|
||||
SceneSelection _scene;
|
||||
SceneItemSelection _source;
|
||||
StringVariable _settings = "";
|
||||
StringVariable _transformString = "";
|
||||
DoubleVariable _rotation = 90.0;
|
||||
StringVariable _singleSettingsValue = "";
|
||||
TransformSetting _settingSelection;
|
||||
|
||||
private:
|
||||
void Transform(obs_scene_item *);
|
||||
|
|
@ -76,19 +80,26 @@ private slots:
|
|||
void ActionChanged(int);
|
||||
void RotationChanged(const NumberVariable<double> &value);
|
||||
void GetSettingsClicked();
|
||||
void SettingsChanged();
|
||||
void GetCurrentValueClicked();
|
||||
void TransformStringChanged();
|
||||
void SettingSelectionChanged(const TransformSetting &);
|
||||
void SettingValueChanged();
|
||||
signals:
|
||||
void HeaderInfoChanged(const QString &);
|
||||
|
||||
private:
|
||||
void SetWidgetVisibility();
|
||||
void UpdateSettingSelection() const;
|
||||
|
||||
SceneSelectionWidget *_scenes;
|
||||
SceneItemSelectionWidget *_sources;
|
||||
QComboBox *_action;
|
||||
VariableDoubleSpinBox *_rotation;
|
||||
QPushButton *_getSettings;
|
||||
VariableTextEdit *_settings;
|
||||
QPushButton *_getTransform;
|
||||
QPushButton *_getCurrentValue;
|
||||
VariableTextEdit *_transformString;
|
||||
TransformSettingSelection *_settingSelection;
|
||||
VariableLineEdit *_singleSettingValue;
|
||||
QHBoxLayout *_buttonLayout;
|
||||
|
||||
std::shared_ptr<MacroActionSceneTransform> _entryData;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user