From bc29ece5267e7218b806d80a6613853e10a3d8f7 Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:47:10 +0100 Subject: [PATCH] Cleanup and layout adjustments --- data/locale/en-US.ini | 6 +- data/locale/ja-JP.ini | 11 ++- data/locale/zh-CN.ini | 11 ++- plugins/twitch/macro-action-twitch.cpp | 96 +++++++++++--------------- 4 files changed, 64 insertions(+), 60 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 020aaeed..2f244608 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -1283,12 +1283,14 @@ AdvSceneSwitcher.action.twitch.categorySelectionDisabled="Cannot select category AdvSceneSwitcher.action.twitch.layout.default="On{{account}}{{actions}}{{streamTitle}}{{category}}{{markerDescription}}{{clipHasDelay}}{{duration}}{{announcementColor}}{{channel}}{{pointsReward}}" AdvSceneSwitcher.action.twitch.layout.chat="Using account{{account}}{{actions}}on{{channel}}" AdvSceneSwitcher.action.twitch.layout.channel.getInfo="Using account{{account}}{{actions}}of{{channel}}" -AdvSceneSwitcher.action.twitch.layout.user.getInfo="Using account{{account}}{{actions}}for{{userInfoQueryType}}{{userLogin}}{{userId}}" +AdvSceneSwitcher.action.twitch.layout.user.getInfo.row1="Using account{{account}}{{actions}}" +AdvSceneSwitcher.action.twitch.layout.user.getInfo.row2="for{{userInfoQueryType}}{{userLogin}}{{userId}}" AdvSceneSwitcher.action.twitch.layout.user.moderation.row1="Using account{{account}}{{actions}}" AdvSceneSwitcher.action.twitch.layout.user.moderation.row2="on channel{{channel}}for{{userInfoQueryType}}{{userLogin}}{{userId}}" AdvSceneSwitcher.action.twitch.layout.user.ban.row1="Using account{{account}}{{actions}}timeout{{duration}}" AdvSceneSwitcher.action.twitch.layout.user.ban.row2="on channel{{channel}}for{{userInfoQueryType}}{{userLogin}}{{userId}}reason{{banReason}}" -AdvSceneSwitcher.action.twitch.layout.reward.getInfo="Using account{{account}}{{actions}}for channel{{channel}}{{pointsReward}}{{rewardVariable}}{{toggleRewardSelection}}" +AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row1="Using account{{account}}{{actions}}for channel{{channel}}" +AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row2="{{pointsReward}}{{rewardVariable}}{{toggleRewardSelection}}" AdvSceneSwitcher.action.twitch.title.title="Enter title" AdvSceneSwitcher.action.twitch.marker.description="Describe marker" AdvSceneSwitcher.action.twitch.clip.hasDelay="Add a slight delay before capturing the clip" diff --git a/data/locale/ja-JP.ini b/data/locale/ja-JP.ini index baefc74b..e39022e4 100644 --- a/data/locale/ja-JP.ini +++ b/data/locale/ja-JP.ini @@ -1190,8 +1190,15 @@ AdvSceneSwitcher.action.twitch.reward.toggleControl="リワード名/変数選 AdvSceneSwitcher.action.twitch.categorySelectionDisabled="Twitchアカウントを選択しないとカテゴリを選択できません!" ; AdvSceneSwitcher.action.twitch.layout.default="On{{account}}{{actions}}{{streamTitle}}{{category}}{{markerDescription}}{{clipHasDelay}}{{duration}}{{announcementColor}}{{channel}}" AdvSceneSwitcher.action.twitch.layout.chat="{{channel}}でアカウント{{account}}{{actions}}を使用しています" -AdvSceneSwitcher.action.twitch.layout.user.getInfo="{{userInfoQueryType}}{{userLogin}}{{userId}}でアカウント{{account}}{{actions}}を使用" -AdvSceneSwitcher.action.twitch.layout.reward.getInfo="チャンネル{{channel}}{{pointsReward}}{{rewardVariable}}{{toggleRewardSelection}}でアカウント{{account}}{{actions}}を使用" +AdvSceneSwitcher.action.twitch.layout.channel.getInfo="チャンネル{{channel}}でアカウント{{account}}{{actions}}を使用" +AdvSceneSwitcher.action.twitch.layout.user.getInfo.row1="アカウント{{account}}{{actions}}を使用" +AdvSceneSwitcher.action.twitch.layout.user.getInfo.row2="{{userInfoQueryType}}{{userLogin}}{{userId}}" +AdvSceneSwitcher.action.twitch.layout.user.moderation.row1="アカウント{{account}}{{actions}}を使用" +AdvSceneSwitcher.action.twitch.layout.user.moderation.row2="チャンネル{{channel}}{{userInfoQueryType}}{{userLogin}}{{userId}}" +AdvSceneSwitcher.action.twitch.layout.user.ban.row1="アカウント{{account}}{{actions}}を使用 タイムアウト{{duration}}" +AdvSceneSwitcher.action.twitch.layout.user.ban.row2="チャンネル{{channel}}{{userInfoQueryType}}{{userLogin}}{{userId}} 理由{{banReason}}" +AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row1="チャンネル{{channel}}でアカウント{{account}}{{actions}}を使用" +AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row2="{{pointsReward}}{{rewardVariable}}{{toggleRewardSelection}}" AdvSceneSwitcher.action.twitch.title.title="タイトルを入力" AdvSceneSwitcher.action.twitch.marker.description="マーカーの説明" AdvSceneSwitcher.action.twitch.clip.hasDelay="クリップをキャプチャする前にわずかな遅延を追加します" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 5f27bf5a..90306ec9 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -1141,8 +1141,15 @@ AdvSceneSwitcher.action.twitch.reward.toggleControl="切换奖励名称/变量 AdvSceneSwitcher.action.twitch.categorySelectionDisabled="在未选择 Twitch 帐户的情况下无法选择类别!" AdvSceneSwitcher.action.twitch.layout.default="{{account}}{{actions}}{{streamTitle}}{{category}}{{markerDescription}}{{clipHasDelay}}{{duration}}{{announcementColor}}{{channel}}{{pointsReward}}" AdvSceneSwitcher.action.twitch.layout.chat="使用账户{{account}}{{actions}}{{channel}}" -AdvSceneSwitcher.action.twitch.layout.user.getInfo="使用账户{{account}}{{actions}}{{userInfoQueryType}}{{userLogin}}{{userId}}" -AdvSceneSwitcher.action.twitch.layout.reward.getInfo="使用账户{{account}}{{actions}} 频道{{channel}}{{pointsReward}}{{rewardVariable}}{{toggleRewardSelection}}" +AdvSceneSwitcher.action.twitch.layout.channel.getInfo="使用账户{{account}}{{actions}}频道{{channel}}" +AdvSceneSwitcher.action.twitch.layout.user.getInfo.row1="使用账户{{account}}{{actions}}" +AdvSceneSwitcher.action.twitch.layout.user.getInfo.row2="{{userInfoQueryType}}{{userLogin}}{{userId}}" +AdvSceneSwitcher.action.twitch.layout.user.moderation.row1="使用账户{{account}}{{actions}}" +AdvSceneSwitcher.action.twitch.layout.user.moderation.row2="频道{{channel}}{{userInfoQueryType}}{{userLogin}}{{userId}}" +AdvSceneSwitcher.action.twitch.layout.user.ban.row1="使用账户{{account}}{{actions}}超时{{duration}}" +AdvSceneSwitcher.action.twitch.layout.user.ban.row2="频道{{channel}}{{userInfoQueryType}}{{userLogin}}{{userId}}原因{{banReason}}" +AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row1="使用账户{{account}}{{actions}} 频道{{channel}}" +AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row2="{{pointsReward}}{{rewardVariable}}{{toggleRewardSelection}}" AdvSceneSwitcher.action.twitch.title.title="输入标题" AdvSceneSwitcher.action.twitch.marker.description="标记描述" AdvSceneSwitcher.action.twitch.clip.hasDelay="在捕捉视频片段前稍加延迟" diff --git a/plugins/twitch/macro-action-twitch.cpp b/plugins/twitch/macro-action-twitch.cpp index 23e216d2..9e6c64de 100644 --- a/plugins/twitch/macro-action-twitch.cpp +++ b/plugins/twitch/macro-action-twitch.cpp @@ -33,7 +33,7 @@ void MacroActionTwitch::ResolveVariablesToFixedValues() _pointsReward.title = _lastResolvedRewardTitle; _pointsReward.id = _lastResolvedRewardId; } else { - _pointsReward.id = ""; + _pointsReward.title = ""; _pointsReward.id = ""; } } @@ -345,7 +345,7 @@ void MacroActionTwitch::StartRaid(const std::shared_ptr &token) "/helix/raids", {}, data.Get()); if (result.status != 200) { - blog(LOG_INFO, "Failed to start raid! (%d)\n", result.status); + blog(LOG_INFO, "Failed to start raid! (%d)", result.status); } } @@ -378,7 +378,7 @@ void MacroActionTwitch::GetUserInfo(const std::shared_ptr &token) "/helix/users", params, true); if (result.status != 200) { - blog(LOG_INFO, "Failed get user info! (%d)\n", result.status); + blog(LOG_INFO, "Failed get user info! (%d)", result.status); return; } @@ -541,7 +541,7 @@ void MacroActionTwitch::GetRewardInfo(const std::shared_ptr &token) params, true); if (result.status != 200) { - blog(LOG_INFO, "Failed get reward info! (%d)\n", result.status); + blog(LOG_INFO, "Failed get reward info! (%d)", result.status); return; } @@ -1199,7 +1199,6 @@ bool MacroActionTwitch::ActionIsSupportedByToken() } auto it = requiredOption.find(_action); - assert(it != requiredOption.end()); if (it == requiredOption.end()) { return false; } @@ -1538,21 +1537,18 @@ void MacroActionTwitchEdit::SetWidgetSignalConnections() void MacroActionTwitchEdit::SetWidgetVisibility() { + const auto action = _entryData->GetAction(); _streamTitle->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::CHANNEL_INFO_TITLE_SET); + action == MacroActionTwitch::Action::CHANNEL_INFO_TITLE_SET); _category->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::CHANNEL_INFO_CATEGORY_SET); - _tags->setVisible(_entryData->GetAction() == + action == MacroActionTwitch::Action::CHANNEL_INFO_CATEGORY_SET); + _tags->setVisible(action == MacroActionTwitch::Action::CHANNEL_INFO_TAGS_SET); _language->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::CHANNEL_INFO_LANGUAGE_SET); + action == MacroActionTwitch::Action::CHANNEL_INFO_LANGUAGE_SET); _contentClassification->setVisible( - _entryData->GetAction() == + action == MacroActionTwitch::Action::CHANNEL_INFO_CONTENT_LABELS_SET); - const auto action = _entryData->GetAction(); const bool isChannelModAction = action == MacroActionTwitch::Action::USER_BAN || action == MacroActionTwitch::Action::USER_UNBAN || @@ -1572,39 +1568,32 @@ void MacroActionTwitchEdit::SetWidgetVisibility() action == MacroActionTwitch::Action::COMMERCIAL_START || action == MacroActionTwitch::Action::USER_BAN); _banReason->setVisible(action == MacroActionTwitch::Action::USER_BAN); - _userModerationRow->setVisible(isChannelModAction); + _userModerationRow->setVisible( + isChannelModAction || + action == MacroActionTwitch::Action::USER_GET_INFO || + action == MacroActionTwitch::Action::USER_BLOCK || + action == MacroActionTwitch::Action::USER_UNBLOCK || + action == MacroActionTwitch::Action::POINTS_REWARD_GET_INFO); _markerDescription->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::MARKER_CREATE); - _clipHasDelay->setVisible(_entryData->GetAction() == + action == MacroActionTwitch::Action::MARKER_CREATE); + _clipHasDelay->setVisible(action == MacroActionTwitch::Action::CLIP_CREATE); _announcementMessage->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::CHAT_ANNOUNCEMENT_SEND); + action == MacroActionTwitch::Action::CHAT_ANNOUNCEMENT_SEND); _announcementColor->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::CHAT_ANNOUNCEMENT_SEND); - _chatMessage->setVisible(_entryData->GetAction() == + action == MacroActionTwitch::Action::CHAT_ANNOUNCEMENT_SEND); + _chatMessage->setVisible(action == MacroActionTwitch::Action::SEND_CHAT_MESSAGE); const bool isUserTargetAction = - _entryData->GetAction() == - MacroActionTwitch::Action::USER_GET_INFO || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_BAN || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_UNBAN || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_BLOCK || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_UNBLOCK || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_MODERATOR_ADD || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_MODERATOR_DELETE || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_VIP_ADD || - _entryData->GetAction() == - MacroActionTwitch::Action::USER_VIP_DELETE; + action == MacroActionTwitch::Action::USER_GET_INFO || + action == MacroActionTwitch::Action::USER_BAN || + action == MacroActionTwitch::Action::USER_UNBAN || + action == MacroActionTwitch::Action::USER_BLOCK || + action == MacroActionTwitch::Action::USER_UNBLOCK || + action == MacroActionTwitch::Action::USER_MODERATOR_ADD || + action == MacroActionTwitch::Action::USER_MODERATOR_DELETE || + action == MacroActionTwitch::Action::USER_VIP_ADD || + action == MacroActionTwitch::Action::USER_VIP_DELETE; _userInfoQueryType->setVisible(isUserTargetAction); _userLogin->setVisible( isUserTargetAction && @@ -1614,21 +1603,16 @@ void MacroActionTwitchEdit::SetWidgetVisibility() _entryData->_userInfoQueryType == MacroActionTwitch::UserInfoQueryType::ID); _pointsReward->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::POINTS_REWARD_GET_INFO && + action == MacroActionTwitch::Action::POINTS_REWARD_GET_INFO && !_entryData->_useVariableForRewardSelection); _rewardVariable->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::POINTS_REWARD_GET_INFO && + action == MacroActionTwitch::Action::POINTS_REWARD_GET_INFO && _entryData->_useVariableForRewardSelection); _toggleRewardSelection->setVisible( - _entryData->GetAction() == - MacroActionTwitch::Action::POINTS_REWARD_GET_INFO); + action == MacroActionTwitch::Action::POINTS_REWARD_GET_INFO); - if (_entryData->GetAction() == - MacroActionTwitch::Action::CHANNEL_INFO_TITLE_SET || - _entryData->GetAction() == - MacroActionTwitch::Action::MARKER_CREATE) { + if (action == MacroActionTwitch::Action::CHANNEL_INFO_TITLE_SET || + action == MacroActionTwitch::Action::MARKER_CREATE) { RemoveStretchIfPresent(_layout); } else { AddStretchIfNecessary(_layout); @@ -1674,7 +1658,7 @@ void MacroActionTwitchEdit::UserLoginChanged() void MacroActionTwitchEdit::RewardVariableChanged(const QString &text) { - GUARD_LOADING_AND_LOCK() + GUARD_LOADING_AND_LOCK(); _entryData->_rewardVariable = GetWeakVariableByQString(text); } @@ -1758,7 +1742,9 @@ void MacroActionTwitchEdit::SetWidgetLayout() case MacroActionTwitch::Action::USER_BLOCK: case MacroActionTwitch::Action::USER_UNBLOCK: layoutText = obs_module_text( - "AdvSceneSwitcher.action.twitch.layout.user.getInfo"); + "AdvSceneSwitcher.action.twitch.layout.user.getInfo.row1"); + layout2Text = obs_module_text( + "AdvSceneSwitcher.action.twitch.layout.user.getInfo.row2"); break; case MacroActionTwitch::Action::USER_BAN: layoutText = obs_module_text( @@ -1778,7 +1764,9 @@ void MacroActionTwitchEdit::SetWidgetLayout() break; case MacroActionTwitch::Action::POINTS_REWARD_GET_INFO: layoutText = obs_module_text( - "AdvSceneSwitcher.action.twitch.layout.reward.getInfo"); + "AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row1"); + layout2Text = obs_module_text( + "AdvSceneSwitcher.action.twitch.layout.reward.getInfo.row2"); break; case MacroActionTwitch::Action::CHANNEL_GET_INFO: layoutText = obs_module_text(