From a33dbea7c8e59dd32eb0286ae119cf6f8bf9c4be Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Sat, 19 Mar 2022 08:34:12 +0100 Subject: [PATCH] made the names of variables and functions as well as the name of the class itself for Communication more generic --- gui_helper.py | 61 +++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/gui_helper.py b/gui_helper.py index f4d5a23..9319aeb 100644 --- a/gui_helper.py +++ b/gui_helper.py @@ -1,55 +1,50 @@ import tkinter as tk import util -# easy way to get data out of window events -class Window_Interaction_Handler: - # constructor +# easy way to communicate across events +class Communication: def __init__(self): - self.__window_interactions = {} + self.__messages = {} - # add a result for an interaction event, saves results in reverse order by default, can optionally call another function - def interact(self, name, result, reverse_order=True, additional_action=None, additional_action_parameters=()): - if name in self.__window_interactions: + # send a message tagged with name and containing content, adds to the beginning of the list of messages with the same tag by default + def send(self, name, content, reverse_order=True): + if name in self.__messages: if reverse_order: - self.__window_interactions[name] = [result] + self.__window_interactions[name] + self.__messages[name] = [content] + self.__messages[name] else: - self.__window_interactions[name] = self.__window_interactions[name] + [result] + self.__messages[name] = self.__messages[name] + [content] else: - self.__window_interactions[name] = [result] + self.__messages[name] = [content] - if not additional_action==None: - additional_action(*additional_action_parameters) - - # get first result for a given event from the list of results (newest (default) or oldest), removes the returned result from the list by default - def get_result(self, name, remove=True): - if name in self.__window_interactions and len(self.__window_interactions[name])>0: + # get the content of the first message tagged with name, removes the returned message by default + def get(self, name, remove=True): + if name in self.__messages and len(self.__messages[name])>0: if remove: - result = self.__window_interactions[name].pop(0) - if len(self.__window_interactions[name])==0: - del self.__window_interactions[name] - return result + content = self.__messages[name].pop(0) + if len(self.__messages[name])==0: + del self.__messages[name] + return content else: - return self.__window_interactions[name][0] + return self.__messages[name][0] else: return None - # get all results for a given event - def get_results(self, name, clear=False): - if name in self.__window_interactions and len(self.__window_interactions[name])>0: - results = self.__window_interactions[name] + # get the contents for all messages tagged with name + def get_all(self, name, clear=False): + if name in self.__messages and len(self.__messages[name])>0: + contents = self.__messages[name] if clear: - del self.__window_interactions[name] - return results + del self.__messages[name] + return contents - # clear results for a given event + # deletes all messages tagged with name def clear(self, name): - if name in self.__window_interactions: - del self.__window_interactions[name] + if name in self.__messages: + del self.__messages[name] - # destructor def __del__(self): - if len(self.__window_interactions)>0: - util.warn("__window_interactions not empty upon destruction of Window_Interaction_Handler:\n"+str(self.__window_interactions)) + if len(self.__messages)>0: + util.warn("__messages not empty upon destruction of Communitation object:\n"+str(self.__messages)) def not_implemented():