22from tkinter import ttk
33from emails import DailyEmail
44from scheduler import Scheduler
5+ import json
56
67class GUI :
78 # The GUI should enable the admin to...
@@ -68,20 +69,23 @@ def __init__(self, root):
6869 self .__build_gui_controls (controls_frame )
6970
7071 # set initial values for variables
71- self .__email = DailyEmail ()
72+ try :
73+ self .__load_settings ()
74+ except :
75+ self .__email = DailyEmail ()
7276
73- self .__add_recipient_var .set ('' )
74- self .__recipient_list_var .set (self .__email .recipient_list )
75-
76- self .__hour_var .set ('07' ) # defaul send time
77- self .__minute_var .set ('30' )
78-
79- self .__quote_var .set (self .__email .content ['quote' ]['include' ])
80- self .__weather_var .set (self .__email .content ['weather' ]['include' ])
81- self .__wikipedia_var .set (self .__email .content ['wikipedia' ]['include' ])
77+ self .__add_recipient_var .set ('' )
78+ self .__recipient_list_var .set (self .__email .recipient_list )
79+
80+ self .__hour_var .set ('07' ) # defaul send time
81+ self .__minute_var .set ('30' )
82+
83+ self .__quote_var .set (self .__email .content ['quote' ]['include' ])
84+ self .__weather_var .set (self .__email .content ['weather' ]['include' ])
85+ self .__wikipedia_var .set (self .__email .content ['wikipedia' ]['include' ])
8286
83- self .__sender_email_var .set (self .__email .sender_credentials ['email' ])
84- self .__sender_password_var .set (self .__email .sender_credentials ['password' ])
87+ self .__sender_email_var .set (self .__email .sender_credentials ['email' ])
88+ self .__sender_password_var .set (self .__email .sender_credentials ['password' ])
8589
8690 # initialize scheduler
8791 self .__scheduler = Scheduler ()
@@ -233,6 +237,45 @@ def __manual_send(self):
233237 # note: settings are not updated before manual send
234238 print ('Manually sending email digest...' )
235239 self .__email .send_email ()
240+
241+ """
242+ save configuration settings to a file
243+ """
244+ # def __save_settings(self,file_path='settings.json'):
245+ # settings = {
246+ # 'recipients': self.__email.recipient_list,
247+ # 'quote': self.__quote_var.get(),
248+ # 'weather': self.__weather_var.get(),
249+ # 'wikipedia': self.__wikipedia_var.get(),
250+ # 'hour': self.__hour_var.get(),
251+ # 'minute': self.__minute_var.get(),
252+ # 'sender_email': self.__sender_email_var.get(),
253+ # 'sender_password': self.__sender_password_var.get()
254+ # }
255+ # with open(file_path, 'w') as file:
256+ # json.dump(settings, file, indent=4)
257+ # print('Settings saved to settings.json')
258+
259+ """
260+ Load configuration settings from a file
261+ """
262+ def __load_settings (self , file_path = 'settings.json' ):
263+ try :
264+ with open (file_path , 'r' ) as file :
265+ settings = json .load (file )
266+ self .__recipient_list_var .set (settings ['recipients' ])
267+ self .__quote_var .set (settings ['quote' ])
268+ self .__weather_var .set (settings ['weather' ])
269+ self .__wikipedia_var .set (settings ['wikipedia' ])
270+ self .__hour_var .set (settings ['hour' ])
271+ self .__minute_var .set (settings ['minute' ])
272+ self .__sender_email_var .set (settings ['sender_email' ])
273+ self .__sender_password_var .set (settings ['sender_password' ])
274+ self .__update_settings ()
275+ except FileNotFoundError :
276+ print ('No settings file found...' )
277+ except json .JSONDecodeError :
278+ print ('Error loading settings file...' )
236279
237280 """
238281 Shutdown the scheduler before closing the GUI window
@@ -241,7 +284,10 @@ def __shutdown(self):
241284 print ('Shutting down the scheduler...' )
242285 self .__scheduler .stop ()
243286 self .__scheduler .join ()
244- self .__root .destroy () # close the GUI
287+ try :
288+ self .__save_settings ()
289+ except Exception as e :
290+ self .__root .destroy () # close the GUI window
245291
246292if __name__ == '__main__' :
247293 root = Tk ()
0 commit comments