Better song selection
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=67 format=3 uid="uid://b2sygl55s6fng"]
|
||||
[gd_scene load_steps=69 format=3 uid="uid://b2sygl55s6fng"]
|
||||
|
||||
[ext_resource type="Script" path="res://main.gd" id="1_ubs1p"]
|
||||
[ext_resource type="Texture2D" uid="uid://b8on1case224h" path="res://LoopPressed.png" id="2_iolk5"]
|
||||
@@ -30,6 +30,8 @@
|
||||
[ext_resource type="Script" path="res://Spinning.gd" id="14_rhw4k"]
|
||||
[ext_resource type="Script" path="res://yt_tab_button.gd" id="16_2t15p"]
|
||||
[ext_resource type="Script" path="res://help_button.gd" id="17_4b8oh"]
|
||||
[ext_resource type="Script" path="res://songs_menu.gd" id="27_f8wx0"]
|
||||
[ext_resource type="PackedScene" uid="uid://bel6i6wdbexw4" path="res://search_results.tscn" id="27_g8wmp"]
|
||||
[ext_resource type="Texture2D" uid="uid://bmbxyma4ra46p" path="res://Download.png" id="29_v44vi"]
|
||||
[ext_resource type="Script" path="res://update_checker.gd" id="30_byc5i"]
|
||||
[ext_resource type="Script" path="res://patch_notes_button.gd" id="31_hjsj1"]
|
||||
@@ -764,7 +766,7 @@ alignment = 1
|
||||
caret_blink = true
|
||||
script = ExtResource("12_mr42x")
|
||||
|
||||
[node name="SongsMenu" type="MenuButton" parent="."]
|
||||
[node name="SongsMenu" type="Button" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_right = 1.0
|
||||
@@ -774,15 +776,17 @@ offset_right = -328.0
|
||||
offset_bottom = 80.0
|
||||
grow_horizontal = 2
|
||||
text = "Select Songs"
|
||||
flat = false
|
||||
script = ExtResource("27_f8wx0")
|
||||
|
||||
[node name="SearchResults" type="PopupMenu" parent="."]
|
||||
handle_input_locally = false
|
||||
position = Vector2i(265, 80)
|
||||
size = Vector2i(623, 300)
|
||||
wrap_controls = false
|
||||
max_size = Vector2i(625, 300)
|
||||
allow_search = false
|
||||
[node name="SearchResults" parent="." instance=ExtResource("27_g8wmp")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_left = 0.0
|
||||
anchor_right = 1.0
|
||||
offset_left = 264.5
|
||||
offset_top = 84.225
|
||||
offset_right = -264.5
|
||||
offset_bottom = 384.225
|
||||
|
||||
[node name="VolumeButton" type="Button" parent="."]
|
||||
texture_filter = 1
|
||||
@@ -843,7 +847,7 @@ offset_left = -64.0
|
||||
offset_top = -23.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
text = "v1.4.6h1"
|
||||
text = "v1.4.7"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="SettingsButton" type="Button" parent="."]
|
||||
@@ -1123,7 +1127,6 @@ horizontal_alignment = 1
|
||||
[connection signal="pressed" from="CreatePlaylistsMenu/CloseButton" to="CreatePlaylistsMenu" method="_on_close_button_pressed"]
|
||||
[connection signal="toggled" from="SearchToggle" to="SearchToggle" method="_on_toggled"]
|
||||
[connection signal="text_submitted" from="SearchBar" to="SearchBar" method="_on_text_submitted"]
|
||||
[connection signal="index_pressed" from="SearchResults" to="SearchBar" method="_on_search_results_index_pressed"]
|
||||
[connection signal="toggled" from="VolumeButton" to="VolumeButton" method="_on_toggled"]
|
||||
[connection signal="toggled" from="SettingsButton" to="SettingsButton" method="_on_toggled"]
|
||||
[connection signal="request_completed" from="UpdateChecker/HTTPRequest" to="UpdateChecker" method="_on_http_request_completed"]
|
||||
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cm5ps3a716wr0"
|
||||
path="res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://XSmall.png"
|
||||
dest_files=["res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -18,7 +18,7 @@ extends Control
|
||||
@onready var yt_link: LineEdit = $"YoutubeMenuHolder/Youtube menu/YTLink"
|
||||
@onready var yt_download: Button = $"YoutubeMenuHolder/Youtube menu/YTDownload"
|
||||
@onready var loading_img: Sprite2D = $"YoutubeMenuHolder/Youtube menu/LoadingIMG"
|
||||
@onready var songs_menu: MenuButton = $SongsMenu
|
||||
@onready var songs_menu: Button = $SongsMenu
|
||||
@onready var version: Label = $Version
|
||||
@onready var paused_indicator: TextureRect = $PausedIndicator
|
||||
@onready var settings_menu_child: Settings = $SettingsHolder/SettingsPopup/SettingsMenuChild
|
||||
@@ -28,6 +28,7 @@ extends Control
|
||||
@onready var play_all: Button = $PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
|
||||
@onready var album_name: Label = $Album
|
||||
@onready var playlist_or_song: ConfirmationDialog = $PlaylistOrSong
|
||||
@onready var search_results: SearchResults = $SearchResults
|
||||
|
||||
|
||||
|
||||
@@ -75,7 +76,7 @@ func _ready() -> void:
|
||||
volume_slider.value_changed.connect(SetVolume)
|
||||
skip.pressed.connect(Skip)
|
||||
go_back.pressed.connect(GoBack)
|
||||
songs_menu.get_popup().index_pressed.connect(SetSong)
|
||||
search_results.index_pressed.connect(SetSong)
|
||||
var Strin:String
|
||||
for Arg in OS.get_cmdline_args():
|
||||
if Arg.to_lower().ends_with(".mp3") or Arg.to_lower().ends_with(".wav"):
|
||||
@@ -357,11 +358,11 @@ func GetSongs(dir:String):
|
||||
wav_disclaimer.show()
|
||||
SeenWAVDisclaimer = true
|
||||
#print(songs)
|
||||
songs_menu.get_popup().clear(true)
|
||||
search_results.clear()
|
||||
textSongs = songs
|
||||
for song in textSongs:
|
||||
var nam = song.replace(".mp3", "")
|
||||
songs_menu.get_popup().add_item(nam)
|
||||
var nam = song
|
||||
search_results.add_item(nam)
|
||||
|
||||
func Randomize():
|
||||
if textSongs.size() != 0:
|
||||
@@ -380,10 +381,10 @@ func Randomize():
|
||||
|
||||
|
||||
Randomized = true
|
||||
songs_menu.get_popup().clear(true)
|
||||
search_results.clear()
|
||||
for song in textSongs:
|
||||
var nam = song.replace(".mp3", "")
|
||||
songs_menu.get_popup().add_item(nam)
|
||||
var nam = song
|
||||
search_results.add_item(nam)
|
||||
#print(textSongs)
|
||||
|
||||
func PlaylistSelected(Playlist:String,PlaylistLocation:String):
|
||||
|
||||
+4
-11
@@ -1,5 +1,5 @@
|
||||
extends LineEdit
|
||||
@onready var search_results: PopupMenu = $"../SearchResults"
|
||||
@onready var search_results: SearchResults = $"../SearchResults"
|
||||
|
||||
var values:Dictionary = {}
|
||||
var ErrorMargin:float = 0.9
|
||||
@@ -8,8 +8,7 @@ var currentTime:float
|
||||
var TextChanged:bool
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
search_results.popup_window = false
|
||||
search_results.unfocusable = true
|
||||
pass
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
@@ -19,7 +18,7 @@ func _process(delta: float) -> void:
|
||||
if currentTime < 0:
|
||||
release_focus()
|
||||
TextChanged = false
|
||||
search_results.clear(true)
|
||||
search_results.clear()
|
||||
values.clear()
|
||||
currentTime = updatetime
|
||||
var _i:int = 0
|
||||
@@ -41,7 +40,7 @@ func _process(delta: float) -> void:
|
||||
|
||||
margin = float(amountOfFrags) / fragments.size()
|
||||
if margin > ErrorMargin:
|
||||
search_results.add_item(song.replace(".mp3","") )
|
||||
search_results.add_item(song)
|
||||
values[_i] = _s
|
||||
_i += 1
|
||||
_s += 1
|
||||
@@ -51,12 +50,6 @@ func _on_search_results_index_pressed(index: int) -> void:
|
||||
owner.SetSong(values[index])
|
||||
|
||||
|
||||
func _input(event):
|
||||
if (event is InputEventMouseButton) and event.pressed:
|
||||
var evLocal = make_input_local(event)
|
||||
if !Rect2(Vector2(0,0),Vector2(search_results.size.y+ size.y,size.x)).has_point(evLocal.position):
|
||||
search_results.hide()
|
||||
|
||||
func _on_text_submitted(new_text: String) -> void:
|
||||
TextChanged = true
|
||||
if !search_results.visible:
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
extends Control
|
||||
|
||||
var SongName:String
|
||||
var CurrentlyPlaying:bool
|
||||
var idx:int
|
||||
@onready var songname: Button = $HBoxContainer/Songname
|
||||
|
||||
signal PlayPressed
|
||||
signal DeletePressed
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
songname.text = SongName
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func _on_songname_pressed() -> void:
|
||||
PlayPressed.emit(idx)
|
||||
@@ -0,0 +1,45 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://ctqcbjrmxaqsk"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cm5ps3a716wr0" path="res://XSmall.png" id="1_6wgd5"]
|
||||
[ext_resource type="Script" path="res://search_item.gd" id="1_j4126"]
|
||||
|
||||
[node name="SearchItem" type="Control"]
|
||||
custom_minimum_size = Vector2(0, 30)
|
||||
layout_mode = 3
|
||||
anchors_preset = 14
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
script = ExtResource("1_j4126")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
custom_minimum_size = Vector2(700, 0)
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -19.0
|
||||
offset_right = 50.0
|
||||
offset_bottom = 19.0
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="delete" type="Button" parent="HBoxContainer"]
|
||||
modulate = Color(0.553478, 0.101429, 4.81308e-08, 1)
|
||||
layout_mode = 2
|
||||
tooltip_text = "delete song from hard-drive"
|
||||
focus_mode = 0
|
||||
icon = ExtResource("1_6wgd5")
|
||||
flat = true
|
||||
|
||||
[node name="Songname" type="Button" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
focus_mode = 0
|
||||
flat = true
|
||||
alignment = 0
|
||||
|
||||
[connection signal="pressed" from="HBoxContainer/Songname" to="." method="_on_songname_pressed"]
|
||||
@@ -0,0 +1,42 @@
|
||||
class_name SearchResults
|
||||
extends Control
|
||||
|
||||
signal index_pressed
|
||||
|
||||
const SEARCH_ITEM = preload("res://search_item.tscn")
|
||||
|
||||
@onready var item_container: VBoxContainer = $Control/ItemContainer
|
||||
|
||||
var SongsAmount:int
|
||||
|
||||
@onready var parent:MainScene = owner
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func add_item(text:String):
|
||||
var child = SEARCH_ITEM.instantiate()
|
||||
child.SongName = text.replace(".mp3", "")
|
||||
child.idx = parent.textSongs.find(text)
|
||||
SongsAmount+=1
|
||||
child.PlayPressed.connect(songSelected)
|
||||
item_container.add_child(child)
|
||||
|
||||
func clear():
|
||||
for child in item_container.get_children():
|
||||
child.queue_free()
|
||||
|
||||
func songSelected(idx:int):
|
||||
index_pressed.emit(idx)
|
||||
|
||||
func _input(event):
|
||||
if (event is InputEventMouseButton) and event.pressed:
|
||||
var evLocal = make_input_local(event)
|
||||
if !Rect2(Vector2(0,0),Vector2(size.x,size.y)).has_point(evLocal.position):
|
||||
hide()
|
||||
@@ -0,0 +1,42 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bel6i6wdbexw4"]
|
||||
|
||||
[ext_resource type="Script" path="res://search_results.gd" id="1_mcn1o"]
|
||||
|
||||
[node name="SearchResults" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -311.5
|
||||
offset_right = 311.5
|
||||
offset_bottom = 300.0
|
||||
grow_horizontal = 2
|
||||
script = ExtResource("1_mcn1o")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
color = Color(0.14902, 0.14902, 0.14902, 1)
|
||||
|
||||
[node name="Control" type="ScrollContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
follow_focus = true
|
||||
horizontal_scroll_mode = 0
|
||||
|
||||
[node name="ItemContainer" type="VBoxContainer" parent="Control"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
extends Button
|
||||
|
||||
@onready var search_bar: LineEdit = $"../SearchBar"
|
||||
@onready var songs_menu: MenuButton = $"../SongsMenu"
|
||||
@onready var songs_menu: Button = $"../SongsMenu"
|
||||
|
||||
@export var PressedIcon:Texture2D
|
||||
@export var NotPressedIcon:Texture2D
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
extends Button
|
||||
|
||||
@onready var search_results: SearchResults = $"../SearchResults"
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _pressed() -> void:
|
||||
search_results.show()
|
||||
Reference in New Issue
Block a user