/src/wrappers/gtk/library/drag_data_received_callback.e
Specman e | 97 lines | 79 code | 16 blank | 2 comment | 4 complexity | 95088cfe4f8718e45845d157dbebf6b4 MD5 | raw file
1indexing 2 description: "Generic callback for the drag-data-received signal" 3 copyright: "[ 4 Copyright (C) 2006 Paolo redaelli, eiffel-libraries team, GTK+ team and others 5 6 This library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public License 8 as published by the Free Software Foundation; either version 2.1 of 9 the License, or (at your option) any later version. 10 11 This library is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public 17 License along with this library; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA 20 ]" 21 license: "LGPL v2 or later" 22 date: "$Date:$" 23 revision "$Revision:$" 24 25class DRAG_DATA_RECEIVED_CALLBACK 26 27inherit CALLBACK redefine object end 28 29insert G_OBJECT_FACTORY [GTK_WIDGET] 30 31creation make 32 33feature 34 object: GTK_WIDGET 35 36feature 37 callback (drag_context_ptr: POINTER; x,y: INTEGER; selection_data_ptr: POINTER; 38 info, time: INTEGER; instance: POINTER) is 39 require 40 info >= 0 41 time >= 0 42 local 43 factory: G_OBJECT_EXPANDED_FACTORY [GDK_DRAG_CONTEXT] 44 drag_context: GDK_DRAG_CONTEXT 45 selection_data: GTK_SELECTION_DATA 46 do 47 debug 48 print ("Callback: instance=") print (instance.to_string) print ("%N") 49 end 50 -- The following is written with the implicit requirement 51 -- that object actually has an Eiffel wrapper. 52 object := wrapper(instance) 53 54 drag_context := factory.existant_wrapper(drag_context_ptr) 55 if drag_context=Void then 56 create drag_context.from_external_pointer(drag_context_ptr) 57 end 58 create selection_data.from_external_pointer(selection_data_ptr) 59 procedure.call ([drag_context, x, y, selection_data, info, time, object]) 60 ensure 61 info >= 0 62 time >= 0 63 end 64 65 callback_pointer: POINTER is 66 do 67 Result := get_callback_pointer ($callback) 68 ensure 69 Result.is_not_null 70 end 71 72 connect (an_object: GTK_WIDGET; a_procedure: PROCEDURE [ANY, TUPLE [GDK_DRAG_CONTEXT, INTEGER, INTEGER, 73 GTK_SELECTION_DATA, INTEGER, INTEGER, 74 GTK_WIDGET]]) is 75 do 76 debug 77 print ("DRAG_DATA_RECEIVED_CALLBACK.connect (an_object=") print (an_object.to_pointer.to_string) 78 print (" an_object.handle=") print (an_object.handle.to_string) 79 print (") Current=") print (to_pointer.to_string) 80 print (" Current.handle=") print (handle.to_string) 81 print ("%N") 82 end 83 84 handler_id := g_signal_connect_closure (an_object.handle, 85 signal_name.to_external, 86 handle, 87 0 -- i.e. call it before default handler 88 ) 89 procedure:=a_procedure 90 end 91 92 signal_name: STRING is "drag-data-received" 93 94 procedure: PROCEDURE [ANY, TUPLE [GDK_DRAG_CONTEXT, INTEGER, INTEGER, 95 GTK_SELECTION_DATA, INTEGER, INTEGER, GTK_WIDGET]] 96 97end