From 6667185945e22963cec02f87883e25bba0b7e964 Mon Sep 17 00:00:00 2001 From: jordonbc Date: Thu, 7 Jul 2016 22:26:30 +0100 Subject: [PATCH] 1.3.0a Completely rewritten the terminal and some minor bug fixes --- .idea/JDE.iml | 2 +- .idea/misc.xml | 2 +- .idea/vcs.xml | 6 - .idea/workspace.xml | 629 ++++++++++++++++++ .../__pycache__/desktop.cpython-35.pyc | Bin 0 -> 12329 bytes .../__pycache__/login.cpython-35.pyc | Bin 0 -> 4749 bytes .../__pycache__/start.cpython-35.pyc | Bin 0 -> 2428 bytes JDE/Interfaces/desktop.py | 45 +- JDE/Interfaces/login.py | 3 +- JDE/JDE.py | 18 +- JDE/__pycache__/JDE.cpython-35.pyc | Bin 0 -> 1641 bytes Programs/PyIDE.py | 73 ++ .../__pycache__/imageViewer.cpython-35.pyc | Bin 0 -> 2595 bytes Programs/__pycache__/info.cpython-35.pyc | Bin 0 -> 1220 bytes Programs/__pycache__/jpad.cpython-35.pyc | Bin 0 -> 7888 bytes .../__pycache__/minesweeper.cpython-35.pyc | Bin 0 -> 9507 bytes Programs/__pycache__/terminal.cpython-35.pyc | Bin 0 -> 4107 bytes Programs/jpad.py | 20 +- Programs/terminal.py | 110 +++ Programs/webEdit/Templates/HTML 5/Default.HET | 9 + .../__pycache__/htmlEdit.cpython-35.pyc | Bin 0 -> 7550 bytes Programs/webEdit/htmlEdit.py | 175 +++++ Programs/webEdit/settings | 3 + README.md | 8 +- 24 files changed, 1058 insertions(+), 45 deletions(-) delete mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 JDE/Interfaces/__pycache__/desktop.cpython-35.pyc create mode 100644 JDE/Interfaces/__pycache__/login.cpython-35.pyc create mode 100644 JDE/Interfaces/__pycache__/start.cpython-35.pyc create mode 100644 JDE/__pycache__/JDE.cpython-35.pyc create mode 100644 Programs/PyIDE.py create mode 100644 Programs/__pycache__/imageViewer.cpython-35.pyc create mode 100644 Programs/__pycache__/info.cpython-35.pyc create mode 100644 Programs/__pycache__/jpad.cpython-35.pyc create mode 100644 Programs/__pycache__/minesweeper.cpython-35.pyc create mode 100644 Programs/__pycache__/terminal.cpython-35.pyc create mode 100644 Programs/terminal.py create mode 100644 Programs/webEdit/Templates/HTML 5/Default.HET create mode 100644 Programs/webEdit/__pycache__/htmlEdit.cpython-35.pyc create mode 100644 Programs/webEdit/htmlEdit.py create mode 100644 Programs/webEdit/settings diff --git a/.idea/JDE.iml b/.idea/JDE.iml index 6711606..08b65cd 100644 --- a/.idea/JDE.iml +++ b/.idea/JDE.iml @@ -2,7 +2,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index fa16f6a..0d9674f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -26,7 +26,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..5c20ca4 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1466672063402 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JDE/Interfaces/__pycache__/desktop.cpython-35.pyc b/JDE/Interfaces/__pycache__/desktop.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c920024401e8d7e921cbc20306c44ff3cada35f GIT binary patch literal 12329 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 literal 0 HcmV?d00001 diff --git a/Programs/PyIDE.py b/Programs/PyIDE.py new file mode 100644 index 0000000..43e7dcb --- /dev/null +++ b/Programs/PyIDE.py @@ -0,0 +1,73 @@ +from tkinter import * +import sys +from tkinter.filedialog import askopenfilename, asksaveasfilename + + +def PyIDE(): + def openFile(): + file = askopenfilename(defaultextension=".py", + filetypes=[("Python .py", ".py"), ("Python .pyw", ".pyw")]) + + if file != "": + with open(file, "r") as openfile: + input.delete(0.0, END) + input.insert(0.0, openfile.read()) + + def save(): + file = asksaveasfilename(defaultextension=".py", + filetypes=[("Python .py", ".py"), ("Python .pyw", ".pyw")]) + + if file != "": + with open(file, "w") as saveFile: + saveFile.write(input.get(0.0, END)) + + class TextRedirector(object): + def __init__(self, widget, tag="stdout"): + self.widget = widget + self.tag = tag + + def write(self, str): + output.delete(0.0, END) + self.widget.configure(state="normal") + self.widget.insert("end", str, (self.tag,)) + self.widget.configure(state="disabled") + self.widget.see(END) + + def run(): + exec(input.get(0.0, END)) + + rootInterpreter = Tk() + rootInterpreter.title("Terminal") + rootInterpreter.geometry("200x200") + rootInterpreter.minsize(200, 200) + + menu = Menu(rootInterpreter) + rootInterpreter.config(menu=menu) + filemenu = Menu(menu) + menu.add_cascade(label="File", menu=filemenu) + filemenu.add_command(label="New") + filemenu.add_command(label="Open", command=openFile) + filemenu.add_command(label="Save", command=save) + filemenu.add_command(label="Save As", state=DISABLED) + filemenu.add_separator() + filemenu.add_command(label="Exit", command=sys.exit) + + output = Text(rootInterpreter, state=DISABLED, wrap="word") + output.configure(state=NORMAL) + output.configure(state=DISABLED) + output.pack(side=TOP, expand=YES, fill=BOTH) + + input = Text(rootInterpreter) + input.focus() + input.pack(side=BOTTOM, expand=YES, fill=BOTH) + + sys.stderr = TextRedirector(output, "stderr") + + sys.stdout = TextRedirector(output, "stdout") + + rootInterpreter.mainloop() + + # rootInterpreter.protocol("WM_DELETE_WINDOW", closeApp) + + +PyIDE() diff --git a/Programs/__pycache__/imageViewer.cpython-35.pyc b/Programs/__pycache__/imageViewer.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dea63f292bb9ea10576c573c168877500c477f8d GIT binary patch literal 2595 zcmZ`*%Wm676um=I)QhqmJ9g~UO@g8u6=;AK=%Q_qrgh@jMIsxq8pnbQf);6;GDWIG zDz=5}T%iBaP0>w1p&v5auJQ|A_1qcBku!cb|uADl$3E~`x*3&JD3`7<;TQAcok z$ORc9H3aF{oD(9j?9g>^PN_^`MUT4_Rw=A$8H07Cx!+w+&`Qg*J*cu)k{`mOG;jYY1WYEtKr`COcaH(n>dQXS0 z!CSt7hJ-EV#gg!>CDDL9TA4O_XE1|X8Fm`C-yjr3SEQG%7vB>kuc*))$9M|Niozye zBiAcY4|_C$w7?!YgxQ`0{4Bu+(5Pr^v9I`QRin|Xa-^|bWBC|nfO(9ta=6Ge&dLqa z?rA1fNiV140r4zJWONc|X|pbEB;F|x;x1dL+U{vqWZPUN%H0Uk*Fi2B9OZU(M|l7( zC?a1wQ&wwVRl6BV`eZ00RXUHu;#9e(QG9Y*G=*ev^?sSgV^3A)fHq%7H)jlss__pdc)FlUPmHvI!d1I)+Rnu4>&-5v;HcEMuU#aIs=qi6QOVvtQukF^0K z8T6gW{%D4Akn;cMu!AKXu`)fUcSmpGwG(WwQ3Q>6!z@wMXEXP7*P~v8DO}7ke~bB9 zRq(l3;EhH){taz#V`8wV4VH|-&9QIro-<#j(70crurY~qi^92yi(7E&u+vpNvO00P zM&Udax3%k!;M&%!LXv>jtOu&=n9wQpkj(VN$9h87Yf4vDxb}5+^&kxWZjg5a1T-C!m0V-123s{)Cyxe!3<~h7 z97cH|vrARQfdXb71+r5crvzC!gP?n+N-wsbZnc#-P_?a{7u%hkR{Q&Bo!U56)^mT@ zX}5QtEAdJ$av0Ar&NrNDjC+P!%Fd%gF0q>3-q}_5!IM4Zz`>R(UB1Tgu1XjD^8pGr z42k#S@FXhob-2ktMMGjytl(YOpN6<=Es8a374IDobkV*m*2HLSnxHd&W=P7%iYDm+ zg!hva|YI>I1M@QI&Q! zNTSy$JGUR?MI?0%s8SIZI3>SEhLSHp$)~xh^n*A}vTX1H@WvvfYaB*+lUx*f$;d zEsSwPqxq7XhiICXIe7IH-xqryt*E5R#mw; zi&N~9S{w`anV(@CB)HA7bo>F@-F_w=NXk0tYP#rKN;`O8L{)iU@_xwwGj!ORSir}# Gs`h^m(mZGY literal 0 HcmV?d00001 diff --git a/Programs/__pycache__/info.cpython-35.pyc b/Programs/__pycache__/info.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd74381caf148ed29a0e82bc6a0cba46a50caa1c GIT binary patch literal 1220 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 literal 0 HcmV?d00001 diff --git a/Programs/__pycache__/minesweeper.cpython-35.pyc b/Programs/__pycache__/minesweeper.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..354f5213c45ec9516d76548a38b296eb8f08e5b0 GIT binary patch literal 9507 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 literal 0 HcmV?d00001 diff --git a/Programs/__pycache__/terminal.cpython-35.pyc b/Programs/__pycache__/terminal.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b41c841050695557a12bdcb2bdc331d404142666 GIT binary patch literal 4107 zcmb7HOLH5?5$@StEI{!6kSObABub?Wxr(7|$?-#_vMkb;T@~~OEC^b*OI~1SdwOSj`Zc}ZoSvL4 zHvjf)>yufcf78h2f&LVCdWa?z}IA){lS9|%K>!>i+e<3x7ceeT8 zN4GxS{yLQ^-QKf4*=>(Nr@$P^j_ zt)|%4A{r9K!B35&cfu(i7@y)!uc46$5TcIOL6~g(IZO@*`?*V1MA{w1`#U5EqVBR! zOd(tUglIPt{qB!M_a$R43mFQ;s*vwPV7|AQ30&Hghx(ojLM0nIQN~YokaTr}W%I?) zVO&q6^F+`Sq8bRt64soJvZ$0D;~#`U3pwKIdaLXjFO^YKv6s{|H$(3$cA6>FYGEAe zTI~#aDf@}UnCO*$Mzy7Ec!Txfi=RC07Vh*u8Ys4hKUA`=eNI9QSazTFRo`=|DcIZD zyZ&%w52&O(~!uF)z;J?p^pfci8cja*q8N*W0pIGsRl1 zodn&8>4{qHQMVrT-zZchQs=li4uYj@B&JR#!6L@lcua_CPrZ#^Wta~+^f;oN7wJC* zl9%WQ`~@}PW9#?zV%=rn1pwMZHTmRzA{tWIYrcq^;TeQgGMcrS@w zATeh#8Ww??qu?w(!KP;m(eF#1AFc$8&rxu`-^csWKBx2o+Z9~k`T7*qPTSPCO!${M zi?4CcSf@k5i}VD^K5*?>s}h2^QGUD9Ks@cmJB#B!k30P{V$C`d4@HRgT~g0n4cBH& zuIfN@Ur>wf{{_KgR`B0P1oMK()1lx&ACj;T^8d}mkI48{ zbGG7Zl)1XqZ5zh7WVMIPwKBWv4DUkc_VWw^OPwY z%=ll&UgT874n@|z=N?_-?XD+&$`8|n_@Q)g;!SeoY+^im=4Li6xo>C_<~)ek=xBl0 z8yaWDjkxIPn~KX^G-|EguCo}sVARWBYTC=p^gl>D^~Qcn zCEYl{t7UsBACoLW@ zdH`UNA3!c6Bzn0p?sT>Bfm878f6?rB%!PiJAS1nvhQyqh5vTBT#Z~bkdcU{y2jI>N zZf6GkOU|5_wWB8;9(|3+x~^Ej^ODoMIQ#-<2xRGclr-v5dSeL-Hh8VTq6+5tHZN>}5H^-TPX#j>$Y#A8=^7wd7y~36rHnh6o*H=ttJNf=pI}PW zhi?4L2NL)qIkJuc`khcoqBjQscEnqSMwF!TW~Wnuv;pWC0|EmEyYvetXR}NplUdDQ zU0yzXe|h=UKOo5_;c<4&v8p&-gsoluilb!n4evj~bmRjEEaE@bbDfSzFh6ebTlI6fE;2Z6}sfKK&p z_$PeidWGxvr0%NthWagw&bEo-lZ%H+OU0dB;t!;f-Sy|sIpM$YUCz6jP#OP2* z(iB=UX=4u@nLJJgY1orC`;Es~$`n?<+_?GK+Ukn&K3}`JY5dCiy*oG86ho_invd6N zk8%9Kz5rPBI@p)S-CVzG+;3JljQ834=53Q(jah!KiK9tsyqyrH_;|Cqe#fFR#YYOO zvigWAn-ztQN_5glB2#GB!#GNkPC3_yoqoHXBCzTYJotTXu5-gUuGW9rORkYoOyT7pAeJyVe>f4XwTSfbl&+L&OglK`xLg#9H`#xYgq)O%m`Oq;N~J4 zY~r0goILvWSd?mE>2YKAn7~l3Edx|~dR#H5f;t4qTkq=KMAd5QE(^@-eVp}R<*{?F zf^VIp{>YT|)rU-7MpK;~=1*3S>>F(NfC!?K{3GI(F}%l+3vk Gh5rM@jc3gO literal 0 HcmV?d00001 diff --git a/Programs/jpad.py b/Programs/jpad.py index 2cda7b1..b929b54 100644 --- a/Programs/jpad.py +++ b/Programs/jpad.py @@ -2,7 +2,7 @@ import logging from tkinter import * from tkinter.filedialog import askopenfilename, asksaveasfilename -jpadLog = logging.getLogger("jpad.py") +jpadLog = logging.getLogger(__name__) jpadLog.debug("Atempting to read settings file") try: @@ -15,14 +15,14 @@ except Exception as e: class jpadEditor: def minimize(self): - jpadLog.debug("Running minimize") + jpadLog.debug("Running "+jpadEditor.minimize.__name__) try: self.appFocus = 0 except Exception as e: jpadLog.error(str(e)) def closeApp(self): - jpadLog.debug("Running closeApp") + jpadLog.debug("Running "+jpadEditor.closeApp.__name__) try: # self.appIcon.destroy() self.window.destroy() @@ -30,7 +30,7 @@ class jpadEditor: jpadLog.error(str(e)) def focusApp(self): - jpadLog.debug("Running focusApp") + jpadLog.debug("Running "+jpadEditor.focusApp.__name__) try: if self.appFocus == 0: self.window.focus_force() @@ -43,7 +43,7 @@ class jpadEditor: jpadLog.error(str(e)) def createMenu(self): - jpadLog.debug("Running createMenu") + jpadLog.debug("Running "+jpadEditor.createMenu.__name__) try: self.menu = Menu(self.window) self.window.config(menu=self.menu) @@ -63,7 +63,7 @@ class jpadEditor: jpadLog.error(str(e)) def new(self): - jpadLog.debug("Running new") + jpadLog.debug("Running "+jpadEditor.new.__name__) try: self.window.title("Jpad Text Editor" + " File: New File") self.textPad.delete(0.0, END) @@ -71,14 +71,14 @@ class jpadEditor: jpadLog.error(str(e)) def exit_command(self): - jpadLog.debug("Running exit_command") + jpadLog.debug("Running "+jpadEditor.exit_command.__name__) try: self.closeApp() except Exception as e: jpadLog.error(str(e)) def saveAs_command(self): - jpadLog.debug("Running saveAs_command") + jpadLog.debug("Running "+jpadEditor.saveAs_command.__name__) try: self.jpadFile = asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", ".txt"), ("Python .py", ".py"), @@ -95,7 +95,7 @@ class jpadEditor: jpadLog.error(str(e)) def save_command(self): - jpadLog.debug("Running save_command") + jpadLog.debug("Running "+jpadEditor.save_command.__name__) try: self.jpadFile = open(str(self.jpadFile), "w") if self.jpadFile != None: @@ -109,7 +109,7 @@ class jpadEditor: jpadLog.error(str(e)) def open_command(self): - jpadLog.debug("Running open_command") + jpadLog.debug("Running "+jpadEditor.open_command.__name__) try: self.jpadFile = askopenfilename(defaultextension=".txt", filetypes=[("Text Files", ".txt"), ("Python .py", ".py"), diff --git a/Programs/terminal.py b/Programs/terminal.py new file mode 100644 index 0000000..28df840 --- /dev/null +++ b/Programs/terminal.py @@ -0,0 +1,110 @@ +__author__ = "Jordonbc" + +__version__ = "1.1.0" +from tkinter import * + +default_stdin = sys.stdin +default_stdout = sys.stdout +default_stderr = sys.stderr + +disabledCommands = ["help()", "exit()", "sys.exit()", "quit()"] +availableCommands = ["set", "bg", "fg", "clear"] + + +def commands(): + print("Available Commands:") + print("set bg [HEX COLOUR]") + print("set fg [HEX COLOUR]") + print("clear") + print("run [file]") + + +class terminal: + class TextRedirector(object): + def __init__(self, widget, tag="stdout"): + self.widget = widget + self.tag = tag + + def write(self, str): + self.widget.configure(state="normal") + self.widget.insert("end", str, (self.tag,)) + self.widget.configure(state="disabled") + self.widget.see(END) + + def __init__(self, master, command=None): + def run(command=None): + if input.get() != "": + print(input.get()) + if input.get().startswith("set "): + if input.get().startswith("set bg "): + try: + output.configure(bg=str(input.get()).replace("set bg ", "").replace("\n", "")) + input.configure(bg=str(input.get()).replace("set bg ", "").replace("\n", "")) + except Exception as e: + print(str(e)) + elif input.get().startswith("set fg "): + try: + if str(input.get()).replace("set fg ", "").replace("\n", "").lower() == "#ffffff": + output.configure(insertbackground="#000000") + input.configure(insertbackground="#000000") + elif str(input.get()).replace("set fg ", "").replace("\n", "").lower() == "#000000": + output.configure(insertbackground="#ffffff") + input.configure(insertbackground="#ffffff") + output.configure(fg=str(input.get()).replace("set fg ", "").replace("\n", "")) + input.configure(fg=str(input.get()).replace("set fg ", "").replace("\n", "")) + except Exception as e: + print(str(e)) + + if input.get() == "clear": + print("\n" * 25) + elif input.get() in disabledCommands: + input.delete(0, END) + print("Command is disabled.") + + elif input.get().startswith("run "): + try: + exec(open(str(input.get()).replace("run ", ""), "r").read()) + except Exception as e: + print(str(e)) + + else: + try: + exec(input.get()) + except Exception as e: + print(str(e)) + + input.delete(0, END) + + def closeApp(): + sys.stdin = default_stdin + sys.stdout = default_stdout + sys.stderr = default_stderr + rootTerminal.destroy() + + rootTerminal = Toplevel(master) + rootTerminal.title("Terminal") + rootTerminal.geometry("400x300") + rootTerminal.minsize(200, 200) + rootTerminal.configure(bg="#000000") + + output = Text(rootTerminal, state=DISABLED, height=10, bg="#000000", fg="#FFFFFF", wrap="word", relief=FLAT) + output.configure(state=NORMAL) + output.insert(END, "JDE Terminal V " + __version__ + "\n") + output.insert(END, "Type commands() to see available commands\n") + output.configure(state=DISABLED) + output.pack(side=TOP, expand=YES, fill=BOTH) + + input = Entry(rootTerminal, width=400, bg="#000000", fg="#FFFFFF", relief=FLAT) + input.focus() + input.bind("", run) + input.pack(side=BOTTOM) + + output.configure(insertbackground="#ffffff") + input.configure(insertbackground="#ffffff") + + sys.stdin = self.TextRedirector(output, "stdin") + sys.stderr = self.TextRedirector(output) + sys.stdout = self.TextRedirector(output) + + rootTerminal.protocol("WM_DELETE_WINDOW", closeApp) + rootTerminal.mainloop() \ No newline at end of file diff --git a/Programs/webEdit/Templates/HTML 5/Default.HET b/Programs/webEdit/Templates/HTML 5/Default.HET new file mode 100644 index 0000000..fd12648 --- /dev/null +++ b/Programs/webEdit/Templates/HTML 5/Default.HET @@ -0,0 +1,9 @@ + + + + NEW WEBSITE + + +

