Send files from one computer to another! A graphical interface for magic-wormhole https://magic-wormhole.readthedocs.io
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

54 lines
1.8 KiB

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gdk, GLib, Gtk
from dropship.constant import DEFAULT_DROP_LABEL, UI_DIR
from dropship.logger import log
@Gtk.Template.from_file(f"{UI_DIR}/pendingTransferRow.ui")
class PendingTransferRow(Gtk.ListBoxRow):
__gtype_name__ = "pendingTransferRow"
fileNameLabel = Gtk.Template.Child()
fileNameMetadata = Gtk.Template.Child()
transferCodeButton = Gtk.Template.Child()
cancelTransfer = Gtk.Template.Child()
pendingTransferRow = Gtk.Template.Child()
def __init__(self, transfer, parent, *args, **kwargs):
Gtk.ListBoxRow.__init__(self, *args, **kwargs)
self.transfer = transfer
self.parent = parent
self.fileNameLabel.set_text(self.transfer.fname)
self.fileNameMetadata.set_text(self.transfer.size)
self.transferCodeButton.set_label(self.transfer.code)
@property
def code(self):
"""Retrieve code of underyling transfer."""
return self.transfer.code
@Gtk.Template.Callback("copy_transfer_code")
def copy_transfer_code(self, widget):
"""Copy transfer code to clipboard."""
code = widget.get_label()
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.set_text(code, -1) # -1 is auto-size
@Gtk.Template.Callback("cancel_transfer")
def cancel_transfer(self, widget):
"""Callback entrypoint for transfer cancellation."""
self.cancel()
def cancel(self):
"""Internal programmatic API for transfer cancellation."""
self.transfer.cancel()
self.pendingTransferRow.destroy()
self.parent.drop_label.set_text(DEFAULT_DROP_LABEL)
self.parent.drop_label.set_selectable(False)
log.info(
f"PendingTransferRow: successfully cancelled transfer ({self.transfer.code})"
)