Skip to content

Commit a3f9b2d

Browse files
committed
linked config options in modules' automation configs
1 parent b6c6569 commit a3f9b2d

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

src/main/kotlin/com/lambda/gui/components/SettingsWidget.kt

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.lambda.config.Configurable
2222
import com.lambda.config.MutableAutomationConfig
2323
import com.lambda.config.Setting
2424
import com.lambda.config.UserAutomationConfig
25+
import com.lambda.config.configurations.UserAutomationConfigs
2526
import com.lambda.gui.dsl.ImGuiBuilder
2627
import com.lambda.module.Module
2728
import com.lambda.util.NamedEnum
@@ -31,7 +32,7 @@ import imgui.flag.ImGuiTabBarFlags
3132

3233
object SettingsWidget {
3334
/**
34-
* Builds the settings context popup content for a given configurable.
35+
* Builds the settings context popup content for the given configurable.
3536
*/
3637
fun ImGuiBuilder.buildConfigSettingsContext(config: Configurable) {
3738
group {
@@ -47,14 +48,29 @@ object SettingsWidget {
4748
button("Automation Config") {
4849
ImGui.openPopup("##automation-config-popup-${config.name}")
4950
}
51+
if (config.backingAutomationConfig !== config.defaultAutomationConfig) {
52+
sameLine()
53+
text("(${config.backingAutomationConfig.name})")
54+
}
5055
ImGui.setNextWindowSizeConstraints(0f, 0f, Float.MAX_VALUE, io.displaySize.y * 0.5f)
5156
popupContextItem("##automation-config-popup-${config.name}", ImGuiPopupFlags.None) {
57+
combo("##LinkedConfig", preview = "Linked Config: ${config.backingAutomationConfig.name}") {
58+
UserAutomationConfigs.configurables.forEach { userConfig ->
59+
val selected = (userConfig as? UserAutomationConfig ?: return@forEach) === config.backingAutomationConfig
60+
61+
selectable(userConfig.name, selected) {
62+
if (selected) {
63+
userConfig.linkedModules.value -= config.name
64+
config.automationConfig = config.defaultAutomationConfig
65+
} else {
66+
userConfig.linkedModules.value += config.name
67+
config.automationConfig = userConfig
68+
}
69+
}
70+
}
71+
}
5272
buildConfigSettingsContext(config.automationConfig)
5373
}
54-
if (config.backingAutomationConfig !== config.defaultAutomationConfig) {
55-
sameLine()
56-
text("(${config.backingAutomationConfig.name})")
57-
}
5874
}
5975
}
6076
val toIgnoreSettings =

0 commit comments

Comments
 (0)