From 1d247fc0edfde5dc896d24ec96ed7049af177ea1 Mon Sep 17 00:00:00 2001 From: sallar Date: Sun, 3 Aug 2025 20:09:55 +0200 Subject: [PATCH] selected track and clip gets displayed at the bottom of the UI --- beatplayer.py | 16 +++++++++++++++- item_selection.py | 2 ++ main.py | 18 ++++++++++++------ 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/beatplayer.py b/beatplayer.py index c8519f8..a0c177c 100644 --- a/beatplayer.py +++ b/beatplayer.py @@ -1,4 +1,6 @@ from .item_selection import ItemSelection +import pygame +from .colors import * class BeatPlayer: @@ -22,4 +24,16 @@ class BeatPlayer: self.screen.blit(self.track_selection.surface, ((self.screen.get_width()/4), (self.screen.get_height() - self.track_selection.surface.get_height())/2)) self.screen.blit(self.clip_selection.surface, ((self.screen.get_width()/4 + self.max_name_width) + 100, - (self.screen.get_height() - self.clip_selection.surface.get_height())/2)) \ No newline at end of file + (self.screen.get_height() - self.clip_selection.surface.get_height())/2)) + else: + if self.track_selection.selected_item_srf is not None: + self.screen.blit(self.track_selection.selected_item_srf, + ((self.screen.get_width()/4+10), self.screen.get_height() - 45)) + pygame.draw.rect(self.screen, color_primary_light, + (self.screen.get_width()/4, self.screen.get_height() - 50, self.max_name_width+20, 40), 2) + if self.clip_selection.selected_item_srf is not None: + self.screen.blit(self.clip_selection.selected_item_srf, + ((self.screen.get_width()/4 + self.max_name_width) + 110, self.screen.get_height() - 45)) + pygame.draw.rect(self.screen, color_primary_light, + ((self.screen.get_width()/4 + self.max_name_width) + 100, self.screen.get_height() - 50, + self.max_name_width+20, 40), 2) \ No newline at end of file diff --git a/item_selection.py b/item_selection.py index 0d8e6cb..9612957 100644 --- a/item_selection.py +++ b/item_selection.py @@ -11,6 +11,7 @@ class ItemSelection: self.surface = pygame.Surface((0,0), pygame.SRCALPHA) self.max_item_width = max_item_width self.max_display_count = max_display_count + self.selected_item_srf = None def set_items(self, items): self.items = items @@ -34,6 +35,7 @@ class ItemSelection: if i == math.floor(self.get_display_count()/2): #if i == self.index: text_surface = font_helvetica16.render(text, False, color_primary_light) + self.selected_item_srf = text_surface else: text_surface = font_helvetica16.render(text, False, color_primary) opacity = -15 + math.floor((i+1) * 2 * 255 / self.max_display_count diff --git a/main.py b/main.py index 5c9cdf3..15f080b 100755 --- a/main.py +++ b/main.py @@ -62,7 +62,7 @@ class GuiMain: self.rec_button = BinaryButton( self.screen, - (self.screenW-70, self.screenH-40), + (self.screenW-70, 15), (60, 30), "REC", False @@ -90,8 +90,8 @@ class GuiMain: "12_4hJ7dS1yP5cT8kL3wR0vX6mN9bQ2fZ", "13_9jK5lM1nP6qR0sT8uV4wX3aB7eF2gH" ] - self.beatplayer.set_clip_names(fnames) - self.beatplayer.set_track_names(fnames) + self.beatplayer.set_clip_names(fnames[0:5]) + self.beatplayer.set_track_names(fnames[0:9]) self.set_athmo_filenames(fnames) self.selected_athmo_srf = None @@ -116,8 +116,10 @@ class GuiMain: self.athmos.show_list = show self.show_knobs = not show self.beatplayer.show_selection = False + """ if show == False: self.set_selected_athmo() + """ def show_beatplayer(self, show=True): self.beatplayer.show_selection = show @@ -128,8 +130,12 @@ class GuiMain: self.athmos.index = index def set_selected_athmo(self): - self.selected_athmo_srf = font_helvetica16.render( - self.athmos.get_name_by_index(self.athmos.index), False, color_primary) + """ + name = self.athmos.get_name_by_index(self.athmos.index) + if len(name) > 20: name = name[0:22] + '...' + self.selected_athmo_srf = font_helvetica16.render(name, False, color_primary) + """ + self.selected_athmo_srf = self.athmos.selected_item_srf def set_athmo_filenames(self, filenames): self.athmos.set_filenames(filenames) @@ -172,7 +178,7 @@ class GuiMain: if self.selected_athmo_srf is not None: self.screen.blit(self.selected_athmo_srf, - ((self.screenW/2 - self.selected_athmo_srf.get_width())/2, + (self.screenW*3 / 18, self.screenH - self.selected_athmo_srf.get_height()-10)) if self.loop_input_mode is not None: