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
+
+
+ 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
zcmb_i+ix6K89y^SdyNyjxwvtXCX=R6wj^n2fHtk0w&cd8bxZ7!Vg;?nJLC1*>lx?F
zY~rjEL={Ba|A7a@3jzT`NFap71OEX}JdBX~z(bW6kazQwA{&Yn5*
zo$q|-JKudgy?b}V83e$Y)C7@%u%!jHU4B2!x{&OCT)uzAcl5B250U
zsNTn*qn2&umz7^3{D-#sz*hGah*zMtI@iRq{SOJ@C%%g&!0tf^TFjRXf&x;9+X8Vd
zV*A2@@1rlPVj1>JT+FXZ9}Cx%zf1ZUoKXI5=~tD%NBNV|2f&o_pOF48Q
zZ-+r6z8wS`fj&LkiJD#~K7aZxjLw_E3qhyTJ9|L~UJ}Hv=W;>@@5VQ~o(|k(#Y^0F
z>~45Eaie7bwRGDbIe;gy)qULa&(VO}tCqs<@8+jqIBkv@+xq~AB75Vm4skOH*lCw7
zzr<+`oXZ~RfH9^6#+VMcg1^aZuh^x(Px!I5X*FC)!_#;fUiNA=K1cqk>O~4
zDJ`u8?bb^2zyd$g;_bGdtUREkrcM%UCaFs8r4}y#K~V;mqcBN}Z|Jtyc~Ij>Ne7*F
zuzY#ZS?Y9y#i|d&S~>{Aw4eijv9!_E8=YXW1cIX|Ty&auyf7_-qUPG7)6(9ZUTyX(
z-6V;^Q(rhg=$}15SGRj+Aw7wO>buh7o8D5;Nh^&;J8UP7Mq0Z1#@FUAT}+F&Jgl9T
zo1JzOTuIBz9k115r@0cyNTnHdBK?-PkvdE5&?nWm0Yd(^(4Wrt+vFMX!(U$WxZ*Mz$_y3U>K(WmBwZcG
zuCRnk(1hO9EjDvX9O!!z6l_CgtsOTqz#~I+p4l0lgULG~^x!C=uql~Hfi^Pf5hP}S?x!L#
zn>=E&Xr|?)|B8+|X&C4=Tj@2q729QQVVww2P^*r*FSdKl$-yuPTbj-4=~Wi&zm;M-@ju1x(N2
zimB$xK5jj0*R0*vgmuPx#$vDc+|GoP#EhIdcOhrK8y$Ejb0|2yd053m^8t)HnbTKt
z-cZpIi5N{cbW48=)oC@()%^t^e@u1n&mAGRFQPxf8Bi>6l19>gXd!^$h^3qYq#~*_
zoIoeEm2K%?$TNvJD8WAz?(APLJK&6h{Gl9SH~L-Zk}A#yB@V1T`mWd^ivT@a2O
zHaq-ozMw4&n*9!;&&WeKk*{yUiF~ghU3LNvSVN2Lc*h7x=Ic|vr>=_oGeWe|_I=u5
zh>sB{qe%~_KAL_@)G4)>TWN_7`^#U_bZL5m%`P+xM(G$@WjZ$@>Sm;m<}%Z{P6S7q
zmgcX`edE$xT8I;^58-KAxj;94y&dY$@wO_rZ$@#P?(2rl=vJT`5w*P`flQ{8`Xmu=
z(a0kh`!cSWjj|`LW7cu224A}$`dEYSow6o5l6?pFQ~i{g~wBaKjl(s)Zo8z+m}kvZiF67juraB
zlDU>`m2cSX(z_#ao!XD)4SK;~jM?rI%%L%$ui++LugIP(^#
zacUyo`g!(5+Rw1}NfKTgC*c}drqXBGP_8xYtNtPzisLphLn#m%uK^+^Y%aCA%;r)%
z*_YahOoks{X3bJ_^$7;ip|>6&h^{pn>yh8>us_jgAd~83Ps)vkA2k~diDLB$kf!PF
z^k>-6_vuq?sB`*7HdIFJ(#`u?!pq6GMw2)Otnpqn6IRLIyJy0YFMp5eSqwLE^*>Z8
ze&QI-*c=sEFH>IpJx-dMWzUkVGP$kf`Lv|09FdfDzCO8w)bt86uiokLsi|aTNhHyW
z`0N(g?nYsg`4m5tGOfyAHJ!8EDplsW2l5
z@=Oqi^wV_8Dyb0I1YZaZ;arGSss!+nCS^x{dfzG%r)b`4Rs0^b5=ri)y318K7L+4y)MUp;0l2HB=0hFsj&}t?M`cU|p9I;r`z10|P5Y^>#a1F&4FrA!9@lM6x>L)ETjw*p(sMW#j!F4$>m)5*xZGO{1*$pm{*AhjLbQd$ESP
zP@nWE0s_Vsgkpr7TWViU1QBEhZ+8EE^{
zDzm@^jlviJSSLw~+6!BO{w$xC(D$SD#WH`9#-`3%a3?k%_yhpzHB;MRc561lJ*5@!
z;46~STJ6-jlUkelJRx4=6kGi57Jn@yckwv((J1=};^!*Ah@PwV8EXc;8S4nXM{&96
zA41+cgWtn|IA)zdjD5m-7VS>@GuBf(se{qOj<16;K$s`B4BOy3DPfW!!pR-PO~cAd
z6?xu>{14H>tY1JXbu4FnMQL%4%KlN-aDV8l^3r_^LXoE>yAae}E
z*q@aU1Jc?jAp;y*;Sn(XRY3bTE4(*YVE{CQeVgZf%s_i^Fp*j{O#jCN?4y7~D?9>b
z>ndY7^o9fvIfqD!xXnKQw|Tx5GpQSc{U;A$&j5$$e*{c_6~m!%D_9ax2>k<~A?({c
z?_&l%l+11DZw;`I0uHV42pF>p(u4VWsrS+~Q)59P6%`;Uv1CQ8KZs;(a&NFa1pWN@A+nF66
zQ+n##WZGkHoQ^yGEt-~6_bf?bjHbW@(QsX+)iTNhV>L6VBu)>HibI0oL%|HT4K`*l
z16IqrISm7cyg*3+O5zDLgPYd?@gHURrbiw#Y(&qp&q{+
zNn}(n7&)onrCac3J5JI9A|AY(tCCKy<)K_CA|lek%E@1FnHOz#3374LI*1GMvEu+E
zFGDtS*UK_||CqryX3k_HI(bzaY@UUmVNfC5Hc2)azBwo7=t#s%VR)4y!lT6j!%eM1
zyUXHBW|=_^9yFxPl|z|Q_03sHWaZ$hIJjExz(WUz@@le>T4zj1`wqzMRlkiBLM1gg
zuD^+UIacUu)r6fFI7HT`#RhplbavBxB&A!?+3a<~0!9(;uvRt1`!C`4V_X^Ut9bE2
zy_`k}c);4hdqjzP`ZeD@{h6(pD(4}~6)aAR)36pQx~WkDhGdsI$L+6T_yIrxbGV*%stJIbrjj-lK{
z#tD;3bMnUj0o_D<4-TRIHX30ZWJ3}(F(0%XX=Ne8{}LnwilrwX1@<@P0WTj*}F}wmdoSo&7wWq(gw|ZboFA@kslxvN%879@
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