Make the buttons consistent and rework the player list
Build / test (push) Successful in 1m30s
Build / build (push) Successful in 1m17s

Buttons get 12 px of side padding. The top bar buttons, the quiz toolbar and
Show answer/Next are laid out in rows with 12 px gaps and are all 36 px tall,
and the ±1 buttons use a compact StepButton style. "Randomize new track" is now
"Next song".

Player rows show the name and the score apart, alternate like the other lists
and highlight the character under the mouse. The name field is a LineEdit with
a 10-letter limit; blank and duplicate names are refused, and a full list says
"Up to 7 players". Remove buttons update when editing is switched instead of
every frame, and the spacer panels are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
SansanandClaude Opus 5.5 committed 2026-10-11 21:35:24 +02:00
1 parent e4352a9f34
commit 70e970b24c
39 files changed
+2054 -2177

No files matched your search

+34 -37
View File
@@ -67,62 +67,58 @@ horizontal_alignment = 2
vertical_alignment = 1
text_overrun_behavior = 3
[node name="SyncButton" type="Button" parent="." unique_id=1228313556]
[node name="Buttons" type="HBoxContainer" parent="."]
layout_mode = 0
offset_left = 1450.0
offset_top = 8.0
offset_right = 1520.0
offset_bottom = 48.0
offset_left = 1200.0
offset_top = 10.0
offset_right = 1856.0
offset_bottom = 46.0
mouse_filter = 2
theme_override_constants/separation = 12
alignment = 2
[node name="SyncButton" type="Button" parent="Buttons" unique_id=1228313556]
unique_name_in_owner = true
layout_mode = 2
focus_mode = 0
action_mode = 0
text = "Sync"
[node name="SettingsButton" type="Button" parent="." unique_id=1228313557]
layout_mode = 0
offset_left = 1538.0
offset_top = 8.0
offset_right = 1608.0
offset_bottom = 48.0
[node name="SettingsButton" type="Button" parent="Buttons" unique_id=1228313557]
unique_name_in_owner = true
layout_mode = 2
focus_mode = 0
action_mode = 0
text = "Settings"
[node name="ShortcutsButton" type="Button" parent="." unique_id=2066498226]
layout_mode = 0
offset_left = 1626.0
offset_top = 8.0
offset_right = 1696.0
offset_bottom = 48.0
[node name="ShortcutsButton" type="Button" parent="Buttons" unique_id=2066498226]
unique_name_in_owner = true
layout_mode = 2
focus_mode = 0
action_mode = 0
text = "Shortcuts"
[node name="AboutButton" type="Button" parent="." unique_id=1057035253]
layout_mode = 0
offset_left = 1722.0
offset_top = 8.0
offset_right = 1792.0
offset_bottom = 48.0
[node name="AboutButton" type="Button" parent="Buttons" unique_id=1057035253]
unique_name_in_owner = true
layout_mode = 2
focus_mode = 0
action_mode = 0
text = "About"
[node name="QRButton" type="Button" parent="." unique_id=2021908559]
layout_mode = 0
offset_left = 1802.0
offset_top = 8.0
offset_right = 1872.0
offset_bottom = 48.0
[node name="QRButton" type="Button" parent="Buttons" unique_id=2021908559]
unique_name_in_owner = true
layout_mode = 2
focus_mode = 0
action_mode = 0
text = "QR"
[node name="QuizTab" type="Button" parent="." unique_id=1903412671]
unique_name_in_owner = true
layout_mode = 0
offset_left = 840.0
offset_top = 8.0
offset_right = 955.0
offset_bottom = 48.0
offset_left = 839.0
offset_top = 10.0
offset_right = 954.0
offset_bottom = 46.0
focus_mode = 0
theme_type_variation = &"TabButton"
toggle_mode = true
@@ -132,11 +128,12 @@ button_group = SubResource("ButtonGroup_tabs")
text = "Quiz"
[node name="StatisticsTab" type="Button" parent="." unique_id=1903412672]
unique_name_in_owner = true
layout_mode = 0
offset_left = 965.0
offset_top = 8.0
offset_right = 1080.0
offset_bottom = 48.0
offset_left = 966.0
offset_top = 10.0
offset_right = 1081.0
offset_bottom = 46.0
focus_mode = 0
theme_type_variation = &"TabButton"
toggle_mode = true
+7 -7
View File
@@ -17,22 +17,22 @@ signal qr_pressed
## Emitted when a tab is chosen: [code]&"quiz"[/code] or [code]&"statistics"[/code].
signal tab_selected(tab: StringName)
@onready var sync_button: Button = $SyncButton
@onready var sync_button: Button = %SyncButton
@onready var debug_label: Label = $DebugLabel
@onready var update_label: Label = $UpdateLabel
@onready var offline_label: Label = $OfflineLabel
@onready var qr_button: Button = $QRButton
@onready var quiz_tab: Button = $QuizTab
@onready var statistics_tab: Button = $StatisticsTab
@onready var qr_button: Button = %QRButton
@onready var quiz_tab: Button = %QuizTab
@onready var statistics_tab: Button = %StatisticsTab
func _ready() -> void:
# Debug builds use the local server, see Settings
debug_label.visible = Settings.is_debug
sync_button.pressed.connect(sync_pressed.emit)
$SettingsButton.pressed.connect(settings_pressed.emit)
$ShortcutsButton.pressed.connect(shortcuts_pressed.emit)
$AboutButton.pressed.connect(about_pressed.emit)
%SettingsButton.pressed.connect(settings_pressed.emit)
%ShortcutsButton.pressed.connect(shortcuts_pressed.emit)
%AboutButton.pressed.connect(about_pressed.emit)
qr_button.pressed.connect(qr_pressed.emit)
quiz_tab.pressed.connect(tab_selected.emit.bind(&"quiz"))
statistics_tab.pressed.connect(tab_selected.emit.bind(&"statistics"))