Compare commits

..

No commits in common. "e39368bf41bb46c9b1dd862ddbd878ef083a8bc8" and "02a6f555e0d10188102cc6015b4751da6b4e3b64" have entirely different histories.

2 changed files with 13 additions and 55 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
*.swp

67
main.py
View File

@ -3,34 +3,9 @@ import tkinter as tk
from tkinter import ttk from tkinter import ttk
import sys, os, json, traceback import sys, os, json, traceback
################################################################################ def warn(text):
# DEFINITIONS print("WARNING: "+str(text), file=sys.stderr)
################################################################################ traceback.print_stack()
EXIT_SUCCESS=0
EXIT_ERROR=1
default_configuration = {
"window geometry": "640x480"
}
def warn(message, is_exception=False):
print("WARNING: "+str(message), file=sys.stderr)
if is_exception:
traceback.print_exc()
else:
traceback.print_stack()
def error(message, is_exception=True, handle_gracefully=True):
print("ERROR: "+str(message), file=sys.stderr)
if is_exception:
traceback.print_exc()
else:
traceback.print_stack()
if handle_gracefully:
pass
else:
sys.exit(EXIT_ERROR)
# easy way to get data out of window events # easy way to get data out of window events
class Window_Interaction_Handler: class Window_Interaction_Handler:
@ -82,54 +57,38 @@ class Window_Interaction_Handler:
if len(self.__window_interactions)>0: if len(self.__window_interactions)>0:
warn("__window_interactions not empty upon destruction of Window_Interaction_Handler:\n"+str(self.__window_interactions)) warn("__window_interactions not empty upon destruction of Window_Interaction_Handler:\n"+str(self.__window_interactions))
################################################################################
# PROGRAM START
################################################################################
# read configuration # read configuration
home_directory = os.path.expanduser("~") home_directory = os.path.expanduser("~")
config_file_path = os.path.join(home_directory, "some_ide_config.json") config_file_path = os.path.join(home_directory, "some_ide_config.json")
# load default configuration in case it is needed configuration = {}
configuration = default_configuration
if os.path.isfile(config_file_path): if os.path.isfile(config_file_path):
try: try:
config_file = open(config_file_path, "r") config_file = open(config_file_path, "r")
configuration = json.loads(config_file.read()) configuration = json.loads(config_file.read())
config_file.close() config_file.close()
except Exception: except:
error("An exception occurred while trying to load the configuration.", handle_gracefully=False) #TODO: show an error message
warn("Not implemented!")
else: else:
# config not found # config not found
dialog_interaction_handler = Window_Interaction_Handler() dialog_interaction_handler = Window_Interaction_Handler()
dialog = tk.Tk() dialog = tk.Tk()
dialog.title("No configuration found")
ttk.Label(dialog, text="No configuration found!").pack() ttk.Label(dialog, text="No configuration found!").pack()
buttons_frame = tk.Frame(dialog) buttons_frame = tk.Frame(dialog)
buttons_frame.pack() buttons_frame.pack()
ttk.Button(buttons_frame, text="Create", command=lambda: dialog_interaction_handler.interact("create", True, additional_action=dialog.destroy)).grid(column=0, row=0) ttk.Button(buttons_frame, text="Create", command=lambda: dialog_interaction_handler.interact("create", True, additional_action=dialog.destroy)).grid(column=0, row=0) #TODO: add functionality
ttk.Button(buttons_frame, text="Quit", command=lambda: dialog_interaction_handler.interact("create", False, additional_action=dialog.destroy)).grid(column=1, row=0) ttk.Button(buttons_frame, text="Quit", command=lambda: dialog_interaction_handler.interact("create", False, additional_action=dialog.destroy)).grid(column=1, row=0) #TODO: add functionality
dialog.resizable(0,0) dialog.resizable(0,0)
dialog.mainloop() dialog.mainloop()
if dialog_interaction_handler.get_result("create"): if dialog_interaction_handler.get_result("create"):
try: #TODO: store default configuration
config_file = open(config_file_path, "w") warn("Not implemented!")
config_file.write(json.dumps(default_configuration))
config_file.close()
except:
warn("Failed to save initial config file.", is_exception=True)
dialog = tk.Tk()
dialog.title("Failed to save initial config file")
ttk.Label(dialog, text="Failed to save the initial config file. The IDE can still start up, but it is likely that all changes to the configuration will be lost where they would be saved otherwise.").pack()
ttk.Button(dialog, text="Continue", command=dialog.destroy).pack()
dialog.resizable(0,0)
dialog.mainloop()
else: else:
error("No config present and user chose not to create one. Exiting.", is_exception=False, handle_gracefully=True) print("No config present and user chose not to create one. Exiting.")
# exit with success exit code anyway because this is not a program failure sys.exit()
sys.exit(EXIT_SUCCESS)
#window = tk.Tk() #window = tk.Tk()
#frame = ttk.Frame(window, padding=10) #frame = ttk.Frame(window, padding=10)