[gnome-keysign: 1/16] Add a first implementation of drag and drop



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]