comp.lang.ada
 help / color / mirror / Atom feed
* gtkada Connecting via the Gtk.Handlers object_connect problem
@ 2019-11-03 11:37 Alain De Vos
  2019-11-03 13:03 ` Dmitry A. Kazakov
  2019-11-04 23:44 ` Alain De Vos
  0 siblings, 2 replies; 7+ messages in thread
From: Alain De Vos @ 2019-11-03 11:37 UTC (permalink / raw)


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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-11-04 23:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox