glade gtkada drawingarea tag check failed
Bonjour.
J'ai un soucis avec l'utilisation du widget gtkdrawingarea de glade.
Je dépose ce widget sur ma fenêtre principale.
je récupère l'identifiant du widget dans mon code grâce à :
Code:
my_area := Gtk_Drawing_Area(Get_Object(object, "drawingarea1"));
et l'utilise ainsi pour le mettre dans mon buffer:
Code:
my_buffer := Gtk_Double_Buffer(my_area);
afin de dessiner un rectangle par exemple dans mon drawingarea.
La compilation passe sans aucun soucis, mais à l'execution, j'ai cette erreur:
Code:
raised CONSTRAINT_ERROR : main.adb:344 tag check failed
à la ligne correspondante à l'utilisation du double_buffer.
Y'a t il une façon particulière d'utiliser ce composant avec Glade?
Quelqu'un a t il une documentation dessus?
D'avance merci.
illustration du problème sur un exemple minimal
Bonjour.
N'ayant pas eu de réponse, j'ai fait un exemple concret, pour qu'on puisse tester mon problème.
ci joint le .glade de mon programme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.24"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="title" translatable="yes">test area</property>
<property name="default_width">440</property>
<property name="default_height">250</property>
<child>
<object class="GtkViewport" id="viewport1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkDrawingArea" id="drawingarea1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
</object>
</interface> |
et le code pour le tester
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| with Gtkada.Builder; use Gtkada.Builder;
with Double_Buffer; use Double_Buffer;
with Gtk.Drawing_Area; use Gtk.Drawing_Area;
with Glib; use Glib;
with Glib.Object; use Glib.Object;
with Glib.Error; use Glib.Error;
with Gtk; use Gtk;
with Gtk.Main; use Gtk.Main;
with Gtk.Widget; use Gtk.Widget;
with Ada.Text_IO; use Ada.Text_IO;
with Gtk.Window; use Gtk.Window;
with Gdk.Drawable; use Gdk.Drawable;
with Gdk.GC; use Gdk.GC;
with Gdk.Color; use Gdk.Color;
with Gtk.Handlers;
procedure test_area is
Builder : Gtkada_Builder;
Error : Glib.Error.GError;
draw_area: Gtk_Drawing_Area;
draw_area_buffer: Double_Buffer.Gtk_Double_Buffer;
White_Gc : Gdk.GC.Gdk_GC;
begin
Gtk.Main.Init;
Gtk_New (Builder);
Error := Add_From_File (Builder, "test_Area.glade");
if Error /= null then
Put_Line ("Error : " & Get_Message (Error));
Error_Free (Error);
return;
end if;
--draw_area := Gtk_Drawing_Area(Get_Object(builder, "drawingarea1"));
draw_area_buffer:= Gtk_Double_Buffer(Get_Object(builder, "drawingarea1"));
--Gdk.GC.Gdk_New (White_Gc, Double_Buffer.Get_Window (Gtk_Double_Buffer(draw_area)));
--Gdk.GC.Set_Foreground
-- (White_Gc,
--Gdk.Color.White (Gtk.Widget.Get_Default_Colormap));
Draw_Rectangle
(--Double_Buffer.Get_Pixmap (Double_Buffer.Gtk_Double_Buffer(draw_area)),
Double_Buffer.Get_Pixmap (draw_area_buffer),
White_Gc,
True,
0,
0,
800,
500);
Double_Buffer.Draw (draw_area_buffer);
Do_Connect (Builder);
Gtk.Widget.Show_All (Get_Widget (Builder, "window1"));
Gtk.Main.Main;
Unref (Builder);
end test_area; |
à la compilation, tout va bien.
à l'exécution, j'ai cette erreur:
Code:
raised CONSTRAINT_ERROR : test_area.adb:40 tag check failed
merci d'avance pour vos réponses