def update_clients_info(self, clients: ClientsTable): # Aktualizacja listy klientów for ch in self.clients_table.get_children(): self.clients_table.delete(ch) for client in clients.clients: self.clients_table.insert('', 'end', text=client.id, values=(client.requested, client.granted, client.received_from_id)) # Aktualizacja info o właścicielu tokena i blokadzie self.locked_label.update_text(clients.locked) self.token_owner_label.update_text(clients.token_owner) # Aktualizacja blokady has_token = clients.token_owner == own_id self.__set_lock_state(clients.locked, has_token) # Aktualizacja przycisków # jeśli zablokowaliśmy, to nie możemy tego zrobić drugi raz is_locker = (has_token and clients.locked) # tak samo jeśli już zażądaliśmy has_requested = clients.find_self().has_requested() self.__set_button_enabled(self.req_btn, not (is_locker or has_requested)) # jeśli nie zablokowaliśmy, to nie możemy rezygnować self.__set_button_enabled(self.resign_btn, is_locker) # Możemy się podłączyć, tylko, jeśli nie jesteśmy do nikogo podłączeni self.__set_button_enabled(self.connect_btn, len(clients.clients) <= 1) # Przycisk czyść aktywny jeśli możemy rysować self.__set_button_enabled(self.clean_btn, has_token or not clients.locked)