Réferencement de Callbacks problématiques GtkAda 18.2 + Glade 3 sur Ubuntu 19.10
Bonjour à toutes t à tous,
J'aborde gtk et me suis basé sur le header du fichier gtkada-builder.ads :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
-- <description>
--
-- This package provides a high-level API for using Gtk.Builder and
-- user interface files produced with the GUI builder glade-3.
--
-- Here is how to use this package:
--
-- Step 1: create a Builder and add the XML data, just as you would a
-- standard Gtk.Builder:
--
-- declare
-- Builder : Gtkada_Builder;
-- Error : GError;
-- begin
-- Gtk_New (Builder);
-- Error := Add_From_File (Builder, Default_Filename);
--
-- Step 2: add calls to "Register_Handler" to associate your handlers
-- with your callbacks.
--
-- Register_Handler
-- (Builder => Builder,
-- Handler_Name => "my_handler_id",
-- Handler => My_Handler'Access);
--
-- Where:
-- - Builder is your Gtkada_Builder,
-- - "my_handler_id" is the name of the handler as specified in
-- Glade-3, in the "Handler" column of the "Signals" tab for
-- your object,
-- - Handler is your Ada subprogram.
--
-- You will need one call to "Register_Handler" per handler
-- declared in the Glade-3 interface. If there is one or more
-- handler declared in Glade-3 which does not have an associated
-- call to Register_Handler, an ASSERT_FAILURE will be raised by
-- the Gtk main loop.
--
-- There are multiple way to call Register_Handler, see below.
--
-- Step 3: call Do_Connect.
--
-- Step 4: when the application terminates or all Windows described through
-- your builder should be closed, call Unref to free memory
-- associated with the Builder.
-- |
Je cherche sans trouver un exemple fonctionnel de GtkAda pour mon environnement.
Je trouve fréquemment des exemples pour des environnements antérieurs et systématiquement cela ne marche pas.
Le problème semble venir de register_handler. Je précise que j'ai obtenu un programme "fonctionnel" ... sans events.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Gtk_New(Builder);
Ret_Error := Add_From_File(Builder, "test.glade", Error);
if Error /= null then Put_Line ("Error"); end if;
Register_Handler (Builder => Builder,
Handler_Name => "on_button1_clicked",
Handler => (On_Button1_Clicked_Cb'Access);
Do_Connect(Builder);
-- Signal handling loop
Gtk.Main.Main; |
Voici mon prototype pour récupérer l'event d'un bouton. Je me suis perdu dans les pointeurs de procedure et de function : le type de Self est le dernier de mes tests.
Code:
1 2
|
procedure On_Button1_Clicked_Cb(Self : Gtkada_Builder_Record); |
dans Glade 3, il n'y a pas de user_data dans mon signal .
Que vous faudrait-il pour m'aiguiller dans la bonne direction ?