diff --git a/JDE/Interfaces/desktop.py b/JDE/Interfaces/desktop.py index 1fe995d..66432ee 100644 --- a/JDE/Interfaces/desktop.py +++ b/JDE/Interfaces/desktop.py @@ -7,6 +7,8 @@ from tkinter import * from JDE.Interfaces import start from Programs import jpad from Programs import info +from Programs import imageViewer +from Programs import minesweeper desktopLog = logging.getLogger("desktop.py") @@ -113,6 +115,7 @@ class desktop: try: # start.start(self.menuColour, event.x_root, event.y_root) self.contextMenu.post(event.x_root, event.y_root) + self.contextMenu.focus() except Exception as e: desktopLog.error(str(e)) @@ -125,16 +128,34 @@ class desktop: def createContextMenu(self): desktopLog.debug("Running createContextMenu") try: - self.contextMenu = Menu(self.window, tearoff=0) + self.contextMenu = Menu(self.window, tearoff=0, bg=self.contextMenuColour) + + self.games = Menu(self.contextMenu, bg=self.contextMenuColour) + self.applications = Menu(self.contextMenu, bg=self.contextMenuColour) + + def minesweeperRun(): + minesweeper.mine_sweeper(self.window, self.menuColour) + + def jpadEdit(): + jpad.jpadEditor(self.window) + + def viewImage(): + imageViewer.imageViewer(self.window) self.contextMenu.add_command(label="Refresh", command=self.desktopRefresh) - self.contextMenu.add_command(label="Jpad", command=jpad.jpadEditor) - self.contextMenu.add_command(label="File Explorer", state=DISABLED) - self.contextMenu.add_command(label="Hardware Monitor", state=DISABLED) - self.contextMenu.add_command(label="Music Player", state=DISABLED) - self.contextMenu.add_command(label="Info", command=info.info) - self.contextMenu.add_command(label="Terminal", state=DISABLED) - self.contextMenu.add_command(label="Settings", state=DISABLED) + + self.contextMenu.add_cascade(label="Games", menu=self.games) + self.contextMenu.add_cascade(label="Applications", menu=self.applications) + + self.applications.add_command(label="Jpad", command=jpadEdit) + self.applications.add_command(label="View Images", command=viewImage) + self.games.add_command(label="Minesweeper", command=minesweeperRun) + self.applications.add_command(label="File Explorer", state=DISABLED) + self.applications.add_command(label="Hardware Monitor", state=DISABLED) + self.applications.add_command(label="Music Player", state=DISABLED) + self.applications.add_command(label="Info", command=info.info) + self.applications.add_command(label="Terminal", state=DISABLED) + self.applications.add_command(label="Settings", state=DISABLED) self.contextMenu.add_command(label="Restart", state=DISABLED) self.contextMenu.add_command(label="Shutdown", command=sys.exit) @@ -155,12 +176,12 @@ class desktop: prefix = self.user_dir # prefix = os.path.expanduser("~") - def openFile(self): + def openFile(event): # print(fName) self.fileURL = prefix + "/Desktop/" + str(fName[files]) # print(fileURL) self.a = jpad - self.a.jpadEditor(str(self.fileURL)) + self.a.jpadEditor(self.window, str(self.fileURL)) def openFolder(self): self.folderURL = prefix + "/Desktop/" + str(fName[files]) @@ -193,8 +214,8 @@ class desktop: else: pass self.l[files].place(x=int(100), y=int(70) + self.space, anchor=CENTER) - except: - pass + except Exception as e: + desktopLog.error(str(e)) except Exception as e: desktopLog.error(str(e)) @@ -211,7 +232,6 @@ class desktop: start.start(self.menuColour, int(0), int(self.window.winfo_height())) except Exception as e: desktopLog.error(str(e)) - pass def createBackground(self): try: @@ -280,6 +300,7 @@ class desktop: self.cTime = time.strftime("%H:%M") self.time1 = "" self.menuColour = config["colour"].replace("\n", "") + self.contextMenuColour = config["contextMenuColour"].replace("\n", "") self.startMenuPic = config["startPic"].replace("\n", "") self.background = config["background"] self.user_dir = config["userDirs"] + username + "/" diff --git a/JDE/Recent b/JDE/Recent index b550102..1dd3b2b 100644 --- a/JDE/Recent +++ b/JDE/Recent @@ -26,4 +26,15 @@ jpad jpad jpad jpad +jpad +jpad +jpad +jpad +jpad +jpad +jpad +jpad +jpad +jpad +jpad jpad \ No newline at end of file diff --git a/JDE/Settings/settings.conf b/JDE/Settings/settings.conf index c61bec9..24d07a0 100644 --- a/JDE/Settings/settings.conf +++ b/JDE/Settings/settings.conf @@ -5,4 +5,6 @@ background = "JDE/Images/background.png" colour = "#a0fd44" startPic = "JDE/Images/start.png" fullStart = "0" -version = "1.1.0 ALPHA" \ No newline at end of file +contextMenuColour = "#a0fd44" + +version = "1.2.0 ALPHA" \ No newline at end of file diff --git a/Programs/imageViewer.py b/Programs/imageViewer.py new file mode 100644 index 0000000..34ae676 --- /dev/null +++ b/Programs/imageViewer.py @@ -0,0 +1,68 @@ +from tkinter import * +from tkinter.filedialog import askopenfilename +from PIL import Image +import gc + +Canvas.image = None + + +class imageViewer: + def fullScreen(self): + try: + if self.max == 0: + self.window.attributes('-fullscreen', True) + self.max = 1 + else: + self.window.attributes('-fullscreen', False) + self.max = 0 + except: + pass + + def openimage(self): + self.picfile = askopenfilename() + if self.picfile: + Canvas.image = PhotoImage(file=self.picfile) + self.canvas.create_image(0, 0, anchor=NW, image=Canvas.image) + self.canvas.configure(self.canvas, scrollregion=(0, 0, Canvas.image.width(), Canvas.image.height())) + + def createWidgets(self): + self.menu = Menu(self.window) + self.window.config(menu=self.menu) + self.filemenu = Menu(self.menu) + self.menu.add_cascade(label="File", menu=self.filemenu) + self.filemenu.add_command(label="Open Image", command=self.openimage) + self.filemenu.add_command(label="Fullscreen", command=self.fullScreen) + self.filemenu.add_separator() + self.filemenu.add_command(label="Exit", command=self.window.destroy) + + self.yscrollbar = Scrollbar(self.window) + self.yscrollbar.pack(side=RIGHT, fill=Y) + + self.xscrollbar = Scrollbar(self.window, orient=HORIZONTAL) + self.xscrollbar.pack(side=BOTTOM, fill=X) + + self.canvas = Canvas(self.window, width=self.canvas_width, height=self.canvas_height, + yscrollcommand=self.yscrollbar.set, + xscrollcommand=self.xscrollbar.set) + # button = Button(root,text="Open",command=openimage) + # button.pack(side=BOTTOM) + self.canvas.pack(side=TOP, expand=YES, fill=BOTH) + self.yscrollbar.config(command=self.canvas.yview) + self.xscrollbar.config(command=self.canvas.xview) + + def createWindow(self): + self.window = Toplevel(self.master) + self.window.title("Image Viewer") + # self.window.config(bg="white") + self.createWidgets() + + self.window.attributes('-fullscreen', False) + self.max = 0 + + self.window.mainloop() + + def __init__(self, master): + self.master = master + self.canvas_width = 800 + self.canvas_height = 600 + self.createWindow() diff --git a/Programs/jpad.py b/Programs/jpad.py index 4575373..2cda7b1 100644 --- a/Programs/jpad.py +++ b/Programs/jpad.py @@ -88,7 +88,7 @@ class jpadEditor: self.jpadFile = open(str(self.jpadFile), "w") if self.jpadFile != None: # slice off the last character from get, as an extra return is added - self.data = self.textPad.get(0.0, END) + self.data = str(self.textPad.get(0.0, END)).replace("\n", "") self.jpadFile.write(self.data) self.jpadFile.close() except Exception as e: @@ -100,9 +100,11 @@ class jpadEditor: self.jpadFile = open(str(self.jpadFile), "w") if self.jpadFile != None: # slice off the last character from get, as an extra return is added - self.data = self.textPad.get(0.0, END) + self.data = str(self.textPad.get(0.0, END)).replace("\n", "") self.jpadFile.write(self.data) self.jpadFile.close() + else: + self.saveAs_command() except Exception as e: jpadLog.error(str(e)) @@ -125,7 +127,7 @@ class jpadEditor: jpadLog.error(str(e)) def chfont(self): - def apply(self): + def apply(): try: self.textPad.configure(font=(self.font1.get(), int(self.font2.get()), self.font3.get())) self.font[0] = self.font1.get() @@ -165,18 +167,21 @@ class jpadEditor: self.textPad.configure(font=(self.font[0], int(self.font[1]), self.font[2])) self.textPad.focus() - if self.jpadFile != None: - self.window.title("Jpad Text Editor" + " File: " + str(self.jpadFile)) - self.jpadFile = open(str(self.jpadFile), "r") - self.contents = self.jpadFile.read() - self.textPad.delete(0.0, END) - self.textPad.insert(0.0, self.contents) - self.jpadFile.close() + try: + if self.jpadFile != None: + self.window.title("Jpad Text Editor" + " File: " + str(self.jpadFile)) + self.jpadFile = open(str(self.jpadFile), "r") + self.contents = self.jpadFile.read() + self.textPad.delete(0.0, END) + self.textPad.insert(0.0, self.contents) + self.jpadFile.close() + except: + pass self.textPad.pack(expand=YES, fill=BOTH) def createWindow(self): - self.window = Tk() + self.window = Toplevel(self.master) self.sWidth = self.window.winfo_screenwidth() self.sHeight = self.window.winfo_screenheight() self.window.title("Jpad") @@ -191,23 +196,21 @@ class jpadEditor: self.window.mainloop() - def __init__(self, file=None): - self.recentAdd = open("JDE/Recent", "a") - self.recentAdd.write("\n") - self.recentAdd.write("jpad") - self.recentAdd.close() + def __init__(self, master, file=None): self.jpadFile = file + self.master = master self.width = "500" self.height = "400" self.appFocus = 1 self.widthHeight = self.width + "x" + self.height - self.menuColour = config["colour"].replace("\n", "") + try: + self.menuColour = config["colour"].replace("\n", "") + except: + self.menuColour = None self.font = ["Arial", "11", "normal"] - try: - self.appIcon = Button(self.toolbar, text="Jpad", command=self.focusApp) - self.appIcon.pack(side=LEFT, fill=Y) - except: - pass - self.createWindow() + + +if __name__ == "__main__": + jpadEditor(None) diff --git a/Programs/minesweeper.py b/Programs/minesweeper.py index 13bde8b..e12489d 100644 --- a/Programs/minesweeper.py +++ b/Programs/minesweeper.py @@ -3,7 +3,7 @@ from tkinter import * from tkinter import messagebox -def mine_sweeper(colour="#39d972"): +def mine_sweeper(master, colour="#39d972"): class MineSweeperCell(Label): '''Creates a minesweeper square that is part of a grid''' @@ -256,7 +256,7 @@ def mine_sweeper(colour="#39d972"): height = 10 numBombs = 30 global root - root = Tk() + root = Toplevel(master) root.maxsize(270, 335) root.minsize(270, 335) root.title('Minesweeper') @@ -264,7 +264,4 @@ def mine_sweeper(colour="#39d972"): game = MineSweeperGrid(root, width, height, numBombs) game.mainloop() - __init__() - - -mine_sweeper() + __init__() \ No newline at end of file diff --git a/Users/test/Desktop/test.txt b/Users/test/Desktop/test.txt index 9daeafb..30d74d2 100644 --- a/Users/test/Desktop/test.txt +++ b/Users/test/Desktop/test.txt @@ -1 +1 @@ -test +test \ No newline at end of file