Your Website Text

+ + \ No newline at end of file diff --git a/Programs/webEdit/__pycache__/htmlEdit.cpython-35.pyc b/Programs/webEdit/__pycache__/htmlEdit.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f4d19590e3bc9b99e99b73cf54750a6f3b65d81 GIT binary patch literal 7550 zcmb_hOLH5?5uRBro&;Z@B#O2p!FFs4l0{m4#c|P$WQvyTvT0dlObf*X0kBJINdODa zE<_O}=b}{NLn=9^Dpk3qDwSI<`2)V@56mrNoKO-=T1XD5I3Zu|z|PGAj5>h=wILqgtX@vrWww zjihL%L^&m7)H5y0Y2jh4j5sU`H!IwnaFW7FiKmv>8xl{2a5GewTdntml+w)$CoP^z zAtO$1{o^@N9v1Gf*c%Z}mYcT#?2G$fJ!nbs)g1?;4vF6YFov{5d6Zypl=3?BiLV^L zRjdCOYZB`vspVA^*=n#Kgvx8}cBk$se^*tT!R&!sTXVc{HgLlbErFJ*dubzjDXw;u z>a;`GdHtQ@eK+FK@}RrCv%Bgy{EjMqP@I1AUH(kxYJTA=0#PGE7gAh#(Q7gE%CdJl8YA8HP|s zbUIpTU1A>k(ElW!RXo9OQG`bIEY)2LT9QwMs7Qfw51>+FKOvOMuTUcprA2778i@lW z#uKLE4y?pI=oPJ~iymuM>|v6u2!|q8XnvBk?+DW0y3X!+4L3Y&yMeavZhrQuwjYMg z#`oDN_hp0|{uscSv4g9v-qB&aC zrmOQo^^yCjU$2Iq-_q&OeH_;O$2#S>0O9Jy+WKvs@>+qbLTyt|Z7a9x=p=2XHeP%` z)XC5b8(;S>m?R8OF!l9w zT(2rm%_$T;{T@|qmp4V1HwBdY8nH*p9j7x6bykB|y=sJ-Nq{%q)LUp(xfKkypcx>nd@GU_ju3hZo18OqZ+!wEFJUW;_PjAr`la(|}NO*aUtyKZ;*mU4@Sey11^y<6y?`*rt#Ekr5D8djGfXQN@- z0qPtTbmgf63Z21jIdp@Te^Td}FoJem?}?Us@HRRJbhd?j)f$y~d?(}u>wK?1A-hBI z(FA{Q4-g32*tA=NzoW#-{Fe6sWEPz_w)~_UOH4U9d~EuspfU+&95mv@L50128P0@w zl6W~z99H|~IFsTDY{BzqH!C6rZ~`!{crp;Uy09&ICjvb!s87W;1zy_Mmi(O%J2(`4 zo#9^kCM6;YUur~2$CP2=j0mD+VhWsqF{Wf=%D8X}Ov%NR3E`Y$%1}%>FPsZZ$;XsQ z;ap_Oa7>vJ&MQnAi7BrN=QXB`#*`lk=Mq!KV#;OV6qzy}Q(hO&8%!y%z}YWy-W1M{ z#S=J4Bo(N^P~T!I-JpZix0yP6j5^KKv18OLOr_h`j9_$7VreH06{<9|U1eS}S7%}`Pg^^9iyc92<4W)7 zWTRSh8`>r}r8~UpJ8p5K<+a;x7}Rm-dmpj@WDNqkXlTJ~1z^Nsx5;SpjMjQLz1&_| zo^7v`62_ph-AaADzOi68+-Om7a zX1M{crxC2o^m?2LJpxK92XU%d%={dX2{3;$0PpgP;DPr{!0hFkdTB&fO?@^1 z=+cV-)zq2rWS1Y_fSgdgteA2S;b}I!mRq@TZvfoeF9O%^a#oOY1aj^SAm=tt4RY?R zAm<6>{24&be|c(<^JfLQKp+>+0CM5MsX;EB733m;Ts#BF#qCprTs$ktB?7s029QgY zQ-fUUfsBJ>Hq{Fl2tJs}ayaav;r{z3cH!Xg7-tQ>@Fd)s$(|igt+OAilOH$XzUow4 z`OS9N%`JP)-D05XA53=>)3YljTiKYRZ|K>8BAm>Sou=sYq_H0|fhiAMqlMB4LY|l1 z=@;3EfnL3}#$h9`^$U!0WUcI*VXa4q>_WhA?Rk7808Ri*I%zQp|8COB3EQ5>g*v zmK{7n3I$09vMIhuHUy|A6zW4FWuYvg(z~nsF;_&w(h-Ki!-8|mUc^(A^5CmHF%Sx6 z;$%}PWpvFE3CE#yy>qZ?LKTWJPOM1hDcX;7RQq6wl#Zz5%8M2@*zL#yN%OqGH&HRG z!BQyRyevX2#fpenR_vH?kd9l7qHCSQtTp8yAb8dpnx%rE=Q$UD{*mV%R2&oM`F-%C zKLCEPTRD3#c5!sN?l+s&mQ&8$_8xfw4vG3HMrE~^lOMv_*)M1AMz^SzH?*A7a$d^? zEf=+1(g}o&+TK8TKOdDrpyi zsJcnA7{Yd})T=?g>bTL10jQ=4)*Doito1N41}?c?p|7<4b;k=!6ULc)2Mpy5r5$LZ za)uVqwR{jcljbeH>KV?vH1rKB=BSvbf=rfLq=NRY`Uw^9QL#(~9SwDhirZ8S?l#VG zcjwApAuDTu7Yw+J$7nF4$;&*4LVn^v$6SkJT-l+`e@(!Stb1 zNIAU(p5QX5utdi0U|XV6F}oCA|G+^EO^}165pcqSQy7qt#EoV| zoVEy&olYVaPjM}c8ggKuWl_uVK$w%l8=Je~1^Mcscm|5oWE|6?*D%L^GL8npI?5C) zri=+^oGFQT2v86!nz$eW2GRuO0O*S8lg?4F-@A3ruOkoXVHZ;Vs-aWv<2KHTx&ryB z5*1gexQ0THnfsttt?%zDzk}11GHGi)av0Q=-)KaqOs#>vrxH>PJ#0J35)c#^Jy6-` zN#x#n$Kwu5x{r|Ze1WPKSu#0?04S zKT7cpL{G-JMtJ^w3OsCGqkgBuLx$nGc!pp~WAXfD0M6AP5YIrj?$Gk8-wL6|>%q#v zi$D0%S}Bd|>;@~lR#lO4Gs?%iw%gboI(h%&J9js=e4tiHY$l7k`T0Gac(Asi?GHcS zysPe0%S{x>hP$Co83U=4hh)XHUGrKFJRKJMFNu}>GxaMfP8gtJV}K&v{{cKv+N~g` ztb)8OugYNyHMTnwNWyi`KT|Aqy5ZVA0|eZ2bi~Z7NrW3y!nZl+ zRq>A79hL$K0$U&@hrAXxJf$j3;+1j}rpCW_#GOpOflowooi9$E-ZDQ`^iLx)mVB3H zHvM)3XQk24N%keGnt-gfsGv=wGtH{kYWRLTPF1Ix)c`4Ov!6+viVb#V{#IP7hkJ877H$BT`y%d`q57$m5R<)Dox+%G^n1hRKD(18>Yp0D}1f- z1;^kRrlRQ?L%$$2Dvg4Y?3_7A@-&^#zCbRqizsc--Ei6kH zqRI?ijgD7s_`BsEEy@n#x0~|0m@n{

