added SSTV module init and buttons to GIMP plugin

This commit is contained in:
András Veres-Szentkirályi 2013-11-03 22:41:11 +01:00
parent 64f95592b7
commit 0347aa7a3b

View file

@ -7,23 +7,46 @@
from gimpfu import register, main, pdb, PF_BOOL, PF_STRING, PF_RADIO from gimpfu import register, main, pdb, PF_BOOL, PF_STRING, PF_RADIO
from tempfile import mkstemp from tempfile import mkstemp
from PIL import Image, ImageTk from PIL import Image, ImageTk
from Tkinter import Tk, Label from Tkinter import Tk, Label, Button
from pysstv import __main__ as pysstv_main from pysstv import __main__ as pysstv_main
import os import os
MODULE_MAP = pysstv_main.build_module_map() MODULE_MAP = pysstv_main.build_module_map()
class Transmitter(object):
def __init__(self, sstv, root):
self.sstv = sstv
self.root = root
def start_tx(self, e):
pdb.gimp_message("TX!") # TODO
def close(self, e):
self.root.destroy()
def transmit_current_image(image, drawable, mode, vox, fskid): def transmit_current_image(image, drawable, mode, vox, fskid):
sstv = MODULE_MAP[mode]
handle, png_fn = mkstemp(suffix='.png', prefix='pysstv-gimp-') handle, png_fn = mkstemp(suffix='.png', prefix='pysstv-gimp-')
os.fdopen(handle).close() os.fdopen(handle).close()
try: try:
pdb.gimp_file_save(image, drawable, png_fn, png_fn) pdb.gimp_file_save(image, drawable, png_fn, png_fn)
pil_img = Image.open(png_fn) pil_img = Image.open(png_fn)
root = Tk() root = Tk()
s = sstv(pil_img, 44100, 16)
s.vox_enabled = vox
if fskid:
s.add_fskid_text(fskid)
tm = Transmitter(s, root)
tk_img = ImageTk.PhotoImage(pil_img) tk_img = ImageTk.PhotoImage(pil_img)
img_widget = Label(root, image=tk_img) img_widget = Label(root, image=tk_img)
img_widget.image = tk_img img_widget.image = tk_img
img_widget.pack() img_widget.pack()
start_btn = Button(root, text="TX")
start_btn.bind('<Button-1>', tm.start_tx)
start_btn.pack()
close_btn = Button(root, text="Close")
close_btn.bind('<Button-1>', tm.close)
close_btn.pack()
root.mainloop() root.mainloop()
finally: finally:
os.remove(png_fn) os.remove(png_fn)