|
|
|
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})"
|
|
|
|
)
|