From d9821e1aa69f530d5487e728312c7a98cdb7bc25 Mon Sep 17 00:00:00 2001 From: "Jeison Yehuda Amihud (Blender Dumbass)" Date: Mon, 10 May 2021 19:57:03 +0000 Subject: [PATCH] Implementing Error Catching System --- troubleshooter/error_notify.py | 84 ++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 troubleshooter/error_notify.py diff --git a/troubleshooter/error_notify.py b/troubleshooter/error_notify.py new file mode 100644 index 0000000..22f3480 --- /dev/null +++ b/troubleshooter/error_notify.py @@ -0,0 +1,84 @@ +#################################### +# # +# COPYRIGHT NOTICE # +# # +# This file is a part of Victori- # +# ous Children Studio Organizer. # +# Or simply VCStudio. Copyright # +# of J.Y.Amihud. But don't be sad # +# because I released the entire # +# project under a GNU GPL license. # +# You may use Version 3 or later. # +# See www.gnu.org/licenses if your # +# copy has no License file. Please # +# note. Ones I used the GPL v2 for # +# it. It's no longer the case. # +# # +#################################### + +import os +import sys +import traceback +from settings import oscalls + +# We gonna have this show run when ever any mistake is caught when running +# the UI. The concept is to give users an easy to understand UI message what +# an arror had happened. + +# The main problem is that if the UI is not loading it will give an error +# too. Meaning that we need to deal with this kind of error too. + +def show(): + + + + # Printing the message of the python error + message = str(traceback.format_exc()) + + print(message) + + # Parsing the message to get the filename of the last file that had + # an issue. Hope you know a better way of doing it. I spent a whole + # day trying to come up with a way. + + Filename = "run.py" + for i in message.split("\n"): + if 'File "' in i: + Filename = i[i.find('"')+1:i.replace('"'," ",1).find('"')] + + + # trying to do this with a window + + try: + from gi.repository import Gtk + + # If we are able to access the + + dialogWindow = Gtk.MessageDialog( + #transient_for=self, + flags=0, + message_type=Gtk.MessageType.WARNING, + buttons=("Edit Source",1, "Report Bug", 2, "Ignore", 3), + text="BUG :(\n\n"+message, + ) + + response = dialogWindow.run() + + + # Now we want to do something with what the user decides. + if response == 1: + oscalls.Open(Filename) # Edit source open the error file in + # the text editor + + elif response == 2: + oscalls.Open("https://notabug.org/jyamihud/VCStudio/issues") + + dialogWindow.destroy() + + + except: + raise + + + +