Skip to content

Instantly share code, notes, and snippets.

@rubdos
Created May 27, 2014 09:38
Show Gist options
  • Save rubdos/e09eac8f87866edfa3f6 to your computer and use it in GitHub Desktop.
Save rubdos/e09eac8f87866edfa3f6 to your computer and use it in GitHub Desktop.
#!/bin/python2
from Tkinter import *
import tkFileDialog
import base64
import tempfile
import os
import sys, subprocess
class App:
def open_file(self, filename):
if sys.platform == "win32":
os.startfile(filename)
else:
opener ="open" if sys.platform == "darwin" else "xdg-open"
subprocess.call([opener, filename])
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.frame = frame
self.textField = Entry(frame)
self.textField.pack(side=TOP)
self.sendButton = Button(
frame, text="Send file",
command=self.sendButtonClicked)
self.sendButton.pack(side=LEFT)
self.receiveButton = Button(
frame, text="Receive file",
command=self.receiveButtonClicked)
self.receiveButton.pack(side=RIGHT)
self.openButton = Button(
frame, text="Open file",
command=self.openButtonClicked)
self.openButton.pack(side=RIGHT)
self.files = []
def set_text(self, data):
e = self.textField
e.delete(0, END)
e.insert(0, data)
def get_text(self):
return self.textField.get()
def sendButtonClicked(self):
file = tkFileDialog.askopenfile(
parent=self.frame,
mode='rb',
title="Select a file")
if file != None:
data = file.read()
prefix = file.name[-4:] # quick 'n' dirty
self.set_text(prefix+base64.b64encode(data))
file.close()
pass
def receiveButtonClicked(self):
f = tkFileDialog.asksaveasfile()
f.write(base64.b64decode(self.get_text()))
pass
def openButtonClicked(self):
f = tempfile.NamedTemporaryFile(suffix=self.get_text()[0:4],delete=False)
f.write(base64.b64decode(self.get_text()[4:]))
f.close()
self.open_file(f.name)
self.files += [f.name]
pass
def __del__(self):
for f in self.files:
os.remove(f)
root = Tk()
app = App(root)
root.mainloop()
root.destroy()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment