91 lines
2.8 KiB
Python
91 lines
2.8 KiB
Python
import sys
|
|
import os
|
|
import subprocess
|
|
import time
|
|
import pyperclip
|
|
import pyautogui as pg
|
|
from PyHotKey import Key, keyboard
|
|
import pickle
|
|
import tkinter as tk
|
|
|
|
#pg.prompt(text="deez nuts?", title="deez nutz!", default="deez nars")
|
|
|
|
def dumpClipboardBufferToFile():
|
|
global clipboardBuffer
|
|
with open("clipboardBufferData.pk", 'wb') as fi:
|
|
pickle.dump(clipboardBuffer, fi)
|
|
|
|
def getClipboardBufferFromFile():
|
|
global clipboardBuffer
|
|
with open("clipboardBufferData.pk", 'rb') as fi:
|
|
clipboardBuffer = pickle.load(fi)
|
|
|
|
#scriptFolder = (os.path.dirname(__file__))
|
|
clipboardBuffer = []
|
|
clipboardBuffer = ["No value in this clipboard buffer" for i in range(10)]
|
|
|
|
#check if pickle file exists, if not, then create one
|
|
if os.path.isfile("clipboardBufferData.pk"):
|
|
getClipboardBufferFromFile()
|
|
else:
|
|
dumpClipboardBufferToFile()
|
|
|
|
def inputbox(inputBuffer):
|
|
inputText = "No Input Given Yet"
|
|
window = tk.Tk()
|
|
window.title(f'Clipboard Buffer {inputBuffer}')
|
|
textbox = tk.Entry(window, width=70)
|
|
textbox.pack()
|
|
textbox.insert(0, clipboardBuffer[inputBuffer])
|
|
textbox.focus_set()
|
|
def entry_select_all(event):
|
|
event.widget.select_range(0, 'end')
|
|
event.widget.icursor('end')
|
|
return 'break'
|
|
def entry_ctrl_backspace(event):
|
|
end_idx = textbox.index(tk.INSERT)
|
|
start_idx = textbox.get().rfind(" ", None, end_idx)
|
|
textbox.selection_range(start_idx, end_idx)
|
|
def onclick(pos):
|
|
nonlocal inputText
|
|
inputText = textbox.get()
|
|
global clipboardBuffer
|
|
clipboardBuffer[inputBuffer] = inputText
|
|
print(f"Clipboard buffer {inputBuffer} was set to: {inputText}")
|
|
window.destroy()
|
|
b = tk.Button(window, text="OK", width=10, command=onclick)
|
|
b.pack()
|
|
textbox.bind('<Return>', onclick)
|
|
textbox.bind('<KP_Enter>', onclick)
|
|
textbox.bind('<Control-BackSpace>', entry_ctrl_backspace)
|
|
textbox.bind('<Control-Key-a>', entry_select_all)
|
|
window.mainloop()
|
|
print(clipboardBuffer)
|
|
dumpClipboardBufferToFile()
|
|
return (inputText)
|
|
|
|
|
|
def sendMessage(message):
|
|
subprocess.Popen(['notify-send', message])
|
|
return
|
|
|
|
def typeBuffer(inputBuffer):
|
|
global clipboardBuffer
|
|
# pyautogui.write(clipboardBuffer[inputBuffer])
|
|
keyboard.type(clipboardBuffer[inputBuffer])
|
|
def copyToBuffer(inputBuffer):
|
|
global clipboardBuffer
|
|
# clip = pyperclip.paste()
|
|
clip = os.popen('xsel -op').read()
|
|
sendMessage(f"Copied to buffer {inputBuffer}:\n===================\n{clip}")
|
|
clipboardBuffer[inputBuffer] = clip
|
|
print(clipboardBuffer[inputBuffer])
|
|
dumpClipboardBufferToFile()
|
|
|
|
if sys.argv[1] == "paste":
|
|
typeBuffer(int(sys.argv[2]))
|
|
if sys.argv[1] == "copy":
|
|
copyToBuffer(int(sys.argv[2]))
|
|
if sys.argv[1] == "edit":
|
|
inputbox(int(sys.argv[2]))
|