comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: GtkAda : Trying to derive a widget
Date: Fri, 9 Apr 2021 00:27:26 +0200	[thread overview]
Message-ID: <s4o00c$sne$1@gioia.aioe.org> (raw)
In-Reply-To: 606f5938$0$27421$426a74cc@news.free.fr

On 2021-04-08 21:27, DrPi wrote:

> I'm trying to create a GtkAda widget derived from a standard widget.
> 
> -- debug_panel.ads
> with Gtk.Scrolled_Window; use Gtk.Scrolled_Window;
> with Gtk.Text_View;       use Gtk.Text_View;
> 
> package Debug_Panel is
> 
>    type Debug_Panel_Record is new Gtk_Scrolled_Window_Record with private;
>    type Debug_Panel is access all Debug_Panel_Record'Class;
> 
> 
>    procedure Gtk_New (Panel : in out Debug_Panel);
>    procedure Initialize (Panel : not null access Debug_Panel_Record'Class);
> 
> private
> 
>    type Debug_Panel_Record is new Gtk_Scrolled_Window_Record with record
>       Text       : Gtk_Text_View;
>    end record;
> 
> end Debug_Panel;
> 
> 
> -- debug_panel.adb
> package body Debug_Panel is
> 
>    procedure Gtk_New (Panel : in out Debug_Panel) is
>    begin
>       Panel := new Debug_Panel_Record;
>       Initialize (Panel);

    Debug_Panel.Initialize (Panel);

Another way would be to remove "use Gtk.Scrolled_Window" and declare as

    type Debug_Panel_Record is
       new Gtk.Scrolled_Window.Gtk_Scrolled_Window_Record with private;

Without "use" Initialize is unambiguous.

P.S. When you create new widget it is better to use a more general 
ancestor hiding insufficient details, e.g.

    type Debug_Panel_Record is
       new Gtk.Widget.Gtk_Widget_Record with private;
    ...
private
    type Debug_Panel_Record is
       new Gtk.Scrolled_Window.Gtk_Scrolled_Window_Record with
    record
       ...
    end record;

This makes the code less fragile if you later decide to choose another 
container widget for the base.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2021-04-08 22:27 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08 19:27 GtkAda : Trying to derive a widget DrPi
2021-04-08 22:27 ` Dmitry A. Kazakov [this message]
2021-04-09  5:28   ` DrPi
2021-04-09  6:12     ` J-P. Rosen
2021-04-09 11:32       ` DrPi
2021-04-09  6:18     ` Dmitry A. Kazakov
2021-04-09 11:42       ` DrPi
2021-04-09 12:23         ` Dmitry A. Kazakov
2021-04-09 13:37           ` DrPi
replies disabled

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