Python3 GTK3 TextView Drag-and-Drop Example

Just a small finger exercise …

from sys import exit, stderr
from signal import SIGINT, signal
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk # noqa

def term_signal_handler(sig, frame):
    print(f'WARNING: Exiting due to signal {sig}', file=stderr)
    exit(0)

class GUI:
    def __init__(self):
        self.window = Gtk.Window()
        self.window.connect('destroy', Gtk.main_quit)
        self.textview = Gtk.TextView()
        self.textview.connect("drag-data-received", self.on_drag)
        self.window.add(self.textview)
        self.window.show_all()
        self.buffer = self.textview.get_buffer()

    def on_drag(
        self,
        widget,
        drag_context,
        x,
        y,
        data,
        info,
        time
    ):
        text = data.get_text()
        print("DEBUG: text = %s" % text)
        self.buffer.set_text("")

def main():
    GUI()
    Gtk.main()

if __name__ == "__main__":
    signal(SIGINT, term_signal_handler)
    exit(main())