[gnome-keysign: 1/16] Add a first implementation of drag and drop
- From: Tobias Mueller <tobiasmue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-keysign: 1/16] Add a first implementation of drag and drop
- Date: Wed, 7 Aug 2019 09:49:03 +0000 (UTC)
commit 412445b6221f5fabf1dea987fd0ed96ae2faeaa3
Author: RyuzakiKK <aasonykk gmail com>
Date: Wed Nov 14 16:20:27 2018 +0100
Add a first implementation of drag and drop
keysign/send.py | 16 ++++++++++++++++
keysign/send.ui | 1 +
2 files changed, 17 insertions(+)
---
diff --git a/keysign/send.py b/keysign/send.py
old mode 100755
new mode 100644
index 95deb80..36c045c
--- a/keysign/send.py
+++ b/keysign/send.py
@@ -8,6 +8,7 @@ import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import GLib
+from gi.repository import Gdk
from wormhole.errors import ServerConnectionError, LonelyError, WrongPasswordError
if __name__ == "__main__":
from twisted.internet import gtk3reactor
@@ -42,6 +43,9 @@ except ImportError:
BluetoothOffer = None
+DRAG_ACTION = Gdk.DragAction.COPY
+
+
class SendApp:
"""Common functionality needed when building the sending part
@@ -92,6 +96,18 @@ class SendApp:
self.notify = None
self.internet_option = False
+ # Add drag and drop to the keys list widget
+ builder.connect_signals(self)
+ self.label = builder.get_object("keys_listbox")
+ self.label.drag_dest_set(Gtk.DestDefaults.ALL, [], DRAG_ACTION)
+ self.label.drag_dest_set_target_list(None)
+ self.label.drag_dest_add_text_targets()
+
+ def on_drag_data_received(self, widget, drag_context, x, y, data, info, time):
+ filename = data.get_text()
+ filename = filename[7:].strip('\r\n\x00') # remove file://, \r\n and NULL
+ log.info("Received file: %s" % filename)
+
@inlineCallbacks
def on_key_activated(self, widget, key):
# Deactivate any old connection attempt
diff --git a/keysign/send.ui b/keysign/send.ui
index 10c3b89..b7cf5de 100644
--- a/keysign/send.ui
+++ b/keysign/send.ui
@@ -248,6 +248,7 @@ Please use, e.g. Seahorse to create one.</property>
<property name="height_request">300</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <signal name="drag-data-received" handler="on_drag_data_received" swapped="no"/>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]