diff --git a/Main.tscn b/Main.tscn index 920117c..3c423e0 100644 --- a/Main.tscn +++ b/Main.tscn @@ -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"] diff --git a/XSmall.png b/XSmall.png new file mode 100644 index 0000000..6b51c70 Binary files /dev/null and b/XSmall.png differ diff --git a/XSmall.png.import b/XSmall.png.import new file mode 100644 index 0000000..66717d8 --- /dev/null +++ b/XSmall.png.import @@ -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 diff --git a/main.gd b/main.gd index f8e8984..0c3c1c7 100644 --- a/main.gd +++ b/main.gd @@ -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): diff --git a/search_bar.gd b/search_bar.gd index 2cf081f..7a04a47 100644 --- a/search_bar.gd +++ b/search_bar.gd @@ -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: diff --git a/search_item.gd b/search_item.gd new file mode 100644 index 0000000..03f4a57 --- /dev/null +++ b/search_item.gd @@ -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) diff --git a/search_item.tscn b/search_item.tscn new file mode 100644 index 0000000..28e78c7 --- /dev/null +++ b/search_item.tscn @@ -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"] diff --git a/search_results.gd b/search_results.gd new file mode 100644 index 0000000..a87425e --- /dev/null +++ b/search_results.gd @@ -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() diff --git a/search_results.tscn b/search_results.tscn new file mode 100644 index 0000000..e23acf4 --- /dev/null +++ b/search_results.tscn @@ -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 diff --git a/search_toggle.gd b/search_toggle.gd index 9e292ed..242c60c 100644 --- a/search_toggle.gd +++ b/search_toggle.gd @@ -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 diff --git a/songs_menu.gd b/songs_menu.gd new file mode 100644 index 0000000..802a104 --- /dev/null +++ b/songs_menu.gd @@ -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()