self.inner_color = self.default_inner_color
self.actions = []
self.description = []
- self.custom_color = None
- self.custom_unready_color = None
+ self.custom_color = self.mapped_inner_color
+ self.custom_unready_color = self.mapped_unready_inner_color
def square(self, all_actions_ready):
if self.has_actions():
if all_actions_ready:
- self.inner_color = self.custom_color or self.mapped_inner_color
+ self.inner_color = self.custom_color
else:
- self.inner_color = self.custom_unready_color or self.mapped_unready_inner_color
+ self.inner_color = self.custom_unready_color
return RoundedRect((0, 0, self.width, self.height),
self.outer_color, self.inner_color, self.linewidth)
def add_action(self, action_name, **arguments):
self.actions.append(Action(action_name, self, **arguments))
- def do_actions(self):
+ def do_actions(self, screen):
print("running actions for {}".format(self.key_sym))
start_time = time.time()
self.mapping.start_running(self, start_time)
+ action_number = 0
for action in self.actions:
if self.mapping.keep_running(self, start_time):
+ self.list_actions(screen, action_number = action_number + 0.5)
action.run()
+ action_number += 1
+ self.list_actions(screen, action_number = action_number)
self.mapping.finished_running(self, start_time)
- def list_actions(self, screen):
+ def list_actions(self, screen, action_number = 0):
action_descriptions = [action.description() for action in self.actions]
#print("actions linked to key {}:".format(self.key_sym))
#print("\t" + "\n\t".join(action_descriptions))
offset += police.get_linesize()
police.set_bold(False)
- for description in action_descriptions:
+ icon_police = font(14, font = "Symbola")
+ for index, description in enumerate(action_descriptions):
+ if index < int(action_number):
+ icon = icon_police.render("✓", True, (0,0,0))
+ elif index + 0.5 == action_number:
+ icon = icon_police.render("✅", True, (0,0,0))
+ else:
+ icon = icon_police.render(" ", True, (0,0,0))
+
text = police.render(description, True, (0,0,0))
- surface.blit(text, (0, offset))
+ surface.blit(icon, (0, offset))
+ surface.blit(text, (10, offset))
offset += police.get_linesize()
screen.blit(surface, (5, 308))