") + + def div(): + self.textbox.insert(INSERT, "
") + + def br(): + self.textbox.insert(INSERT, "
") + + def headline_1(): + self.textbox.insert(INSERT, "

") + + def headline_2(): + self.textbox.insert(INSERT, "

") + + def headline_3(): + self.textbox.insert(INSERT, "

") + + def headline_4(): + self.textbox.insert(INSERT, "

") + + def headline_5(): + self.textbox.insert(INSERT, "
") + + def headline_6(): + self.textbox.insert(INSERT, "
") + + def insertImage(): + location = askstring(title="Image", prompt="Image") + self.textbox.insert(INSERT, "") + + def Link(): + address = askstring(title="Link", prompt="Link Address") + text = askstring(title="Link", prompt="Text") + self.textbox.insert(INSERT, ""+text+"") + + def openSettings(): + self.textbox.delete(0.0, END) + self.textbox.insert(0.0, open("settings").read()) + + def view_default(): + if self.saveLocation != "": + webbrowser.open_new(self.saveLocation) + + snippetsMenu.add_command(label="Paragraph", command=paragraph) + snippetsMenu.add_command(label="Division", command=div) + snippetsMenu.add_command(label="Image", command=insertImage) + snippetsMenu.add_command(label="Link", command=Link) + snippetsMenu.add_command(label="Break", command=br) + snippetsMenu.add_cascade(label="Headline", menu=headlineMenu) + headlineMenu.add_command(label="1", command=headline_1) + headlineMenu.add_command(label="2", command=headline_2) + headlineMenu.add_command(label="3", command=headline_3) + headlineMenu.add_command(label="4", command=headline_4) + headlineMenu.add_command(label="5", command=headline_5) + headlineMenu.add_command(label="6", command=headline_6) + + fileMenu.add_command(label="New", command=self.new) + fileMenu.add_command(label="Save", command=self.save) + fileMenu.add_command(label="Open", command=self.open) + fileMenu.add_separator() + fileMenu.add_command(label="Settings", command=openSettings) + fileMenu.add_separator() + fileMenu.add_command(label="Exit", command=quit) + + menu.add_command(label="View in browser", command=view_default) + + # menu.add_cascade(label="View", menu=viewMenu) + + # viewMenu.add_command(label="Default program", command=view_default) + + def createWidgets(self): + self.scrollbar = Scrollbar(self.root) + self.scrollbar.pack(side=RIGHT, fill=Y) + + self.textbox = Text(self.root) + self.textbox.pack(side=TOP, expand=YES, fill=BOTH) + self.textbox.configure(bg=settings["bgColour"], fg=settings["fgColour"], insertbackground=settings["cursor"], + yscrollcommand=self.scrollbar.set) + + self.scrollbar.config(command=self.textbox.yview) + + def saveShortcut(event): + self.save() + + def openShortcut(event): + self.open() + + def newShortcut(event): + self.new() + + self.textbox.bind("", saveShortcut) + self.textbox.bind("", openShortcut) + self.textbox.bind("", newShortcut) + + def __init__(self, master): + self.saveLocation = "" + self.root = Toplevel(master) + self.root.title("WebEdit") + self.root.configure(bg=settings["bgColour"]) + self.createWidgets() + self.createMenu() + self.new() + + self.root.mainloop() diff --git a/Programs/webEdit/settings b/Programs/webEdit/settings new file mode 100644 index 0000000..6e8c230 --- /dev/null +++ b/Programs/webEdit/settings @@ -0,0 +1,3 @@ +fgColour = '#FFFFFF' +bgColour = '#111111' +cursor = '#FFFFFF' \ No newline at end of file diff --git a/README.md b/README.md index be48dc8..0580b79 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # JDE -Glass OS Reborn! +Jordon's Desktop Environment is a complete rewrite of Glass OS which was one of my previous programs I made. +## What is JDE? +JDE stands for "Jordon's Desktop Environment" and is a complete rewrite of Glass OS which was another desktop environment. This means that JDE is NOT an operating system but is a overlay on top of your existing desktop. +## What are the requirements? +Well, JDE will work on any computer that is capable of running python 3. This means that even the tiny device you call a "raspberry pi" can run it! + +Disclaimer: JDE has NOT been tested on mac, many linux distributions or windows 8.1 and below. \ No newline at end of file