the focus of the knobs is removed, when the fx_mode is changed

This commit is contained in:
SallarShayegan
2025-02-28 14:21:06 +01:00
parent b960bcbd7f
commit 31ae63b594
3 changed files with 8 additions and 7 deletions

View File

@ -23,7 +23,6 @@ class Knob:
if focused:
self.focused = True
self.color = color_primary_light
self.group.deactivate_knobs_except(self)
else:
self.focused = False
self.color = color_primary
@ -32,7 +31,8 @@ class Knob:
return self.position
def __eq__(self, other):
return self.position == other.get_position()
if other is None: return False
return self.name == other.name
def get_pointer_position(self):
angle = (self.value * 0.8 * 2 + 0.7) * math.pi
@ -45,7 +45,7 @@ class Knob:
if m1:
pos = pygame.mouse.get_pos()
if math.sqrt(math.pow(pos[0]-self.position[0],2) + math.pow(pos[1]-self.position[1],2)) < self.radius:
self.set_focused(True)
self.group.set_focused(self)
pygame.draw.circle(screen, self.color, self.position, self.radius)
pygame.draw.line(screen, "black", self.position, self.get_pointer_position(), 4)

View File

@ -78,9 +78,9 @@ class Knobs:
for i in range(len(line_points)-1):
pygame.draw.line(self.gui.screen, color_primary_dark, line_points[i], line_points[i+1], 2)
def deactivate_knobs_except(self, knob):
def set_focused(self, knob):
for k in self.knobs:
if k != knob: k.set_focused(False)
k.set_focused(k == knob)
def display(self):
for knob in self.knobs:

View File

@ -35,18 +35,19 @@ class GuiMain:
r_y = (self.screenH-20) / 16
self.fx_mode_buttons.append(LozengeButton(self, self.fx_mode_labels[i], (x,y), r_x, r_y))
self.set_fx_mode(self.fx_mode_labels[self.fx_mode])
self.knobs = []
for i in range(len(self.fx_mode_labels)):
self.knobs.append(Knobs(self))
self.set_fx_mode(self.fx_mode_labels[self.fx_mode])
self.clock = pygame.time.Clock()
self.running = True
self.run()
def set_fx_mode(self, mode):
self.fx_mode = self.fx_mode_labels.index(mode)
self.knobs[self.fx_mode].set_focused(None)
for b in self.fx_mode_buttons:
b.focused = (b.name == mode)