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

65
main.py
View File

@ -3,35 +3,10 @@ import tkinter as tk
from tkinter import ttk
import sys, os, json, traceback
################################################################################
# DEFINITIONS
################################################################################
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:
def warn(text):
print("WARNING: "+str(text), file=sys.stderr)
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
class Window_Interaction_Handler:
# constructor
@ -82,54 +57,38 @@ class Window_Interaction_Handler:
if len(self.__window_interactions)>0:
warn("__window_interactions not empty upon destruction of Window_Interaction_Handler:\n"+str(self.__window_interactions))
################################################################################
# PROGRAM START
################################################################################
# read configuration
home_directory = os.path.expanduser("~")
config_file_path = os.path.join(home_directory, "some_ide_config.json")
# load default configuration in case it is needed
configuration = default_configuration
configuration = {}
if os.path.isfile(config_file_path):
try:
config_file = open(config_file_path, "r")
configuration = json.loads(config_file.read())
config_file.close()
except Exception:
error("An exception occurred while trying to load the configuration.", handle_gracefully=False)
except:
#TODO: show an error message
warn("Not implemented!")
else:
# config not found
dialog_interaction_handler = Window_Interaction_Handler()
dialog = tk.Tk()
dialog.title("No configuration found")
ttk.Label(dialog, text="No configuration found!").pack()
buttons_frame = tk.Frame(dialog)
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="Quit", command=lambda: dialog_interaction_handler.interact("create", False, additional_action=dialog.destroy)).grid(column=1, 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) #TODO: add functionality
dialog.resizable(0,0)
dialog.mainloop()
if dialog_interaction_handler.get_result("create"):
try:
config_file = open(config_file_path, "w")
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()
#TODO: store default configuration
warn("Not implemented!")
else:
error("No config present and user chose not to create one. Exiting.", is_exception=False, handle_gracefully=True)
# exit with success exit code anyway because this is not a program failure
sys.exit(EXIT_SUCCESS)
print("No config present and user chose not to create one. Exiting.")
sys.exit()
#window = tk.Tk()
#frame = ttk.Frame(window, padding=10)