with Gtk; use Gtk; with GL_H; use GL_H; with Gtk.Glarea; use Gtk.Glarea; with Gtk.Main, Gtk.Widget; with Gtk.Window; use Gtk.Window; with Gdk.GL; use Gdk.Gl; with Gtk.Container; use Gtk.Container; with Gtk.Widget; use Gtk.Widget; with Gtk.Enums; use Gtk.Enums; with Gdk.Event; use Gdk.Event; with Gtk.Handlers; use Gtk.Handlers; with Gdk.Types; use Gdk.Types; with OpenGL; use OpenGL; with Gtk.Marshallers; use Gtk.Marshallers; with Gtk.Signal; use Gtk.Signal; with Ada.Text_IO; use Ada.Text_IO; procedure GUI is package EventRCB is new Gtk.Handlers.Return_Callback(Gtk_GLArea_Record, Boolean); package EventCB is new Gtk.Handlers.Callback(Gtk_GLArea_Record); type GtkGLAreaPtr is access all Gtk_GLArea_Record; Window : Gtk_Window; Area : GtkGlAreaPtr; begin Gtk.Main.Init; Gtk_New(Window, Window_Dialog); Gtk.Window.Set_Title(Window,"Simple"); Gtk.Window.Set_Border_Width(Window,10); Gtk.Window.Set_Default_Size(Window,500,500); Show(Window); Area := new Gtk_GLArea_Record; Initialize (Area,(GDK_GL_RGBA, GDK_GL_RED_SIZE, Gl_Configs (1), GDK_GL_GREEN_SIZE, Gl_Configs (1), GDK_GL_BLUE_SIZE, Gl_Configs (1), GDK_GL_DOUBLEBUFFER, GDK_GL_DEPTH_SIZE, Gl_Configs (1))); if Area = null then Put_Line("Can't recate Gtk_GLArea"); return; end if; Set_Events(Area, Exposure_Mask); --EventRCB.Connect(Area, "exposure_event", EventRCB.To_Marshaller(Display'Access)); --EventRCB.Connect(Area, "configure_event", EventRCB.To_Marshaller(Reshape'Access)); EventRCB.Connect(Area, "realize", EventRCB.To_Marshaller(InitGL'Access)); --Gtk.Signal.Signal_Connect(Area, "realize", InitGL'Access, null); Add(Window, Area); Gtk.Main.Main; end GUI;