# -*- coding: cp1252 -*-
import Tkinter as tk
import random
class Farbfenster:
def __init__(self,master):
self.tags=[]
self.farbbuts=[]
self.taglist={"1":"#0000B0",
"2":"#00B000",
"3":"#00B0B0",
"4":"#B00000",
"5":"#B000CC",
"6":"#B0B000",
"7":"#B0B0B0",
"8":"#DDFFBB",
"9":"#0070FF",
"!":"#0000FF",
"@":"#00FF00",
"#":"#00FFFF",
"$":"#FF0000",
"%":"#FF00FF",
"^":"#FFFF00",
"&":"#FFFFFF",
"T":"#6b563f",
"t":"#F8DB83",
"r":"#EEBBEE",
"R":"#EEBBEE",
"V":"#9A5BEE",
"v":"#AABBEE",
"g":"#aaff99",
"Q":"#FF6600",
"q":"#FF9900",
"~":"#000000"}
self.master=master
self.scrollbar=tk.Scrollbar(master)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
self.text=tk.Text(master,
width=78,
bg="#352D20",
fg="white",
yscrollcommand=self.scrollbar.set,
undo=1,
maxundo=1)
self.text.pack(fill=tk.BOTH)
self.scrollbar.config(command=self.text.yview)
anzahl=len(self.taglist.keys())
self.butsframe=tk.Frame(master)
self.butsframe.pack()
zahl=0
for i in self.taglist.keys():
zahl+=1
self.farbbuts.append(tk.Button(self.butsframe,
text="`"+i,
fg=self.taglist[i],
bg="#352D20",
activebackground=self.taglist[i],
activeforeground="#352D20",
command=self.addfarbcode(i)))
self.farbbuts[-1].pack(side=tk.LEFT)
self.textentry=tk.Entry(root,width=59,bg="#352D20",fg="white",insertbackground="white")
self.textentry.pack(side=tk.LEFT)
self.parsebutton=tk.Button(root,text="Parse!",command=self.parse,bg="#352D20",fg="white")
self.parsebutton.pack(side=tk.LEFT)
self.savebutton=tk.Button(root,text="Save!",command=self.save,bg="#352D20",fg="white")
self.savebutton.pack(side=tk.LEFT)
self.loadbutton=tk.Button(root,text="Load!",command=self.showlistbox,bg="#352D20",fg="white")
self.loadbutton.pack(side=tk.LEFT)
self.master.bind_all("<Return>",self.parse)
self.master.bind_all("<F2>",self.save)
self.master.bind_all("<F3>",self.showlistbox)
self.text.bind("<Any>",self.foo)
temp=""
for i in self.taglist.keys():
self.add("1."+str(len(temp)),"`"+i+" ",self.taglist[i])
del temp
self.text.insert("end","\n - max. Länge von Namen für Plüschi 50 Zeichen!\n\n")
self.textentry.focus_set()
def foo(self,ev):
self.master.after(20,self.makeundo)
#print ev.keysym
def makeundo(self):
try:self.text.edit_undo()
except:pass
def addfarbcode(self,farbcode):
def insertfarbcode():
self.textentry.insert("end","`"+farbcode)
return insertfarbcode
def add(self,index,text,farbe):
self.tags.append(str(index)+text+str(farbe)+str(random.random()))
self.text.insert(index,text)
self.text.tag_add(self.tags[-1],index,index+str(len(text)))
self.text.tag_configure(self.tags[-1],foreground=farbe)
def pack(self,**kw):
self.text.pack(**kw)
def save(self,*ev):
f=file("schneiderstube.txt","a+")
f.write(self.textentry.get())
f.write("\n")
f.close()
self.text.insert("end","String erfolgreich gespeichert!\n")
def showlistbox(self,*ev):
entrys=self.load()
if entrys:
self.top=tk.Toplevel(self.master)
self.topscrollbar=tk.Scrollbar(self.top)
self.topscrollbar.pack(side=tk.RIGHT,fill=tk.Y)
self.listbox=tk.Listbox(self.top,width=100,yscrollcommand=self.topscrollbar.set)
for i in entrys:
self.listbox.insert("end",i[:-1])
self.listbox.pack()
self.topscrollbar.config(command=self.listbox.yview)
self.insertbutton=tk.Button(self.top,text="Einfügen",command=self.insertintoentry)
self.insertbutton.pack(side=tk.LEFT,fill=tk.X)
self.removebutton=tk.Button(self.top,text="Löschen",command=self.removefromlist)
self.removebutton.pack(side=tk.LEFT,fill=tk.X)
self.top.grab_set()
self.top.focus_set()
self.top.wait_window()
self.top.mainloop()
else:
self.text.insert("end","Keine Daten zum Laden vorhanden!\n")
def insertintoentry(self):
try:
toinsert=self.listbox.selection_get()
self.textentry.delete(0,"end")
self.textentry.insert("end",toinsert)
self.top.destroy()
except:pass
def removefromlist(self):
lines=[]
for i in self.listbox.get(0,"end"):
if i!=self.listbox.selection_get():
lines.append(i)
f=file("schneiderstube.txt","w")
for i in lines:
f.write(i+"\n")
f.close()
self.listbox.delete(0,"end")
for i in lines:
self.listbox.insert("end",i)
def load(self,*ev):
f=file("schneiderstube.txt","a+")
lines=f.readlines()
f.close()
return lines
def parse(self,*ev):
content=self.textentry.get()
if content:
lineanz=len(self.text.get("1.0","end").splitlines())
self.text.insert("end",u"[ %s ]:\t%s Zeichen\n"%(content,len(content)))
if "`" in content:
parts=[]
lineanz=len(self.text.get("1.0","end").splitlines())
x=content.split("`")
for i in x[1:]:
parts.append(i)
tempstr=x[0]
self.text.insert("end",tempstr)
for i in parts:
if i[0] in self.taglist.keys():
text=u"%s"%i[1:]
self.add(str(lineanz)+"."+str(len(tempstr)),text,self.taglist[i[0]])
tempstr+=text
else:
self.text.insert("end","`"+text)
tempstr+=text
else:
self.text.insert("end",content)
self.text.insert("end","\n")
root=tk.Tk()
root.iconbitmap("favicon.ico")
root.config(bg="#352D20")
root.title("Saladins Schneiderstube")
root.resizable(0,0)
textwindow=Farbfenster(root)
root.mainloop()