diff --git a/knob.py b/knob.py index daeac73..f72c734 100644 --- a/knob.py +++ b/knob.py @@ -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) diff --git a/knobs.py b/knobs.py index 1c0d3ca..a9cbbc1 100644 --- a/knobs.py +++ b/knobs.py @@ -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: diff --git a/main.py b/main.py index f36e5cd..3784d2e 100644 --- a/main.py +++ b/main.py @@ -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)