Na Schön. Eigentlich sollte der Code ja bis zum Ende mein Geheimnis bleiben, aber jetzt bleibt mir wohl nicht mehr viel übrig.
Code: Alles auswählen
class Editor:
def __init__(self):
self.fs = False
self.fil = "Untitled Document"
self.save = True
self.main = Tk(className="")
self.main.title("pyIDE [Untitled Document] 1.0")
scroll = Scrollbar(self.main)
scroll.pack(side=RIGHT, fill=Y)
self.content = Text(self.main, yscrollcommand=scroll.set, wrap=WORD, tabs=("1c"))
scroll.config(command=self.content.yview)
self.content.bind("<Any-KeyPress>", self.unsave)
self.main.bind_all("<Control-KeyPress-s>", self.sfe)
self.main.bind("<Configure>", self.expand)
self.main.bind_all('<F11>', self.cf)
self.content.pack()
self.main.geometry("700x500")
self.menu = Menu(self.main)
self.main.config(menu=self.menu)
filemenu = Menu(self.menu, tearoff=0)
self.menu.add_cascade(label="File", menu=filemenu)
nfm = Menu(self.menu, tearoff=0)
filemenu.add_cascade(label="New", menu=nfm)
nfm.add_command(label="Empty Project", command=self.nf)
nfm.add_command(label="OOP Project", command=self.nfo)
nfm.add_command(label="Form Project", command=self.nff)
filemenu.add_command(label="Open", command=self.of)
filemenu.add_command(label="Save", command=self.sf)
filemenu.add_command(label="Save As", command=self.sfa)
filemenu.add_separator()
self.main.after(100, self.iniform)
self.main.after(0, self.register)
filemenu.add_command(label="Exit", command=self.main.destroy)
exemenu = Menu(self.menu, tearoff=0)
self.menu.add_cascade(label="Execute", menu=exemenu)
exemenu.add_command(label="Run", command=self.run)
exemenu.add_command(label="Run Line for Line(Debug)", command=self.runlfl)
helpmenu = Menu(self.menu, tearoff=0)
self.menu.add_cascade(label="?", menu=helpmenu)
helpmenu.add_command(label="Register", command=self.reg)
self.main.protocol("WM_DELETE_WINDOW", self.close)
def cf(self, event):
self.main.wm_attributes("-fullscreen", not self.fs)
self.fs= not self.fs
def reg(self):
s = registerDialog()
def runlfl(self):
try:
self.content.tag_configure("err", background="white")
except:
pass
x = self.content.get('1.0', END)
y = 0
x = x.split("#:breakpoint")
for i in x:
try:
y += 1
exec(i)
if i != len(x)-1:
showwarning("SystemBreak", "Die weitere Ausführung des Programmes wurde durch einen Breakpoint verhindert!")
except:
showerror("Fehler!", "Die Ausführung des Programmes wurde unterbrochen in Zeile " + str(y) + "!!!")
self.content.tag_add("err", str(y) + ".0", str(y) + ".end")
self.content.tag_configure("err", background="red")
break
def run(self):
try:
self.content.tag_configure("err", background="white")
except:
pass
try:
exec(self.content.get('1.0',END))
except TypeError:
print e.TYPEError(1, "<pyIDE>", "<content>")
return
except ImportError:
print e.IMPORTError(1, "<pyIDE>", "<content>")
return
except NameError:
print e.NAMEError(1, "<pyIDE>", "<content>")
return
except OSError:
print e.osError(1, "<pyIDE>", "<content>")
return
except SystemExit:
print e.EXITError(1, "<pyIDE>", "<content>")
return
except SyntaxError:
print e.SYNTAXError(1, "<pyIDE>", "<content>")
return
except EOFError:
print e.eofError(1, "<pyIDE>", "<content>")
return
except KeyboardInterrupt:
print e.KEYError(1, "<pyIDE>", "<content>")
return
except MemoryError:
print e.MEMError(1, "<pyIDE>", "<content>")
return
except AssertionError:
print e.ASSERTONError(1, "<pyIDE>", "<content>")
return
except:
print e.Error(1, "<pyIDE>", "<content>")
return
def register(self):
c = registerCheck()
if not c:
s = registerDialog()
def iniform(self):
self.form = Form()
def expand(self, event):
self.content.config(width=event.width)
self.content.config(height=event.height)
def sfe(self, event):
self.sf()
def unsave(self, event):
if self.save:
letter = "abcdefghijklmnopqrstuvwxyz1234567890äÄöÖüÜABCDEFGHIJKLMNOBQRSTUVWXYZ!\"\\<>|-:,^°'#*+§$%&/()= "
if event.keysym in letter:
self.save = False
self.main.title("pyIDE [" + self.fil + "]* 1.0")
def sf(self):
if self.fil != "Untitled Document":
try:
fli = open(self.fil, "w")
self.main.title("pyIDE [" + self.fil + "] 1.0")
fli.write(self.content.get('1.0',END))
fli.close()
except:
showerror("Fehler!", "Das Speichern hat nicht geklappt!")
else:
self.sfa()
def sfa(self):
try:
fil = asksaveasfilename(filetypes=(("Python Files", "*.py"), ("Python File(no console)","*.pyw"), ("All Files", "*.*")), defaultextension="*.py")
if fil != '':
self.fil = fil
fli = open(self.fil, "w")
fli.write(self.content.get('1.0',END))
fli.close()
self.save = True
self.main.title("pyIDE [" + self.fil + "] 1.0")
else:
showwarning("Info!", "Eine Datei muss ausgewählt werden!\nWurde nicht gespeichert!")
except:
showerror("Fehler!", "Das Speichern hat nicht geklappt!")
def of(self):
fil = askopenfilename(filetypes=(("Python Files", "*.py"), ("Python File(no console)","*.pyw"), ("All Files", "*.*")), defaultextension="*.py")
if fil != '':
try:
xname = open(fil, "r")
con = xname.readlines()
xname.close()
self.nf()
self.fil = fil
self.main.title("pyIDE [" + self.fil + "] 1.0")
for i in con:
self.content.insert(END, i)
except:
showerror("Fehler!", "Die Datei konnte nicht geöffnet werden!")
else:
showwarning("Info!", "Eine Datei muss ausgewählt werden\nWurde nicht geöffnet!")
def nf(self):
self.fil = "Untitled Document"
if not self.save:
if askyesno("ACHTUNG!", "Soll der Text gespeichert werden?"):
self.sf()
self.main.title("pyIDE [Untitled Document] 1.0")
self.content.delete('1.0', END)
def nfo(self):
self.nf()
oopc = """class Main:
def __init__(self, base):
self.base=base
pass
app=Main()
"""
self.content.insert('1.0', oopc)
def nff(self):
self.nf()
oopc = """from **formfile** import Form
class Main(Form):
def __init__(self):
Form.__init__(self)
app=Main()
app.MainLoop()
"""
self.content.insert('1.0', oopc)
def initialize(self):
self.main.mainloop()
def close(self):
# Do things before closing application
self.main.destroy()