From 6667185945e22963cec02f87883e25bba0b7e964 Mon Sep 17 00:00:00 2001
From: jordonbc
Date: Thu, 7 Jul 2016 22:26:30 +0100
Subject: [PATCH 01/16] 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
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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
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
")
+
+ 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
--
2.47.2
From 605ae78ec8532641f8b90db72991bb1fb6bce875 Mon Sep 17 00:00:00 2001
From: jordonbc
Date: Thu, 7 Jul 2016 22:28:56 +0100
Subject: [PATCH 02/16] 1.3.1
Minor bug fix
---
JDE/Settings/settings.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/JDE/Settings/settings.conf b/JDE/Settings/settings.conf
index 24d07a0..91789b7 100644
--- a/JDE/Settings/settings.conf
+++ b/JDE/Settings/settings.conf
@@ -7,4 +7,4 @@ startPic = "JDE/Images/start.png"
fullStart = "0"
contextMenuColour = "#a0fd44"
-version = "1.2.0 ALPHA"
\ No newline at end of file
+version = "1.3.1 ALPHA"
\ No newline at end of file
--
2.47.2
From 847a7b8fd914c60a6c20ac11330c9868b1d4b140 Mon Sep 17 00:00:00 2001
From: jordonbc
Date: Thu, 7 Jul 2016 22:48:13 +0100
Subject: [PATCH 03/16] 1.3.2a
Fixed some minor bugs
---
Capture.PNG | Bin 0 -> 1139082 bytes
Programs/webEdit/htmlEdit.py | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 Capture.PNG
diff --git a/Capture.PNG b/Capture.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..fcd9c1bde24bfe6ea1d2b191580e965dc005aeeb
GIT binary patch
literal 1139082
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