/src/wrappers/gtk/library/button_event_callback.e
Specman e | 70 lines | 53 code | 13 blank | 4 comment | 3 complexity | 9b4e156bc1ffd61f36def11328a1e817 MD5 | raw file
1indexing 2 description: "Generic callback for the button-release-event and button-pressed-event signals" 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 25deferred class BUTTON_EVENT_CALLBACK 26 -- You want to use one of BUTTON_EVENT_RELEASE_CALLBACK or BUTTON_EVENT_PRESS_CALLBACK 27 28inherit CALLBACK redefine object end 29 30insert G_OBJECT_FACTORY [GTK_WIDGET] 31 32feature 33 object: GTK_WIDGET 34 35feature 36 37 callback (event_button_ptr: POINTER; instance: POINTER): INTEGER is 38 local 39 button_event: GDK_EVENT_BUTTON 40 do 41 debug print ("Callback: instance=") print (instance.to_string) print ("%N") end 42 -- The following is written with the implicit requirement 43 -- that object actually has an Eiffel wrapper 44 object := wrapper(instance) 45 create button_event.from_external_pointer (event_button_ptr) 46 Result := function.item ([button_event, object]).to_integer 47 -- GTK is about to release this event, detach it from Eiffel 48 button_event.dispose 49 end 50 51 callback_pointer: POINTER is 52 do 53 Result := get_callback_pointer ($callback) 54 ensure 55 Result.is_not_null 56 end 57 58 connect (an_object: GTK_WIDGET; a_function: FUNCTION [ANY, TUPLE [GDK_EVENT_BUTTON, GTK_WIDGET], BOOLEAN]) is 59 do 60 handler_id := g_signal_connect_closure (an_object.handle, 61 signal_name.to_external, 62 handle, 63 0 -- i.e. call it before default handler 64 ) 65 function := a_function 66 end 67 68 function: FUNCTION [ANY, TUPLE [GDK_EVENT_BUTTON, GTK_WIDGET], BOOLEAN] 69 70end -- class BUTTON_EVENT_CALLBACK