comp.lang.ada
 help / color / mirror / Atom feed
From: Alain De Vos <devosalain71@gmail.com>
Subject: Re: gtkada Connecting via the Gtk.Handlers object_connect problem
Date: Mon, 4 Nov 2019 15:44:53 -0800 (PST)
Date: 2019-11-04T15:44:53-08:00	[thread overview]
Message-ID: <a91bd9f4-178e-4ebc-8ae8-2442cc391b0a@googlegroups.com> (raw)
In-Reply-To: <254277d5-2ccc-474c-a65d-c5e2def102bd@googlegroups.com>

On Sunday, November 3, 2019 at 12:37:46 PM UTC+1, Alain De Vos wrote:
> I try an application with one button and one label and one handler
> 
> http://docs.adacore.com/live/wave/gtkada/html/gtkada_ug/signals.html#second-case-using-object-connect-instead
> -------------------------
> I have a file myvboxpak.ads ->
> package myvboxpak is
> 
>    type MyVBoxR is new Gtk_VBox_Record with record
>       Button : Gtk_Button;
>       Label  : Gtk_Label;
>    end record;
>    type MyVBoxT is access all MyVBoxR'Class;
> 
>    package MYCB is new Gtk.Handlers.User_Callback(Glib.Object.GObject_Record,MyVBoxT);
> 
>    procedure MyButtonClick (T : MyVBoxR'Class);  --eventhandler
> end myvboxpak;
> ---------------------------------
> A file myvboxpak ->
> package body myvboxpak is
>    procedure MyButtonClick (User_Data => T : MyVBoxR'Class) is
>    begin
>    .....
> ------------------------------------
> A file hello.adb ->
> procedure hello is
>    Top     : Gtk.Window.Gtk_Window;
>    MyVBox  : MyVBoxT;
> 
>    procedure Create_Window is
>    begin
>       Gtk.Window.Gtk_New
>         (Window   => Top,
>          The_Type => Gtk.Enums.Window_Toplevel);
>       Gtk.Window.Set_Title (Window => Top, Title  => "Hello from ADA");
>       
>       MyVBox := new MyVBoxR;
>       Initialize_Vbox (MyVBox);
>       Gtk_New (MyVBox.Button);
>       MyVBox.Add (MyVBox.Button);
>       Gtk_New (MyVBox.Label);
>       MyVBox.Add (MyVBox.Label); 
> 
>       Add (Top,MyVBox);
>       MYCB.Object_Connect
>            (Widget => MYVBOX.Button,  
>             Name   => "clicked",
>             Marsh  => MYCB.To_Marshaller (MyButtonClick'Access),  --  The signal handler
>             Slot_Object =>Top,
>             User_Data => MYVBOX
>             );
>      ...
> 
> The error received while compiling is :
> Compile
>    [Ada]          hello.adb
> hello.adb:35:27: no candidate interpretations match the actuals:
> hello.adb:35:56: expected type "Handler" defined at gtk-marshallers.ads:546, instance at gtk-handlers.ads:1164, instance at myvboxpak.ads:17
> hello.adb:35:56: found type access to procedure "MyButtonClick" defined at line 35
> hello.adb:35:56:   ==> in call to "To_Marshaller" at gtk-handlers.ads:1205, instance at myvboxpak.ads:17
> 
> Or , "MYCB.To_Marshaller (MyButtonClick'Access)" , does not have the correct type, the functions expects a "Handler".

Or should I do something like, 
package Button_Handler is new Handlers.Callback (Gtk_Button_Record); ?

      parent reply	other threads:[~2019-11-04 23:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-03 11:37 gtkada Connecting via the Gtk.Handlers object_connect problem Alain De Vos
2019-11-03 13:03 ` Dmitry A. Kazakov
2019-11-03 13:26   ` Alain De Vos
2019-11-03 15:23     ` Alain De Vos
2019-11-03 15:24       ` Alain De Vos
2019-11-03 21:46         ` Alain De Vos
2019-11-04 23:44 ` Alain De Vos [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox