Add files via upload
This commit is contained in:
242
post-it.py
Normal file
242
post-it.py
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
import tkinter as tk
|
||||||
|
import sys, getopt, traceback, types
|
||||||
|
import os
|
||||||
|
from tkinter import *
|
||||||
|
from tkinter.filedialog import askopenfilename
|
||||||
|
from tkinter.filedialog import asksaveasfilename
|
||||||
|
from tkinter.scrolledtext import ScrolledText
|
||||||
|
|
||||||
|
def runAsAdmin(cmdLine=None, wait=True):
|
||||||
|
|
||||||
|
if os.name != 'nt':
|
||||||
|
raise(RuntimeError, "This function is only implemented on Windows.")
|
||||||
|
|
||||||
|
import win32api, win32con, win32event, win32process
|
||||||
|
from win32com.shell.shell import ShellExecuteEx
|
||||||
|
from win32com.shell import shellcon
|
||||||
|
|
||||||
|
python_exe = sys.executable
|
||||||
|
|
||||||
|
if cmdLine is None:
|
||||||
|
cmdLine = [python_exe] + sys.argv
|
||||||
|
elif type(cmdLine) not in (types.TupleType,types.ListType):
|
||||||
|
raise(ValueError, "cmdLine is not a sequence.")
|
||||||
|
cmd = '"%s"' % (cmdLine[0],)
|
||||||
|
# XXX TODO: isn't there a function or something we can call to massage command line params?
|
||||||
|
params = " ".join(['"%s"' % (x,) for x in cmdLine[1:]])
|
||||||
|
cmdDir = ''
|
||||||
|
showCmd = win32con.SW_SHOWNORMAL
|
||||||
|
#showCmd = win32con.SW_HIDE
|
||||||
|
lpVerb = 'runas' # causes UAC elevation prompt.
|
||||||
|
|
||||||
|
# print "Running", cmd, params
|
||||||
|
|
||||||
|
# ShellExecute() doesn't seem to allow us to fetch the PID or handle
|
||||||
|
# of the process, so we can't get anything useful from it. Therefore
|
||||||
|
# the more complex ShellExecuteEx() must be used.
|
||||||
|
|
||||||
|
# procHandle = win32api.ShellExecute(0, lpVerb, cmd, params, cmdDir, showCmd)
|
||||||
|
|
||||||
|
procInfo = ShellExecuteEx(nShow=showCmd,
|
||||||
|
fMask=shellcon.SEE_MASK_NOCLOSEPROCESS,
|
||||||
|
lpVerb=lpVerb,
|
||||||
|
lpFile=cmd,
|
||||||
|
lpParameters=params)
|
||||||
|
|
||||||
|
if wait:
|
||||||
|
procHandle = procInfo['hProcess']
|
||||||
|
obj = win32event.WaitForSingleObject(procHandle, win32event.INFINITE)
|
||||||
|
rc = win32process.GetExitCodeProcess(procHandle)
|
||||||
|
#print "Process handle %s returned code %s" % (procHandle, rc)
|
||||||
|
else:
|
||||||
|
rc = None
|
||||||
|
|
||||||
|
return rc
|
||||||
|
|
||||||
|
|
||||||
|
open_file = " "
|
||||||
|
cwd = os.getcwd()
|
||||||
|
window = tk.Tk()
|
||||||
|
window.attributes("-topmost", False)
|
||||||
|
window.geometry("600x425")
|
||||||
|
window.minsize(0,0)
|
||||||
|
window['background']='#fff96d'
|
||||||
|
window.resizable(99999,99999)
|
||||||
|
try :
|
||||||
|
window.iconbitmap("Icon/icon.ico")
|
||||||
|
except :
|
||||||
|
pass
|
||||||
|
window.title("Post-It ! - Untitled")
|
||||||
|
|
||||||
|
def main(argv) :
|
||||||
|
global open_file
|
||||||
|
try:
|
||||||
|
opts, args = getopt.getopt(argv,"hi:o:",["open=","admin"])
|
||||||
|
except getopt.GetoptError:
|
||||||
|
print('python post-it.py -o <file to open> -a <run as admin>')
|
||||||
|
sys.exit(2)
|
||||||
|
for opt, arg in opts:
|
||||||
|
if opt == '-h':
|
||||||
|
print("Usage :")
|
||||||
|
print('python post-it.py -o <file to open> -a <run as admin>')
|
||||||
|
print(" ")
|
||||||
|
print('Note : You can theoretically open all types of files with post-it but it may not work.')
|
||||||
|
sys.exit()
|
||||||
|
elif opt in ("-o", "--open"):
|
||||||
|
open_file = arg
|
||||||
|
elif opt in ("-a", "--admin"):
|
||||||
|
runAsAdmin()
|
||||||
|
|
||||||
|
def file_assos() :
|
||||||
|
global cwd
|
||||||
|
os.system('assoc .post-it="'+cwd+'\post-it.bat"')
|
||||||
|
|
||||||
|
def openfile_arg() :
|
||||||
|
global current_file
|
||||||
|
global open_file
|
||||||
|
|
||||||
|
if open_file == " " :
|
||||||
|
return
|
||||||
|
|
||||||
|
current_file = open_file
|
||||||
|
window.title("Post-It ! - "+current_file)
|
||||||
|
|
||||||
|
try :
|
||||||
|
with open(open_file, "r") as file_opened :
|
||||||
|
file_str = file_opened.read()
|
||||||
|
except Exception as e:
|
||||||
|
#print(e)
|
||||||
|
pass
|
||||||
|
|
||||||
|
text.insert(INSERT, file_str)
|
||||||
|
|
||||||
|
topmost = True
|
||||||
|
current_file = " "
|
||||||
|
|
||||||
|
def newfile(*args) :
|
||||||
|
global text
|
||||||
|
global current_file
|
||||||
|
current_file = " "
|
||||||
|
window.title("Post-It ! - Untitled")
|
||||||
|
text.delete('1.0', END)
|
||||||
|
|
||||||
|
def savefile(*args) :
|
||||||
|
global text
|
||||||
|
file_content = text.get('1.0', END)
|
||||||
|
|
||||||
|
try :
|
||||||
|
with open(current_file, "r+") as file_save :
|
||||||
|
file_save.write(file_content)
|
||||||
|
file_save.close()
|
||||||
|
except FileNotFoundError :
|
||||||
|
savefileas()
|
||||||
|
|
||||||
|
def savefileas(*args) :
|
||||||
|
global text
|
||||||
|
global tkFileDialog
|
||||||
|
global current_file
|
||||||
|
file_content = text.get('1.0', END)
|
||||||
|
|
||||||
|
try :
|
||||||
|
f = asksaveasfilename(title="Save as", initialdir=cwd+"/My Post-it Files", defaultextension=".post-it", filetypes=(("Post-it File", "*.post-it"),("All Files", "*.*")))
|
||||||
|
except :
|
||||||
|
f = asksaveasfilename(title="Save as", defaultextension=".post-it", filetypes=(("Post-it File", "*.post-it"),("All Files", "*.*")))
|
||||||
|
if f is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
current_file = f
|
||||||
|
window.title("Post-It ! - "+current_file)
|
||||||
|
|
||||||
|
try :
|
||||||
|
with open(f, "w") as file_save :
|
||||||
|
file_save.write(file_content)
|
||||||
|
file_save.close()
|
||||||
|
except Exception as e:
|
||||||
|
#print(e)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def openfile(*args) :
|
||||||
|
global tkFileDialog
|
||||||
|
global current_file
|
||||||
|
|
||||||
|
try :
|
||||||
|
f = askopenfilename(title="Open", initialdir=cwd+"/My Post-it Files", defaultextension=".post-it", filetypes=(("Post-it File", "*.post-it"),("All Files", "*.*")))
|
||||||
|
except :
|
||||||
|
f = askopenfilename(title="Open", defaultextension=".post-it", filetypes=(("Post-it File", "*.post-it"),("All Files", "*.*")))
|
||||||
|
if f is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
current_file = f
|
||||||
|
window.title("Post-It ! - "+current_file)
|
||||||
|
text.delete('1.0', END)
|
||||||
|
|
||||||
|
try :
|
||||||
|
with open(f, "r") as file_opened :
|
||||||
|
file_str = file_opened.read()
|
||||||
|
file_opened.close()
|
||||||
|
text.insert(INSERT, file_str)
|
||||||
|
except Exception as e:
|
||||||
|
#print(e)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def TopMost() :
|
||||||
|
global topmost
|
||||||
|
if topmost == True :
|
||||||
|
print("topmost = False")
|
||||||
|
window.attributes("-topmost", False)
|
||||||
|
topmost = False
|
||||||
|
return topmost
|
||||||
|
|
||||||
|
if topmost == False :
|
||||||
|
print("Topmost = True")
|
||||||
|
window.attributes("-topmost", True)
|
||||||
|
topmost = True
|
||||||
|
return topmost
|
||||||
|
|
||||||
|
else :
|
||||||
|
print(str(topmost))
|
||||||
|
print("a")
|
||||||
|
|
||||||
|
|
||||||
|
text = ScrolledText(window)
|
||||||
|
text.config(background='#fff96d')
|
||||||
|
text.pack(fill=BOTH,expand=True)
|
||||||
|
|
||||||
|
topmost_var = tk.IntVar()
|
||||||
|
case = tk.Checkbutton(variable = topmost_var,activebackground="#fff96d",activeforeground="#fff96d",bg="#fff96d",command=TopMost)
|
||||||
|
case.config(text="Top Most",background='#fff96d')
|
||||||
|
case.pack(side=RIGHT, fill=Y)
|
||||||
|
|
||||||
|
menubar = Menu(window)
|
||||||
|
window.config(menu=menubar)
|
||||||
|
|
||||||
|
filemenu = Menu(menubar, tearoff=0)
|
||||||
|
filemenu.add_command(label="New", command=newfile, accelerator="Ctrl+N")
|
||||||
|
filemenu.add_command(label="Open", command=openfile, accelerator="Ctrl+O")
|
||||||
|
filemenu.add_command(label="Save", command=savefile, accelerator="Ctrl+S")
|
||||||
|
filemenu.add_command(label="Save as", command=savefileas, accelerator="Ctrl+Alt+S")
|
||||||
|
filemenu.add_separator()
|
||||||
|
filemenu.add_command(label="Exit", command=quit, accelerator="Ctrl+Q")
|
||||||
|
window.bind_all("<Control-q>", quit)
|
||||||
|
window.bind_all("<Control-n>", newfile)
|
||||||
|
window.bind_all("<Control-o>", openfile)
|
||||||
|
window.bind_all("<Control-s>", savefile)
|
||||||
|
window.bind_all("<Control-Shift-s>", savefileas)
|
||||||
|
menubar.add_cascade(label="File", menu=filemenu)
|
||||||
|
|
||||||
|
settings_menu = Menu(menubar, tearoff=0)
|
||||||
|
settings_menu.add_command(label="Use Post-it by default for .post-it files", command=file_assos)
|
||||||
|
menubar.add_cascade(label="Settings", menu=settings_menu)
|
||||||
|
|
||||||
|
topmost = topmost_var.get()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(sys.argv[1:])
|
||||||
|
|
||||||
|
try :
|
||||||
|
openfile_arg()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
pass
|
||||||
|
|
||||||
|
window.mainloop()
|
||||||
Reference in New Issue
Block a user